MINIDRV_TRANSFER_CONTEXT 구조체(wiamindr_lh.h)

MINIDRV_TRANSFER_CONTEXT 구조는 메모리 콜백 데이터 전송 또는 파일 데이터 전송에 필요한 이미지 및 기타 정보를 저장하는 데 사용됩니다.

구문

typedef struct _MINIDRV_TRANSFER_CONTEXT {
  LONG                lSize;
  LONG                lWidthInPixels;
  LONG                lLines;
  LONG                lDepth;
  LONG                lXRes;
  LONG                lYRes;
  LONG                lCompression;
  GUID                guidFormatID;
  LONG                tymed;
  LONG_PTR            hFile;
  LONG                cbOffset;
  LONG                lBufferSize;
  LONG                lActiveBuffer;
  LONG                lNumBuffers;
  BYTE                *pBaseBuffer;
  BYTE                *pTransferBuffer;
  BOOL                bTransferDataCB;
  BOOL                bClassDrvAllocBuf;
  LONG_PTR            lClientAddress;
  IWiaMiniDrvCallBack *pIWiaMiniDrvCallBack;
  LONG                lImageSize;
  LONG                lHeaderSize;
  LONG                lItemSize;
  LONG                cbWidthInBytes;
  LONG                lPage;
  LONG                lCurIfdOffset;
  LONG                lPrevIfdOffset;
} MINIDRV_TRANSFER_CONTEXT, *PMINIDRV_TRANSFER_CONTEXT;

멤버

lSize

이 MINIDRV_TRANSFER_CONTEXT 구조체의 크기(바이트)를 지정합니다.

lWidthInPixels

현재 이미지의 너비를 픽셀 단위로 지정합니다. 이 멤버의 값은 WIA_IPA_PIXELS_PER_LINE 공통 항목 속성에서 파생됩니다.

lLines

현재 이미지의 총 줄 수(픽셀의 가로 행 수)를 지정합니다. 이 멤버의 값은 WIA_IPA_NUMBER_OF_LINES 공통 항목 속성에서 파생됩니다.

lDepth

현재 이미지의 색 깊이 값을 픽셀당 비트 단위로 지정합니다. 이 멤버의 값은 WIA_IPA_DEPTH 공통 항목 속성에서 파생됩니다.

lXRes

이미지의 현재 가로 해상도를 인치당 픽셀 단위로 지정합니다. 이 멤버의 값은 WIA_IPS_XRES 스캐너 항목 속성에서 파생됩니다.

lYRes

이미지의 현재 세로 해상도를 인치당 픽셀 단위로 지정합니다. 이 멤버의 값은 WIA_IPS_YRES 스캐너 항목 속성에서 파생됩니다.

lCompression

디바이스에서 사용하는 압축 유형을 지정합니다. 이 멤버의 값은 WIA_IPA_COMPRESSION 공통 항목 속성에서 파생됩니다.

guidFormatID

디바이스의 데이터 형식을 나타내는 GUID를 지정합니다. 이 멤버의 값은 WIA_IPA_FORMAT 공통 항목 속성에서 파생됩니다.

tymed

데이터 전송 유형을 지정합니다. 지정된 데이터 전송은 메모리 콜백 전송(TYMED_CALLBACK 또는 TYMED_MULTIPAGE_CALLBACK) 또는 파일 전송(TYMED_FILE 또는 TYMED_MULTIPAGE_FILE)일 수 있습니다. 이 멤버의 값은 WIA_IPA_TYMED 공통 항목 속성에서 파생됩니다.

이 멤버는 bTransferDataCB 멤버에서 관련 정보를 전달합니다. 자세한 내용은 비고를 참조하세요.

hFile

파일을 전송하는 동안 사용되는 열린 파일에 대한 핸들을 지정합니다. 미니드라이버에서 이 멤버를 사용하면 안 됩니다. 자세한 내용은 비고를 참조하세요.

cbOffset

이 전송 중에 사용되는 다음 버퍼 위치의 현재 오프셋(바이트)을 지정합니다.

lBufferSize

전송 버퍼의 총 크기를 지정합니다.

lActiveBuffer

현재 전송에 사용되는 버퍼를 지정합니다. 이 멤버의 값은 lNumBuffers까지의 1 범위에 있어야 합니다.

lNumBuffers

데이터 전송에 사용할 수 있는 버퍼 수를 지정합니다. 이 값은 현재 1 또는 2일 수 있습니다.

pBaseBuffer

기본 전송 버퍼의 시작을 가리킵니다.

pTransferBuffer

현재 전송 버퍼의 시작을 가리킵니다. 이중 버퍼링이 사용되는 콜백 전송의 경우 이 멤버는 두 버퍼를 번갈아 가며 첫 번째 버퍼의 시작을 가리킨 다음 두 번째 버퍼의 시작 부분을 가리킵니다.

bTransferDataCB

데이터 전송이 메모리 콜백 전송인지 아니면 파일 전송인지를 지정합니다. 이 멤버는 전송이 메모리 콜백 전송인 경우 TRUE 로 설정되고, 전송이 파일 전송인 경우 FALSE 로 설정됩니다. 파일 전송의 경우 WIA 서비스는 일반적으로 애플리케이션이 파일 전송의 상태 대한 업데이트를 미니드라이버에서 수신할 수 있도록 하는 콜백 루틴을 제공합니다. (애플리케이션이 자체 콜백 루틴을 제공하는 경우 WIA 서비스는 콜백 루틴을 제공합니다. 자세한 내용은 IWiaMiniDrvCallback COM 인터페이스를 참조하세요.) 파일 전송의 경우 미니 드라이버는 pIWiaMiniDrvCallBack 멤버에 저장된 값을 검사 합니다. 해당 멤버가 NULL인 경우 WIA 서비스는 콜백 루틴을 제공하지 않으므로 드라이버가 호출을 시도해서는 안됩니다. 메모리 콜백 전송의 경우 WIA 서비스는 항상 콜백을 제공합니다.

이 멤버는 tymed 멤버의 관련 정보를 전달합니다. 자세한 내용은 비고를 참조하세요.

bClassDrvAllocBuf

WIA 서비스에서 전송 버퍼를 할당했는지 여부를 지정합니다. WIA 서비스에서 버퍼를 할당한 경우 이 값은 TRUE 이고, 그렇지 않으면 FALSE 입니다. 이 경우 전송 버퍼를 할당하는 것은 미니드라이버의 책임입니다.

lClientAddress

클라이언트의 주소 공간에서 전송의 주소를 지정합니다. 미니드라이버에서 이 값을 변경하지 않아야 합니다.

pIWiaMiniDrvCallBack

데이터 또는 상태 콜백 전송에 사용되는 IWiaMiniDrvCallBack 인터페이스를 가리킵니다.

lImageSize

단일 페이지에서 압축되지 않은 비트의 크기(바이트)를 지정합니다.

lHeaderSize

단일 페이지에서 이미지 헤더 데이터의 크기(바이트)를 지정합니다.

lItemSize

비트 및 헤더의 크기(바이트)를 지정합니다. 획득하기 전에 항목 크기를 알 수 없는 경우 이 값은 0일 수 있습니다.

cbWidthInBytes

이미지 선의 크기(바이트)를 지정합니다.

lPage

다중 페이지 TIFF 이미지를 검사할 때 현재 페이지의 페이지 번호를 지정합니다. 페이지 번호 매기기 는 0으로 시작합니다.

lCurIfdOffset

다중 페이지 TIFF 이미지의 현재 페이지에서 이미지 파일 디렉터리(IFD) 오프셋을 지정합니다.

lPrevIfdOffset

다중 페이지 TIFF 이미지의 이전 페이지에서 이미지 파일 디렉터리(IFD) 오프셋을 지정합니다.

설명

WIA 서비스는 미니드라이버의 IWiaMiniDrv::d rvAcquireItemData 메서드를 호출하기 전에 이 구조체의 멤버 대부분을 설정합니다. 미니드라이버가 wiasGetImageInformation을 호출하는 경우 해당 함수는 전달된 MINIDRV_TRANSFER_CONTEXT 나머지 멤버를 채웁니다.

