ReactOS  0.4.11-dev-946-g431643b
irotp.c File Reference
#include <stdarg.h>
#include <string.h>
#include "winerror.h"
#include "windef.h"
#include "winbase.h"
#include "irot_s.h"
#include "wine/list.h"
#include "wine/debug.h"
Include dependency graph for irotp.c:

Go to the source code of this file.

Classes

struct  rot_entry
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (rpcss)
 
static void rot_entry_release (struct rot_entry *rot_entry)
 
HRESULT __cdecl IrotRegister (IrotHandle h, const MonikerComparisonData *data, const InterfaceData *obj, const InterfaceData *mk, const FILETIME *time, DWORD grfFlags, IrotCookie *cookie, IrotContextHandle *ctxt_handle)
 
HRESULT __cdecl IrotRevoke (IrotHandle h, IrotCookie cookie, IrotContextHandle *ctxt_handle, PInterfaceData *obj, PInterfaceData *mk)
 
HRESULT __cdecl IrotIsRunning (IrotHandle h, const MonikerComparisonData *data)
 
HRESULT __cdecl IrotGetObject (IrotHandle h, const MonikerComparisonData *moniker_data, PInterfaceData *obj, IrotCookie *cookie)
 
HRESULT __cdecl IrotNoteChangeTime (IrotHandle h, IrotCookie cookie, const FILETIME *last_modified_time)
 
HRESULT __cdecl IrotGetTimeOfLastChange (IrotHandle h, const MonikerComparisonData *moniker_data, FILETIME *time)
 
HRESULT __cdecl IrotEnumRunning (IrotHandle h, PInterfaceList *list)
 
void __RPC_USER IrotContextHandle_rundown (IrotContextHandle ctxt_handle)
 
void *__RPC_USER MIDL_user_allocate (SIZE_T size)
 
void __RPC_USER MIDL_user_free (void *p)
 

Variables

static struct list RunningObjectTable = LIST_INIT(RunningObjectTable)
 
static CRITICAL_SECTION csRunningObjectTable = { &critsect_debug, -1, 0, 0, 0, 0 }
 
static CRITICAL_SECTION_DEBUG critsect_debug
 
static LONG last_cookie = 1
 

Function Documentation

◆ IrotContextHandle_rundown()

void __RPC_USER IrotContextHandle_rundown ( IrotContextHandle  ctxt_handle)

Definition at line 362 of file irotp.c.

363 {
364  struct rot_entry *rot_entry = ctxt_handle;
366  list_remove(&rot_entry->entry);
368  rot_entry_release(rot_entry);
369 }
IrotContextHandle ctxt_handle
Definition: moniker.c:69
static void rot_entry_release(struct rot_entry *rot_entry)
Definition: irotp.c:60
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
Definition: irotp.c:36
__WINE_SERVER_LIST_INLINE void list_remove(struct list *elem)
Definition: list.h:108
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
struct list entry
Definition: irotp.c:38
static CRITICAL_SECTION csRunningObjectTable
Definition: irotp.c:49

◆ IrotEnumRunning()

HRESULT __cdecl IrotEnumRunning ( IrotHandle  h,
PInterfaceList *  list 
)

Definition at line 317 of file irotp.c.

Referenced by RunningObjectTableImpl_EnumRunning().

