GetSharedServiceDirectory 関数 (winsvc.h)

読み取り/書き込み状態のサービスおよび関連プログラムのサービスごとのファイルシステムの場所のパスを返します。

構文

DWORD GetSharedServiceDirectory(
  SC_HANDLE                     ServiceHandle,
  SERVICE_SHARED_DIRECTORY_TYPE DirectoryType,
  PWCHAR                        PathBuffer,
  DWORD                         PathBufferLength,
  DWORD                         *RequiredBufferLength
);

パラメーター

ServiceHandle

サービスへのハンドル。 このハンドルは OpenService 関数によって返されます。

DirectoryType

取得するサービスごとの共有ディレクトリ パスの種類を識別する SERVICE_SHARED_DIRECTORY_TYPE 列挙体のメンバー。

PathBuffer

パス文字列のコピー先となる呼び出し元によって割り当てられたバッファー。 NULL の場合、関数呼び出しは ERROR_INSUFFICIENT_BUFFER で失敗し、 RequiredBufferLength の WCHAR で必要なバッファー長を返します。 NULL 以外の場合、バッファーの長さは PathBufferLength で指定する必要があります。 パスが書き込まれた場合、NULL で終了します。

PathBufferLength

PathBuffer で指定されたバッファーの長さ (WCHARS 単位)。 PathBuffer が NULL の場合、この引数は無視されます。

RequiredBufferLength

この値は、WCHAR の単位でバッファーの必要な長さに設定されます。 この長さは、終端の NULL 文字を含みます。

戻り値

すべての操作が正常に完了し、NULL で終了した状態パスが PathBuffer に書き込まれた場合にERROR_SUCCESSを返します。 PathBuffer が状態パスを格納するのに十分な大きさではない場合、または PathBuffer が NULL の場合は、ERROR_INSUFFICIENT_BUFFERを返します。 この場合、WCHAR で必要なバッファー長が RequiredBufferLength 経由で返されます。 その他のエラーが発生した場合は、Win32 エラー コードが返されます。

解説

ServiceSharedDirectoryPersistentState の場合、ディレクトリのセキュリティは、ローカル システム アカウント、サービス SID、およびローカル管理者にのみ書き込みアクセスを提供するように設定されます。 この API を呼び出すサービスに対してサービス SID が有効になっていることを確認します。 詳細については、「 SERVICE_SID_INFO」を参照してください。

サービス自体で使用するために排他的にサービス状態を提供する同様の API については、「 GetServiceDirectory」を参照してください。

サービスがアンインストールされると、サービス制御マネージャーによってすべてのサービス状態ディレクトリが削除されます。

要件

   
サポートされている最小のクライアント Windows 11 (ビルド 22000)
サポートされている最小のサーバー Windows Server 2022 (ビルド 20348)
Header winsvc.h
Library Onecore.lib

関連項目

OpenService

GetServiceDirectory

SERVICE_SID_INFO