Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

116 lines
2.6 KiB

/*++
Copyright (C) 1999-2001 Microsoft Corporation
Module Name:
PROTOQ.H
Abstract:
Prototype query support for WinMgmt Query Engine.
This was split out from QENGINE.CPP for better source
organization.
History:
raymcc 04-Jul-99 Created.
raymcc 14-Aug-99 Resubmit due to VSS problem.
--*/
#ifndef _PROTOQ_H_
#define _PROTOQ_H_
HRESULT ExecPrototypeQuery(
IN CWbemNamespace *pNs,
IN LPWSTR pszQuery,
IN IWbemContext* pContext,
IN CBasicObjectSink *pSink
);
//***************************************************************************
//
// Local defs
//
//***************************************************************************
HRESULT SelectColForClass(
IN CWQLScanner & Parser,
IN CFlexArray *pClassDefs,
IN SWQLColRef *pColRef,
IN int & nPosition
);
HRESULT AdjustClassDefs(
IN CFlexArray *pClassDefs,
OUT IWbemClassObject **pRetNewClass
);
HRESULT GetUnaryPrototype(
IN CWQLScanner & Parser,
IN LPWSTR pszClass,
IN LPWSTR pszAlias,
IN CWbemNamespace *pNs,
IN IWbemContext *pContext,
IN CBasicObjectSink *pSink
);
HRESULT RetrieveClassDefs(
IN CWQLScanner & Parser,
IN CWbemNamespace *pNs,
IN IWbemContext *pContext,
IN CWStringArray & aAliasNames,
OUT CFlexArray *pDefs
);
HRESULT ReleaseClassDefs(
IN CFlexArray *pDefs
);
//***************************************************************************
//
//***************************************************************************
struct SelectedClass
{
IWbemClassObject *m_pClassDef;
WString m_wsAlias;
WString m_wsClass;
CWStringArray m_aSelectedCols;
BOOL m_bAll;
CFlexArray m_aSelectedColsPos;
int SetNamed(LPWSTR pName, int & nPos)
{
int SizeBeforeA = m_aSelectedCols.Size();
int nRes;
nRes = m_aSelectedCols.Add(pName);
if (CFlexArray::no_error != nRes) return nRes;
#ifdef _WIN64
nRes = m_aSelectedColsPos.Add(IntToPtr(nPos++)); // ok since we are really using safearray for dword
#else
nRes = m_aSelectedColsPos.Add((void *)nPos++);
#endif
if (CFlexArray::no_error != nRes)
{
m_aSelectedCols.RemoveAt(SizeBeforeA);
nPos--;
return nRes;
}
return CFlexArray::no_error;
};
int SetAll(int & nPos);
SelectedClass() { m_pClassDef = 0; m_bAll = FALSE; }
~SelectedClass() { if (m_pClassDef) m_pClassDef->Release(); }
};
#endif