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