| Platform SDK: Active Directory, ADSI, and Directory Services |
[C++]
// IDirObj.cpp : Demonstrates the use of IDirectoryObject.
//
#define _WIN32_DCOM
#define UNICODE
#define _UNICODE
#include "stdafx.h"
#include "windows.h"
#include "stdio.h"
#include "activeds.h"
#include "tchar.h"
void main(void)
{
IDirectoryObject *pDirectoryObj;
DWORD dwNumAttrToGet;
DWORD dwNumAttrGot;
LPWSTR AttribNames[10];
ADS_ATTR_INFO *pPropEntries;
HRESULT hr;
// Call to initialize COM Library
CoInitialize(NULL);
// Bind to a known object asking for the IDirectoryObject Interface.
hr = ADsOpenObject( L"LDAP://MyMachine/CN=Administrator,CN=Users,DC=MyDomain,DC=Fabrikam,DC=COM",
L"Administrator",
L"",
ADS_SECURE_AUTHENTICATION,
IID_IDirectoryObject,
(void**)&pDirectoryObj);
if(FAILED(hr)) {
// Error code goes here.
printf("ADsOpenObject Failed\n");
exit(1);
}
// Create a list of attributes to get.
AttribNames[0] = L"distinguishedName";
dwNumAttrToGet = 1;
// Call GetObjectAttributes with the
// list of attributes and a pointer to
// an array of ADS_ATTRIB_INFO structs.
hr = pDirectoryObj->GetObjectAttributes( AttribNames,
dwNumAttrToGet,
&pPropEntries,
&dwNumAttrGot);
if(FAILED(hr)) {
// Error code goes here.
pDirectoryObj->Release();
printf("IDirectoryObject::GetObjectAttributes Failed\n");
exit(1);
}
printf("distinguishedName: %S\n",
pPropEntries[0].pADsValues->PrintableString);
// Cleanup.
pDirectoryObj->Release();
FreeADsMem(pPropEntries);
// Call to uninitialize COM Library
CoUninitialize();
}