196 lines
3.6 KiB
C++
196 lines
3.6 KiB
C++
|
//----------------------------------------------------------------------------
|
||
|
//
|
||
|
// Microsoft Windows
|
||
|
// Copyright (C) Microsoft Corporation, 1996
|
||
|
//
|
||
|
// File: dump.cxx
|
||
|
//
|
||
|
// Contents: Reads the schema for objects and dumps them
|
||
|
//
|
||
|
// History: 07-09-96 ramv created
|
||
|
// 08-05-96 t-danal add to oledscmd
|
||
|
//
|
||
|
//----------------------------------------------------------------------------
|
||
|
|
||
|
#include "main.hxx"
|
||
|
#include "macro.hxx"
|
||
|
#include "sconv.hxx"
|
||
|
#include "proputil.hxx"
|
||
|
|
||
|
//
|
||
|
// Local functions
|
||
|
//
|
||
|
|
||
|
HRESULT
|
||
|
ListProperties(
|
||
|
LPWSTR szADsPath
|
||
|
);
|
||
|
|
||
|
HRESULT
|
||
|
DumpObject(
|
||
|
IADs * pADs
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// Local function definitions
|
||
|
//
|
||
|
|
||
|
HRESULT
|
||
|
ListProperties(
|
||
|
LPWSTR szADsPath
|
||
|
)
|
||
|
{
|
||
|
HRESULT hr;
|
||
|
IADs * pADs = NULL;
|
||
|
|
||
|
hr = ADsGetObject(
|
||
|
szADsPath,
|
||
|
IID_IADs,
|
||
|
(void **)&pADs
|
||
|
);
|
||
|
BAIL_ON_FAILURE(hr);
|
||
|
|
||
|
hr = DumpObject(pADs);
|
||
|
|
||
|
error:
|
||
|
if (pADs)
|
||
|
pADs->Release();
|
||
|
return hr;
|
||
|
}
|
||
|
|
||
|
HRESULT
|
||
|
DumpObject(
|
||
|
IADs * pADs
|
||
|
)
|
||
|
{
|
||
|
HRESULT hr;
|
||
|
IADs * pADsProp = NULL;
|
||
|
VARIANT * pVariantArray = NULL;
|
||
|
VARIANT varProperty;
|
||
|
|
||
|
DWORD dwNumProperties = 0;
|
||
|
BSTR bstrPropName = NULL;
|
||
|
DWORD i = 0;
|
||
|
IDispatch * pDispatch = NULL;
|
||
|
|
||
|
hr = GetPropertyList(
|
||
|
pADs,
|
||
|
&pVariantArray,
|
||
|
&dwNumProperties
|
||
|
);
|
||
|
BAIL_ON_FAILURE(hr);
|
||
|
|
||
|
//
|
||
|
// printf("GetPropertyList here\n");
|
||
|
//
|
||
|
|
||
|
hr = pADs->GetInfo();
|
||
|
BAIL_ON_FAILURE(hr);
|
||
|
|
||
|
//
|
||
|
// printf("GetInfo succeeded \n");
|
||
|
//
|
||
|
|
||
|
for (i = 0; i < dwNumProperties; i++ ) {
|
||
|
|
||
|
pDispatch = (pVariantArray + i)->pdispVal;
|
||
|
hr = pDispatch->QueryInterface(
|
||
|
IID_IADs,
|
||
|
(void **)&pADsProp
|
||
|
);
|
||
|
BAIL_ON_FAILURE(hr);
|
||
|
|
||
|
pDispatch->Release(); // NEW
|
||
|
|
||
|
hr = pADsProp->get_Name(&bstrPropName);
|
||
|
pADsProp->Release(); // NEW
|
||
|
BAIL_ON_FAILURE(hr);
|
||
|
|
||
|
hr = pADs->Get(
|
||
|
bstrPropName,
|
||
|
&varProperty
|
||
|
);
|
||
|
|
||
|
PrintProperty(
|
||
|
bstrPropName,
|
||
|
hr,
|
||
|
varProperty
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// printf("PrintProperty succeeded \n");
|
||
|
//
|
||
|
|
||
|
if (bstrPropName) {
|
||
|
SysFreeString(bstrPropName);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
error:
|
||
|
free(pVariantArray);
|
||
|
return(hr);
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// Exec function definitions
|
||
|
//
|
||
|
|
||
|
int
|
||
|
ExecDump(char *szProgName, char *szAction, int argc, char * argv[])
|
||
|
{
|
||
|
HRESULT hr;
|
||
|
LPWSTR szADsPath = NULL;
|
||
|
|
||
|
if (argc != 1) {
|
||
|
PrintUsage(szProgName, szAction, "<ADsPath>");
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
szADsPath = AllocateUnicodeString(argv[0]);
|
||
|
|
||
|
hr = ListProperties(
|
||
|
szADsPath
|
||
|
);
|
||
|
|
||
|
FreeUnicodeString(szADsPath);
|
||
|
if (FAILED(hr))
|
||
|
return 1;
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
int
|
||
|
ExecListTransient(char *szProgName, char *szAction, int argc, char * argv[])
|
||
|
{
|
||
|
HRESULT hr;
|
||
|
LPWSTR szADsPath = NULL;
|
||
|
LPWSTR szObjectType = NULL;
|
||
|
|
||
|
if (argc != 2) {
|
||
|
PrintUsage(szProgName, szAction,
|
||
|
"<ADsPath> [ job | session | resource ]");
|
||
|
return (1);
|
||
|
}
|
||
|
|
||
|
szADsPath = AllocateUnicodeString(argv[0]);
|
||
|
szObjectType = AllocateUnicodeString(argv[1]);
|
||
|
|
||
|
hr = EnumTransientObjects(
|
||
|
szADsPath,
|
||
|
szObjectType,
|
||
|
TRUE
|
||
|
);
|
||
|
|
||
|
error:
|
||
|
FreeUnicodeString(szADsPath);
|
||
|
FreeUnicodeString(szObjectType);
|
||
|
if (FAILED(hr)) {
|
||
|
printf("Enumerate transient objects failed\n");
|
||
|
return(1);
|
||
|
}
|
||
|
printf("Enumerate transient objects succeeded\n");
|
||
|
return(0);
|
||
|
}
|
||
|
*/
|