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

関連項目

RegisterServiceCtrlHandler

GetSharedServiceDirectory

SERVICE_SID_INFO