28 #define USE_STUBLESS_PROXY 36 #include "ndr_types.h" 44 #define WRITE_CHAR(str, len, val) \ 45 do { if ((str)) (str)[(len)] = (val); (len)++; } while (0) 46 #define WRITE_SHORT(str, len, val) \ 47 do { if ((str)) *((short *)((str) + (len))) = (val); (len) += 2; } while (0) 48 #define WRITE_INT(str, len, val) \ 49 do { if ((str)) *((int *)((str) + (len))) = (val); (len) += 4; } while (0) 61 const unsigned char *
format =
proxy->ProcFormatString +
proxy->FormatStringOffset[3];
72 if (
header->Oi2Flags.HasExtensions)
77 *nb_params =
header->number_of_params;
83 unsigned int nb_params;
92 unsigned int nb_params;
137 ITypeInfo_GetRefTypeInfo(
typeinfo,
desc->hreftype, &refinfo);
138 ITypeInfo_GetTypeAttr(refinfo, &
attr);
145 ITypeInfo_ReleaseTypeAttr(refinfo,
attr);
146 ITypeInfo_Release(refinfo);
181 return sizeof(
void *);
188 for (
i = 0;
i <
desc->lpadesc->cDims;
i++)
189 size *=
desc->lpadesc->rgbounds[
i].cElements;
194 unsigned int size = 0;
198 ITypeInfo_GetRefTypeInfo(
typeinfo,
desc->hreftype, &refinfo);
199 ITypeInfo_GetTypeAttr(refinfo, &
attr);
201 ITypeInfo_ReleaseTypeAttr(refinfo,
attr);
202 ITypeInfo_Release(refinfo);
219 ITypeInfo_GetRefTypeInfo(
typeinfo, tdesc->hreftype, &refinfo);
220 ITypeInfo_GetTypeAttr(refinfo, &
attr);
229 ITypeInfo_ReleaseTypeAttr(refinfo,
attr);
230 ITypeInfo_Release(refinfo);
267 ITypeInfo_GetRefTypeInfo(
typeinfo, tdesc->hreftype, &refinfo);
268 ITypeInfo_GetTypeAttr(refinfo, &
attr);
270 switch (
attr->typekind)
287 FIXME(
"Unhandled kind %#x.\n",
attr->typekind);
292 ITypeInfo_ReleaseTypeAttr(refinfo,
attr);
293 ITypeInfo_Release(refinfo);
300 FIXME(
"Unhandled type %u.\n", tdesc->vt);
314 for (
i = 0;
i <
attr->cVars;
i++)
344 ITypeInfo_GetRefTypeInfo(
typeinfo,
desc->hreftype, &refinfo);
345 ITypeInfo_GetTypeAttr(refinfo, &
attr);
356 ITypeInfo_ReleaseTypeAttr(refinfo,
attr);
357 ITypeInfo_Release(refinfo);
376 ITypeInfo_GetRefTypeInfo(
typeinfo,
desc->hreftype, &refinfo);
377 ITypeInfo_GetTypeAttr(refinfo, &
attr);
384 ITypeInfo_ReleaseTypeAttr(refinfo,
attr);
385 ITypeInfo_Release(refinfo);
396 unsigned int struct_offset = 0;
397 unsigned char basetype;
402 for (
i = 0;
i <
attr->cVars;
i++)
405 tdesc = &
desc->elemdescVar.tdesc;
410 if ((struct_offset & 7) && !(
desc->oInst & 7))
412 else if ((struct_offset & 3) && !(
desc->oInst & 3))
414 else if ((struct_offset & 1) && !(
desc->oInst & 1))
452 ITypeInfo_GetRefTypeInfo(
typeinfo,
desc->hreftype, &refinfo);
453 ITypeInfo_GetTypeAttr(refinfo, &
attr);
458 ITypeInfo_ReleaseTypeAttr(refinfo,
attr);
459 ITypeInfo_Release(refinfo);
468 TYPEDESC *
desc,
unsigned char *
str,
size_t *
len)
470 unsigned char basetype;
495 ITypeInfo_GetRefTypeInfo(
typeinfo,
desc->hreftype, &refinfo);
496 ITypeInfo_GetTypeAttr(refinfo, &
attr);
501 ITypeInfo_ReleaseTypeAttr(refinfo,
attr);
502 ITypeInfo_Release(refinfo);
507 TYPEDESC *
desc,
unsigned char *
str,
size_t *
len)
520 ITypeInfo_GetRefTypeInfo(
typeinfo,
desc->hreftype, &refinfo);
521 ITypeInfo_GetTypeAttr(refinfo, &
attr);
526 ITypeInfo_ReleaseTypeAttr(refinfo,
attr);
527 ITypeInfo_Release(refinfo);
538 size_t pointer_layout_offset, pointer_layout, member_layout,
ref;
539 unsigned int struct_offset = 0;
545 pointer_layout_offset = *
len;
547 member_layout = *
len;
556 pointer_layout = *
len;
557 if (
str) *((
short *)(
str + pointer_layout_offset)) = pointer_layout - pointer_layout_offset;
559 for (
i = 0;
i <
attr->cVars;
i++)
570 for (
i = 0;
i <
attr->cVars;
i++)
573 tdesc = &
desc->elemdescVar.tdesc;
575 if (struct_offset !=
desc->oInst)
586 if (
str) *((
short *)(
str + pointer_layout + 2)) =
ref - (pointer_layout + 2);
593 if (
str) *((
short *)(
str + member_layout + 2)) =
ref - (member_layout + 2);
627 unsigned char basetype;
679 *
len += 2 +
sizeof(*iid);
694 if (
flags & IMPLTYPEFLAG_FDEFAULT)
702 ITypeInfo_GetRefTypeOfImplType(
typeinfo,
i, &reftype);
703 ITypeInfo_GetRefTypeInfo(
typeinfo, reftype, &refinfo);
704 ITypeInfo_GetTypeAttr(refinfo, &
attr);
706 ITypeInfo_ReleaseTypeAttr(refinfo,
attr);
707 ITypeInfo_Release(refinfo);
713 unsigned char basetype,
flags = 0;
721 ITypeInfo_GetRefTypeInfo(
typeinfo,
desc->hreftype, &refinfo);
722 ITypeInfo_GetTypeAttr(refinfo, &
attr);
724 switch (
attr->typekind)
753 FIXME(
"unhandled kind %#x\n",
attr->typekind);
758 ITypeInfo_ReleaseTypeAttr(refinfo,
attr);
759 ITypeInfo_Release(refinfo);
806 ITypeInfo_GetRefTypeInfo(
typeinfo,
desc->hreftype, &refinfo);
807 ITypeInfo_GetTypeAttr(refinfo, &
attr);
809 switch (
attr->typekind)
823 FIXME(
"unhandled kind %u\n",
attr->typekind);
829 ITypeInfo_ReleaseTypeAttr(refinfo,
attr);
830 ITypeInfo_Release(refinfo);
846 #if defined(__i386__) || defined(__arm__) 848 return sizeof(
void *);
851 return sizeof(
void *);
857 static const unsigned short IsIn = 0x0008;
858 static const unsigned short IsOut = 0x0010;
865 int is_out,
unsigned short *server_size,
unsigned short *
flags,
866 unsigned char *basetype, TYPEDESC **tfs_tdesc)
878 *server_size =
sizeof(
void *);
885 *server_size =
sizeof(
void *);
888 *server_size =
sizeof(
void *);
896 ITypeInfo_GetRefTypeInfo(
typeinfo, tdesc->hreftype, &refinfo);
897 ITypeInfo_GetTypeAttr(refinfo, &
attr);
899 switch (
attr->typekind)
903 if (!is_in && is_out)
904 *server_size =
sizeof(
void *);
909 if (!is_in && is_out)
910 *server_size =
attr->cbSizeInstance;
920 is_out, server_size,
flags, basetype, tfs_tdesc);
923 FIXME(
"unhandled kind %#x\n",
attr->typekind);
928 ITypeInfo_ReleaseTypeAttr(refinfo,
attr);
929 ITypeInfo_Release(refinfo);
934 if (!is_in && is_out)
945 int is_out,
unsigned short *server_size,
unsigned short *
flags,
946 unsigned char *basetype, TYPEDESC **tfs_tdesc)
957 TRACE(
"vt %u\n", tdesc->vt);
962 #if !defined(__i386__) && !defined(__arm__) 979 server_size,
flags, basetype, tfs_tdesc);
981 ITypeInfo_GetRefTypeInfo(
typeinfo, tdesc->hreftype, &refinfo);
982 ITypeInfo_GetTypeAttr(refinfo, &
attr);
984 switch (
attr->typekind)
991 #if defined(__i386__) || defined(__arm__) 994 if (
attr->cbSizeInstance <= 8)
1002 server_size,
flags, basetype, tfs_tdesc);
1005 FIXME(
"unhandled kind %#x\n",
attr->typekind);
1010 ITypeInfo_ReleaseTypeAttr(refinfo,
attr);
1011 ITypeInfo_Release(refinfo);
1018 FIXME(
"unhandled type %u\n", tdesc->vt);
1028 size_t *typelen,
unsigned char *
proc,
size_t *proclen, ELEMDESC *
desc,
1031 USHORT param_flags =
desc->paramdesc.wParamFlags;
1032 int is_in = param_flags & PARAMFLAG_FIN;
1033 int is_out = param_flags & PARAMFLAG_FOUT;
1034 TYPEDESC *tdesc = &
desc->tdesc, *tfs_tdesc;
1035 unsigned short server_size;
1037 unsigned char basetype;
1038 unsigned short flags;
1043 &basetype, &tfs_tdesc);
1049 server_size = (server_size + 7) / 8;
1050 if (server_size >= 8) server_size = 0;
1051 flags |= server_size << 13;
1069 WORD proc_idx,
unsigned char *
proc,
size_t *proclen)
1071 unsigned short stack_size = 2 *
sizeof(
void *);
1073 unsigned short float_mask = 0;
1074 unsigned char basetype;
1081 for (param_idx = 0; param_idx <
desc->cParams; param_idx++)
1099 for (param_idx = 0; param_idx <
desc->cParams && param_idx < 3; param_idx++)
1103 float_mask |= (1 << ((param_idx + 1) * 2));
1105 float_mask |= (2 << ((param_idx + 1) * 2));
1112 unsigned char *
type,
size_t *typelen,
unsigned char *
proc,
1113 size_t *proclen,
unsigned short *
offset)
1116 WORD proc_idx, param_idx;
1120 for (proc_idx = 3; proc_idx < parentfuncs; proc_idx++)
1123 offset[proc_idx - 3] = -1;
1126 for (proc_idx = 0; proc_idx <
funcs; proc_idx++)
1128 TRACE(
"Writing procedure %d.\n", proc_idx);
1134 offset[proc_idx + parentfuncs - 3] = *proclen;
1139 for (param_idx = 0; param_idx <
desc->cParams; param_idx++)
1141 TRACE(
"Writing parameter %d.\n", param_idx);
1161 WORD parentfuncs,
const unsigned char **type_ret,
1162 const unsigned char **proc_ret,
unsigned short **offset_ret)
1166 size_t typelen = tfs_size, proclen = 0;
1179 ERR(
"Failed to allocate format strings.\n");
1220 hr = ITypeInfo_GetTypeAttr(*
typeinfo, &typeattr);
1223 typekind = typeattr->typekind;
1224 ITypeInfo_ReleaseTypeAttr(*
typeinfo, typeattr);
1227 hr = ITypeInfo_GetRefTypeOfImplType(*
typeinfo, -1, &reftype);
1231 hr = ITypeInfo_GetRefTypeInfo(*
typeinfo, reftype, &real_typeinfo);
1243 hr = ITypeLib_GetLibAttr(
typelib, &libattr);
1249 syskind = libattr->syskind;
1250 ITypeLib_ReleaseTLibAttr(
typelib, libattr);
1253 hr = ITypeInfo_GetTypeAttr(*
typeinfo, &typeattr);
1256 *
funcs = typeattr->cFuncs;
1257 *parentfuncs = typeattr->cbSizeVft / (syskind ==
SYS_WIN64 ? 8 : 4) - *
funcs;
1258 ITypeInfo_ReleaseTypeAttr(*
typeinfo, typeattr);
1260 hr = ITypeInfo_GetRefTypeOfImplType(*
typeinfo, 0, &reftype);
1263 hr = ITypeInfo_GetRefTypeInfo(*
typeinfo, reftype, &parentinfo);
1266 hr = ITypeInfo_GetTypeAttr(parentinfo, &typeattr);
1269 *parentiid = typeattr->guid;
1270 ITypeInfo_ReleaseTypeAttr(parentinfo, typeattr);
1271 ITypeInfo_Release(parentinfo);
1280 desc->Version = 0x50002;
1300 TRACE(
"(%p) decreasing refs to %d\n",
proxy, refcount);
1304 if (
proxy->proxy.pChannel)
1305 IRpcProxyBuffer_Disconnect(&
proxy->proxy.IRpcProxyBuffer_iface);
1306 if (
proxy->proxy.base_object)
1307 IUnknown_Release(
proxy->proxy.base_object);
1308 if (
proxy->proxy.base_proxy)
1309 IRpcProxyBuffer_Release(
proxy->proxy.base_proxy);
1337 proxy->proxy.PVtbl =
proxy->proxy_vtbl->Vtbl;
1338 proxy->proxy.RefCount = 1;
1339 proxy->proxy.piid =
proxy->proxy_vtbl->header.piid;
1340 proxy->proxy.pUnkOuter = outer;
1345 (
void **)&
proxy->proxy.base_object);
1349 *proxy_buffer = &
proxy->proxy.IRpcProxyBuffer_iface;
1364 TRACE(
"typeinfo %p, outer %p, iid %s, proxy_buffer %p, out %p.\n",
1371 if (!(
proxy = heap_alloc_zero(
sizeof(*
proxy))))
1373 ERR(
"Failed to allocate proxy object.\n");
1378 proxy->proxy_info.pStubDesc = &
proxy->stub_desc;
1380 proxy->proxy_vtbl = heap_alloc_zero(
sizeof(
proxy->proxy_vtbl->header) + (
funcs + parentfuncs) *
sizeof(
void *));
1381 if (!
proxy->proxy_vtbl)
1383 ERR(
"Failed to allocate proxy vtbl.\n");
1387 proxy->proxy_vtbl->header.pStublessProxyInfo = &
proxy->proxy_info;
1389 proxy->proxy_vtbl->header.piid = &
proxy->iid;
1392 proxy->proxy_vtbl->Vtbl[parentfuncs +
i] = (
void *)-1;
1395 &
proxy->proxy_info.ProcFormatString, &
proxy->offset_table);
1402 proxy->proxy_info.FormatStringOffset = &
proxy->offset_table[-3];
1433 TRACE(
"(%p) decreasing refs to %d\n",
stub, refcount);
1439 IRpcStubBuffer_Disconnect(iface);
1441 if (
stub->stub.base_stub)
1443 IRpcStubBuffer_Release(
stub->stub.base_stub);
1462 hr = IUnknown_QueryInterface(
server,
stub->stub_vtbl.header.piid,
1463 (
void **)&
stub->stub.stub_buffer.pvServerObject);
1466 WARN(
"Failed to get interface %s, hr %#x.\n",
1468 stub->stub.stub_buffer.pvServerObject =
server;
1479 IUnknown_Release(
stub->stub.stub_buffer.pvServerObject);
1484 stub->stub.stub_buffer.lpVtbl = &
stub->stub_vtbl.Vtbl;
1485 stub->stub.stub_buffer.RefCount = 1;
1499 TRACE(
"typeinfo %p, iid %s, server %p, stub_buffer %p.\n",
1506 if (!(
stub = heap_alloc_zero(
sizeof(*
stub))))
1508 ERR(
"Failed to allocate stub object.\n");
1513 stub->server_info.pStubDesc = &
stub->stub_desc;
1516 &
stub->server_info.ProcString, &
stub->offset_table);
1522 stub->server_info.FmtStringOffset = &
stub->offset_table[-3];
1525 stub->stub_vtbl.header.piid = &
stub->iid;
1526 stub->stub_vtbl.header.pServerInfo = &
stub->server_info;
1527 stub->stub_vtbl.header.DispatchTableCount =
funcs + parentfuncs;
1532 for (
i = 3;
i < parentfuncs;
i++)
1536 stub->stub_vtbl.header.pDispatchTable = &
stub->dispatch_table[-3];
static BOOL type_needs_pointer_deref(ITypeInfo *typeinfo, TYPEDESC *desc)
static const unsigned short MustSize
struct tagVARIANT VARIANT
LONG WINAPI NdrStubCall2(struct IRpcStubBuffer *pThis, struct IRpcChannelBuffer *pChannel, PRPC_MESSAGE pRpcMsg, DWORD *pdwStubPhase)
static void write_simple_struct_tfs(ITypeInfo *typeinfo, unsigned char *str, size_t *len, TYPEATTR *attr)
static size_t write_type_tfs(ITypeInfo *typeinfo, unsigned char *str, size_t *len, TYPEDESC *desc, BOOL toplevel, BOOL onstack)
static rfbScreenInfoPtr server
static HRESULT get_iface_info(ITypeInfo **typeinfo, WORD *funcs, WORD *parentfuncs, GUID *parentiid)
BOOL fill_delegated_proxy_table(IUnknownVtbl *vtbl, DWORD num) DECLSPEC_HIDDEN
static HRESULT build_format_strings(ITypeInfo *typeinfo, WORD funcs, WORD parentfuncs, const unsigned char **type_ret, const unsigned char **proc_ret, unsigned short **offset_ret)
static ULONG WINAPI typelib_stub_Release(IRpcStubBuffer *iface)
cstdstubbuffer_delegating_t stub
GLuint GLuint GLsizei count
static HRESULT write_param_fs(ITypeInfo *typeinfo, unsigned char *type, size_t *typelen, unsigned char *proc, size_t *proclen, ELEMDESC *desc, BOOL is_return, unsigned short *stack_offset)
static size_t write_array_tfs(ITypeInfo *typeinfo, unsigned char *str, size_t *len, ARRAYDESC *desc)
static void init_stub_desc(MIDL_STUB_DESC *desc)
static ITypeLib * typelib
unsigned short * offset_table
static HRESULT typelib_proxy_init(struct typelib_proxy *proxy, IUnknown *outer, ULONG count, const GUID *parentiid, IRpcProxyBuffer **proxy_buffer, void **out)
static HRESULT write_iface_fs(ITypeInfo *typeinfo, WORD funcs, WORD parentfuncs, unsigned char *type, size_t *typelen, unsigned char *proc, size_t *proclen, unsigned short *offset)
static const unsigned char * get_type_format_string(size_t *size)
void(__RPC_STUB * PRPC_STUB_FUNCTION)(IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *pdwStubPhase)
#define WRITE_CHAR(str, len, val)
static const unsigned short IsBasetype
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
static void * heap_alloc(size_t len)
void WINAPI StdProxy_Disconnect(IRpcProxyBuffer *iface)
static const NDR_PARAM_OIF * get_ndr_types_params(unsigned int *nb_params)
IUnknownVtbl * get_delegating_vtbl(DWORD num_methods) DECLSPEC_HIDDEN
GLenum const GLfloat * params
static const WCHAR desc[]
HRESULT WINAPI CreateProxyFromTypeInfo(ITypeInfo *typeinfo, IUnknown *outer, REFIID iid, IRpcProxyBuffer **proxy_buffer, void **out)
PRPC_STUB_FUNCTION * dispatch_table
static unsigned char get_struct_member_fc(ITypeInfo *typeinfo, TYPEDESC *tdesc)
unsigned short * offset_table
ULONG WINAPI StdProxy_AddRef(IRpcProxyBuffer *iface)
#define WRITE_SHORT(str, len, val)
static const unsigned short MustFree
#define FC_ALLOCED_ON_STACK
BOOL fill_stubless_table(IUnknownVtbl *vtbl, DWORD num)
static HRESULT get_param_info(ITypeInfo *typeinfo, TYPEDESC *tdesc, int is_in, int is_out, unsigned short *server_size, unsigned short *flags, unsigned char *basetype, TYPEDESC **tfs_tdesc)
HRESULT WINAPI StdProxy_Connect(IRpcProxyBuffer *iface, IRpcChannelBuffer *pChannel)
static size_t write_pointer_tfs(ITypeInfo *typeinfo, unsigned char *str, size_t *len, TYPEDESC *desc, BOOL toplevel, BOOL onstack)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
CInterfaceProxyHeader header
static ULONG WINAPI typelib_proxy_Release(IRpcProxyBuffer *iface)
struct _NDR_PROC_HEADER NDR_PROC_HEADER
static unsigned stack_offset(compile_ctx_t *ctx)
const IRpcStubBufferVtbl CStdStubBuffer_Vtbl
static HRESULT typelib_stub_init(struct typelib_stub *stub, IUnknown *server, const GUID *parentiid, IRpcStubBuffer **stub_buffer)
MIDL_SERVER_INFO server_info
static unsigned short get_tfs_offset(int param)
static unsigned char get_basetype(ITypeInfo *typeinfo, TYPEDESC *desc)
static struct __wine_debug_functions funcs
static void get_default_iface(ITypeInfo *typeinfo, WORD count, GUID *iid)
static BOOL type_pointer_is_iface(ITypeInfo *typeinfo, TYPEDESC *tdesc)
const unsigned char * pFormatTypes
static REFPROPVARIANT PROPVAR_CHANGE_FLAGS VARTYPE vt
#define Oi_OBJ_USE_V2_INTERPRETER
static const IRpcProxyBufferVtbl typelib_proxy_vtbl
#define FC_SIMPLE_POINTER
static size_t write_complex_struct_pointer_ref(ITypeInfo *typeinfo, TYPEDESC *desc, unsigned char *str, size_t *len)
void __RPC_STUB NdrStubForwardingFunction(IRpcStubBuffer *iface, IRpcChannelBuffer *pChannel, PRPC_MESSAGE pMsg, DWORD *pdwStubPhase)
#define InterlockedDecrement
#define memcpy(s1, s2, n)
void *WINAPI NdrOleAllocate(SIZE_T Size)
static unsigned short write_oleaut_tfs(VARTYPE vt)
static const unsigned short IsByValue
static size_t write_ip_tfs(unsigned char *str, size_t *len, const GUID *iid)
const ExtendedProxyFileInfo ndr_types_ProxyFileInfo
static const unsigned short IsReturn
static BOOL type_is_non_iface_pointer(ITypeInfo *typeinfo, TYPEDESC *desc)
const PCInterfaceProxyVtblList * pProxyVtblList
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static const MIDL_STUBLESS_PROXY_INFO * get_ndr_types_proxy_info(void)
struct _NDR_PROC_HEADER_RPC NDR_PROC_HEADER_RPC
HRESULT create_proxy(REFIID iid, IUnknown *pUnkOuter, IRpcProxyBuffer **pproxy, void **ppv) DECLSPEC_HIDDEN
void WINAPI NdrOleFree(void *NodeToFree)
#define WRITE_INT(str, len, val)
static const unsigned short IsIn
CInterfaceStubVtbl stub_vtbl
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
static size_t write_struct_tfs(ITypeInfo *typeinfo, unsigned char *str, size_t *len, TYPEATTR *attr)
WINE_DEFAULT_DEBUG_CHANNEL(ole)
static void write_proc_func_header(ITypeInfo *typeinfo, FUNCDESC *desc, WORD proc_idx, unsigned char *proc, size_t *proclen)
static void write_struct_members(ITypeInfo *typeinfo, unsigned char *str, size_t *len, TYPEATTR *attr)
static unsigned int type_memsize(ITypeInfo *typeinfo, TYPEDESC *desc)
static const unsigned short IsOut
static unsigned char get_array_fc(ITypeInfo *typeinfo, TYPEDESC *desc)
HRESULT WINAPI StdProxy_QueryInterface(IRpcProxyBuffer *iface, REFIID riid, void **obj)
static HRESULT get_param_pointer_info(ITypeInfo *typeinfo, TYPEDESC *tdesc, int is_in, int is_out, unsigned short *server_size, unsigned short *flags, unsigned char *basetype, TYPEDESC **tfs_tdesc)
GLuint GLuint GLsizei GLenum type
static unsigned short get_stack_size(ITypeInfo *typeinfo, TYPEDESC *desc)
void release_delegating_vtbl(IUnknownVtbl *vtbl) DECLSPEC_HIDDEN
static void write_complex_struct_pointer_layout(ITypeInfo *typeinfo, TYPEDESC *desc, unsigned char *str, size_t *len)
PMIDL_STUB_DESC pStubDesc
static unsigned char get_struct_fc(ITypeInfo *typeinfo, TYPEATTR *attr)
const USER_MARSHAL_ROUTINE_QUADRUPLE * aUserMarshalQuadruple
static OLECHAR OLECHAR *static SYSKIND
MIDL_STUBLESS_PROXY_INFO proxy_info
CInterfaceProxyVtbl * proxy_vtbl
HRESULT WINAPI CreateStubFromTypeInfo(ITypeInfo *typeinfo, REFIID iid, IUnknown *server, IRpcStubBuffer **stub_buffer)
static void write_complex_struct_tfs(ITypeInfo *typeinfo, unsigned char *str, size_t *len, TYPEATTR *attr)
const IRpcStubBufferVtbl CStdStubBuffer_Delegating_Vtbl
static const unsigned short IsSimpleRef
static BOOL heap_free(void *mem)
HRESULT create_stub(REFIID iid, IUnknown *pUnk, IRpcStubBuffer **ppstub) DECLSPEC_HIDDEN