Método IQueueCallbackCreate::OnCreateFile (wudfddi.h)
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. Para obtener más información, consulta Introducción con 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.
Sintaxis
void OnCreateFile(
[in] IWDFIoQueue *pWdfQueue,
[in] IWDFIoRequest *pWDFRequest,
[in] IWDFFile *pWdfFileObject
);
Parámetros
[in] pWdfQueue
Puntero a la interfaz IWDFIoQueue del formulario de objeto de cola de E/S que llega la solicitud.
[in] pWDFRequest
Puntero a la interfaz IWDFIoRequest para el objeto de solicitud de E/S para el dispositivo.
[in] pWdfFileObject
Puntero a la interfaz IWDFFile del objeto de archivo asociado al dispositivo. Esta información se proporciona por comodidad porque el controlador puede llamar al método IWDFIoRequest::GetCreateParameters para obtener el objeto de archivo.
Valor devuelto
None
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 de Win32 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 al 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 claves del Registro o 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 método IImpersonateCallback::OnImpersonate 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 distintas de las que requieren 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 | Value |
---|---|
Plataforma de destino | Windows |
Encabezado | wudfddi.h (incluya Wudfddi.h) |