ReactOS 0.4.17-dev-117-g313be0c
activeds_main.c File Reference
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
#include "objbase.h"
#include "initguid.h"
#include "iads.h"
#include "adshlp.h"
#include "adserr.h"
#include "wine/debug.h"
Include dependency graph for activeds_main.c:

Go to the source code of this file.

Macros

#define COBJMACROS
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (activeds)
 
HRESULT WINAPI ADsGetObject (LPCWSTR path, REFIID riid, void **obj)
 
HRESULT WINAPI ADsBuildEnumerator (IADsContainer *pADsContainer, IEnumVARIANT **ppEnumVariant)
 
HRESULT WINAPI ADsFreeEnumerator (IEnumVARIANT *pEnumVariant)
 
HRESULT WINAPI ADsEnumerateNext (IEnumVARIANT *pEnumVariant, ULONG cElements, VARIANT *pvar, ULONG *pcElementsFetched)
 
HRESULT WINAPI ADsBuildVarArrayStr (LPWSTR *str, DWORD count, VARIANT *var)
 
HRESULT WINAPI ADsBuildVarArrayInt (LPDWORD lpdwObjectTypes, DWORD dwObjectTypes, VARIANT *pvar)
 
HRESULT WINAPI ADsOpenObject (LPCWSTR path, LPCWSTR user, LPCWSTR password, DWORD reserved, REFIID riid, void **obj)
 
VOID WINAPI ADsSetLastError (DWORD dwErr, LPWSTR pszError, LPWSTR pszProvider)
 
HRESULT WINAPI ADsGetLastError (LPDWORD perror, LPWSTR errorbuf, DWORD errorbuflen, LPWSTR namebuf, DWORD namebuflen)
 
LPVOID WINAPI AllocADsMem (DWORD cb)
 
BOOL WINAPI FreeADsMem (LPVOID pMem)
 
LPVOID WINAPI ReallocADsMem (LPVOID pOldMem, DWORD cbOld, DWORD cbNew)
 
LPWSTR WINAPI AllocADsStr (LPWSTR pStr)
 
BOOL WINAPI FreeADsStr (LPWSTR pStr)
 
BOOL WINAPI ReallocADsStr (LPWSTR *ppStr, LPWSTR pStr)
 
HRESULT WINAPI ADsEncodeBinaryData (PBYTE pbSrcData, DWORD dwSrcLen, LPWSTR *ppszDestData)
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 27 of file activeds_main.c.

Function Documentation

◆ ADsBuildEnumerator()

HRESULT WINAPI ADsBuildEnumerator ( IADsContainer *  pADsContainer,
IEnumVARIANT **  ppEnumVariant 
)

Definition at line 59 of file activeds_main.c.

60{
61 FIXME("(%p)->(%p)!stub\n",pADsContainer, ppEnumVariant);
62 return E_NOTIMPL;
63}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ ADsBuildVarArrayInt()

HRESULT WINAPI ADsBuildVarArrayInt ( LPDWORD  lpdwObjectTypes,
DWORD  dwObjectTypes,
VARIANT pvar 
)

Definition at line 129 of file activeds_main.c.

130{
131 FIXME("(%p, %ld, %p)!stub\n",lpdwObjectTypes, dwObjectTypes, pvar);
132 return E_NOTIMPL;
133}

◆ ADsBuildVarArrayStr()

HRESULT WINAPI ADsBuildVarArrayStr ( LPWSTR str,
DWORD  count,
VARIANT var 
)

Definition at line 86 of file activeds_main.c.

87{
88 HRESULT hr;
90 LONG idx, end = count;
91
92 TRACE("(%p, %lu, %p)\n", str, count, var);
93
94 if (!var) return E_ADS_BAD_PARAMETER;
95
97 if (!sa) return E_OUTOFMEMORY;
98
100 for (idx = 0; idx < end; idx++)
101 {
103
104 V_VT(&item) = VT_BSTR;
106 if (!V_BSTR(&item))
107 {
109 goto fail;
110 }
111
114 if (hr != S_OK) goto fail;
115 }
116
118 V_ARRAY(var) = sa;
119 return S_OK;
120
121fail:
123 return hr;
124}
static struct sockaddr_in sa
Definition: adnsresfilter.c:69
#define E_ADS_BAD_PARAMETER
Definition: adserr.h:36
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
HRESULT hr
Definition: delayimp.cpp:573
unsigned int idx
Definition: utils.c:41
@ VT_BSTR
Definition: compat.h:2303
@ VT_ARRAY
Definition: compat.h:2341
@ VT_VARIANT
Definition: compat.h:2307
SAFEARRAY *WINAPI SafeArrayCreateVector(VARTYPE vt, LONG lLbound, ULONG cElements)
Definition: safearray.c:677
HRESULT WINAPI SafeArrayDestroy(SAFEARRAY *psa)
Definition: safearray.c:1347
HRESULT WINAPI SafeArrayPutElement(SAFEARRAY *psa, LONG *rgIndices, void *pvData)
Definition: safearray.c:864
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLuint GLuint end
Definition: gl.h:1545
#define S_OK
Definition: intsafe.h:52
const char * var
Definition: shader.c:5666
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:238
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:271
#define V_ARRAY(A)
Definition: oleauto.h:222
#define V_VT(A)
Definition: oleauto.h:211
#define V_BSTR(A)
Definition: oleauto.h:226
long LONG
Definition: pedump.c:60
const WCHAR * str
#define TRACE(s)
Definition: solgame.cpp:4
void WINAPI VariantInit(VARIANTARG *pVarg)
Definition: variant.c:568

