WindowsXP-SP1/ds/adsi/nds/mapper.cxx

128 lines
2.7 KiB
C++

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1995.
//
// File: libmain.cxx
//
// Contents: LibMain for nds.dll
//
// Functions: LibMain, DllGetClassObject
//
// History: 25-Oct-94 KrishnaG Created.
//
//----------------------------------------------------------------------------
#include "nds.hxx"
#pragma hdrstop
HRESULT
InstantiateDerivedObject(
IADs FAR * pADs,
CCredentials& Credentials,
REFIID riid,
void ** ppObject
)
{
BSTR bstrClassName = NULL;
DWORD dwObjectId = 0;
HRESULT hr = S_OK;
*ppObject = NULL;
hr = pADs->get_Class(&bstrClassName);
BAIL_ON_FAILURE(hr);
hr = IsValidFilter(
bstrClassName,
&dwObjectId,
gpFilters,
gdwMaxFilters
);
BAIL_ON_FAILURE(hr)
switch (dwObjectId) {
case NDS_USER_ID:
hr = CNDSUser::CreateUser(
pADs,
Credentials,
riid,
ppObject
);
BAIL_ON_FAILURE(hr);
break;
case NDS_GROUP_ID:
hr = CNDSGroup::CreateGroup(
pADs,
Credentials,
riid,
ppObject
);
BAIL_ON_FAILURE(hr);
break;
case NDS_LOCALITY_ID:
hr = CNDSLocality::CreateLocality(
pADs,
riid,
ppObject
);
BAIL_ON_FAILURE(hr);
break;
case NDS_O_ID:
hr = CNDSOrganization::CreateOrganization(
pADs,
riid,
ppObject
);
BAIL_ON_FAILURE(hr);
break;
case NDS_OU_ID:
hr = CNDSOrganizationUnit::CreateOrganizationUnit(
pADs,
riid,
ppObject
);
BAIL_ON_FAILURE(hr);
break;
case NDS_PRINTER_ID:
hr = CNDSPrintQueue::CreatePrintQueue(
pADs,
riid,
ppObject
);
BAIL_ON_FAILURE(hr);
break;
default:
hr = E_FAIL;
BAIL_ON_FAILURE(hr);
}
error:
if (bstrClassName) {
ADsFreeString(bstrClassName);
}
RRETURN(hr);
}