Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las interfaces de dispositivo están disponibles tanto para los componentes en modo kernel como para las aplicaciones en modo de usuario. El código en modo de usuario puede usar las funciones de CfgMgr32 (por ejemplo, CM_Get_Device_Interface_List) o las funciones SetupDiXxx (consulte las funciones de interfaz de dispositivo de SetupDi) para averiguar qué interfaces de dispositivo registradas y habilitadas hay. Después, la aplicación en modo de usuario puede usar API de E/S, como CreateFile, para obtener un identificador para el dispositivo con el fin de enviarle E/S. Para que se le notifique la habilitación y deshabilitación de las interfaces de dispositivo y cómo reaccionar ante esas acciones, consulte Registro para la notificación de la llegada de la interfaz de dispositivo y la eliminación de dispositivos.
Para que un componente en modo kernel pueda usar un dispositivo o objeto de archivo específico, debe hacer lo siguiente:
Determine si la clase de interfaz de dispositivo necesaria está registrada y habilitada.
Un controlador puede registrarse con el administrador de PnP para recibir una notificación cuando se habilita o deshabilita una instancia de una interfaz de dispositivo. Para realizar el registro, el componente llama a IoRegisterPlugPlayNotification. Esta rutina almacena la dirección de una devolución de llamada facilitada por el controlador, que se invoca cada vez que se habilita o deshabilita una instancia de interfaz de dispositivo, en una clase de dispositivo especificada. Las rutinas de devolución de llamada reciben la estructura DEVICE_INTERFACE_CHANGE_NOTIFICATION , que contiene una cadena Unicode que representa el vínculo simbólico de la instancia de interfaz. Consulte Uso de la notificación de cambio de interfaz de dispositivo PnP para obtener más información.
Un controlador u otro componente en modo kernel también puede llamar a IoGetDeviceInterfaces para obtener una lista de todas las instancias de interfaz de dispositivo registradas y habilitadas para una clase de interfaz de dispositivo específica. La lista devuelta contiene punteros a las cadenas de vínculo simbólico Unicode que identifican las instancias de la interfaz de dispositivo.
Obtiene un puntero a un objeto de dispositivo o de archivo correspondiente a una instancia de la interfaz.
Para acceder a un objeto de dispositivo específico, el controlador debe llamar a IoGetDeviceObjectPointer y pasar la cadena Unicode para la interfaz necesaria en el parámetro ObjectName . Para obtener acceso a un objeto de archivo, el controlador debe llamar a InitializeObjectAttributes, pasando la cadena Unicode en el parámetro ObjectName, y después pasar la estructura de atributos, una vez inicializada correctamente, en una llamada a ZwCreateFile.