320 {
321  const struct rot_entry *rot_entry;
322  HRESULT hr = S_OK;
323  ULONG moniker_count = 0;
324  ULONG i = 0;
325 
326  WINE_TRACE("\n");
327 
329 
330  LIST_FOR_EACH_ENTRY( rot_entry, &RunningObjectTable, const struct rot_entry, entry )
331  moniker_count++;
332 
333  *list = MIDL_user_allocate(FIELD_OFFSET(InterfaceList, interfaces[moniker_count]));
334  if (*list)
335  {
336  (*list)->size = moniker_count;
337  LIST_FOR_EACH_ENTRY( rot_entry, &RunningObjectTable, const struct rot_entry, entry )
338  {
339  (*list)->interfaces[i] = MIDL_user_allocate(FIELD_OFFSET(InterfaceData, abData[rot_entry->moniker->ulCntData]));
340  if (!(*list)->interfaces[i])
341  {
342  ULONG end = i - 1;
343  for (i = 0; i < end; i++)
344  MIDL_user_free((*list)->interfaces[i]);
346  hr = E_OUTOFMEMORY;
347  break;
348  }
349  (*list)->interfaces[i]->ulCntData = rot_entry->moniker->ulCntData;
350  memcpy((*list)->interfaces[i]->abData, rot_entry->moniker->abData, rot_entry->moniker->ulCntData);
351  i++;
352  }
353  }
354  else
355  hr = E_OUTOFMEMORY;
356 
358 
359  return hr;
360 }
_In_ PUSBD_INTERFACE_LIST_ENTRY InterfaceList
Definition: usbdlib.h:168
uint8_t entry
Definition: isohybrid.c:63
#define WINE_TRACE
Definition: debug.h:358
GLuint GLuint end
Definition: gl.h:1545
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:198
GLenum GLclampf GLint i
Definition: glfuncs.h:14
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
Definition: irotp.c:36
LONG HRESULT
Definition: typedefs.h:77
static struct list RunningObjectTable
Definition: irotp.c:47
InterfaceData * moniker
Definition: irotp.c:40
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
Definition: _list.h:228
#define S_OK
Definition: intsafe.h:59
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:254
unsigned int ULONG
Definition: retypes.h:1
IN PVOID IN PVOID InterfaceData
Definition: pci.h:359
void *__RPC_USER MIDL_user_allocate(SIZE_T size)
Definition: irotp.c:371
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void __RPC_USER MIDL_user_free(void *p)
Definition: irotp.c:376
static CRITICAL_SECTION csRunningObjectTable
Definition: irotp.c:49

◆ IrotGetObject()

HRESULT __cdecl IrotGetObject ( IrotHandle  h,
const MonikerComparisonData moniker_data,
PInterfaceData *  obj,
IrotCookie *  cookie 
)

Definition at line 223 of file irotp.c.

Referenced by RunningObjectTableImpl_GetObject().

228 {
229  const struct rot_entry *rot_entry;
230 
231  WINE_TRACE("%p\n", moniker_data);
232 
233  *cookie = 0;
234 
236 
237  LIST_FOR_EACH_ENTRY(rot_entry, &RunningObjectTable, const struct rot_entry, entry)
238  {
239  HRESULT hr = S_OK;
240  if ((rot_entry->moniker_data->ulCntData == moniker_data->ulCntData) &&
241  !memcmp(&moniker_data->abData, &rot_entry->moniker_data->abData, moniker_data->ulCntData))
242  {
243  *obj = MIDL_user_allocate(FIELD_OFFSET(InterfaceData, abData[rot_entry->object->ulCntData]));
244  if (*obj)
245  {
246  (*obj)->ulCntData = rot_entry->object->ulCntData;
247  memcpy((*obj)->abData, rot_entry->object->abData, (*obj)->ulCntData);
248 
249  *cookie = rot_entry->cookie;
250  }
251  else
252  hr = E_OUTOFMEMORY;
253 
255 
256  return hr;
257  }
258  }
259 
261 
262  return MK_E_UNAVAILABLE;
263 }
MonikerComparisonData * moniker_data
Definition: irotp.c:41
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
Definition: utclib.c:112
uint8_t entry
Definition: isohybrid.c:63
#define WINE_TRACE
Definition: debug.h:358
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:198
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
Definition: irotp.c:36
LONG HRESULT
Definition: typedefs.h:77
static struct list RunningObjectTable
Definition: irotp.c:47
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define S_OK
Definition: intsafe.h:59
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:254
DWORD cookie
Definition: irotp.c:42
#define MK_E_UNAVAILABLE
Definition: winerror.h:2784
IN PVOID IN PVOID InterfaceData
Definition: pci.h:359
void *__RPC_USER MIDL_user_allocate(SIZE_T size)
Definition: irotp.c:371
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
static CRITICAL_SECTION csRunningObjectTable
Definition: irotp.c:49
InterfaceData * object
Definition: irotp.c:39

◆ IrotGetTimeOfLastChange()

HRESULT __cdecl IrotGetTimeOfLastChange ( IrotHandle  h,
const MonikerComparisonData moniker_data,
FILETIME time 
)

Definition at line 289 of file irotp.c.

Referenced by RunningObjectTableImpl_GetTimeOfLastChange().

