226{
238 int expected_bstr_size;
241
244
247
265
267
270 ok(lpsa2 !=
NULL,
"LPSAFEARRAY didn't unmarshal\n");
271 if (pSafeArrayGetVartype)
272 {
273 pSafeArrayGetVartype(lpsa, &
vt);
274 pSafeArrayGetVartype(lpsa2, &vt2);
275 ok(
vt == vt2,
"vts differ %x %x\n",
vt, vt2);
276 }
277 ok(lpsa2->
cLocks == 0,
"got lock count %u, expected 0\n", lpsa2->
cLocks);
280 ok(!lpsa2,
"lpsa2 was not set to 0 by LPSAFEARRAY_UserFree\n");
285
286
291
294
312
314
317 ok(lpsa2 !=
NULL,
"LPSAFEARRAY didn't unmarshal\n");
318 if (pSafeArrayGetVartype)
319 {
320 pSafeArrayGetVartype(lpsa, &
vt);
321 pSafeArrayGetVartype(lpsa2, &vt2);
322 ok(
vt == vt2,
"vts differ %x %x\n",
vt, vt2);
323 }
324 ok(lpsa2->
cLocks == 0,
"got lock count %u, expected 0\n", lpsa2->
cLocks);
331
332
334
344
347 ok(lpsa2 ==
NULL,
"NULL LPSAFEARRAY didn't unmarshal\n");
351
354
356 *(
double *)lpsa->
pvData = 3.1415;
357
361 expected = (44 + 1 + (
sizeof(
double) - 1)) & ~(
sizeof(
double) - 1);
376
378
383
384
392
393 if (pSafeArrayGetVartype)
394 {
395 hr = pSafeArrayGetVartype(lpsa, &
vt);
397 }
398
416
417
420
422 expected_bstr_size = 0;
424 {
427 for (
j = 0;
j <=
i;
j++)
433 ok(
hr ==
S_OK,
"Failed to put bstr element hr 0x%x\n",
hr);
434 expected_bstr_size += (
j *
sizeof(
WCHAR)) + (3 *
sizeof(
DWORD));
436 expected_bstr_size +=
sizeof(
WCHAR);
437 }
438
456
458
464 ok(lpsa2 !=
NULL,
"LPSAFEARRAY didn't unmarshal, result %p\n",
next);
465
467 {
469
470 if (lpsa2)
471 {
474 ok(
hr ==
S_OK,
"Failed to get bstr element at hres 0x%x\n",
hr);
476 {
477 if (pVarBstrCmp)
480 }
481 }
482
484 }
485
488
492
493
502
503 if (pSafeArrayGetVartype)
504 {
505 hr = pSafeArrayGetVartype(lpsa, &
vt);
507 }
508
528}
struct tagVARIANT VARIANT
struct tagSAFEARRAYBOUND SAFEARRAYBOUND
HRESULT WINAPI SafeArrayDestroyDescriptor(SAFEARRAY *psa)
HRESULT WINAPI SafeArrayGetElement(SAFEARRAY *psa, LONG *rgIndices, void *pvData)
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 SafeArrayPutElement(SAFEARRAY *psa, LONG *rgIndices, void *pvData)
unsigned char *WINAPI LPSAFEARRAY_UserMarshal(ULONG *pFlags, unsigned char *Buffer, LPSAFEARRAY *ppsa)
ULONG WINAPI LPSAFEARRAY_UserSize(ULONG *pFlags, ULONG StartingSize, LPSAFEARRAY *ppsa)
unsigned char *WINAPI LPSAFEARRAY_UserUnmarshal(ULONG *pFlags, unsigned char *Buffer, LPSAFEARRAY *ppsa)
void WINAPI LPSAFEARRAY_UserFree(ULONG *pFlags, LPSAFEARRAY *ppsa)
GLuint GLuint GLsizei GLenum const GLvoid * indices
GLboolean GLenum GLenum GLvoid * values
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
static const char mbstate_t *static wchar_t const char mbstate_t *static const wchar_t int *static double
static void check_safearray(void *buffer, LPSAFEARRAY lpsa)