ReactOS 0.4.16-dev-306-g647d351
cpsf.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  StdProxyImpl
 
struct  cstdstubbuffer_delegating_t
 

Functions

HRESULT StdProxy_Construct (REFIID riid, LPUNKNOWN pUnkOuter, const ProxyFileInfo *ProxyInfo, int Index, LPPSFACTORYBUFFER pPSFactory, LPRPCPROXYBUFFER *ppProxy, LPVOID *ppvObj) DECLSPEC_HIDDEN
 
HRESULT WINAPI StdProxy_QueryInterface (IRpcProxyBuffer *iface, REFIID iid, void **obj) DECLSPEC_HIDDEN
 
ULONG WINAPI StdProxy_AddRef (IRpcProxyBuffer *iface) DECLSPEC_HIDDEN
 
HRESULT WINAPI StdProxy_Connect (IRpcProxyBuffer *iface, IRpcChannelBuffer *channel) DECLSPEC_HIDDEN
 
void WINAPI StdProxy_Disconnect (IRpcProxyBuffer *iface) DECLSPEC_HIDDEN
 
HRESULT CStdStubBuffer_Construct (REFIID riid, LPUNKNOWN pUnkServer, PCInterfaceName name, CInterfaceStubVtbl *vtbl, LPPSFACTORYBUFFER pPSFactory, LPRPCSTUBBUFFER *ppStub) DECLSPEC_HIDDEN
 
HRESULT CStdStubBuffer_Delegating_Construct (REFIID riid, LPUNKNOWN pUnkServer, PCInterfaceName name, CInterfaceStubVtbl *vtbl, REFIID delegating_iid, LPPSFACTORYBUFFER pPSFactory, LPRPCSTUBBUFFER *ppStub) DECLSPEC_HIDDEN
 
const MIDL_SERVER_INFOCStdStubBuffer_GetServerInfo (IRpcStubBuffer *iface) DECLSPEC_HIDDEN
 
BOOL fill_delegated_proxy_table (IUnknownVtbl *vtbl, DWORD num) DECLSPEC_HIDDEN
 
HRESULT create_proxy (REFIID iid, IUnknown *pUnkOuter, IRpcProxyBuffer **pproxy, void **ppv) DECLSPEC_HIDDEN
 
HRESULT create_stub (REFIID iid, IUnknown *pUnk, IRpcStubBuffer **ppstub) DECLSPEC_HIDDEN
 
BOOL fill_stubless_table (IUnknownVtbl *vtbl, DWORD num) DECLSPEC_HIDDEN
 
IUnknownVtbl * get_delegating_vtbl (DWORD num_methods) DECLSPEC_HIDDEN
 
void release_delegating_vtbl (IUnknownVtbl *vtbl) DECLSPEC_HIDDEN
 

Variables

const IRpcStubBufferVtbl CStdStubBuffer_Vtbl DECLSPEC_HIDDEN
 

Function Documentation

◆ create_proxy()

HRESULT create_proxy ( REFIID  iid,
IUnknown pUnkOuter,
IRpcProxyBuffer **  pproxy,
void **  ppv 
)

Definition at line 442 of file ndr_ole.c.

443{
444 CLSID clsid;
445 IPSFactoryBuffer *psfac;
446 HRESULT r;
447
448 if(!LoadCOM()) return E_FAIL;
449
450 r = COM_GetPSClsid( iid, &clsid );
451 if(FAILED(r)) return r;
452
453 r = COM_GetClassObject( &clsid, CLSCTX_INPROC_SERVER, NULL, &IID_IPSFactoryBuffer, (void**)&psfac );
454 if(FAILED(r)) return r;
455
456 r = IPSFactoryBuffer_CreateProxy(psfac, pUnkOuter, iid, pproxy, ppv);
457
458 IPSFactoryBuffer_Release(psfac);
459 return r;
460}
#define E_FAIL
Definition: ddrawi.h:102
#define NULL
Definition: types.h:112
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define FAILED(hr)
Definition: intsafe.h:51
REFCLSID clsid
Definition: msctf.c:82
static HMODULE LoadCOM(void)
Definition: ndr_ole.c:58

Referenced by StdProxy_Construct(), and typelib_proxy_init().

◆ create_stub()

HRESULT create_stub ( REFIID  iid,
IUnknown pUnk,
IRpcStubBuffer **  ppstub 
)

Definition at line 466 of file ndr_ole.c.

467{
468 CLSID clsid;
469 IPSFactoryBuffer *psfac;
470 HRESULT r;
471
472 if(!LoadCOM()) return E_FAIL;
473
474 r = COM_GetPSClsid( iid, &clsid );
475 if(FAILED(r)) return r;
476
477 r = COM_GetClassObject( &clsid, CLSCTX_INPROC_SERVER, NULL, &IID_IPSFactoryBuffer, (void**)&psfac );
478 if(FAILED(r)) return r;
479
480 r = IPSFactoryBuffer_CreateStub(psfac, iid, pUnk, ppstub);
481
482 IPSFactoryBuffer_Release(psfac);
483 return r;
484}
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
Definition: dplayx.c:30

Referenced by CStdStubBuffer_Delegating_Construct(), test_Connect(), test_CreateStub(), test_delegating_Invoke(), test_Disconnect(), test_Release(), and typelib_stub_init().

◆ CStdStubBuffer_Construct()

HRESULT CStdStubBuffer_Construct ( REFIID  riid,
LPUNKNOWN  pUnkServer,
PCInterfaceName  name,
CInterfaceStubVtbl vtbl,
LPPSFACTORYBUFFER  pPSFactory,
LPRPCSTUBBUFFER ppStub 
)

Definition at line 55 of file cstub.c.

61{
63 IUnknown *pvServer;
64 HRESULT r;
65 TRACE("(%p,%p,%p,%p) %s\n", pUnkServer, vtbl, pPSFactory, ppStub, name);
66 TRACE("iid=%s\n", debugstr_guid(vtbl->header.piid));
67 TRACE("vtbl=%p\n", &vtbl->Vtbl);
68
69 if (!IsEqualGUID(vtbl->header.piid, riid)) {
70 ERR("IID mismatch during stub creation\n");
71 return RPC_E_UNEXPECTED;
72 }
73
74 r = IUnknown_QueryInterface(pUnkServer, riid, (void**)&pvServer);
75 if(FAILED(r))
76 return r;
77
79 if (!This) {
80 IUnknown_Release(pvServer);
81 return E_OUTOFMEMORY;
82 }
83
84 This->lpVtbl = &vtbl->Vtbl;
85 This->RefCount = 1;
86 This->pvServerObject = pvServer;
87 This->pPSFactory = pPSFactory;
88 *ppStub = (LPRPCSTUBBUFFER)This;
89
90 IPSFactoryBuffer_AddRef(pPSFactory);
91 return S_OK;
92}
#define ERR(fmt,...)
Definition: precomp.h:57
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define GetProcessHeap()
Definition: compat.h:736
#define HeapAlloc
Definition: compat.h:733
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
REFIID riid
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
#define debugstr_guid
Definition: kernel32.h:35
interface IRpcStubBuffer * LPRPCSTUBBUFFER
Definition: objfwd.h:41
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define TRACE(s)
Definition: solgame.cpp:4
Definition: name.c:39
const IID * piid
Definition: rpcproxy.h:96
CInterfaceStubHeader header
Definition: rpcproxy.h:104
IRpcStubBufferVtbl Vtbl
Definition: rpcproxy.h:105
#define RPC_E_UNEXPECTED
Definition: winerror.h:2509

Referenced by CStdPSFactory_CreateStub().

◆ CStdStubBuffer_Delegating_Construct()

HRESULT CStdStubBuffer_Delegating_Construct ( REFIID  riid,
LPUNKNOWN  pUnkServer,
PCInterfaceName  name,
CInterfaceStubVtbl vtbl,
REFIID  delegating_iid,
LPPSFACTORYBUFFER  pPSFactory,
LPRPCSTUBBUFFER ppStub 
)

Definition at line 340 of file cstub.c.

347{
349 IUnknown *pvServer;
350 HRESULT r;
351
352 TRACE("(%p,%p,%p,%p) %s\n", pUnkServer, vtbl, pPSFactory, ppStub, name);
353 TRACE("iid=%s delegating to %s\n", debugstr_guid(vtbl->header.piid), debugstr_guid(delegating_iid));
354 TRACE("vtbl=%p\n", &vtbl->Vtbl);
355
356 if (!IsEqualGUID(vtbl->header.piid, riid))
357 {
358 ERR("IID mismatch during stub creation\n");
359 return RPC_E_UNEXPECTED;
360 }
361
362 r = IUnknown_QueryInterface(pUnkServer, riid, (void**)&pvServer);
363 if(FAILED(r)) return r;
364
366 if (!This)
367 {
368 IUnknown_Release(pvServer);
369 return E_OUTOFMEMORY;
370 }
371
373 r = create_stub(delegating_iid, (IUnknown*)&This->base_obj, &This->base_stub);
374 if(FAILED(r))
375 {
376 release_delegating_vtbl(This->base_obj);
378 IUnknown_Release(pvServer);
379 return r;
380 }
381
382 This->stub_buffer.lpVtbl = &vtbl->Vtbl;
383 This->stub_buffer.RefCount = 1;
384 This->stub_buffer.pvServerObject = pvServer;
385 This->stub_buffer.pPSFactory = pPSFactory;
386 *ppStub = (LPRPCSTUBBUFFER)&This->stub_buffer;
387
388 IPSFactoryBuffer_AddRef(pPSFactory);
389 return S_OK;
390}
HRESULT create_stub(REFIID iid, IUnknown *pUnk, IRpcStubBuffer **ppstub) DECLSPEC_HIDDEN
Definition: ndr_ole.c:466
#define HeapFree(x, y, z)
Definition: compat.h:735
void release_delegating_vtbl(IUnknownVtbl *vtbl)
Definition: cstub.c:325
IUnknownVtbl * get_delegating_vtbl(DWORD num_methods)
Definition: cstub.c:289

