Compartir a través de


Obtención de datos preparados

En este artículo se describe cómo las aplicaciones en modo de usuario y los controladores en modo kernel obtienen los datos preparados de una colección HID, que es una estructura opaca que describe los informes HID de una colección.

Aplicación en modo de usuario

Una aplicación en modo de usuario debe obtener los datos preparados de una colección antes de llamar a cualquiera de las rutinas de soporte de HIDClass que requieren los datos preparados. Una aplicación debe conservar el acceso a los datos preparados de una colección siempre que tenga un archivo abierto en el dispositivo.

Después de abrir un archivo en una colección HID, una aplicación llama a HidD_GetPreparsedData para devolver los datos preparados de una colección en un búfer asignado de rutina.

Las aplicaciones deben llamar a HidD_FreePreparsedData cuando la aplicación ya no requiera acceso a una colección.

Controlador en modo kernel

Después de que un controlador en modo kernel abra una colección HID, el controlador obtiene los datos preparados de una colección de la siguiente manera:

  • Obtiene la longitud de los datos preparados de la colección.

  • Obtiene los datos preparados de la colección.

Para determinar la longitud de los datos preparados, el controlador usa una solicitud de IOCTL_HID_GET_COLLECTION_INFORMATION . Esta solicitud devuelve una estructura HID_COLLECTION_INFORMATION. El miembro DescriptorSize de esta estructura especifica el tamaño, en bytes, de los datos preparados de una colección. El controlador debe asignar un búfer del grupo no paginado de al menos este tamaño para contener los datos preparados.

Después de asignar el búfer para los datos preparados, el controlador usa una solicitud de IOCTL_HID_GET_COLLECTION_DESCRIPTOR para obtener los datos preparados.

Después de obtener los datos preparados, el controlador puede usarlo con las rutinas de soporte de **HidP_**Xxx HID para obtener información sobre las funcionalidades de la colección HID y extraer datos de control de informes HID.