293 {
294  const struct rot_entry *rot_entry;
296 
297  WINE_TRACE("%p\n", moniker_data);
298 
299  memset(time, 0, sizeof(*time));
300 
302  LIST_FOR_EACH_ENTRY(rot_entry, &RunningObjectTable, const struct rot_entry, entry)
303  {
304  if ((rot_entry->moniker_data->ulCntData == moniker_data->ulCntData) &&
305  !memcmp(&moniker_data->abData, &rot_entry->moniker_data->abData, moniker_data->ulCntData))
306  {
307  *time = rot_entry->last_modified;
308  hr = S_OK;
309  break;
310  }
311  }
313 
314  return hr;
315 }
MonikerComparisonData * moniker_data
Definition: irotp.c:41
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
Definition: utclib.c:112
uint8_t entry
Definition: isohybrid.c:63
#define WINE_TRACE
Definition: debug.h:358
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:198
Definition: irotp.c:36
LONG HRESULT
Definition: typedefs.h:77
static struct list RunningObjectTable
Definition: irotp.c:47
#define S_OK
Definition: intsafe.h:59
#define MK_E_UNAVAILABLE
Definition: winerror.h:2784
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
#define memset(x, y, z)
Definition: compat.h:39
FILETIME last_modified
Definition: irotp.c:43
static CRITICAL_SECTION csRunningObjectTable
Definition: irotp.c:49

◆ IrotIsRunning()

HRESULT __cdecl IrotIsRunning ( IrotHandle  h,
const MonikerComparisonData data 
)

Definition at line 198 of file irotp.c.

Referenced by RunningObjectTableImpl_IsRunning().

201 {
202  const struct rot_entry *rot_entry;
203  HRESULT hr = S_FALSE;
204 
205  WINE_TRACE("\n");
206 
208 
209  LIST_FOR_EACH_ENTRY(rot_entry, &RunningObjectTable, const struct rot_entry, entry)
210  {
211  if ((rot_entry->moniker_data->ulCntData == data->ulCntData) &&
212  !memcmp(&data->abData, &rot_entry->moniker_data->abData, data->ulCntData))
213  {
214  hr = S_OK;
215  break;
216  }
217  }
219 
220  return hr;
221 }
MonikerComparisonData * moniker_data
Definition: irotp.c:41
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
Definition: utclib.c:112
uint8_t entry
Definition: isohybrid.c:63
#define WINE_TRACE
Definition: debug.h:358
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:198
#define S_FALSE
Definition: winerror.h:2357
Definition: irotp.c:36
LONG HRESULT
Definition: typedefs.h:77
static struct list RunningObjectTable
Definition: irotp.c:47
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
#define S_OK
Definition: intsafe.h:59
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
static CRITICAL_SECTION csRunningObjectTable
Definition: irotp.c:49

◆ IrotNoteChangeTime()

HRESULT __cdecl IrotNoteChangeTime ( IrotHandle  h,
IrotCookie  cookie,
const FILETIME last_modified_time 
)

Definition at line 265 of file irotp.c.

Referenced by RunningObjectTableImpl_NoteChangeTime().

269 {
270  struct rot_entry *rot_entry;
271 
272  WINE_TRACE("%d %p\n", cookie, last_modified_time);
273 
275  LIST_FOR_EACH_ENTRY(rot_entry, &RunningObjectTable, struct rot_entry, entry)
276  {
277  if (rot_entry->cookie == cookie)
278  {
279  rot_entry->last_modified = *last_modified_time;
281  return S_OK;
282  }
283  }
285 
286  return E_INVALIDARG;
287 }
uint8_t entry
Definition: isohybrid.c:63
#define WINE_TRACE
Definition: debug.h:358
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:198
#define E_INVALIDARG
Definition: ddrawi.h:101
Definition: irotp.c:36
static struct list RunningObjectTable
Definition: irotp.c:47
#define S_OK
Definition: intsafe.h:59
DWORD cookie
Definition: irotp.c:42
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
FILETIME last_modified
Definition: irotp.c:43
static CRITICAL_SECTION csRunningObjectTable
Definition: irotp.c:49

◆ IrotRegister()

HRESULT __cdecl IrotRegister ( IrotHandle  h,
const MonikerComparisonData data,
const InterfaceData obj,
const InterfaceData mk,
const FILETIME time,
DWORD  grfFlags,
IrotCookie *  cookie,
IrotContextHandle *  ctxt_handle 
)

Definition at line 71 of file irotp.c.

Referenced by RunningObjectTableImpl_Register().

