Framework File (objeto)
Advertencia
UMDF 2 es la versión más reciente de UMDF y sustituye a UMDF 1. Todos los controladores UMDF nuevos deben escribirse con UMDF 2. No se agregan nuevas características a UMDF 1 y hay compatibilidad limitada con UMDF 1 en versiones más recientes de Windows 10. Los controladores universales de Windows deben usar UMDF 2.
Los ejemplos de UMDF 1 archivados se pueden encontrar en la Windows 11, versión 22H2 : actualización de ejemplos de controladores de mayo de 2022.
Para obtener más información, consulta Introducción con UMDF.
El objeto de archivo de marco se expone a los controladores mediante la interfaz IWDFFile . Es la representación del marco del dispositivo abierto. Cuando una aplicación abre el dispositivo a través de la función CreateFile de Microsoft Win32, el marco crea un objeto de archivo para representar la instancia de dispositivo abierta. Por lo tanto, el objeto de archivo de marco es conceptualmente equivalente al identificador win32 que se devuelve desde la llamada de la aplicación a CreateFile. El marco de trabajo puede crear varios objetos de archivo asociados a un único dispositivo. Cada objeto de archivo se crea para cada llamada correcta a CreateFile. Todas las operaciones de E/S, como las lecturas y escrituras, se destinan a una instancia de objeto de archivo específica.
Nota Todas las solicitudes que se pasan a los controladores UMDF están asociadas a objetos de archivo. Sin embargo, las solicitudes que se pasan a los controladores WDM y KMDF a veces no están asociadas a objetos de archivo.
Un controlador UMDF puede llamar al método IWDFIoRequest::GetFileObject para obtener el objeto de archivo asociado a una solicitud.
Cuando el controlador llama a GetFileObject, el marco incrementa el recuento de referencias en la interfaz. El controlador es responsable de liberar la referencia cuando termine con el puntero de interfaz. Para ello, use un puntero inteligente que disminuya automáticamente el recuento de referencias cuando el objeto salga del contexto o llame a Release en la interfaz cuando termine con él. Para obtener un ejemplo de código que muestra cómo usar un puntero inteligente, vea GetFileObject.