共用方式為


IWDFUsbTargetPipe::SetPipePolicy 方法 (wudfusb.h)

[警告: UMDF 2 是最新版的 UMDF,並取代 UMDF 1。 所有新的 UMDF 驅動程式都應該使用 UMDF 2 來撰寫。 未將新功能新增至 UMDF 1,且較新版本的 #D5587BA883A5B445E9053CF823834FDD8 上不支援 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

SetPipePolicy 針對 Value 提供的緩衝區大小,以位元組為單位。

[in] Value

包含 WinUsb 管道原則之緩衝區的指標。

傳回值

SetPipePolicy 會傳回下列其中一個值:

傳回碼 Description
S_OK

SetPipePolicy 已成功設定 WinUsb 管道原則。

E_OUTOFMEMORY

SetPipePolicy 發生配置失敗。

在 Winerror.h 中定義的錯誤碼
這個值對應於 WinUsb API 傳回的錯誤碼。

備註

管道原則會控制USB管道 (的行為,例如逾時、處理簡短封包等等) 。

如需 UMDF 驅動程式可以針對 PolicyTypeValue 參數傳遞之有效原則類型和值的詳細資訊,請參閱 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
標頭 wudfusb.h (包括 Wudfusb.h)
Dll WUDFx.dll

另請參閱

IWDFUsbTargetPipe

IWDFUsbTargetPipe::RetrievePipePolicy

WinUsb_SetPipePolicy