IWDFUsbTargetDevice::FormatRequestForControlTransfer メソッド (wudfusb.h)
[警告: UMDF 2 は UMDF の最新バージョンであり、UMDF 1 よりも優先されます。 すべての新しい UMDF ドライバーは、UMDF 2 を使用して記述する必要があります。 UMDF 1 には新機能が追加されておらず、Windows 10 の新しいバージョンでは UMDF 1 のサポートが制限されています。 ユニバーサル Windows ドライバーでは、UMDF 2 を使用する必要があります。 詳細については、「UMDFの概要」を参照してください。
FormatRequestForControlTransfer メソッドは、USB コントロール転送の I/O 要求オブジェクトを書式設定します。
構文
HRESULT FormatRequestForControlTransfer(
[in] IWDFIoRequest *pRequest,
[in] PWINUSB_SETUP_PACKET SetupPacket,
[in, optional] IWDFMemory *pMemory,
[in, optional] PWDFMEMORY_OFFSET TransferOffset
);
パラメーター
[in] pRequest
要求オブジェクトの IWDFIoRequest インターフェイスへのポインター。
[in] SetupPacket
コントロール転送の WINUSB_SETUP_PACKET へのポインター。
[in, optional] pMemory
コントロール転送に使用されるバッファーへのアクセスに使用される IWDFMemory インターフェイスへのポインター。 このパラメーターは省略可能です。
[in, optional] TransferOffset
コントロール転送に使用されるメモリ オフセットを記述する WDFMEMORY_OFFSET 構造体へのポインター。 このパラメーターは省略可能です。
戻り値
FormatRequestForControlTransfer は、次のいずれかの値を返します。
リターン コード | 形容 |
---|---|
|
FormatRequestForControlTransfer I/O 要求オブジェクトが正常に書式設定されました。 |
|
FormatRequestForControlTransfer 割り当てエラーが発生しました。 |
|
TransferOffset パラメーターが指定したメモリ オフセットが無効でした。 |
備考
UMDF ドライバー FormatRequestForControlTransfer を呼び出してコントロール転送操作の I/O 要求を書式設定した後、フレームワークは後で要求を I/O ターゲットに送信できます。
例
次のコード例は、WDK の wdf_osrfx2_lab サンプルから取得したものです。
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
}
必要条件
要件 | 価値 |
---|---|
サポート終了 | UMDF 2.0 以降では使用できません。 |
ターゲット プラットフォーム の | デスクトップ |
UMDF の最小バージョン を する | 1.5 |
ヘッダー | wudfusb.h (Wudfusb.h を含む) |
DLL | WUDFx.dll |
関連項目
IWDFIoRequest の
IWDFMemory の
IWDFUsbTargetDevice の