IWiaItemExtras
COM公式ドキュメント
IWiaItemExtras インターフェイスは、アプリケーションがハードウェアドライバーと通信できるようにするいくつかのメソッドを提供します。
解説(Remarks)
IWiaItemExtras インターフェイスは、すべての Component Object Model (COM) インターフェイスと同様に、IUnknown インターフェイスのメソッドを継承します。
| IUnknown のメソッド | 説明 |
|---|---|
| IUnknown::QueryInterface | サポートされているインターフェイスへのポインターを返します。 |
| IUnknown::AddRef | 参照カウントをインクリメントします。 |
| IUnknown::Release | 参照カウントをデクリメントします。 |
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
IWiaItemExtras::GetExtendedErrorInfo メソッドは、直近のエラーに関する情報を含む文字列をデバイスドライバーから取得します。
| bstrErrorText | LPWSTR* | out | エラー情報を含む文字列へのポインターです。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
アプリケーションは、bstrErrorText が指す文字列を解放するために SysFreeString 関数を呼び出す必要があります。
IWiaItemExtras::Escape メソッドは、ベンダー固有の I/O 操作の要求を静止画像デバイスに送信します。
| dwEscapeCode | DWORD | in | 呼び出し元アプリケーションが指定する、ベンダー定義の DWORD サイズの値で、I/O 操作を表します。 |
| lpInData | BYTE* | in | デバイスへ送信するデータを含む、呼び出し元アプリケーションが用意したバッファーへのポインターです。 |
| cbInDataSize | DWORD | in | 呼び出し元アプリケーションが指定する、lpInData が指すバッファーに格納されたデータの長さ (バイト単位) です。 |
| pOutData | BYTE* | out | デバイスからデータを受け取るための、呼び出し元アプリケーションが用意したメモリバッファーへのポインターです。 |
| dwOutDataSize | DWORD | in | 呼び出し元アプリケーションが指定する、pOutData が指すバッファーの長さ (バイト単位) です。 |
| pdwActualDataSize | DWORD* | out | 実際に pOutData に書き込まれたバイト数を受け取ります。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
IWiaItemExtras::CancelPendingIO メソッドは、ドライバー上で保留中のすべての入出力操作をキャンセルします。
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
ドライバーがこのメソッドをサポートすることは必須ではありません。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWiaItemExtras "{6291EF2C-36EF-4532-876A-8E132593778D}" #usecom global IWiaItemExtras IID_IWiaItemExtras "{}" #comfunc global IWiaItemExtras_GetExtendedErrorInfo 3 var #comfunc global IWiaItemExtras_Escape 4 int,var,int,var,int,var #comfunc global IWiaItemExtras_CancelPendingIO 5 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IWiaItemExtras "{6291EF2C-36EF-4532-876A-8E132593778D}" #usecom global IWiaItemExtras IID_IWiaItemExtras "{}" #comfunc global IWiaItemExtras_GetExtendedErrorInfo 3 sptr #comfunc global IWiaItemExtras_Escape 4 int,sptr,int,sptr,int,sptr #comfunc global IWiaItemExtras_CancelPendingIO 5 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。