다음을 통해 공유


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를 호출할 때 드라이버의 IUsbTargetPipeContinuousReadbackReadComplete 인터페이스에 대한 포인터를 제공해야 합니다.

드라이버가 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 값을 지정한 경우(또는 1보다 큰 NumPendingReads 값을 지정하는 경우) 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