Método IWDFUsbTargetPipe::SetPipePolicy (wudfusb.h)
[Advertencia: UMDF 2 es la versión más reciente de UMDF y sustituye a UMDF 1. Todos los controladores UMDF nuevos deben escribirse con UMDF 2. No se agregan nuevas características a UMDF 1 y hay compatibilidad limitada con UMDF 1 en versiones más recientes de Windows 10. Los controladores universales de Windows deben usar UMDF 2. Para obtener más información, consulta Introducción con UMDF.
El método SetPipePolicy establece la directiva de canalización winUsb.
Sintaxis
HRESULT SetPipePolicy(
[in] ULONG PolicyType,
[in] ULONG ValueLength,
[in] PVOID Value
);
Parámetros
[in] PolicyType
Tipo de directiva de canalización de WinUsb que establece el controlador UMDF.
[in] ValueLength
Tamaño, en bytes, del búfer que Proporciona SetPipePolicy para Value.
[in] Value
Puntero al búfer que contiene la directiva de canalización de WinUsb.
Valor devuelto
SetPipePolicy devuelve uno de los siguientes valores:
Código devuelto | Descripción |
---|---|
|
SetPipePolicy estableció correctamente la directiva de canalización de WinUsb. |
|
SetPipePolicy encontró un error de asignación. |
|
Este valor corresponde al código de error que devolvió la API winUsb. |
Comentarios
La directiva de canalización controla el comportamiento de la canalización USB (por ejemplo, tiempos de espera, control de paquetes cortos, etc.).
Para obtener más información sobre los valores y tipos de directiva válidos que un controlador UMDF puede pasar para los parámetros PolicyType y Value , consulte la función WinUsb_SetPipePolicy .
Para obtener información sobre el comportamiento de las directivas de canalización, vea Funciones winUSB para la modificación de la directiva de canalización.
El método SetPipePolicy genera una solicitud UMDF y envía sincrónicamente la solicitud al destino de E/S.
Ejemplos
En el ejemplo de código siguiente se establece la directiva para las canalizaciones de entrada y salida.
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;
}
Requisitos
Requisito | Value |
---|---|
Finalización del soporte técnico | No disponible en UMDF 2.0 y versiones posteriores. |
Plataforma de destino | Escritorio |
Versión mínima de UMDF | 1.5 |
Encabezado | wudfusb.h (incluya Wudfusb.h) |
Archivo DLL | WUDFx.dll |