ReactOS  0.4.14-dev-115-g4576127
ndr_contexthandle.c File Reference
#include "ndr_misc.h"
#include "rpc_assoc.h"
#include "rpcndr.h"
#include "wine/debug.h"
#include "wine/list.h"
Include dependency graph for ndr_contexthandle.c:

Go to the source code of this file.

Classes

struct  ndr_context_handle
 
struct  context_handle_entry
 

Macros

#define NDR_CONTEXT_HANDLE_MAGIC   0x4352444e
 

Typedefs

typedef struct ndr_context_handle ndr_context_handle
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (ole)
 
static struct context_handle_entryget_context_entry (NDR_CCONTEXT CContext)
 
static struct context_handle_entrycontext_entry_from_guid (LPCGUID uuid)
 
RPC_BINDING_HANDLE WINAPI NDRCContextBinding (NDR_CCONTEXT CContext)
 
void WINAPI NDRCContextMarshall (NDR_CCONTEXT CContext, void *pBuff)
 
RPC_STATUS WINAPI RpcSmDestroyClientContext (void **ContextHandle)
 
void WINAPI RpcSsDestroyClientContext (void **ContextHandle)
 
void WINAPI RpcSsDontSerializeContext (void)
 
static RPC_STATUS ndr_update_context_handle (NDR_CCONTEXT *CContext, RPC_BINDING_HANDLE hBinding, const ndr_context_handle *chi)
 
void WINAPI NDRCContextUnmarshall (NDR_CCONTEXT *CContext, RPC_BINDING_HANDLE hBinding, void *pBuff, ULONG DataRepresentation)
 
void WINAPI NDRSContextMarshall (NDR_SCONTEXT SContext, void *pBuff, NDR_RUNDOWN userRunDownIn)
 
void WINAPI NDRSContextMarshallEx (RPC_BINDING_HANDLE hBinding, NDR_SCONTEXT SContext, void *pBuff, NDR_RUNDOWN userRunDownIn)
 
void WINAPI NDRSContextMarshall2 (RPC_BINDING_HANDLE hBinding, NDR_SCONTEXT SContext, void *pBuff, NDR_RUNDOWN userRunDownIn, void *CtxGuard, ULONG Flags)
 
NDR_SCONTEXT WINAPI NDRSContextUnmarshall (void *pBuff, ULONG DataRepresentation)
 
NDR_SCONTEXT WINAPI NDRSContextUnmarshallEx (RPC_BINDING_HANDLE hBinding, void *pBuff, ULONG DataRepresentation)
 
NDR_SCONTEXT WINAPI NDRSContextUnmarshall2 (RPC_BINDING_HANDLE hBinding, void *pBuff, ULONG DataRepresentation, void *CtxGuard, ULONG Flags)
 

Variables

static struct list context_handle_list = LIST_INIT(context_handle_list)
 
static CRITICAL_SECTION ndr_context_cs = { &ndr_context_debug, -1, 0, 0, 0, 0 }
 
static CRITICAL_SECTION_DEBUG ndr_context_debug
 

Macro Definition Documentation

◆ NDR_CONTEXT_HANDLE_MAGIC

#define NDR_CONTEXT_HANDLE_MAGIC   0x4352444e

Definition at line 31 of file ndr_contexthandle.c.

Typedef Documentation

◆ ndr_context_handle

Function Documentation

◆ context_entry_from_guid()

static struct context_handle_entry* context_entry_from_guid ( LPCGUID  uuid)
static

Definition at line 67 of file ndr_contexthandle.c.

68 {
69  struct context_handle_entry *che;
71  if (IsEqualGUID(&che->wire_data.uuid, uuid))
72  return che;
73  return NULL;
74 }
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:198
smooth NULL
Definition: ftsmooth.c:416
uint32_t entry
Definition: isohybrid.c:63
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4021
ndr_context_handle wire_data
Definition: msctf.idl:510

Referenced by ndr_update_context_handle().

◆ get_context_entry()

static struct context_handle_entry* get_context_entry ( NDR_CCONTEXT  CContext)
static

Definition at line 58 of file ndr_contexthandle.c.

59 {
60  struct context_handle_entry *che = CContext;
61 
62  if (che->magic != NDR_CONTEXT_HANDLE_MAGIC)
63  return NULL;
64  return che;
65 }
smooth NULL
Definition: ftsmooth.c:416
#define NDR_CONTEXT_HANDLE_MAGIC
DWORD magic

