Thanks again Phil. I can now fetch a load of properties from the registry, but unfortunately some of the data I need does not appear to be in the registry, so I guess it's time to search for DeviceIOControl information.
Cheers, Tom Google hasn't found me any info on how to use On Fri, 22 Jul 2005 11:55, Phil Middlemiss wrote: > The arguments for the DeviceIOControl call will be specific to the > device I think (at least the were with the Garmin devices), so it is > probably a case of looking for an SDK for the hardware. But I don't > think you need to necessarily call DeviceIOControl to get the > information, you could probably get the information out of the registry > using > SetupDiGetDeviceRegistryProperty - one of the routines I use is below: > > function TGarminUSBDevice.GetRegistryPropertyString(PnPHandle: HDEVINFO; > const DevData: TSPDevInfoData; Prop: DWORD): string; > var > bytesreturned: DWORD; > regdatatype: DWORD; > buffer: array [0..256] of Char; > adevdata : TSPDevInfoData; > begin > bytesreturned := 0; > regdatatype := 0; > buffer[0] := #0; > adevdata := DevData; > SetupDiGetDeviceRegistryProperty(PnPHandle, adevdata, Prop, > @regdatatype, PBYTE(@buffer[0]), SizeOf(buffer), @bytesreturned); > result := buffer; > end; > > which I then call like this: > // primary information > FCapabilities := GetRegistryPropertyDWord (APnPHandle, > ADevData, SPDRP_CAPABILITIES); > FClassDescr := GetRegistryPropertyString (APnPHandle, > ADevData, SPDRP_CLASS); > FClassGUID := GetRegistryPropertyString (APnPHandle, > ADevData, SPDRP_CLASSGUID); > FCompatibleIDs := GetRegistryPropertyStringList(APnPHandle, > ADevData, SPDRP_COMPATIBLEIDS); > FConfigFlags := GetRegistryPropertyDWord (APnPHandle, > ADevData, SPDRP_CONFIGFLAGS); > FDeviceDescr := GetRegistryPropertyString (APnPHandle, > ADevData, SPDRP_DEVICEDESC); > FDriver := GetRegistryPropertyString (APnPHandle, > ADevData, SPDRP_DRIVER); > FFriendlyName := GetRegistryPropertyString (APnPHandle, > ADevData, SPDRP_FRIENDLYNAME); > FHardwareID := GetRegistryPropertyStringList(APnPHandle, > ADevData, SPDRP_HARDWAREID); > FLowerFilters := GetRegistryPropertyStringList(APnPHandle, > ADevData, SPDRP_LOWERFILTERS); > FMfg := GetRegistryPropertyString (APnPHandle, > ADevData, SPDRP_MFG); > FUpperFilters := GetRegistryPropertyStringList(APnPHandle, > ADevData, SPDRP_UPPERFILTERS); > FService := GetRegistryPropertyString (APnPHandle, > ADevData, SPDRP_SERVICE); > > // secondary information not all likely to exist for a HID device > FAddress := GetRegistryPropertyString (APnPHandle, > ADevData, SPDRP_ADDRESS); > FBusNumber := GetRegistryPropertyDWord (APnPHandle, > ADevData, SPDRP_BUSNUMBER); > FBusType := GetRegistryPropertyString (APnPHandle, > ADevData, SPDRP_BUSTYPEGUID); > FCharacteristics := GetRegistryPropertyString (APnPHandle, > ADevData, SPDRP_CHARACTERISTICS); > FDevType := GetRegistryPropertyDWord (APnPHandle, > ADevData, SPDRP_DEVTYPE); > FEnumeratorName := GetRegistryPropertyString (APnPHandle, > ADevData, SPDRP_ENUMERATOR_NAME); > FExclusive := GetRegistryPropertyDWord (APnPHandle, > ADevData, SPDRP_EXCLUSIVE); > FLegacyBusType := GetRegistryPropertyDWord (APnPHandle, > ADevData, SPDRP_LEGACYBUSTYPE); > FLocationInfo := GetRegistryPropertyString (APnPHandle, > ADevData, SPDRP_LOCATION_INFORMATION); > FPhysDevObjName := GetRegistryPropertyString (APnPHandle, > ADevData, SPDRP_PHYSICAL_DEVICE_OBJECT_NAME); > FSecuritySDS := GetRegistryPropertyString (APnPHandle, > ADevData, SPDRP_SECURITY_SDS); > FUINumber := GetRegistryPropertyDWord (APnPHandle, > ADevData, SPDRP_UI_NUMBER); > FUINumberFormat := GetRegistryPropertyString (APnPHandle, > ADevData, SPDRP_UI_NUMBER_DESC_FORMAT); > > I have similar versions for DWord and StringList aswell. > > Phil. > _______________________________________________ Delphi mailing list [email protected] http://ns3.123.co.nz/mailman/listinfo/delphi
