📄 dsclient.h
字号:
#ifndef __dsclient_h
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
#define __dsclient_h
//---------------------------------------------------------------------------//
// CLSIDs exposed for the dsclient.
//---------------------------------------------------------------------------//
// this CLSID is used to signal that the DSOBJECTNAMEs structure originated
// for the Microsoft DS.
DEFINE_GUID(CLSID_MicrosoftDS, 0xfe1290f0, 0xcfbd, 0x11cf, 0xa3, 0x30, 0x0, 0xaa, 0x0, 0xc1, 0x6e, 0x65);
#define CLSID_DsFolder CLSID_MicrosoftDS
// this is the CLSID used by clients to get the IShellExtInit, IPropSheetExt
// and IContextMenus exposed from dsuiext.dll.
DEFINE_GUID(CLSID_DsPropertyPages, 0xd45d530, 0x764b, 0x11d0, 0xa1, 0xca, 0x0, 0xaa, 0x0, 0xc1, 0x6e, 0x65);
DEFINE_GUID(CLSID_DsDomainTreeBrowser, 0x1698790a, 0xe2b4, 0x11d0, 0xb0, 0xb1, 0x00, 0xc0, 0x4f, 0xd8, 0xdc, 0xa6);
DEFINE_GUID(IID_IDsBrowseDomainTree, 0x7cabcf1e, 0x78f5, 0x11d2, 0x96, 0xc, 0x0, 0xc0, 0x4f, 0xa3, 0x1a, 0x86);
DEFINE_GUID(CLSID_DsDisplaySpecifier, 0x1ab4a8c0, 0x6a0b, 0x11d2, 0xad, 0x49, 0x0, 0xc0, 0x4f, 0xa3, 0x1a, 0x86);
#define IID_IDsDisplaySpecifier CLSID_DsDisplaySpecifier
DEFINE_GUID(CLSID_DsFolderProperties, 0x9e51e0d0, 0x6e0f, 0x11d2, 0x96, 0x1, 0x0, 0xc0, 0x4f, 0xa3, 0x1a, 0x86);
#define IID_IDsFolderProperties CLSID_DsFolderProperties
#ifndef GUID_DEFS_ONLY
#include "activeds.h"
//---------------------------------------------------------------------------//
// Clipboard formats used within DSUI
//---------------------------------------------------------------------------//
//
// CF_DSOBJECTS
// ------------
// This clipboard format defines the seleciton for an DS IShellFolder to the
// shell extensions. All strings are stored as BSTR's, and an offset == 0
// is used to indicate that the string is not present.
//
#define DSOBJECT_ISCONTAINER 0x00000001 // = 1 => object is a container
#define DSOBJECT_READONLYPAGES 0x80000000 // = 1 => read only pages
#define DSPROVIDER_UNUSED_0 0x00000001
#define DSPROVIDER_UNUSED_1 0x00000002
#define DSPROVIDER_UNUSED_2 0x00000004
#define DSPROVIDER_UNUSED_3 0x00000008
#define DSPROVIDER_ADVANCED 0x00000010 // = 1 => advanced mode
#define CFSTR_DSOBJECTNAMES TEXT("DsObjectNames")
typedef struct
{
DWORD dwFlags; // item flags
DWORD dwProviderFlags; // flags for item provider
DWORD offsetName; // offset to ADS path of the object
DWORD offsetClass; // offset to object class name / == 0 not known
} DSOBJECT, * LPDSOBJECT;
typedef struct
{
CLSID clsidNamespace; // namespace identifier (indicates which namespace selection from)
UINT cItems; // number of objects
DSOBJECT aObjects[1]; // array of objects
} DSOBJECTNAMES, * LPDSOBJECTNAMES;
//
// CF_DSDISPLAYSPECOPTIONS
// -----------------------
// When invoking an object referenced by a display specifier (context menu, property
// page, etc) we call the IShellExtInit interface passing a IDataObject. This data
// object supports the CF_DSDISPLAYSPECOPTIONS format to give out configuration
// informaiton about admin/shell invocation.
//
// When interacting with dsuiext.dll the interfaces uses this clipboard format
// to determine which display specifier attributes to address (admin/shell)
// and pick up the values accordingly. If no format is suppoted then
// dsuiext.dll defaults to shell.
//
#define CFSTR_DS_DISPLAY_SPEC_OPTIONS TEXT("DsDisplaySpecOptions")
#define CFSTR_DSDISPLAYSPECOPTIONS CFSTR_DS_DISPLAY_SPEC_OPTIONS
typedef struct _DSDISPLAYSPECOPTIONS
{
DWORD dwSize; // size of struct, for versioning
DWORD dwFlags; // invocation flags
DWORD offsetAttribPrefix; // offset to attribute prefix string.
DWORD offsetUserName; // offset to UNICODE user name
DWORD offsetPassword; // offset to UNICODE password
DWORD offsetServer;
DWORD offsetServerConfigPath;
} DSDISPLAYSPECOPTIONS, * PDSDISPLAYSPECOPTIONS, * LPDSDISPLAYSPECOPTIONS;
#define DS_PROP_SHELL_PREFIX L"shell"
#define DS_PROP_ADMIN_PREFIX L"admin"
#define DSDSOF_HASUSERANDSERVERINFO 0x00000001 // = 1 => user name/password are valid
#define DSDSOF_SIMPLEAUTHENTICATE 0x00000002 // = 1 => don't use secure authentication to DS
#define DSDSOF_DSAVAILABLE 0x40000000 // = 1 => ignore DS available checks
//
// CF_DSPROPERTYPAGEINFO
// ---------------------
// When the property pages for an object are being displayed the parsed
// display specifier string is passed to the page object via the IDataObject
// in the following clipboard format.
//
// Within the display specifier for a property page, the format for a
// Win32 extension is "n,{clsid}[,bla...]" we take the "bla" section and
// pass it down.
//
#define CFSTR_DSPROPERTYPAGEINFO TEXT("DsPropPageInfo")
typedef struct
{
DWORD offsetString; // offset to UNICODE string
} DSPROPERTYPAGEINFO, * LPDSPROPERTYPAGEINFO;
//
// To sync property pages and the admin tools this message is broadcast
//
#define DSPROP_ATTRCHANGED_MSG TEXT("DsPropAttrChanged")
//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//
//
// IDsBrowseDomainTree
// ===================
// This interface returns a list of the domains from a given computer name
// (or the current computer name if none is specified).
//
// NOTES:
// 1) The structure returned by ::GetDomains should be free'd using
// FreeDomains.
//
// 2) ::BrowseTo allocates a string on exit, this is allocated using
// CoTaskMemAlloc, and therefore should be free'd using CoTaskMemFree.
//
//---------------------------------------------------------------------------//
#define DBDTF_RETURNFQDN 0x00000001 // if not set, pszNCName will be blank
#define DBDTF_RETURNMIXEDDOMAINS 0x00000002 // set it if you want downlevel trust domains too
#define DBDTF_RETURNEXTERNAL 0x00000004 // set it if you want external trust domains too
#define DBDTF_RETURNINBOUND 0x00000008 // set it if you want trusting domains
#define DBDTF_RETURNINOUTBOUND 0x00000010 // set it if you want both trusted and trusting domains
typedef struct _DOMAINDESC
{
LPWSTR pszName; // domain name (if no dns, use netbios)
LPWSTR pszPath; // set to blank
LPWSTR pszNCName; // FQDN, e.g.,DC=mydomain,DC=microsoft,DC=com
LPWSTR pszTrustParent; // parent domain name (if no dns, use netbios)
LPWSTR pszObjectClass; // Object class of the domain object referenced
ULONG ulFlags; // Flags, from DS_TRUSTED_DOMAINS.Flags
BOOL fDownLevel; // == 1 if downlevel domain
struct _DOMAINDESC *pdChildList; // Children of this node
struct _DOMAINDESC *pdNextSibling; // Siblings of this node
} DOMAIN_DESC, DOMAINDESC, * PDOMAIN_DESC, * LPDOMAINDESC;
typedef struct
{
DWORD dsSize;
DWORD dwCount;
DOMAINDESC aDomains[1];
} DOMAIN_TREE, DOMAINTREE, * PDOMAIN_TREE, * LPDOMAINTREE;
#undef INTERFACE
#define INTERFACE IDsBrowseDomainTree
DECLARE_INTERFACE_(IDsBrowseDomainTree, IUnknown)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
// *** IDsBrowseDomainTree methods ***
STDMETHOD(BrowseTo)(THIS_ HWND hwndParent, LPWSTR *ppszTargetPath, DWORD dwFlags) PURE;
STDMETHOD(GetDomains)(THIS_ PDOMAIN_TREE *ppDomainTree, DWORD dwFlags) PURE;
STDMETHOD(FreeDomains)(THIS_ PDOMAIN_TREE *ppDomainTree) PURE;
STDMETHOD(FlushCachedDomains)(THIS) PURE;
STDMETHOD(SetComputer)(THIS_ LPCWSTR pszComputerName, LPCWSTR pszUserName, LPCWSTR pszPassword) PURE;
};
//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//
//
// IDsDisplaySpecifier
// ===================
// This interface gives client UI access to the display specifiers for
// specific attributes.
//
//---------------------------------------------------------------------------//
//
// IDsDisplaySpecifier::SetServer flags
//
#define DSSSF_SIMPLEAUTHENTICATE 0x00000001 // = 1 => don't use secure authentication to DS
#define DSSSF_DSAVAILABLE 0x80000000 // = 1 => ignore DS available checks
//
// Flags for IDsDisplaySpecifier::GetIcon / GetIconLocation
//
#define DSGIF_ISNORMAL 0x0000000 // = icon is in normal state (default)
#define DSGIF_ISOPEN 0x0000001 // = icon is in open state
#define DSGIF_ISDISABLED 0x0000002 // = icon is in a disabled state
#define DSGIF_ISMASK 0x000000f
#define DSGIF_GETDEFAULTICON 0x0000010 // = 1 => if no icon then get default (from shell32.dll)
#define DSGIF_DEFAULTISCONTAINER 0x0000020 // = 1 => if returning default icon, return it as a container
//
// Flags for IDsDisplaySpecifier::IsClassContainer
//
#define DSICCF_IGNORETREATASLEAF 0x00000001 // = 1 => igore the "treatAsLeaf" and use only schema information
//
// Callback function used for IDsDisplaySpecifier::EnumClassAttributes
//
#define DSECAF_NOTLISTED 0x00000001 // = 1 => hide from the field drop down in the query UI
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -