Win32 API 日本語リファレンス
ホームSystem.ClrHosting › ICorThreadpool

ICorThreadpool

COM
IID84680d3a-b2c1-46e8-acc2-dbc0a359159a継承元IUnknown自前メソッド開始 vtbl3

メソッド 11

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

vtbl 3 HRESULT CorRegisterWaitForSingleObject(HANDLE* phNewWaitObject, HANDLE hWaitObject, WAITORTIMERCALLBACK Callback, void* Context, DWORD timeout, BOOL executeOnlyOnce, BOOL* result)
phNewWaitObjectHANDLE*in新たに登録された待機オブジェクトのハンドルを受け取るポインタである。
hWaitObjectHANDLEin待機対象となるオブジェクト(イベント等)のハンドルである。
CallbackWAITORTIMERCALLBACKin待機が解決された際に呼び出されるコールバック(WAITORTIMERCALLBACK)である。
Contextvoid*inコールバックに渡される任意のコンテキストデータへのポインタである。
timeoutDWORDin待機のタイムアウト時間をミリ秒単位で指定する DWORD である。
executeOnlyOnceBOOLinコールバックを一度だけ実行するか否かを指定する BOOL である。
resultBOOL*out登録処理が成功したか否かを受け取る BOOL へのポインタである。
vtbl 4 HRESULT CorUnregisterWait(HANDLE hWaitObject, HANDLE CompletionEvent, BOOL* result)
hWaitObjectHANDLEin登録解除する待機オブジェクトのハンドルである。
CompletionEventHANDLEin登録解除の完了時にシグナルされるイベントのハンドルである。
resultBOOL*out登録解除が成功したか否かを受け取る BOOL へのポインタである。
vtbl 5 HRESULT CorQueueUserWorkItem(LPTHREAD_START_ROUTINE Function, void* Context, BOOL executeOnlyOnce, BOOL* result)
FunctionLPTHREAD_START_ROUTINEinスレッドプールで実行されるワーカー関数(LPTHREAD_START_ROUTINE)である。
Contextvoid*inワーカー関数に渡される任意のコンテキストデータへのポインタである。
executeOnlyOnceBOOLin作業項目を一度だけ実行するか否かを指定する BOOL である。
resultBOOL*out作業項目のキュー登録が成功したか否かを受け取る BOOL へのポインタである。
vtbl 6 HRESULT CorCreateTimer(HANDLE* phNewTimer, WAITORTIMERCALLBACK Callback, void* Parameter, DWORD DueTime, DWORD Period, BOOL* result)
phNewTimerHANDLE*in新たに作成されたタイマーのハンドルを受け取るポインタである。
CallbackWAITORTIMERCALLBACKinタイマー満了時に呼び出されるコールバック(WAITORTIMERCALLBACK)である。
Parametervoid*inコールバックに渡される任意のパラメータへのポインタである。
DueTimeDWORDinタイマーが最初に満了するまでの時間をミリ秒単位で指定する DWORD である。
PeriodDWORDinタイマーの繰り返し間隔をミリ秒単位で指定する DWORD であり、0 を指定すると一度だけ実行される。
resultBOOL*outタイマー作成が成功したか否かを受け取る BOOL へのポインタである。
vtbl 7 HRESULT CorChangeTimer(HANDLE Timer, DWORD DueTime, DWORD Period, BOOL* result)
TimerHANDLEin設定を変更する対象タイマーのハンドルである。
DueTimeDWORDin次回満了までの新しい時間をミリ秒単位で指定する DWORD である。
PeriodDWORDin新しい繰り返し間隔をミリ秒単位で指定する DWORD である。
resultBOOL*outタイマー変更が成功したか否かを受け取る BOOL へのポインタである。
vtbl 8 HRESULT CorDeleteTimer(HANDLE Timer, HANDLE CompletionEvent, BOOL* result)
TimerHANDLEin削除する対象タイマーのハンドルである。
CompletionEventHANDLEinタイマー削除の完了時にシグナルされるイベントのハンドルである。
resultBOOL*outタイマー削除が成功したか否かを受け取る BOOL へのポインタである。
vtbl 9 HRESULT CorBindIoCompletionCallback(HANDLE fileHandle, LPOVERLAPPED_COMPLETION_ROUTINE callback)
fileHandleHANDLEinI/O 完了コールバックを関連付けるファイルハンドルである。
callbackLPOVERLAPPED_COMPLETION_ROUTINEinI/O 完了時に呼び出されるコールバック(LPOVERLAPPED_COMPLETION_ROUTINE)である。
vtbl 10 HRESULT CorCallOrQueueUserWorkItem(LPTHREAD_START_ROUTINE Function, void* Context, BOOL* result)
FunctionLPTHREAD_START_ROUTINEin実行またはキュー登録されるワーカー関数(LPTHREAD_START_ROUTINE)である。
Contextvoid*inワーカー関数に渡される任意のコンテキストデータへのポインタである。
resultBOOL*out処理が成功したか否かを受け取る BOOL へのポインタである。
vtbl 11 HRESULT CorSetMaxThreads(DWORD MaxWorkerThreads, DWORD MaxIOCompletionThreads)
MaxWorkerThreadsDWORDinスレッドプールのワーカースレッド最大数を指定する DWORD である。
MaxIOCompletionThreadsDWORDinスレッドプールの I/O 完了スレッド最大数を指定する DWORD である。
vtbl 12 HRESULT CorGetMaxThreads(DWORD* MaxWorkerThreads, DWORD* MaxIOCompletionThreads)
MaxWorkerThreadsDWORD*outワーカースレッドの最大数を受け取る DWORD へのポインタである。
MaxIOCompletionThreadsDWORD*outI/O 完了スレッドの最大数を受け取る DWORD へのポインタである。
vtbl 13 HRESULT CorGetAvailableThreads(DWORD* AvailableWorkerThreads, DWORD* AvailableIOCompletionThreads)
AvailableWorkerThreadsDWORD*out現在利用可能なワーカースレッド数を受け取る DWORD へのポインタである。
AvailableIOCompletionThreadsDWORD*out現在利用可能な I/O 完了スレッド数を受け取る DWORD へのポインタである。

HSP用 COM定義

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

出力引数:
#define global IID_ICorThreadpool "{84680D3A-B2C1-46E8-ACC2-DBC0A359159A}"
#usecom global ICorThreadpool IID_ICorThreadpool "{}"
#comfunc global ICorThreadpool_CorRegisterWaitForSingleObject  3 sptr,sptr,sptr,sptr,int,int,var
#comfunc global ICorThreadpool_CorUnregisterWait               4 sptr,sptr,var
#comfunc global ICorThreadpool_CorQueueUserWorkItem            5 sptr,sptr,int,var
#comfunc global ICorThreadpool_CorCreateTimer                  6 sptr,sptr,sptr,int,int,var
#comfunc global ICorThreadpool_CorChangeTimer                  7 sptr,int,int,var
#comfunc global ICorThreadpool_CorDeleteTimer                  8 sptr,sptr,var
#comfunc global ICorThreadpool_CorBindIoCompletionCallback     9 sptr,sptr
#comfunc global ICorThreadpool_CorCallOrQueueUserWorkItem      10 sptr,sptr,var
#comfunc global ICorThreadpool_CorSetMaxThreads                11 int,int
#comfunc global ICorThreadpool_CorGetMaxThreads                12 var,var
#comfunc global ICorThreadpool_CorGetAvailableThreads          13 var,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。