#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) |
|
static HRESULT WINAPI | GITCF_QueryInterface (LPCLASSFACTORY iface, REFIID riid, LPVOID *ppv) |
|
static ULONG WINAPI | GITCF_AddRef (LPCLASSFACTORY iface) |
|
static ULONG WINAPI | GITCF_Release (LPCLASSFACTORY iface) |
|
static HRESULT WINAPI | GITCF_CreateInstance (LPCLASSFACTORY iface, LPUNKNOWN pUnk, REFIID riid, LPVOID *ppv) |
|
static HRESULT WINAPI | GITCF_LockServer (LPCLASSFACTORY iface, BOOL fLock) |
|
HRESULT | StdGlobalInterfaceTable_GetFactory (LPVOID *ppv) |
|
IGlobalInterfaceTable * | get_std_git (void) |
|
void | release_std_git (void) |
|
◆ COBJMACROS
Definition at line 29 of file git.c.
◆ StdGITEntry
◆ StdGlobalInterfaceTableImpl
◆ get_std_git()
Definition at line 362 of file git.c.
363{
365 {
367
369 if (!newGIT)
return NULL;
370
374
376 {
378 }
379 else
380 TRACE(
"Created the GIT at %p\n", newGIT);
381 }
382
384}
static void list_init(struct list_entry *head)
#define HeapFree(x, y, z)
static IGlobalInterfaceTable * std_git
static const IGlobalInterfaceTableVtbl StdGlobalInterfaceTableImpl_Vtbl
#define InterlockedCompareExchangePointer
IGlobalInterfaceTable IGlobalInterfaceTable_iface
Referenced by CoCreateInstanceEx(), and GITCF_CreateInstance().
◆ GITCF_AddRef()
static ULONG WINAPI GITCF_AddRef |
( |
LPCLASSFACTORY |
iface | ) |
|
|
static |
◆ GITCF_CreateInstance()
Definition at line 319 of file git.c.
321{
324 IGlobalInterfaceTable_Release(git);
326}
IGlobalInterfaceTable * get_std_git(void)
◆ GITCF_LockServer()
Definition at line 328 of file git.c.
329{
330 FIXME(
"(%d), stub!\n",fLock);
332}
◆ GITCF_QueryInterface()
Definition at line 296 of file git.c.
297{
301 {
304 }
306}
const GUID IID_IClassFactory
#define IsEqualIID(riid1, riid2)
◆ GITCF_Release()
static ULONG WINAPI GITCF_Release |
( |
LPCLASSFACTORY |
iface | ) |
|
|
static |
◆ impl_from_IGlobalInterfaceTable()
◆ release_std_git()
Definition at line 386 of file git.c.
387{
390
392
395 {
397
399 IStream_Release(
entry->stream);
401 }
402
404}
static void list_remove(struct list_entry *entry)
HRESULT WINAPI CoReleaseMarshalData(IStream *pStream)
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_GetFactory()
Definition at line 344 of file git.c.
345{
347 TRACE(
"Returning GIT classfactory\n");
349}
static IClassFactory git_classfactory
Referenced by DllGetClassObject().
◆ StdGlobalInterfaceTable_GetInterfaceFromGlobal()
Definition at line 249 of file git.c.
252{
257
259
261
264 WARN(
"Entry for cookie 0x%x not found\n", dwCookie);
267 }
268
270
272
274
276 WARN(
"Failed to clone stream with error 0x%08x\n",
hres);
278 }
279
280
283
285 WARN(
"Failed to unmarshal stream\n");
287 }
288
291}
HRESULT WINAPI CoUnmarshalInterface(IStream *pStream, REFIID riid, LPVOID *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
121
122
125 {
127 }
128 else
129 {
132 }
133
134
135 IGlobalInterfaceTable_AddRef(iface);
137}
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
◆ 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 fDeleteOnRelease, LPSTREAM *ppstm)
HRESULT WINAPI CoMarshalInterface(IStream *pStream, REFIID riid, IUnknown *pUnk, DWORD dwDestContext, 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(
"iface=%p, dwCookie=0x%x\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 = 0x%08x\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_classfactory
◆ git_section
◆ GITClassFactoryVtbl
const IClassFactoryVtbl GITClassFactoryVtbl |
|
static |
Initial value:= {
}
static HRESULT WINAPI GITCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pUnk, REFIID riid, LPVOID *ppv)
static ULONG WINAPI GITCF_AddRef(LPCLASSFACTORY iface)
static HRESULT WINAPI GITCF_LockServer(LPCLASSFACTORY iface, BOOL fLock)
static HRESULT WINAPI GITCF_QueryInterface(LPCLASSFACTORY iface, REFIID riid, LPVOID *ppv)
static ULONG WINAPI GITCF_Release(LPCLASSFACTORY iface)
Definition at line 334 of file git.c.
◆ 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 352 of file git.c.
Referenced by get_std_git().