ホーム › Media.DeviceManager › IMDSPDevice3
IMDSPDevice3
COMメソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
vtbl 18 HRESULT GetProperty(LPWSTR pwszPropName, PROPVARIANT* pValue)
| pwszPropName | LPWSTR | in | 取得するプロパティ名を示す文字列。 |
| pValue | PROPVARIANT* | out | プロパティ値を受け取るPROPVARIANTの出力。 |
vtbl 19 HRESULT SetProperty(LPWSTR pwszPropName, PROPVARIANT* pValue)
| pwszPropName | LPWSTR | in | 設定するプロパティ名を示す文字列。 |
| pValue | PROPVARIANT* | in | 設定するプロパティ値を保持するPROPVARIANT。 |
vtbl 20 HRESULT GetFormatCapability(WMDM_FORMATCODE format, WMDM_FORMAT_CAPABILITY* pFormatSupport)
| format | WMDM_FORMATCODE | in | 問い合わせ対象のフォーマットを示すWMDM_FORMATCODE列挙値。 |
| pFormatSupport | WMDM_FORMAT_CAPABILITY* | out | 当該フォーマットの対応能力を受け取るWMDM_FORMAT_CAPABILITYの出力。 |
vtbl 21 HRESULT DeviceIoControl(DWORD dwIoControlCode, BYTE* lpInBuffer, DWORD nInBufferSize, BYTE* lpOutBuffer, DWORD* pnOutBufferSize)
| dwIoControlCode | DWORD | in | デバイスに送る制御コードを指定する。実行する操作を識別する。 |
| lpInBuffer | BYTE* | in | 入力データを格納したバッファ。コマンドへの入力。 |
| nInBufferSize | DWORD | in | 入力バッファのサイズをバイト単位で指定する。 |
| lpOutBuffer | BYTE* | out | 出力データを受け取るバッファ。コマンドの結果が格納される。 |
| pnOutBufferSize | DWORD* | inout | 出力バッファのサイズを入出力で受け渡す。実際の書き込み量を返す。 |
vtbl 22 HRESULT FindStorage(WMDM_FIND_SCOPE findScope, LPWSTR pwszUniqueID, IMDSPStorage** ppStorage)
| findScope | WMDM_FIND_SCOPE | in | 検索範囲を示すWMDM_FIND_SCOPE列挙値。デバイス全体やシリアル一致等を指定する。 |
| pwszUniqueID | LPWSTR | in | 検索キーとなる一意ID文字列。 |
| ppStorage | IMDSPStorage** | out | 見つかったIMDSPStorageを受け取る出力。 |
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_IMDSPDevice3 "{1A839845-FC55-487C-976F-EE38AC0E8C4E}" #usecom global IMDSPDevice3 IID_IMDSPDevice3 "{}" #comfunc global IMDSPDevice3_GetProperty 18 wstr,var #comfunc global IMDSPDevice3_SetProperty 19 wstr,var #comfunc global IMDSPDevice3_GetFormatCapability 20 int,var #comfunc global IMDSPDevice3_DeviceIoControl 21 int,var,int,var,var #comfunc global IMDSPDevice3_FindStorage 22 int,wstr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMDSPDevice3 "{1A839845-FC55-487C-976F-EE38AC0E8C4E}" #usecom global IMDSPDevice3 IID_IMDSPDevice3 "{}" #comfunc global IMDSPDevice3_GetProperty 18 wstr,sptr #comfunc global IMDSPDevice3_SetProperty 19 wstr,sptr #comfunc global IMDSPDevice3_GetFormatCapability 20 int,sptr #comfunc global IMDSPDevice3_DeviceIoControl 21 int,sptr,int,sptr,sptr #comfunc global IMDSPDevice3_FindStorage 22 int,wstr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。