ISharingConfigurationManager
COM公式ドキュメント
コンピューターの Users (C:\Users) フォルダーまたは Public (C:\Users\Public) フォルダーの既定の共有設定に関する情報を設定および取得するメソッドを公開します。また、プリンター共有を制御する一連のメソッドも公開します。
解説(Remarks)
メソッド 7
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
Users フォルダーまたは Public フォルダーを共有します。フォルダーが既に共有されている場合、このメソッドはその共有状態を更新します。
| dsid | DEF_SHARE_ID | in | 共有または更新するフォルダーを示す DEF_SHARE_ID 値のいずれか。 |
| role | SHARE_ROLE | in | Everyone ACE に対する共有のアクセス許可を設定する、次の SHARE_ROLE 値のいずれか。CreateShare はこれらの値のみを受け付けます。 SHARE_ROLE_READER (0)読み取り専用。フォルダーの内容は読み取ることができますが、変更や追加はできません。 SHARE_ROLE_CO_OWNER (2)読み取り/書き込み。フォルダーの内容は読み取り、変更、追加が可能です。 |
戻り値
型: HRESULT
成功した場合は S_OK を返し、それ以外の場合は次を含むエラー値を返します。
| 戻り値 | 説明 |
|---|---|
| role パラメーターに SHARE_ROLE_READER または SHARE_ROLE_CO_OWNER 以外の値が指定されています。 |
解説(Remarks)
このメソッドを実行するには管理者の権限レベルが必要です。
dsid で指定されたフォルダーが共有されていない場合、このメソッドは role パラメーターで指定された権限レベルを使用してフォルダーを共有します。
dsid で指定されたフォルダーが既に共有されている場合、このメソッドは role パラメーターで指定された値で共有の権限を更新します。
Windows 7 以降では Public フォルダーは直接ではなく Users を介して共有されるため、Public に共有を作成すると Users 上に Server Message Block (SMB) 共有が作成されます。
Users フォルダーまたは Public フォルダーの共有を解除します。
| dsid | DEF_SHARE_ID | in | 共有を解除するフォルダーを指定する DEF_SHARE_ID 値のいずれか。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドを実行するには管理者の権限レベルが必要です。
Users フォルダーまたは Public フォルダーが共有されているかどうかを照会します。
| dsid | DEF_SHARE_ID | in | 共有状態を確認するフォルダーを示す DEF_SHARE_ID 値のいずれか。 |
戻り値
解説(Remarks)
Windows 7 以降では Public は Users を介してインプレースで共有されるため、呼び出し元は常に最初に Users の共有を確認する必要があります。Users 上に共有が存在することが判明した場合、Public 上にも共有が存在することになります。
Users フォルダーまたは Public フォルダーに現在関連付けられている、Everyone アクセス制御エントリ (ACE) に対するアクセス許可を取得します。
| dsid | DEF_SHARE_ID | in | フォルダーを指定する DEF_SHARE_ID 値のいずれか。 |
| pRole | SHARE_ROLE* | out | このメソッドが正常に返された際に、dsid パラメーターで指定されたフォルダーに設定された共有アクセス許可を示す SHARE_ROLE 値のいずれかを受け取る値へのポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
コンピューターに接続されているすべてのローカルプリンターを共有し、ネットワーク上の他のコンピューターから検出できるようにします。
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドを実行するには管理者の権限レベルが必要です。
コンピューターに接続されている、共有されているすべてのローカルプリンターの共有を停止します。
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドを実行するには管理者の権限レベルが必要です。
このコンピューターに接続されているプリンターが共有されているかどうかを判別します。
戻り値
型: HRESULT
次を含む標準の HRESULT 値を返します。
| 戻り値 | 説明 |
|---|---|
| 共有プリンターが検出されました。 | |
| 共有プリンターは見つかりませんでした。 | |
| 共有可能なプリンターは見つかりませんでした。 |
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 方式にも切替可。#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,sptr #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から自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。