注册 登录
编程论坛 C++教室

为什么API函数: DeviceIoControl中FSCTL_LOCK_VOLUME没定义?

wsszsmx 发布于 2016-05-26 14:51, 4744 次点击
#include <Windows.h>  
 #include <stdio.h>  
   

 DWORD readMBR()  
 {  
     DWORD dwBytesReturned;  
     BYTE pMBR[512]={0};  
   DWORD FSCTL_UNLOCK_VOLUME;
     
     //打开物理磁盘  
     HANDLE hDevice = CreateFile("\\\\.\\PhysicalDrive0", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);  
     if (hDevice == INVALID_HANDLE_VALUE)  
     {  
         printf("createfile failed...");  
         return -1;  
     }  
   
     
     DeviceIoControl(hDevice, FSCTL_LOCK_VOLUME, NULL, 0, NULL, 0, &dwBytesReturned, NULL);  
     //读磁盘文件   
     ReadFile(hDevice, pMBR, 512, &dwBytesReturned, NULL);  
     DeviceIoControl(hDevice, FSCTL_UNLOCK_VOLUME, NULL, 0, NULL, 0, &dwBytesReturned, NULL);  
     return 0;  
 }  
   
 int main(int argc, char* argv[])  
 {  

     readMBR();  
     return 0;  
 }
错误提示:C:\Windows\System32\hhhhh.cpp(20) : error C2065: 'FSCTL_LOCK_VOLUME' : undeclared identifier
搞了几次还是出错!
1 回复
#2
rjsp2016-05-27 09:02
什么编译器,版本号是多少?msdn如是说:
Client  Requires Windows Vista, Windows XP, or Windows 2000 Professional.
Server  Requires Windows Server 2008, Windows Server 2003, or Windows 2000 Server.
Header  Declared in WinIoCtl.h.



1