次の方法で共有


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 オペレーティング システムで使用できます。
対象プラットフォーム デスクトップ
Header wiamdef.h (Wiamdef.h を含む)
Library Wiaservc.lib
[DLL] Wiaservc.dll

こちらもご覧ください

MINIDRV_TRANSFER_CONTEXT

wiasWriteBufToFile

wiasWritePageBufToStream