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
イメージの現在の水平方向の解像度を 1 インチあたりのピクセル単位で指定します。 このメンバーの値は、 WIA_IPS_XRES スキャナー項目プロパティから派生します。
lYRes
イメージの現在の垂直方向の解像度を 1 インチあたりのピクセル単位で指定します。 このメンバーの値は、 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
現在の転送に使用するバッファーを指定します。 このメンバーの値は、1 から lNumBuffers の範囲である必要があります。
lNumBuffers
データ転送に使用できるバッファーの数を指定します。 この値は現在、1 または 2 のいずれかです。
pBaseBuffer
基本転送バッファーの先頭を指します。
pTransferBuffer
現在の転送バッファーの先頭を指します。 ダブル バッファリングが使用されるコールバック転送の場合、このメンバーは 2 つのバッファー間で交互に、最初のバッファーの先頭を指し、次に 2 番目のバッファーの先頭を指します。
bTransferDataCB
データ転送がメモリ コールバック転送かファイル転送かを指定します。 転送がメモリ コールバック転送の場合は TRUE 、転送がファイル転送の場合は FALSE に設定されます。 ファイル転送の場合、WIA サービスは通常、コールバック ルーチンを提供します。これにより、アプリケーションはファイル転送の状態に関する更新プログラムをミニドライバーから受け取ることができます。 (WIA サービスは、アプリケーションが独自のコールバック ルーチンを提供する場合にコールバック ルーチンを提供します。詳細については、「IWiaMiniDrvCallback COM インターフェイス」を参照してください)。ファイル転送の場合、ミニドライバーは pIWiaMiniDrvCallBack メンバーに格納されている値をチェックする必要があります。 そのメンバーが NULL の場合、WIA サービスはコールバック ルーチンを提供しないため、ドライバーは呼び出しを試みてはいけません。 メモリ コールバック転送の場合、WIA サービスは常にコールバックを提供します。
このメンバーは、そのメンバーに関連する情報を 、結び付けた メンバーで伝達します。 詳細については、「解説」を参照してください。
bClassDrvAllocBuf
WIA サービスが転送バッファーを割り当てたかどうかを指定します。 この値は、WIA サービスがバッファーを割り当てた場合は TRUE 、そうでない場合は FALSE です。 その場合、転送バッファーを割り当てるのはミニドライバーの責任です。
lClientAddress
クライアントのアドレス空間内の転送のアドレスを指定します。 ミニドライバーは、この値を変更しないでください。
pIWiaMiniDrvCallBack
データまたは状態コールバック転送に使用される IWiaMiniDrvCallBack インターフェイス を指します。
lImageSize
1 ページ内の非圧縮ビットのサイズをバイト単位で指定します。
lHeaderSize
1 ページ内のイメージ ヘッダー データのサイズをバイト単位で指定します。
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定数のみが使用されているため、 tymed メンバーと bTransferDataCB メンバーは基本的に同じ情報を格納します。 ファイル転送の場合、 bTransferDataCB が FALSE に設定されている場合、 tymed は TYMED_FILE または TYMED_MULTIPAGE_FILE に設定されます。 メモリ コールバック転送の場合、 bTransferDataCB が TRUE に設定されている場合、 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
ミニドライバーまたは wiasGetImageInformation サービス ライブラリ関数は、次の構造体メンバーを設定します。
lImageSize
lHeaderSize
lItemSize
cbWidthInBytes
この構造体の次のメンバーは、データ転送コールバックで使用されます。 WIA サービスまたはミニドライバーは、これらのメンバーを設定します。 場合によっては、 bClassDrvAllocBuf に格納されている値によって、WIA サービスまたはミニドライバーがメンバーを設定するかどうかが決まります。
メンバー | 設定者 |
---|---|
cbOffset | ミニドライバー |
lBufferSize | WIA サービスまたはミニドライバー。 bClassDrvAllocBuf が TRUE の場合、WIA サービスはこのメンバーを設定します。それ以外の場合は、ミニドライバーによって設定されます。 |
lActiveBuffer | WIA サービス。 ミニドライバーは、このメンバーを変更できません。 |
lNumBuffers | WIA サービス。 ミニドライバーは、このメンバーを変更できません。 |
pBaseBuffer | WIA サービスまたはミニドライバー。 bClassDrvAllocBuf が TRUE の場合、WIA サービスはこのメンバーを設定します。それ以外の場合は、ミニドライバーによって設定されます。 |
pTransferBuffer | WIA サービスまたはミニドライバー。 bClassDrvAllocBuf が TRUE の場合、WIA サービスはこのメンバーを設定します。それ以外の場合は、ミニドライバーによって設定されます。 |
lClientAddress | WIA サービス。 ミニドライバーは、このメンバーを変更できません。 |
pIWiaMiniDrvCallBack | WIA サービス |
要件
要件 | 値 |
---|---|
Header | wiamindr_lh.h (Wiamindr.h を含む) |
こちらもご覧ください
IWiaMiniDrv::d rvAcquireItemData