C/Visual C - Objetos y sockets IrDA

 
Vista:

Objetos y sockets IrDA

Publicado por Ignacio Molina (1 intervención) el 16/11/2005 09:13:52
Hola a todos,
Tenía una pregunta relacionada con las librerías de infrarrojos (IrDA) de Windows. Por introducir el tema, en Win2K y XP se utiliza los Winsocks que tienen una dll especial para IrDA (AF_irda.h), a la que se le hacen llamadas para descubrir los dispositivos y crear los sockets.
Por cuestión de diseño (es decir, me lo han impuesto), tengo que usar el MFC de VC++ (con un sistema WinXP), y tengo algunas dudas. Simplemente necesitaría poder crear un objeto global donde guardar el descubrimiento IrDA.
Os explico un poco más en detalle. Para hacer un descubrimiento, primero se define el objeto PDEVICELIST según las especificaciones de windows:

BYTE DevListBuff[sizeof(DEVICELIST) - sizeof(IRDA_DEVICE_INFO) + (sizeof(IRDA_DEVICE_INFO) * DEVICE_LIST_LEN)];
int DevListLen = sizeof(DevListBuff);
PDEVICELIST pDevList = (PDEVICELIST) &DevListBuff;

A continuación se abre el socket del tipo AF_IRDA (lo he llamado xSock), y se ejecuta la instrucción:

getsockopt(xSock, SOL_IRLMP, IRLMP_ENUMDEVICES, (CHAR *) pDevList, &DevListLen)

guardándose en pDevList toda la estructura.
¿alguien sabría cómo hacer un objeto global de esta estructura para que no dependa del método en el que hemos hecho el descubrimiento? Este objeto contiene el número de dispositivos, un array de caracteres con los dispositivos, y las direcciones IrDA (octetos) de cada uno, por lo que lo necesito para el resto de funcionalidades del programa.
A su vez, si abro un socket en el método que hago el descubrimiento (pulsando click en un Button), ¿cómo puede mantener ese socket durante toda la ejecución del programa, para que pueda hacerle más llamadas con otros métodos?
Muchas gracias por vuestra ayuda, y perdón por la longitud del mensaje ;)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder