目前位置:
![]() ![]() ![]() |
| [本帖已阅读2989次 分值2 回复10次] |
![]() ![]() ![]() |
怎么实现关机(重启)时检测USB的存储设备! 提供者:lxwxiao 张贴时间:2004-05-24 17:09:08.0 出处:vcer.net 作者:不祥 |
怎么实现关机(重启)时检测USB的存储设备!(2004-05-24 17:09:08.0) |
|||||||||||
|
|
||||||||||
|
re:怎么实现关机(重启)时检测USB的存储设备!
|
| 其实GetDriveType()就能实现这个功能了 | |
|
re:怎么实现关机(重启)时检测USB的存储设备!
|
|
这个还是不能检测移动硬盘!这个是MSDN的一个例子我加了一句以判断设备媒体类型。CSDN上有相关文章。俺只是个初学者望大家以后多多指点!谢谢了 #include <windows.h> #include <winioctl.h>
BOOL GetDriveGeometry(DISK_GEOMETRY *pdg) { HANDLE hDevice; // handle to the drive to be examined BOOL bResult; // results flag DWORD junk; // discard results
hDevice = CreateFile(\\\\.\\PhysicalDrive0, // drive to open. PhysicalDrive1;a:;c:;... 0, // no access to the drive FILE_SHARE_READ | // share mode FILE_SHARE_WRITE, NULL, // default security attributes OPEN_EXISTING, // disposition 0, // file attributes NULL); // do not copy file attributes
if (hDevice == INVALID_HANDLE_VALUE) // cannot open the drive { return (FALSE); }
bResult = DeviceIoControl(hDevice, // device to be queried IOCTL_DISK_GET_DRIVE_GEOMETRY, // operation to perform NULL, 0, // no input buffer pdg, sizeof(*pdg), // output buffer &junk, // # bytes returned (LPOVERLAPPED) NULL); // synchronous I/O
CloseHandle(hDevice);
return (bResult); }
int main(int argc, char *argv[]) { DISK_GEOMETRY pdg; // disk drive geometry structure BOOL bResult; // generic results flag ULONGLONG DiskSize; // size of the drive, in bytes
bResult = GetDriveGeometry (&pdg);
if (bResult) { printf("MediaType = %d\n", pdg.MediaType); printf("Cylinders = %I64d\n", pdg.Cylinders); printf("Tracks per cylinder = %ld\n", (ULONG) pdg.TracksPerCylinder); printf("Sectors per track = %ld\n", (ULONG) pdg.SectorsPerTrack); printf("Bytes per sector = %ld\n", (ULONG) pdg.BytesPerSector);
DiskSize = pdg.Cylinders.QuadPart * (ULONG)pdg.TracksPerCylinder * (ULONG)pdg.SectorsPerTrack * (ULONG)pdg.BytesPerSector; printf("Disk size = %I64d (Bytes) = %I64d (Mb)\n", DiskSize, DiskSize / (1024 * 1024)); } else { printf("GetDriveGeometry failed. Error %ld.\n", GetLastError()); }
return ((int)bResult); } |
|
|
re:怎么实现关机(重启)时检测USB的存储设备!
|
|
能将你代码整理一下,放到vcer上么 好像大多数人都不会 希望能提供源代码,谢谢! |
|
|
re:怎么实现关机(重启)时检测USB的存储设备!
|
| 搞定了,把winioctl.h的位置换一下就好了! | |
|
re:怎么实现关机(重启)时检测USB的存储设备!
|
| UP一下,大哥帮忙看看啊! | |
|
re:怎么实现关机(重启)时检测USB的存储设备!
|
|
据说这个可以实现,但我在编译时出错?附源码及错误!大家帮我看看啊!谢谢了先 #include "Winioctl.h" HANDLE hDisk = CreateFile("\\\\.\\X:", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if (hDisk != INVALID_HANDLE_VALUE) { DISK_GEOMETRY dgDisk; if (DeviceIoControl(hDisk, IOCTL_DISK_GET_DRIVE_GEOMETRY, NULL, 0, &dgDisk, sizeof(dgDisk), &dwNotUsed, NULL)) { if(dgDisk.MediaType == RemovableMedia) //是否移动硬盘 { // 是 ....
} } CloseHandle(hDisk); 就加Winioctl.h这个头文件就出错,是不是差什么东西? d:\microsoft visual studio\vc98\include\winioctl.h(179) : error C2146: syntax error : missing ';' before identifier 'DeviceType' d:\microsoft visual studio\vc98\include\winioctl.h(179) : error C2501: 'DWORD' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(179) : error C2501: 'DeviceType' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(185) : error C2146: syntax error : missing ';' before identifier 'DeviceNumber' d:\microsoft visual studio\vc98\include\winioctl.h(185) : error C2501: 'DWORD' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(185) : error C2501: 'DeviceNumber' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(192) : error C2146: syntax error : missing ';' before identifier 'PartitionNumber' d:\microsoft visual studio\vc98\include\winioctl.h(192) : error C2501: 'DWORD' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(192) : error C2501: 'PartitionNumber' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(200) : error C2146: syntax error : missing ';' before identifier 'PathId' d:\microsoft visual studio\vc98\include\winioctl.h(200) : error C2501: 'BYTE' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(200) : error C2501: 'PathId' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(214) : error C2146: syntax error : missing ';' before identifier 'PreventMediaRemoval' d:\microsoft visual studio\vc98\include\winioctl.h(214) : error C2501: 'BOOLEAN' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(214) : error C2501: 'PreventMediaRemoval' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(221) : error C2146: syntax error : missing ';' before identifier 'Version' d:\microsoft visual studio\vc98\include\winioctl.h(221) : error C2501: 'DWORD' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(221) : error C2501: 'Version' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(222) : error C2146: syntax error : missing ';' before identifier 'Flags' d:\microsoft visual studio\vc98\include\winioctl.h(222) : error C2501: 'DWORD' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(222) : error C2501: 'Flags' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(223) : error C2146: syntax error : missing ';' before identifier 'RecoveredWrites' d:\microsoft visual studio\vc98\include\winioctl.h(223) : error C2501: 'LARGE_INTEGER' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(223) : error C2501: 'RecoveredWrites' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(224) : error C2146: syntax error : missing ';' before identifier 'UnrecoveredWrites' d:\microsoft visual studio\vc98\include\winioctl.h(224) : error C2501: 'LARGE_INTEGER' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(224) : error C2501: 'UnrecoveredWrites' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(225) : error C2146: syntax error : missing ';' before identifier 'RecoveredReads' d:\microsoft visual studio\vc98\include\winioctl.h(225) : error C2501: 'LARGE_INTEGER' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(225) : error C2501: 'RecoveredReads' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(226) : error C2146: syntax error : missing ';' before identifier 'UnrecoveredReads' d:\microsoft visual studio\vc98\include\winioctl.h(226) : error C2501: 'LARGE_INTEGER' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(226) : error C2501: 'UnrecoveredReads' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(227) : error C2146: syntax error : missing ';' before identifier 'CompressionRatioReads' d:\microsoft visual studio\vc98\include\winioctl.h(227) : error C2501: 'BYTE' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(227) : error C2501: 'CompressionRatioReads' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(228) : error C2146: syntax error : missing ';' before identifier 'CompressionRatioWrites' d:\microsoft visual studio\vc98\include\winioctl.h(228) : error C2501: 'BYTE' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(228) : error C2501: 'CompressionRatioWrites' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(239) : error C2146: syntax error : missing ';' before identifier 'Operation' d:\microsoft visual studio\vc98\include\winioctl.h(239) : error C2501: 'DWORD' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(239) : error C2501: 'Operation' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(341) : error C2146: syntax error : missing ';' before identifier 'Cylinders' d:\microsoft visual studio\vc98\include\winioctl.h(341) : error C2501: 'LARGE_INTEGER' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(341) : error C2501: 'Cylinders' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(343) : error C2146: syntax error : missing ';' before identifier 'TracksPerCylinder' d:\microsoft visual studio\vc98\include\winioctl.h(343) : error C2501: 'DWORD' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(343) : error C2501: 'TracksPerCylinder' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(344) : error C2146: syntax error : missing ';' before identifier 'SectorsPerTrack' d:\microsoft visual studio\vc98\include\winioctl.h(344) : error C2501: 'DWORD' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(344) : error C2501: 'SectorsPerTrack' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(345) : error C2146: syntax error : missing ';' before identifier 'BytesPerSector' d:\microsoft visual studio\vc98\include\winioctl.h(345) : error C2501: 'DWORD' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(345) : error C2501: 'BytesPerSector' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(346) : error C2146: syntax error : missing ';' before identifier 'NumberMediaSides' d:\microsoft visual studio\vc98\include\winioctl.h(346) : error C2501: 'DWORD' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(346) : error C2501: 'NumberMediaSides' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(347) : error C2146: syntax error : missing ';' before identifier 'MediaCharacteristics' d:\microsoft visual studio\vc98\include\winioctl.h(347) : error C2501: 'DWORD' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(347) : error C2501: 'MediaCharacteristics' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(351) : error C2146: syntax error : missing ';' before identifier 'Cylinders' d:\microsoft visual studio\vc98\include\winioctl.h(351) : error C2501: 'LARGE_INTEGER' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(351) : error C2501: 'Cylinders' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(353) : error C2146: syntax error : missing ';' before identifier 'TracksPerCylinder' d:\microsoft visual studio\vc98\include\winioctl.h(353) : error C2501: 'DWORD' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(353) : error C2501: 'TracksPerCylinder' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(354) : error C2146: syntax error : missing ';' before identifier 'SectorsPerTrack' d:\microsoft visual studio\vc98\include\winioctl.h(354) : error C2501: 'DWORD' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(354) : error C2501: 'SectorsPerTrack' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(355) : error C2146: syntax error : missing ';' before identifier 'BytesPerSector' d:\microsoft visual studio\vc98\include\winioctl.h(355) : error C2501: 'DWORD' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(355) : error C2501: 'BytesPerSector' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(356) : error C2146: syntax error : missing ';' before identifier 'NumberMediaSides' d:\microsoft visual studio\vc98\include\winioctl.h(356) : error C2501: 'DWORD' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(356) : error C2501: 'NumberMediaSides' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(357) : error C2146: syntax error : missing ';' before identifier 'MediaCharacteristics' d:\microsoft visual studio\vc98\include\winioctl.h(357) : error C2501: 'DWORD' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(357) : error C2501: 'MediaCharacteristics' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(362) : error C2146: syntax error : missing ';' before identifier 'MediaCharacteristics' d:\microsoft visual studio\vc98\include\winioctl.h(362) : error C2501: 'DWORD' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(362) : error C2501: 'MediaCharacteristics' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(363) : error C2146: syntax error : missing ';' before identifier 'CurrentBlockSize' d:\microsoft visual studio\vc98\include\winioctl.h(363) : error C2501: 'DWORD' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(363) : error C2501: 'CurrentBlockSize' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(369) : error C2146: syntax error : missing ';' before identifier 'DeviceType' d:\microsoft visual studio\vc98\include\winioctl.h(369) : error C2501: 'DWORD' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(369) : error C2501: 'DeviceType' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(370) : error C2146: syntax error : missing ';' before identifier 'MediaInfoCount' d:\microsoft visual studio\vc98\include\winioctl.h(370) : error C2501: 'DWORD' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(370) : error C2501: 'MediaInfoCount' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(571) : error C2146: syntax error : missing ';' before identifier 'StartCylinderNumber' d:\microsoft visual studio\vc98\include\winioctl.h(571) : error C2501: 'DWORD' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(571) : error C2501: 'StartCylinderNumber' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(572) : error C2146: syntax error : missing ';' before identifier 'EndCylinderNumber' d:\microsoft visual studio\vc98\include\winioctl.h(572) : error C2501: 'DWORD' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(572) : error C2501: 'EndCylinderNumber' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(573) : error C2146: syntax error : missing ';' before identifier 'StartHeadNumber' d:\microsoft visual studio\vc98\include\winioctl.h(573) : error C2501: 'DWORD' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(573) : error C2501: 'StartHeadNumber' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(574) : error C2146: syntax error : missing ';' before identifier 'EndHeadNumber' d:\microsoft visual studio\vc98\include\winioctl.h(574) : error C2501: 'DWORD' : missing storage-class or type specifiers d:\microsoft visual studio\vc98\include\winioctl.h(574) : fatal error C1003: error count exceeds 100; stopping compilation Error executing cl.exe. Creating browse info file... BSCMAKE: error BK1506 : cannot open file '.\Debug\BindDlg.sbr': No such file or directory Error executing bscmake.exe. Bind.exe - 103 error(s), 0 warning(s) |
|
|
re:怎么实现关机(重启)时检测USB的存储设备!
|
|
界个好难啊,偶不知道呢~ |
|
|
re:怎么实现关机(重启)时检测USB的存储设备!
|
|
自己顶一下! |
|
|
re:怎么实现关机(重启)时检测USB的存储设备!
|
|
斑竹大哥来帮帮忙啊!拜托了啊! |
|
|
re:怎么实现关机(重启)时检测USB的存储设备!
|
|
没人会吗? |
|