80 {
81  struct rot_entry *rot_entry;
82  struct rot_entry *existing_rot_entry;
83  HRESULT hr;
84 
85  if (grfFlags & ~(ROTFLAGS_REGISTRATIONKEEPSALIVE|ROTFLAGS_ALLOWANYCLIENT))
86  {
87  WINE_ERR("Invalid grfFlags: 0x%08x\n", grfFlags & ~(ROTFLAGS_REGISTRATIONKEEPSALIVE|ROTFLAGS_ALLOWANYCLIENT));
88  return E_INVALIDARG;
89  }
90 
91  rot_entry = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*rot_entry));
92  if (!rot_entry)
93  return E_OUTOFMEMORY;
94 
95  rot_entry->refs = 1;
96  rot_entry->object = HeapAlloc(GetProcessHeap(), 0, FIELD_OFFSET(InterfaceData, abData[obj->ulCntData]));
97  if (!rot_entry->object)
98  {
99  rot_entry_release(rot_entry);
100  return E_OUTOFMEMORY;
101  }
102  rot_entry->object->ulCntData = obj->ulCntData;
103  memcpy(&rot_entry->object->abData, obj->abData, obj->ulCntData);
104 
105  rot_entry->last_modified = *time;
106 
107  rot_entry->moniker = HeapAlloc(GetProcessHeap(), 0, FIELD_OFFSET(InterfaceData, abData[mk->ulCntData]));
108  if (!rot_entry->moniker)
109  {
110  rot_entry_release(rot_entry);
111  return E_OUTOFMEMORY;
112  }
113  rot_entry->moniker->ulCntData = mk->ulCntData;
114  memcpy(&rot_entry->moniker->abData, mk->abData, mk->ulCntData);
115 
116  rot_entry->moniker_data = HeapAlloc(GetProcessHeap(), 0, FIELD_OFFSET(MonikerComparisonData, abData[data->ulCntData]));
117  if (!rot_entry->moniker_data)
118  {
119  rot_entry_release(rot_entry);
120  return E_OUTOFMEMORY;
121  }
122  rot_entry->moniker_data->ulCntData = data->ulCntData;
123  memcpy(&rot_entry->moniker_data->abData, data->abData, data->ulCntData);
124 
126 
127  hr = S_OK;
128 
129  LIST_FOR_EACH_ENTRY(existing_rot_entry, &RunningObjectTable, struct rot_entry, entry)
130  {
131  if ((existing_rot_entry->moniker_data->ulCntData == data->ulCntData) &&
132  !memcmp(&data->abData, &existing_rot_entry->moniker_data->abData, data->ulCntData))
133  {
135  WINE_TRACE("moniker already registered with cookie %d\n", existing_rot_entry->cookie);
136  break;
137  }
138  }
139 
140  list_add_tail(&RunningObjectTable, &rot_entry->entry);
141 
143 
144  /* gives a registration identifier to the registered object*/
145  *cookie = rot_entry->cookie = InterlockedIncrement(&last_cookie);
146  *ctxt_handle = rot_entry;
147 
148  return hr;
149 }
static LONG last_cookie
Definition: irotp.c:58
MonikerComparisonData * moniker_data
Definition: irotp.c:41
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
Definition: utclib.c:112
IrotContextHandle ctxt_handle
Definition: moniker.c:69
uint8_t entry
Definition: isohybrid.c:63
#define WINE_TRACE
Definition: debug.h:358
static void rot_entry_release(struct rot_entry *rot_entry)
Definition: irotp.c:60
__u16 time
Definition: mkdosfs.c:366
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
__WINE_SERVER_LIST_INLINE void list_add_tail(struct list *list, struct list *elem)
Definition: list.h:102
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:198
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_INVALIDARG
Definition: ddrawi.h:101
#define WINE_ERR
Definition: debug.h:375
Definition: irotp.c:36
IROT_ENDPOINT struct tagMonikerComparisonData MonikerComparisonData
#define GetProcessHeap()
Definition: compat.h:395
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
LONG HRESULT
Definition: typedefs.h:77
static struct list RunningObjectTable
Definition: irotp.c:47
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
InterfaceData * moniker
Definition: irotp.c:40
LONG refs
Definition: irotp.c:44
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define MK_S_MONIKERALREADYREGISTERED
Definition: winerror.h:2777
#define S_OK
Definition: intsafe.h:59
#define InterlockedIncrement
Definition: armddk.h:53
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:254
DWORD cookie
Definition: irotp.c:42
#define HEAP_ZERO_MEMORY
Definition: compat.h:123
IN PVOID IN PVOID InterfaceData
Definition: pci.h:359
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
struct list entry
Definition: irotp.c:38
FILETIME last_modified
Definition: irotp.c:43
static CRITICAL_SECTION csRunningObjectTable
Definition: irotp.c:49
InterfaceData * object
Definition: irotp.c:39

