Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
a22c767e
Commit
a22c767e
authored
May 13, 2005
by
Mike McCormack
Committed by
Alexandre Julliard
May 13, 2005
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove function prototypes.
parent
ed848598
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
89 additions
and
66 deletions
+89
-66
git.c
dlls/ole32/git.c
+89
-66
No files found.
dlls/ole32/git.c
View file @
a22c767e
...
...
@@ -83,27 +83,6 @@ typedef struct StdGlobalInterfaceTableImpl
void
*
StdGlobalInterfaceTableInstance
;
/* IUnknown */
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
);
/* IGlobalInterfaceTable */
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
);
/* Virtual function table */
static
IGlobalInterfaceTableVtbl
StdGlobalInterfaceTableImpl_Vtbl
=
{
StdGlobalInterfaceTable_QueryInterface
,
StdGlobalInterfaceTable_AddRef
,
StdGlobalInterfaceTable_Release
,
StdGlobalInterfaceTable_RegisterInterfaceInGlobal
,
StdGlobalInterfaceTable_RevokeInterfaceFromGlobal
,
StdGlobalInterfaceTable_GetInterfaceFromGlobal
};
static
CRITICAL_SECTION
git_section
;
static
CRITICAL_SECTION_DEBUG
critsect_debug
=
{
...
...
@@ -114,28 +93,6 @@ static CRITICAL_SECTION_DEBUG critsect_debug =
static
CRITICAL_SECTION
git_section
=
{
&
critsect_debug
,
-
1
,
0
,
0
,
0
,
0
};
/***
* Let's go! Here is the constructor and destructor for the class.
*
*/
/** This function constructs the GIT. It should only be called once **/
void
*
StdGlobalInterfaceTable_Construct
()
{
StdGlobalInterfaceTableImpl
*
newGIT
;
newGIT
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
StdGlobalInterfaceTableImpl
));
if
(
newGIT
==
0
)
return
newGIT
;
newGIT
->
lpVtbl
=
&
StdGlobalInterfaceTableImpl_Vtbl
;
newGIT
->
ref
=
1
;
/* Initialise the reference count */
newGIT
->
firstEntry
=
NULL
;
/* we start with an empty table */
newGIT
->
lastEntry
=
NULL
;
newGIT
->
nextCookie
=
0xf100
;
/* that's where windows starts, so that's where we start */
TRACE
(
"Created the GIT at %p
\n
"
,
newGIT
);
return
(
void
*
)
newGIT
;
}
/** This destroys it again. It should revoke all the held interfaces first **/
void
StdGlobalInterfaceTable_Destroy
(
void
*
self
)
{
TRACE
(
"(%p)
\n
"
,
self
);
...
...
@@ -149,7 +106,9 @@ void StdGlobalInterfaceTable_Destroy(void* self) {
* A helper function to traverse the list and find the entry that matches the cookie.
* Returns NULL if not found
*/
StdGITEntry
*
StdGlobalInterfaceTable_FindEntry
(
IGlobalInterfaceTable
*
iface
,
DWORD
cookie
)
{
static
StdGITEntry
*
StdGlobalInterfaceTable_FindEntry
(
IGlobalInterfaceTable
*
iface
,
DWORD
cookie
)
{
StdGlobalInterfaceTableImpl
*
const
self
=
(
StdGlobalInterfaceTableImpl
*
)
iface
;
StdGITEntry
*
e
;
...
...
@@ -174,34 +133,39 @@ StdGITEntry* StdGlobalInterfaceTable_FindEntry(IGlobalInterfaceTable* iface, DWO
* Here's the boring boilerplate stuff for IUnknown
*/
HRESULT
WINAPI
StdGlobalInterfaceTable_QueryInterface
(
IGlobalInterfaceTable
*
iface
,
REFIID
riid
,
void
**
ppvObject
)
{
StdGlobalInterfaceTableImpl
*
const
self
=
(
StdGlobalInterfaceTableImpl
*
)
iface
;
static
HRESULT
WINAPI
StdGlobalInterfaceTable_QueryInterface
(
IGlobalInterfaceTable
*
iface
,
REFIID
riid
,
void
**
ppvObject
)
{
/* Make sure silly coders can't crash us */
if
(
ppvObject
==
0
)
return
E_INVALIDARG
;
*
ppvObject
=
0
;
/* assume we don't have the interface */
/* Do we implement that interface? */
if
(
IsEqualIID
(
&
IID_IUnknown
,
riid
)
)
{
*
ppvObject
=
(
IGlobalInterfaceTable
*
)
self
;
}
else
if
(
IsEqualIID
(
&
IID_IGlobalInterfaceTable
,
riid
))
{
*
ppvObject
=
(
IGlobalInterfaceTable
*
)
self
;
}
else
return
E_NOINTERFACE
;
if
(
IsEqualIID
(
&
IID_IUnknown
,
riid
)
||
IsEqualIID
(
&
IID_IGlobalInterfaceTable
,
riid
))
*
ppvObject
=
iface
;
else
return
E_NOINTERFACE
;
/* Now inc the refcount */
Std
GlobalInterfaceTable_AddRef
(
iface
);
I
GlobalInterfaceTable_AddRef
(
iface
);
return
S_OK
;
}
ULONG
WINAPI
StdGlobalInterfaceTable_AddRef
(
IGlobalInterfaceTable
*
iface
)
{
static
ULONG
WINAPI
StdGlobalInterfaceTable_AddRef
(
IGlobalInterfaceTable
*
iface
)
{
StdGlobalInterfaceTableImpl
*
const
self
=
(
StdGlobalInterfaceTableImpl
*
)
iface
;
/* InterlockedIncrement(&self->ref); */
return
self
->
ref
;
}
ULONG
WINAPI
StdGlobalInterfaceTable_Release
(
IGlobalInterfaceTable
*
iface
)
{
static
ULONG
WINAPI
StdGlobalInterfaceTable_Release
(
IGlobalInterfaceTable
*
iface
)
{
StdGlobalInterfaceTableImpl
*
const
self
=
(
StdGlobalInterfaceTableImpl
*
)
iface
;
/* InterlockedDecrement(&self->ref); */
...
...
@@ -218,12 +182,16 @@ ULONG WINAPI StdGlobalInterfaceTable_Release(IGlobalInterfaceTable* iface) {
* Now implement the actual IGlobalInterfaceTable interface
*/
HRESULT
WINAPI
StdGlobalInterfaceTable_RegisterInterfaceInGlobal
(
IGlobalInterfaceTable
*
iface
,
IUnknown
*
pUnk
,
REFIID
riid
,
DWORD
*
pdwCookie
)
{
static
HRESULT
WINAPI
StdGlobalInterfaceTable_RegisterInterfaceInGlobal
(
IGlobalInterfaceTable
*
iface
,
IUnknown
*
pUnk
,
REFIID
riid
,
DWORD
*
pdwCookie
)
{
StdGlobalInterfaceTableImpl
*
const
self
=
(
StdGlobalInterfaceTableImpl
*
)
iface
;
IStream
*
stream
=
NULL
;
HRESULT
hres
;
StdGITEntry
*
entry
;
static
const
LARGE_INTEGER
zero
;
LARGE_INTEGER
zero
;
TRACE
(
"iface=%p, pUnk=%p, riid=%s, pdwCookie=0x%p
\n
"
,
iface
,
pUnk
,
debugstr_guid
(
riid
),
pdwCookie
);
...
...
@@ -241,6 +209,7 @@ HRESULT WINAPI StdGlobalInterfaceTable_RegisterInterfaceInGlobal(IGlobalInterfac
return
hres
;
}
zero
.
QuadPart
=
0
;
IStream_Seek
(
stream
,
zero
,
SEEK_SET
,
NULL
);
entry
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
StdGITEntry
));
...
...
@@ -269,7 +238,10 @@ HRESULT WINAPI StdGlobalInterfaceTable_RegisterInterfaceInGlobal(IGlobalInterfac
return
S_OK
;
}
HRESULT
WINAPI
StdGlobalInterfaceTable_RevokeInterfaceFromGlobal
(
IGlobalInterfaceTable
*
iface
,
DWORD
dwCookie
)
{
static
HRESULT
WINAPI
StdGlobalInterfaceTable_RevokeInterfaceFromGlobal
(
IGlobalInterfaceTable
*
iface
,
DWORD
dwCookie
)
{
StdGlobalInterfaceTableImpl
*
const
self
=
(
StdGlobalInterfaceTableImpl
*
)
iface
;
StdGITEntry
*
entry
;
HRESULT
hr
;
...
...
@@ -303,7 +275,11 @@ HRESULT WINAPI StdGlobalInterfaceTable_RevokeInterfaceFromGlobal(IGlobalInterfac
return
S_OK
;
}
HRESULT
WINAPI
StdGlobalInterfaceTable_GetInterfaceFromGlobal
(
IGlobalInterfaceTable
*
iface
,
DWORD
dwCookie
,
REFIID
riid
,
void
**
ppv
)
{
static
HRESULT
WINAPI
StdGlobalInterfaceTable_GetInterfaceFromGlobal
(
IGlobalInterfaceTable
*
iface
,
DWORD
dwCookie
,
REFIID
riid
,
void
**
ppv
)
{
StdGITEntry
*
entry
;
HRESULT
hres
;
LARGE_INTEGER
move
;
...
...
@@ -341,18 +317,33 @@ HRESULT WINAPI StdGlobalInterfaceTable_GetInterfaceFromGlobal(IGlobalInterfaceTa
/* Classfactory definition - despite what MSDN says, some programs need this */
static
HRESULT
WINAPI
GITCF_QueryInterface
(
LPCLASSFACTORY
iface
,
REFIID
riid
,
LPVOID
*
ppv
)
{
static
HRESULT
WINAPI
GITCF_QueryInterface
(
LPCLASSFACTORY
iface
,
REFIID
riid
,
LPVOID
*
ppv
)
{
*
ppv
=
NULL
;
if
(
IsEqualIID
(
riid
,
&
IID_IUnknown
)
||
IsEqualIID
(
riid
,
&
IID_IGlobalInterfaceTable
))
{
if
(
IsEqualIID
(
riid
,
&
IID_IUnknown
)
||
IsEqualIID
(
riid
,
&
IID_IGlobalInterfaceTable
))
{
*
ppv
=
(
LPVOID
)
iface
;
return
S_OK
;
}
return
E_NOINTERFACE
;
}
static
ULONG
WINAPI
GITCF_AddRef
(
LPCLASSFACTORY
iface
)
{
return
2
;
}
static
ULONG
WINAPI
GITCF_Release
(
LPCLASSFACTORY
iface
)
{
return
1
;
}
static
HRESULT
WINAPI
GITCF_CreateInstance
(
LPCLASSFACTORY
iface
,
LPUNKNOWN
pUnk
,
REFIID
riid
,
LPVOID
*
ppv
)
{
static
ULONG
WINAPI
GITCF_AddRef
(
LPCLASSFACTORY
iface
)
{
return
2
;
}
static
ULONG
WINAPI
GITCF_Release
(
LPCLASSFACTORY
iface
)
{
return
1
;
}
static
HRESULT
WINAPI
GITCF_CreateInstance
(
LPCLASSFACTORY
iface
,
LPUNKNOWN
pUnk
,
REFIID
riid
,
LPVOID
*
ppv
)
{
if
(
IsEqualIID
(
riid
,
&
IID_IGlobalInterfaceTable
))
{
if
(
StdGlobalInterfaceTableInstance
==
NULL
)
StdGlobalInterfaceTableInstance
=
StdGlobalInterfaceTable_Construct
();
...
...
@@ -363,7 +354,8 @@ static HRESULT WINAPI GITCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pUnk,
return
E_NOINTERFACE
;
}
static
HRESULT
WINAPI
GITCF_LockServer
(
LPCLASSFACTORY
iface
,
BOOL
fLock
)
{
static
HRESULT
WINAPI
GITCF_LockServer
(
LPCLASSFACTORY
iface
,
BOOL
fLock
)
{
FIXME
(
"(%d), stub!
\n
"
,
fLock
);
return
S_OK
;
}
...
...
@@ -375,10 +367,41 @@ static IClassFactoryVtbl GITClassFactoryVtbl = {
GITCF_CreateInstance
,
GITCF_LockServer
};
static
IClassFactoryVtbl
*
PGITClassFactoryVtbl
=
&
GITClassFactoryVtbl
;
HRESULT
StdGlobalInterfaceTable_GetFactory
(
LPVOID
*
ppv
)
{
HRESULT
StdGlobalInterfaceTable_GetFactory
(
LPVOID
*
ppv
)
{
*
ppv
=
&
PGITClassFactoryVtbl
;
TRACE
(
"Returning GIT classfactory
\n
"
);
return
S_OK
;
}
/* Virtual function table */
static
IGlobalInterfaceTableVtbl
StdGlobalInterfaceTableImpl_Vtbl
=
{
StdGlobalInterfaceTable_QueryInterface
,
StdGlobalInterfaceTable_AddRef
,
StdGlobalInterfaceTable_Release
,
StdGlobalInterfaceTable_RegisterInterfaceInGlobal
,
StdGlobalInterfaceTable_RevokeInterfaceFromGlobal
,
StdGlobalInterfaceTable_GetInterfaceFromGlobal
};
/** This function constructs the GIT. It should only be called once **/
void
*
StdGlobalInterfaceTable_Construct
()
{
StdGlobalInterfaceTableImpl
*
newGIT
;
newGIT
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
StdGlobalInterfaceTableImpl
));
if
(
newGIT
==
0
)
return
newGIT
;
newGIT
->
lpVtbl
=
&
StdGlobalInterfaceTableImpl_Vtbl
;
newGIT
->
ref
=
1
;
/* Initialise the reference count */
newGIT
->
firstEntry
=
NULL
;
/* we start with an empty table */
newGIT
->
lastEntry
=
NULL
;
newGIT
->
nextCookie
=
0xf100
;
/* that's where windows starts, so that's where we start */
TRACE
(
"Created the GIT at %p
\n
"
,
newGIT
);
return
(
void
*
)
newGIT
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment