IWDFUsbTargetDevice::FormatRequestForControlTransfer-Methode (wudfusb.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 in neueren 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 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 hat ein E/A-Anforderungsobjekt erfolgreich formatiert. |
|
Bei FormatRequestForControlTransfer ist ein Zuordnungsfehler aufgetreten. |
|
Der Speicheroffset, den der TransferOffset-Parameter angegeben hat, war ungültig. |
Hinweise
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 beispiel wdf_osrfx2_lab 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 |
UMDF-Mindestversion | 1.5 |
Kopfzeile | wudfusb.h (schließen Sie Wudfusb.h ein) |
DLL | WUDFx.dll |