다음을 통해 공유


IUsbTargetPipeContinuousReaderCallbackReadComplete::OnReaderCompletion 메서드(wudfusb.h)

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

드라이버의 OnReaderCompletion 이벤트 콜백 함수는 연속 판독기가 읽기 요청을 성공적으로 완료했음을 드라이버에 알려줍니다.

통사론

void OnReaderCompletion(
  [in] IWDFUsbTargetPipe *pPipe,
  [in] IWDFMemory        *pMemory,
  [in] SIZE_T            NumBytesTransferred,
  [in] PVOID             Context
);

매개 변수

[in] pPipe

드라이버에서 연속 판독기를 사용하도록 설정한 USB 파이프에 대한 IWDFUsbTargetPipe 인터페이스에 대한 포인터입니다.

[in] pMemory

USB 파이프에서 읽은 데이터를 포함하는 읽기 버퍼에 대한 IWDFMemory 인터페이스에 대한 포인터입니다.

[in] NumBytesTransferred

읽기 버퍼에 포함된 바이트 수입니다.

[in] Context

드라이버가 이전에 IWDFUsbTargetPipe2::ConfigureContinuousReader를 호출할 때 제공한 드라이버 제공 컨텍스트 정보에 대한 포인터입니다.

반환 값

없음

발언

IUsbTargetPipeContinuousReaderCallbackReadComplete::OnReaderCompletion 콜백 함수를 등록하려면 드라이버가 IWDFUsbTargetPipe2::ConfigureContinuousReader호출할 때 드라이버의 IUsbTargetPipeContinuousReaderCallbackReadComplete 인터페이스에 대한 포인터를 제공해야 합니다.

드라이버가 USB 파이프에 대한 연속 판독기를 만든 경우 프레임워크는 드라이버의 I/O 대상이 읽기 요청을 성공적으로 완료할 때마다 드라이버의 OnReaderCompletion 콜백 함수를 호출합니다. I/O 대상이 요청을 성공적으로 완료하지 못하면 프레임워크는 드라이버의 IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure 콜백 함수를 호출합니다.

디바이스에서 읽은 데이터가 포함된 버퍼에 액세스하기 위해 드라이버는 IWDFMemory::GetDataBuffer호출할 수 있습니다. 프레임워크는 IWDFUsbTargetPipe2::ConfigureContinuousReaderHeaderLength 매개 변수로 정의된 헤더 뒤의 버퍼에 데이터를 씁니다. IWDFMemory::GetDataBuffer 포인터는 헤더의 시작을 가리키지만 OnReaderCompletion 콜백 함수의 NumBytesTransferred 매개 변수는 헤더의 길이를 포함하지 않습니다.

기본적으로 프레임워크는 OnReaderCompletion 콜백 함수가 반환된 후 버퍼의 메모리 개체를 삭제합니다. 그러나 콜백 함수가 반환된 후에도 메모리 개체가 유효한 상태로 유지되도록 할 수 있습니다. 예를 들어 드라이버가 콜백 함수가 반환된 후 메모리 개체의 내용을 처리할 수 있도록 프레임워크 파이프 개체의 컨텍스트 공간 메모리 개체의 인터페이스 포인터를 저장할 수 있습니다. 메모리 개체의 수명을 연장하려면 콜백 함수가 버퍼의 IWDFMemory::AddRef 메서드를 호출해야 합니다. 그런 다음, 프레임워크가 개체를 삭제할 수 있도록 드라이버는 버퍼의 IWDFMemory::Release 메서드를 호출해야 합니다.

프레임워크는 다음 규칙에 따라 OnReaderCompletionIUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure 콜백 함수에 대한 호출을 동기화합니다.

  • 이러한 콜백 함수는 개별 USB 파이프에 대해 동시에 실행되지 않습니다.
  • 드라이버가 여러 OnReaderCompletionOnReaderFailure 콜백 함수를 사용하여 여러 USB 파이프에 대해 여러 연속 판독기를 만드는 경우 여러 콜백 함수를 동시에 실행할 수 있습니다.
  • 드라이버가 IWDFUsbTargetPipe2::ConfigureContinuousReader 호출할 때 기본 NumPendingReads 값을 지정한 경우(또는 NumPendingRead를 지정하는 경우) 은 1보다 큰 값)이고, OnReaderCompletion 콜백 함수가 실행되는 동안 읽기 요청이 완료되면 프레임워크는 콜백 함수가 반환되기 전에 OnReaderCompletion 콜백 함수를 다시 호출할 수 있습니다.
  • 프레임워크는 이러한 콜백 함수를 다른 콜백 함수와 동기화하지 않습니다.
드라이버가 IWDFUsbTargetPipe2::ConfigureContinuousReader호출하는 경우 IObjectCleanup::OnCleanup 콜백 함수를 지정할 수 있습니다. 프레임워크는 OnReaderCompletion 콜백 함수가 반환된 후 메모리 개체를 삭제하려고 할 때 해당 콜백 함수를 호출합니다.

OnReaderCompletion 콜백 함수 및 USB I/O 대상에 대한 자세한 내용은 USB I/O 대상 처리를 참조하세요.

요구 사항

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

참고 항목

IUsbTargetPipeContinuousReaderCallbackReadComplete

IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure