You need to declare it as IOUSBDeviceInterface187 (or later) because the 
structure doesn’t have that function in it until that version. 

> On 16 Dec 2014, at 07:21, Carl Hoefs <[email protected]> wrote:
> 
> I’m doing the following:
> 
>    IOUSBDeviceInterface **deviceInterface;
> 
> and then
> 
>    HRESULT result;
>    kern_return_t kret;
>    IOCFPlugInInterface **plugInInterface = NULL;
> 
>    kret = IOCreatePlugInInterfaceForService(usbDevice, 
>              kIOUSBDeviceInterfaceID187, 
>              kIOCFPlugInInterfaceID,
>              &plugInInterface, &score);
> 
>    result = (*plugInInterface)->QueryInterface(plugInInterface,
>              CFUUIDGetUUIDBytes(kIOUSBDeviceInterfaceID187),
>              (LPVOID*) &deviceInterface);
> 
> Do I need to declare the IOUSBDeviceInterface differently, or am I out in 
> left field?
> -Carl
> 
> 
> On Dec 15, 2014, at 3:44 PM, Fernando Urbina <[email protected]> wrote:
> 
>> Are you creating the appropriate IOUSBDeviceInterface?  You need to create 
>> one that matches the version where USBDeviceReEnumerate was intro’d: 
>> 
>> kIOUSBDeviceInterfaceID187
>> 
>> 
>> 
>> 
>>> On Dec 15, 2014, at 3:37 PM, Carl Hoefs <[email protected]> 
>>> wrote:
>>> 
>>> Thanks for the pointer. Yes, this is from within a user-mode OS X app. I 
>>> can do everything successfully but call the USBDeviceReEnumerate() function.
>>> 
>>> In a nutshell, I iterate through IOIteratorNext():
>>> If there is a match of vid/pid:
>>> invoke IORegistryEntryGetName()
>>> invoke IORegistryEntryGetPath()
>>> invoke IORegistryEntryCreateCFProperties()
>>> invoke IOCreatePlugInInterfaceForService()
>>> invoke QueryInterface() to get the device interface
>>> (all of the above works successfully)
>>> and then try to invoke USBDeviceReEnumerate(), which seems to exist in the 
>>> Twilight Zone.
>>> 
>>> But Xcode doesn’t resolve the function. I can manually place a function 
>>> prototype in my code to get it to build, but at runtime, when it invokes 
>>> USBDeviceReEnumerate(), it crashes with a EXC_BAD_ACCESS due to the 
>>> function’s unresolved address being 0x00000000. This happens both on 10.9 
>>> and 10.10 systems. 
>>> 
>>> If there were sample code that actually invoked USBDeviceReEnumerate(), 
>>> that would be great. Somehow it appears to exist, but just beyond my reach…
>>> 
>>> -Carl
>>> 
>>> 
>>> On Dec 15, 2014, at 3:10 PM, Fernando Urbina <[email protected]> wrote:
>>> 
>>>> You need to take a look at some of the sample code in order to understand 
>>>> how to use IOUSBLib.h.  This is one of my favorite sample code snippets:
>>>> 
>>>> https://developer.apple.com/library/mac/samplecode/USBPrivateDataSample/Introduction/Intro.html
>>>> 
>>>> 
>>>> 
>>>> Woof,
>>>> 
>>>> Nano Urbina
>>>> Build Slave
>>>> Razz Software
>>>> http://www.razzsoftware.com        
>>>> 
>>> 
>> 
> 
> 
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Usb mailing list      ([email protected])
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/usb/rols%40rols.org
> 
> This email sent to [email protected]


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Usb mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/usb/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to