|
|
Remove this file. No one us using it.
//---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1995
//
// File: oleds.odl
//
// Contents: Top level odl file for the ADs project
//
// History: 11-1-95 krishnag Created.
//
//----------------------------------------------------------------------------
#include "ldap.hxx"
#pragma hdrstop
struct _propmap { LPTSTR pszADsProp; LPTSTR pszLDAPProp; } aCompPropMapping[] = { // { TEXT("Description"), TEXT("description") },
// { TEXT("Owner"), TEXT("owner") },
{ TEXT("Role"), TEXT("machineRole") }, { TEXT("NetAddresses"), TEXT("networkAddress") } };
// Class CLDAPComputer
DEFINE_IDispatch_Implementation(CLDAPComputer) DEFINE_CONTAINED_IADs_Implementation(CLDAPComputer) DEFINE_CONTAINED_IADsContainer_Implementation(CLDAPComputer)
CLDAPComputer::CLDAPComputer() : _pADs(NULL), _pADsContainer(NULL), _pDispMgr(NULL) // _DomainName(NULL)
{ ENLIST_TRACKING(CLDAPDomain); }
HRESULT CLDAPComputer::CreateComputer( IADs *pADs, REFIID riid, void **ppvObj ) { CLDAPComputer FAR * pComputer = NULL; HRESULT hr = S_OK;
hr = AllocateComputerObject( pADs, &pComputer ); BAIL_ON_FAILURE(hr);
hr = pComputer->QueryInterface(riid, ppvObj); BAIL_ON_FAILURE(hr);
pComputer->Release();
RRETURN(hr);
error:
*ppvObj = NULL; delete pComputer; RRETURN(hr); }
#if 0
HRESULT CLDAPComputer::CreateComputer( BSTR Parent, BSTR DomainName, BSTR ComputerName, DWORD dwObjectState, REFIID riid, void **ppvObj ) { CLDAPComputer FAR * pComputer = NULL; HRESULT hr = S_OK;
hr = AllocateComputerObject( &pComputer ); BAIL_ON_FAILURE(hr);
hr = pComputer->InitializeCoreObject( Parent, ComputerName, COMPUTER_CLASS_NAME, COMPUTER_SCHEMA_NAME, CLSID_WinNTComputer, dwObjectState ); BAIL_ON_FAILURE(hr);
hr = ADsAllocString( DomainName, &pComputer->_DomainName); BAIL_ON_FAILURE(hr);
hr = pComputer->QueryInterface(riid, ppvObj); BAIL_ON_FAILURE(hr);
pComputer->Release();
RRETURN(hr);
error:
delete pComputer; RRETURN(hr); } #endif
CLDAPComputer::~CLDAPComputer( ) { if ( _pADs ) _pADs->Release();
if ( _pADsContainer ) _pADsContainer->Release();
delete _pDispMgr; }
STDMETHODIMP CLDAPComputer::QueryInterface( REFIID iid, LPVOID FAR* ppv ) { if (IsEqualIID(iid, IID_IUnknown)) { *ppv = (IADsComputer FAR *) this; } else if (IsEqualIID(iid, IID_IADsComputer)) { *ppv = (IADsComputer FAR *) this; } else if (IsEqualIID(iid, IID_IADsComputerOperations)) { *ppv = (IADsComputerOperations FAR *) this; } else if (IsEqualIID(iid, IID_IADsContainer) && _pADsContainer ) { *ppv = (IADsContainer FAR *) this; } else if (IsEqualIID(iid, IID_IADsPropertyList) && _pADsPropList ) { *ppv = (IADsPropertyList FAR *) this; } else if (IsEqualIID(iid, IID_IADs)) { *ppv = (IADsComputer FAR *) this; } else if (IsEqualIID(iid, IID_IDispatch)) { *ppv = (IADsComputer FAR *) this; } else { *ppv = NULL; return E_NOINTERFACE; } AddRef(); return NOERROR; }
HRESULT CLDAPComputer::AllocateComputerObject( IADs *pADs, CLDAPComputer ** ppComputer ) { CLDAPComputer FAR * pComputer = NULL; CAggregateeDispMgr FAR * pDispMgr = NULL; HRESULT hr = S_OK; IADsContainer FAR * pADsContainer = NULL; IDispatch *pDispatch = NULL;
pComputer = new CLDAPComputer(); if (pComputer == NULL) { hr = E_OUTOFMEMORY; } BAIL_ON_FAILURE(hr);
pDispMgr = new CAggregateeDispMgr; if (pDispMgr == NULL) { hr = E_OUTOFMEMORY; } BAIL_ON_FAILURE(hr);
hr = pDispMgr->LoadTypeInfoEntry( LIBID_ADs, IID_IADsComputer, (IADsComputer *)pComputer, DISPID_REGULAR ); BAIL_ON_FAILURE(hr);
hr = pDispMgr->LoadTypeInfoEntry( LIBID_ADs, IID_IADsComputerOperations, (IADsComputerOperations *)pComputer, DISPID_REGULAR ); BAIL_ON_FAILURE(hr);
hr = pDispMgr->LoadTypeInfoEntry( LIBID_ADs, IID_IADsContainer, (IADsContainer *)pComputer, DISPID_NEWENUM ); BAIL_ON_FAILURE(hr);
hr = pDispMgr->LoadTypeInfoEntry( LIBID_ADs, IID_IADsPropertyList, (IADsPropertyList *)pComputer, DISPID_VALUE ); BAIL_ON_FAILURE(hr);
hr = pADs->QueryInterface(IID_IDispatch, (void **)&pDispatch); BAIL_ON_FAILURE(hr); pDispMgr->RegisterBaseDispatchPtr(pDispatch);
pComputer->_pADs = pADs; pADs->AddRef();
hr = pADs->QueryInterface( IID_IADsContainer, (void **) &pADsContainer ); BAIL_ON_FAILURE(hr);
pComputer->_pADsContainer = pADsContainer;
pComputer->_pDispMgr = pDispMgr; *ppComputer = pComputer;
RRETURN(hr);
error:
if ( pADsContainer ) pADsContainer->Release();
delete pDispMgr; delete pComputer;
RRETURN(hr);
}
/* IADs methods */
STDMETHODIMP CLDAPComputer::Get(THIS_ BSTR bstrName, VARIANT FAR* pvProp) { LPTSTR pszPropName = bstrName;
for ( DWORD i = 0; i < ARRAY_SIZE(aCompPropMapping); i++ ) { if ( _tcsicmp(bstrName, aCompPropMapping[i].pszADsProp ) == 0 ) { pszPropName = aCompPropMapping[i].pszLDAPProp; break; } }
RRETURN(_pADs->Get( pszPropName, pvProp)); }
STDMETHODIMP CLDAPComputer::Put(THIS_ BSTR bstrName, VARIANT vProp) { LPTSTR pszPropName = bstrName;
for ( DWORD i = 0; i < ARRAY_SIZE(aCompPropMapping); i++ ) { if ( _tcsicmp(bstrName, aCompPropMapping[i].pszADsProp) == 0 ) { pszPropName = aCompPropMapping[i].pszLDAPProp; break; } }
RRETURN(_pADs->Put( pszPropName, vProp)); }
#if 0
STDMETHODIMP CLDAPComputer::SetInfo(THIS) { HRESULT hr = S_OK; NET_API_STATUS nasStatus; WCHAR szHostServerName[MAX_PATH];
if (GetObjectState() == ADS_OBJECT_UNBOUND) {
hr = WinNTGetCachedPDCName( _DomainName, szHostServerName ); BAIL_ON_FAILURE(hr);
hr = WinNTCreateComputer( (szHostServerName + 2), _Name ); BAIL_ON_FAILURE(hr);
SetObjectState(ADS_OBJECT_BOUND);
}else {
RRETURN(E_NOTIMPL); }
error:
RRETURN(hr); }
STDMETHODIMP CLDAPComputer::GetInfo(THIS) { RRETURN(GetInfo(4, TRUE)); } #endif
/* IADsContainer methods */
#if 0
STDMETHODIMP CLDAPComputer::get__NewEnum(THIS_ IUnknown * FAR* retval) { HRESULT hr; IUnknown FAR* punkEnum=NULL; IEnumVARIANT * penum = NULL;
*retval = NULL;
hr = CLDAPComputerEnum::Create( (CLDAPComputerEnum **)&penum, _ADsPath, _DomainName, _Name, _vFilter ); BAIL_ON_FAILURE(hr);
hr = penum->QueryInterface( IID_IUnknown, (VOID FAR* FAR*)retval ); BAIL_ON_FAILURE(hr);
if (penum) { penum->Release(); }
RRETURN(NOERROR);
error:
if (penum) { delete penum; }
RRETURN(hr); }
STDMETHODIMP CLDAPComputer::Create( THIS_ BSTR ClassName, BSTR RelativeName, IUnknown * FAR* ppObject ) { ULONG ObjectType = 0; HRESULT hr; POBJECTINFO pObjectInfo = NULL;
hr = GetObjectType(gpFilters, gdwMaxFilters, ClassName, (PDWORD)&ObjectType ); BAIL_ON_FAILURE(hr);
hr = BuildObjectInfo(_ADsPath, RelativeName, &pObjectInfo ); BAIL_ON_FAILURE(hr);
hr = ValidateObject(ObjectType, pObjectInfo );
if(SUCCEEDED(hr)){ hr = HRESULT_FROM_WIN32(NERR_ResourceExists); BAIL_ON_FAILURE(hr); }
switch (ObjectType) {
case WINNT_USER_ID:
hr = CLDAPNTUser::CreateUser(_ADsPath, WINNT_COMPUTER_ID, NULL, _Name, RelativeName, ADS_OBJECT_UNBOUND, IID_IUnknown, (void **)ppObject ); BAIL_ON_FAILURE(hr);
break;
case WINNT_PRINTER_ID: hr = CLDAPNTPrintQueue::CreatePrintQueue(_ADsPath, WINNT_COMPUTER_ID, pObjectInfo->ComponentArray[0], pObjectInfo->ComponentArray[1], RelativeName, ADS_OBJECT_UNBOUND, IID_IUnknown, (void**)ppObject ); BAIL_ON_FAILURE(hr); break;
case WINNT_GROUP_ID: hr = CLDAPNTGroup::CreateGroup( _ADsPath, WINNT_COMPUTER_ID, NULL, _Name, RelativeName, WINNT_GROUP_LOCAL, ADS_OBJECT_UNBOUND, IID_IUnknown, (void **)ppObject );
BAIL_ON_FAILURE(hr); break;
case WINNT_SERVICE_ID: hr = CLDAPNTService::Create(_ADsPath, pObjectInfo->ComponentArray[0], pObjectInfo->ComponentArray[1], RelativeName, ADS_OBJECT_UNBOUND, IID_IUnknown, (void**)ppObject );
BAIL_ON_FAILURE(hr); break;
default: RRETURN(E_ADS_UNKNOWN_OBJECT); }
error: FreeObjectInfo(pObjectInfo); RRETURN(hr); }
STDMETHODIMP CLDAPComputer::Delete( BSTR bstrClassName, BSTR bstrSourceName ) { ULONG ObjectType = 0; POBJECTINFO pObjectInfo = NULL; BOOL fStatus = FALSE; HRESULT hr = S_OK; WCHAR szUncServerName[MAX_PATH];
hr = GetObjectType(gpFilters, gdwMaxFilters, bstrClassName, (PDWORD)&ObjectType );
BAIL_ON_FAILURE(hr);
hr = BuildObjectInfo( _ADsPath, bstrSourceName, &pObjectInfo );
BAIL_ON_FAILURE(hr);
switch (ObjectType) {
case WINNT_USER_ID:
hr = WinNTDeleteUser(pObjectInfo); BAIL_ON_FAILURE(hr); break;
case WINNT_GROUP_ID:
hr = WinNTDeleteGroup(pObjectInfo); BAIL_ON_FAILURE(hr); break;
case WINNT_PRINTER_ID:
hr = WinNTDeletePrinter(pObjectInfo); BAIL_ON_FAILURE(hr); break;
case WINNT_SERVICE_ID:
hr = WinNTDeleteService(pObjectInfo); BAIL_ON_FAILURE(hr); break;
default: hr = E_ADS_UNKNOWN_OBJECT; break; }
error:
if (pObjectInfo) { FreeObjectInfo(pObjectInfo); } RRETURN(hr); } #endif
#if 0
WCHAR *szCurrentVersion = L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"; WCHAR *szHardwareInfo = L"HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0";
STDMETHODIMP CLDAPComputer::GetInfo( THIS_ DWORD dwApiLevel, BOOL fExplicit ) {
COMP_INFO_4 CompInfo4; PCOMP_INFO_4 pCompInfo4 = &CompInfo4; DWORD dwRet = 0; HKEY hKey = NULL; HKEY hCurrentKey = NULL; HKEY hHardwareKey = NULL; DWORD cbData = 0; HRESULT hr = S_OK; WCHAR lpszServerName[MAX_PATH];
memset(pCompInfo4, 0, sizeof(COMP_INFO_4)); switch (dwApiLevel) { case 4:
hr = MakeUncName(_Name, lpszServerName); BAIL_ON_FAILURE(hr);
dwRet = RegConnectRegistry( lpszServerName, HKEY_LOCAL_MACHINE, &hKey ); if (dwRet !=ERROR_SUCCESS) { hr = HRESULT_FROM_WIN32(dwRet); BAIL_ON_FAILURE(hr); }
dwRet = RegOpenKeyEx( hKey, szCurrentVersion, 0, KEY_READ, &hCurrentKey );
if (dwRet != ERROR_SUCCESS) { hr = HRESULT_FROM_WIN32(dwRet); BAIL_ON_FAILURE(hr); }
wcscpy(pCompInfo4->szOS, L"Windows NT");
cbData = sizeof(pCompInfo4->szOSVersion); dwRet = RegQueryValueEx( hCurrentKey, L"CurrentVersion", NULL, NULL, (LPBYTE)pCompInfo4->szOSVersion, &cbData );
cbData = sizeof(pCompInfo4->szOwner); dwRet = RegQueryValueEx( hCurrentKey, L"RegisteredOwner", NULL, NULL, (LPBYTE)pCompInfo4->szOwner, &cbData );
cbData = sizeof(pCompInfo4->szDivision), dwRet = RegQueryValueEx( hCurrentKey, L"RegisteredOrganization", NULL, NULL, (LPBYTE)pCompInfo4->szDivision, &cbData );
cbData = sizeof(pCompInfo4->szProcessorCount), dwRet = RegQueryValueEx( hCurrentKey, L"CurrentType", NULL, NULL, (LPBYTE)pCompInfo4->szProcessorCount, &cbData );
dwRet = RegOpenKeyEx( hKey, szHardwareInfo, 0, KEY_READ, &hHardwareKey ); if (dwRet != ERROR_SUCCESS) { hr = HRESULT_FROM_WIN32(dwRet); BAIL_ON_FAILURE(hr); }
cbData = sizeof(pCompInfo4->szProcessor), dwRet = RegQueryValueEx( hHardwareKey, L"Identifier", NULL, NULL, (LPBYTE)pCompInfo4->szProcessor, &cbData );
hr = UnMarshall_Level4(fExplicit, pCompInfo4);
error: if (hCurrentKey) { RegCloseKey(hCurrentKey); }
if (hHardwareKey) { RegCloseKey(hHardwareKey); }
if (hKey) { RegCloseKey(hKey); }
RRETURN(hr);
default: RRETURN(E_FAIL); }
}
HRESULT CLDAPComputer::UnMarshall_Level4( BOOL fExplicit, LPCOMP_INFO_4 pCompInfo4 ) { HRESULT hr = S_OK;
hr = SetLPTSTRPropertyInCache( _pPropertyCache, TEXT("OperatingSystem"), pCompInfo4->szOS, fExplicit );
hr = SetLPTSTRPropertyInCache( _pPropertyCache, TEXT("OperatingSystemVersion"), pCompInfo4->szOSVersion, fExplicit );
hr = SetLPTSTRPropertyInCache( _pPropertyCache, TEXT("Owner"), pCompInfo4->szOwner, fExplicit );
hr = SetLPTSTRPropertyInCache( _pPropertyCache, TEXT("Division"), pCompInfo4->szDivision, fExplicit );
hr = SetLPTSTRPropertyInCache( _pPropertyCache, TEXT("ProcessorCount"), pCompInfo4->szProcessorCount, fExplicit );
hr = SetLPTSTRPropertyInCache( _pPropertyCache, TEXT("Processor"), pCompInfo4->szProcessor, fExplicit );
RRETURN(S_OK); } #endif
/* IADsComputerOperations methods */
STDMETHODIMP CLDAPComputer::Status( IDispatch * FAR * ppObject ) { RRETURN(E_NOTIMPL); }
STDMETHODIMP CLDAPComputer::Shutdown( VARIANT_BOOL bReboot ) { RRETURN(E_NOTIMPL); }
/* IADsComputer methods */
STDMETHODIMP CLDAPComputer::get_ComputerID(THIS_ BSTR FAR* retval) { GET_PROPERTY_BSTR((IADsComputer *)this, ComputerID); }
STDMETHODIMP CLDAPComputer::get_Site(THIS_ BSTR FAR* retval) { GET_PROPERTY_BSTR((IADsComputer *)this, Site); }
STDMETHODIMP CLDAPComputer::get_Description(THIS_ BSTR FAR* retval) { GET_PROPERTY_BSTR((IADsComputer *)this, Description); }
STDMETHODIMP CLDAPComputer::put_Description(THIS_ BSTR bstrDescription) { PUT_PROPERTY_BSTR((IADsComputer *)this, Description); }
STDMETHODIMP CLDAPComputer::get_Location(THIS_ BSTR FAR* retval) { GET_PROPERTY_BSTR((IADsComputer *)this, Location); }
STDMETHODIMP CLDAPComputer::put_Location(THIS_ BSTR bstrLocation) { PUT_PROPERTY_BSTR((IADsComputer *)this, Location); }
STDMETHODIMP CLDAPComputer::get_PrimaryUser(THIS_ BSTR FAR* retval) { GET_PROPERTY_BSTR((IADsComputer *)this, PrimaryUser); }
STDMETHODIMP CLDAPComputer::put_PrimaryUser(THIS_ BSTR bstrPrimaryUser) { PUT_PROPERTY_BSTR((IADsComputer *)this, PrimaryUser); }
STDMETHODIMP CLDAPComputer::get_Owner(THIS_ BSTR FAR* retval) { GET_PROPERTY_BSTR((IADsComputer *)this, Owner); }
STDMETHODIMP CLDAPComputer::put_Owner(THIS_ BSTR bstrOwner) { PUT_PROPERTY_BSTR((IADsComputer *)this, Owner); }
STDMETHODIMP CLDAPComputer::get_Division(THIS_ BSTR FAR* retval) { GET_PROPERTY_BSTR((IADsComputer *)this, Division); }
STDMETHODIMP CLDAPComputer::put_Division(THIS_ BSTR bstrDivision) { PUT_PROPERTY_BSTR((IADsComputer *)this, Division); }
STDMETHODIMP CLDAPComputer::get_Department(THIS_ BSTR FAR* retval) { GET_PROPERTY_BSTR((IADsComputer *)this, Department); }
STDMETHODIMP CLDAPComputer::put_Department(THIS_ BSTR bstrDepartment) { PUT_PROPERTY_BSTR((IADsComputer *)this, Department); }
STDMETHODIMP CLDAPComputer::get_Role(THIS_ BSTR FAR* retval) { GET_PROPERTY_BSTR((IADsComputer *)this, Role); }
STDMETHODIMP CLDAPComputer::put_Role(THIS_ BSTR bstrRole) { PUT_PROPERTY_BSTR((IADsComputer *)this, Role); }
STDMETHODIMP CLDAPComputer::get_OperatingSystem(THIS_ BSTR FAR* retval) { GET_PROPERTY_BSTR((IADsComputer *)this, OperatingSystem); }
STDMETHODIMP CLDAPComputer::put_OperatingSystem(THIS_ BSTR bstrOperatingSystem) { PUT_PROPERTY_BSTR((IADsComputer *)this, OperatingSystem); }
STDMETHODIMP CLDAPComputer::get_OperatingSystemVersion(THIS_ BSTR FAR* retval) { GET_PROPERTY_BSTR((IADsComputer *)this, OperatingSystemVersion); }
STDMETHODIMP CLDAPComputer::put_OperatingSystemVersion(THIS_ BSTR bstrOperatingSystemVersion) { PUT_PROPERTY_BSTR((IADsComputer *)this, OperatingSystemVersion); }
STDMETHODIMP CLDAPComputer::get_Model(THIS_ BSTR FAR* retval) { GET_PROPERTY_BSTR((IADsComputer *)this, Model); }
STDMETHODIMP CLDAPComputer::put_Model(THIS_ BSTR bstrModel) { PUT_PROPERTY_BSTR((IADsComputer *)this, Model); }
STDMETHODIMP CLDAPComputer::get_Processor(THIS_ BSTR FAR* retval) { GET_PROPERTY_BSTR((IADsComputer *)this, Processor); }
STDMETHODIMP CLDAPComputer::put_Processor(THIS_ BSTR bstrProcessor) { PUT_PROPERTY_BSTR((IADsComputer *)this, Processor); }
STDMETHODIMP CLDAPComputer::get_ProcessorCount(THIS_ BSTR FAR* retval) { GET_PROPERTY_BSTR((IADsComputer *)this, ProcessorCount); }
STDMETHODIMP CLDAPComputer::put_ProcessorCount(THIS_ BSTR bstrProcessorCount) { PUT_PROPERTY_BSTR((IADsComputer *)this, ProcessorCount); }
STDMETHODIMP CLDAPComputer::get_MemorySize(THIS_ BSTR FAR* retval) { GET_PROPERTY_BSTR((IADsComputer *)this, MemorySize); }
STDMETHODIMP CLDAPComputer::put_MemorySize(THIS_ BSTR bstrMemorySize) { PUT_PROPERTY_BSTR((IADsComputer *)this, MemorySize); }
STDMETHODIMP CLDAPComputer::get_StorageCapacity(THIS_ BSTR FAR* retval) { GET_PROPERTY_BSTR((IADsComputer *)this, StorageCapacity); }
STDMETHODIMP CLDAPComputer::put_StorageCapacity(THIS_ BSTR bstrStorageCapacity) { PUT_PROPERTY_BSTR((IADsComputer *)this, StorageCapacity); }
STDMETHODIMP CLDAPComputer::get_NetAddresses(THIS_ VARIANT FAR* retval) { GET_PROPERTY_VARIANT((IADsComputer *)this, NetAddresses); }
STDMETHODIMP CLDAPComputer::put_NetAddresses(THIS_ VARIANT vNetAddresses) { PUT_PROPERTY_VARIANT((IADsComputer *)this, NetAddresses); }
|