#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
#include "objbase.h"
#include "ole2.h"
#include "winerror.h"
#include "compobj_private.h"
#include "wine/list.h"
#include "wine/debug.h"
Go to the source code of this file.
|
| | WINE_DEFAULT_DEBUG_CHANNEL (ole) |
| |
| static StdGlobalInterfaceTableImpl * | impl_from_IGlobalInterfaceTable (IGlobalInterfaceTable *iface) |
| |
| static StdGITEntry * | StdGlobalInterfaceTable_FindEntry (StdGlobalInterfaceTableImpl *This, DWORD cookie) |
| |
| static HRESULT WINAPI | StdGlobalInterfaceTable_QueryInterface (IGlobalInterfaceTable *iface, REFIID riid, void **ppvObject) |
| |
| static ULONG WINAPI | StdGlobalInterfaceTable_AddRef (IGlobalInterfaceTable *iface) |
| |
| static ULONG WINAPI | StdGlobalInterfaceTable_Release (IGlobalInterfaceTable *iface) |
| |
| static HRESULT WINAPI | StdGlobalInterfaceTable_RegisterInterfaceInGlobal (IGlobalInterfaceTable *iface, IUnknown *pUnk, REFIID riid, DWORD *pdwCookie) |
| |
| static HRESULT WINAPI | StdGlobalInterfaceTable_RevokeInterfaceFromGlobal (IGlobalInterfaceTable *iface, DWORD dwCookie) |
| |
| static HRESULT WINAPI | StdGlobalInterfaceTable_GetInterfaceFromGlobal (IGlobalInterfaceTable *iface, DWORD dwCookie, REFIID riid, void **ppv) |
| |
| HRESULT WINAPI | GlobalInterfaceTable_CreateInstance (IClassFactory *iface, IUnknown *outer, REFIID riid, void **obj) |
| |
| void | release_std_git (void) |
| |
◆ COBJMACROS
Definition at line 29 of file git.c.
◆ StdGITEntry
◆ StdGlobalInterfaceTableImpl
◆ GlobalInterfaceTable_CreateInstance()
Definition at line 303 of file git.c.
304{
306
308 {
309 git =
malloc(
sizeof(*git));
311
315
317 {
319 }
320 else
321 TRACE(
"Created the GIT %p\n", git);
322 }
323
325}
static void list_init(struct list_entry *head)
static IGlobalInterfaceTable * std_git
static const IGlobalInterfaceTableVtbl StdGlobalInterfaceTableImpl_Vtbl
#define InterlockedCompareExchangePointer
IGlobalInterfaceTable IGlobalInterfaceTable_iface
◆ impl_from_IGlobalInterfaceTable()
◆ release_std_git()
Definition at line 327 of file git.c.
328{
331
333
336 {
338
340 IStream_Release(
entry->stream);
342 }
343
345}
static void list_remove(struct list_entry *entry)
HRESULT WINAPI CoReleaseMarshalData(IStream *stream)
static StdGlobalInterfaceTableImpl * impl_from_IGlobalInterfaceTable(IGlobalInterfaceTable *iface)
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
Referenced by DllMain().
◆ StdGlobalInterfaceTable_AddRef()
◆ StdGlobalInterfaceTable_FindEntry()
◆ StdGlobalInterfaceTable_GetInterfaceFromGlobal()
Definition at line 249 of file git.c.
252{
257
259
261
264 WARN(
"Entry for cookie %#lx not found\n", dwCookie);
267 }
268
270
272
274
276 WARN(
"Failed to clone stream with error %#lx.\n",
hres);
278 }
279
280
283
285 WARN(
"Failed to unmarshal stream\n");
287 }
288
291}
HRESULT WINAPI CoUnmarshalInterface(IStream *stream, REFIID riid, void **ppv)
static StdGITEntry * StdGlobalInterfaceTable_FindEntry(StdGlobalInterfaceTableImpl *This, DWORD cookie)
static CRITICAL_SECTION git_section
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
◆ StdGlobalInterfaceTable_QueryInterface()
Definition at line 114 of file git.c.
116{
117
119
120 *ppvObject = 0;
121
122
125 {
126 *ppvObject = iface;
127 }
128 else
129 {
132 }
133
134
135 IGlobalInterfaceTable_AddRef(iface);
137}
#define IsEqualIID(riid1, riid2)
◆ StdGlobalInterfaceTable_RegisterInterfaceInGlobal()
Definition at line 156 of file git.c.
159{
165
167
169
170
171 TRACE(
"About to marshal the interface\n");
172
177 {
180 }
181
184
187 {
191 }
192
194
199
200
202
203
204 *pdwCookie =
entry->cookie;
205
207
210}
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
HRESULT WINAPI CreateStreamOnHGlobal(HGLOBAL hGlobal, BOOL delete_on_release, IStream **stream)
HRESULT WINAPI CoMarshalInterface(IStream *stream, REFIID riid, IUnknown *unk, DWORD dest_context, void *pvDestContext, DWORD mshlFlags)
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
◆ StdGlobalInterfaceTable_Release()
◆ StdGlobalInterfaceTable_RevokeInterfaceFromGlobal()
Definition at line 213 of file git.c.
215{
219
220 TRACE(
"%p, %#lx.\n", iface, dwCookie);
221
223
226 TRACE(
"Entry not found\n");
229 }
230
232
234
235
238 {
239 WARN(
"Failed to release marshal data, hr = %#lx\n",
hr);
241 }
242 IStream_Release(
entry->stream);
243
246}
◆ WINE_DEFAULT_DEBUG_CHANNEL()
| WINE_DEFAULT_DEBUG_CHANNEL |
( |
ole |
| ) |
|
◆ critsect_debug
Initial value:=
{
0, 0, { (
DWORD_PTR)(__FILE__
": global interface table") }
}
static CRITICAL_SECTION_DEBUG critsect_debug
LIST_ENTRY ProcessLocksList
Definition at line 75 of file git.c.
◆ git_section
◆ std_git
◆ StdGlobalInterfaceTableImpl_Vtbl
| const IGlobalInterfaceTableVtbl StdGlobalInterfaceTableImpl_Vtbl |
|
static |
Initial value:=
{
}
static HRESULT WINAPI StdGlobalInterfaceTable_RevokeInterfaceFromGlobal(IGlobalInterfaceTable *iface, DWORD dwCookie)
static HRESULT WINAPI StdGlobalInterfaceTable_QueryInterface(IGlobalInterfaceTable *iface, REFIID riid, void **ppvObject)
static HRESULT WINAPI StdGlobalInterfaceTable_RegisterInterfaceInGlobal(IGlobalInterfaceTable *iface, IUnknown *pUnk, REFIID riid, DWORD *pdwCookie)
static ULONG WINAPI StdGlobalInterfaceTable_Release(IGlobalInterfaceTable *iface)
static ULONG WINAPI StdGlobalInterfaceTable_AddRef(IGlobalInterfaceTable *iface)
static HRESULT WINAPI StdGlobalInterfaceTable_GetInterfaceFromGlobal(IGlobalInterfaceTable *iface, DWORD dwCookie, REFIID riid, void **ppv)
Definition at line 293 of file git.c.
Referenced by GlobalInterfaceTable_CreateInstance().