ReactOS  0.4.14-dev-98-gb0d4763
xolehlp.c
Go to the documentation of this file.
1 /*
2  * Copyright 2011 Hans Leidekker for CodeWeavers
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18 
19 #include <stdarg.h>
20 #define COBJMACROS
21 #include "windef.h"
22 #include "winbase.h"
23 #include "transact.h"
24 #include "initguid.h"
25 #include "txdtc.h"
26 #include "wine/unicode.h"
27 #include "wine/debug.h"
28 
30 
31 /* Resource manager start */
32 
33 typedef struct {
37 
39 {
40  return CONTAINING_RECORD(iface, ResourceManager, IResourceManager_iface);
41 }
42 
44  void **ppv)
45 {
47  TRACE("(%p,%s,%p)\n", iface, debugstr_guid(iid), ppv);
48 
49  if (!ppv) return E_INVALIDARG;
50 
51  if (IsEqualIID(&IID_IUnknown, iid) ||
52  IsEqualIID(&IID_IResourceManager, iid))
53  {
54  *ppv = &This->IResourceManager_iface;
55  }
56  else
57  {
58  FIXME("(%s): not implemented\n", debugstr_guid(iid));
59  *ppv = NULL;
60  return E_NOINTERFACE;
61  }
62 
63  IUnknown_AddRef((IUnknown*)*ppv);
64  return S_OK;
65 }
66 
68 {
71 
72  TRACE("(%p) refcount=%u\n", iface, ref);
73 
74  return ref;
75 }
76 
78 {
81 
82  TRACE("(%p) refcount=%u\n", iface, ref);
83 
84  if (ref == 0)
85  {
87  }
88 
89  return ref;
90 }
92  ITransaction *pTransaction,ITransactionResourceAsync *pRes,XACTUOW *pUOW,
93  LONG *pisoLevel,ITransactionEnlistmentAsync **ppEnlist)
94 {
95  FIXME("(%p, %p, %p, %p, %p, %p): stub\n", iface, pTransaction,pRes,pUOW,
96  pisoLevel,ppEnlist);
97  return E_NOTIMPL;
98 }
100  byte *pPrepInfo,ULONG cbPrepInfo,DWORD lTimeout,XACTSTAT *pXactStat)
101 {
102  FIXME("(%p, %p, %u, %u, %p): stub\n", iface, pPrepInfo, cbPrepInfo, lTimeout, pXactStat);
103  return E_NOTIMPL;
104 }
106 {
107  FIXME("(%p): stub\n", iface);
108  return S_OK;
109 }
111  REFIID iid,void **ppvObject)
112 {
113  FIXME("(%p, %s, %p): stub\n", iface, debugstr_guid(iid), ppvObject);
114  return E_NOTIMPL;
115 }
116 
117 static const IResourceManagerVtbl ResourceManager_Vtbl = {
125 };
126 
128 {
130  HRESULT ret;
131 
132  if (!ppv) return E_INVALIDARG;
133 
134  This = HeapAlloc(GetProcessHeap(), 0, sizeof(ResourceManager));
135  if (!This) return E_OUTOFMEMORY;
136 
137  This->IResourceManager_iface.lpVtbl = &ResourceManager_Vtbl;
138  This->ref = 1;
139 
140  ret = IResourceManager_QueryInterface(&This->IResourceManager_iface, riid, ppv);
141  IResourceManager_Release(&This->IResourceManager_iface);
142 
143  return ret;
144 }
145 
146 /* Resource manager end */
147 
148 /* Transaction options start */
149 
150 typedef struct {
155 
157 {
158  return CONTAINING_RECORD(iface, TransactionOptions, ITransactionOptions_iface);
159 }
160 
162  void **ppv)
163 {
165  TRACE("(%p,%s,%p)\n", iface, debugstr_guid(iid), ppv);
166 
167  if (!ppv) return E_INVALIDARG;
168 
169  if (IsEqualIID(&IID_IUnknown, iid) ||
170  IsEqualIID(&IID_ITransactionOptions, iid))
171  {
172  *ppv = &This->ITransactionOptions_iface;
173  }
174  else
175  {
176  FIXME("(%s): not implemented\n", debugstr_guid(iid));
177  *ppv = NULL;
178  return E_NOINTERFACE;
179  }
180 
181  IUnknown_AddRef((IUnknown*)*ppv);
182  return S_OK;
183 }
184 
186 {
189 
190  TRACE("(%p) refcount=%u\n", iface, ref);
191 
192  return ref;
193 }
194 
196 {
199 
200  TRACE("(%p) refcount=%u\n", iface, ref);
201 
202  if (ref == 0)
203  {
205  }
206 
207  return ref;
208 }
210  XACTOPT *pOptions)
211 {
213 
214  if (!pOptions) return E_INVALIDARG;
215  TRACE("(%p, %u, %s)\n", iface, pOptions->ulTimeout, debugstr_a(pOptions->szDescription));
216  This->opts = *pOptions;
217  return S_OK;
218 }
220  XACTOPT *pOptions)
221 {
223 
224  TRACE("(%p, %p)\n", iface, pOptions);
225  if (!pOptions) return E_INVALIDARG;
226  *pOptions = This->opts;
227  return S_OK;
228 }
229 
230 static const ITransactionOptionsVtbl TransactionOptions_Vtbl = {
236 };
237 
239 {
241 
242  if (!ppv) return E_INVALIDARG;
243 
245  if (!This) return E_OUTOFMEMORY;
246 
247  This->ITransactionOptions_iface.lpVtbl = &TransactionOptions_Vtbl;
248  This->ref = 1;
249 
250  *ppv = &This->ITransactionOptions_iface;
251 
252  return S_OK;
253 }
254 
255 /* Transaction options end */
256 
257 /* Transaction start */
258 
259 typedef struct {
263 } Transaction;
264 
266 {
267  return CONTAINING_RECORD(iface, Transaction, ITransaction_iface);
268 }
269 
271  void **ppv)
272 {
274  TRACE("(%p,%s,%p)\n", iface, debugstr_guid(iid), ppv);
275 
276  if (!ppv) return E_INVALIDARG;
277 
278  if (IsEqualIID(&IID_IUnknown, iid) ||
279  IsEqualIID(&IID_ITransaction, iid))
280  {
281  *ppv = &This->ITransaction_iface;
282  }
283  else
284  {
285  FIXME("(%s): not implemented\n", debugstr_guid(iid));
286  *ppv = NULL;
287  return E_NOINTERFACE;
288  }
289 
290  IUnknown_AddRef((IUnknown*)*ppv);
291  return S_OK;
292 }
293 
295 {
298 
299  TRACE("(%p) refcount=%u\n", iface, ref);
300 
301  return ref;
302 }
303 
305 {
308 
309  TRACE("(%p) refcount=%u\n", iface, ref);
310 
311  if (ref == 0)
312  {
314  }
315 
316  return ref;
317 }
319  BOOL fRetaining, DWORD grfTC, DWORD grfRM)
320 {
321  FIXME("(%p, %d, %08x, %08x): stub\n", iface, fRetaining, grfTC, grfRM);
322  return E_NOTIMPL;
323 }
325  BOID *pboidReason, BOOL fRetaining, BOOL fAsync)
326 {
327  FIXME("(%p, %p, %d, %d): stub\n", iface, pboidReason, fRetaining, fAsync);
328  return E_NOTIMPL;
329 }
331  XACTTRANSINFO *pinfo)
332 {
334  TRACE("(%p, %p)\n", iface, pinfo);
335  if (!pinfo) return E_INVALIDARG;
336  *pinfo = This->info;
337  return S_OK;
338 }
339 
340 static const ITransactionVtbl Transaction_Vtbl = {
347 };
348 
349 static HRESULT Transaction_Create(ISOLEVEL isoLevel, ULONG isoFlags,
350  ITransactionOptions *pOptions, ITransaction **ppv)
351 {
352  Transaction *This;
353 
354  if (!ppv) return E_INVALIDARG;
355 
356  This = HeapAlloc(GetProcessHeap(), 0, sizeof(Transaction));
357  if (!This) return E_OUTOFMEMORY;
358  ZeroMemory(&This->info, sizeof(This->info));
359 
360  This->ITransaction_iface.lpVtbl = &Transaction_Vtbl;
361  This->ref = 1;
362  This->info.isoLevel = isoLevel;
363  This->info.isoFlags = isoFlags;
364 
365  *ppv = &This->ITransaction_iface;
366 
367  return S_OK;
368 }
369 
370 /* Transaction end */
371 
372 /* DTC Proxy Core Object start */
373 
374 typedef struct {
381 
383 {
384  return CONTAINING_RECORD(iface, TransactionManager, ITransactionDispenser_iface);
385 }
386 
388  void **ppv)
389 {
391  TRACE("(%p,%s,%p)\n", iface, debugstr_guid(iid), ppv);
392 
393  if (!ppv) return E_INVALIDARG;
394 
395  if (IsEqualIID(&IID_IUnknown, iid) ||
396  IsEqualIID(&IID_ITransactionDispenser, iid))
397  {
398  *ppv = &This->ITransactionDispenser_iface;
399  }
400  else if (IsEqualIID(&IID_IResourceManagerFactory, iid) ||
401  IsEqualIID(&IID_IResourceManagerFactory2, iid))
402  {
403  *ppv = &This->IResourceManagerFactory2_iface;
404  }
405  else if (IsEqualIID(&IID_ITransactionImportWhereabouts, iid))
406  {
407  *ppv = &This->ITransactionImportWhereabouts_iface;
408  }
409  else if (IsEqualIID(&IID_ITransactionImport, iid))
410  {
411  *ppv = &This->ITransactionImport_iface;
412  }
413  else
414  {
415  FIXME("(%s): not implemented\n", debugstr_guid(iid));
416  *ppv = NULL;
417  return E_NOINTERFACE;
418  }
419 
420  IUnknown_AddRef((IUnknown*)*ppv);
421  return S_OK;
422 }
423 
425 {
428 
429  TRACE("(%p) refcount=%u\n", iface, ref);
430 
431  return ref;
432 }
433 
435 {
438 
439  TRACE("(%p) refcount=%u\n", iface, ref);
440 
441  if (ref == 0)
442  {
444  }
445 
446  return ref;
447 }
448 
451 {
452  TRACE("(%p, %p)\n", iface, ppOptions);
453 
454  if (!ppOptions) return E_INVALIDARG;
456 }
458  IUnknown *punkOuter,
459  ISOLEVEL isoLevel,
460  ULONG isoFlags,
461  ITransactionOptions *pOptions,
462  ITransaction **ppTransaction)
463 {
464  FIXME("(%p, %p, %08x, %08x, %p, %p): semi-stub\n", iface, punkOuter,
465  isoLevel, isoFlags, pOptions, ppTransaction);
466 
467  if (!ppTransaction) return E_INVALIDARG;
468  if (punkOuter) return CLASS_E_NOAGGREGATION;
469  return Transaction_Create(isoLevel, isoFlags, pOptions, ppTransaction);
470 }
471 static const ITransactionDispenserVtbl TransactionDispenser_Vtbl = {
477 };
478 
480 {
481  return CONTAINING_RECORD(iface, TransactionManager, IResourceManagerFactory2_iface);
482 }
483 
485  void **ppv)
486 {
488  return TransactionDispenser_QueryInterface(&This->ITransactionDispenser_iface, iid, ppv);
489 }
490 
492 {
494  return TransactionDispenser_AddRef(&This->ITransactionDispenser_iface);
495 }
496 
498 {
500  return TransactionDispenser_Release(&This->ITransactionDispenser_iface);
501 }
503  GUID *pguidRM, CHAR *pszRMName, IResourceManagerSink *pIResMgrSink, IResourceManager **ppResMgr)
504 {
505  FIXME("(%p, %s, %s, %p, %p): semi-stub\n", iface, debugstr_guid(pguidRM),
506  debugstr_a(pszRMName), pIResMgrSink, ppResMgr);
507  return ResourceManager_Create(&IID_IResourceManager, (void**)ppResMgr);
508 }
510  GUID *pguidRM, CHAR *pszRMName, IResourceManagerSink *pIResMgrSink, REFIID riidRequested, void **ppResMgr)
511 {
512  FIXME("(%p, %s, %s, %p, %s, %p): semi-stub\n", iface, debugstr_guid(pguidRM),
513  debugstr_a(pszRMName), pIResMgrSink, debugstr_guid(riidRequested), ppResMgr);
514 
515  return ResourceManager_Create(riidRequested, ppResMgr);
516 }
517 static const IResourceManagerFactory2Vtbl ResourceManagerFactory2_Vtbl = {
523 };
524 
526 {
527  return CONTAINING_RECORD(iface, TransactionManager, ITransactionImportWhereabouts_iface);
528 }
529 
531  void **ppv)
532 {
534  return TransactionDispenser_QueryInterface(&This->ITransactionDispenser_iface, iid, ppv);
535 }
536 
538 {
540  return TransactionDispenser_AddRef(&This->ITransactionDispenser_iface);
541 }
542 
544 {
546  return TransactionDispenser_Release(&This->ITransactionDispenser_iface);
547 }
549  ULONG *pcbWhereabouts)
550 {
551  FIXME("(%p, %p): stub returning fake value\n", iface, pcbWhereabouts);
552 
553  if (!pcbWhereabouts) return E_INVALIDARG;
554  *pcbWhereabouts = 1;
555  return S_OK;
556 }
558  ULONG cbWhereabouts, BYTE *rgbWhereabouts,ULONG *pcbUsed)
559 {
560  FIXME("(%p, %u, %p, %p): stub returning fake value\n", iface, cbWhereabouts, rgbWhereabouts, pcbUsed);
561 
562  if (!rgbWhereabouts || !pcbUsed) return E_INVALIDARG;
563  *rgbWhereabouts = 0;
564  *pcbUsed = 1;
565  return S_OK;
566 }
567 static const ITransactionImportWhereaboutsVtbl TransactionImportWhereabouts_Vtbl = {
573 };
574 
576 {
577  return CONTAINING_RECORD(iface, TransactionManager, ITransactionImport_iface);
578 }
579 
581  void **ppv)
582 {
584  return TransactionDispenser_QueryInterface(&This->ITransactionDispenser_iface, iid, ppv);
585 }
586 
588 {
590  return TransactionDispenser_AddRef(&This->ITransactionDispenser_iface);
591 }
592 
594 {
596  return TransactionDispenser_Release(&This->ITransactionDispenser_iface);
597 }
599  ULONG cbTransactionCookie, byte *rgbTransactionCookie, IID *piid, void **ppvTransaction)
600 {
601  FIXME("(%p, %u, %p, %s, %p): stub\n", iface, cbTransactionCookie, rgbTransactionCookie, debugstr_guid(piid), ppvTransaction);
602 
603  if (!rgbTransactionCookie || !piid || !ppvTransaction) return E_INVALIDARG;
604  return E_NOTIMPL;
605 }
606 static const ITransactionImportVtbl TransactionImport_Vtbl = {
611 };
612 
614 {
616  HRESULT ret;
617 
619  if (!This) return E_OUTOFMEMORY;
620 
621  This->ITransactionDispenser_iface.lpVtbl = &TransactionDispenser_Vtbl;
622  This->IResourceManagerFactory2_iface.lpVtbl = &ResourceManagerFactory2_Vtbl;
623  This->ITransactionImportWhereabouts_iface.lpVtbl = &TransactionImportWhereabouts_Vtbl;
624  This->ITransactionImport_iface.lpVtbl = &TransactionImport_Vtbl;
625  This->ref = 1;
626 
627  ret = ITransactionDispenser_QueryInterface(&This->ITransactionDispenser_iface, riid, ppv);
628  ITransactionDispenser_Release(&This->ITransactionDispenser_iface);
629 
630  return ret;
631 }
632 /* DTC Proxy Core Object end */
633 
635 {
636  TRACE("%p, %u, %p\n", hinst, reason, reserved);
637 
638  switch (reason)
639  {
640  case DLL_WINE_PREATTACH:
641  return FALSE; /* prefer native version */
642  case DLL_PROCESS_ATTACH:
644  break;
645  }
646  return TRUE;
647 }
648 
650 {
651  static const CHAR dot[] = ".";
653  DWORD len = ARRAY_SIZE( buffer );
654 
655  if (!server || !strcmp( server, dot )) return TRUE;
656  if (GetComputerNameA( buffer, &len ) && !lstrcmpiA( server, buffer )) return TRUE;
657  return FALSE;
658 }
660 {
661  static const WCHAR dotW[] = {'.',0};
663  DWORD len = ARRAY_SIZE( buffer );
664 
665  if (!server || !strcmpW( server, dotW )) return TRUE;
666  if (GetComputerNameW( buffer, &len ) && !strcmpiW( server, buffer )) return TRUE;
667  return FALSE;
668 }
669 
671  DWORD dwReserved1, WORD wcbReserved2, void *pvReserved2, void **ppv)
672 {
673  TRACE("(%s, %s, %s, %d, %d, %p, %p)\n", debugstr_a(host), debugstr_a(tm_name),
674  debugstr_guid(riid), dwReserved1, wcbReserved2, pvReserved2, ppv);
675 
676  if (!is_local_machineA(host))
677  {
678  FIXME("remote computer not supported\n");
679  return E_NOTIMPL;
680  }
682 }
683 
685  DWORD options, void *config, void **ppv)
686 {
687  TRACE("(%s, %s, %s, %d, %p, %p)\n", debugstr_a(host), debugstr_a(tm_name),
689 
690  if (!is_local_machineA(host))
691  {
692  FIXME("remote computer not supported\n");
693  return E_NOTIMPL;
694  }
696 }
697 
699  DWORD options, void *config, void **ppv)
700 {
701  TRACE("(%s, %s, %s, %d, %p, %p)\n", debugstr_w(host), debugstr_w(tm_name),
703 
704  if (!is_local_machineW(host))
705  {
706  FIXME("remote computer not supported\n");
707  return E_NOTIMPL;
708  }
710 }
BOOL WINAPI SHIM_OBJ_NAME() GetComputerNameA(LPSTR lpBuffer, LPDWORD lpnSize)
Definition: shimtest.c:21
static const ITransactionDispenserVtbl TransactionDispenser_Vtbl
Definition: xolehlp.c:471
static HRESULT Transaction_Create(ISOLEVEL isoLevel, ULONG isoFlags, ITransactionOptions *pOptions, ITransaction **ppv)
Definition: xolehlp.c:349
static TransactionManager * impl_from_ITransactionImportWhereabouts(ITransactionImportWhereabouts *iface)
Definition: xolehlp.c:525
#define REFIID
Definition: guiddef.h:118
#define TRUE
Definition: types.h:120
#define E_NOINTERFACE
Definition: winerror.h:2364
static rfbScreenInfoPtr server
Definition: vnc.c:74
int WINAPI lstrcmpiA(LPCSTR lpString1, LPCSTR lpString2)
Definition: lstring.c:42
static Transaction * impl_from_ITransaction(ITransaction *iface)
Definition: xolehlp.c:265
WINE_DEFAULT_DEBUG_CHANNEL(xolehlp)
REFIID riid
Definition: precomp.h:44
LONG ref
Definition: xolehlp.c:261
static HRESULT WINAPI TransactionImport_Import(ITransactionImport *iface, ULONG cbTransactionCookie, byte *rgbTransactionCookie, IID *piid, void **ppvTransaction)
Definition: xolehlp.c:598
static ResourceManager * impl_from_IResourceManager(IResourceManager *iface)
Definition: xolehlp.c:38
char CHAR
Definition: xmlstorage.h:175
static const ITransactionOptionsVtbl TransactionOptions_Vtbl
Definition: xolehlp.c:230
static ULONG WINAPI ResourceManagerFactory2_Release(IResourceManagerFactory2 *iface)
Definition: xolehlp.c:497
char * host
Definition: whois.c:55
static ULONG WINAPI TransactionOptions_Release(ITransactionOptions *iface)
Definition: xolehlp.c:195
static ULONG WINAPI Transaction_AddRef(ITransaction *iface)
Definition: xolehlp.c:294
REFIID LPVOID * ppv
Definition: atlbase.h:39
static ULONG WINAPI TransactionDispenser_Release(ITransactionDispenser *iface)
Definition: xolehlp.c:434
static HRESULT WINAPI TransactionOptions_SetOptions(ITransactionOptions *iface, XACTOPT *pOptions)
Definition: xolehlp.c:209
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
Definition: loader.c:85
static HRESULT WINAPI ResourceManager_GetDistributedTransactionManager(IResourceManager *iface, REFIID iid, void **ppvObject)
Definition: xolehlp.c:110
static ULONG WINAPI TransactionImport_AddRef(ITransactionImport *iface)
Definition: xolehlp.c:587
static TransactionManager * impl_from_ITransactionImport(ITransactionImport *iface)
Definition: xolehlp.c:575
#define ZeroMemory
Definition: winbase.h:1642
GLuint buffer
Definition: glext.h:5915
static HRESULT WINAPI TransactionOptions_QueryInterface(ITransactionOptions *iface, REFIID iid, void **ppv)
Definition: xolehlp.c:161
static const IResourceManagerVtbl ResourceManager_Vtbl
Definition: xolehlp.c:117
#define DLL_PROCESS_ATTACH
Definition: compat.h:120
ITransactionImportWhereabouts ITransactionImportWhereabouts_iface
Definition: xolehlp.c:378
BOOL WINAPI GetComputerNameW(LPWSTR lpBuffer, LPDWORD lpnSize)
Definition: compname.c:440
char szDescription[40]
Definition: transact.idl:145
_In_ PKTRANSACTION Transaction
Definition: fltkernel.h:2366
static HRESULT TransactionOptions_Create(ITransactionOptions **ppv)
Definition: xolehlp.c:238
static HRESULT WINAPI ResourceManager_ReenlistmentComplete(IResourceManager *iface)
Definition: xolehlp.c:105
LONG ISOLEVEL
Definition: transact.idl:43
Definition: send.c:47
static ULONG WINAPI TransactionImportWhereabouts_AddRef(ITransactionImportWhereabouts *iface)
Definition: xolehlp.c:537
ITransactionDispenser ITransactionDispenser_iface
Definition: xolehlp.c:375
static HRESULT WINAPI ResourceManager_Reenlist(IResourceManager *iface, byte *pPrepInfo, ULONG cbPrepInfo, DWORD lTimeout, XACTSTAT *pXactStat)
Definition: xolehlp.c:99
static ULONG WINAPI ResourceManager_Release(IResourceManager *iface)
Definition: xolehlp.c:77
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
XACTSTAT
Definition: transact.idl:117
static const ITransactionVtbl Transaction_Vtbl
Definition: xolehlp.c:340
unsigned int BOOL
Definition: ntddk_ex.h:94
static ULONG WINAPI Transaction_Release(ITransaction *iface)
Definition: xolehlp.c:304
long LONG
Definition: pedump.c:60
static ULONG WINAPI TransactionDispenser_AddRef(ITransactionDispenser *iface)
Definition: xolehlp.c:424
static HRESULT WINAPI ResourceManagerFactory2_Create(IResourceManagerFactory2 *iface, GUID *pguidRM, CHAR *pszRMName, IResourceManagerSink *pIResMgrSink, IResourceManager **ppResMgr)
Definition: xolehlp.c:502
HRESULT CDECL DtcGetTransactionManagerExW(WCHAR *host, WCHAR *tm_name, REFIID riid, DWORD options, void *config, void **ppv)
Definition: xolehlp.c:698
static HRESULT WINAPI TransactionImport_QueryInterface(ITransactionImport *iface, REFIID iid, void **ppv)
Definition: xolehlp.c:580
static ULONG WINAPI ResourceManagerFactory2_AddRef(IResourceManagerFactory2 *iface)
Definition: xolehlp.c:491
static HRESULT WINAPI TransactionDispenser_QueryInterface(ITransactionDispenser *iface, REFIID iid, void **ppv)
Definition: xolehlp.c:387
#define debugstr_w
Definition: kernel32.h:32
GLenum GLint ref
Definition: glext.h:6028
#define FIXME(fmt,...)
Definition: debug.h:110
static BOOL is_local_machineW(const WCHAR *server)
Definition: xolehlp.c:659
r reserved
Definition: btrfs.c:2893
static ULONG WINAPI TransactionImport_Release(ITransactionImport *iface)
Definition: xolehlp.c:593
#define E_INVALIDARG
Definition: ddrawi.h:101
static HRESULT WINAPI ResourceManagerFactory2_QueryInterface(IResourceManagerFactory2 *iface, REFIID iid, void **ppv)
Definition: xolehlp.c:484
smooth NULL
Definition: ftsmooth.c:416
BOOL WINAPI DllMain(HINSTANCE hinst, DWORD reason, LPVOID reserved)
Definition: xolehlp.c:634
static HRESULT WINAPI TransactionImportWhereabouts_GetWhereabouts(ITransactionImportWhereabouts *iface, ULONG cbWhereabouts, BYTE *rgbWhereabouts, ULONG *pcbUsed)
Definition: xolehlp.c:557
IResourceManagerFactory2 IResourceManagerFactory2_iface
Definition: xolehlp.c:377
#define debugstr_guid
Definition: kernel32.h:35
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560
static HRESULT WINAPI TransactionDispenser_GetOptionsObject(ITransactionDispenser *iface, ITransactionOptions **ppOptions)
Definition: xolehlp.c:449
static HRESULT WINAPI ResourceManagerFactory2_CreateEx(IResourceManagerFactory2 *iface, GUID *pguidRM, CHAR *pszRMName, IResourceManagerSink *pIResMgrSink, REFIID riidRequested, void **ppResMgr)
Definition: xolehlp.c:509
static const ITransactionImportVtbl TransactionImport_Vtbl
Definition: xolehlp.c:606
#define TRACE(s)
Definition: solgame.cpp:4
#define GetProcessHeap()
Definition: compat.h:395
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
__wchar_t WCHAR
Definition: xmlstorage.h:180
static HRESULT WINAPI TransactionImportWhereabouts_GetWhereaboutsSize(ITransactionImportWhereabouts *iface, ULONG *pcbWhereabouts)
Definition: xolehlp.c:548
#define debugstr_a
Definition: kernel32.h:31
LONG HRESULT
Definition: typedefs.h:77
static HRESULT WINAPI TransactionOptions_GetOptions(ITransactionOptions *iface, XACTOPT *pOptions)
Definition: xolehlp.c:219
HRESULT CDECL DtcGetTransactionManagerExA(CHAR *host, CHAR *tm_name, REFIID riid, DWORD options, void *config, void **ppv)
Definition: xolehlp.c:684
const GUID IID_IUnknown
static TransactionManager * impl_from_IResourceManagerFactory2(IResourceManagerFactory2 *iface)
Definition: xolehlp.c:479
#define WINAPI
Definition: msvc.h:8
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
static HRESULT WINAPI Transaction_Commit(ITransaction *iface, BOOL fRetaining, DWORD grfTC, DWORD grfRM)
Definition: xolehlp.c:318
static HRESULT WINAPI TransactionDispenser_BeginTransaction(ITransactionDispenser *iface, IUnknown *punkOuter, ISOLEVEL isoLevel, ULONG isoFlags, ITransactionOptions *pOptions, ITransaction **ppTransaction)
Definition: xolehlp.c:457
static ULONG WINAPI TransactionOptions_AddRef(ITransactionOptions *iface)
Definition: xolehlp.c:185
ULONG ulTimeout
Definition: transact.idl:144
static WCHAR reason[MAX_STRING_RESOURCE_LEN]
Definition: object.c:1904
int ret
static HRESULT WINAPI TransactionImportWhereabouts_QueryInterface(ITransactionImportWhereabouts *iface, REFIID iid, void **ppv)
Definition: xolehlp.c:530
#define InterlockedDecrement
Definition: armddk.h:52
static TransactionManager * impl_from_ITransactionDispenser(ITransactionDispenser *iface)
Definition: xolehlp.c:382
static HRESULT WINAPI ResourceManager_QueryInterface(IResourceManager *iface, REFIID iid, void **ppv)
Definition: xolehlp.c:43
GLenum GLsizei len
Definition: glext.h:6722
unsigned char BYTE
Definition: mem.h:68
REFIID LPVOID * ppvObject
Definition: precomp.h:44
#define CLASS_E_NOAGGREGATION
Definition: winerror.h:2662
static const ITransactionImportWhereaboutsVtbl TransactionImportWhereabouts_Vtbl
Definition: xolehlp.c:567
static TransactionOptions * impl_from_ITransactionOptions(ITransactionOptions *iface)
Definition: xolehlp.c:156
#define strcmpiW(s1, s2)
Definition: unicode.h:39
static const IResourceManagerFactory2Vtbl ResourceManagerFactory2_Vtbl
Definition: xolehlp.c:517
#define MAX_COMPUTERNAME_LENGTH
Definition: winbase.h:240
#define S_OK
Definition: intsafe.h:59
#define InterlockedIncrement
Definition: armddk.h:53
static HRESULT WINAPI Transaction_Abort(ITransaction *iface, BOID *pboidReason, BOOL fRetaining, BOOL fAsync)
Definition: xolehlp.c:324
static ULONG WINAPI ResourceManager_AddRef(IResourceManager *iface)
Definition: xolehlp.c:67
#define CDECL
Definition: compat.h:21
#define ARRAY_SIZE(a)
Definition: main.h:24
static HRESULT WINAPI ResourceManager_Enlist(IResourceManager *iface, ITransaction *pTransaction, ITransactionResourceAsync *pRes, XACTUOW *pUOW, LONG *pisoLevel, ITransactionEnlistmentAsync **ppEnlist)
Definition: xolehlp.c:91
#define E_NOTIMPL
Definition: ddrawi.h:99
LPAVICOMPRESSOPTIONS * ppOptions
Definition: api.c:63
static ULONG WINAPI TransactionImportWhereabouts_Release(ITransactionImportWhereabouts *iface)
Definition: xolehlp.c:543
ITransaction ITransaction_iface
Definition: xolehlp.c:260
XACTTRANSINFO info
Definition: xolehlp.c:262
static HRESULT WINAPI Transaction_GetTransactionInfo(ITransaction *iface, XACTTRANSINFO *pinfo)
Definition: xolehlp.c:330
ITransactionOptions ITransactionOptions_iface
Definition: xolehlp.c:151
WINE_UNICODE_INLINE int strcmpW(const WCHAR *str1, const WCHAR *str2)
Definition: unicode.h:229
static HRESULT TransactionManager_Create(REFIID riid, void **ppv)
Definition: xolehlp.c:613
static HRESULT ResourceManager_Create(REFIID riid, void **ppv)
Definition: xolehlp.c:127
HRESULT CDECL DtcGetTransactionManager(char *host, char *tm_name, REFIID riid, DWORD dwReserved1, WORD wcbReserved2, void *pvReserved2, void **ppv)
Definition: xolehlp.c:670
unsigned int ULONG
Definition: retypes.h:1
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
IResourceManager IResourceManager_iface
Definition: xolehlp.c:34
static HINSTANCE hinst
Definition: edit.c:551
static HRESULT WINAPI Transaction_QueryInterface(ITransaction *iface, REFIID iid, void **ppv)
Definition: xolehlp.c:270
static const WCHAR dotW[]
Definition: directory.c:80
#define HeapFree(x, y, z)
Definition: compat.h:394
ITransactionImport ITransactionImport_iface
Definition: xolehlp.c:379
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
static BOOL is_local_machineA(const CHAR *server)
Definition: xolehlp.c:649