Referenced by ndr_update_context_handle(), NDRCContextBinding(), NDRCContextMarshall(), and RpcSmDestroyClientContext().

◆ ndr_update_context_handle()

static RPC_STATUS ndr_update_context_handle ( NDR_CCONTEXT CContext,
RPC_BINDING_HANDLE  hBinding,
const ndr_context_handle chi 
)
static

Definition at line 166 of file ndr_contexthandle.c.

169 {
170  struct context_handle_entry *che = NULL;
171 
172  /* a null UUID means we should free the context handle */
173  if (IsEqualGUID(&chi->uuid, &GUID_NULL))
174  {
175  if (*CContext)
176  {
177  che = get_context_entry(*CContext);
178  if (!che)
180  list_remove(&che->entry);
181  RpcBindingFree(&che->handle);
182  HeapFree(GetProcessHeap(), 0, che);
183  che = NULL;
184  }
185  }
186  /* if there's no existing entry matching the GUID, allocate one */
187  else if (!(che = context_entry_from_guid(&chi->uuid)))
188  {
189  che = HeapAlloc(GetProcessHeap(), 0, sizeof *che);
190  if (!che)
191  return RPC_X_NO_MEMORY;
195  che->wire_data = *chi;
196  }
197 
198  *CContext = che;
199 
200  return RPC_S_OK;
201 }
#define RPC_X_SS_CONTEXT_MISMATCH
Definition: rpcnterr.h:39
RPC_STATUS WINAPI RpcBindingFree(RPC_BINDING_HANDLE *Binding)
Definition: rpc_binding.c:784
#define RPC_X_NO_MEMORY
Definition: rpcnterr.h:35
static struct context_handle_entry * context_entry_from_guid(LPCGUID uuid)
handle_t hBinding
Definition: ctx_c.c:54
__WINE_SERVER_LIST_INLINE void list_add_tail(struct list *list, struct list *elem)
Definition: list.h:102
smooth NULL
Definition: ftsmooth.c:416
__WINE_SERVER_LIST_INLINE void list_remove(struct list *elem)
Definition: list.h:108
#define NDR_CONTEXT_HANDLE_MAGIC
#define GetProcessHeap()
Definition: compat.h:395
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
static struct context_handle_entry * get_context_entry(NDR_CCONTEXT CContext)
#define GUID_NULL
Definition: ks.h:106
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4021
ndr_context_handle wire_data
DWORD magic
struct list entry
#define HeapFree(x, y, z)
Definition: compat.h:394
RPC_STATUS RPC_ENTRY RpcBindingCopy(RPC_BINDING_HANDLE SourceBinding, RPC_BINDING_HANDLE *DestinationBinding)
Definition: rpc_binding.c:986
#define RPC_S_OK
Definition: rpcnterr.h:22
RPC_BINDING_HANDLE handle

Referenced by NDRCContextUnmarshall().

◆ NDRCContextBinding()

RPC_BINDING_HANDLE WINAPI NDRCContextBinding ( NDR_CCONTEXT  CContext)

Definition at line 76 of file ndr_contexthandle.c.

77 {
78  struct context_handle_entry *che;
80 
81  TRACE("%p\n", CContext);
82 
84  che = get_context_entry(CContext);
85  if (che)
86  handle = che->handle;
88 
89  if (!handle)
90  {
91  ERR("invalid handle %p\n", CContext);
93  }
94  return handle;
95 }
#define RPC_X_SS_CONTEXT_MISMATCH
Definition: rpcnterr.h:39
namespace GUID const ADDRINFOEXW ADDRINFOEXW struct timeval OVERLAPPED LPLOOKUPSERVICE_COMPLETION_ROUTINE HANDLE * handle
Definition: sock.c:82
void DECLSPEC_NORETURN WINAPI RpcRaiseException(RPC_STATUS exception)
Definition: rpcrt4_main.c:189
static CRITICAL_SECTION ndr_context_cs
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
static struct context_handle_entry * get_context_entry(NDR_CCONTEXT CContext)
#define ERR(fmt,...)
Definition: debug.h:109
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
RPC_BINDING_HANDLE handle

Referenced by client_get_handle(), CtxClose(), CtxHello(), m_CtxClose(), m_CtxHello(), and main().

