Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: Hàm WIN32 API- Truy nhập sector trên đĩa

  1. #1
    Ngày gia nhập
    03 2012
    Nơi ở
    Hà Nội
    Bài viết
    0

    Wink Hàm WIN32 API- Truy nhập sector trên đĩa

    Mình đang học hệ điều hành. Thầy giáo cho đoạn code này làm ví dụ để truy nhật sector trên ổ cứng. Tuy nhiên, đoạn code lại có chút vấn đề:
    C Code:
    1. #include <windows.h>
    2. #include <stdio.h>
    3.  
    4. int main(int argc, char *argv[]){
    5.     HANDLE hDisk;
    6.     BYTE Buf[512];
    7.     int byteread,i;
    8.    
    9.     hDisk=CreateFile("\\\\.\\PhysicalDrive0",GENERIC_READ,
    10.                     FILE_SHARE_READ | FILE_SHARE_WRITE,
    11.                     NULL, OPEN_EXISTING,0,NULL);
    12.     if (hDisk==INVALID_HANDLE_VALUE) printf(" Loi thiet bi");
    13.     else {
    14.         ReadFile(hDisk,Buf,512,&byteread,NULL);
    15.         for(i=0;i<512;i++) printf("%02X",Buf[i]);
    16.         CloseHandle(hDisk);
    17.         }
    18.     return 0;
    19.     }
    Đây là code sử dụng WIN32 API, mình gặp phải lỗi "invalid conversion from `int*' to `DWORD*' " và " initializing argument 4 of `BOOL ReadFile(void*, void*, DWORD, DWORD*, _OVERLAPPED*)' ". Bạn nào biết lỗi này chữa như thế nào chỉ mình với. Cảm ơn bạn nhiều
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    Đã được chỉnh sửa lần cuối bởi mask_of_zorro : 20-04-2012 lúc 07:28 PM.

  2. #2
    Ngày gia nhập
    04 2010
    Nơi ở
    Binh Thanh, Hồ Chí Minh, Vietnam, Vietnam
    Bài viết
    504

    C Code:
    1. DWORD byteread;
    __________________________________________________ ____________________
    Kết bạn với tôi <3
    Skype: giautm
    Facebook:
    https://fb.com/giautm.duongntt
    Email:
    giau.tmg@gmail.com

  3. #3
    Ngày gia nhập
    03 2012
    Nơi ở
    Hà Nội
    Bài viết
    0

    Trích dẫn Nguyên bản được gửi bởi doicanhden Xem bài viết
    C Code:
    1. DWORD byteread;
    __________________________________________________ ____________________
    Thanks bạn. Thằng bạn mình cũng bày 1 cách khác đó là:
    C Code:
    1.  long unsigned int byteread, i;
    thì cũng được. Cái này là do cách lưu trữ trên ổ cứng ha? :S
    Đã được chỉnh sửa lần cuối bởi mask_of_zorro : 20-04-2012 lúc 07:28 PM.

  4. #4
    Ngày gia nhập
    04 2010
    Nơi ở
    Binh Thanh, Hồ Chí Minh, Vietnam, Vietnam
    Bài viết
    504

    Kiểu dữ liệu DWORD được khai báo trong minwindef.h như sau:
    C Code:
    1. typedef unsigned long       DWORD;
    Lỗi "invalid conversion from `int*' to `DWORD*' " là do bạn truyền địa chỉ của biến int, trong khi hàm cần địa chỉ của biến unsigned long, nên dùng DWORD trong các hàm của windows (nếu nó khai báo rõ), không nên dùng "long unsigned int". Vì biết đâu đc, trong tương lai, windows thay đổi kiểu DWORD sang kiểu khác, lúc đó ct của bạn sẽ bị crash. ~~>"<~~
    P/s: Nói chung là khi lập trình trên platform nào thì bạn nên tuân thủ các kiểu dữ liệu của nó.
    Đã được chỉnh sửa lần cuối bởi doicanhden : 20-04-2012 lúc 06:45 PM.
    Kết bạn với tôi <3
    Skype: giautm
    Facebook:
    https://fb.com/giautm.duongntt
    Email:
    giau.tmg@gmail.com

  5. #5
    Ngày gia nhập
    03 2012
    Nơi ở
    Hà Nội
    Bài viết
    0

    Cảm ơn bạn nha! Mình thật sự cũng chưa hiểu nhiều về mấy cái hàm trong WINS này :|
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

Các đề tài tương tự

  1. Tìm hiểu về thư viện liên kết động trên Win32 API
    Gửi bởi langman trong diễn đàn Tutorials và Thủ thuật Visual C++
    Trả lời: 37
    Bài viết cuối: 14-08-2017, 11:51 AM
  2. Các kĩ thuật ẩn lời gọi hàm API trên Win32 [Tài liệu tổng hợp]
    Gửi bởi quangnh89 trong diễn đàn Lập trình Virus & Anti-Virus
    Trả lời: 6
    Bài viết cuối: 11-08-2015, 11:20 PM
  3. Nhập dữ liệu cho file truy cập trực tiếp, đang chạy trên win7 thì báo stoped và dừng chuơng trình
    Gửi bởi tuansaker3291 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 6
    Bài viết cuối: 19-11-2011, 12:47 AM
  4. Trả lời: 5
    Bài viết cuối: 30-10-2011, 10:42 PM
  5. Tiếng việt trên win32 Console?
    Gửi bởi langman trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 27-04-2010, 10:23 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn