Condividi tramite


Metodo IQueueCallbackCreate::OnCreateFile (wudfddi.h)

Avvertimento

UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Non vengono aggiunte nuove funzionalità a UMDF 1 ed è disponibile un supporto limitato per UMDF 1 nelle versioni più recenti di Windows 10. I driver di Windows universali devono usare UMDF 2. Per altre informazioni, vedere Introduzione a UMDF.

Il metodo OnCreateFile viene chiamato per gestire una richiesta di file aperta quando un'applicazione apre un dispositivo tramite la funzione CreateFile di Microsoft Win32.

Sintassi

void OnCreateFile(
  [in] IWDFIoQueue   *pWdfQueue,
  [in] IWDFIoRequest *pWDFRequest,
  [in] IWDFFile      *pWdfFileObject
);

Parametri

[in] pWdfQueue

Puntatore al interfaccia IWDFIoQueue per il modulo dell'oggetto coda di I/O che arriva la richiesta.

[in] pWDFRequest

Puntatore all'interfaccia di IWDFIoRequest per l'oggetto richiesta di I/O per il dispositivo.

[in] pWdfFileObject

Puntatore all'interfaccia IWDFFile per l'oggetto file associato al dispositivo. Queste informazioni vengono fornite per praticità perché il driver può chiamare il metodo IWDFIoRequest::GetCreateParameters per ottenere l'oggetto file.

Valore restituito

Nessuno

Osservazioni

Se il driver implementa l'interfaccia IQueueCallbackCreate, il framework chiama il metodo onCreateFile quando un'applicazione apre un dispositivo tramite la funzione CreateFile Win32 per eseguire un'operazione di I/O, ad esempio la lettura o la scrittura in un file.

Un driver registra l'interfaccia IQueueCallbackCreate quando il driver chiama il metodo IWDFDevice::CreateIoQueue per creare una coda di I/O o per configurare la coda di I/O predefinita.

Un metodo OnCreateFile tipico potrebbe chiamare metodo IWDFObject::AssignContext sull'oggetto file per associare il contesto all'oggetto file e quindi chiamare IWDFIoRequest::Complete per completare la richiesta.

Un driver UMDF potrebbe essere necessario per aprire chiavi o file del Registro di sistema mentre rappresenta un client che invia le richieste di I/O. Dall'implementazione del metodo OnCreateFile, il driver chiama il metodo IWDFIoRequest::Impersonate per impostare un livello di rappresentazione di sicurezza e per impostare il metodo IImpersonateCallback::OnImpersonate in cui il driver gestisce la rappresentazione. Per accedere alle risorse necessarie usando le credenziali dell'utente, il framework chiama il metodo OnImpersonate del driver. Per qualsiasi operazione diversa da quelle che richiedono la rappresentazione, il framework chiama i metodi driver eseguiti con l'account driver predefinito. Per altre informazioni su come i driver UMDF e UMDF gestiscono la rappresentazione, vedere Gestione della rappresentazione.

Esempi

Questo esempio si basa sull'esempio WpdWudfSampleDriver e proviene dal file 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);
}

Fabbisogno

Requisito Valore
piattaforma di destinazione Finestre
intestazione wudfddi.h (include Wudfddi.h)

Vedere anche