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::ConfigureContinuousReader의 HeaderLength 매개 변수로 정의된 헤더 다음에 데이터를 버퍼에 씁니다. IWDFMemory::GetDataBuffer가 반환하는 포인터는 헤더의 시작을 가리키지만 OnReaderCompletion 콜백 함수의 NumBytesTransferred 매개 변수에는 헤더 길이가 포함되지 않습니다.
기본적으로 프레임워크는 OnReaderCompletion 콜백 함수가 반환된 후 버퍼의 메모리 개체를 삭제합니다. 그러나 콜백 함수가 반환된 후에도 메모리 개체가 유효한 상태로 유지되도록 할 수 있습니다. 예를 들어 드라이버가 콜백 함수가 반환된 후 메모리 개체의 내용을 처리할 수 있도록 프레임워크 파이프 개체의 컨텍스트 공간에 메모리 개체의 인터페이스 포인터를 저장하도록 할 수 있습니다. 메모리 개체의 수명을 연장하려면 콜백 함수가 버퍼의 IWDFMemory::AddRef 메서드를 호출해야 합니다. 그런 다음, 프레임워크가 개체를 삭제할 수 있도록 드라이버가 버퍼의 IWDFMemory::Release 메서드를 호출해야 합니다.
프레임워크는 다음 규칙에 따라 OnReaderCompletion 및 IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure 콜백 함수에 대한 호출을 동기화합니다.
- 이러한 콜백 함수는 개별 USB 파이프에 대해 동시에 실행되지 않습니다.
- 드라이버가 여러 개의 OnReaderCompletion 및 OnReaderFailure 콜백 함수를 사용하여 여러 USB 파이프에 대해 여러 연속 판독기를 만드는 경우 여러 콜백 함수를 동시에 실행할 수 있습니다.
- 드라이버가 IWDFUsbTargetPipe2::ConfigureContinuousReader를 호출할 때 기본 NumPendingReads 값을 지정한 경우(또는 1보다 큰 NumPendingReads 값을 지정하는 경우) OnReaderCompletion 콜백 함수가 실행되는 동안 읽기 요청이 완료되면 프레임워크는 콜백 함수가 반환되기 전에 OnReaderCompletion 콜백 함수를 다시 호출할 수 있습니다.
- 프레임워크는 이러한 콜백 함수를 다른 콜백 함수와 동기화하지 않습니다.
OnReaderCompletion 콜백 함수 및 USB I/O 대상에 대한 자세한 내용은 USB I/O 대상 처리를 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원 종료 | UMDF 2.0 이상에서는 사용할 수 없습니다. |
대상 플랫폼 | 데스크톱 |
최소 UMDF 버전 | 1.9 |
머리글 | wudfusb.h(Wudfusb.h 포함) |
추가 정보
IUsbTargetPipeContinuousReaderCallbackReadComplete
IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure