Compartir a través de


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
S_OK

SetPipePolicy estableció correctamente la directiva de canalización de WinUsb.

E_OUTOFMEMORY

SetPipePolicy encontró un error de asignación.

Código de error definido en Winerror.h
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

Consulte también

IWDFUsbTargetPipe

IWDFUsbTargetPipe::RetrievePipePolicy

WinUsb_SetPipePolicy