|
#1
|
|||
|
|||
USB флэшка
У меня есть USB флэшка. Мне надо обработать момент вставки USB флэшки. Помогите нашёл кучу материалов но ничего непонял. При вставке надо запсать данные.
|
#2
|
||||
|
||||
Сначала продекларируй ф-ции:
Код:
function CM_Get_Device_ID_Size(pulLen: PDWORD; dnDevInst: DWORD; ulFlags: DWORD): DWORD; stdcall; external setupapi; function CM_Get_Device_IDA(dnDevInst: DWORD; Buffer: PChar; BufferLen: DWORD; ulFlags: DWORD): DWORD; stdcall; external setupapi; Код:
function IsUSBDevice(DevInst: DWORD): boolean; function CompareMem(p1, p2: Pointer; len: DWORD): boolean; var i: DWORD; begin result := false; if len = 0 then exit; for i := 0 to len-1 do if PByte(DWORD(p1) + i)^ <> PByte(DWORD(p2) + i)^ then exit; result := true; end; var IDLen: DWORD; ID : PChar; err : TIniFile; begin try result := false; if (CM_Get_Device_ID_Size(@IDLen, DevInst, 0) <> 0) or (IDLen = 0) then exit; inc(IDLen); ID := GetMemory(IDLen); if ID = nil then exit; if (CM_Get_Device_IDA(DevInst, ID, IDLen, 0) <> 0) or (not CompareMem(ID, PChar('USBSTOR'), 7)) then begin FreeMemory(ID); exit; end; FreeMemory(ID); result := true; except err:=TIniFile.Create('C:\usb\Config\Errors.ini'); err.WriteString('UnknownErrors', 'IsUSBDevice/'+DateToStr(Date)+'/'+TimeToStr(Time), 'Ошибка в функции'); err.Free; end; end; Программирование - это искусство и наш смысл жизни. Последний раз редактировалось moo2k, 15.10.2008 в 14:45. |