IWiaMiniDrv::d rvAcquireItemData 메서드(wiamindr_lh.h)
디바이스에서 애플리케이션으로 데이터를 전송하기 위해 WIA 서비스에서 IWiaMiniDrv::d rvAcquireItemData 메서드를 호출합니다.
구문
HRESULT drvAcquireItemData(
BYTE *__MIDL__IWiaMiniDrv0009,
LONG __MIDL__IWiaMiniDrv0010,
PMINIDRV_TRANSFER_CONTEXT __MIDL__IWiaMiniDrv0011,
LONG *__MIDL__IWiaMiniDrv0012
);
매개 변수
__MIDL__IWiaMiniDrv0009
lFlags [in]
예약되어 있습니다.
__MIDL__IWiaMiniDrv0010
pWiasContext [in]
WIA 항목 컨텍스트에 대한 포인터입니다.
__MIDL__IWiaMiniDrv0011
plDevErrVal [out]
이 메서드에 대한 상태 코드를 받을 메모리 위치를 가리킵니다. 이 메서드가 S_OK 반환하면 저장된 값은 0이 됩니다. 그렇지 않으면 미니 드라이버 관련 오류 코드가 이 매개 변수가 가리키는 위치에 저장됩니다.
__MIDL__IWiaMiniDrv0012
pmdtc [in, out]
디바이스 전송 컨텍스트를 포함하는 MINIDRV_TRANSFER_CONTEXT 구조를 가리킵니다. MINIDRV_TRANSFER_CONTEXT 구조에는 전송할 데이터와 관련된 매개 변수가 포함됩니다.
반환 값
성공하면 메서드는 S_OK 반환하고 plDevErrVal이 가리키는 디바이스 오류 값을 지워야 합니다. 전송이 취소된 경우 메서드는 S_FALSE 반환해야 합니다. 메서드가 실패하면 표준 COM 오류 코드를 반환하고 plDevErrVal이 가리키는 메모리에 미니 드라이버 관련 오류 코드 값을 입력해야 합니다. 주의 섹션에는 ADF 검사에 적용되는 추가 반환 값 정보가 있습니다.
설명
전송에는 메모리 기반 및 파일 기반의 두 가지 기본 형식이 있습니다. WIA 서비스는 pmdtc-->tymed의 설정으로 수행할 형식을 나타내며, 메모리 기반 전송에 대해 TYMED_CALLBACK 또는 TYMED_MULTIPAGE_CALLBACK 파일 전송에 대해 TYMED_FILE 또는 TYMED_MULTIPAGE_FILE . 이러한 상수에 대한 자세한 내용은 WIA_IPA_TYMED.
메모리 기반 전송의 경우 pmdtc-->bClassDrvAllocBuf의 값으로 표시된 대로 버퍼가 이미 할당되었거나 할당되지 않았을 수 있습니다. WIA 서비스는 미니 드라이버에 최대 두 개의 버퍼를 전달할 수 있지만 일반적으로 하나만 전달합니다. 버퍼 수는 pmdtc-->lNumBuffers의 값으로 지정됩니다. 버퍼에 대한 메모리가 아직 할당되지 않은 경우 미니드라이버가 CoTaskMemAlloc 또는 new와 같은 일반적인 수단을 사용하여 할당해야 합니다. 미니드라이버가 버퍼를 할당하는 경우 버퍼를 해제해야 합니다.
파일 전송의 경우 미니 드라이버는 먼저 WIA 서비스의 호출에서 이 메서드에 전달된 버퍼에 데이터를 쓴 다음 wiasWritePageBufToFile 을 호출하여 관련된 파일에 버퍼 데이터를 작성해야 합니다. 미니드라이버가 pmdtc-->hFile 에 지정된 파일 핸들을 사용하여 파일에 데이터를 쓰려고 시도해서는 안 됩니다.
주기적으로 미니드라이버가 COM 인터페이스 지점의 IWiaMiniDrvCallBack::MiniDrvCallback 메서드를 pdmtc-->pIWiaMiniDrvCallBack으로 호출하여 전송의 상태 업데이트해야 합니다. 메모리 기반 전송의 경우 이 함수는 데이터를 애플리케이션에 다시 전달하는 데 사용됩니다. 이 함수를 호출해야 하는 빈도는 미니드라이버에 남아 있지만 전송하는 동안 약 10번 또는 초당 한 번 정도 호출해야 합니다.
WIA 서비스에서 제공하는 다른 전송 매개 변수는 다음과 같습니다.
pmdtc-->guidFormatID - 데이터 형식
pmdtc-->lCompression - 사용되는 압축 유형
ADF 장착 스캐너의 잠재적인 문제는 스캔 작업 중에 종이가 부족합니다. IWiaMiniDrv::d rvAcquireItemData 구현이 반환하는 HRESULT는 스캐너의 WIA_DPS_PAGES 속성의 현재 설정과 모든 페이지가 제대로 검사되었는지 여부에 따라 달라집니다. 다음 규칙을 사용하여 이 메서드에서 반환할 적절한 HRESULT 를 결정하는 방법을 안내합니다.
시나리오 | HRESULT 값 |
---|---|
WIA_DPS_PAGES 속성은 0으로 설정되었고 스캐너는 오류 없이 ADF를 비웠습니다. WIA_DPS_PAGES 속성은 N(여기서 N > 0)으로 설정되었으며 스캐너는 오류 없이 N 페이지를 처리했습니다. |
S_OK |
WIA_DPS_PAGES 속성이 N으로 설정되었고 스캐너는 하나 이상의 페이지를 처리했지만 모든 N 페이지를 처리하기 전에 용지가 부족했습니다. | WIA_STATUS_END_OF_MEDIA |
스캐너가 예기치 않게 여러 페이지 피드를 검색하고, 검사를 중지했으며, WIA_DPS_DOCUMENT_HANDLING_STATUS MULTIPLE_FEED 설정했습니다. | WIA_ERROR_MULTI_FEED |
스캐너는 WIA_DPS_PAGES 속성의 설정에 관계없이 첫 번째 검사에서 종이가 부족했습니다. 스캔 작업 중에 용지 걸림 또는 기타 오류가 발생했습니다. |
기타 오류 코드 |
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 데스크톱 |
머리글 | wiamindr_lh.h(Wiamindr.h 포함) |