IWDFUsbTargetPipe::SetPipePolicy メソッド (wudfusb.h)

[警告: UMDF 2 は UMDF の最新バージョンであり、UMDF 1 よりも優先されます。 すべての新しい UMDF ドライバーは、UMDF 2 を使用して記述する必要があります。 UMDF 1 には新機能が追加されておらず、新しいバージョンのWindows 10では UMDF 1 のサポートが制限されています。 ユニバーサル Windows ドライバーでは UMDF 2 を使用する必要があります。 詳細については、「UMDF を使用したはじめに」を参照してください。

SetPipePolicy メソッドは、WinUsb パイプ ポリシーを設定します。

構文

HRESULT SetPipePolicy(
  [in] ULONG PolicyType,
  [in] ULONG ValueLength,
  [in] PVOID Value
);

パラメーター

[in] PolicyType

UMDF ドライバーが設定する WinUsb パイプ ポリシーの種類。

[in] ValueLength

SetPipePolicyValue に提供するバッファーのサイズ (バイト単位)。

[in] Value

WinUsb パイプ ポリシーを含むバッファーへのポインター。

戻り値

SetPipePolicy は 、次のいずれかの値を返します。

リターン コード 説明
S_ok

SetPipePolicy は WinUsb パイプ ポリシーを正常に設定しました。

E_OUTOFMEMORY

SetPipePolicy で 割り当てエラーが発生しました。

Winerror.h で定義されているエラー コード
この値は、WinUsb API から返されたエラー コードに対応します。

注釈

パイプ ポリシーは、USB パイプの動作 (タイムアウト、短いパケットの処理など) を制御します。

UMDF ドライバーが PolicyType パラメーターと Value パラメーターに渡すことができる有効なポリシーの種類と値の詳細については、 WinUsb_SetPipePolicy 関数を参照してください。

パイプ ポリシーの動作の詳細については、「パイプ ポリシーの 変更のための WinUSB 関数」を参照してください。

SetPipePolicy メソッドは UMDF 要求を生成し、その要求を I/O ターゲットに同期的に送信します。

次のコード例では、入力パイプと出力パイプのポリシーを設定します。

HRESULT
CMyDevice::ConfigureUsbIoTargets(
    )
{
    HRESULT                 hr;
    USB_INTERFACE_DESCRIPTOR pInterface;
    WINUSB_PIPE_INFORMATION pipe;
    BOOL                    policy;
    DWORD                   err;
    BOOL                    result;
    LONG                    i;
    LONG                    timeout;
    ULONG                   length;

    length = sizeof(UCHAR);
    hr = m_pIUsbTargetDevice->RetrieveDeviceInformation(DEVICE_SPEED, 
                                                        &length,
                                                        &m_Speed);
    if (FAILED(hr)) {
        // Print out error.
    }
    if (SUCCEEDED(hr)) {
        // Print out device speed.
    }
    //
    // Set timeout policies for input and output pipes.
    //
    if (SUCCEEDED(hr))  {
       timeout = ENDPOINT_TIMEOUT;
       hr = m_pIUsbInputPipe->SetPipePolicy(PIPE_TRANSFER_TIMEOUT,
                                            sizeof(timeout),
                                            &timeout);
       if (FAILED(hr)) {
            // Print out cannot set timeout policy for input pipe.
       }
    }
    if (SUCCEEDED(hr))  {
       timeout = ENDPOINT_TIMEOUT;
       hr = m_pIUsbOutputPipe->SetPipePolicy(PIPE_TRANSFER_TIMEOUT,
                                             sizeof(timeout),
                                             &timeout);
       if (FAILED(hr))  {
            // Print out cannot set timeout policy for output pipe.
       }
    }
 return hr;
}

要件

要件
サポート終了 UMDF 2.0 以降では使用できません。
対象プラットフォーム デスクトップ
最小 UMDF バージョン 1.5
Header wudfusb.h (Wudfusb.h を含む)
[DLL] WUDFx.dll

こちらもご覧ください

IWDFUsbTargetPipe

IWDFUsbTargetPipe::RetrievePipePolicy

WinUsb_SetPipePolicy