◆ NDRCContextMarshall()

void WINAPI NDRCContextMarshall ( NDR_CCONTEXT  CContext,
void pBuff 
)

Definition at line 97 of file ndr_contexthandle.c.

98 {
99  struct context_handle_entry *che;
100 
101  TRACE("%p %p\n", CContext, pBuff);
102 
103  if (CContext)
104  {
106  che = get_context_entry(CContext);
107  memcpy(pBuff, &che->wire_data, sizeof (ndr_context_handle));
109  }
110  else
111  {
112  ndr_context_handle *wire_data = pBuff;
113  wire_data->attributes = 0;
115  }
116 }
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
static CRITICAL_SECTION ndr_context_cs
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
#define TRACE(s)
Definition: solgame.cpp:4
static struct context_handle_entry * get_context_entry(NDR_CCONTEXT CContext)
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define GUID_NULL
Definition: ks.h:106
ndr_context_handle wire_data
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)

Referenced by main(), and NdrClientContextMarshall().

◆ NDRCContextUnmarshall()

void WINAPI NDRCContextUnmarshall ( NDR_CCONTEXT CContext,
RPC_BINDING_HANDLE  hBinding,
void pBuff,
ULONG  DataRepresentation 
)

Definition at line 206 of file ndr_contexthandle.c.

209 {
211 
212  TRACE("*%p=(%p) %p %p %08x\n",
213  CContext, *CContext, hBinding, pBuff, DataRepresentation);
214 
216  status = ndr_update_context_handle(CContext, hBinding, pBuff);
218  if (status)
220 }
handle_t hBinding
Definition: ctx_c.c:54
void DECLSPEC_NORETURN WINAPI RpcRaiseException(RPC_STATUS exception)
Definition: rpcrt4_main.c:189
static CRITICAL_SECTION ndr_context_cs
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
long RPC_STATUS
Definition: rpc.h:52
#define TRACE(s)
Definition: solgame.cpp:4
static RPC_STATUS ndr_update_context_handle(NDR_CCONTEXT *CContext, RPC_BINDING_HANDLE hBinding, const ndr_context_handle *chi)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
static SERVICE_STATUS status
Definition: service.c:31
Definition: ps.c:97

Referenced by m_CtxOpen2(), and NdrClientContextUnmarshall().

◆ NDRSContextMarshall()

void WINAPI NDRSContextMarshall ( NDR_SCONTEXT  SContext,
void pBuff,
NDR_RUNDOWN  userRunDownIn 
)

Definition at line 225 of file ndr_contexthandle.c.

228 {
229  TRACE("(%p %p %p)\n", SContext, pBuff, userRunDownIn);
231  userRunDownIn, NULL, RPC_CONTEXT_HANDLE_DEFAULT_FLAGS);
232 }
smooth NULL
Definition: ftsmooth.c:416
#define RPC_CONTEXT_HANDLE_DEFAULT_FLAGS
Definition: rpcdcep.h:56
#define TRACE(s)
Definition: solgame.cpp:4
RPC_BINDING_HANDLE WINAPI I_RpcGetCurrentCallHandle(void)
Definition: rpc_server.c:1746
void WINAPI NDRSContextMarshall2(RPC_BINDING_HANDLE hBinding, NDR_SCONTEXT SContext, void *pBuff, NDR_RUNDOWN userRunDownIn, void *CtxGuard, ULONG Flags)

◆ NDRSContextMarshall2()

void WINAPI NDRSContextMarshall2 ( RPC_BINDING_HANDLE  hBinding,
NDR_SCONTEXT  SContext,
void pBuff,
NDR_RUNDOWN  userRunDownIn,
void CtxGuard,
ULONG  Flags 
)

Definition at line 250 of file ndr_contexthandle.c.