Referenced by test_ADsBuildVarArrayStr().

◆ ADsEncodeBinaryData()

HRESULT WINAPI ADsEncodeBinaryData ( PBYTE  pbSrcData,
DWORD  dwSrcLen,
LPWSTR ppszDestData 
)

Definition at line 287 of file activeds_main.c.

288{
289 FIXME("(%p,%ld,%p)!stub\n", pbSrcData, dwSrcLen, *ppszDestData);
290 return E_NOTIMPL;
291}

◆ ADsEnumerateNext()

HRESULT WINAPI ADsEnumerateNext ( IEnumVARIANT pEnumVariant,
ULONG  cElements,
VARIANT pvar,
ULONG pcElementsFetched 
)

Definition at line 77 of file activeds_main.c.

78{
79 FIXME("(%p)->(%lu, %p, %p)!stub\n",pEnumVariant, cElements, pvar, pcElementsFetched);
80 return E_NOTIMPL;
81}

◆ ADsFreeEnumerator()

HRESULT WINAPI ADsFreeEnumerator ( IEnumVARIANT pEnumVariant)

Definition at line 68 of file activeds_main.c.

69{
70 FIXME("(%p)!stub\n",pEnumVariant);
71 return E_NOTIMPL;
72}

◆ ADsGetLastError()

HRESULT WINAPI ADsGetLastError ( LPDWORD  perror,
LPWSTR  errorbuf,
DWORD  errorbuflen,
LPWSTR  namebuf,
DWORD  namebuflen 
)

Definition at line 225 of file activeds_main.c.

226{
227 FIXME("(%p,%p,%ld,%p,%ld)!stub\n", perror, errorbuf, errorbuflen, namebuf, namebuflen);
228 return E_NOTIMPL;
229}
void CDECL perror(const char *str)
Definition: errno.c:337

◆ ADsGetObject()

HRESULT WINAPI ADsGetObject ( LPCWSTR  path,
REFIID  riid,
void **  obj 
)

Definition at line 46 of file activeds_main.c.

47{
48 HRESULT hr;
49
50 hr = ADsOpenObject(path, NULL, NULL, ADS_SECURE_AUTHENTICATION, riid, obj);
51 if (hr != S_OK)
53 return hr;
54}
HRESULT WINAPI ADsOpenObject(LPCWSTR path, LPCWSTR user, LPCWSTR password, DWORD reserved, REFIID riid, void **obj)
#define NULL
Definition: types.h:112
REFIID riid
Definition: atlbase.h:39

◆ ADsOpenObject()

HRESULT WINAPI ADsOpenObject ( LPCWSTR  path,
LPCWSTR  user,
LPCWSTR  password,
DWORD  reserved,
REFIID  riid,
void **  obj 
)

Definition at line 138 of file activeds_main.c.

