ホーム › System.ComponentServices › IComThreadEvents
IComThreadEvents
COMメソッド 11
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
vtbl 3 HRESULT OnThreadStart(COMSVCSEVENTINFO* pInfo, ULONGLONG ThreadID, DWORD dwThread, DWORD dwTheadCnt)
| pInfo | COMSVCSEVENTINFO* | in | イベント発生時の状況を示す COMSVCSEVENTINFO 構造体へのポインタである。 |
| ThreadID | ULONGLONG | in | 開始したスレッドの識別子を渡す。 |
| dwThread | DWORD | in | スレッドを識別する追加情報を渡す。 |
| dwTheadCnt | DWORD | in | 現在のスレッド数を渡す。 |
vtbl 4 HRESULT OnThreadTerminate(COMSVCSEVENTINFO* pInfo, ULONGLONG ThreadID, DWORD dwThread, DWORD dwTheadCnt)
| pInfo | COMSVCSEVENTINFO* | in | イベント発生時の状況を示す COMSVCSEVENTINFO 構造体へのポインタである。 |
| ThreadID | ULONGLONG | in | 終了したスレッドの識別子を渡す。 |
| dwThread | DWORD | in | スレッドを識別する追加情報を渡す。 |
| dwTheadCnt | DWORD | in | 終了後の現在のスレッド数を渡す。 |
vtbl 5 HRESULT OnThreadBindToApartment(COMSVCSEVENTINFO* pInfo, ULONGLONG ThreadID, ULONGLONG AptID, DWORD dwActCnt, DWORD dwLowCnt)
| pInfo | COMSVCSEVENTINFO* | in | イベント発生時の状況を示す COMSVCSEVENTINFO 構造体へのポインタである。 |
| ThreadID | ULONGLONG | in | アパートメントへバインドされたスレッドの識別子を渡す。 |
| AptID | ULONGLONG | in | バインド先アパートメントの識別子を渡す。 |
| dwActCnt | DWORD | in | アパートメントのアクティブ化カウントを渡す。 |
| dwLowCnt | DWORD | in | アパートメントの最小カウントを渡す。 |
vtbl 6 HRESULT OnThreadUnBind(COMSVCSEVENTINFO* pInfo, ULONGLONG ThreadID, ULONGLONG AptID, DWORD dwActCnt)
| pInfo | COMSVCSEVENTINFO* | in | イベント発生時の状況を示す COMSVCSEVENTINFO 構造体へのポインタである。 |
| ThreadID | ULONGLONG | in | アンバインドされたスレッドの識別子を渡す。 |
| AptID | ULONGLONG | in | アンバインド元アパートメントの識別子を渡す。 |
| dwActCnt | DWORD | in | アパートメントのアクティブ化カウントを渡す。 |
vtbl 7 HRESULT OnThreadWorkEnque(COMSVCSEVENTINFO* pInfo, ULONGLONG ThreadID, ULONGLONG MsgWorkID, DWORD QueueLen)
| pInfo | COMSVCSEVENTINFO* | in | イベント発生時の状況を示す COMSVCSEVENTINFO 構造体へのポインタである。 |
| ThreadID | ULONGLONG | in | 対象スレッドの識別子を渡す。 |
| MsgWorkID | ULONGLONG | in | キューに追加された作業項目(メッセージ)の識別子を渡す。 |
| QueueLen | DWORD | in | キューの現在の長さを渡す。 |
vtbl 8 HRESULT OnThreadWorkPrivate(COMSVCSEVENTINFO* pInfo, ULONGLONG ThreadID, ULONGLONG MsgWorkID)
| pInfo | COMSVCSEVENTINFO* | in | イベント発生時の状況を示す COMSVCSEVENTINFO 構造体へのポインタである。 |
| ThreadID | ULONGLONG | in | 対象スレッドの識別子を渡す。 |
| MsgWorkID | ULONGLONG | in | 処理対象のプライベート作業項目の識別子を渡す。 |
vtbl 9 HRESULT OnThreadWorkPublic(COMSVCSEVENTINFO* pInfo, ULONGLONG ThreadID, ULONGLONG MsgWorkID, DWORD QueueLen)
| pInfo | COMSVCSEVENTINFO* | in | イベント発生時の状況を示す COMSVCSEVENTINFO 構造体へのポインタである。 |
| ThreadID | ULONGLONG | in | 対象スレッドの識別子を渡す。 |
| MsgWorkID | ULONGLONG | in | 処理対象のパブリック作業項目の識別子を渡す。 |
| QueueLen | DWORD | in | キューの現在の長さを渡す。 |
vtbl 10 HRESULT OnThreadWorkRedirect(COMSVCSEVENTINFO* pInfo, ULONGLONG ThreadID, ULONGLONG MsgWorkID, DWORD QueueLen, ULONGLONG ThreadNum)
| pInfo | COMSVCSEVENTINFO* | in | イベント発生時の状況を示す COMSVCSEVENTINFO 構造体へのポインタである。 |
| ThreadID | ULONGLONG | in | 対象スレッドの識別子を渡す。 |
| MsgWorkID | ULONGLONG | in | リダイレクトされた作業項目の識別子を渡す。 |
| QueueLen | DWORD | in | キューの現在の長さを渡す。 |
| ThreadNum | ULONGLONG | in | リダイレクト先のスレッド番号を渡す。 |
vtbl 11 HRESULT OnThreadWorkReject(COMSVCSEVENTINFO* pInfo, ULONGLONG ThreadID, ULONGLONG MsgWorkID, DWORD QueueLen)
| pInfo | COMSVCSEVENTINFO* | in | イベント発生時の状況を示す COMSVCSEVENTINFO 構造体へのポインタである。 |
| ThreadID | ULONGLONG | in | 対象スレッドの識別子を渡す。 |
| MsgWorkID | ULONGLONG | in | 拒否された作業項目の識別子を渡す。 |
| QueueLen | DWORD | in | キューの現在の長さを渡す。 |
vtbl 12 HRESULT OnThreadAssignApartment(COMSVCSEVENTINFO* pInfo, GUID* guidActivity, ULONGLONG AptID)
| pInfo | COMSVCSEVENTINFO* | in | イベント発生時の状況を示す COMSVCSEVENTINFO 構造体へのポインタである。 |
| guidActivity | GUID* | in | 対象のアクティビティを識別する GUID へのポインタである。 |
| AptID | ULONGLONG | in | 割り当てられたアパートメントの識別子を渡す。 |
vtbl 13 HRESULT OnThreadUnassignApartment(COMSVCSEVENTINFO* pInfo, ULONGLONG AptID)
| pInfo | COMSVCSEVENTINFO* | in | イベント発生時の状況を示す COMSVCSEVENTINFO 構造体へのポインタである。 |
| AptID | ULONGLONG | in | 割り当てが解除されたアパートメントの識別子を渡す。 |
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_IComThreadEvents "{683130A5-2E50-11D2-98A5-00C04F8EE1C4}" #usecom global IComThreadEvents IID_IComThreadEvents "{}" #comfunc global IComThreadEvents_OnThreadStart 3 var,int64,int,int #comfunc global IComThreadEvents_OnThreadTerminate 4 var,int64,int,int #comfunc global IComThreadEvents_OnThreadBindToApartment 5 var,int64,int64,int,int #comfunc global IComThreadEvents_OnThreadUnBind 6 var,int64,int64,int #comfunc global IComThreadEvents_OnThreadWorkEnque 7 var,int64,int64,int #comfunc global IComThreadEvents_OnThreadWorkPrivate 8 var,int64,int64 #comfunc global IComThreadEvents_OnThreadWorkPublic 9 var,int64,int64,int #comfunc global IComThreadEvents_OnThreadWorkRedirect 10 var,int64,int64,int,int64 #comfunc global IComThreadEvents_OnThreadWorkReject 11 var,int64,int64,int #comfunc global IComThreadEvents_OnThreadAssignApartment 12 var,var,int64 #comfunc global IComThreadEvents_OnThreadUnassignApartment 13 var,int64 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IComThreadEvents "{683130A5-2E50-11D2-98A5-00C04F8EE1C4}" #usecom global IComThreadEvents IID_IComThreadEvents "{}" #comfunc global IComThreadEvents_OnThreadStart 3 sptr,int64,int,int #comfunc global IComThreadEvents_OnThreadTerminate 4 sptr,int64,int,int #comfunc global IComThreadEvents_OnThreadBindToApartment 5 sptr,int64,int64,int,int #comfunc global IComThreadEvents_OnThreadUnBind 6 sptr,int64,int64,int #comfunc global IComThreadEvents_OnThreadWorkEnque 7 sptr,int64,int64,int #comfunc global IComThreadEvents_OnThreadWorkPrivate 8 sptr,int64,int64 #comfunc global IComThreadEvents_OnThreadWorkPublic 9 sptr,int64,int64,int #comfunc global IComThreadEvents_OnThreadWorkRedirect 10 sptr,int64,int64,int,int64 #comfunc global IComThreadEvents_OnThreadWorkReject 11 sptr,int64,int64,int #comfunc global IComThreadEvents_OnThreadAssignApartment 12 sptr,sptr,int64 #comfunc global IComThreadEvents_OnThreadUnassignApartment 13 sptr,int64 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。