WIA 서비스는 현재 TYMED_FILE 및 TYMED_CALLBACK 상수만 사용하므로 tymedbTransferDataCB 멤버는 기본적으로 동일한 정보를 저장합니다. 파일 전송의 경우 bTransferDataCBFALSE로 설정되면 tymed 가 TYMED_FILE 또는 TYMED_MULTIPAGE_FILE 설정됩니다. 메모리 콜백 전송의 경우 bTransferDataCBTRUE로 설정되면 tymed 가 TYMED_CALLBACK 또는 TYMED_MULTIPAGE_CALLBACK 설정됩니다.

hFile 멤버는 WIA 서비스에서만 사용하도록 예약되어 있습니다. 파일 전송에 이 멤버를 사용하는 대신 미니드라이버가 버퍼에 데이터를 쓴 다음 wiasWritePageBufToFile 을 호출하여 파일 전송을 완료해야 합니다.

미니 드라이버는 다음 표에 표시된 멤버를 설정하기 위해 특정 일반 또는 스캐너 항목 속성에서 값을 가져옵니다.

멤버 설정 기준
lWidthInPixels WIA_IPA_PIXELS_PER_LINE
lLines WIA_IPA_NUMBER_OF_LINES
lDepth WIA_IPA_DEPTH
lXRes WIA_IPS_XRES
lYRes WIA_IPS_YRES
lCompression WIA_IPA_COMPRESSION
guidFormatID WIA_IPA_FORMAT
tymed WIA_IPA_TYMED

일반적으로 미니 드라이버는 항목 속성의 값에서 직접 이전 구조체 멤버를 설정합니다. 애플리케이션 또는 미니드라이버에서 항목 속성을 이전에 설정했습니다. WIA 서비스는 속성 값을 사용하여 서비스 컨텍스트를 채웁니다. 드라이버는 빠른 참조를 위해 이 컨텍스트에 저장된 값을 사용할 수 있습니다.

WIA 서비스는 다음 구조체 멤버를 설정합니다.

  • hFile

  • bTransferDataCB

  • bClassDrvAllocBuf

minidriver 또는 wiasGetImageInformation 서비스 라이브러리 함수는 다음 구조체 멤버를 설정합니다.

  • lImageSize

  • lHeaderSize

  • lItemSize

  • cbWidthInBytes

이 구조체의 다음 멤버는 데이터 전송 콜백에 사용됩니다. WIA 서비스 또는 미니드라이버에서 이러한 멤버를 설정합니다. 몇 가지 경우 bClassDrvAllocBuf 에 저장된 값은 WIA 서비스 또는 미니드라이버가 멤버를 설정하는지 여부를 결정합니다.

멤버 설정 기준
cbOffset 미니 드라이버
lBufferSize WIA 서비스 또는 미니 드라이버. bClassDrvAllocBufTRUE이면 WIA 서비스는 이 멤버를 설정합니다. 그렇지 않으면 미니 드라이버가 설정합니다.
lActiveBuffer WIA 서비스. 미니드라이버에서 이 멤버를 수정하면 안됩니다.
lNumBuffers WIA 서비스. 미니드라이버에서 이 멤버를 수정하면 안됩니다.
pBaseBuffer WIA 서비스 또는 미니 드라이버. bClassDrvAllocBufTRUE이면 WIA 서비스는 이 멤버를 설정합니다. 그렇지 않으면 미니 드라이버가 설정합니다.
pTransferBuffer WIA 서비스 또는 미니 드라이버. bClassDrvAllocBufTRUE이면 WIA 서비스는 이 멤버를 설정합니다. 그렇지 않으면 미니 드라이버가 설정합니다.
lClientAddress WIA 서비스. 미니드라이버에서 이 멤버를 수정하면 안됩니다.
pIWiaMiniDrvCallBack WIA 서비스

요구 사항

요구 사항
헤더 wiamindr_lh.h(Wiamindr.h 포함)

추가 정보

IWiaMiniDrv::d rvAcquireItemData

IWiaMiniDrvCallBack::MiniDrvCallback

wiasGetImageInformation

wiasWritePageBufToFile