49 if(
psa->fFeatures & FADF_VARIANT)
return SF_VARIANT;
51 switch(
psa->cbElements)
61 if (
psa->fFeatures & FADF_HAVEIID)
75 case VT_R4:
return SF_I4;
91 default:
return SF_ERROR;
119 return sizeof(
DWORD);
128 unsigned char *wiresa =
buffer;
137 ok(*(
DWORD *)wiresa == 0,
"wiresa + 0x0 should be NULL instead of 0x%08lx\n", *(
DWORD *)wiresa);
148 ok(*(
DWORD *)wiresa,
"wiresa + 0x0 should be non-NULL instead of 0x%08lx\n", *(
DWORD *)wiresa);
149 wiresa +=
sizeof(
DWORD);
150 ok(*(
DWORD *)wiresa == lpsa->
cDims,
"wiresa + 0x4 should be lpsa->cDims instead of 0x%08lx\n", *(
DWORD *)wiresa);
151 wiresa +=
sizeof(
DWORD);
152 ok(*(
WORD *)wiresa == lpsa->
cDims,
"wiresa + 0x8 should be lpsa->cDims instead of 0x%04x\n", *(
WORD *)wiresa);
153 wiresa +=
sizeof(
WORD);
154 ok(*(
WORD *)wiresa == lpsa->
fFeatures,
"wiresa + 0xa should be lpsa->fFeatures instead of 0x%08x\n", *(
WORD *)wiresa);
155 wiresa +=
sizeof(
WORD);
157 wiresa +=
sizeof(
DWORD);
158 ok(*(
WORD *)wiresa == lpsa->
cLocks,
"wiresa + 0x10 should be lpsa->cLocks instead of 0x%04x\n", *(
WORD *)wiresa);
159 wiresa +=
sizeof(
WORD);
160 ok(*(
WORD *)wiresa ==
vt,
"wiresa + 0x12 should be %04x instead of 0x%04x\n",
vt, *(
WORD *)wiresa);
161 wiresa +=
sizeof(
WORD);
162 ok(*(
DWORD *)wiresa == sftype,
"wiresa + 0x14 should be %08lx instead of 0x%08lx\n", (
DWORD)sftype, *(
DWORD *)wiresa);
163 wiresa +=
sizeof(
DWORD);
164 ok(*(
DWORD *)wiresa == cell_count,
"wiresa + 0x18 should be %lu instead of %lu\n", cell_count, *(
DWORD *)wiresa);
165 wiresa +=
sizeof(
DWORD);
166 ok(*(
DWORD *)wiresa,
"wiresa + 0x1c should be non-zero instead of 0x%08lx\n", *(
DWORD *)wiresa);
167 wiresa +=
sizeof(
DWORD);
168 if(sftype == SF_HAVEIID)
173 wiresa +=
sizeof(
GUID);
181 "bounds mismatch for dimension %d, got (%ld,%ld), expected (%ld,%ld)\n",
i,
189 ok(*(
DWORD *)wiresa == cell_count,
"wiresa + 0x28 should be %lu instead of %lu\n", cell_count, *(
DWORD*)wiresa);
190 wiresa +=
sizeof(
DWORD);
196 ok(0,
"unexpected user_allocate call\n");
202 ok(0,
"unexpected user_free call\n");
215 memset(stub_msg, 0,
sizeof(*stub_msg));
221 memset(umcb, 0,
sizeof(*umcb));
242 int expected_bstr_size;
274 ok(lpsa2 !=
NULL,
"LPSAFEARRAY didn't unmarshal\n");
277 ok(
vt == vt2,
"vts differ %x %x\n",
vt, vt2);
278 ok(lpsa2->
cLocks == 0,
"got lock count %lu, expected 0\n", lpsa2->
cLocks);
281 ok(!lpsa2,
"lpsa2 was not set to 0 by LPSAFEARRAY_UserFree\n");
318 ok(lpsa2 !=
NULL,
"LPSAFEARRAY didn't unmarshal\n");
321 ok(
vt == vt2,
"vts differ %x %x\n",
vt, vt2);
322 ok(lpsa2->
cLocks == 0,
"got lock count %lu, expected 0\n", lpsa2->
cLocks);
345 ok(lpsa2 ==
NULL,
"NULL LPSAFEARRAY didn't unmarshal\n");
354 *(
double *)lpsa->
pvData = 3.1415;
359 expected = (44 + 1 + (
sizeof(
double) - 1)) & ~(
sizeof(
double) - 1);
416 expected_bstr_size = 0;
421 for (
j = 0;
j <=
i;
j++)
427 ok(
hr ==
S_OK,
"Failed to put bstr element hr 0x%lx\n",
hr);
428 expected_bstr_size += (
j *
sizeof(
WCHAR)) + (3 *
sizeof(
DWORD));
430 expected_bstr_size +=
sizeof(
WCHAR);
458 ok(lpsa2 !=
NULL,
"LPSAFEARRAY didn't unmarshal, result %p\n",
next);
468 ok(
hr ==
S_OK,
"Failed to get bstr element at hres 0x%lx\n",
hr);
539 heap_unknown[
i] = unk;
541 ok(
hr ==
S_OK,
"Failed to put unknown element hr 0x%lx\n",
hr);
542 ok(unk->
refs == 2,
"VT_UNKNOWN safearray elem %d, refcount %ld\n",
i, unk->
refs);
552 "size should be at least %lu bytes, not %lu\n",
expected,
size);
557 "size should be %lu bytes, not %lu\n",
size + (
ULONG)
sizeof(
DWORD), size2);
566 ok(heap_unknown[0]->refs == 3,
"Unexpected refcount %ld\n", heap_unknown[0]->refs);
572 ok(lpsa2 !=
NULL,
"LPSAFEARRAY didn't unmarshal, result %p\n",
next);
582 ok(
hr ==
S_OK,
"Failed to get unk element at %d, hres 0x%lx\n",
i,
hr);
585 ok(gotvalue == &heap_unknown[
i]->IUnknown_iface,
"Interface %d mismatch, expected %p, got %p\n",
586 i, &heap_unknown[
i]->IUnknown_iface, gotvalue);
587 IUnknown_Release(gotvalue);
598 ok(
hr ==
S_OK,
"Failed to put unknown element hr 0x%lx\n",
hr);
613 "size should be at least %lu bytes, not %lu\n",
expected,
size);
618 "size should be %lu bytes, not %lu\n",
size + (
ULONG)
sizeof(
DWORD), size2);
631 ok(lpsa2 !=
NULL,
"LPSAFEARRAY didn't unmarshal, result %p\n",
next);
641 ok(
hr ==
S_OK,
"Failed to get unk element at %d, hres 0x%lx\n",
i,
hr);
646 ok(gotvalue ==
NULL,
"Interface %d expected NULL, got %p\n",
i, gotvalue);
649 ok(gotvalue == &heap_unknown[
i]->IUnknown_iface,
"Interface %d mismatch, expected %p, got %p\n",
650 i, &heap_unknown[
i]->IUnknown_iface, gotvalue);
651 IUnknown_Release(gotvalue);
655 IUnknown_Release(&heap_unknown[
i]->IUnknown_iface);
661 ok(heap_unknown[0]->refs == 1,
"Unexpected refcount %ld\n", heap_unknown[0]->refs);
672 ok(*wireb == (
len + 1) / 2,
"wv[0] %08lx\n", *wireb);
675 ok(*wireb ==
len,
"wv[1] %08lx\n", *wireb);
677 ok(*wireb == 0xffffffff,
"wv[1] %08lx\n", *wireb);
679 ok(*wireb == (
len + 1) / 2,
"wv[2] %08lx\n", *wireb);
683 ok(!
memcmp(wireb,
b, (
len + 1) & ~1),
"strings differ\n");
696 WCHAR str[] = {
'm',
'a',
'r',
's',
'h',
'a',
'l',
' ',
't',
'e',
's',
't',
'1',0};
723 ok(
b2 !=
NULL,
"BSTR didn't unmarshal\n");
746 ok(
b2 ==
NULL,
"NULL BSTR didn't unmarshal\n");
752 *(((
char*)
b) + 3) =
'd';
774 ok(
b2 !=
NULL,
"BSTR didn't unmarshal\n");
801 ok(
b2 !=
NULL,
"NULL LPSAFEARRAY didn't unmarshal\n");
803 ok(
len == 0,
"byte len %ld\n",
len);
819 IUnknown_AddRef(iface);
865 ok(
header->rpcReserved == 0,
"wv[1] %08lx\n",
header->rpcReserved);
868 ok(
header->wReserved1 ==
v->n1.n2.wReserved1,
"res1 %04x expected %04x\n",
header->wReserved1,
v->n1.n2.wReserved1);
869 ok(
header->wReserved2 ==
v->n1.n2.wReserved2,
"res2 %04x expected %04x\n",
header->wReserved2,
v->n1.n2.wReserved2);
870 ok(
header->wReserved3 ==
v->n1.n2.wReserved3,
"res3 %04x expected %04x\n",
header->wReserved3,
v->n1.n2.wReserved3);
872 ok(
header->wReserved1 ==
v->wReserved1,
"res1 %04x expected %04x\n",
header->wReserved1,
v->wReserved1);
873 ok(
header->wReserved2 ==
v->wReserved2,
"res2 %04x expected %04x\n",
header->wReserved2,
v->wReserved2);
874 ok(
header->wReserved3 ==
v->wReserved3,
"res3 %04x expected %04x\n",
header->wReserved3,
v->wReserved3);
879 switch_is &= ~VT_TYPEMASK;
880 ok(
header->switch_is == switch_is,
"switch_is %08lx expected %08lx\n",
header->switch_is, switch_is);
910 WCHAR str[] = {
'm',
'a',
'r',
's',
'h',
'a',
'l',
' ',
't',
'e',
's',
't',0};
942 v.n1.n2.wReserved1 = 0x1234;
943 v.n1.n2.wReserved2 = 0x5678;
944 v.n1.n2.wReserved3 = 0x9abc;
946 v.wReserved1 = 0x1234;
947 v.wReserved2 = 0x5678;
948 v.wReserved3 = 0x9abc;
965 ok(*(
char*)wirev ==
V_I1(&
v),
"wv[5] %08lx\n", *wirev);
991 ok(*(
short*)wirev ==
V_I2(&
v),
"wv[5] %08lx\n", *wirev);
1018 ok(*wirev == 0x4,
"wv[5] %08lx\n", *wirev);
1020 ok(*(
short*)wirev ==
s,
"wv[6] %08lx\n", *wirev);
1049 ok(*wirev ==
V_I4(&
v),
"wv[5] %08lx\n", *wirev);
1076 ok(*wirev == 0x1234,
"wv[5] %08lx\n", *wirev);
1103 ok(*wirev == 0x4,
"wv[5] %08lx\n", *wirev);
1105 ok(*wirev == ul,
"wv[6] %08lx\n", *wirev);
1134 ok(*wirev == 0xcccccccc,
"wv[5] %08lx\n", *wirev);
1163 ok(*(
float*)wirev ==
V_R4(&
v),
"wv[5] %08lx\n", *wirev);
1190 ok(*wirev == 0xcccccccc,
"wv[5] %08lx\n", *wirev);
1192 ok(*(
double*)wirev ==
V_R8(&
v),
"wv[6] %08lx, wv[7] %08lx\n", *wirev, *(wirev+1));
1219 ok(*wirev == 8,
"wv[5] %08lx\n", *wirev);
1221 ok(*(
double*)wirev ==
d,
"wv[6] %08lx wv[7] %08lx\n", *wirev, *(wirev+1));
1248 ok(*(
short*)wirev ==
V_BOOL(&
v),
"wv[5] %04x\n", *(
WORD*)wirev);
1261 dec.wReserved = 0xfedc;
1277 ok(*wirev == 0xcccccccc,
"wirev[5] %08lx\n", *wirev);
1281 ok(!
memcmp(wirev, &dec2,
sizeof(dec2)),
"wirev[6] %08lx wirev[7] %08lx wirev[8] %08lx wirev[9] %08lx\n",
1282 *wirev, *(wirev + 1), *(wirev + 2), *(wirev + 3));
1308 ok(*wirev == 16,
"wv[5] %08lx\n", *wirev);
1310 ok(!
memcmp(wirev, &
dec,
sizeof(
dec)),
"wirev[6] %08lx wirev[7] %08lx wirev[8] %08lx wirev[9] %08lx\n", *wirev, *(wirev + 1), *(wirev + 2), *(wirev + 3));
1316 v2.n1.n2.wReserved1 = 0x0123;
1317 v2.n1.n2.wReserved2 = 0x4567;
1318 v2.n1.n2.wReserved3 = 0x89ab;
1320 v2.wReserved1 = 0x0123;
1321 v2.wReserved2 = 0x4567;
1322 v2.wReserved3 = 0x89ab;
1396 ok(*wirev,
"wv[5] %08lx\n", *wirev);
1424 ok(*wirev == 0x4,
"wv[5] %08lx\n", *wirev);
1426 ok(*wirev,
"wv[6] %08lx\n", *wirev);
1438 ok(
mem ==
b2,
"BSTR should be reused\n");
1471 ok(*wirev,
"wv[5] %08lx\n", *wirev);
1482 ok(bound == bound2,
"array lbounds differ\n");
1485 ok(bound == bound2,
"array ubounds differ\n");
1488 ok(
vt == vt2,
"array vts differ %x %x\n",
vt, vt2);
1508 ok(*wirev == 4,
"wv[5] %08lx\n", *wirev);
1510 ok(*wirev,
"wv[6] %08lx\n", *wirev);
1521 ok(bound == bound2,
"array lbounds differ\n");
1524 ok(bound == bound2,
"array ubounds differ\n");
1527 ok(
vt == vt2,
"array vts differ %x %x\n",
vt, vt2);
1550 ok(*wirev == 4,
"wv[5] %08lx\n", *wirev);
1552 ok(*wirev,
"wv[6] %08lx\n", *wirev);
1565 ok(lpsa2 == lpsa_copy,
"safearray should be reused\n");
1566 ok(
mem == lpsa2->
pvData,
"safearray data should be reused\n");
1570 ok(bound == bound2,
"array lbounds differ\n");
1573 ok(bound == bound2,
"array ubounds differ\n");
1576 ok(
vt == vt2,
"array vts differ %x %x\n",
vt, vt2);
1603 ok(*wirev ==
sizeof(
VARIANT),
"wv[5] %08lx\n", *wirev);
1605 ok(*wirev == (
'U' |
's' << 8 |
'e' << 16 |
'r' << 24),
"wv[6] %08lx\n", *wirev);
1607 ok(*wirev == 0xcccccccc,
"wv[7] %08lx\n", *wirev);
1610 ok(*wirev == 0xcccccccc,
"wv[13] %08lx\n", *wirev);
1612 ok(*(
double*)wirev ==
V_R8(&
v2),
"wv[6] %08lx wv[7] %08lx\n", *wirev, *(wirev+1));
1629 heap_unknown->
refs = 1;
1642 ok(heap_unknown->
refs == 2,
"got refcount %ld\n", heap_unknown->
refs);
1649 ok(*wirev ==
next -
buffer - 0x20,
"wv[6] %08lx\n", *wirev);
1651 ok(*wirev ==
next -
buffer - 0x20,
"wv[7] %08lx\n", *wirev);
1653 ok(*wirev == 0x574f454d,
"wv[8] %08lx\n", *wirev);
1660 ok(heap_unknown->
refs == 3,
"got refcount %ld\n", heap_unknown->
refs);
1665 ok(heap_unknown->
refs == 1,
"%ld refcounts of IUnknown leaked\n", heap_unknown->
refs - 1);
1682 ok(*wirev == 0,
"wv[5] %08lx\n", *wirev);
1695 heap_unknown->
refs = 1;
1706 ok(heap_unknown->
refs == 1,
"got refcount %ld\n", heap_unknown->
refs);
1709 ok(heap_unknown->
refs == 2,
"got refcount %ld\n", heap_unknown->
refs);
1713 ok(*wirev == 4,
"wv[5] %08lx\n", *wirev);
1718 ok(*wirev ==
next -
buffer - 0x24,
"wv[7] %08lx\n", *wirev);
1720 ok(*wirev ==
next -
buffer - 0x24,
"wv[8] %08lx\n", *wirev);
1722 ok(*wirev == 0x574f454d,
"wv[9] %08lx\n", *wirev);
1730 ok(heap_unknown->
refs == 2,
"got refcount %ld\n", heap_unknown->
refs);
1736 ok(heap_unknown->
refs == 1,
"%ld refcounts of IUnknown leaked\n", heap_unknown->
refs - 1);
1755 ok(*wirev == 4,
"wv[5] %08lx\n", *wirev);
ios_base &_STLP_CALL dec(ios_base &__s)
#define InterlockedIncrement
#define InterlockedDecrement
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
void *WINAPI CoTaskMemAlloc(SIZE_T size)
void WINAPI CoTaskMemFree(void *ptr)
HRESULT WINAPI CoGetMalloc(DWORD context, IMalloc **imalloc)
struct tagVARIANT VARIANT
struct tagSAFEARRAYBOUND SAFEARRAYBOUND
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
#define HeapFree(x, y, z)
static REFPROPVARIANT PROPVAR_CHANGE_FLAGS VARTYPE vt
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
HRESULT WINAPI SafeArrayGetUBound(SAFEARRAY *psa, UINT nDim, LONG *plUbound)
HRESULT WINAPI SafeArrayDestroyDescriptor(SAFEARRAY *psa)
HRESULT WINAPI SafeArrayGetElement(SAFEARRAY *psa, LONG *rgIndices, void *pvData)
UINT WINAPI SafeArrayGetDim(SAFEARRAY *psa)
HRESULT WINAPI SafeArrayGetIID(SAFEARRAY *psa, GUID *pGuid)
HRESULT WINAPI SafeArrayGetLBound(SAFEARRAY *psa, UINT nDim, LONG *plLbound)
HRESULT WINAPI SafeArrayDestroyData(SAFEARRAY *psa)
HRESULT WINAPI SafeArrayAllocDescriptor(UINT cDims, SAFEARRAY **ppsaOut)
HRESULT WINAPI SafeArrayDestroy(SAFEARRAY *psa)
SAFEARRAY *WINAPI SafeArrayCreate(VARTYPE vt, UINT cDims, SAFEARRAYBOUND *rgsabound)
HRESULT WINAPI SafeArrayAllocData(SAFEARRAY *psa)
HRESULT WINAPI SafeArrayGetVartype(SAFEARRAY *psa, VARTYPE *pvt)
HRESULT WINAPI SafeArrayPutElement(SAFEARRAY *psa, LONG *rgIndices, void *pvData)
void WINAPI VARIANT_UserFree(ULONG *pFlags, VARIANT *pvar)
unsigned char *WINAPI LPSAFEARRAY_UserMarshal(ULONG *pFlags, unsigned char *Buffer, LPSAFEARRAY *ppsa)
void WINAPI BSTR_UserFree(ULONG *pFlags, BSTR *pstr)
unsigned char *WINAPI VARIANT_UserUnmarshal(ULONG *pFlags, unsigned char *Buffer, VARIANT *pvar)
ULONG WINAPI LPSAFEARRAY_UserSize(ULONG *pFlags, ULONG StartingSize, LPSAFEARRAY *ppsa)
ULONG WINAPI BSTR_UserSize(ULONG *pFlags, ULONG Start, BSTR *pstr)
unsigned char *WINAPI VARIANT_UserMarshal(ULONG *pFlags, unsigned char *Buffer, VARIANT *pvar)
ULONG WINAPI VARIANT_UserSize(ULONG *pFlags, ULONG Start, VARIANT *pvar)
unsigned char *WINAPI LPSAFEARRAY_UserUnmarshal(ULONG *pFlags, unsigned char *Buffer, LPSAFEARRAY *ppsa)
static DWORD elem_wire_size(LPSAFEARRAY lpsa, SF_TYPE sftype)
void WINAPI LPSAFEARRAY_UserFree(ULONG *pFlags, LPSAFEARRAY *ppsa)
unsigned char *WINAPI BSTR_UserMarshal(ULONG *pFlags, unsigned char *Buffer, BSTR *pstr)
unsigned char *WINAPI BSTR_UserUnmarshal(ULONG *pFlags, unsigned char *Buffer, BSTR *pstr)
HRESULT WINAPI VarBstrCmp(BSTR pbstrLeft, BSTR pbstrRight, LCID lcid, DWORD dwFlags)
HRESULT WINAPI VarDecFromI4(LONG lIn, DECIMAL *pDecOut)
GLuint GLuint GLsizei GLenum const GLvoid * indices
GLboolean GLboolean GLboolean b
GLenum GLuint GLenum GLsizei const GLchar * buf
GLboolean GLenum GLenum GLvoid * values
GLfloat GLfloat GLfloat GLfloat v3
GLfloat GLfloat GLfloat v2
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
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 GLint GLint j
#define todo_wine_if(is_todo)
static CRYPT_DATA_BLOB b2[]
static const char mbstate_t *static wchar_t const char mbstate_t *static const wchar_t int *static double
static void WINAPI user_free(void *p)
static TestUnknown * impl_from_IUnknown(IUnknown *iface)
static void init_user_marshal_cb(USER_MARSHAL_CB *umcb, PMIDL_STUB_MESSAGE stub_msg, PRPC_MESSAGE rpc_msg, unsigned char *buffer, unsigned int size, MSHCTX context)
static void *WINAPI user_allocate(SIZE_T size)
static void test_marshal_BSTR(void)
static SF_TYPE get_union_type(SAFEARRAY *psa)
static void * alloc_aligned(SIZE_T size, void **buf)
static void test_marshal_LPSAFEARRAY(void)
static void check_bstr(void *buffer, BSTR b)
static void check_safearray(void *buffer, LPSAFEARRAY lpsa)
static ULONG WINAPI HeapUnknown_AddRef(IUnknown *iface)
static DWORD * check_variant_header(DWORD *wirev, VARIANT *v, ULONG size)
static ULONG WINAPI HeapUnknown_Release(IUnknown *iface)
static ULONG get_cell_count(const SAFEARRAY *psa)
static HRESULT WINAPI HeapUnknown_QueryInterface(IUnknown *iface, REFIID riid, void **ppv)
static const IUnknownVtbl HeapUnknown_Vtbl
static void test_marshal_VARIANT(void)
static SCRIPT_CACHE SCRIPT_ANALYSIS * psa
unsigned __int3264 UINT_PTR
UINT WINAPI SysStringByteLen(BSTR str)
BSTR WINAPI SysAllocString(LPCOLESTR str)
UINT WINAPI SysStringLen(BSTR str)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
BSTR WINAPI DECLSPEC_HOTPATCH SysAllocStringByteLen(LPCSTR str, UINT len)
#define IsEqualGUID(rguid1, rguid2)
#define IsEqualIID(riid1, riid2)
static unsigned __int64 next
#define NDR_LOCAL_DATA_REPRESENTATION
@ USER_MARSHAL_CB_BUFFER_SIZE
@ USER_MARSHAL_CB_UNMARSHALL
#define USER_MARSHAL_CB_SIGNATURE
unsigned char * BufferEnd
unsigned char * BufferStart
unsigned int BufferLength
USER_MARSHAL_CB_TYPE CBType
PMIDL_STUB_MESSAGE pStubMsg
#define CONTAINING_RECORD(address, type, field)
void WINAPI VariantInit(VARIANTARG *pVarg)