次の方法で共有


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

関連項目

MINIDRV_TRANSFER_CONTEXT

wiasWriteBufToFile する

wiasWritePageBufToStream