|
|
//+-------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 2000
//
// File: querytable.h
//
// Contents: Defines Enum for parsertable.
//
// History: 25-Sep-2000 hiteshr Created
//
//--------------------------------------------------------------------------
#ifndef _QUERYTABLE_H_
#define _QUERYTABLE_H_
//forward declarations
struct _DSQUERY_ATTRTABLE_ENTRY;
//+-------------------------------------------------------------------------
//
// Type: PMAKEFILTERFUNC
//
// Synopsis: The definition of a function that prepares ldapFilter from
// the infix filter given on the commandline.
//
//
// Returns: S_OK if the pAttr members were successfully set.
// S_FALSE if the function failed but displayed its own error message.
//
// History: 25-Sep-2000 hiteshr Created
//
//---------------------------------------------------------------------------
typedef HRESULT (*PMAKEFILTERFUNC)(_DSQUERY_ATTRTABLE_ENTRY *pEntry, ARG_RECORD* pRecord, PVOID pVoid, CComBSTR &strFilter);
//+--------------------------------------------------------------------------
//
// Struct: _DSQUERY_ATTRTABLE_ENTRY
//
// Purpose: Definition of a table entry that describes the attribute for
// which filter can be specified at commandline.
//
// History: 25-Sep-2000 hiteshr Created
//
//---------------------------------------------------------------------------
typedef struct _DSQUERY_ATTRTABLE_ENTRY { //
// The ldapDisplayName of the attribute
//
PWSTR pszName;
//
// The unique identifier for this attribute that cooresponds to
// the command line switch
//
UINT nAttributeID;
//
// Pointer to the description of the attribute
//
PDSATTRIBUTEDESCRIPTION pAttrDesc;
//
// function that prepares ldapFilter from
// the infix filter given on the commandline.
//
PMAKEFILTERFUNC pMakeFilterFunc;
} DSQUERY_ATTR_TABLE_ENTRY, *PDSQUERY_ATTR_TABLE_ENTRY;
typedef enum{ DSQUERY_OUTPUT_ATTRONLY, //Only the names of attributes
DSQUERY_OUTPUT_ATTR, //Attribute list given at commandline
DSQUERY_OUTPUT_DN, //DN
DSQUERY_OUTPUT_RDN, //RDN
DSQUERY_OUTPUT_UPN, //UPN
DSQUERY_OUTPUT_SAMID, //SAMID
DSQUERY_OUTPUT_NTLMID, }DSQUERY_OUTPUT_FORMAT;
typedef struct _DSQUERY_OUTPUT_FORMAT_MAP { LPCWSTR pszOutputFormat; DSQUERY_OUTPUT_FORMAT outputFormat; }DSQUERY_OUTPUT_FORMAT_MAP,*PDSQUERY_OUTPUT_FORMAT_MAP;
//+--------------------------------------------------------------------------
//
// Struct: _DSQueryObjectTableEntry
//
// Purpose: Definition of a table entry that describes attributes of a given
// objecttype
//
// History: 25-Sep-2000 hiteshr Created
//
//---------------------------------------------------------------------------
typedef struct _DSQueryObjectTableEntry { //
// The objectClass of the object to be created or modified
//
PCWSTR pszObjectClass;
//
// The command line string used to determine the object class
// This is not always identical to pszObjectClass
//
PCWSTR pszCommandLineObjectType;
//
// The table to merge with the common switches for the parser
//
ARG_RECORD* pParserTable;
//
// The ID of the Usage help text for this
//
UINT nUsageID;
//
// A count of the number of attributes in the table below
//
DWORD dwAttributeCount;
//
// A table of attributes for
// which filter can be specified at commandline.
//
DSQUERY_ATTR_TABLE_ENTRY** pAttributeTable;
//
// A count of the number of output formats in the table below
//
DWORD dwOutputCount;
//
// Array of valid values for Output format. NULL in case of dsquery *
//
PDSQUERY_OUTPUT_FORMAT_MAP *ppValidOutput;
//
// The unique identifier for commandline scope switch in ParserTable
// -1 if not applicable
//
UINT nScopeID;
//
//This is the default fiter to use in case no filter is specified on commandline
//
LPCWSTR pszDefaultFilter;
//
//Append this filter to filter specifed at commandline.
//
LPCWSTR pszPrefixFilter;
// Some sort of creation function
} DSQueryObjectTableEntry, *PDSQueryObjectTableEntry;
typedef enum COMMON_COMMAND { //
// Common switches
//
#ifdef DBG
eCommDebug, #endif
eCommHelp, eCommServer, eCommDomain, eCommUserName, eCommPassword, eCommQuiet, eCommObjectType, eCommRecurse, eCommGC, eCommOutputFormat, eCommStartNode, eCommLimit, eTerminator,
//
// Star switches
//
eStarScope = eTerminator, eStarFilter, eStarAttr, eStarAttrsOnly, eStarList,
//
// User switches
//
eUserScope= eTerminator, eUserName, eUserDesc, eUserUPN, eUserSamid, eUserInactive, eUserStalepwd, eUserDisabled,
//
// Computer switches
//
eComputerScope= eTerminator, eComputerName, eComputerDesc, eComputerSamid, eComputerInactive, eComputerStalepwd, eComputerDisabled,
//
// Group switches
//
eGroupScope = eTerminator, eGroupName, eGroupDesc, eGroupSamid,
//
// OU switches
//
eOUScope = eTerminator, eOUName, eOUDesc,
//
// Server switches
//
eServerForest = eTerminator, eServerDomain, eServerSite, eServerName, eServerDesc, eServerHasFSMO, eServerIsGC,
//
// Site switches
//
eSiteName = eTerminator, eSiteDesc,
//
//Contact switches
//
eContactScope = eTerminator, eContactName, eContactDesc,
//
//Subnet switches
//
eSubnetName = eTerminator, eSubnetDesc, eSubnetLoc, eSubnetSite,
};
//
// The parser table
//
extern ARG_RECORD DSQUERY_COMMON_COMMANDS[];
//
// The table of supported objects
//
extern PDSQueryObjectTableEntry g_DSObjectTable[];
#endif //_QUERYTABLE_H_
|