29#define ALIGNED_LENGTH(_Len, _Align) (((_Len)+(_Align))&~(_Align))
30#define ALIGNED_POINTER(_Ptr, _Align) ((LPVOID)ALIGNED_LENGTH((ULONG_PTR)(_Ptr), _Align))
31#define ALIGN_LENGTH(_Len, _Align) _Len = ALIGNED_LENGTH(_Len, _Align)
32#define ALIGN_POINTER(_Ptr, _Align) _Ptr = ALIGNED_POINTER(_Ptr, _Align)
41 loword =
"MSHCTX_LOCAL";
43 case MSHCTX_NOSHAREDMEM:
44 loword =
"MSHCTX_NOSHAREDMEM";
46 case MSHCTX_DIFFERENTMACHINE:
47 loword =
"MSHCTX_DIFFERENTMACHINE";
50 loword =
"MSHCTX_INPROC";
58 return wine_dbg_sprintf(
"MAKELONG(%s, NDR_LOCAL_DATA_REPRESENTATION)", loword);
65 if (
LOWORD(*pFlags) == MSHCTX_DIFFERENTMACHINE)
67 ERR(
"can't remote a local handle\n");
73 return StartingSize +
sizeof(RemotableHandle);
78 RemotableHandle *remhandle;
79 if (
LOWORD(*pFlags) == MSHCTX_DIFFERENTMACHINE)
81 ERR(
"can't remote a local handle\n");
87 remhandle = (RemotableHandle *)
pBuffer;
88 remhandle->fContext = WDT_INPROC_CALL;
90 return pBuffer +
sizeof(RemotableHandle);
95 RemotableHandle *remhandle;
98 remhandle = (RemotableHandle *)
pBuffer;
99 if (remhandle->fContext != WDT_INPROC_CALL)
102 return pBuffer +
sizeof(RemotableHandle);
110#define IMPL_WIREM_HANDLE(type) \
111 ULONG __RPC_USER type##_UserSize(ULONG *pFlags, ULONG StartingSize, type *handle) \
113 TRACE("%s, %lu, %p.\n", debugstr_user_flags(pFlags), StartingSize, handle); \
114 return handle_UserSize(pFlags, StartingSize, (HANDLE *)handle); \
117 unsigned char * __RPC_USER type##_UserMarshal(ULONG *pFlags, unsigned char *pBuffer, type *handle) \
119 TRACE("%s, %p, &%p.\n", debugstr_user_flags(pFlags), pBuffer, *handle); \
120 return handle_UserMarshal(pFlags, pBuffer, (HANDLE *)handle); \
123 unsigned char * __RPC_USER type##_UserUnmarshal(ULONG *pFlags, unsigned char *pBuffer, type *handle) \
125 TRACE("%s, %p, %p.\n", debugstr_user_flags(pFlags), pBuffer, handle); \
126 return handle_UserUnmarshal(pFlags, pBuffer, (HANDLE *)handle); \
129 void __RPC_USER type##_UserFree(ULONG *pFlags, type *handle) \
131 TRACE("%s, &%p.\n", debugstr_user_flags(pFlags), *handle); \
132 handle_UserFree(pFlags, (HANDLE *)handle); \
172 if ((*pCF >= 0xc000) && (
LOWORD(*pFlags) == MSHCTX_DIFFERENTMACHINE))
215 if ((*pCF >= 0xc000) && (
LOWORD(*pFlags) == MSHCTX_DIFFERENTMACHINE))
280 if (fContext == WDT_INPROC_CALL)
285 else if (fContext == WDT_REMOTE_CALL)
476 if (
context == WDT_INPROC_CALL)
481 else if (
context == WDT_REMOTE_CALL)
649 if (
LOWORD(*pFlags) == MSHCTX_INPROC)
691 if (
LOWORD(*pFlags) == MSHCTX_INPROC)
693 if (
sizeof(*phGlobal) == 8)
709 const unsigned char *
memory;
758 if (((fContext == WDT_INPROC_CALL) && (
sizeof(*phGlobal) < 8)) ||
759 ((fContext == WDT_INPROC64_CALL) && (
sizeof(*phGlobal) == 8)))
764 else if (fContext == WDT_REMOTE_CALL)
834 if (
LOWORD(*pFlags) != MSHCTX_INPROC && *phGlobal)
884 DWORD marshal_size = 0;
890 if (
FAILED(
hr))
return StartingSize;
893 StartingSize += 2 *
sizeof(
DWORD);
894 return StartingSize + marshal_size;
935 IStream_Release(stm);
951 IStream_Release(stm);
1011 IStream_Release(stm);
1015 if (orig) IUnknown_Release(orig);
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
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)
HRESULT WINAPI CoUnmarshalInterface(IStream *stream, REFIID riid, void **ppv)
HRESULT WINAPI CoGetMarshalSizeMax(ULONG *size, REFIID riid, IUnknown *unk, DWORD dest_context, void *pvDestContext, DWORD mshlFlags)
#define ALIGN_LENGTH(_Len, _Align)
void __RPC_USER HBITMAP_UserFree(ULONG *flags, HBITMAP *bmp)
unsigned char *__RPC_USER CLIPFORMAT_UserMarshal(ULONG *pFlags, unsigned char *pBuffer, CLIPFORMAT *pCF)
static ULONG handle_UserSize(ULONG *pFlags, ULONG StartingSize, HANDLE *handle)
#define ALIGN_POINTER(_Ptr, _Align)
#define IMPL_WIREM_HANDLE(type)
void WINAPI WdtpInterfacePointer_UserFree(IUnknown *punk)
void __RPC_USER HPALETTE_UserFree(ULONG *pFlags, HPALETTE *phPal)
unsigned char *WINAPI WdtpInterfacePointer_UserMarshal(ULONG *pFlags, ULONG RealFlags, unsigned char *pBuffer, IUnknown *punk, REFIID riid)
ULONG __RPC_USER CLIPFORMAT_UserSize(ULONG *pFlags, ULONG size, CLIPFORMAT *pCF)
static const char * debugstr_user_flags(ULONG *pFlags)
ULONG __RPC_USER HBITMAP_UserSize(ULONG *flags, ULONG size, HBITMAP *bmp)
static void handle_UserFree(ULONG *pFlags, HANDLE *handle)
unsigned char *__RPC_USER HGLOBAL_UserMarshal(ULONG *pFlags, unsigned char *pBuffer, HGLOBAL *phGlobal)
unsigned char *__RPC_USER HPALETTE_UserMarshal(ULONG *pFlags, unsigned char *pBuffer, HPALETTE *phPal)
ULONG __RPC_USER HPALETTE_UserSize(ULONG *pFlags, ULONG StartingSize, HPALETTE *phPal)
unsigned char *__RPC_USER HBITMAP_UserMarshal(ULONG *flags, unsigned char *buffer, HBITMAP *bmp)
static unsigned char * handle_UserUnmarshal(ULONG *pFlags, unsigned char *pBuffer, HANDLE *handle)
ULONG __RPC_USER HGLOBAL_UserSize(ULONG *pFlags, ULONG StartingSize, HGLOBAL *phGlobal)
unsigned char *__RPC_USER HBITMAP_UserUnmarshal(ULONG *flags, unsigned char *buffer, HBITMAP *bmp)
static unsigned char * handle_UserMarshal(ULONG *pFlags, unsigned char *pBuffer, HANDLE *handle)
void __RPC_USER CLIPFORMAT_UserFree(ULONG *pFlags, CLIPFORMAT *pCF)
unsigned char *WINAPI WdtpInterfacePointer_UserUnmarshal(ULONG *pFlags, unsigned char *pBuffer, IUnknown **ppunk, REFIID riid)
unsigned char *__RPC_USER CLIPFORMAT_UserUnmarshal(ULONG *pFlags, unsigned char *pBuffer, CLIPFORMAT *pCF)
unsigned char *__RPC_USER HPALETTE_UserUnmarshal(ULONG *pFlags, unsigned char *pBuffer, HPALETTE *phPal)
unsigned char *__RPC_USER HGLOBAL_UserUnmarshal(ULONG *pFlags, unsigned char *pBuffer, HGLOBAL *phGlobal)
void __RPC_USER HGLOBAL_UserFree(ULONG *pFlags, HGLOBAL *phGlobal)
ULONG __RPC_USER WdtpInterfacePointer_UserSize(ULONG *pFlags, ULONG RealFlags, ULONG StartingSize, IUnknown *punk, REFIID riid)
const char * wine_dbg_sprintf(const char *format,...)
VOID WINAPI RaiseException(_In_ DWORD dwExceptionCode, _In_ DWORD dwExceptionFlags, _In_ DWORD nNumberOfArguments, _In_opt_ const ULONG_PTR *lpArguments)
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * bits
GLfloat GLfloat GLfloat GLfloat h
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
SIZE_T NTAPI GlobalSize(HGLOBAL hMem)
static ERESOURCE GlobalLock
#define memcpy(s1, s2, n)
static char memory[1024 *256]
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
#define NDR_LOCAL_DATA_REPRESENTATION
#define FIELD_OFFSET(t, f)
#define RPC_S_INVALID_BOUND
#define RPC_S_INVALID_TAG
#define RPC_X_BAD_STUB_DATA
int WINAPI GetObjectW(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
HBITMAP WINAPI CreateBitmapIndirect(_In_ const BITMAP *pbm)
LONG WINAPI GetBitmapBits(_In_ HBITMAP hbit, _In_ LONG cb, _Out_writes_bytes_(cb) LPVOID lpvBits)
UINT WINAPI RegisterClipboardFormatW(_In_ LPCWSTR)
int WINAPI GetClipboardFormatNameW(_In_ UINT format, _Out_writes_(cchMaxCount) LPWSTR lpszFormatName, _In_ int cchMaxCount)