255 {
256  RpcBinding *binding = hBinding;
258  ndr_context_handle *ndr = pBuff;
259 
260  TRACE("(%p %p %p %p %p %u)\n",
261  hBinding, SContext, pBuff, userRunDownIn, CtxGuard, Flags);
262 
263  if (!binding->server || !binding->Assoc)
265 
267  FIXME("unimplemented flags: 0x%x\n", Flags & RPC_CONTEXT_HANDLE_FLAGS);
268 
269  if (SContext->userContext)
270  {
271  status = RpcServerAssoc_UpdateContextHandle(binding->Assoc, SContext, CtxGuard, userRunDownIn);
272  if (status != RPC_S_OK)
274  ndr->attributes = 0;
275  RpcContextHandle_GetUuid(SContext, &ndr->uuid);
276 
278  RpcServerAssoc_ReleaseContextHandle(binding->Assoc, SContext, TRUE);
279  }
280  else
281  {
282  if (!RpcContextHandle_IsGuardCorrect(SContext, CtxGuard))
284  memset(ndr, 0, sizeof(*ndr));
285 
287  /* Note: release the context handle twice in this case to release
288  * one ref being kept around for the data and one ref for the
289  * unmarshall/marshall sequence */
290  if (!RpcServerAssoc_ReleaseContextHandle(binding->Assoc, SContext, TRUE))
291  return; /* this is to cope with the case of the data not being valid
292  * before and so not having a further reference */
293  RpcServerAssoc_ReleaseContextHandle(binding->Assoc, SContext, FALSE);
294  }
295 }
void RpcContextHandle_GetUuid(NDR_SCONTEXT SContext, UUID *uuid)
Definition: rpc_assoc.c:542
struct _RpcAssoc * Assoc
Definition: rpc_binding.h:137
#define RPC_X_SS_CONTEXT_MISMATCH
Definition: rpcnterr.h:39
#define TRUE
Definition: types.h:120
handle_t hBinding
Definition: ctx_c.c:54
void DECLSPEC_NORETURN WINAPI RpcRaiseException(RPC_STATUS exception)
Definition: rpcrt4_main.c:189
#define RPC_CONTEXT_HANDLE_FLAGS
Definition: rpcdcep.h:57
void * userContext
Definition: rpcndr.h:147
long RPC_STATUS
Definition: rpc.h:52
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
RPC_STATUS RpcServerAssoc_UpdateContextHandle(RpcAssoc *assoc, NDR_SCONTEXT SContext, void *CtxGuard, NDR_RUNDOWN rundown_routine)
Definition: rpc_assoc.c:516
#define FIXME(fmt,...)
Definition: debug.h:110
#define RPC_S_INVALID_BINDING
Definition: winerror.h:1013
#define TRACE(s)
Definition: solgame.cpp:4
void RPCRT4_RemoveThreadContextHandle(NDR_SCONTEXT SContext) DECLSPEC_HIDDEN
Definition: rpcrt4_main.c:996
unsigned int RpcServerAssoc_ReleaseContextHandle(RpcAssoc *assoc, NDR_SCONTEXT SContext, BOOL release_lock)
Definition: rpc_assoc.c:564
#define memset(x, y, z)
Definition: compat.h:39
static SERVICE_STATUS status
Definition: service.c:31
BOOL RpcContextHandle_IsGuardCorrect(NDR_SCONTEXT SContext, void *CtxGuard)
Definition: rpc_assoc.c:482
#define RPC_S_OK
Definition: rpcnterr.h:22
Definition: ps.c:97

Referenced by NDRSContextMarshall(), NDRSContextMarshallEx(), NdrServerContextMarshall(), and NdrServerContextNewMarshall().

◆ NDRSContextMarshallEx()

void WINAPI NDRSContextMarshallEx ( RPC_BINDING_HANDLE  hBinding,
NDR_SCONTEXT  SContext,
void pBuff,
NDR_RUNDOWN  userRunDownIn 
)

Definition at line 237 of file ndr_contexthandle.c.

