Freigeben über


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. Es werden keine neuen Features zu UMDF 1 hinzugefügt, und es gibt eingeschränkte Unterstützung für UMDF 1 für neuere Versionen von Windows 10. 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

Nichts

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 ruft möglicherweise IWDFObject::AssignContext Methode für das Dateiobjekt auf, um dem Dateiobjekt Kontext zuzuordnen, und rufen Sie dann IWDFIoRequest::Complete auf, um die Anforderung abzuschließen.

Möglicherweise ist ein UMDF-Treiber erforderlich, um Registrierungsschlüssel oder Dateien zu öffnen, während er einen Client angibt, der die E/A-Anforderungen sendet. Von der Implementierung der OnCreateFile--Methode ruft der Treiber die IWDFIoRequest::Impersonate-Methode auf, um eine Sicherheitsidentitätswechselebene festzulegen und die IImpersonateCallback::OnImpersonate Methode festzulegen, in der der Treiber den Identitätswechsel verarbeitet. Um mithilfe der Anmeldeinformationen des Benutzers auf erforderliche 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 Identitätswechsel behandeln, finden Sie unter Umgang mit Identitätswechsel.

Beispiele

Dieses Beispiel basiert auf dem Beispiel "WpdWudfSampleDriver" 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- Fenster
Header- wudfddi.h (include Wudfddi.h)

Siehe auch