Привествую всех!
Перетрусил уже тучу сайтов, но пока ничего толком не работает.
А задача собственно такая: как средствами Autoit получить
VendorID, ProductID и серийник USB Flash drive.
Путём долгого вкуривания в MSDN нашёл несколько функций, пробую так:
Вылетает с LastError = 50 ( The request is not supported) :wacko:
Не понимаю в чём проблема!? Функция не работает с UFD?
Ось XP SP3.
Help please!
Перетрусил уже тучу сайтов, но пока ничего толком не работает.
А задача собственно такая: как средствами Autoit получить
VendorID, ProductID и серийник USB Flash drive.
Путём долгого вкуривания в MSDN нашёл несколько функций, пробую так:
Код:
#include <WinAPIEx.au3>
_IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER()
Func _IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER()
Local $sDrive = 'k:'
Local $result;
Local $str_OutBuffer;
Local $iControlCode = 'IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER';
Local $str_OutBuffer = DllStructCreate('byte;dword;byte;dword;byte;dword;byte;dword;')
$hFile = _WinAPI_CreateFileEx('\\.\' & $sDrive,$OPEN_EXISTING,$GENERIC_READ+$GENERIC_WRITE,$FILE_SHARE_READ+$FILE_SHARE_WRITE);
if @error <> 0 Then
ConsoleWrite('File not created.' & @CRLF);
Return SetError(1, 0, 0)
Else
$result = _WinAPI_DeviceIoControl($hFile,$iControlCode,0,0,DllStructGetPtr($str_OutBuffer),DllStructGetSize($str_OutBuffer));
if $result <> 0 Then
ConsoleWrite('SerialNumberLength: ' & DllStructGetData($str_OutBuffer,1) & @CRLF)
ConsoleWrite('Result status: ' & DllStructGetData($str_OutBuffer,2) & @CRLF)
ConsoleWrite('Reserved: ' & DllStructGetData($str_OutBuffer,3) & @CRLF)
ConsoleWrite('SerialNumber: ' & DllStructGetData($str_OutBuffer,4) & @CRLF)
Return $str_OutBuffer
Else
ConsoleWrite(_WinAPI_GetLastError() & @CRLF);
;Return _WinAPI_GetLastError();
EndIf
EndIf
_WinAPI_CloseHandle($hFile);
EndFunc
Вылетает с LastError = 50 ( The request is not supported) :wacko:
Не понимаю в чём проблема!? Функция не работает с UFD?
Ось XP SP3.
Help please!