241 {
242  TRACE("(%p %p %p %p)\n", hBinding, SContext, pBuff, userRunDownIn);
243  NDRSContextMarshall2(hBinding, SContext, pBuff, userRunDownIn, NULL,
245 }
handle_t hBinding
Definition: ctx_c.c:54
smooth NULL
Definition: ftsmooth.c:416
#define RPC_CONTEXT_HANDLE_DEFAULT_FLAGS
Definition: rpcdcep.h:56
#define TRACE(s)
Definition: solgame.cpp:4
void WINAPI NDRSContextMarshall2(RPC_BINDING_HANDLE hBinding, NDR_SCONTEXT SContext, void *pBuff, NDR_RUNDOWN userRunDownIn, void *CtxGuard, ULONG Flags)

◆ NDRSContextUnmarshall()

NDR_SCONTEXT WINAPI NDRSContextUnmarshall ( void pBuff,
ULONG  DataRepresentation 
)

Definition at line 300 of file ndr_contexthandle.c.

302 {
303  TRACE("(%p %08x)\n", pBuff, DataRepresentation);
305  DataRepresentation, NULL,
307 }
smooth NULL
Definition: ftsmooth.c:416
#define RPC_CONTEXT_HANDLE_DEFAULT_FLAGS
Definition: rpcdcep.h:56
#define TRACE(s)
Definition: solgame.cpp:4
RPC_BINDING_HANDLE WINAPI I_RpcGetCurrentCallHandle(void)
Definition: rpc_server.c:1746
NDR_SCONTEXT WINAPI NDRSContextUnmarshall2(RPC_BINDING_HANDLE hBinding, void *pBuff, ULONG DataRepresentation, void *CtxGuard, ULONG Flags)

Referenced by hello_CtxOpen().

◆ NDRSContextUnmarshall2()

NDR_SCONTEXT WINAPI NDRSContextUnmarshall2 ( RPC_BINDING_HANDLE  hBinding,
void pBuff,
ULONG  DataRepresentation,
void CtxGuard,
ULONG  Flags 
)

Definition at line 324 of file ndr_contexthandle.c.

328 {
329  RpcBinding *binding = hBinding;
330  NDR_SCONTEXT SContext;
332  const ndr_context_handle *context_ndr = pBuff;
333 
334  TRACE("(%p %p %08x %p %u)\n",
335  hBinding, pBuff, DataRepresentation, CtxGuard, Flags);
336 
337  if (!binding->server || !binding->Assoc)
339 
341  FIXME("unimplemented flags: 0x%x\n", Flags & RPC_CONTEXT_HANDLE_FLAGS);
342 
343  if (!pBuff || (!context_ndr->attributes &&
344  UuidIsNil((UUID *)&context_ndr->uuid, &status)))
346  &SContext);
347  else
348  {
349  if (context_ndr->attributes)
350  {
351  ERR("non-null attributes 0x%x\n", context_ndr->attributes);
353  }
354  else
356  &context_ndr->uuid,
357  CtxGuard, Flags,
358  &SContext);
359  }
360 
361  if (status != RPC_S_OK)
363 
365  return SContext;
366 }
struct _RpcAssoc * Assoc
Definition: rpc_binding.h:137
#define RPC_X_SS_CONTEXT_MISMATCH
Definition: rpcnterr.h:39
handle_t hBinding
Definition: ctx_c.c:54
void DECLSPEC_NORETURN WINAPI RpcRaiseException(RPC_STATUS exception)
Definition: rpcrt4_main.c:189
RPC_STATUS RpcServerAssoc_AllocateContextHandle(RpcAssoc *assoc, void *CtxGuard, NDR_SCONTEXT *SContext)
Definition: rpc_assoc.c:457
#define RPC_CONTEXT_HANDLE_FLAGS
Definition: rpcdcep.h:57
void RPCRT4_PushThreadContextHandle(NDR_SCONTEXT SContext) DECLSPEC_HIDDEN
Definition: rpcrt4_main.c:981
int WINAPI UuidIsNil(UUID *Uuid, RPC_STATUS *Status)
Definition: rpcrt4_main.c:269
long RPC_STATUS
Definition: rpc.h:52
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
#define FIXME(fmt,...)
Definition: debug.h:110
#define RPC_S_INVALID_BINDING
Definition: winerror.h:1013
#define TRACE(s)
Definition: solgame.cpp:4
#define ERR(fmt,...)
Definition: debug.h:109
RPC_STATUS RpcServerAssoc_FindContextHandle(RpcAssoc *assoc, const UUID *uuid, void *CtxGuard, ULONG Flags, NDR_SCONTEXT *SContext)
Definition: rpc_assoc.c:488
static SERVICE_STATUS status
Definition: service.c:31
#define RPC_S_OK
Definition: rpcnterr.h:22
Definition: ps.c:97

Referenced by NdrContextHandleInitialize(), NDRSContextUnmarshall(), NDRSContextUnmarshallEx(), NdrServerContextNewUnmarshall(), and NdrServerContextUnmarshall().

◆ NDRSContextUnmarshallEx()

