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

IStiDeviceControl

COM
IID128a9860-52dc-11d0-9edf-444553540000継承元IUnknown自前メソッド開始 vtbl3

メソッド 11

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

vtbl 3 HRESULT Initialize(DWORD dwDeviceType, DWORD dwMode, LPWSTR pwszPortName, DWORD dwFlags)
dwDeviceTypeDWORDin制御対象デバイスの種別を示す値。
dwModeDWORDinデバイスを開くアクセスモードを示す値。
pwszPortNameLPWSTRin通信に使用するポート名。
dwFlagsDWORDin初期化動作を制御するフラグ。
vtbl 4 HRESULT RawReadData(void* lpBuffer, DWORD* lpdwNumberOfBytes, OVERLAPPED* lpOverlapped)
lpBuffervoid*inout読み取ったデータを受け取るバッファー。
lpdwNumberOfBytesDWORD*inout入力時は要求バイト数、出力時は実読み取りバイト数を示すポインター。
lpOverlappedOVERLAPPED*inout非同期I/O用のOVERLAPPED構造体。同期時はNULL可。
vtbl 5 HRESULT RawWriteData(void* lpBuffer, DWORD nNumberOfBytes, OVERLAPPED* lpOverlapped)
lpBuffervoid*inoutデバイスへ書き込むデータを格納したバッファー。
nNumberOfBytesDWORDin書き込むデータのバイト数。
lpOverlappedOVERLAPPED*inout非同期I/O用のOVERLAPPED構造体。同期時はNULL可。
vtbl 6 HRESULT RawReadCommand(void* lpBuffer, DWORD* lpdwNumberOfBytes, OVERLAPPED* lpOverlapped)
lpBuffervoid*inout読み取ったコマンド応答データを受け取るバッファー。
lpdwNumberOfBytesDWORD*inout入力時は要求バイト数、出力時は実読み取りバイト数を示すポインター。
lpOverlappedOVERLAPPED*inout非同期I/O用のOVERLAPPED構造体。同期時はNULL可。
vtbl 7 HRESULT RawWriteCommand(void* lpBuffer, DWORD nNumberOfBytes, OVERLAPPED* lpOverlapped)
lpBuffervoid*inoutデバイスへ送信するコマンドデータを格納したバッファー。
nNumberOfBytesDWORDin送信するコマンドのバイト数。
lpOverlappedOVERLAPPED*inout非同期I/O用のOVERLAPPED構造体。同期時はNULL可。
vtbl 8 HRESULT RawDeviceControl(DWORD EscapeFunction, void* lpInData, DWORD cbInDataSize, void* pOutData, DWORD dwOutDataSize, DWORD* pdwActualData)
EscapeFunctionDWORDin実行するデバイス固有制御機能の番号。
lpInDatavoid*inout制御機能へ渡す入力データのバッファー。
cbInDataSizeDWORDin入力データのサイズ(バイト単位)。
pOutDatavoid*inout制御機能からの出力データを受け取るバッファー。
dwOutDataSizeDWORDin出力バッファーのサイズ(バイト単位)。
pdwActualDataDWORD*inout実際に書き込まれた出力バイト数を受け取るポインター。
vtbl 9 HRESULT GetLastError(DWORD* lpdwLastError)
lpdwLastErrorDWORD*inout最後に発生したエラーコードを受け取るポインター。
vtbl 10 HRESULT GetMyDevicePortName(LPWSTR lpszDevicePath, DWORD cwDevicePathSize)
lpszDevicePathLPWSTRoutデバイスのポート名/パスを受け取るバッファー。
cwDevicePathSizeDWORDinバッファーのサイズ(文字数)。
vtbl 11 HRESULT GetMyDeviceHandle(HANDLE* lph)
lphHANDLE*inoutデバイスのオープン済みハンドルを受け取るポインター。
vtbl 12 HRESULT GetMyDeviceOpenMode(DWORD* pdwOpenMode)
pdwOpenModeDWORD*inoutデバイスを開いた際のアクセスモードを受け取るポインター。
vtbl 13 HRESULT WriteToErrorLog(DWORD dwMessageType, LPWSTR pszMessage, DWORD dwErrorCode)
dwMessageTypeDWORDinログメッセージの種別を示す値。
pszMessageLPWSTRinエラーログに書き込むメッセージ文字列。
dwErrorCodeDWORDinログに記録する関連エラーコード。

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IStiDeviceControl "{128A9860-52DC-11D0-9EDF-444553540000}"
#usecom global IStiDeviceControl IID_IStiDeviceControl "{}"
#comfunc global IStiDeviceControl_Initialize           3 int,int,wstr,int
#comfunc global IStiDeviceControl_RawReadData          4 sptr,var,var
#comfunc global IStiDeviceControl_RawWriteData         5 sptr,int,var
#comfunc global IStiDeviceControl_RawReadCommand       6 sptr,var,var
#comfunc global IStiDeviceControl_RawWriteCommand      7 sptr,int,var
#comfunc global IStiDeviceControl_RawDeviceControl     8 int,sptr,int,sptr,int,var
#comfunc global IStiDeviceControl_GetLastError         9 var
#comfunc global IStiDeviceControl_GetMyDevicePortName  10 var,int
#comfunc global IStiDeviceControl_GetMyDeviceHandle    11 sptr
#comfunc global IStiDeviceControl_GetMyDeviceOpenMode  12 var
#comfunc global IStiDeviceControl_WriteToErrorLog      13 int,wstr,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。