Share via


IWMSAccessControlList::Add

banner art

Previous Next

IWMSAccessControlList::Add

The Add method adds a new IWMSAccessControlEntry interface to the IWMSAccessControlList collection.

Syntax

  HRESULT Add(
  BSTR  bstrTrustee,
  WMS_ACCESS_CONTROL  wmsAccess,
  IWMSAccessControlEntry**  pNewEntry
);

Parameters

bstrTrustee

[in] BSTR containing the name of the account or logon session to which the access control entry applies. The name can identify one of the following account or session types.

Type Description
Domain Account The name specifies a domain account of the form domain\user_account.
NT Security Principal The name identifies a NT-based security system attribute.
Built-in group The name identifies a built-in user group identified by the NT-based security system. It has the form BUILTIN\user_group_name.

wmsAccess

[in] Member of a WMS_ACCESS_CONTROL enumeration type indicating the trustee access mask setting. This must be one of the following values.

Value Description
WMS_ACL_DENY_READ Denies read access.
WMS_ACL_DENY_WRITE Denies write access.
WMS_ACL_DENY_CREATE Denies creation access.
WMS_ACL_DENY_ALL Denies read, write, and creation access.
WMS_ACL_ALLOW_READ Enables read access.
WMS_ACL_ALLOW_WRITE Enables write access.
WMS_ACL_ALLOW_CREATE Enables creation access.
WMS_ACL_ALLOW_ALL Enables read, write, and creation access.

pNewEntry

[out] Pointer to a pointer to an IWMSAccessControlEntry interface. This method calls AddRef internally. To avoid memory leaks, you must call Release when you are finished using the interface.

Return Values

If the method succeeds, it returns S_OK. If it fails, it returns an HRESULT error code.

Return code Number Description
E_INVALIDARG 0x80070057 The wmsAccess value is not valid, or the bstrTrustee name does not contain a backslash (\) or a period (.).
E_POINTER 0x80004003 The bstrTrustee parameter is NULL, or an internal ACL helper does not exist.
ERROR_INVALID_ACCOUNT_NAME 1315 The bstrTrustee parameter does not contain a properly formed account name.
ERROR_DUP_NAME 52 A duplicate account name exists on the network.

Example Code

#include <windows.h>
#include <atlbase.h>    // Includes CComBSTR and CComVariant.

// To access system plug-in interfaces, the
// entire type library must be imported as shown.
#import "WMSServerTypeLib.dll" no_namespace named_guids \
                               raw_interfaces_only

// Declare variables and interfaces.
IWMSServer              *pServer;
IWMSPlugins             *pPlugins;
IWMSPlugin              *pPlugin;
IDispatch               *pDispatch;
IWMSACLCheckAdmin       *pACLCheckAdmin;
IWMSAccessControlList   *pAccessCtrlList;
IWMSAccessControlEntry  *pAccessCtrlEntry;

HRESULT         hr;
CComVariant     varIndex;
CComBSTR        bstrTrustee;
long            lCount;

// Initialize the COM library and retrieve a pointer
// to an IWMSServer interface.
hr = CoInitialize(NULL);
hr = CoCreateInstance(CLSID_WMSServer,
                      NULL,
                      CLSCTX_ALL,
                      IID_IWMSServer,
                      (void **)&pServer);
if (FAILED(hr)) goto EXIT;

// Retrieve a pointer to an IWMSPlugins interface
// containing event handler plug-ins.
hr = pServer->get_EventHandlers(&pPlugins);
if (FAILED(hr)) goto EXIT;

// Retrieve a pointer to the IWMSPlugin interface
// of the plug-in to be configured.
varIndex = "WMS Publishing Points ACL Authorization";
hr = pPlugins->get_Item(varIndex, &pPlugin);
if (FAILED(hr)) goto EXIT;

// Retrieve a pointer to the custom interface
// of the plug-in.
hr = pPlugin->get_CustomInterface(&pDispatch);
if (FAILED(hr)) goto EXIT;

// Query the specific administration interface
// for the plug-in.
hr = pDispatch->QueryInterface(IID_IWMSACLCheckAdmin,
                              (void **)&pACLCheckAdmin);
if (FAILED(hr)) goto EXIT;

// Retrieve a pointer to the list of access control entries.
hr = pACLCheckAdmin->get_AccessControlList(&pAccessCtrlList);
if (FAILED(hr)) goto EXIT;

// Add a new entry to the access control list.
bstrTrustee = "DOMAIN\username";
hr = pAccessCtrlList->Add(bstrTrustee, WMS_ACL_ALLOW_ALL,
                          &pAccessCtrlEntry);
if (FAILED(hr)) goto EXIT;

EXIT:
    // TODO: Release temporary COM objects and uninitialize COM.

Requirements

Library: WMSServerTypeLib.dll.

Platform: Windows Server 2003 family, Windows Server 2008 family.

See Also

Previous Next