Bagikan melalui


Metode IWDFUsbTargetPipe::SetPipePolicy (wudfusb.h)

[Peringatan: UMDF 2 adalah versi terbaru UMDF dan pengganti UMDF 1. Semua driver UMDF baru harus ditulis menggunakan UMDF 2. Tidak ada fitur baru yang ditambahkan ke UMDF 1 dan ada dukungan terbatas untuk UMDF 1 pada versi Windows 10 yang lebih baru. Driver Universal Windows harus menggunakan UMDF 2. Untuk informasi selengkapnya, lihat Mulai menggunakan UMDF.]

Metode SetPipePolicy menetapkan kebijakan pipa WinUsb.

Sintaks

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

Parameter

[in] PolicyType

Jenis kebijakan pipa WinUsb yang ditetapkan driver UMDF.

[in] ValueLength

Ukuran, dalam byte, dari buffer yang disediakan SetPipePolicy untuk Value.

[in] Value

Pointer ke buffer yang berisi kebijakan pipa WinUsb.

Nilai kembali

SetPipePolicy mengembalikan salah satu nilai berikut:

Menampilkan kode Deskripsi
S_OK

SetPipePolicy berhasil mengatur kebijakan pipa WinUsb.

E_OUTOFMEMORY

SetPipePolicy mengalami kegagalan alokasi.

Kode kesalahan yang didefinisikan dalam Winerror.h
Nilai ini sesuai dengan kode kesalahan yang dikembalikan API WinUsb.

Keterangan

Kebijakan pipa mengontrol perilaku pipa USB (misalnya, waktu habis, menangani paket pendek, dan sebagainya).

Untuk informasi selengkapnya tentang jenis dan nilai kebijakan yang valid yang dapat diteruskan driver UMDF untuk parameter PolicyType dan Value , lihat fungsi WinUsb_SetPipePolicy .

Untuk informasi tentang perilaku kebijakan pipa, lihat Fungsi WinUSB untuk Modifikasi Kebijakan Pipa.

Metode SetPipePolicy menghasilkan permintaan UMDF dan secara sinkron mengirim permintaan ke target I/O.

Contoh

Contoh kode berikut menetapkan kebijakan untuk pipa input dan output.

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;
}

Persyaratan

Persyaratan Nilai
Akhir dukungan Tidak tersedia di UMDF 2.0 dan yang lebih baru.
Target Platform Desktop
Versi UMDF minimum 1,5
Header wudfusb.h (termasuk Wudfusb.h)
DLL WUDFx.dll

Lihat juga

IWDFUsbTargetPipe

IWDFUsbTargetPipe::RetrievePipePolicy

WinUsb_SetPipePolicy