Referenced by CStdPSFactory_CreateStub().

◆ CStdStubBuffer_GetServerInfo()

const MIDL_SERVER_INFO * CStdStubBuffer_GetServerInfo ( IRpcStubBuffer iface)

Definition at line 615 of file cstub.c.

616{
618 return STUB_HEADER(This).pServerInfo;
619}
#define STUB_HEADER(This)
Definition: cstub.c:41

Referenced by NdrStubCall2().

◆ fill_delegated_proxy_table()

BOOL fill_delegated_proxy_table ( IUnknownVtbl *  vtbl,
DWORD  num 
)

Definition at line 266 of file cstub.c.

267{
268 const void **entry = (const void **)(vtbl + 1);
269 DWORD i, j;
270
271 if (num - 3 > BLOCK_SIZE * MAX_BLOCKS)
272 {
273 FIXME( "%u methods not supported\n", num );
274 return FALSE;
275 }
276 vtbl->QueryInterface = IUnknown_QueryInterface_Proxy;
278 vtbl->Release = IUnknown_Release_Proxy;
279 for (i = 0; i < (num - 3 + BLOCK_SIZE - 1) / BLOCK_SIZE; i++)
280 {
282 if (!block && !(block = allocate_block( i ))) return FALSE;
283 for (j = 0; j < BLOCK_SIZE && j < num - 3 - i * BLOCK_SIZE; j++, entry++)
284 if (!*entry) *entry = &block[j];
285 }
286 return TRUE;
287}
#define FIXME(fmt,...)
Definition: precomp.h:53
ULONG WINAPI IUnknown_AddRef_Proxy(LPUNKNOWN iface)
Definition: cproxy.c:478
ULONG WINAPI IUnknown_Release_Proxy(LPUNKNOWN iface)
Definition: cproxy.c:485
HRESULT WINAPI IUnknown_QueryInterface_Proxy(LPUNKNOWN iface, REFIID riid, LPVOID *ppvObj)
Definition: cproxy.c:469
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
static const vtbl_method_t * method_blocks[MAX_BLOCKS]
Definition: cstub.c:217
static const vtbl_method_t * allocate_block(unsigned int num)
Definition: cstub.c:219
#define MAX_BLOCKS
Definition: cstub.c:215
#define BLOCK_SIZE
Definition: cstub.c:214
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint GLuint num
Definition: glext.h:9618
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
ULONG AddRef()
uint32_t entry
Definition: isohybrid.c:63
static unsigned int block
Definition: xmlmemory.c:101

Referenced by CreateProxyFromTypeInfo(), and init_psfactory().

◆ fill_stubless_table()

BOOL fill_stubless_table ( IUnknownVtbl *  vtbl,
DWORD  num 
)

Definition at line 285 of file cproxy.c.

286{
287 const void **entry = (const void **)(vtbl + 1);
288 DWORD i, j;
289
290 if (num - 3 > BLOCK_SIZE * MAX_BLOCKS)
291 {
292 FIXME( "%u methods not supported\n", num );
293 return FALSE;
294 }
295 for (i = 0; i < (num - 3 + BLOCK_SIZE - 1) / BLOCK_SIZE; i++)
296 {
297 const struct thunk *block = method_blocks[i];
298 if (!block && !(block = allocate_block( i ))) return FALSE;
299 for (j = 0; j < BLOCK_SIZE && j < num - 3 - i * BLOCK_SIZE; j++, entry++)
300 if (*entry == (LPVOID)-1) *entry = &block[j];
301 }
302 return TRUE;
303}
static const struct thunk * allocate_block(unsigned int num)
Definition: cproxy.c:264
static const struct thunk * method_blocks[MAX_BLOCKS]
Definition: cproxy.c:262
#define MAX_BLOCKS
Definition: cproxy.c:260
#define BLOCK_SIZE
Definition: cproxy.c:259
Definition: cproxy.c:248

