扫描二维码下载沐宇APP

沐宇

微信扫码使用沐宇小程序

沐宇

deviceiocontrol鍑芥暟鎬庝箞浣跨敤

扬州沐宇科技
2023-08-25 18:09:07
deviceiocontrol

DeviceIoControl鍑芥暟鏄疻indows鎿嶄綔绯荤粺鎻愪緵鐨勪竴涓敤浜庝笌璁惧杩涜閫氫俊鐨勫嚱鏁般€傚畠鍙互鐢ㄤ簬涓庡悇绉嶈澶囪繘琛岄€氫俊锛屽纾佺洏椹卞姩鍣ㄣ€佷覆鍙c€佸苟鍙c€乁SB璁惧绛夈€?/p>

浣跨敤DeviceIoControl鍑芥暟锛岄渶瑕佷互涓嬫楠わ細

  1. 鎵撳紑璁惧鍙ユ焺锛氫娇鐢–reateFile鍑芥暟鎵撳紑璁惧锛岃幏鍙栬澶囩殑鍙ユ焺銆?/li>
HANDLE hDevice = CreateFile(
L"\\\\.\\DeviceName",  // 璁惧鍚嶇О锛屽COM1锛孿\\\.\\COM1
GENERIC_READ | GENERIC_WRITE,  // 璁块棶鏉冮檺
0,  // 鍏变韩妯″紡
NULL,  // 瀹夊叏灞炴€?/span>
OPEN_EXISTING,  // 鎵撳紑鏂瑰紡
FILE_ATTRIBUTE_NORMAL,  // 鏂囦欢灞炴€?/span>
NULL  // 妯℃澘鏂囦欢鍙ユ焺
);
  1. 璁剧疆璁惧鎺у埗鐮侊細鏍规嵁璁惧鐨勮姹傦紝璁剧疆鐩稿簲鐨勮澶囨帶鍒剁爜銆?/li>
DWORD dwIoControlCode = IOCTL_DEVICE_CODE;  // 鑷畾涔夎澶囨帶鍒剁爜
  1. 鍑嗗杈撳叆/杈撳嚭缂撳啿鍖猴細鏍规嵁璁惧鐨勮姹傦紝鍑嗗杈撳叆鍜岃緭鍑虹紦鍐插尯銆?/li>
LPVOID lpInBuffer = NULL;  // 杈撳叆缂撳啿鍖烘寚閽?/span>
DWORD nInBufferSize = 0;  // 杈撳叆缂撳啿鍖哄ぇ灏?/span>
LPVOID lpOutBuffer = NULL;  // 杈撳嚭缂撳啿鍖烘寚閽?/span>
DWORD nOutBufferSize = 0;  // 杈撳嚭缂撳啿鍖哄ぇ灏?/span>
  1. 璋冪敤DeviceIoControl鍑芥暟杩涜璁惧閫氫俊锛?/li>
BOOL bResult = DeviceIoControl(
hDevice,  // 璁惧鍙ユ焺
dwIoControlCode,  // 璁惧鎺у埗鐮?/span>
lpInBuffer,  // 杈撳叆缂撳啿鍖烘寚閽?/span>
nInBufferSize,  // 杈撳叆缂撳啿鍖哄ぇ灏?/span>
lpOutBuffer,  // 杈撳嚭缂撳啿鍖烘寚閽?/span>
nOutBufferSize,  // 杈撳嚭缂撳啿鍖哄ぇ灏?/span>
NULL,  // 瀹為檯璇诲彇/鍐欏叆鐨勫瓧鑺傛暟
NULL  // 寮傛I/O鐨凮VERLAPPED缁撴瀯鎸囬拡
);
  1. 澶勭悊璁惧杩斿洖缁撴灉锛氭牴鎹澶囪繑鍥炵殑缁撴灉锛岃繘琛岀浉搴旂殑澶勭悊銆?/p>

  2. 鍏抽棴璁惧鍙ユ焺锛氫娇鐢–loseHandle鍑芥暟鍏抽棴璁惧鍙ユ焺銆?/p>

CloseHandle(hDevice);

闇€瑕佹敞鎰忕殑鏄紝鍏蜂綋浣跨敤DeviceIoControl鍑芥暟鐨勫弬鏁板拰璁惧鎺у埗鐮侊紝闇€瑕佹牴鎹叿浣撶殑璁惧鍜岄渶姹傝€屽畾銆傛瘡涓澶囩殑璁惧鎺у埗鐮佸拰閫氫俊鏂瑰紡閮藉彲鑳戒笉鍚岋紝闇€瑕佹煡闃呯浉鍏宠澶囨枃妗f垨椹卞姩绋嬪簭鐨勫紑鍙戞枃妗f潵鑾峰彇鍏蜂綋鐨勪俊鎭€?/p>

扫码添加客服微信