af062818b47340eef15700d2f0211576ba3506eevboxsync/*
af062818b47340eef15700d2f0211576ba3506eevboxsync * objsel.h
af062818b47340eef15700d2f0211576ba3506eevboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync * Object Picker Dialog
af062818b47340eef15700d2f0211576ba3506eevboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync * THIS SOFTWARE IS NOT COPYRIGHTED
af062818b47340eef15700d2f0211576ba3506eevboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync * This source code is offered for use in the public domain. You may
af062818b47340eef15700d2f0211576ba3506eevboxsync * use, modify or distribute it freely.
af062818b47340eef15700d2f0211576ba3506eevboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync * This code is distributed in the hope that it will be useful but
af062818b47340eef15700d2f0211576ba3506eevboxsync * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
af062818b47340eef15700d2f0211576ba3506eevboxsync * DISCLAIMED. This includes but is not limited to warranties of
af062818b47340eef15700d2f0211576ba3506eevboxsync * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
af062818b47340eef15700d2f0211576ba3506eevboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync */
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync/*
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync * Sun LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync * other than GPL or LGPL is available it will apply instead, Sun elects to use only
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync * a choice of LGPL license versions is made available with the language indicating
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync * that LGPLv2 or any later version may be used, or where a choice of which version
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync * of the LGPL is applied is otherwise unspecified.
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync */
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef __OBJSEL_H_
af062818b47340eef15700d2f0211576ba3506eevboxsync#define __OBJSEL_H_
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifdef __cplusplus
af062818b47340eef15700d2f0211576ba3506eevboxsyncextern "C" {
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncDEFINE_GUID(CLSID_DsObjectPicker, 0x17d6ccd8, 0x3b7b, 0x11d2, 0x00b9, 0xe0,0x00,0xc0,0x4f,0xd8,0xdb,0xf7);
af062818b47340eef15700d2f0211576ba3506eevboxsyncDEFINE_GUID(IID_IDsObjectPicker, 0x0c87e64e, 0x3b7a, 0x11d2, 0x00b9, 0xe0,0x00,0xc0,0x4f,0xd8,0xdb,0xf7);
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#define CFSTR_DSOP_DS_SELECTION_LIST TEXT("CFSTR_DSOP_DS_SELECTION_LIST")
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* up-level scope filters in the DSOP_UPLEVEL_FILTER_FLAGS structure */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_FILTER_INCLUDE_ADVANCED_VIEW (0x1)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_FILTER_USERS (0x2)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_FILTER_BUILTIN_GROUPS (0x4)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_FILTER_WELL_KNOWN_PRINCIPALS (0x8)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_FILTER_UNIVERSAL_GROUPS_DL (0x10)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_FILTER_UNIVERSAL_GROUPS_SE (0x20)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_FILTER_GLOBAL_GROUPS_DL (0x40)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_FILTER_GLOBAL_GROUPS_SE (0x80)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_FILTER_DOMAIN_LOCAL_GROUPS_DL (0x100)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_FILTER_DOMAIN_LOCAL_GROUPS_SE (0x200)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_FILTER_CONTACTS (0x400)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_FILTER_COMPUTERS (0x800)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _DSOP_UPLEVEL_FILTER_FLAGS
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG flBothModes;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG flMixedModeOnly;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG flNativeModeOnly;
af062818b47340eef15700d2f0211576ba3506eevboxsync} DSOP_UPLEVEL_FILTER_FLAGS, *PDSOP_UPLEVEL_FILTER_FLAGS;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* down-level scope filters in the DSOP_FILTER_FLAGS structure */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_DOWNLEVEL_FILTER_USERS (0x80000001)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_DOWNLEVEL_FILTER_LOCAL_GROUPS (0x80000002)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_DOWNLEVEL_FILTER_GLOBAL_GROUPS (0x80000004)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_DOWNLEVEL_FILTER_COMPUTERS (0x80000008)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_DOWNLEVEL_FILTER_WORLD (0x80000010)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_DOWNLEVEL_FILTER_AUTHENTICATED_USER (0x80000020)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_DOWNLEVEL_FILTER_ANONYMOUS (0x80000040)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_DOWNLEVEL_FILTER_BATCH (0x80000080)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_DOWNLEVEL_FILTER_CREATOR_OWNER (0x80000100)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_DOWNLEVEL_FILTER_CREATOR_GROUP (0x80000200)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_DOWNLEVEL_FILTER_DIALUP (0x80000400)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_DOWNLEVEL_FILTER_INTERACTIVE (0x80000800)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_DOWNLEVEL_FILTER_NETWORK (0x80001000)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_DOWNLEVEL_FILTER_SERVICE (0x80002000)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_DOWNLEVEL_FILTER_SYSTEM (0x80004000)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_DOWNLEVEL_FILTER_EXCLUDE_BUILTIN_GROUPS (0x80008000)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_DOWNLEVEL_FILTER_TERMINAL_SERVER (0x80010000)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_DOWNLEVEL_FILTER_ALL_WELLKNOWN_SIDS (0x80020000)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_DOWNLEVEL_FILTER_LOCAL_SERVICE (0x80040000)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_DOWNLEVEL_FILTER_NETWORK_SERVICE (0x80080000)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_DOWNLEVEL_FILTER_REMOTE_LOGON (0x80100000)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _DSOP_FILTER_FLAGS
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync DSOP_UPLEVEL_FILTER_FLAGS Uplevel;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG flDownlevel;
af062818b47340eef15700d2f0211576ba3506eevboxsync} DSOP_FILTER_FLAGS, *PDSOP_FILTER_FLAGS;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* ADsPath format flags in the DSOP_SCOPE_INIT_INFO structure */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_SCOPE_FLAG_STARTING_SCOPE (0x1)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_SCOPE_FLAG_WANT_PROVIDER_WINNT (0x2)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_SCOPE_FLAG_WANT_PROVIDER_LDAP (0x4)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_SCOPE_FLAG_WANT_PROVIDER_GC (0x8)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_SCOPE_FLAG_WANT_SID_PATH (0x10)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_SCOPE_FLAG_WANT_DOWNLEVEL_BUILTIN_PATH (0x20)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_SCOPE_FLAG_DEFAULT_FILTER_USERS (0x40)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_SCOPE_FLAG_DEFAULT_FILTER_GROUPS (0x80)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_SCOPE_FLAG_DEFAULT_FILTER_COMPUTERS (0x100)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_SCOPE_FLAG_DEFAULT_FILTER_CONTACTS (0x200)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _DSOP_SCOPE_INIT_INFO
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG cbSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG flType;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG flScope;
af062818b47340eef15700d2f0211576ba3506eevboxsync DSOP_FILTER_FLAGS FilterFlags;
af062818b47340eef15700d2f0211576ba3506eevboxsync PCWSTR pwzDcName;
af062818b47340eef15700d2f0211576ba3506eevboxsync PCWSTR pwzADsPath;
af062818b47340eef15700d2f0211576ba3506eevboxsync HRESULT hr;
af062818b47340eef15700d2f0211576ba3506eevboxsync} DSOP_SCOPE_INIT_INFO, *PDSOP_SCOPE_INIT_INFO;
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef const DSOP_SCOPE_INIT_INFO *PCDSOP_SCOPE_INIT_INFO;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* object picker options in the DSOP_INIT_INFO structure */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_FLAG_MULTISELECT (0x1)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_FLAG_SKIP_TARGET_COMPUTER_DC_CHECK (0x2)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _DSOP_INIT_INFO
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG cbSize;
af062818b47340eef15700d2f0211576ba3506eevboxsync PCWSTR pwzTargetComputer;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG cDsScopeInfos;
af062818b47340eef15700d2f0211576ba3506eevboxsync PDSOP_SCOPE_INIT_INFO aDsScopeInfos;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG flOptions;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG cAttributesToFetch;
af062818b47340eef15700d2f0211576ba3506eevboxsync PCWSTR *apwzAttributeNames;
af062818b47340eef15700d2f0211576ba3506eevboxsync} DSOP_INIT_INFO, *PDSOP_INIT_INFO;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef const DSOP_INIT_INFO *PCDSOP_INIT_INFO;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* selection scope types in the DS_SELECTION structure */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_SCOPE_TYPE_TARGET_COMPUTER (0x1)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_SCOPE_TYPE_UPLEVEL_JOINED_DOMAIN (0x2)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_SCOPE_TYPE_DOWNLEVEL_JOINED_DOMAIN (0x4)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_SCOPE_TYPE_ENTERPRISE_DOMAIN (0x8)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_SCOPE_TYPE_GLOBAL_CATALOG (0x10)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_SCOPE_TYPE_EXTERNAL_UPLEVEL_DOMAIN (0x20)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_SCOPE_TYPE_EXTERNAL_DOWNLEVEL_DOMAIN (0x40)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_SCOPE_TYPE_WORKGROUP (0x80)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_SCOPE_TYPE_USER_ENTERED_UPLEVEL_SCOPE (0x100)
af062818b47340eef15700d2f0211576ba3506eevboxsync#define DSOP_SCOPE_TYPE_USER_ENTERED_DOWNLEVEL_SCOPE (0x200)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _DS_SELECTION
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync PWSTR pwzName;
af062818b47340eef15700d2f0211576ba3506eevboxsync PWSTR pwzADsPath;
af062818b47340eef15700d2f0211576ba3506eevboxsync PWSTR pwzClass;
af062818b47340eef15700d2f0211576ba3506eevboxsync PWSTR pwzUPN;
af062818b47340eef15700d2f0211576ba3506eevboxsync VARIANT *pvarFetchedAttributes;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG flScopeType;
af062818b47340eef15700d2f0211576ba3506eevboxsync} DS_SELECTION, *PDS_SELECTION;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsynctypedef struct _DS_SELECTION_LIST
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG cItems;
af062818b47340eef15700d2f0211576ba3506eevboxsync ULONG cFetchedAttributes;
af062818b47340eef15700d2f0211576ba3506eevboxsync DS_SELECTION aDsSelection[ANYSIZE_ARRAY];
af062818b47340eef15700d2f0211576ba3506eevboxsync} DS_SELECTION_LIST, *PDS_SELECTION_LIST;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/*****************************************************************************
af062818b47340eef15700d2f0211576ba3506eevboxsync * IDsObjectPicker interface
af062818b47340eef15700d2f0211576ba3506eevboxsync */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define INTERFACE IDsObjectPicker
af062818b47340eef15700d2f0211576ba3506eevboxsyncDECLARE_INTERFACE_(IDsObjectPicker,IUnknown)
af062818b47340eef15700d2f0211576ba3506eevboxsync{
af062818b47340eef15700d2f0211576ba3506eevboxsync /*** IUnknown methods ***/
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD_(ULONG,AddRef)(THIS) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD_(ULONG,Release)(THIS) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync /*** IDsObjectPicker methods ***/
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(Initialize)(THIS_ PDSOP_INIT_INFO pInitInfo) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync STDMETHOD(InvokeDialog)(THIS_ HWND hwndParent, IDataObject** ppdoSelections) PURE;
af062818b47340eef15700d2f0211576ba3506eevboxsync};
af062818b47340eef15700d2f0211576ba3506eevboxsync#undef INTERFACE
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifdef __cplusplus
af062818b47340eef15700d2f0211576ba3506eevboxsync}
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif /* __OBJSEL_H_ */