wiasWritePageBufToFile 関数 (wiamdef.h)
wiasWritePageBufToFile 関数は、一時ページ バッファーの内容をイメージ ファイルに書き込みます。
構文
HRESULT wiasWritePageBufToFile(
[in] PMINIDRV_TRANSFER_CONTEXT pmdtc
);
パラメーター
[in] pmdtc
MINIDRV_TRANSFER_CONTEXT 構造体へのポインター。
戻り値
成功すると、関数はS_OKを返します。 関数が失敗すると、標準の COM エラーまたは WIA_ERROR_XXX エラーのいずれかが返されます (Microsoft Windows SDK のドキュメントで説明)。
備考
この関数は、ミニドライバーによって割り当てられた一時ページ バッファーから WIA サービスによって開かれたイメージ ファイルにデータを書き込みます。 ミニドライバーは通常、ミニドライバーが一時バッファーを割り当てたデータのページを取得した後、この関数を呼び出します。
この関数は、wiasWriteBufToFileに似ています。これは、イメージ データのバッファーを任意の種類のイメージ ファイルに書き込むのに使用できます。 WIA ミニドライバーは、すべての適切なタグ、イメージ ファイル ディレクトリ (IFD) エントリ、およびその他の非イメージ データを含む、複数ページの TIFF ファイルにイメージ データのページを書き込む場合は、wiasWriteBufToFile ではなく、この関数を呼び出す必要があります。
pmdtc ->hFile式には、TYMED_FILE (およびTYMED_MULTIPAGE_FILE) 転送内のファイルへのハンドルが含まれています。 これを使用して、書き込み対象のファイルに直接アクセスできます。
その使用方法の例を次に示します。
SetFilePointer((HANDLE)(LONG_PTR)pmdtc->hFile,0,NULL,FILE_BEGIN);
if (!WriteFile((HANDLE)(LONG_PTR)pmdtc->hFile,
pMyBuffer,
dwNumBytesToWrite,
&dwNumBytesWritten,
NULL)) {
//
// Some error happened
//
.
.
.
}
ただし、TYMED_FILEでファイル ハンドルのみを使用し、TYMED_MULTIPAGE_FILE転送 (wiasWritePageBufToFile を呼び出す代わりに、ファイル ハンドルを使用してファイルに直接データを書き込む) 場合は、wiasWriteBufToFile 使用します。 この関数は、次の関数と同等の処理を実行します。
bRet = WriteFile((HANDLE)ULongToPtr(pmdtc->hFile),
pmdtc->pTransferBuffer,
pmdtc->lItemSize,
&ulWritten,
NULL);
これは基本的に、ファイル ハンドルを直接使用した場合に行う処理です。 最初の例の利点は、WIA の将来のリリースで実装が変更された場合 (たとえば、WIA サービスが内部的にファイルではなくパイプを使用し始めた場合)、ドライバーを更新する必要がないようにすることです。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Microsoft Windows Me および Windows XP 以降のバージョンの Windows オペレーティング システムで使用できます。 |
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | wiamdef.h (Wiamdef.h を含む) |
ライブラリ | Wiaservc.lib |
DLL | Wiaservc.dll |
関連項目
wiasWriteBufToFile を する