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 |
---|---|
|
SetPipePolicy definiu com êxito a política de pipe do WinUsb. |
|
SetPipePolicy encontrou uma falha de alocação. |
|
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 |