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