Platform SDK: Active Directory, ADSI, and Directory Services

IDirectoryObject::CreateDSObject

The IDirectoryObject::CreateDSObject method creates a child of the current directory service object.

HRESULT CreateDSObject(
  LPWSTR pszRDNName, 
  PADS_ATTR_INFO pAttributeEntries,
  DWORD dwNumAttributes,
  IDispatch **ppObject
);

Parameters

pszRDNName
[in] Provides the relative distinguished name (relative path) of the object to be created.
pAttributeEntries
[in] An array of ADS_ATTR_INFO structures containing attribute definitions to be set when the object is created.
dwNumAttributes
[in] Provides a number of attributes being set when the object is created.
ppObject
[out] Provides a pointer to the IDispatch interface on the created object.

Return Values

This method returns the standard return values, including S_OK for a successful operation. For other return values, see ADSI Error Codes.

Remarks

You must specify all attributes that need to be initialized on creation in the pAttributeEntries array. You may also specify optional attributes.

Example Code [C++]

The following is a C/C++ code snippet that illustrates how to create a user object using the IDirectoryObject::CreateDSObject method.

HRESULT    hr;
IDirectoryObject *pDirObject=NULL;
ADSVALUE   sAMValue;
ADSVALUE   uPNValue;
ADSVALUE   classValue;
LPDISPATCH pDisp;
 
ADS_ATTR_INFO  attrInfo[] = 
{  
   { L"objectClass", ADS_ATTR_UPDATE, 
                       ADSTYPE_CASE_IGNORE_STRING, &classValue, 1 },
   {L"sAMAccountName", ADS_ATTR_UPDATE, 
                       ADSTYPE_CASE_IGNORE_STRING, &sAMValue, 1},
   {L"userPrincipalName", ADS_ATTR_UPDATE, 
                      ADSTYPE_CASE_IGNORE_STRING, &uPNValue, 1},
};
DWORD dwAttrs = sizeof(attrInfo)/sizeof(ADS_ATTR_INFO); 
 
classValue.dwType = ADSTYPE_CASE_IGNORE_STRING;
classValue.CaseIgnoreString = L"user";
 
sAMValue.dwType=ADSTYPE_CASE_IGNORE_STRING;
sAMValue.CaseIgnoreString = L"mikes";
 
uPNValue.dwType=ADSTYPE_CASE_IGNORE_STRING;
uPNValue.CaseIgnoreString = L"mikes@Microsoft.com";
 
hr = ADsGetObject(L"LDAP://OU=Sales,DC=Microsoft,DC=com",
          IID_IDirectoryObject, (void**) &pDirObject );
 
if ( SUCCEEDED(hr) )
{
   hr = pDirObject->CreateDSObject( L"CN=Neil Smith",  attrInfo, 
                                    dwAttrs, &pDisp );
   pDisp->Release();
}
pDirObject->Release();

Requirements

  Windows NT/2000: Requires Windows 2000 (or Windows NT 4.0 with DSClient).
  Windows 95/98: Requires Windows 95 or later (with DSClient).
  Header: Declared in Iads.h.

See Also

IDirectoryObject, ADS_ATTR_INFO, ADSI Error Codes