Hi,
ich habe folgednes Problem. Ich brauche die Hardware Seriennummer des USB Sticks auf dem sich meine Software befindet.
Ich bekomme die Seriennummer heraus mit
kr = IOServiceGetMatchingServices(kIOMasterPortDefault, IOServiceNameMatching("AppleUSBEHCI"), &io_objects);
Dann über die io_objects iterieren mit
kr = IORegistryEntryCreateCFProperties(io_service, &service_properties, kCFAllocatorDefault, kNilOptions);
und dann über die services tierieren mit
kr = IORegistryEntryCreateCFProperties(child, &child_props, kCFAllocatorDefault, kNilOptions );
Also Ausgabe erhalte ich dann z.B. bei den services:
Alles anzeigen
und bei den properties dann
Alles anzeigen
Im Prinzip also die Infos die ich brauche. Aber wie bekomme ich jetzt heraus welches der devices das ist auf dem sich meine Software befindet. Wenn ich von diesen ausgelesenen Infos irgendwie auf den Pfad oder den Volume namen oder sowas rückschließen könnte dann wäre es ok.
Hat jemand eine Idee?
Gruß
Claus
ich habe folgednes Problem. Ich brauche die Hardware Seriennummer des USB Sticks auf dem sich meine Software befindet.
Ich bekomme die Seriennummer heraus mit
kr = IOServiceGetMatchingServices(kIOMasterPortDefault, IOServiceNameMatching("AppleUSBEHCI"), &io_objects);
Dann über die io_objects iterieren mit
kr = IORegistryEntryCreateCFProperties(io_service, &service_properties, kCFAllocatorDefault, kNilOptions);
und dann über die services tierieren mit
kr = IORegistryEntryCreateCFProperties(child, &child_props, kCFAllocatorDefault, kNilOptions );
Also Ausgabe erhalte ich dann z.B. bei den services:
Quellcode
- Service: {
- 64bit = 1;
- CFBundleIdentifier = "com.apple.driver.AppleUSBEHCI";
- "Card Type" = "Built-in";
- Errata = 71303168;
- IOClass = AppleUSBEHCI;
- IOMatchCategory = IODefaultMatchCategory;
- IOPCIClassMatch = 0x0c032000;
- IOPCIPauseCompatible = 1;
- IOPCITunnelCompatible = 1;
- IOPowerManagement = {
- ChildrenPowerState = 3;
- CurrentPowerState = 3;
- DevicePowerState = 3;
- DriverPowerState = 3;
- MaxPowerState = 4;
- };
- IOProbeScore = 0;
- IOProviderClass = IOPCIDevice;
- IOUserClientClass = IOUSBControllerUserClient;
- Statistics = {
- "Access Count" = 18;
- Bytes = 8920;
- "Bytes (New)" = 0;
- "Bytes (New)/ms" = 0;
- ControlBulkTxOut = 0;
- "Debug Flags" = 0;
- "Errors (New)" = 0;
- "Errors (Total)" = 0;
- Resets = 1;
- "Resets (New)" = 0;
- Timeouts = 0;
- "Timeouts (New)" = 0;
- "ms (Current)" = 71378014;
- "ms (since last read)" = 121265;
- };
- UpdatedSleepPropertiesExists = 1;
- }
und bei den properties dann
Quellcode
- Child props: {
- "Bus Power Available" = 50;
- "Device Speed" = 2;
- IOCFPlugInTypes = {
- "9dc7b780-9ec0-11d4-a54f-000a27052861" = "IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle";
- };
- IOGeneralInterest = "IOCommand is not serializable";
- IOUserClientClass = IOUSBDeviceUserClientV2;
- "Low Power Displayed" = 0;
- PortNum = 3;
- PortUsingExtraPowerForWake = 0;
- "Requested Power" = 1;
- "USB Address" = 6;
- "USB Product Name" = "STORE N GO";
- "USB Serial Number" = 140220100010F9;
- "USB Vendor Name" = Verbatim;
- bDeviceClass = 0;
- bDeviceProtocol = 0;
- bDeviceSubClass = 0;
- bMaxPacketSize0 = 64;
- bNumConfigurations = 1;
- bcdDevice = 256;
- iManufacturer = 1;
- iProduct = 2;
- iSerialNumber = 3;
- idProduct = 579;
- idVendor = 6309;
- kHasMSCInterface = 1;
- locationID = 487665664;
- sessionID = 70782030048014;
- uid = "USB:18A502430220100010F9";
- }
Im Prinzip also die Infos die ich brauche. Aber wie bekomme ich jetzt heraus welches der devices das ist auf dem sich meine Software befindet. Wenn ich von diesen ausgelesenen Infos irgendwie auf den Pfad oder den Volume namen oder sowas rückschließen könnte dann wäre es ok.
Hat jemand eine Idee?
Gruß
Claus
2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.
Pre-Kaffee-Posts sind mit Vorsicht zu geniessen
Pre-Kaffee-Posts sind mit Vorsicht zu geniessen