ホーム › Devices.Fax › IStiUSD
IStiUSD
COMメソッド 16
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
vtbl 3 HRESULT Initialize(IStiDeviceControl* pHelDcb, DWORD dwStiVersion, HKEY hParametersKey)
| pHelDcb | IStiDeviceControl* | in | ハードウェア入出力を仲介するIStiDeviceControlインターフェイス。 |
| dwStiVersion | DWORD | in | 使用するSTI APIのバージョン番号。 |
| hParametersKey | HKEY | in | デバイスパラメーターが格納されたレジストリキーのハンドル。 |
vtbl 4 HRESULT GetCapabilities(STI_USD_CAPS* pDevCaps)
| pDevCaps | STI_USD_CAPS* | out | USD(ユーザーモードデバイスドライバ)の機能情報を受け取るSTI_USD_CAPS構造体。 |
vtbl 5 HRESULT GetStatus(STI_DEVICE_STATUS* pDevStatus)
| pDevStatus | STI_DEVICE_STATUS* | inout | デバイスの現在の状態を受け取るSTI_DEVICE_STATUS構造体。 |
vtbl 6 HRESULT DeviceReset()
| pBuffer | STI_DIAG* | inout | 診断の実行結果を受け取るSTI_DIAG構造体。 |
vtbl 8 HRESULT Escape(DWORD EscapeFunction, void* lpInData, DWORD cbInDataSize, void* pOutData, DWORD cbOutDataSize, DWORD* pdwActualData)
| EscapeFunction | DWORD | in | 実行するデバイス固有エスケープ機能の番号。 |
| lpInData | void* | in | エスケープ機能へ渡す入力データのバッファー。 |
| cbInDataSize | DWORD | in | 入力データのサイズ(バイト単位)。 |
| pOutData | void* | out | エスケープ機能からの出力データを受け取るバッファー。 |
| cbOutDataSize | DWORD | in | 出力バッファーのサイズ(バイト単位)。 |
| pdwActualData | DWORD* | out | 実際に書き込まれた出力バイト数を受け取るポインター。 |
| pdwLastDeviceError | DWORD* | out | デバイスで最後に発生したエラーコードを受け取るポインター。 |
vtbl 10 HRESULT LockDevice()
vtbl 11 HRESULT UnLockDevice()
vtbl 12 HRESULT RawReadData(void* lpBuffer, DWORD* lpdwNumberOfBytes, OVERLAPPED* lpOverlapped)
| lpBuffer | void* | out | 読み取ったデータを受け取るバッファー。 |
| lpdwNumberOfBytes | DWORD* | inout | 入力時は要求バイト数、出力時は実読み取りバイト数を示すポインター。 |
| lpOverlapped | OVERLAPPED* | inoptional | 非同期I/O用のOVERLAPPED構造体。同期時はNULL可。 |
vtbl 13 HRESULT RawWriteData(void* lpBuffer, DWORD nNumberOfBytes, OVERLAPPED* lpOverlapped)
| lpBuffer | void* | in | デバイスへ書き込むデータを格納したバッファー。 |
| nNumberOfBytes | DWORD | in | 書き込むデータのバイト数。 |
| lpOverlapped | OVERLAPPED* | inoptional | 非同期I/O用のOVERLAPPED構造体。同期時はNULL可。 |
vtbl 14 HRESULT RawReadCommand(void* lpBuffer, DWORD* lpdwNumberOfBytes, OVERLAPPED* lpOverlapped)
| lpBuffer | void* | out | 読み取ったコマンド応答データを受け取るバッファー。 |
| lpdwNumberOfBytes | DWORD* | inout | 入力時は要求バイト数、出力時は実読み取りバイト数を示すポインター。 |
| lpOverlapped | OVERLAPPED* | inoptional | 非同期I/O用のOVERLAPPED構造体。同期時はNULL可。 |
vtbl 15 HRESULT RawWriteCommand(void* lpBuffer, DWORD nNumberOfBytes, OVERLAPPED* lpOverlapped)
| lpBuffer | void* | in | デバイスへ送信するコマンドデータを格納したバッファー。 |
| nNumberOfBytes | DWORD | in | 送信するコマンドのバイト数。 |
| lpOverlapped | OVERLAPPED* | inoptional | 非同期I/O用のOVERLAPPED構造体。同期時はNULL可。 |
| hEvent | HANDLE | inoptional | デバイス通知時にシグナル状態となるイベントハンドル。NULLで通知無効化。 |
| lpNotify | STINOTIFY* | out | 直近のデバイス通知データを受け取るSTINOTIFY構造体。 |
vtbl 18 HRESULT GetLastErrorInfo(_ERROR_INFOW* pLastErrorInfo)
| pLastErrorInfo | _ERROR_INFOW* | out | 直近のエラーの詳細情報を受け取る_ERROR_INFOW構造体。 |
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_IStiUSD "{0C9BB460-51AC-11D0-90EA-00AA0060F86C}" #usecom global IStiUSD IID_IStiUSD "{}" #comfunc global IStiUSD_Initialize 3 sptr,int,sptr #comfunc global IStiUSD_GetCapabilities 4 var #comfunc global IStiUSD_GetStatus 5 var #comfunc global IStiUSD_DeviceReset 6 #comfunc global IStiUSD_Diagnostic 7 var #comfunc global IStiUSD_Escape 8 int,sptr,int,sptr,int,var #comfunc global IStiUSD_GetLastError 9 var #comfunc global IStiUSD_LockDevice 10 #comfunc global IStiUSD_UnLockDevice 11 #comfunc global IStiUSD_RawReadData 12 sptr,var,var #comfunc global IStiUSD_RawWriteData 13 sptr,int,var #comfunc global IStiUSD_RawReadCommand 14 sptr,var,var #comfunc global IStiUSD_RawWriteCommand 15 sptr,int,var #comfunc global IStiUSD_SetNotificationHandle 16 sptr #comfunc global IStiUSD_GetNotificationData 17 var #comfunc global IStiUSD_GetLastErrorInfo 18 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IStiUSD "{0C9BB460-51AC-11D0-90EA-00AA0060F86C}" #usecom global IStiUSD IID_IStiUSD "{}" #comfunc global IStiUSD_Initialize 3 sptr,int,sptr #comfunc global IStiUSD_GetCapabilities 4 sptr #comfunc global IStiUSD_GetStatus 5 sptr #comfunc global IStiUSD_DeviceReset 6 #comfunc global IStiUSD_Diagnostic 7 sptr #comfunc global IStiUSD_Escape 8 int,sptr,int,sptr,int,sptr #comfunc global IStiUSD_GetLastError 9 sptr #comfunc global IStiUSD_LockDevice 10 #comfunc global IStiUSD_UnLockDevice 11 #comfunc global IStiUSD_RawReadData 12 sptr,sptr,sptr #comfunc global IStiUSD_RawWriteData 13 sptr,int,sptr #comfunc global IStiUSD_RawReadCommand 14 sptr,sptr,sptr #comfunc global IStiUSD_RawWriteCommand 15 sptr,int,sptr #comfunc global IStiUSD_SetNotificationHandle 16 sptr #comfunc global IStiUSD_GetNotificationData 17 sptr #comfunc global IStiUSD_GetLastErrorInfo 18 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。