다음을 통해 공유


IWDFUsbTargetPipe::SetPipePolicy 메서드(wudfusb.h)

[경고: UMDF 2는 UMDF의 최신 버전이며 UMDF 1을 대체합니다. 모든 새 UMDF 드라이버는 UMDF 2를 사용하여 작성해야 합니다. UMDF 1에는 새로운 기능이 추가되지 않으며 최신 버전의 Windows 10에서는 UMDF 1에 대한 지원이 제한되어 있습니다. 유니버설 Windows 드라이버는 UMDF 2를 사용해야 합니다. 자세한 내용은 UMDF시작 .]을 참조하세요.

SetPipePolicy 메서드는 WinUsb 파이프 정책을 설정합니다.

통사론

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

매개 변수

[in] PolicyType

UMDF 드라이버가 설정하는 WinUsb 파이프 정책의 형식입니다.

[in] ValueLength

SetPipePolicy를 버퍼의 크기(바이트).

[in] Value

WinUsb 파이프 정책을 포함하는 버퍼에 대한 포인터입니다.

반환 값

SetPipePolicy 다음 값 중 하나를 반환합니다.

반환 코드 묘사
S_OK

SetPipePolicy WinUsb 파이프 정책을 성공적으로 설정했습니다.

E_OUTOFMEMORY

SetPipePolicy 할당 오류가 발생했습니다.

Winerror.h 정의된 오류 코드
이 값은 WinUsb API가 반환한 오류 코드에 해당합니다.

발언

파이프 정책은 USB 파이프의 동작을 제어합니다(예: 시간 제한, 짧은 패킷 처리 등).

UMDF 드라이버가 PolicyTypeValue 매개 변수에 전달할 수 있는 유효한 정책 유형 및 값에 대한 자세한 내용은 WinUsb_SetPipePolicy 함수를 참조하세요.

파이프 정책의 동작에 대한 자세한 내용은 파이프 정책 수정 WinUSB 함수를 참조하세요.

SetPipePolicy 메서드는 UMDF 요청을 생성하고 I/O 대상에 요청을 동기적으로 보냅니다.

예제

다음 코드 예제에서는 입력 및 출력 파이프에 대한 정책을 설정합니다.

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;
}

요구 사항

요구
지원 종료 UMDF 2.0 이상에서는 사용할 수 없습니다.
대상 플랫폼 바탕 화면
최소 UMDF 버전 1.5
헤더 wudfusb.h(Wudfusb.h 포함)
DLL WUDFx.dll

참고 항목

IWDFUsbTargetPipe

IWDFUsbTargetPipe::RetrievePipePolicy

WinUsb_SetPipePolicy