Что нового

Определение VendorID, ProductID и серийного номера Флешки

Vitorrio

Новичок
Сообщения
8
Репутация
0
Привествую всех!
Перетрусил уже тучу сайтов, но пока ничего толком не работает.
А задача собственно такая: как средствами 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!
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Код:
$iControlCode = 0x002D0C10


Все эти константы присутствуют в APIConstants.au3
 
Верх