Win32 API 日本語リファレンス
ホームDevices.Fax › IStiUSD

IStiUSD

COM
IID0c9bb460-51ac-11d0-90ea-00aa0060f86c継承元IUnknown自前メソッド開始 vtbl3

メソッド 16

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT Initialize(IStiDeviceControl* pHelDcb, DWORD dwStiVersion, HKEY hParametersKey)
pHelDcbIStiDeviceControl*inハードウェア入出力を仲介するIStiDeviceControlインターフェイス。
dwStiVersionDWORDin使用するSTI APIのバージョン番号。
hParametersKeyHKEYinデバイスパラメーターが格納されたレジストリキーのハンドル。
vtbl 4 HRESULT GetCapabilities(STI_USD_CAPS* pDevCaps)
pDevCapsSTI_USD_CAPS*outUSD(ユーザーモードデバイスドライバ)の機能情報を受け取るSTI_USD_CAPS構造体。
vtbl 5 HRESULT GetStatus(STI_DEVICE_STATUS* pDevStatus)
pDevStatusSTI_DEVICE_STATUS*inoutデバイスの現在の状態を受け取るSTI_DEVICE_STATUS構造体。
vtbl 6 HRESULT DeviceReset()
vtbl 7 HRESULT Diagnostic(STI_DIAG* pBuffer)
pBufferSTI_DIAG*inout診断の実行結果を受け取るSTI_DIAG構造体。
vtbl 8 HRESULT Escape(DWORD EscapeFunction, void* lpInData, DWORD cbInDataSize, void* pOutData, DWORD cbOutDataSize, DWORD* pdwActualData)
EscapeFunctionDWORDin実行するデバイス固有エスケープ機能の番号。
lpInDatavoid*inエスケープ機能へ渡す入力データのバッファー。
cbInDataSizeDWORDin入力データのサイズ(バイト単位)。
pOutDatavoid*outエスケープ機能からの出力データを受け取るバッファー。
cbOutDataSizeDWORDin出力バッファーのサイズ(バイト単位)。
pdwActualDataDWORD*out実際に書き込まれた出力バイト数を受け取るポインター。
vtbl 9 HRESULT GetLastError(DWORD* pdwLastDeviceError)
pdwLastDeviceErrorDWORD*outデバイスで最後に発生したエラーコードを受け取るポインター。
vtbl 10 HRESULT LockDevice()
vtbl 11 HRESULT UnLockDevice()
vtbl 12 HRESULT RawReadData(void* lpBuffer, DWORD* lpdwNumberOfBytes, OVERLAPPED* lpOverlapped)
lpBuffervoid*out読み取ったデータを受け取るバッファー。
lpdwNumberOfBytesDWORD*inout入力時は要求バイト数、出力時は実読み取りバイト数を示すポインター。
lpOverlappedOVERLAPPED*inoptional非同期I/O用のOVERLAPPED構造体。同期時はNULL可。
vtbl 13 HRESULT RawWriteData(void* lpBuffer, DWORD nNumberOfBytes, OVERLAPPED* lpOverlapped)
lpBuffervoid*inデバイスへ書き込むデータを格納したバッファー。
nNumberOfBytesDWORDin書き込むデータのバイト数。
lpOverlappedOVERLAPPED*inoptional非同期I/O用のOVERLAPPED構造体。同期時はNULL可。
vtbl 14 HRESULT RawReadCommand(void* lpBuffer, DWORD* lpdwNumberOfBytes, OVERLAPPED* lpOverlapped)
lpBuffervoid*out読み取ったコマンド応答データを受け取るバッファー。
lpdwNumberOfBytesDWORD*inout入力時は要求バイト数、出力時は実読み取りバイト数を示すポインター。
lpOverlappedOVERLAPPED*inoptional非同期I/O用のOVERLAPPED構造体。同期時はNULL可。
vtbl 15 HRESULT RawWriteCommand(void* lpBuffer, DWORD nNumberOfBytes, OVERLAPPED* lpOverlapped)
lpBuffervoid*inデバイスへ送信するコマンドデータを格納したバッファー。
nNumberOfBytesDWORDin送信するコマンドのバイト数。
lpOverlappedOVERLAPPED*inoptional非同期I/O用のOVERLAPPED構造体。同期時はNULL可。
vtbl 16 HRESULT SetNotificationHandle(HANDLE hEvent)
hEventHANDLEinoptionalデバイス通知時にシグナル状態となるイベントハンドル。NULLで通知無効化。
vtbl 17 HRESULT GetNotificationData(STINOTIFY* lpNotify)
lpNotifySTINOTIFY*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 指定が可能。