mirror of https://github.com/EspoTek/Labrador.git
100 lines
2.8 KiB
ObjectPascal
100 lines
2.8 KiB
ObjectPascal
|
program enumerate;
|
||
|
|
||
|
{$APPTYPE CONSOLE}
|
||
|
uses
|
||
|
SysUtils,
|
||
|
libusbK in '..\libusbK.pas';
|
||
|
|
||
|
procedure EnumerateAttachedDevices;
|
||
|
var
|
||
|
deviceCount : Cardinal;
|
||
|
lDeviceList : KLST_HANDLE;
|
||
|
lDeviceInfo : KLST_DEVINFO_HANDLE;
|
||
|
i : Integer;
|
||
|
begin
|
||
|
deviceCount := 0;
|
||
|
lDeviceList := Nil;
|
||
|
lDeviceInfo := Nil;
|
||
|
// Get the device list
|
||
|
if (not LstK_Init(lDeviceList, 0)) then
|
||
|
begin
|
||
|
WriteLn('Error in LstK_Init!');
|
||
|
Exit;
|
||
|
end;
|
||
|
try // make sure list is freed under all circumstances
|
||
|
LstK_Count(lDeviceList, deviceCount);
|
||
|
if (deviceCount = 0) then
|
||
|
begin
|
||
|
WriteLn('No devices found!');
|
||
|
Exit; // lDeviceList is freed in finally
|
||
|
end;
|
||
|
i := -1;
|
||
|
while LstK_MoveNext(lDeviceList, lDeviceInfo) do
|
||
|
begin
|
||
|
Inc(i);
|
||
|
if Assigned(lDeviceInfo) then
|
||
|
begin
|
||
|
WriteLn('Device ',i,' ---------------------------------');
|
||
|
WriteLn('VID: ',lDeviceInfo.Common.Vid);
|
||
|
WriteLn('PID: ',lDeviceInfo.Common.Pid);
|
||
|
WriteLn('MI: ',lDeviceInfo.Common.MI);
|
||
|
WriteLn('InstanceID: ',lDeviceInfo.Common.InstanceID);
|
||
|
WriteLn('DriverID: ',lDeviceInfo.DriverID);
|
||
|
WriteLn('DeviceInterfaceGUID: ',lDeviceInfo.DeviceInterfaceGUID);
|
||
|
WriteLn('InstanceID: ',lDeviceInfo.InstanceID);
|
||
|
WriteLn('ClassGUID: ',lDeviceInfo.ClassGUID);
|
||
|
WriteLn('Mfg: ',lDeviceInfo.Mfg);
|
||
|
WriteLn('DeviceDesc: ',lDeviceInfo.DeviceDesc);
|
||
|
WriteLn('Service: ',lDeviceInfo.Service);
|
||
|
WriteLn('SymbolicLink: ',lDeviceInfo.SymbolicLink);
|
||
|
WriteLn('DevicePath: ',lDeviceInfo.DevicePath);
|
||
|
WriteLn('LUsb0FilterIndex: ',lDeviceInfo.LUsb0FilterIndex);
|
||
|
if lDeviceInfo.Connected then
|
||
|
WriteLn('Connected: True')
|
||
|
else
|
||
|
WriteLn('Connected: False');
|
||
|
WriteLn('SyncFlags: '+Format('%x',[lDeviceInfo.SyncFlags]));
|
||
|
end;
|
||
|
end;
|
||
|
finally
|
||
|
if Assigned(lDeviceList) then
|
||
|
LstK_Free(lDeviceList);
|
||
|
end;
|
||
|
end;
|
||
|
|
||
|
|
||
|
begin
|
||
|
WriteLn('libusbK Device enumeration demo');
|
||
|
if not libusbK.DllAvailable then
|
||
|
begin
|
||
|
WriteLn('Error: '+libusbK.LIBUSBK_DLL+' not available!');
|
||
|
Halt(1);
|
||
|
end;
|
||
|
EnumerateAttachedDevices;
|
||
|
WriteLn('libusbK Device enumeration done');
|
||
|
|
||
|
(* Example output
|
||
|
libusbK Device enumeration demo
|
||
|
Device 0 ---------------------------------
|
||
|
VID: 1204
|
||
|
PID: 34323
|
||
|
MI: -1
|
||
|
InstanceID: 6&564E695&0&1
|
||
|
DriverID: 0
|
||
|
DeviceInterfaceGUID: {53373f62-b5e4-d526-b292-f86533b3e7df}
|
||
|
InstanceID: USB\Vid_04b4&Pid_8613\6&564e695&0&1
|
||
|
ClassGUID: {ECFB0CFD-74C4-4F52-BBF7-343461CD72AC}
|
||
|
Mfg: Cypress Semiconductor Corp.
|
||
|
DeviceDesc: Cypress Generic USB Device (LibUSB)
|
||
|
Service: libusbK
|
||
|
SymbolicLink: \\?\USB#Vid_04b4&Pid_8613#6&564e695&0&1#{53373f62-b5e4-d526-b292-f86533b3e7df}
|
||
|
DevicePath: \\?\USB#Vid_04b4&Pid_8613#6&564e695&0&1#{53373f62-b5e4-d526-b292-f86533b3e7df}
|
||
|
LUsb0FilterIndex: -1
|
||
|
Connected: True
|
||
|
SyncFlags: 0
|
||
|
libusbK Device enumeration done
|
||
|
*)
|
||
|
|
||
|
|
||
|
end.
|