Windows涓璬eviceiocontrol鍑芥暟鎬庝箞璋冪敤
鍦╓indows涓紝浣跨敤DeviceIoControl鍑芥暟鏉ヤ笌璁惧杩涜閫氫俊銆侱eviceIoControl鍑芥暟鐨勮皟鐢ㄦ柟寮忓涓嬶細
-
鎵撳紑璁惧鍙ユ焺锛?/p>
HANDLE hDevice = CreateFile( L"\\\\.\\DeviceName", // 璁惧鍚嶇О锛屽\\\\.\\COM1 GENERIC_READ | GENERIC_WRITE, // 璁块棶鏉冮檺 0, // 鍏变韩妯″紡锛屼竴鑸缃负0 NULL, // 瀹夊叏鎻忚堪绗︼紝涓€鑸缃负NULL OPEN_EXISTING, // 鎵撳紑鐜版湁璁惧 FILE_ATTRIBUTE_NORMAL, // 鏂囦欢灞炴€?/span> NULL); // 妯℃澘鍙ユ焺锛屼竴鑸缃负NULL
鍏朵腑锛?code>DeviceName鏄澶囩殑鍚嶇О锛屽彲浠ユ槸涓插彛(COM1, COM2, 绛夌瓑)銆佺鐩?\Device\Harddisk0\Partition1)绛夈€?/p>
-
璁剧疆鎴栬幏鍙栬澶囩殑鎺у埗鍛戒护锛?/p>
DWORD dwBytesReturned; BOOL bResult = DeviceIoControl( hDevice, // 璁惧鍙ユ焺 dwIoControlCode, // 鎺у埗浠g爜锛屽IOCTL_DISK_GET_DRIVE_GEOMETRY lpInBuffer, // 杈撳叆缂撳啿鍖猴紝鍙€?/span> nInBufferSize, // 杈撳叆缂撳啿鍖哄ぇ灏忥紝鍙€?/span> lpOutBuffer, // 杈撳嚭缂撳啿鍖猴紝鍙€?/span> nOutBufferSize, // 杈撳嚭缂撳啿鍖哄ぇ灏忥紝鍙€?/span> &dwBytesReturned, // 杩斿洖鐨勫瓧鑺傛暟 NULL); // 寮傛鎿嶄綔鍙ユ焺锛屼竴鑸缃负NULL
鍏朵腑锛?code>dwIoControlCode鏄澶囩殑鎺у埗鍛戒护锛屽彲浠ユ槸IOCTL_DISK_GET_DRIVE_GEOMETRY绛夈€?code>lpInBuffer鍜?code>nInBufferSize鏄緭鍏ョ紦鍐插尯鍜屽ぇ灏忥紝鐢ㄤ簬浼犻€掑懡浠ゆ墍闇€鐨勫弬鏁般€?code>lpOutBuffer鍜?code>nOutBufferSize鏄緭鍑虹紦鍐插尯鍜屽ぇ灏忥紝鐢ㄤ簬鎺ユ敹璁惧杩斿洖鐨勪俊鎭€?code>&dwBytesReturned鐢ㄤ簬杩斿洖瀹為檯浼犺緭鐨勫瓧鑺傛暟銆?/p>
-
鍏抽棴璁惧鍙ユ焺锛?/p>
CloseHandle(hDevice);
浣跨敤瀹孌eviceIoControl鍑芥暟鍚庯紝闇€瑕佸叧闂澶囧彞鏌勪互閲婃斁璧勬簮銆?/p>
娉ㄦ剰浜嬮」锛?/p>
- 闇€瑕佸寘鍚?code>windows.h澶存枃浠躲€?/li>
- 蹇呴』浠ョ鐞嗗憳鏉冮檺杩愯绋嬪簭銆?/li>
- 鎺у埗浠g爜鍜屽弬鏁扮殑鍏蜂綋鍊煎強浣跨敤鏂规硶闇€瑕佹牴鎹澶囬┍鍔ㄧ▼搴忕殑鎺ュ彛鏂囨。鏉ョ‘瀹氥€?/li>
相关问答