139{
140 HRESULT hr;
141 HKEY hkey, hprov;
142 WCHAR provider[MAX_PATH], progid[MAX_PATH];
143 DWORD idx = 0;
144
145 TRACE("(%s,%s,%lu,%s,%p)\n", debugstr_w(path), debugstr_w(user), reserved, debugstr_guid(riid), obj);
146
147 if (!path || !riid || !obj)
148 return E_INVALIDARG;
149
150 hr = E_FAIL;
151
152 if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\ADs\\Providers", 0, KEY_READ, &hkey))
153 return hr;
154
155 for (;;)
156 {
157 if (RegEnumKeyW(hkey, idx++, provider, ARRAY_SIZE(provider)))
158 break;
159
160 TRACE("provider %s\n", debugstr_w(provider));
161
162 if (!wcsnicmp(path, provider, wcslen(provider)) && path[wcslen(provider)] == ':')
163 {
164 LONG size;
165
166 if (RegOpenKeyExW(hkey, provider, 0, KEY_READ, &hprov))
167 break;
168
170 if (!RegQueryValueW(hprov, NULL, progid, &size))
171 {
172 CLSID clsid;
173
175 {
176 IADsOpenDSObject *adsopen;
177 IDispatch *disp;
178
179 TRACE("ns %s => clsid %s\n", debugstr_w(progid), wine_dbgstr_guid(&clsid));
180 if (CoCreateInstance(&clsid, 0, CLSCTX_INPROC_SERVER, &IID_IADsOpenDSObject, (void **)&adsopen) == S_OK)
181 {
182 BSTR bpath, buser, bpassword;
183
184 bpath = SysAllocString(path);
185 buser = SysAllocString(user);
186 bpassword = SysAllocString(password);
187
188 hr = IADsOpenDSObject_OpenDSObject(adsopen, bpath, buser, bpassword, reserved, &disp);
189 if (hr == S_OK)
190 {
191 hr = IDispatch_QueryInterface(disp, riid, obj);
192 IDispatch_Release(disp);
193 }
194
195 SysFreeString(bpath);
196 SysFreeString(buser);
197 SysFreeString(bpassword);
198
199 IADsOpenDSObject_Release(adsopen);
200 }
201 }
202 }
203
204 RegCloseKey(hprov);
205 break;
206 }
207 }
208
209 RegCloseKey(hkey);
210
211 return hr;
212}
void user(int argc, const char *argv[])
Definition: cmds.c:1350
#define ARRAY_SIZE(A)
Definition: main.h:20
#define RegCloseKey(hKey)
Definition: registry.h:49
#define E_INVALIDARG
Definition: ddrawi.h:101
#define E_FAIL
Definition: ddrawi.h:102
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3333
LSTATUS WINAPI RegQueryValueW(HKEY hkey, LPCWSTR name, LPWSTR data, LPLONG count)
Definition: reg.c:4241
LONG WINAPI RegEnumKeyW(HKEY hKey, DWORD dwIndex, LPWSTR lpName, DWORD cbName)
Definition: reg.c:2393
HRESULT WINAPI DECLSPEC_HOTPATCH CLSIDFromProgID(LPCOLESTR progid, CLSID *clsid)
Definition: combase.c:1437
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
Definition: combase.c:1685
#define wcsnicmp
Definition: compat.h:14
OLECHAR * BSTR
Definition: compat.h:2293
#define MAX_PATH
Definition: compat.h:34
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
Definition: wcs.c:2983
#define L(x)
Definition: resources.c:13
r reserved
Definition: btrfs.c:3006
#define progid(str)
Definition: exdisp.idl:31
unsigned long DWORD
Definition: ntddk_ex.h:95
GLsizeiptr size
Definition: glext.h:5919
#define debugstr_guid
Definition: kernel32.h:35
#define debugstr_w
Definition: kernel32.h:32
static WCHAR password[]
Definition: url.c:33
const CLSID * clsid
Definition: msctf.cpp:50
#define KEY_READ
Definition: nt_native.h:1026
short WCHAR
Definition: pedump.c:58
static __inline const char * wine_dbgstr_guid(const GUID *id)
Definition: debug.h:171
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12

Referenced by ADsGetObject().

◆ ADsSetLastError()

VOID WINAPI ADsSetLastError ( DWORD  dwErr,
LPWSTR  pszError,
LPWSTR  pszProvider 
)

Definition at line 217 of file activeds_main.c.

218{
219 FIXME("(%ld,%p,%p)!stub\n", dwErr, pszError, pszProvider);
220}
DWORD dwErr
Definition: service.c:36

◆ AllocADsMem()

LPVOID WINAPI AllocADsMem ( DWORD  cb)

Definition at line 234 of file activeds_main.c.

235{
236 return malloc(cb);
237}
#define malloc
Definition: debug_ros.c:4
static MonoProfilerRuntimeShutdownBeginCallback cb
Definition: metahost.c:118

◆ AllocADsStr()

LPWSTR WINAPI AllocADsStr ( LPWSTR  pStr)

Definition at line 259 of file activeds_main.c.

260{
261 TRACE("(%p)\n", pStr);
262 return wcsdup(pStr);
263}
static wchar_t * wcsdup(const wchar_t *str)
Definition: string.h:94

◆ FreeADsMem()

BOOL WINAPI FreeADsMem ( LPVOID  pMem)

Definition at line 242 of file activeds_main.c.

243{
244 free(pMem);
245 return TRUE;
246}
#define free
Definition: debug_ros.c:5
#define TRUE
Definition: types.h:120

Referenced by FreeADsStr().

◆ FreeADsStr()

BOOL WINAPI FreeADsStr ( LPWSTR  pStr)

Definition at line 268 of file activeds_main.c.

269{
270 TRACE("(%p)\n", pStr);
271
272 return FreeADsMem(pStr);
273}
BOOL WINAPI FreeADsMem(LPVOID pMem)

◆ ReallocADsMem()

LPVOID WINAPI ReallocADsMem ( LPVOID  pOldMem,
DWORD  cbOld,
DWORD  cbNew 
)

Definition at line 251 of file activeds_main.c.

252{
253 return realloc(pOldMem, cbNew);
254}
#define realloc
Definition: debug_ros.c:6

◆ ReallocADsStr()

BOOL WINAPI ReallocADsStr ( LPWSTR ppStr,
LPWSTR  pStr 
)

Definition at line 278 of file activeds_main.c.

279{
280 FIXME("(%p,%p)!stub\n",*ppStr, pStr);
281 return FALSE;
282}
#define FALSE
Definition: types.h:117

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( activeds  )