//+------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992 - 2000 // // File: querytable.cpp // // Contents: Defines Table For Parser. // // History: 24-Sep-2000 Hiteshr Created // // //-------------------------------------------------------------------------- #include "pch.h" #include "cstrings.h" #include "querytable.h" #include "usage.h" #include "querybld.h" //+------------------------------------------------------------------------- // Parser table //-------------------------------------------------------------------------- ARG_RECORD DSQUERY_COMMON_COMMANDS[] = { #ifdef DBG // // -debug, -debug // 0,(LPWSTR)c_sz_arg1_com_debug, 0,NULL, ARG_TYPE_DEBUG, ARG_FLAG_OPTIONAL|ARG_FLAG_HIDDEN, NULL, 0, NULL, #endif // // h, ? // 0,(LPWSTR)c_sz_arg1_com_help, 0,(LPWSTR)c_sz_arg2_com_help, ARG_TYPE_HELP, ARG_FLAG_OPTIONAL, NULL, 0, NULL, // // s,server // 0,(LPWSTR)c_sz_arg1_com_server, 0,(LPWSTR)c_sz_arg2_com_server, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, NULL, // // d,domain // 0,(LPWSTR)c_sz_arg1_com_domain, 0,NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, NULL, // // u, username // 0,(LPWSTR)c_sz_arg1_com_username, 0,(LPWSTR)c_sz_arg2_com_username, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, NULL, // // w, password // 0,(LPWSTR)c_sz_arg1_com_password, 0,(LPWSTR)c_sz_arg2_com_password, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, ValidateAdminPassword, // // q,q // 0,(LPWSTR)c_sz_arg1_com_quiet, 0,NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, NULL, 0, NULL, // // objecttype // 0,(LPWSTR)c_sz_arg1_com_objecttype, 0,NULL, ARG_TYPE_STR, ARG_FLAG_REQUIRED|ARG_FLAG_NOFLAG, 0, 0, NULL, // // r,r // 0,(LPWSTR)c_sz_arg1_com_recurse, 0,NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, NULL, 0, NULL, // // gc,gc // 0,(LPWSTR)c_sz_arg1_com_gc, 0,NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, NULL, 0, NULL, // // o,outputformat // 0,(LPWSTR)c_sz_arg1_com_output, 0,NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, NULL, // // startnode,startnode // // JonN 4/28/01 256583 // Note that startnode can also be "domainroot" or "forestroot", // which just happen to be unaffected by the escaping functions. 0,(LPWSTR)c_sz_arg1_com_startnode, 0,NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_DN, NULL, 0, NULL, // // limit // 0,(LPWSTR)c_sz_arg1_com_limit, 0,NULL, ARG_TYPE_INT, ARG_FLAG_OPTIONAL, NULL, 0, NULL, ARG_TERMINATOR }; ARG_RECORD DSQUERY_STAR_COMMANDS[]= { // // scope // 0, (PWSTR)g_pszArg1StarScope, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, 0, 0, NULL, // // filter // 0, (PWSTR)g_pszArg1StarFilter, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, 0, 0, NULL, // // attr // 0, (PWSTR)g_pszArg1StarAttr, 0, NULL, ARG_TYPE_MSZ, ARG_FLAG_OPTIONAL, 0, 0, NULL, // // attrsonly // 0, (PWSTR)g_pszArg1StarAttrsOnly, 0, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL, // // l, listoutput // 0, (PWSTR)g_pszArg1StarList, 0, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL, ARG_TERMINATOR }; ARG_RECORD DSQUERY_USER_COMMANDS[]= { // // scope // 0, (PWSTR)g_pszArg1UserScope, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, 0, 0, NULL, // // Name // 0, (PWSTR)g_pszArg1UserName, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, 0, 0, NULL, // // Desc // 0, (PWSTR)g_pszArg1UserDesc, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, 0, 0, NULL, // // Upn // 0, (PWSTR)g_pszArg1UserUpn, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, 0, 0, NULL, // // Samid // 0, (PWSTR)g_pszArg1UserSamid, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, 0, 0, NULL, // // inactive // 0, (PWSTR)g_pszArg1UserInactive, 0, NULL, ARG_TYPE_INT, ARG_FLAG_OPTIONAL, 0, 0, NULL, // // stalepwd // 0, (PWSTR)g_pszArg1UserStalepwd, 0, NULL, ARG_TYPE_INT, ARG_FLAG_OPTIONAL, 0, 0, NULL, // // -disabled // 0, (PWSTR)g_pszArg1UserDisabled, 0, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL, ARG_TERMINATOR }; ARG_RECORD DSQUERY_COMPUTER_COMMANDS[]= { // // scope // 0, (PWSTR)g_pszArg1ComputerScope, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, 0, 0, ValidateYesNo, // //name // 0, (PWSTR)g_pszArg1ComputerName, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, NULL, // //desc // 0, (PWSTR)g_pszArg1ComputerDesc, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, NULL, // //samid // 0, (PWSTR)g_pszArg1ComputerSamid, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, NULL, // //inactive // 0, (PWSTR)g_pszArg1ComputerInactive, 0, NULL, ARG_TYPE_INT, ARG_FLAG_OPTIONAL, NULL, 0, NULL, // // stalepwd // 0, (PWSTR)g_pszArg1ComputerStalepwd, 0, NULL, ARG_TYPE_INT, ARG_FLAG_OPTIONAL, 0, 0, NULL, // //disabled // 0, (PWSTR)g_pszArg1ComputerDisabled, 0, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, NULL, 0, NULL, ARG_TERMINATOR, }; ARG_RECORD DSQUERY_GROUP_COMMANDS[]= { // // scope // 0, (PWSTR)g_pszArg1GroupScope, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, 0, 0, ValidateYesNo, // //name // 0, (PWSTR)g_pszArg1GroupName, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, NULL, // //desc // 0, (PWSTR)g_pszArg1GroupDesc, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, NULL, // //samid // 0, (PWSTR)g_pszArg1GroupSamid, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, NULL, ARG_TERMINATOR, }; ARG_RECORD DSQUERY_OU_COMMANDS[]= { // // scope // 0, (PWSTR)g_pszArg1OUScope, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, 0, 0, ValidateYesNo, // //name // 0, (PWSTR)g_pszArg1OUName, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, NULL, // //desc // 0, (PWSTR)g_pszArg1OUDesc, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, NULL, ARG_TERMINATOR, }; ARG_RECORD DSQUERY_CONTACT_COMMANDS[]= { // // scope // 0, (PWSTR)g_pszArg1UserScope, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, 0, 0, NULL, // // Name // 0, (PWSTR)g_pszArg1UserName, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, 0, 0, NULL, // // Desc // 0, (PWSTR)g_pszArg1UserDesc, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, 0, 0, NULL, ARG_TERMINATOR, }; ARG_RECORD DSQUERY_SERVER_COMMANDS[]= { // // forest - Forest // 0, (PWSTR)g_pszArg1ServerForest, 0, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL, // // domain - Domain // 0, (PWSTR)c_sz_arg2_com_domain, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, 0, 0, NULL, // // site - Site // 0, (PWSTR)g_pszArg1ServerSite, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, 0, 0, NULL, // // name - Name // 0, (PWSTR)g_pszArg1ServerName, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, NULL, // //desc // 0, (PWSTR)g_pszArg1ServerDesc, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, NULL, // // hasfsmo // 0, (PWSTR)g_pszArg1ServerHasFSMO, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, NULL, // // isgc // 0, (PWSTR)g_pszArg1ServerIsGC, 0, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, NULL, 0, NULL, ARG_TERMINATOR, }; ARG_RECORD DSQUERY_SITE_COMMANDS[]= { // //name // 0, (PWSTR)g_pszArg1SiteName, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, NULL, // //desc // 0, (PWSTR)g_pszArg1SiteDesc, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, NULL, ARG_TERMINATOR, }; ARG_RECORD DSQUERY_SUBNET_COMMANDS[]= { // //name // 0, (PWSTR)g_pszArg1SubnetName, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, NULL, // //desc // 0, (PWSTR)g_pszArg1SubnetDesc, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, NULL, // //Location // 0, (PWSTR)g_pszArg1SubnetLoc, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, NULL, // //site // 0, (PWSTR)g_pszArg1SubnetSite, 0, NULL, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, NULL, ARG_TERMINATOR, }; //+------------------------------------------------------------------------- // Attributes //-------------------------------------------------------------------------- // // filter, this is no ds attribute, but dummy attribute for commandline filter // specified in case of dsquery * //Star Filter DSQUERY_ATTR_TABLE_ENTRY StarFilterEntry = { L"filter", eStarFilter, NULL, StarFilterFunc, }; // // name // DSATTRIBUTEDESCRIPTION name= { { L"cn", ADS_ATTR_UPDATE, ADSTYPE_CASE_IGNORE_STRING, NULL, 0 }, 0 }; //User Name DSQUERY_ATTR_TABLE_ENTRY UserNameEntry = { L"cn", eUserName, &name, CommonFilterFunc, }; //Computer Name DSQUERY_ATTR_TABLE_ENTRY ComputerNameEntry = { L"cn", eComputerName, &name, CommonFilterFunc, }; //Group Name DSQUERY_ATTR_TABLE_ENTRY GroupNameEntry = { L"cn", eGroupName, &name, CommonFilterFunc, }; //OU Name DSQUERY_ATTR_TABLE_ENTRY OUNameEntry = { L"ou", eOUName, &name, CommonFilterFunc, }; // Server Name DSQUERY_ATTR_TABLE_ENTRY ServerNameEntry = { L"cn", eServerName, &name, CommonFilterFunc, }; // Site Name DSQUERY_ATTR_TABLE_ENTRY SiteNameEntry = { L"cn", eSiteName, &name, CommonFilterFunc, }; // Contact Name DSQUERY_ATTR_TABLE_ENTRY ContactNameEntry = { L"cn", eContactName, &name, CommonFilterFunc, }; // Subnet Name DSQUERY_ATTR_TABLE_ENTRY SubnetNameEntry = { L"cn", eSubnetName, &name, CommonFilterFunc, }; // // Description // DSATTRIBUTEDESCRIPTION description = { { L"description", ADS_ATTR_UPDATE, ADSTYPE_CASE_IGNORE_STRING, NULL, 0 }, 0 }; //User Description DSQUERY_ATTR_TABLE_ENTRY UserDescEntry = { L"description", eUserDesc, &description, CommonFilterFunc, }; //Computer Description DSQUERY_ATTR_TABLE_ENTRY ComputerDescEntry = { L"description", eComputerDesc, &description, CommonFilterFunc, }; //Group Description DSQUERY_ATTR_TABLE_ENTRY GroupDescEntry = { L"description", eGroupDesc, &description, CommonFilterFunc, }; //OU Description DSQUERY_ATTR_TABLE_ENTRY OUDescEntry = { L"description", eOUDesc, &description, CommonFilterFunc, }; //Server Description DSQUERY_ATTR_TABLE_ENTRY ServerDescEntry = { L"description", eServerDesc, &description, CommonFilterFunc, }; //Site Description DSQUERY_ATTR_TABLE_ENTRY SiteDescEntry = { L"description", eSiteDesc, &description, CommonFilterFunc, }; //Cotnact Description DSQUERY_ATTR_TABLE_ENTRY ContactDescEntry = { L"description", eContactDesc, &description, CommonFilterFunc, }; //Subnet Description DSQUERY_ATTR_TABLE_ENTRY SubnetDescEntry = { L"description", eSubnetDesc, &description, CommonFilterFunc, }; // // UPN // DSATTRIBUTEDESCRIPTION upn = { { L"userPrincipalName", ADS_ATTR_UPDATE, ADSTYPE_CASE_IGNORE_STRING, NULL, 0 }, 0 }; //User Upn DSQUERY_ATTR_TABLE_ENTRY UserUPNEntry = { L"userPrincipalName", eUserUPN, &upn, CommonFilterFunc, }; // // SAM Account Name // DSATTRIBUTEDESCRIPTION samAccountName = { { L"sAMAccountName", ADS_ATTR_UPDATE, ADSTYPE_CASE_IGNORE_STRING, NULL, 0 }, 0 }; //User SAM Account DSQUERY_ATTR_TABLE_ENTRY UserSamidEntry = { L"sAMAccountName", eUserSamid, &samAccountName, CommonFilterFunc, }; //Computer samAccountName DSQUERY_ATTR_TABLE_ENTRY ComputerSamidEntry = { L"sAMAccountName", eComputerSamid, &samAccountName, CommonFilterFunc, }; //Group samAccountName DSQUERY_ATTR_TABLE_ENTRY GroupSamidEntry = { L"sAMAccountName", eGroupSamid, &samAccountName, CommonFilterFunc, }; //User Disabled DSQUERY_ATTR_TABLE_ENTRY UserDisabledEntry = { L"disabled", eUserDisabled, NULL, DisabledFilterFunc, }; //Computer Disabled DSQUERY_ATTR_TABLE_ENTRY ComputerDisabledEntry = { L"disabled", eComputerDisabled, NULL, DisabledFilterFunc, }; //User Inactive DSQUERY_ATTR_TABLE_ENTRY UserInactiveEntry = { L"inactive", eUserInactive, NULL, InactiveFilterFunc, }; //Computer Inactive DSQUERY_ATTR_TABLE_ENTRY ComputerInactiveEntry = { L"inactive", eComputerInactive, NULL, InactiveFilterFunc, }; //User stalepwd DSQUERY_ATTR_TABLE_ENTRY UserStalepwdEntry = { L"stalepwd", eUserStalepwd, NULL, StalepwdFilterFunc, }; //Computer stalepwd DSQUERY_ATTR_TABLE_ENTRY ComputerStalepwdEntry = { L"stalepwd", eComputerStalepwd, NULL, StalepwdFilterFunc, }; // // Locations // DSATTRIBUTEDESCRIPTION location = { { L"location", ADS_ATTR_UPDATE, ADSTYPE_CASE_IGNORE_STRING, NULL, 0 }, 0 }; //Subnet location DSQUERY_ATTR_TABLE_ENTRY SubnetLocEntry= { L"location", eSubnetLoc, &location, CommonFilterFunc, }; // // SiteObject // DSATTRIBUTEDESCRIPTION siteObject= { { L"siteObject", ADS_ATTR_UPDATE, ADSTYPE_CASE_IGNORE_STRING, NULL, 0 }, 0 }; //Subnet Site DSQUERY_ATTR_TABLE_ENTRY SubnetSiteEntry= { L"siteObject", eSubnetSite, &siteObject, SubnetSiteFilterFunc, }; // //Valid OutputStrings for each objecttype // // DSQUERY_OUTPUT_FORMAT_MAP g_format_dn = { g_pszDN, DSQUERY_OUTPUT_DN }; DSQUERY_OUTPUT_FORMAT_MAP g_format_rdn = { g_pszRDN, DSQUERY_OUTPUT_RDN }; DSQUERY_OUTPUT_FORMAT_MAP g_format_upn = { g_pszUPN, DSQUERY_OUTPUT_UPN }; DSQUERY_OUTPUT_FORMAT_MAP g_format_samid = { g_pszSamId, DSQUERY_OUTPUT_SAMID }; DSQUERY_OUTPUT_FORMAT_MAP g_format_ntlmid = { g_pszNtlmId, DSQUERY_OUTPUT_NTLMID }; PDSQUERY_OUTPUT_FORMAT_MAP UserOutputFormatMap[] = { &g_format_dn, &g_format_rdn, &g_format_upn, &g_format_samid, &g_format_ntlmid }; //Computer PDSQUERY_OUTPUT_FORMAT_MAP ComputerOutputFormatMap[] = { &g_format_dn, &g_format_rdn, &g_format_samid, &g_format_ntlmid }; //Group PDSQUERY_OUTPUT_FORMAT_MAP GroupOutputFormatMap[] = { &g_format_dn, &g_format_rdn, &g_format_samid, &g_format_ntlmid }; //OU PDSQUERY_OUTPUT_FORMAT_MAP OuOutputFormatMap[] = { &g_format_dn, &g_format_rdn }; //Contact PDSQUERY_OUTPUT_FORMAT_MAP ContactOutputFormatMap[] = { &g_format_dn, &g_format_rdn }; //Server PDSQUERY_OUTPUT_FORMAT_MAP ServerOutputFormatMap[] = { &g_format_dn, &g_format_rdn }; //Site PDSQUERY_OUTPUT_FORMAT_MAP SiteOutputFormatMap[] = { &g_format_dn, &g_format_rdn }; //Subnet PDSQUERY_OUTPUT_FORMAT_MAP SubnetOutputFormatMap[] = { &g_format_dn, &g_format_rdn }; //Attribute Table entries and ObjectTableEntries // // //* Star // PDSQUERY_ATTR_TABLE_ENTRY StarAttributeTable[] = { &StarFilterEntry, }; DSQueryObjectTableEntry g_StarObjectEntry = { L"*", g_pszStar, DSQUERY_STAR_COMMANDS, USAGE_DSQUERY_STAR, sizeof(StarAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY), StarAttributeTable, 0, NULL, eStarScope, g_pszDefStarFilter, NULL }; // // User // PDSQUERY_ATTR_TABLE_ENTRY UserAttributeTable[] = { &UserNameEntry, &UserUPNEntry, &UserDescEntry, &UserSamidEntry, &UserDisabledEntry, &UserInactiveEntry, &UserStalepwdEntry }; DSQueryObjectTableEntry g_UserObjectEntry = { L"user", g_pszUser, DSQUERY_USER_COMMANDS, USAGE_DSQUERY_USER, sizeof(UserAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY), UserAttributeTable, sizeof(UserOutputFormatMap)/sizeof(PDSQUERY_OUTPUT_FORMAT_MAP), UserOutputFormatMap, eUserScope, g_pszDefUserFilter, g_pszDefUserFilter }; // // Computer // PDSQUERY_ATTR_TABLE_ENTRY ComputerAttributeTable[] = { &ComputerNameEntry, &ComputerDescEntry, &ComputerSamidEntry, &ComputerDisabledEntry, &ComputerInactiveEntry, &ComputerStalepwdEntry }; DSQueryObjectTableEntry g_ComputerObjectEntry = { L"computer", g_pszComputer, DSQUERY_COMPUTER_COMMANDS, USAGE_DSQUERY_COMPUTER, sizeof(ComputerAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY), ComputerAttributeTable, sizeof(ComputerOutputFormatMap)/sizeof(PDSQUERY_OUTPUT_FORMAT_MAP), ComputerOutputFormatMap, eComputerScope, g_pszDefComputerFilter, g_pszDefComputerFilter }; // // Group // PDSQUERY_ATTR_TABLE_ENTRY GroupAttributeTable[] = { &GroupNameEntry, &GroupDescEntry, &GroupSamidEntry }; DSQueryObjectTableEntry g_GroupObjectEntry = { L"group", g_pszGroup, DSQUERY_GROUP_COMMANDS, USAGE_DSQUERY_GROUP, sizeof(GroupAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY), GroupAttributeTable, sizeof(GroupOutputFormatMap)/sizeof(PDSQUERY_OUTPUT_FORMAT_MAP), GroupOutputFormatMap, eGroupScope, g_pszDefGroupFilter, g_pszDefGroupFilter }; // // OU // PDSQUERY_ATTR_TABLE_ENTRY OUAttributeTable[] = { &OUNameEntry, &OUDescEntry }; DSQueryObjectTableEntry g_OUObjectEntry = { L"ou", g_pszOU, DSQUERY_OU_COMMANDS, USAGE_DSQUERY_OU, sizeof(OUAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY), OUAttributeTable, sizeof(OuOutputFormatMap)/sizeof(PDSQUERY_OUTPUT_FORMAT_MAP), OuOutputFormatMap, eOUScope, g_pszDefOUFilter, g_pszDefOUFilter }; // // Server // PDSQUERY_ATTR_TABLE_ENTRY ServerAttributeTable[] = { &ServerNameEntry, &ServerDescEntry }; DSQueryObjectTableEntry g_ServerObjectEntry = { L"server", g_pszServer, DSQUERY_SERVER_COMMANDS, USAGE_DSQUERY_SERVER, sizeof(ServerAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY), ServerAttributeTable, sizeof(ServerOutputFormatMap)/sizeof(PDSQUERY_OUTPUT_FORMAT_MAP), ServerOutputFormatMap, static_cast(-1), g_pszDefServerFilter, g_pszDefServerFilter }; // // Site // PDSQUERY_ATTR_TABLE_ENTRY SiteAttributeTable[] = { &SiteNameEntry, &SiteDescEntry }; DSQueryObjectTableEntry g_SiteObjectEntry = { L"site", g_pszSite, DSQUERY_SITE_COMMANDS, USAGE_DSQUERY_SITE, sizeof(SiteAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY), SiteAttributeTable, sizeof(SiteOutputFormatMap)/sizeof(PDSQUERY_OUTPUT_FORMAT_MAP), SiteOutputFormatMap, static_cast(-1), g_pszDefSiteFilter, g_pszDefSiteFilter }; // // Contact // PDSQUERY_ATTR_TABLE_ENTRY ContactAttributeTable[] = { &ContactNameEntry, &ContactDescEntry, }; DSQueryObjectTableEntry g_ContactObjectEntry = { L"contact", g_pszContact, DSQUERY_CONTACT_COMMANDS, USAGE_DSQUERY_USER, sizeof(ContactAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY), ContactAttributeTable, sizeof(ContactOutputFormatMap)/sizeof(PDSQUERY_OUTPUT_FORMAT_MAP), ContactOutputFormatMap, eContactScope, g_pszDefContactFilter, g_pszDefContactFilter }; // // Subnet // PDSQUERY_ATTR_TABLE_ENTRY SubnetAttributeTable[] = { &SubnetNameEntry, &SubnetDescEntry, &SubnetLocEntry, &SubnetSiteEntry, }; DSQueryObjectTableEntry g_SubnetObjectEntry = { L"subnet", g_pszSubnet, DSQUERY_SUBNET_COMMANDS, USAGE_DSQUERY_SUBNET, sizeof(SubnetAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY), SubnetAttributeTable, sizeof(SubnetOutputFormatMap)/sizeof(PDSQUERY_OUTPUT_FORMAT_MAP), SubnetOutputFormatMap, static_cast(-1), g_pszDefSubnetFilter, g_pszDefSubnetFilter }; //+------------------------------------------------------------------------- // Object Table //-------------------------------------------------------------------------- PDSQueryObjectTableEntry g_DSObjectTable[] = { &g_StarObjectEntry, &g_OUObjectEntry, &g_UserObjectEntry, &g_ComputerObjectEntry, &g_GroupObjectEntry, &g_ServerObjectEntry, &g_SiteObjectEntry, &g_ContactObjectEntry, &g_SubnetObjectEntry, NULL };