GetServiceDirectory 関数 (winsvc.h)
読み取りまたは書き込み状態のサービスのサービスごとのファイル システムの場所のパスを返します。
構文
DWORD GetServiceDirectory(
SERVICE_STATUS_HANDLE hServiceStatus,
SERVICE_DIRECTORY_TYPE eDirectoryType,
PWCHAR lpPathBuffer,
DWORD cchPathBufferLength,
DWORD *lpcchRequiredBufferLength
);
パラメーター
hServiceStatus
現在のサービスの状態情報構造へのハンドル。 このハンドルは、 RegisterServiceCtrlHandler 関数によって返されます。
eDirectoryType
取得するサービスごとのディレクトリ パスの種類を識別する SERVICE_DIRECTORY_TYPE 列挙体のメンバー。
lpPathBuffer
パス文字列のコピー先となる呼び出し元によって割り当てられたバッファー。 NULL の場合、関数呼び出しは ERROR_INSUFFICIENT_BUFFER で失敗し、必要なバッファー長 (WCHAR) を lpcchRequiredBufferLength で返します。 NULL 以外の場合は、バッファーの長さを cchPathBufferLength で指定する必要があります。 書き込まれた場合、パスは NULL で終了します。
cchPathBufferLength
lpPathBuffer で指定されたバッファーの長さ (WCHARS 単位)。 lpPathBuffer が NULL の場合、この引数は無視されます。
lpcchRequiredBufferLength
この値は、WCHAR の単位でバッファーの必要な長さに設定されます。 この長さは、終端の NULL 文字を含みます。
戻り値
すべての操作が正常に完了し、NULL で終了した状態パスが lpPathBuffer に書き込まれた場合に、ERROR_SUCCESSを返します。 lpPathBuffer が状態パスを格納するのに十分な大きさではなかった場合、または lpPathBuffer が NULL の場合は、ERROR_INSUFFICIENT_BUFFERを返します。 この場合、WCHAR の必要なバッファー長は lpcchRequiredBufferLength を介して返されます。 他のエラーが発生した場合は、Win32 エラー コードが返されます。
解説
ServiceDirectoryPersistentState の場合、ディレクトリのセキュリティは、ローカル システム アカウントとサービス SID への書き込みアクセスのみを提供するように設定されます。 この API を呼び出すサービスに対してサービス SID が有効になっていることを確認します。 詳細については、「 SERVICE_SID_INFO」を参照してください。
関連するプログラムと共有できるサービス状態を提供する同様の API については、「 GetSharedServiceDirectory」を参照してください。
サービスがアンインストールされると、サービス制御マネージャーによってすべてのサービス状態ディレクトリが削除されます。
要件
サポートされている最小のクライアント | Windows 10バージョン 2004 (10.0;ビルド 19041) |
サポートされている最小のサーバー | Windows Server バージョン 2004 (10.0;ビルド 19041) |
Header | winsvc.h |
Library | Onecore.lib |