NDR_SCONTEXT WINAPI NDRSContextUnmarshallEx ( RPC_BINDING_HANDLE  hBinding,
void pBuff,
ULONG  DataRepresentation 
)

Definition at line 312 of file ndr_contexthandle.c.

315 {
316  TRACE("(%p %p %08x)\n", hBinding, pBuff, DataRepresentation);
317  return NDRSContextUnmarshall2(hBinding, pBuff, DataRepresentation, NULL,
319 }
handle_t hBinding
Definition: ctx_c.c:54
smooth NULL
Definition: ftsmooth.c:416
#define RPC_CONTEXT_HANDLE_DEFAULT_FLAGS
Definition: rpcdcep.h:56
#define TRACE(s)
Definition: solgame.cpp:4
NDR_SCONTEXT WINAPI NDRSContextUnmarshall2(RPC_BINDING_HANDLE hBinding, void *pBuff, ULONG DataRepresentation, void *CtxGuard, ULONG Flags)

◆ RpcSmDestroyClientContext()

RPC_STATUS WINAPI RpcSmDestroyClientContext ( void **  ContextHandle)

Definition at line 121 of file ndr_contexthandle.c.

122 {
124  struct context_handle_entry *che = NULL;
125 
126  TRACE("(%p)\n", ContextHandle);
127 
129  che = get_context_entry(*ContextHandle);
130  *ContextHandle = NULL;
131  if (che)
132  {
133  status = RPC_S_OK;
134  list_remove(&che->entry);
135  }
136 
138 
139  if (che)
140  {
141  RpcBindingFree(&che->handle);
142  HeapFree(GetProcessHeap(), 0, che);
143  }
144 
145  return status;
146 }
#define RPC_X_SS_CONTEXT_MISMATCH
Definition: rpcnterr.h:39
RPC_STATUS WINAPI RpcBindingFree(RPC_BINDING_HANDLE *Binding)
Definition: rpc_binding.c:784
static CRITICAL_SECTION ndr_context_cs
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
long RPC_STATUS
Definition: rpc.h:52
smooth NULL
Definition: ftsmooth.c:416
__WINE_SERVER_LIST_INLINE void list_remove(struct list *elem)
Definition: list.h:108
#define TRACE(s)
Definition: solgame.cpp:4
#define GetProcessHeap()
Definition: compat.h:395
static struct context_handle_entry * get_context_entry(NDR_CCONTEXT CContext)
struct list entry
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
static SERVICE_STATUS status
Definition: service.c:31
#define HeapFree(x, y, z)
Definition: compat.h:394
#define RPC_S_OK
Definition: rpcnterr.h:22
RPC_BINDING_HANDLE handle
Definition: ps.c:97

Referenced by RpcSsDestroyClientContext().

◆ RpcSsDestroyClientContext()

void WINAPI RpcSsDestroyClientContext ( void **  ContextHandle)

Definition at line 151 of file ndr_contexthandle.c.

152 {
154  if (status != RPC_S_OK)
156 }
void DECLSPEC_NORETURN WINAPI RpcRaiseException(RPC_STATUS exception)
Definition: rpcrt4_main.c:189
long RPC_STATUS
Definition: rpc.h:52
#define RPC_S_OK
Definition: rpcnterr.h:22
RPC_STATUS WINAPI RpcSmDestroyClientContext(void **ContextHandle)
Definition: ps.c:97

◆ RpcSsDontSerializeContext()

void WINAPI RpcSsDontSerializeContext ( void  )

Definition at line 161 of file ndr_contexthandle.c.

162 {
163  FIXME("stub\n");
164 }
#define FIXME(fmt,...)
Definition: debug.h:110

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( ole  )

Variable Documentation

◆ context_handle_list

◆ ndr_context_cs

static CRITICAL_SECTION ndr_context_cs = { &ndr_context_debug, -1, 0, 0, 0, 0 }
static

◆ ndr_context_debug

CRITICAL_SECTION_DEBUG ndr_context_debug
static
Initial value:
=
{
0, 0, { (DWORD_PTR)(__FILE__ ": ndr_context") }
}
#define DWORD_PTR
Definition: treelist.c:76
static CRITICAL_SECTION ndr_context_cs
LIST_ENTRY ProcessLocksList
Definition: winbase.h:855
static CRITICAL_SECTION_DEBUG ndr_context_debug

Definition at line 50 of file ndr_contexthandle.c.