无法在C(Windows)中打开逻辑卷

无法在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

我正在努力打开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");
        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“访问被拒绝”。我是店主,对音量有完全的控制权,所以任何额外的想法都是很好的。只是一个想法。尝试打开一个现有的文件,以便在您希望写入的同一文件夹中读取,看看这是否有帮助。