mac os x - usb hid - ¿cómo se agregó el dispositivo de recepción / se eliminaron las devoluciones de llamada? [cerrado]


0

Soy un principiante en programación en mac os x.

Estoy siguiendo este tutorial .

Y tengo este programa:

#include <stdio.h>
#include <IOKit/hid/IOHIDManager.h>
#include <IOKit/hid/IOHIDKeys.h>
#include <CoreFoundation/CoreFoundation.h>

static void Handle_DeviceMatchingCallback(void *inContext, IOReturn inResult, void *inSender, IOHIDDeviceRef inIOHIDDeviceRef)
{
    puts("YAY Handle_DeviceMatchingCallback");
}

static void Handle_DeviceRemovalCallback(void *inContext, IOReturn inResult, void *inSender, IOHIDDeviceRef inIOHIDDeviceRef)
{
    puts("YAY Handle_DeviceRemovalCallback");
}

int main()
{
    IOHIDManagerRef HIDManager = IOHIDManagerCreate(kCFAllocatorDefault, kIOHIDOptionsTypeNone);
    IOHIDManagerSetDeviceMatching(HIDManager, NULL);

    IOHIDManagerRegisterDeviceMatchingCallback(HIDManager, &Handle_DeviceMatchingCallback, NULL);
    IOHIDManagerRegisterDeviceRemovalCallback(HIDManager, &Handle_DeviceRemovalCallback, NULL);

    IOHIDManagerScheduleWithRunLoop(HIDManager, CFRunLoopGetMain(), kCFRunLoopDefaultMode);

    IOReturn IOReturn = IOHIDManagerOpen(HIDManager, kIOHIDOptionsTypeNone);
    if(IOReturn) puts("IOHIDManagerOpen failed.");

    while(1)
    {
        puts("sleeping...");
        sleep(1);
    }

    return 0;
}

Lo que estoy haciendo mal, porque no recibo las devoluciones de llamada cuando inserto o elimino cualquier dispositivo oculto en el puerto USB.


Creo que debería usar en RunLooplugar de whileen la función principal. use por ejemplo: CFRunLoopRun()para esto.
Mateusz Szlosek

sí, ese era el problema, gracias
user7864432

Respuestas:


0

IOHIDManagerScheduleWithRunLoopestá conectado a RunLoop, por lo que debe comenzar uno. whileLoop no es la solución aquí. Entonces, para obtener devoluciones de llamada, debe reemplazar el whilebucle con la CFRunLoopRun()llamada. Más información sobre RunLoops en la documentación .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.