无法在C(Windows)中打开逻辑卷
我正在努力打开C中逻辑驱动器的句柄;我目前正在处理的代码是:无法在C(Windows)中打开逻辑卷,c,handle,read-write,createfile,C,Handle,Read Write,Createfile,我正在努力打开C中逻辑驱动器的句柄;我目前正在处理的代码是: int main () { HANDLE hvol = CreateFile("\\\\.\\T:", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if(hvol==INVALID_HANDLE_VALUE) { printf("Failure"); ret
int main ()
{
HANDLE hvol = CreateFile("\\\\.\\T:", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(hvol==INVALID_HANDLE_VALUE)
{
printf("Failure");
return 1;
}
unsigned char sector[512];
DWORD bytesread;
ReadFile(hvol, sector, sizeof sector, &bytesread, NULL);
printf("%02x", sector[0]);
return 0;
}
不幸的是,它没有通过createfile
行,每次都返回“Failure”,这意味着无法打开卷
我也尝试过:
“\\\?\\Volume{eed5cc92-0000-0000-0000-60b21b000000}”
(卷的GUID)
“\\.\\T:”
(其他帖子也建议这样做)
这些都不管用
任何帮助都会很好,谢谢。一定要编写更好的错误报告代码,至少要显示GetLastError()返回的值,这样才能知道失败的原因。也许这取决于文件权限—运行代码的人和资源的所有者—根据您需要指定文件共享读取和文件共享写入标志。另外,如前所述,
GetLastError()
是您的朋友。我现在在CreateFile
行中设置了读取和写入标志GetLastError()
以前返回“未找到文件”,现在返回错误代码5“访问被拒绝”。我是店主,对音量有完全的控制权,所以任何额外的想法都是很好的。只是一个想法。尝试打开一个现有的文件,以便在您希望写入的同一文件夹中读取,看看这是否有帮助。