Referenced by StdProxy_Construct(), and typelib_proxy_init().

◆ get_delegating_vtbl()

IUnknownVtbl * get_delegating_vtbl ( DWORD  num_methods)

Definition at line 289 of file cstub.c.

290{
291 IUnknownVtbl *ret;
292
293 if (num_methods < 256) num_methods = 256; /* avoid frequent reallocations */
294
296
297 if(!current_vtbl || num_methods > current_vtbl->size)
298 {
300 FIELD_OFFSET(ref_counted_vtbl, vtbl) + num_methods * sizeof(void*));
301 if (!table)
302 {
304 return NULL;
305 }
306
307 table->ref = 0;
308 table->size = num_methods;
309 fill_delegated_stub_table(&table->vtbl, num_methods);
310
311 if (current_vtbl && current_vtbl->ref == 0)
312 {
313 TRACE("freeing old table\n");
315 }
317 }
318
319 current_vtbl->ref++;
322 return ret;
323}
static CRITICAL_SECTION delegating_vtbl_section
Definition: cstub.c:94
static BOOL fill_delegated_stub_table(IUnknownVtbl *vtbl, DWORD num)
Definition: cstub.c:244
static ref_counted_vtbl * current_vtbl
Definition: cstub.c:111
DWORD size
Definition: cstub.c:106
IUnknownVtbl vtbl
Definition: cstub.c:107
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:255
int ret
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)

Referenced by CStdStubBuffer_Delegating_Construct(), and typelib_stub_init().

◆ release_delegating_vtbl()

void release_delegating_vtbl ( IUnknownVtbl *  vtbl)

Definition at line 325 of file cstub.c.

326{
327 ref_counted_vtbl *table = (ref_counted_vtbl*)((DWORD *)vtbl - 1);
328
330 table->ref--;
331 TRACE("ref now %d\n", table->ref);
332 if(table->ref == 0 && table != current_vtbl)
333 {
334 TRACE("... and we're not current so free'ing\n");
336 }
338}

Referenced by CStdStubBuffer_Delegating_Construct(), NdrCStdStubBuffer2_Release(), typelib_stub_init(), and typelib_stub_Release().

◆ StdProxy_AddRef()

ULONG WINAPI StdProxy_AddRef ( IRpcProxyBuffer iface)

Definition at line 390 of file cproxy.c.

391{
393 TRACE("(%p)->AddRef()\n",This);
394
395 return InterlockedIncrement(&This->RefCount);
396}
#define InterlockedIncrement
Definition: armddk.h:53
static StdProxyImpl * impl_from_IRpcProxyBuffer(IRpcProxyBuffer *iface)
Definition: cproxy.c:43

◆ StdProxy_Connect()

HRESULT WINAPI StdProxy_Connect ( IRpcProxyBuffer iface,
IRpcChannelBuffer channel 
)

Definition at line 420 of file cproxy.c.

421{
423 TRACE("(%p)->Connect(%p)\n",This,pChannel);
424
425 This->pChannel = pChannel;
426 IRpcChannelBuffer_AddRef(pChannel);
427 if (This->base_proxy) IRpcProxyBuffer_Connect( This->base_proxy, pChannel );
428 return S_OK;
429}

◆ StdProxy_Construct()

HRESULT StdProxy_Construct ( REFIID  riid,
LPUNKNOWN  pUnkOuter,
const ProxyFileInfo ProxyInfo,
int  Index,
LPPSFACTORYBUFFER  pPSFactory,
LPRPCPROXYBUFFER ppProxy,
LPVOID ppvObj 
)

Definition at line 305 of file cproxy.c.

