システム関数:サービスの管理

CreateService

新しいサービスを登録します。

HNsmService __stdcall CreateService(
    LPCSTR lpServiceName,
    TNsmServiceProc ProcAddr
);
引数
lpServiceName
作成するサービスのサービス名。システムモジュールのサービスリストに既に同名のサービスが存在する場合、この関数は失敗します。
ProcAddr
サービスを実際に処理する関数へのポインタ
戻り値
成功した場合は、作成したサービスのハンドルを、失敗した場合は0を返します。

GetService

登録済みのサービスを呼び出すために必要な、サービスのハンドルを取得します。GetService関数はハッシュリストからサービスを検索する処理が必要なため低速です。頻繁に呼び出す必要があるサービスにおいては、呼び出し側でサービスのハンドルを保存しておくことによって、検索処理のオーバーヘッドを回避することができます。

HNsmService __stdcall GetService(
    LPCSTR lpServiceName
);
引数
lpServiceName
取得したいサービスのサービス名。指定されたサービス名のサービスが登録されていない場合、この関数は失敗します。
戻り値
成功した場合は、指定したサービスのハンドルを、失敗した場合は0を返します。

CallService

ハンドルを用いて、登録済みのサービスを呼び出します。

LONG_PTR __stdcall CallService(
    HNsmService ServiceHandle,
    WPARAM wParam,
    LPARAM lParam
);
引数
ServiceHandle
呼び出したいサービスのハンドル。GetService関数で取得します。
wParam
サービスに渡す第1引数
lParam
サービスに渡す第2引数
戻り値
サービスが返す戻り値。サービスハンドルが無効な場合の戻り値は保証されません。