IQueueCallbackCreate::OnCreateFile-Methode (wudfddi.h)

Warnung

UMDF 2 ist die neueste Version von UMDF und ersetzt UMDF 1. Alle neuen UMDF-Treiber sollten mit UMDF 2 geschrieben werden. UMDF 1 werden keine neuen Features hinzugefügt, und die Unterstützung für UMDF 1 für neuere Versionen von Windows 10 ist eingeschränkt. Universelle Windows-Treiber müssen UMDF 2 verwenden. Weitere Informationen finden Sie unter Erste Schritte mit UMDF.

Die OnCreateFile-Methode wird aufgerufen, um eine offene Dateianforderung zu verarbeiten, wenn eine Anwendung ein Gerät über die Microsoft Win32 CreateFile-Funktion öffnet.

Syntax

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

Parameter

[in] pWdfQueue

Ein Zeiger auf die IWDFIoQueue-Schnittstelle für das E/A-Warteschlangenobjektformular, das die Anforderung eingeht.

[in] pWDFRequest

Ein Zeiger auf die IWDFIoRequest-Schnittstelle für das E/A-Anforderungsobjekt für das Gerät.

[in] pWdfFileObject

Ein Zeiger auf die IWDFFile-Schnittstelle für das Dateiobjekt, das dem Gerät zugeordnet ist. Diese Informationen werden zur Vereinfachung bereitgestellt, da der Treiber die IWDFIoRequest::GetCreateParameters-Methode aufrufen kann, um das Dateiobjekt abzurufen.

Rückgabewert

Keine

Bemerkungen

Wenn der Treiber die IQueueCallbackCreate-Schnittstelle implementiert, ruft das Framework die OnCreateFile-Methode auf, wenn eine Anwendung ein Gerät über die Win32 CreateFile-Funktion öffnet, um einen E/A-Vorgang auszuführen, z. B. lesen oder in eine Datei schreiben.

Ein Treiber registriert die IQueueCallbackCreate-Schnittstelle , wenn der Treiber die IWDFDevice::CreateIoQueue-Methode aufruft, um eine E/A-Warteschlange zu erstellen oder die Standard-E/A-Warteschlange zu konfigurieren.

Eine typische OnCreateFile-Methode kann die IWDFObject::AssignContext-Methode für das Dateiobjekt aufrufen, um den Kontext dem Dateiobjekt zuzuordnen, und dann IWDFIoRequest::Complete aufrufen, um die Anforderung abzuschließen.

Möglicherweise ist ein UMDF-Treiber erforderlich, um Registrierungsschlüssel oder Dateien zu öffnen, während er die Identität eines Clients angibt, der die E/A-Anforderungen sendet. Aus der Implementierung der OnCreateFile-Methode ruft der Treiber die IWDFIoRequest::Impersonate-Methode auf, um eine Sicherheitsidentitätsstufe festzulegen und die IImpersonateCallback::OnImpersonate-Methode festzulegen, in der der Treiber den Identitätswechsel verarbeitet. Um mithilfe der Anmeldeinformationen des Benutzers auf die erforderlichen Ressourcen zuzugreifen, ruft das Framework die OnImpersonate-Methode des Treibers auf. Für alle Vorgänge, die einen Identitätswechsel erfordern, ruft das Framework Treibermethoden auf, die unter dem Standardtreiberkonto ausgeführt werden. Weitere Informationen dazu, wie UMDF- und UMDF-Treiber den Identitätswechsel behandeln, finden Sie unter Behandeln des Identitätswechsels.

Beispiele

Dieses Beispiel basiert auf dem WpdWudfSampleDriver-Beispiel und stammt aus der Queue.cpp-Datei.

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);
}

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile wudfddi.h (include Wudfddi.h)

Weitere Informationen