312{
315 CInterfaceProxyVtbl *vtbl = ProxyInfo->pProxyVtblList[Index];
316
317 TRACE("(%p,%p,%p,%p,%p) %s\n", pUnkOuter, vtbl, pPSFactory, ppProxy, ppvObj, name);
318
319 /* TableVersion = 2 means it is the stubless version of CInterfaceProxyVtbl */
320 if (ProxyInfo->TableVersion > 1) {
322 vtbl = (CInterfaceProxyVtbl *)((const void **)vtbl + 1);
323 TRACE("stubless vtbl %p: count=%d\n", vtbl->Vtbl, count );
324 fill_stubless_table( (IUnknownVtbl *)vtbl->Vtbl, count );
325 }
326
327 if (!IsEqualGUID(vtbl->header.piid, riid)) {
328 ERR("IID mismatch during proxy creation\n");
329 return RPC_E_UNEXPECTED;
330 }
331
333 if (!This) return E_OUTOFMEMORY;
334
335 if (!pUnkOuter) pUnkOuter = (IUnknown *)This;
336 This->IRpcProxyBuffer_iface.lpVtbl = &StdProxy_Vtbl;
337 This->PVtbl = vtbl->Vtbl;
338 /* one reference for the proxy */
339 This->RefCount = 1;
340 This->piid = vtbl->header.piid;
341 This->base_object = NULL;
342 This->base_proxy = NULL;
343 This->pUnkOuter = pUnkOuter;
344 This->name = name;
345 This->pPSFactory = pPSFactory;
346 This->pChannel = NULL;
347
348 if(ProxyInfo->pDelegatedIIDs && ProxyInfo->pDelegatedIIDs[Index])
349 {
351 &This->base_proxy, (void **)&This->base_object );
352 if (FAILED(r))
353 {
355 return r;
356 }
357 }
358
359 *ppProxy = &This->IRpcProxyBuffer_iface;
360 *ppvObj = &This->PVtbl;
361 IUnknown_AddRef((IUnknown *)*ppvObj);
362 IPSFactoryBuffer_AddRef(pPSFactory);
363
364 TRACE( "iid=%s this %p proxy %p obj %p vtbl %p base proxy %p base obj %p\n",
365 debugstr_guid(riid), This, *ppProxy, *ppvObj, This->PVtbl, This->base_proxy, This->base_object );
366 return S_OK;
367}
BOOL fill_stubless_table(IUnknownVtbl *vtbl, DWORD num)
Definition: cproxy.c:285
static const IRpcProxyBufferVtbl StdProxy_Vtbl
Definition: cproxy.c:41
HRESULT create_proxy(REFIID iid, IUnknown *pUnkOuter, IRpcProxyBuffer **pproxy, void **ppv) DECLSPEC_HIDDEN
Definition: ndr_ole.c:442
GLuint GLuint GLsizei count
Definition: gl.h:1545
const char * PCInterfaceName
Definition: rpcproxy.h:42
CInterfaceProxyHeader header
Definition: rpcproxy.h:80
unsigned short TableVersion
Definition: rpcproxy.h:54
const IID ** pDelegatedIIDs
Definition: rpcproxy.h:51
const PCInterfaceStubVtblList * pStubVtblList
Definition: rpcproxy.h:49
const PCInterfaceProxyVtblList * pProxyVtblList
Definition: rpcproxy.h:48
const PCInterfaceName * pNamesArray
Definition: rpcproxy.h:50
uint32_t ULONG
Definition: typedefs.h:59
_In_ WDFCOLLECTION _In_ ULONG Index

Referenced by CStdPSFactory_CreateProxy().

◆ StdProxy_Disconnect()

void WINAPI StdProxy_Disconnect ( IRpcProxyBuffer iface)

Definition at line 431 of file cproxy.c.

432{
434 TRACE("(%p)->Disconnect()\n",This);
435
436 if (This->base_proxy) IRpcProxyBuffer_Disconnect( This->base_proxy );
437
438 IRpcChannelBuffer_Release(This->pChannel);
439 This->pChannel = NULL;
440}

◆ StdProxy_QueryInterface()

HRESULT WINAPI StdProxy_QueryInterface ( IRpcProxyBuffer iface,
REFIID  iid,
void **  obj 
)

Definition at line 369 of file cproxy.c.

370{
372 TRACE("(%p)->QueryInterface(%s,%p)\n",This,debugstr_guid(riid),obj);
373
375 IsEqualGUID(This->piid,riid)) {
376 *obj = &This->PVtbl;
377 InterlockedIncrement(&This->RefCount);
378 return S_OK;
379 }
380
381 if (IsEqualGUID(&IID_IRpcProxyBuffer,riid)) {
382 *obj = &This->IRpcProxyBuffer_iface;
383 InterlockedIncrement(&This->RefCount);
384 return S_OK;
385 }
386
387 return E_NOINTERFACE;
388}
const GUID IID_IUnknown
#define E_NOINTERFACE
Definition: winerror.h:2364

Variable Documentation

◆ DECLSPEC_HIDDEN

const IRpcStubBufferVtbl CStdStubBuffer_Delegating_Vtbl DECLSPEC_HIDDEN
extern

Definition at line 66 of file cpsf.h.