ホーム › System.ClrHosting › ICorThreadpool
ICorThreadpool
COMメソッド 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)
| phNewWaitObject | HANDLE* | in | 新たに登録された待機オブジェクトのハンドルを受け取るポインタである。 |
| hWaitObject | HANDLE | in | 待機対象となるオブジェクト(イベント等)のハンドルである。 |
| Callback | WAITORTIMERCALLBACK | in | 待機が解決された際に呼び出されるコールバック(WAITORTIMERCALLBACK)である。 |
| Context | void* | in | コールバックに渡される任意のコンテキストデータへのポインタである。 |
| timeout | DWORD | in | 待機のタイムアウト時間をミリ秒単位で指定する DWORD である。 |
| executeOnlyOnce | BOOL | in | コールバックを一度だけ実行するか否かを指定する BOOL である。 |
| result | BOOL* | out | 登録処理が成功したか否かを受け取る BOOL へのポインタである。 |
| hWaitObject | HANDLE | in | 登録解除する待機オブジェクトのハンドルである。 |
| CompletionEvent | HANDLE | in | 登録解除の完了時にシグナルされるイベントのハンドルである。 |
| result | BOOL* | out | 登録解除が成功したか否かを受け取る BOOL へのポインタである。 |
vtbl 5 HRESULT CorQueueUserWorkItem(LPTHREAD_START_ROUTINE Function, void* Context, BOOL executeOnlyOnce, BOOL* result)
| Function | LPTHREAD_START_ROUTINE | in | スレッドプールで実行されるワーカー関数(LPTHREAD_START_ROUTINE)である。 |
| Context | void* | in | ワーカー関数に渡される任意のコンテキストデータへのポインタである。 |
| executeOnlyOnce | BOOL | in | 作業項目を一度だけ実行するか否かを指定する BOOL である。 |
| result | BOOL* | out | 作業項目のキュー登録が成功したか否かを受け取る BOOL へのポインタである。 |
vtbl 6 HRESULT CorCreateTimer(HANDLE* phNewTimer, WAITORTIMERCALLBACK Callback, void* Parameter, DWORD DueTime, DWORD Period, BOOL* result)
| phNewTimer | HANDLE* | in | 新たに作成されたタイマーのハンドルを受け取るポインタである。 |
| Callback | WAITORTIMERCALLBACK | in | タイマー満了時に呼び出されるコールバック(WAITORTIMERCALLBACK)である。 |
| Parameter | void* | in | コールバックに渡される任意のパラメータへのポインタである。 |
| DueTime | DWORD | in | タイマーが最初に満了するまでの時間をミリ秒単位で指定する DWORD である。 |
| Period | DWORD | in | タイマーの繰り返し間隔をミリ秒単位で指定する DWORD であり、0 を指定すると一度だけ実行される。 |
| result | BOOL* | out | タイマー作成が成功したか否かを受け取る BOOL へのポインタである。 |
| Timer | HANDLE | in | 設定を変更する対象タイマーのハンドルである。 |
| DueTime | DWORD | in | 次回満了までの新しい時間をミリ秒単位で指定する DWORD である。 |
| Period | DWORD | in | 新しい繰り返し間隔をミリ秒単位で指定する DWORD である。 |
| result | BOOL* | out | タイマー変更が成功したか否かを受け取る BOOL へのポインタである。 |
| Timer | HANDLE | in | 削除する対象タイマーのハンドルである。 |
| CompletionEvent | HANDLE | in | タイマー削除の完了時にシグナルされるイベントのハンドルである。 |
| result | BOOL* | out | タイマー削除が成功したか否かを受け取る BOOL へのポインタである。 |
vtbl 9 HRESULT CorBindIoCompletionCallback(HANDLE fileHandle, LPOVERLAPPED_COMPLETION_ROUTINE callback)
| fileHandle | HANDLE | in | I/O 完了コールバックを関連付けるファイルハンドルである。 |
| callback | LPOVERLAPPED_COMPLETION_ROUTINE | in | I/O 完了時に呼び出されるコールバック(LPOVERLAPPED_COMPLETION_ROUTINE)である。 |
vtbl 10 HRESULT CorCallOrQueueUserWorkItem(LPTHREAD_START_ROUTINE Function, void* Context, BOOL* result)
| Function | LPTHREAD_START_ROUTINE | in | 実行またはキュー登録されるワーカー関数(LPTHREAD_START_ROUTINE)である。 |
| Context | void* | in | ワーカー関数に渡される任意のコンテキストデータへのポインタである。 |
| result | BOOL* | out | 処理が成功したか否かを受け取る BOOL へのポインタである。 |
| MaxWorkerThreads | DWORD | in | スレッドプールのワーカースレッド最大数を指定する DWORD である。 |
| MaxIOCompletionThreads | DWORD | in | スレッドプールの I/O 完了スレッド最大数を指定する DWORD である。 |
| MaxWorkerThreads | DWORD* | out | ワーカースレッドの最大数を受け取る DWORD へのポインタである。 |
| MaxIOCompletionThreads | DWORD* | out | I/O 完了スレッドの最大数を受け取る DWORD へのポインタである。 |
vtbl 13 HRESULT CorGetAvailableThreads(DWORD* AvailableWorkerThreads, DWORD* AvailableIOCompletionThreads)
| AvailableWorkerThreads | DWORD* | out | 現在利用可能なワーカースレッド数を受け取る DWORD へのポインタである。 |
| AvailableIOCompletionThreads | DWORD* | 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 指定が可能。#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,sptr #comfunc global ICorThreadpool_CorUnregisterWait 4 sptr,sptr,sptr #comfunc global ICorThreadpool_CorQueueUserWorkItem 5 sptr,sptr,int,sptr #comfunc global ICorThreadpool_CorCreateTimer 6 sptr,sptr,sptr,int,int,sptr #comfunc global ICorThreadpool_CorChangeTimer 7 sptr,int,int,sptr #comfunc global ICorThreadpool_CorDeleteTimer 8 sptr,sptr,sptr #comfunc global ICorThreadpool_CorBindIoCompletionCallback 9 sptr,sptr #comfunc global ICorThreadpool_CorCallOrQueueUserWorkItem 10 sptr,sptr,sptr #comfunc global ICorThreadpool_CorSetMaxThreads 11 int,int #comfunc global ICorThreadpool_CorGetMaxThreads 12 sptr,sptr #comfunc global ICorThreadpool_CorGetAvailableThreads 13 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。