program enumerate;
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;
if (not LstK_Init(lDeviceList, 0)) then
begin
WriteLn('Error in LstK_Init!');
Exit;
end;
try LstK_Count(lDeviceList, deviceCount);
if (deviceCount = 0) then
begin
WriteLn('No devices found!');
Exit; 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');
end.