◆ IrotRevoke()

HRESULT __cdecl IrotRevoke ( IrotHandle  h,
IrotCookie  cookie,
IrotContextHandle *  ctxt_handle,
PInterfaceData *  obj,
PInterfaceData *  mk 
)

Definition at line 151 of file irotp.c.

Referenced by rot_entry_delete().

157 {
158  struct rot_entry *rot_entry;
159 
160  WINE_TRACE("%d\n", cookie);
161 
163  LIST_FOR_EACH_ENTRY(rot_entry, &RunningObjectTable, struct rot_entry, entry)
164  {
165  if (rot_entry->cookie == cookie)
166  {
167  HRESULT hr = S_OK;
168 
169  list_remove(&rot_entry->entry);
171 
172  *obj = MIDL_user_allocate(FIELD_OFFSET(InterfaceData, abData[rot_entry->object->ulCntData]));
173  *mk = MIDL_user_allocate(FIELD_OFFSET(InterfaceData, abData[rot_entry->moniker->ulCntData]));
174  if (*obj && *mk)
175  {
176  (*obj)->ulCntData = rot_entry->object->ulCntData;
177  memcpy((*obj)->abData, rot_entry->object->abData, (*obj)->ulCntData);
178  (*mk)->ulCntData = rot_entry->moniker->ulCntData;
179  memcpy((*mk)->abData, rot_entry->moniker->abData, (*mk)->ulCntData);
180  }
181  else
182  {
184  MIDL_user_free(*mk);
185  hr = E_OUTOFMEMORY;
186  }
187 
188  rot_entry_release(rot_entry);
189  *ctxt_handle = NULL;
190  return hr;
191  }
192  }
194 
195  return E_INVALIDARG;
196 }
IrotContextHandle ctxt_handle
Definition: moniker.c:69
uint8_t entry
Definition: isohybrid.c:63
#define WINE_TRACE
Definition: debug.h:358
static void rot_entry_release(struct rot_entry *rot_entry)
Definition: irotp.c:60
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:198
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
Definition: irotp.c:36
__WINE_SERVER_LIST_INLINE void list_remove(struct list *elem)
Definition: list.h:108
LONG HRESULT
Definition: typedefs.h:77
static struct list RunningObjectTable
Definition: irotp.c:47
InterfaceData * moniker
Definition: irotp.c:40
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define S_OK
Definition: intsafe.h:59
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:254
DWORD cookie
Definition: irotp.c:42
IN PVOID IN PVOID InterfaceData
Definition: pci.h:359
void *__RPC_USER MIDL_user_allocate(SIZE_T size)
Definition: irotp.c:371
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
struct list entry
Definition: irotp.c:38
void __RPC_USER MIDL_user_free(void *p)
Definition: irotp.c:376
static CRITICAL_SECTION csRunningObjectTable
Definition: irotp.c:49
InterfaceData * object
Definition: irotp.c:39

◆ MIDL_user_allocate()

◆ MIDL_user_free()

void __RPC_USER MIDL_user_free ( void p)

Definition at line 376 of file irotp.c.

