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
1d5d2bd0
Commit
1d5d2bd0
authored
Oct 10, 2002
by
Ove Kaaven
Committed by
Alexandre Julliard
Oct 10, 2002
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Implement the CStdStubBuffer methods.
parent
bc54d785
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
173 additions
and
10 deletions
+173
-10
Makefile.in
dlls/rpcrt4/Makefile.in
+1
-0
cstub.c
dlls/rpcrt4/cstub.c
+162
-0
rpcrt4.spec
dlls/rpcrt4/rpcrt4.spec
+10
-10
No files found.
dlls/rpcrt4/Makefile.in
View file @
1d5d2bd0
...
...
@@ -12,6 +12,7 @@ SYMBOLFILE = $(MODULE).tmp.o
C_SRCS
=
\
cproxy.c
\
cstub.c
\
ndr_stubless.c
\
rpc_binding.c
\
rpc_message.c
\
...
...
dlls/rpcrt4/cstub.c
0 → 100644
View file @
1d5d2bd0
/*
* COM stub (CStdStubBuffer) implementation
*
* Copyright 2001 Ove Kven, TransGaming Technologies
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "windef.h"
#include "winbase.h"
#include "winerror.h"
#include "wine/obj_base.h"
#include "wine/obj_channel.h"
#include "rpcproxy.h"
#include "wine/debug.h"
#include "cpsf.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
ole
);
#define STUB_HEADER(This) (((CInterfaceStubHeader*)((This)->lpVtbl))[-1])
HRESULT
WINAPI
CStdStubBuffer_Construct
(
REFIID
riid
,
LPUNKNOWN
pUnkServer
,
CInterfaceStubVtbl
*
vtbl
,
LPPSFACTORYBUFFER
pPSFactory
,
LPRPCSTUBBUFFER
*
ppStub
)
{
CStdStubBuffer
*
This
;
TRACE
(
"(%p,%p,%p,%p)
\n
"
,
pUnkServer
,
vtbl
,
pPSFactory
,
ppStub
);
TRACE
(
"iid=%s
\n
"
,
debugstr_guid
(
vtbl
->
header
.
piid
));
TRACE
(
"vtbl=%p
\n
"
,
&
vtbl
->
Vtbl
);
if
(
!
IsEqualGUID
(
vtbl
->
header
.
piid
,
riid
))
{
ERR
(
"IID mismatch during stub creation
\n
"
);
return
RPC_E_UNEXPECTED
;
}
This
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
CStdStubBuffer
));
if
(
!
This
)
return
E_OUTOFMEMORY
;
This
->
lpVtbl
=
&
vtbl
->
Vtbl
;
This
->
RefCount
=
1
;
This
->
pvServerObject
=
pUnkServer
;
This
->
pPSFactory
=
pPSFactory
;
*
ppStub
=
(
LPRPCSTUBBUFFER
)
This
;
IPSFactoryBuffer_AddRef
(
pPSFactory
);
return
S_OK
;
}
HRESULT
WINAPI
CStdStubBuffer_QueryInterface
(
LPRPCSTUBBUFFER
iface
,
REFIID
riid
,
LPVOID
*
obj
)
{
ICOM_THIS
(
CStdStubBuffer
,
iface
);
TRACE
(
"(%p)->QueryInterface(%s,%p)
\n
"
,
This
,
debugstr_guid
(
riid
),
obj
);
if
(
IsEqualGUID
(
&
IID_IUnknown
,
riid
)
||
IsEqualGUID
(
&
IID_IRpcStubBuffer
,
riid
))
{
*
obj
=
This
;
This
->
RefCount
++
;
return
S_OK
;
}
return
E_NOINTERFACE
;
}
ULONG
WINAPI
CStdStubBuffer_AddRef
(
LPRPCSTUBBUFFER
iface
)
{
ICOM_THIS
(
CStdStubBuffer
,
iface
);
TRACE
(
"(%p)->AddRef()
\n
"
,
This
);
return
++
(
This
->
RefCount
);
}
ULONG
WINAPI
NdrCStdStubBuffer_Release
(
LPRPCSTUBBUFFER
iface
,
LPPSFACTORYBUFFER
pPSF
)
{
ICOM_THIS
(
CStdStubBuffer
,
iface
);
TRACE
(
"(%p)->Release()
\n
"
,
This
);
if
(
!--
(
This
->
RefCount
))
{
IUnknown_Release
(
This
->
pvServerObject
);
IPSFactoryBuffer_Release
(
This
->
pPSFactory
);
HeapFree
(
GetProcessHeap
(),
0
,
This
);
return
0
;
}
return
This
->
RefCount
;
}
HRESULT
WINAPI
CStdStubBuffer_Connect
(
LPRPCSTUBBUFFER
iface
,
LPUNKNOWN
lpUnkServer
)
{
ICOM_THIS
(
CStdStubBuffer
,
iface
);
TRACE
(
"(%p)->Connect(%p)
\n
"
,
This
,
lpUnkServer
);
This
->
pvServerObject
=
lpUnkServer
;
return
S_OK
;
}
void
WINAPI
CStdStubBuffer_Disconnect
(
LPRPCSTUBBUFFER
iface
)
{
ICOM_THIS
(
CStdStubBuffer
,
iface
);
TRACE
(
"(%p)->Disconnect()
\n
"
,
This
);
This
->
pvServerObject
=
NULL
;
}
HRESULT
WINAPI
CStdStubBuffer_Invoke
(
LPRPCSTUBBUFFER
iface
,
PRPCOLEMESSAGE
pMsg
,
LPRPCCHANNELBUFFER
pChannel
)
{
ICOM_THIS
(
CStdStubBuffer
,
iface
);
DWORD
dwPhase
=
STUB_UNMARSHAL
;
TRACE
(
"(%p)->Invoke(%p,%p)
\n
"
,
This
,
pMsg
,
pChannel
);
STUB_HEADER
(
This
).
pDispatchTable
[
pMsg
->
iMethod
](
iface
,
pChannel
,
(
PRPC_MESSAGE
)
pMsg
,
&
dwPhase
);
return
S_OK
;
}
LPRPCSTUBBUFFER
WINAPI
CStdStubBuffer_IsIIDSupported
(
LPRPCSTUBBUFFER
iface
,
REFIID
riid
)
{
ICOM_THIS
(
CStdStubBuffer
,
iface
);
TRACE
(
"(%p)->IsIIDSupported(%s)
\n
"
,
This
,
debugstr_guid
(
riid
));
return
IsEqualGUID
(
STUB_HEADER
(
This
).
piid
,
riid
)
?
iface
:
NULL
;
}
ULONG
WINAPI
CStdStubBuffer_CountRefs
(
LPRPCSTUBBUFFER
iface
)
{
ICOM_THIS
(
CStdStubBuffer
,
iface
);
TRACE
(
"(%p)->CountRefs()
\n
"
,
This
);
return
This
->
RefCount
;
}
HRESULT
WINAPI
CStdStubBuffer_DebugServerQueryInterface
(
LPRPCSTUBBUFFER
iface
,
LPVOID
*
ppv
)
{
ICOM_THIS
(
CStdStubBuffer
,
iface
);
TRACE
(
"(%p)->DebugServerQueryInterface(%p)
\n
"
,
This
,
ppv
);
return
S_OK
;
}
void
WINAPI
CStdStubBuffer_DebugServerRelease
(
LPRPCSTUBBUFFER
iface
,
LPVOID
pv
)
{
ICOM_THIS
(
CStdStubBuffer
,
iface
);
TRACE
(
"(%p)->DebugServerRelease(%p)
\n
"
,
This
,
pv
);
}
dlls/rpcrt4/rpcrt4.spec
View file @
1d5d2bd0
...
...
@@ -183,17 +183,17 @@ init RPCRT4_LibMain
@ stdcall UuidToStringA(ptr ptr) UuidToStringA
@ stdcall UuidToStringW(ptr ptr) UuidToStringW
@ stub CStdStubBuffer_QueryInterface
@ stub CStdStubBuffer_AddRef
@ stub CStdStubBuffer_Connect
@ stub CStdStubBuffer_Disconnect
@ stub CStdStubBuffer_Invoke
@ stub CStdStubBuffer_IsIIDSupported
@ stub CStdStubBuffer_CountRefs
@ stub CStdStubBuffer_DebugServerQueryInterface
@ stub CStdStubBuffer_DebugServerRelease
@ stdcall CStdStubBuffer_QueryInterface(ptr ptr) CStdStubBuffer_QueryInterface
@ stdcall CStdStubBuffer_AddRef(ptr) CStdStubBuffer_AddRef
@ stdcall CStdStubBuffer_Connect(ptr ptr) CStdStubBuffer_Connect
@ stdcall CStdStubBuffer_Disconnect(ptr) CStdStubBuffer_Disconnect
@ stdcall CStdStubBuffer_Invoke(ptr ptr ptr) CStdStubBuffer_Invoke
@ stdcall CStdStubBuffer_IsIIDSupported(ptr ptr) CStdStubBuffer_IsIIDSupported
@ stdcall CStdStubBuffer_CountRefs(ptr) CStdStubBuffer_CountRefs
@ stdcall CStdStubBuffer_DebugServerQueryInterface(ptr ptr) CStdStubBuffer_DebugServerQueryInterface
@ stdcall CStdStubBuffer_DebugServerRelease(ptr ptr) CStdStubBuffer_DebugServerRelease
@ stdcall NdrCStdStubBuffer_Release(ptr ptr) NdrCStdStubBuffer_Release
@ stub NdrCStdStubBuffer2_Release
@ stub NdrCStdStubBuffer_Release
@ stdcall IUnknown_QueryInterface_Proxy(ptr ptr ptr) IUnknown_QueryInterface_Proxy
@ stdcall IUnknown_AddRef_Proxy(ptr) IUnknown_AddRef_Proxy
...
...
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