Método IWDFUsbTargetPipe::SetPipePolicy (wudfusb.h)

[Aviso: UMDF 2 é a versão mais recente do UMDF e substitui UMDF 1. Todos os novos drivers UMDF devem ser gravados usando UMDF 2. Nenhum novo recurso está sendo adicionado ao UMDF 1 e há suporte limitado para UMDF 1 em versões mais recentes do Windows 10. Drivers universais do Windows devem usar UMDF 2. Para obter mais informações, consulte Introdução com UMDF.]

O método SetPipePolicy define a política de pipe do WinUsb.

Sintaxe

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

Parâmetros

[in] PolicyType

O tipo de política de pipe do WinUsb que o driver UMDF define.

[in] ValueLength

O tamanho, em bytes, do buffer que SetPipePolicy fornece para Value.

[in] Value

Um ponteiro para o buffer que contém a política de pipe do WinUsb.

Retornar valor

SetPipePolicy retorna um dos seguintes valores:

Código de retorno Descrição
S_OK

SetPipePolicy definiu com êxito a política de pipe do WinUsb.

E_OUTOFMEMORY

SetPipePolicy encontrou uma falha de alocação.

Um código de erro definido em Winerror.h
Esse valor corresponde ao código de erro retornado pela API do WinUsb.

Comentários

A política de pipe controla o comportamento do pipe USB (por exemplo, tempos limite, manipulação de pacotes curtos e assim por diante).

Para obter mais informações sobre tipos de política válidos e valores que um driver UMDF pode passar para os parâmetros PolicyType e Value , consulte a função WinUsb_SetPipePolicy .

Para obter informações sobre o comportamento das políticas de pipe, consulte Funções do WinUSB para modificação da política de pipe.

O método SetPipePolicy gera uma solicitação UMDF e envia a solicitação de forma síncrona para o destino de E/S.

Exemplos

O exemplo de código a seguir define a política para pipes de entrada e saída.

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 Valor
Fim do suporte Indisponível no UMDF 2.0 e posterior.
Plataforma de Destino Área de Trabalho
Versão mínima do UMDF 1.5
Cabeçalho wudfusb.h (include Wudfusb.h)
DLL WUDFx.dll

Confira também

IWDFUsbTargetPipe

IWDFUsbTargetPipe::RetrievePipePolicy

WinUsb_SetPipePolicy