deviceiocontrol鍑芥暟鎬庝箞璋冪敤
DeviceIoControl鍑芥暟鐨勮皟鐢ㄦ柟寮忓涓嬶細
- 棣栧厛锛岄渶瑕佹墦寮€璁惧鎴栨枃浠讹紝鑾峰彇鍏跺彞鏌勶紙handle锛夈€傚彲浠ヤ娇鐢–reateFile鍑芥暟鏉ユ墦寮€璁惧鎴栨枃浠讹紝鑾峰彇鍙ユ焺銆?/li>
HANDLE hDevice = CreateFile(
L"\\\\.\\DeviceName", // 璁惧鍚嶆垨鏂囦欢鍚?/span>
GENERIC_READ | GENERIC_WRITE, // 璁块棶鏉冮檺
FILE_SHARE_READ | FILE_SHARE_WRITE, // 鍏变韩妯″紡
NULL, // 瀹夊叏灞炴€?/span>
OPEN_EXISTING, // 鎵撳紑鏂瑰紡
FILE_ATTRIBUTE_NORMAL, // 鏂囦欢灞炴€?/span>
NULL // 妯℃澘鍙ユ焺
);
- 鍑嗗杈撳叆鍜岃緭鍑虹殑缂撳啿鍖猴紝浠ュ強鍏朵粬鍙傛暟銆?/li>
DWORD dwBytesReturned; // 鐢ㄤ簬鎺ユ敹杩斿洖鐨勫瓧鑺傛暟
BYTE* lpInBuffer = NULL; // 杈撳叆缂撳啿鍖?/span>
DWORD nInBufferSize = 0; // 杈撳叆缂撳啿鍖哄ぇ灏?/span>
BYTE* lpOutBuffer = NULL; // 杈撳嚭缂撳啿鍖?/span>
DWORD nOutBufferSize = 0; // 杈撳嚭缂撳啿鍖哄ぇ灏?/span>
- 璋冪敤DeviceIoControl鍑芥暟鎵цIO鎺у埗鎿嶄綔銆?/li>
BOOL bResult = DeviceIoControl(
hDevice, // 璁惧鍙ユ焺
dwIoControlCode, // 鎺у埗鐮?/span>
lpInBuffer, // 杈撳叆缂撳啿鍖?/span>
nInBufferSize, // 杈撳叆缂撳啿鍖哄ぇ灏?/span>
lpOutBuffer, // 杈撳嚭缂撳啿鍖?/span>
nOutBufferSize, // 杈撳嚭缂撳啿鍖哄ぇ灏?/span>
&dwBytesReturned, // 瀹為檯杩斿洖鐨勫瓧鑺傛暟
NULL // 閲嶅彔鎿嶄綔
);
- 鏍规嵁杩斿洖鍊煎垽鏂搷浣滄槸鍚︽垚鍔熴€?/li>
if (bResult)
{
// 鎿嶄綔鎴愬姛
}
else
{
// 鎿嶄綔澶辫触锛屽彲浠ヤ娇鐢℅etLastError鍑芥暟鑾峰彇閿欒鐮?/span>
DWORD dwError = GetLastError();
}
- 鏈€鍚庯紝鍏抽棴璁惧鎴栨枃浠剁殑鍙ユ焺銆?/li>
CloseHandle(hDevice);
璇锋敞鎰忥紝浠ヤ笂浠g爜浠呬负绀轰緥锛屽疄闄呬娇鐢ㄦ椂闇€瑕佹牴鎹叿浣撶殑璁惧鎴栨枃浠惰繘琛岃皟鏁淬€?/p>