Win32 API 日本語リファレンス
ホームUI.Shell › ISharingConfigurationManager

ISharingConfigurationManager

COM
IIDb4cd448a-9c86-4466-9201-2e62105b87ae継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

コンピューターの Users (C:\Users) フォルダーまたは Public (C:\Users\Public) フォルダーの既定の共有設定に関する情報を設定および取得するメソッドを公開します。また、プリンター共有を制御する一連のメソッドも公開します。

解説(Remarks)

実装するタイミング

このインターフェイスの実装は CSharingConfiguration クラスに含まれています。サードパーティが独自の実装を提供することはありません。

メソッド 7

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT CreateShare(DEF_SHARE_ID dsid, SHARE_ROLE role)

Users フォルダーまたは Public フォルダーを共有します。フォルダーが既に共有されている場合、このメソッドはその共有状態を更新します。

dsidDEF_SHARE_IDin共有または更新するフォルダーを示す DEF_SHARE_ID 値のいずれか。
roleSHARE_ROLEin

Everyone ACE に対する共有のアクセス許可を設定する、次の SHARE_ROLE 値のいずれか。CreateShare はこれらの値のみを受け付けます。

SHARE_ROLE_READER (0)

読み取り専用。フォルダーの内容は読み取ることができますが、変更や追加はできません。

SHARE_ROLE_CO_OWNER (2)

読み取り/書き込み。フォルダーの内容は読み取り、変更、追加が可能です。

戻り値

型: HRESULT

成功した場合は S_OK を返し、それ以外の場合は次を含むエラー値を返します。

戻り値 説明
E_INVALIDARG
role パラメーターに SHARE_ROLE_READER または SHARE_ROLE_CO_OWNER 以外の値が指定されています。

解説(Remarks)

このメソッドを実行するには管理者の権限レベルが必要です。

dsid で指定されたフォルダーが共有されていない場合、このメソッドは role パラメーターで指定された権限レベルを使用してフォルダーを共有します。

dsid で指定されたフォルダーが既に共有されている場合、このメソッドは role パラメーターで指定された値で共有の権限を更新します。

Windows 7 以降では Public フォルダーは直接ではなく Users を介して共有されるため、Public に共有を作成すると Users 上に Server Message Block (SMB) 共有が作成されます。

vtbl 4 HRESULT DeleteShare(DEF_SHARE_ID dsid)

Users フォルダーまたは Public フォルダーの共有を解除します。

dsidDEF_SHARE_IDin共有を解除するフォルダーを指定する DEF_SHARE_ID 値のいずれか。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このメソッドを実行するには管理者の権限レベルが必要です。

vtbl 5 HRESULT ShareExists(DEF_SHARE_ID dsid)

Users フォルダーまたは Public フォルダーが共有されているかどうかを照会します。

dsidDEF_SHARE_IDin共有状態を確認するフォルダーを示す DEF_SHARE_ID 値のいずれか。

戻り値

型: HRESULT

フォルダーが共有されている場合は S_OK、それ以外の場合は S_FALSE

解説(Remarks)

Windows 7 以降では PublicUsers を介してインプレースで共有されるため、呼び出し元は常に最初に Users の共有を確認する必要があります。Users 上に共有が存在することが判明した場合、Public 上にも共有が存在することになります。

vtbl 6 HRESULT GetSharePermissions(DEF_SHARE_ID dsid, SHARE_ROLE* pRole)

Users フォルダーまたは Public フォルダーに現在関連付けられている、Everyone アクセス制御エントリ (ACE) に対するアクセス許可を取得します。

dsidDEF_SHARE_IDinフォルダーを指定する DEF_SHARE_ID 値のいずれか。
pRoleSHARE_ROLE*outこのメソッドが正常に返された際に、dsid パラメーターで指定されたフォルダーに設定された共有アクセス許可を示す SHARE_ROLE 値のいずれかを受け取る値へのポインター。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 7 HRESULT SharePrinters()

コンピューターに接続されているすべてのローカルプリンターを共有し、ネットワーク上の他のコンピューターから検出できるようにします。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このメソッドを実行するには管理者の権限レベルが必要です。

vtbl 8 HRESULT StopSharingPrinters()

コンピューターに接続されている、共有されているすべてのローカルプリンターの共有を停止します。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このメソッドを実行するには管理者の権限レベルが必要です。

vtbl 9 HRESULT ArePrintersShared()

このコンピューターに接続されているプリンターが共有されているかどうかを判別します。

戻り値

型: HRESULT

次を含む標準の HRESULT 値を返します。

戻り値 説明
S_OK
共有プリンターが検出されました。
S_FALSE
共有プリンターは見つかりませんでした。
ERROR_FILE_NOT_FOUND
共有可能なプリンターは見つかりませんでした。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_ISharingConfigurationManager "{B4CD448A-9C86-4466-9201-2E62105B87AE}"
#usecom global ISharingConfigurationManager IID_ISharingConfigurationManager "{49F371E1-8C5C-4D9C-9A3B-54A6827F513C}"
#comfunc global ISharingConfigurationManager_CreateShare          3 int,int
#comfunc global ISharingConfigurationManager_DeleteShare          4 int
#comfunc global ISharingConfigurationManager_ShareExists          5 int
#comfunc global ISharingConfigurationManager_GetSharePermissions  6 int,var
#comfunc global ISharingConfigurationManager_SharePrinters        7
#comfunc global ISharingConfigurationManager_StopSharingPrinters  8
#comfunc global ISharingConfigurationManager_ArePrintersShared    9
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。