다음을 통해 공유


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 포함)

추가 정보

IWiaMiniDrv

IWiaMiniDrv::d rvGetDeviceErrorStr

MINIDRV_TRANSFER_CONTEXT

wiasGetImageInformation