IWiaTransferCallback::GetNextStream メソッド
指定した項目の新しいストリームを取得します。
構文
HRESULT GetNextStream(
[in] LONG lFlags,
[in] BSTR bstrItemName,
[in] BSTR bstrFullItemName,
[out] IStream **ppDestination
);
パラメーター
-
lFlags [in]
-
型: LONG
現在使用されていません。 ゼロに設定してください。
-
bstrItemName [in]
-
種類: BSTR
ストリームを作成する項目の名前を指定します。
-
bstrFullItemName [in]
-
種類: BSTR
ストリームを作成するアイテムの完全な名前を指定します。
-
ppDestination [out]
-
種類: IStream**
新しい IStream オブジェクトへのポインターのアドレスを受け取ります。
戻り値
型: HRESULT
このメソッドが成功すると、 S_OKが返されます。 それ以外の場合は、 HRESULT エラー コードが返されます。
注釈
このメソッドが画像処理フィルターによって実装されている場合、Windows Image Acquisition (WIA) 2.0 ミニドライバーは、イメージの取得中にそれを呼び出して、クライアントから宛先ストリームを取得します。
フィルターの IWiaTransferCallback::GetNextStream は、アプリケーションのコールバック メソッドに委任する必要があります。 フィルターは、アプリケーション コールバックの IWiaTransferCallback::GetNextStream 実装によって返されるストリームを使用して、WIA 2.0 サービスに返される独自のストリームを作成します。 フィルター処理は、フィルターのストリームが IStream::Write メソッドを呼び出すときに行われます。
フィルターのストリームでは、フィルター処理されていないイメージ データはドライバーではなく WIA 2.0 Preview コンポーネントから取得される可能性があるため、各書き込み時に書き込まれるバイト数を想定することはできません。 WIA 2.0 プレビュー コンポーネントは、フィルターのストリームにフィルター処理されていない画像データ全体を常に 1 回だけ書き込みます。つまり、フィルターのストリームに 1 つのソース書き込みが含まれます。 ドライバーとプレビュー コンポーネントの両方がフィルターのストリームに書き込まれる場合、フィルターのストリームでは、対応するドライバーが常に最初に 1 回の書き込みでヘッダー データを書き込みますが、 IStream::Write が初めて呼び出されるときに完全なヘッダーを受け取ると想定することはできません。 また、後続の書き込みには 1 つのスキャン行が含まれていると想定することもできません。 そのため、フィルター 処理ストリームでは、書き込まれたバイト数をカウントして、画像データの開始位置などを決定する必要がある場合があります。
画像処理フィルターの IWiaTransferCallback::GetNextStream 実装では、イメージを取得するアイテムから、その画像処理に必要なプロパティを読み取る必要があります。 フィルターは、InitializeFilter に渡された pWiaItem2 からプロパティを直接読み取りません。 代わりに、この WIA 2.0 項目で FindItemByName を呼び出して、実際の WIA 2.0 アイテムを取得する必要があります。 その理由は、取得されるイメージが実際には pWiaItem2 の子項目である可能性があるためです。 たとえば、フォルダーの取得中に、フィルターは pWiaItem2 を使用して IWiaTransferCallback::GetNextStream 内の pWiaItem2 の子アイテムを取得します (フォルダーの取得中に、ドライバーは pWiaItem2 の子項目で表されるイメージを返します)。 WIA 2.0 プレビュー コンポーネントが子 WIA 2.0 項目を渡す画像処理フィルターを呼び出す場合も同様です。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー |
Windows Server 2008 [デスクトップ アプリのみ] |
Header |
|
IDL |
|
ライブラリ |
|