gpt4 book ai didi

c++ - 如何像winhex一样直接读/写usb(磁盘)?

转载 作者:行者123 更新时间:2023-11-30 04:05:20 32 4
gpt4 key购买 nike

我的目标是读/写 usb。

首先必须打开并读取 usb 低级别,如“程序”

我使用 visual c++ 和 winAPI

下面是我的测试代码

char path[64];
sprintf(path,"\\\\.\\%c:",volume);//

/////MOST case, user's input is F or G ......
HANDLE usb;

usb=CreateFile(TEXT(path),
GENERIC_ALL,//
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, //serail I/O
NULL);

if(usb==INVALID_HANDLE_VALUE) cout<<"fail to createfile()"<<endl;

cout<<usb<<endl;

char buf[128];

DWORD dwBytesRead=0;

ReadFile(usb,buf,sizeof(buf),&dwBytesRead,NULL);
cout<<buf<<endl;
cout<<GetLastError()<<endl;

CloseHandle(usb);

我想知道 CreateFile 和 ReadFile 是正确的

ReadFile() 的 GetLastError() 是 87,表示无效输入...

怎么了??

我多次引用MSDN...但是任何页面都没有解决这个问题....

我应该知道什么?修好了吗?

最佳答案

缓冲区的大小必须等于 N *(驱动器的扇区大小),其中 N 是 DWORD 值。可以使用 DeviceIoControl(Handle, IOCTL_DISK_GET_DRIVE_GEOMETRY, ..., DISK_GEOMETRY, ...) 接收扇区大小。

关于c++ - 如何像winhex一样直接读/写usb(磁盘)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23339769/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com