Commit 96e052b9 authored by Thomas Weidenmueller's avatar Thomas Weidenmueller Committed by Alexandre Julliard

Added stubs for objsel.dll and objsel.h.

parent 5b9ddcce
......@@ -102,6 +102,7 @@ DLLs (under dlls/):
netapi32/ - Network interface
newdev/ - New Hardware Device Library
ntdll/ - NT implementation of kernel calls
objsel/ - Object Picker Dialog
odbc32/ - Open DataBase Connectivity driver manager
odbccp32/ - Open DataBase Connectivity driver installer
ole32/ - 32 bit OLE 2.0 libraries
......
......@@ -1650,6 +1650,7 @@ dlls/netapi32/tests/Makefile
dlls/newdev/Makefile
dlls/ntdll/Makefile
dlls/ntdll/tests/Makefile
dlls/objsel/Makefile
dlls/odbc32/Makefile
dlls/odbccp32/Makefile
dlls/ole32/Makefile
......
......@@ -98,6 +98,7 @@ BASEDIRS = \
netapi32 \
newdev \
ntdll \
objsel \
odbc32 \
odbccp32 \
ole32 \
......@@ -346,6 +347,7 @@ SYMLINKS_SO = \
netapi32.dll.so \
newdev.dll.so \
ntdll.dll.so \
objsel.dll.so \
odbc32.dll.so \
odbccp32.dll.so \
ole32.dll.so \
......@@ -743,6 +745,9 @@ newdev.dll.so: newdev/newdev.dll.so
ntdll.dll.so: ntdll/ntdll.dll.so
$(RM) $@ && $(LN_S) ntdll/ntdll.dll.so $@
objsel.dll.so: objsel/objsel.dll.so
$(RM) $@ && $(LN_S) objsel/objsel.dll.so $@
odbc32.dll.so: odbc32/odbc32.dll.so
$(RM) $@ && $(LN_S) odbc32/odbc32.dll.so $@
......@@ -1747,6 +1752,7 @@ mswsock/mswsock.dll.so: mswsock
netapi32/netapi32.dll.so: netapi32
newdev/newdev.dll.so: newdev
ntdll/ntdll.dll.so: ntdll
objsel/objsel.dll.so: objsel
odbc32/odbc32.dll.so: odbc32
odbccp32/odbccp32.dll.so: odbccp32
ole32/ole32.dll.so: ole32
......
Makefile
objsel.dll.dbg.c
objsel.res
TOPSRCDIR = @top_srcdir@
TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = objsel.dll
IMPORTS = ole32 oleaut32 user32 advapi32 kernel32
EXTRALIBS = -lstrmiids -luuid $(LIBUNICODE)
C_SRCS = \
factory.c \
objsel.c \
regsvr.c
RC_SRCS = objsel.rc
@MAKE_DLL_RULES@
### Dependencies:
/*
* ClassFactory implementation for OBJSEL.dll
*
* Copyright (C) 2002 John K. Hohm
* Copyright (C) 2002 Robert Shearman
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "objsel_private.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(objsel);
/**********************************************************************
* OBJSEL_IClassFactory_QueryInterface (also IUnknown)
*/
static HRESULT WINAPI OBJSEL_IClassFactory_QueryInterface(
LPCLASSFACTORY iface,
REFIID riid,
LPVOID *ppvObj)
{
TRACE("\n\tIID:\t%s\n",debugstr_guid(riid));
if (ppvObj == NULL) return E_POINTER;
if (IsEqualGUID(riid, &IID_IUnknown) ||
IsEqualGUID(riid, &IID_IClassFactory))
{
*ppvObj = (LPVOID)iface;
IClassFactory_AddRef(iface);
return S_OK;
}
else if (IsEqualGUID(riid, &IID_IDsObjectPicker))
{
return IClassFactory_CreateInstance(iface, NULL, riid, ppvObj);
}
FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid));
return E_NOINTERFACE;
}
/**********************************************************************
* OBJSEL_IClassFactory_AddRef (also IUnknown)
*/
static ULONG WINAPI OBJSEL_IClassFactory_AddRef(LPCLASSFACTORY iface)
{
ClassFactoryImpl *This = (ClassFactoryImpl *)iface;
ULONG ref;
TRACE("\n");
if (This == NULL) return E_POINTER;
ref = InterlockedIncrement(&This->ref);
if (ref == 1)
{
InterlockedIncrement(&dll_refs);
}
return ref;
}
/**********************************************************************
* OBJSEL_IClassFactory_Release (also IUnknown)
*/
static ULONG WINAPI OBJSEL_IClassFactory_Release(LPCLASSFACTORY iface)
{
ClassFactoryImpl *This = (ClassFactoryImpl *)iface;
ULONG ref;
TRACE("\n");
if (This == NULL) return E_POINTER;
ref = InterlockedDecrement(&This->ref);
if (ref == 0)
{
InterlockedDecrement(&dll_refs);
}
return ref;
}
/**********************************************************************
* OBJSEL_IClassFactory_CreateInstance
*/
static HRESULT WINAPI OBJSEL_IClassFactory_CreateInstance(
LPCLASSFACTORY iface,
LPUNKNOWN pUnkOuter,
REFIID riid,
LPVOID *ppvObj)
{
TRACE("\n\tIID:\t%s\n",debugstr_guid(riid));
if (ppvObj == NULL) return E_POINTER;
/* Don't support aggregation (Windows doesn't) */
if (pUnkOuter != NULL) return CLASS_E_NOAGGREGATION;
if (IsEqualGUID(&IID_IDsObjectPicker, riid))
{
return OBJSEL_IDsObjectPicker_Create(ppvObj);
}
return CLASS_E_CLASSNOTAVAILABLE;
}
/**********************************************************************
* OBJSEL_IClassFactory_LockServer
*/
static HRESULT WINAPI OBJSEL_IClassFactory_LockServer(
LPCLASSFACTORY iface,
BOOL fLock)
{
TRACE("\n");
if (fLock)
IClassFactory_AddRef(iface);
else
IClassFactory_Release(iface);
return S_OK;
}
/**********************************************************************
* IClassFactory_Vtbl
*/
static IClassFactoryVtbl IClassFactory_Vtbl =
{
OBJSEL_IClassFactory_QueryInterface,
OBJSEL_IClassFactory_AddRef,
OBJSEL_IClassFactory_Release,
OBJSEL_IClassFactory_CreateInstance,
OBJSEL_IClassFactory_LockServer
};
/**********************************************************************
* static ClassFactory instance
*/
ClassFactoryImpl OBJSEL_ClassFactory = { &IClassFactory_Vtbl, 0 };
/*
* Object Picker Dialog
*
* Copyright 2005 Thomas Weidenmueller <w3seek@reactos.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "objsel_private.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(objsel);
LONG dll_refs = 0;
HINSTANCE hInstance;
/***********************************************************************
* DllEntryPoint
*/
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
{
switch(fdwReason)
{
case DLL_PROCESS_ATTACH:
hInstance = hinstDLL;
DisableThreadLibraryCalls(hInstance);
break;
}
return TRUE;
}
/***********************************************************************
* DllGetClassObject (OBJSEL.@)
*/
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
{
TRACE("(%s, %s, %p)\n", debugstr_guid(rclsid), debugstr_guid(iid), ppv);
*ppv = NULL;
if (IsEqualGUID(rclsid, &CLSID_DsObjectPicker))
return IClassFactory_QueryInterface((IClassFactory*)&OBJSEL_ClassFactory, iid, ppv);
FIXME("\n\tCLSID:\t%s,\n\tIID:\t%s\n",debugstr_guid(rclsid),debugstr_guid(iid));
return CLASS_E_CLASSNOTAVAILABLE;
}
/***********************************************************************
* DllCanUnloadNow (OBJSEL.@)
*/
HRESULT WINAPI DllCanUnloadNow(void)
{
return dll_refs != 0 ? S_FALSE : S_OK;
}
/**********************************************************************
* OBJSEL_IDsObjectPicker_Destroy (also IUnknown)
*/
static VOID WINAPI OBJSEL_IDsObjectPicker_Destroy(IDsObjectPickerImpl *This)
{
HeapFree(GetProcessHeap(),
0,
This);
}
/**********************************************************************
* OBJSEL_IDsObjectPicker_AddRef (also IUnknown)
*/
static ULONG WINAPI OBJSEL_IDsObjectPicker_AddRef(IDsObjectPicker * iface)
{
IDsObjectPickerImpl *This = (IDsObjectPickerImpl *)iface;
ULONG ref;
TRACE("\n");
if (This == NULL) return E_POINTER;
ref = InterlockedIncrement(&This->ref);
if (ref == 1)
{
InterlockedIncrement(&dll_refs);
}
return ref;
}
/**********************************************************************
* OBJSEL_IDsObjectPicker_Release (also IUnknown)
*/
static ULONG WINAPI OBJSEL_IDsObjectPicker_Release(IDsObjectPicker * iface)
{
IDsObjectPickerImpl *This = (IDsObjectPickerImpl *)iface;
ULONG ref;
TRACE("\n");
if (This == NULL) return E_POINTER;
ref = InterlockedDecrement(&This->ref);
if (ref == 0)
{
InterlockedDecrement(&dll_refs);
OBJSEL_IDsObjectPicker_Destroy(This);
}
return ref;
}
/**********************************************************************
* OBJSEL_IDsObjectPicker_QueryInterface (also IUnknown)
*/
static HRESULT WINAPI OBJSEL_IDsObjectPicker_QueryInterface(
IDsObjectPicker * iface,
REFIID riid,
LPVOID *ppvObj)
{
TRACE("\n\tIID:\t%s\n",debugstr_guid(riid));
if (ppvObj == NULL) return E_POINTER;
if (IsEqualGUID(riid, &IID_IUnknown) ||
IsEqualGUID(riid, &IID_IDsObjectPicker))
{
*ppvObj = (LPVOID)iface;
OBJSEL_IDsObjectPicker_AddRef(iface);
return S_OK;
}
FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid));
return E_NOINTERFACE;
}
/**********************************************************************
* OBJSEL_IDsObjectPicker_Initialize
*/
static HRESULT WINAPI OBJSEL_IDsObjectPicker_Initialize(
IDsObjectPicker * iface,
PDSOP_INIT_INFO pInitInfo)
{
FIXME("stub!\n");
return S_OK;
}
/**********************************************************************
* OBJSEL_IDsObjectPicker_InvokeDialog
*/
static HRESULT WINAPI OBJSEL_IDsObjectPicker_InvokeDialog(
IDsObjectPicker * iface,
HWND hwndParent,
IDataObject** ppdoSelections)
{
FIXME("stub!\n");
return S_FALSE;
}
/**********************************************************************
* IDsObjectPicker_Vtbl
*/
static IDsObjectPickerVtbl IDsObjectPicker_Vtbl =
{
OBJSEL_IDsObjectPicker_QueryInterface,
OBJSEL_IDsObjectPicker_AddRef,
OBJSEL_IDsObjectPicker_Release,
OBJSEL_IDsObjectPicker_Initialize,
OBJSEL_IDsObjectPicker_InvokeDialog
};
/**********************************************************************
* OBJSEL_IDsObjectPicker_Create
*/
HRESULT WINAPI OBJSEL_IDsObjectPicker_Create(LPVOID *ppvObj)
{
IDsObjectPickerImpl *Instance = HeapAlloc(GetProcessHeap(),
HEAP_ZERO_MEMORY,
sizeof(IDsObjectPickerImpl));
if (Instance != NULL)
{
Instance->lpVtbl = &IDsObjectPicker_Vtbl;
OBJSEL_IDsObjectPicker_AddRef((IDsObjectPicker *)Instance);
*ppvObj = Instance;
return S_OK;
}
else
return E_OUTOFMEMORY;
}
/*
* Object Picker Dialog
*
* Copyright 2005 Thomas Weidenmueller <w3seek@reactos.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "windef.h"
#include "winbase.h"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#define WINE_FILENAME_STR "objsel.dll"
#include "wine/wine_common_ver.rc"
@ stdcall -private DllCanUnloadNow()
@ stdcall -private DllGetClassObject(ptr ptr ptr)
@ stdcall -private DllRegisterServer()
@ stdcall -private DllUnregisterServer()
/*
* Object Picker Dialog Includes
*
* Copyright 2005 Thomas Weidenmueller <w3seek@reactos.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <string.h>
#include <stdarg.h>
#include <stdio.h>
#include "winerror.h"
#include "windef.h"
#include "winbase.h"
#include "winreg.h"
#include "wingdi.h"
#include "winuser.h"
#define COBJMACROS
#define COM_NO_WINDOWS_H
#include "ole2.h"
#include "strmif.h"
#include "olectl.h"
#include "unknwn.h"
#include "objsel.h"
#include "wine/unicode.h"
#include "uuids.h"
/**********************************************************************
* Dll lifetime tracking declaration for objsel.dll
*/
extern LONG dll_refs;
/**********************************************************************
* ClassFactory declaration for objsel.dll
*/
typedef struct
{
IClassFactoryVtbl *lpVtbl;
LONG ref;
} ClassFactoryImpl;
typedef struct
{
IDsObjectPickerVtbl *lpVtbl;
LONG ref;
} IDsObjectPickerImpl;
HRESULT WINAPI OBJSEL_IDsObjectPicker_Create(LPVOID *ppvObj);
extern ClassFactoryImpl OBJSEL_ClassFactory;
......@@ -60,6 +60,7 @@ DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
#include "richole.h"
#include "xmldom.h"
#include "downloadmgr.h"
#include "objsel.h"
/* FIXME: cguids declares GUIDs but does not define their values */
......
......@@ -190,6 +190,7 @@ WINDOWS_INCLUDES = \
ntsecapi.h \
ntstatus.h \
objbase.h \
objsel.h \
odbcinst.h \
ole2.h \
ole2ver.h \
......
/*
* objsel.h
*
* Object Picker Dialog
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAIMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __OBJSEL_H_
#define __OBJSEL_H_
#ifdef __cplusplus
extern "C" {
#endif
DEFINE_GUID(CLSID_DsObjectPicker, 0x17d6ccd8, 0x3b7b, 0x11d2, 0x00b9, 0xe0,0x00,0xc0,0x4f,0xd8,0xdb,0xf7);
DEFINE_GUID(IID_IDsObjectPicker, 0x0c87e64e, 0x3b7a, 0x11d2, 0x00b9, 0xe0,0x00,0xc0,0x4f,0xd8,0xdb,0xf7);
#define CFSTR_DSOP_DS_SELECTION_LIST TEXT("CFSTR_DSOP_DS_SELECTION_LIST")
/* up-level scope filters in the DSOP_UPLEVEL_FILTER_FLAGS structure */
#define DSOP_FILTER_INCLUDE_ADVANCED_VIEW (0x1)
#define DSOP_FILTER_USERS (0x2)
#define DSOP_FILTER_BUILTIN_GROUPS (0x4)
#define DSOP_FILTER_WELL_KNOWN_PRINCIPALS (0x8)
#define DSOP_FILTER_UNIVERSAL_GROUPS_DL (0x10)
#define DSOP_FILTER_UNIVERSAL_GROUPS_SE (0x20)
#define DSOP_FILTER_GLOBAL_GROUPS_DL (0x40)
#define DSOP_FILTER_GLOBAL_GROUPS_SE (0x80)
#define DSOP_FILTER_DOMAIN_LOCAL_GROUPS_DL (0x100)
#define DSOP_FILTER_DOMAIN_LOCAL_GROUPS_SE (0x200)
#define DSOP_FILTER_CONTACTS (0x400)
#define DSOP_FILTER_COMPUTERS (0x800)
typedef struct _DSOP_UPLEVEL_FILTER_FLAGS
{
ULONG flBothModes;
ULONG flMixedModeOnly;
ULONG flNativeModeOnly;
} DSOP_UPLEVEL_FILTER_FLAGS, *PDSOP_UPLEVEL_FILTER_FLAGS;
/* down-level scope filters in the DSOP_FILTER_FLAGS structure */
#define DSOP_DOWNLEVEL_FILTER_USERS (0x80000001)
#define DSOP_DOWNLEVEL_FILTER_LOCAL_GROUPS (0x80000002)
#define DSOP_DOWNLEVEL_FILTER_GLOBAL_GROUPS (0x80000004)
#define DSOP_DOWNLEVEL_FILTER_COMPUTERS (0x80000008)
#define DSOP_DOWNLEVEL_FILTER_WORLD (0x80000010)
#define DSOP_DOWNLEVEL_FILTER_AUTHENTICATED_USER (0x80000020)
#define DSOP_DOWNLEVEL_FILTER_ANONYMOUS (0x80000040)
#define DSOP_DOWNLEVEL_FILTER_BATCH (0x80000080)
#define DSOP_DOWNLEVEL_FILTER_CREATOR_OWNER (0x80000100)
#define DSOP_DOWNLEVEL_FILTER_CREATOR_GROUP (0x80000200)
#define DSOP_DOWNLEVEL_FILTER_DIALUP (0x80000400)
#define DSOP_DOWNLEVEL_FILTER_INTERACTIVE (0x80000800)
#define DSOP_DOWNLEVEL_FILTER_NETWORK (0x80001000)
#define DSOP_DOWNLEVEL_FILTER_SERVICE (0x80002000)
#define DSOP_DOWNLEVEL_FILTER_SYSTEM (0x80004000)
#define DSOP_DOWNLEVEL_FILTER_EXCLUDE_BUILTIN_GROUPS (0x80008000)
#define DSOP_DOWNLEVEL_FILTER_TERMINAL_SERVER (0x80010000)
#define DSOP_DOWNLEVEL_FILTER_ALL_WELLKNOWN_SIDS (0x80020000)
#define DSOP_DOWNLEVEL_FILTER_LOCAL_SERVICE (0x80040000)
#define DSOP_DOWNLEVEL_FILTER_NETWORK_SERVICE (0x80080000)
#define DSOP_DOWNLEVEL_FILTER_REMOTE_LOGON (0x80100000)
typedef struct _DSOP_FILTER_FLAGS
{
DSOP_UPLEVEL_FILTER_FLAGS Uplevel;
ULONG flDownlevel;
} DSOP_FILTER_FLAGS, *PDSOP_FILTER_FLAGS;
/* ADsPath format flags in the DSOP_SCOPE_INIT_INFO structure */
#define DSOP_SCOPE_FLAG_STARTING_SCOPE (0x1)
#define DSOP_SCOPE_FLAG_WANT_PROVIDER_WINNT (0x2)
#define DSOP_SCOPE_FLAG_WANT_PROVIDER_LDAP (0x4)
#define DSOP_SCOPE_FLAG_WANT_PROVIDER_GC (0x8)
#define DSOP_SCOPE_FLAG_WANT_SID_PATH (0x10)
#define DSOP_SCOPE_FLAG_WANT_DOWNLEVEL_BUILTIN_PATH (0x20)
#define DSOP_SCOPE_FLAG_DEFAULT_FILTER_USERS (0x40)
#define DSOP_SCOPE_FLAG_DEFAULT_FILTER_GROUPS (0x80)
#define DSOP_SCOPE_FLAG_DEFAULT_FILTER_COMPUTERS (0x100)
#define DSOP_SCOPE_FLAG_DEFAULT_FILTER_CONTACTS (0x200)
typedef struct _DSOP_SCOPE_INIT_INFO
{
ULONG cbSize;
ULONG flType;
ULONG flScope;
DSOP_FILTER_FLAGS FilterFlags;
PCWSTR pwzDcName;
PCWSTR pwzADsPath;
HRESULT hr;
} DSOP_SCOPE_INIT_INFO, *PDSOP_SCOPE_INIT_INFO;
typedef const DSOP_SCOPE_INIT_INFO *PCDSOP_SCOPE_INIT_INFO;
/* object picker options in the DSOP_INIT_INFO structure */
#define DSOP_FLAG_MULTISELECT (0x1)
#define DSOP_FLAG_SKIP_TARGET_COMPUTER_DC_CHECK (0x2)
typedef struct _DSOP_INIT_INFO
{
ULONG cbSize;
PCWSTR pwzTargetComputer;
ULONG cDsScopeInfos;
PDSOP_SCOPE_INIT_INFO aDsScopeInfos;
ULONG flOptions;
ULONG cAttributesToFetch;
PCWSTR *apwzAttributeNames;
} DSOP_INIT_INFO, *PDSOP_INIT_INFO;
typedef const DSOP_INIT_INFO *PCDSOP_INIT_INFO;
/* selection scope types in the DS_SELECTION structure */
#define DSOP_SCOPE_TYPE_TARGET_COMPUTER (0x1)
#define DSOP_SCOPE_TYPE_UPLEVEL_JOINED_DOMAIN (0x2)
#define DSOP_SCOPE_TYPE_DOWNLEVEL_JOINED_DOMAIN (0x4)
#define DSOP_SCOPE_TYPE_ENTERPRISE_DOMAIN (0x8)
#define DSOP_SCOPE_TYPE_GLOBAL_CATALOG (0x10)
#define DSOP_SCOPE_TYPE_EXTERNAL_UPLEVEL_DOMAIN (0x20)
#define DSOP_SCOPE_TYPE_EXTERNAL_DOWNLEVEL_DOMAIN (0x40)
#define DSOP_SCOPE_TYPE_WORKGROUP (0x80)
#define DSOP_SCOPE_TYPE_USER_ENTERED_UPLEVEL_SCOPE (0x100)
#define DSOP_SCOPE_TYPE_USER_ENTERED_DOWNLEVEL_SCOPE (0x200)
typedef struct _DS_SELECTION
{
PWSTR pwzName;
PWSTR pwzADsPath;
PWSTR pwzClass;
PWSTR pwzUPN;
VARIANT *pvarFetchedAttributes;
ULONG flScopeType;
} DS_SELECTION, *PDS_SELECTION;
typedef struct _DS_SELECTION_LIST
{
ULONG cItems;
ULONG cFetchedAttributes;
DS_SELECTION aDsSelection[ANYSIZE_ARRAY];
} DS_SELECTION_LIST, *PDS_SELECTION_LIST;
/*****************************************************************************
* IDsObjectPicker interface
*/
typedef struct IDsObjectPicker IDsObjectPicker;
#define INTERFACE IDsObjectPicker
DECLARE_INTERFACE_(IDsObjectPicker,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IDsObjectPicker methods ***/
STDMETHOD(Initialize)(THIS_ PDSOP_INIT_INFO pInitInfo) PURE;
STDMETHOD(InvokeDialog)(THIS_ HWND hwndParent, IDataObject** ppdoSelections) PURE;
};
#undef INTERFACE
#ifdef __cplusplus
}
#endif
#endif /* __OBJSEL_H_ */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment