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.
Advertencia
UMDF 2 es la versión más reciente de UMDF y sustituye a UMDF 1. Todos los nuevos controladores UMDF deben escribirse mediante 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. Para obtener más información, consulta Introducción a UMDF.
Se llama al método OnCreateFile para controlar una solicitud de archivo abierta cuando una aplicación abre un dispositivo a través de la función CreateFile de Microsoft Win32 CreateFile.
Sintaxis
void OnCreateFile(
[in] IWDFIoQueue *pWdfQueue,
[in] IWDFIoRequest *pWDFRequest,
[in] IWDFFile *pWdfFileObject
);
Parámetros
[in] pWdfQueue
Puntero al interfaz de IWDFIoQueue para el formulario de objeto de cola de E/S al que llega la solicitud.
[in] pWDFRequest
Puntero a la interfaz de IWDFIoRequest para el objeto de solicitud de E/S para el dispositivo.
[in] pWdfFileObject
Puntero a la interfaz IWDFFile de para el objeto de archivo asociado al dispositivo. Esta información se proporciona para mayor comodidad porque el controlador puede llamar al método IWDFIoRequest::GetCreateParameters para obtener el objeto de archivo.
Valor devuelto
Ninguno
Observaciones
Si el controlador implementa la interfaz IQueueCallbackCreate, el marco llama al método OnCreateFile cuando una aplicación abre un dispositivo a través de la función CreateFile CreateFile para realizar una operación de E/S, como leer o escribir en un archivo.
Un controlador registra la interfaz IQueueCallbackCreate cuando el controlador llama al método IWDFDevice::CreateIoQueue para crear una cola de E/S o para configurar la cola de E/S predeterminada.
Un método onCreateFile típico podría llamar a método IWDFObject::AssignContext en el objeto de archivo para asociar el contexto con el objeto de archivo y, a continuación, llamar a IWDFIoRequest::Complete para completar la solicitud.
Es posible que se requiera un controlador UMDF para abrir las claves del Registro o los archivos mientras suplanta a un cliente que envía las solicitudes de E/S. Desde su implementación del método OnCreateFile, el controlador llama al método IWDFIoRequest::Impersonate para establecer un nivel de suplantación de seguridad y para establecer el IImpersonateCallback::OnImpersonate método en el que el controlador controla la suplantación. Para acceder a los recursos necesarios mediante las credenciales del usuario, el marco llama al método OnImpersonate del controlador. En el caso de las operaciones que no sean aquellas que requieran suplantación, el marco llama a los métodos de controlador que se ejecutan en la cuenta de controlador predeterminada. Para obtener más información sobre cómo los controladores UMDF y UMDF controlan la suplantación, consulte Control de suplantación.
Ejemplos
Este ejemplo se basa en el ejemplo wpdWudfSampleDriver y procede del archivo Queue.cpp.
STDMETHODIMP_ (void) CQueue::OnCreateFile(
/*[in]*/ IWDFIoQueue* pQueue,
/*[in]*/ IWDFIoRequest* pRequest,
/*[in]*/ IWDFFile* pFileObject
)
{
HRESULT hr = S_OK;
ClientContext* pClientContext = new ClientContext ();
// . . . Code omitted.
if(pClientContext != NULL) {
hr = pFileObject->AssignContext (this, (void*)pClientContext);
// Release the client context if we cannot set it
if(FAILED(hr)) {
pClientContext->Release();
pClientContext = NULL;
}
}
else {
hr = E_OUTOFMEMORY;
}
pRequest->Complete(hr);
}
Requisitos
Requisito | Valor |
---|---|
de la plataforma de destino de | Windows |
encabezado de | wudfddi.h (incluya Wudfddi.h) |
Consulte también
- IImpersonateCallback::OnImpersonate
- IQueueCallbackCrear
- IWDFDevice::CreateIoQueue
- IWDFFile
- IWDFIoQueue
- IWDFIoRequest
- IWDFIoRequest::GetCreateParameters
- IWDFIoRequest::Impersonate