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); }