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 |
---|---|
|
SetPipePolicy berhasil mengatur kebijakan pipa WinUsb. |
|
SetPipePolicy mengalami kegagalan alokasi. |
|
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 |