Compartir a través de


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 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