Referenced by DsAddressToSiteNamesExW(), DsAddressToSiteNamesW(), DsGetDcSiteCoverageW(), free_pyramid_doub_carr(), IrotEnumRunning(), IrotRevoke(), LsaEnumerateAccountRights(), LsaEnumerateAccounts(), LsaEnumerateAccountsWithUserRight(), LsaEnumeratePrivileges(), LsaEnumerateTrustedDomains(), LsaEnumerateTrustedDomainsEx(), LsaGetRemoteUserName(), LsaGetUserName(), LsaLookupNames(), LsaLookupNames2(), LsaLookupPrivilegeDisplayName(), LsaLookupPrivilegeName(), LsaLookupSids(), LsapAddDomainToDomainsList(), LsapLookupAccountRightName(), LsapLookupFullyQualifiedWellKnownNames(), LsapLookupIsolatedNames(), LsapLookupNames(), LsapLookupSids(), LsapSplitNames(), LsaQueryDomainInformationPolicy(), LsaQueryInformationPolicy(), LsaQueryInfoTrustedDomain(), LsarAddPrivilegesToAccount(), LsarEnumerateAccountRights(), LsarEnumeratePrivilegesAccount(), LsarLookupNames(), LsarLookupNames2(), LsarLookupSids(), LsarpEnumeratePrivileges(), LsarpLookupPrivilegeDisplayName(), LsarpLookupPrivilegeName(), LsarQueryAccountDomain(), LsarQueryAuditEvents(), LsarQueryAuditFull(), LsarQueryAuditLog(), LsarQueryDefaultQuota(), LsarQueryDnsDomain(), LsarQueryModification(), LsarQueryPrimaryDomain(), LsarQuerySecurityObject(), LsarQueryServerRole(), LsarRemovePrivilegesFromAccount(), LsarSetAuditFull(), LsaSetSecurityObject(), pointer_tests(), SamGetGroupsForUser(), SamGetMembersInGroup(), SamIFree_SAMPR_ALIAS_INFO_BUFFER(), SamIFree_SAMPR_DISPLAY_INFO_BUFFER(), SamIFree_SAMPR_DOMAIN_INFO_BUFFER(), SamIFree_SAMPR_ENUMERATION_BUFFER(), SamIFree_SAMPR_GET_GROUPS_BUFFER(), SamIFree_SAMPR_GET_MEMBERS_BUFFER(), SamIFree_SAMPR_GROUP_INFO_BUFFER(), SamIFree_SAMPR_PSID_ARRAY(), SamIFree_SAMPR_RETURNED_USTRING_ARRAY(), SamIFree_SAMPR_SR_SECURITY_DESCRIPTOR(), SamIFree_SAMPR_ULONG_ARRAY(), SamIFree_SAMPR_USER_INFO_BUFFER(), SamIFreeVoid(), SamrQuerySecurityObject(), and SamSetSecurityObject().

377 {
378  HeapFree(GetProcessHeap(), 0, p);
379 }
#define GetProcessHeap()
Definition: compat.h:395
#define HeapFree(x, y, z)
Definition: compat.h:394

◆ rot_entry_release()

static void rot_entry_release ( struct rot_entry rot_entry)
inlinestatic

Definition at line 60 of file irotp.c.

Referenced by IrotContextHandle_rundown(), IrotRegister(), and IrotRevoke().

61 {
62  if (!InterlockedDecrement(&rot_entry->refs))
63  {
64  HeapFree(GetProcessHeap(), 0, rot_entry->object);
65  HeapFree(GetProcessHeap(), 0, rot_entry->moniker);
66  HeapFree(GetProcessHeap(), 0, rot_entry->moniker_data);
67  HeapFree(GetProcessHeap(), 0, rot_entry);
68  }
69 }
MonikerComparisonData * moniker_data
Definition: irotp.c:41
#define GetProcessHeap()
Definition: compat.h:395
InterfaceData * moniker
Definition: irotp.c:40
#define InterlockedDecrement
Definition: armddk.h:52
LONG refs
Definition: irotp.c:44
InterfaceData * object
Definition: irotp.c:39
#define HeapFree(x, y, z)
Definition: compat.h:394

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( rpcss  )

Variable Documentation

◆ critsect_debug

CRITICAL_SECTION_DEBUG critsect_debug
static
Initial value:
=
{
0, 0, { (DWORD_PTR)(__FILE__ ": csRunningObjectTable") }
}
#define DWORD_PTR
Definition: treelist.c:76
static CRITICAL_SECTION_DEBUG critsect_debug
Definition: irotp.c:50
LIST_ENTRY ProcessLocksList
Definition: winbase.h:848
static CRITICAL_SECTION csRunningObjectTable
Definition: irotp.c:49

Definition at line 50 of file irotp.c.

◆ csRunningObjectTable

static CRITICAL_SECTION csRunningObjectTable = { &critsect_debug, -1, 0, 0, 0, 0 }
static

Definition at line 49 of file irotp.c.

◆ last_cookie

LONG last_cookie = 1
static

Definition at line 58 of file irotp.c.

Referenced by IrotRegister().

◆ RunningObjectTable

struct list RunningObjectTable = LIST_INIT(RunningObjectTable)
static

Definition at line 47 of file irotp.c.