Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
[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 FormatRequestForControlTransfer Methode formatiert ein E/A-Anforderungsobjekt für eine USB-Steuerungsübertragung.
Syntax
HRESULT FormatRequestForControlTransfer(
[in] IWDFIoRequest *pRequest,
[in] PWINUSB_SETUP_PACKET SetupPacket,
[in, optional] IWDFMemory *pMemory,
[in, optional] PWDFMEMORY_OFFSET TransferOffset
);
Parameter
[in] pRequest
Ein Zeiger auf die IWDFIoRequest Schnittstelle für das zu formatierende Anforderungsobjekt.
[in] SetupPacket
Ein Zeiger auf eine WINUSB_SETUP_PACKET für die Steuerungsübertragung.
[in, optional] pMemory
Ein Zeiger auf die IWDFMemory Schnittstelle, die für den Zugriff auf den Puffer verwendet wird, der für die Steuerungsübertragung verwendet wird. Dieser Parameter ist optional.
[in, optional] TransferOffset
Ein Zeiger auf eine WDFMEMORY_OFFSET Struktur, die den Speicheroffset beschreibt, der für die Steuerungsübertragung verwendet wird. Dieser Parameter ist optional.
Rückgabewert
FormatRequestForControlTransfer gibt einen der folgenden Werte zurück:
Rückgabecode | Beschreibung |
---|---|
|
FormatRequestForControlTransfer erfolgreich ein E/A-Anforderungsobjekt formatiert. |
|
FormatRequestForControlTransfer ein Zuordnungsfehler aufgetreten. |
|
Der speicherversatz, den der angegebene TransferOffset- Parameter ungültig war. |
Bemerkungen
Nachdem ein UMDF-Treiber FormatRequestForControlTransfer aufgerufen hat, um eine E/A-Anforderung für einen Steuerungsübertragungsvorgang zu formatieren, kann das Framework die Anforderung anschließend an das E/A-Ziel senden.
Beispiele
Das folgende Codebeispiel stammt aus dem wdf_osrfx2_lab-Beispiel im WDK.
WINUSB_CONTROL_SETUP_PACKET setupPacket;
ULONG bytesTransferred;
HRESULT hr = S_OK;
//
// Setup the control packet.
//
WINUSB_CONTROL_SETUP_PACKET_INIT( &setupPacket,
BmRequestHostToDevice,
BmRequestToDevice,
USBFX2LK_SET_BARGRAPH_DISPLAY,
0,
0 );
//
// Issue the request to WinUsb.
//
hr = SendControlTransferSynchronously(
&(setupPacket.WinUsb),
(PUCHAR) BarGraphState,
sizeof(BAR_GRAPH_STATE),
&bytesTransferred
);
...
HRESULT
CMyDevice::SendControlTransferSynchronously(
_In_ PWINUSB_SETUP_PACKET SetupPacket,
_Inout_updates_(BufferLength) PBYTE Buffer,
_In_ ULONG BufferLength,
_Out_ PULONG LengthTransferred
)
{
HRESULT hr = S_OK;
IWDFIoRequest *pWdfRequest = NULL;
IWDFDriver * FxDriver = NULL;
IWDFMemory * FxMemory = NULL;
IWDFRequestCompletionParams * FxComplParams = NULL;
IWDFUsbRequestCompletionParams * FxUsbComplParams = NULL;
*LengthTransferred = 0;
hr = m_FxDevice->CreateRequest( NULL, //pCallbackInterface
NULL, //pParentObject
&pWdfRequest);
if (SUCCEEDED(hr))
{
m_FxDevice->GetDriver(&FxDriver);
hr = FxDriver->CreatePreallocatedWdfMemory( Buffer,
BufferLength,
NULL, //pCallbackInterface
pWdfRequest, //pParetObject
&FxMemory );
}
if (SUCCEEDED(hr))
{
hr = m_pIUsbTargetDevice->FormatRequestForControlTransfer( pWdfRequest,
SetupPacket,
FxMemory,
NULL); //TransferOffset
}
Anforderungen
Anforderung | Wert |
---|---|
Ende des Supports | In UMDF 2.0 und höher nicht verfügbar. |
Zielplattform- | Desktop |
Mindest-UMDF-Version | 1.5 |
Header- | wudfusb.h (include Wudfusb.h) |
DLL- | WUDFx.dll |