IWDFIoRequest::Send-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 Send-Methode sendet eine Anforderung an das angegebene E/A-Ziel.
Syntax
HRESULT Send(
[in] IWDFIoTarget *pIoTarget,
[in] ULONG Flags,
[in] LONGLONG Timeout
);
Parameter
[in] pIoTarget
Ein Zeiger auf die IWDFIoTarget Schnittstelle für das I/O-Zielobjekt, das normalerweise einen niedrigeren Treiber im Stapel darstellt.
[in] Flags
Ein gültiger bitweiser OR von WDF_REQUEST_SEND_OPTIONS_FLAGS-typed flags.
[in] Timeout
Die Zeitspanne in Systemzeiteinheiten (100-Nanosekunden-Intervalle), die verstrichen werden können, bevor das Framework die E/A-Anforderung automatisch abbricht.
- Wenn der Wert negativ ist, ist die Ablaufzeit relativ zur aktuellen Systemzeit.
- Wenn der Wert positiv ist, wird die Ablaufzeit als absolute Zeit angegeben (relativ zum 1. Januar 1601).
- Wenn der Wert null ist, wird das Framework die Anforderung nicht timeout.
Rückgabewert
Send gibt S_OK zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt diese Methode einen der Fehlercodes zurück, die in Winerror.h definiert sind.
Beachten Sie, dass der Rückgabewert den Status des Send Methode versucht, die E/A-Anforderung an das E/A-Ziel zu senden. Der Rückgabewert stellt nicht den Abschlussstatus der E/A-Anforderung dar. Ihr Treiber muss die IWDFRequestCompletionParams Schnittstelle verwenden, um den Abschlussstatus der E/A-Anforderung abzurufen.
Bemerkungen
Wenn Send einen Fehlercode zurückgibt, sollte der Treiber die Anforderung in der Regel mit dem Fehlercode abschließen, der zurückgegeben, wie der Code im folgenden Beispielabschnitt zeigt.
Wenn Ihr Treiber das WDF_REQUEST_SEND_OPTION_SYNCHRONOUS Flag im parameter Flags festlegt und wenn Senden die E/A-Anforderung erfolgreich an das E/A-Ziel sendet, Senden zurück, nachdem das E/A-Ziel die E/A-Anforderung abgeschlossen hat. In diesem Fall gibt Send S_OK zurück, und der Treiber kann sofort IWDFIoRequest::GetCompletionParams- aufrufen, um die IWDFRequestCompletionParams Schnittstelle abzurufen. Das Codebeispiel bei IWDFIoRequest::GetCompletionParams zeigt einen Aufruf von Send mit dem WDF_REQUEST_SEND_OPTION_SYNCHRONOUS Flagsatz an.
Wenn Ihr Treiber das WDF_REQUEST_SEND_OPTION_SYNCHRONOUS-Kennzeichen nicht festgelegt hat und wenn Senden die E/A-Anforderung erfolgreich an das E/A-Ziel sendet, gibt Senden S_OK zurück, während das E/A-Ziel die E/A-Anforderung asynchron verarbeitet. In diesem Fall stellt der Treiber eine IRequestCallbackRequestCompletion::OnCompletion Rückruffunktion bereit, die das Framework aufruft, nachdem das E/A-Ziel die E/A-Anforderung abgeschlossen hat. In der Regel ruft die OnCompletion Rückruffunktion IWDFIoRequest::GetCompletionParamsauf. Das Codebeispiel im folgenden Beispielabschnitt zeigt einen Aufruf von Send ohne das WDF_REQUEST_SEND_OPTION_SYNCHRONOUS Flag.
Ein Treiber kann Senden von nicht aufrufen, um eine E/A-Anforderung an eine USB-Pipe zu senden, wenn der Treiber einen fortlaufenden Lesegerät für die Pipe konfiguriert hat.
Beispiele
Im folgenden Codebeispiel wird eine Anforderung an das E/A-Ziel eines Geräts weitergeleitet.
IWDFIoRequest* FxRequest;
//
// Set the completion callback.
// When the lower request is completed, the driver is
// notified through the completion callback.
//
IRequestCallbackRequestCompletion *completionCallback =
QueryIRequestCallbackRequestCompletion();
FxRequest->SetCompletionCallback(
completionCallback,
NULL //pContext
);
completionCallback->Release();
//
// Format the I/O request.
FxRequest->FormatUsingCurrentType( );
//
// Send down the request.
//
HRESULT hrSend = S_OK;
hrSend = FxRequest->Send(
m_FxIoTarget,
0, // Asynchronous
0 // No time-out
);
if (S_OK != hrSend) {
//
// If the send failed, the driver must complete the
// request with the failure.
FxRequest->CompleteWithInformation(hrSend, 0);
}
Anforderungen
Anforderung | Wert |
---|---|
Ende des Supports | In UMDF 2.0 und höher nicht verfügbar. |
Zielplattform- | Desktop |
Mindest-UMDF-Version | 1.5 |
Header- | wudfddi.h (include Wudfddi.h) |
DLL- | WUDFx.dll |
Siehe auch
IRequestCallbackRequestCompletion::OnCompletion