다음을 통해 공유


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