转载:https://www.cnblogs.com/sherlock-merlin/p/10792116.html https://univasity.iteye.com/blog/805234
#include<iostream> #include<Windows.h> using namespace std; int main() { HANDLE hFile = INVALID_HANDLE_VALUE; hFile = CreateFileA("\\.\H:", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE){ MessageBox(NULL,("USN错误"),("错误"),MB_OK); printf("获取驱动盘句柄失败-handle:%x error:%d ",hFile,GetLastError()); } else{ printf("获取驱动盘句柄成功 handle:%x",hFile); MessageBox(NULL,("USN正确"),("正确"),MB_OK); } CloseHandle(hFile); }
注意:调用CreateFileA需要管理员权限,因此需要在编译成功后右击exe文件以管理员身份运行才能得到正确结果。如果直接在vs2013中运行获取句柄一定会失败。