WindowsXP-SP1/admin/dscmd/dsquery/querytable.h
2020-09-30 16:53:49 +02:00

281 lines
6.3 KiB
C

//+-------------------------------------------------------------------------
//
// 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_