123 "VT_EMPTY",
"VT_NULL",
"VT_I2",
"VT_I4",
"VT_R4",
"VT_R8",
"VT_CY",
"VT_DATE",
124 "VT_BSTR",
"VT_DISPATCH",
"VT_ERROR",
"VT_BOOL",
"VT_VARIANT",
"VT_UNKNOWN",
125 "VT_DECIMAL",
"15",
"VT_I1",
"VT_UI1",
"VT_UI2",
"VT_UI4",
"VT_I8",
"VT_UI8",
126 "VT_INT",
"VT_UINT",
"VT_VOID",
"VT_HRESULT",
"VT_PTR",
"VT_SAFEARRAY",
127 "VT_CARRAY",
"VT_USERDEFINED",
"VT_LPSTR",
"VT_LPWSTR",
"32",
"33",
"34",
"35",
128 "VT_RECORD",
"VT_INT_PTR",
"VT_UINT_PTR",
"39",
"40",
"41",
"42",
"43",
"44",
"45",
129 "46",
"47",
"48",
"49",
"50",
"51",
"52",
"53",
"54",
"55",
"56",
"57",
"58",
"59",
"60",
130 "61",
"62",
"63",
"VT_FILETIME",
"VT_BLOB",
"VT_STREAM",
"VT_STORAGE",
131 "VT_STREAMED_OBJECT",
"VT_STORED_OBJECT",
"VT_BLOB_OBJECT",
"VT_CF",
"VT_CLSID"
139 const char *modifier;
187 memset(&propvar, 0x55,
sizeof(propvar));
190 ok(propvar.vt == 0,
"expected 0, got %d\n", propvar.vt);
191 ok(propvar.uhVal.QuadPart == 0,
"expected 0, got %#lx/%#lx\n",
192 propvar.uhVal.u.LowPart, propvar.uhVal.u.HighPart);
198 memset(&propvar, 0x55,
sizeof(propvar));
200 memset(&propvar, 0,
sizeof(propvar));
203 propvar.blob.cbSize = 0;
204 propvar.blob.pBlobData =
NULL;
207 propvar.pszVal =
NULL;
214 ok(
copy.vt == propvar.vt,
"expected %d, got %d\n", propvar.vt,
copy.vt);
215 ok(
copy.uhVal.QuadPart == propvar.uhVal.QuadPart,
"%u: expected %#lx/%#lx, got %#lx/%#lx\n",
216 i, propvar.uhVal.u.LowPart, propvar.uhVal.u.HighPart,
217 copy.uhVal.u.LowPart,
copy.uhVal.u.HighPart);
226 ok(propvar.vt == 0,
"expected 0, got %d\n", propvar.vt);
227 ok(propvar.uhVal.QuadPart == 0,
"%u: expected 0, got %#lx/%#lx\n",
228 i, propvar.uhVal.u.LowPart, propvar.uhVal.u.HighPart);
230 memset(&propvar, 0x55,
sizeof(propvar));
231 propvar.pszVal =
NULL;
238 ok(
copy.vt == propvar.vt,
"expected %d, got %d\n", propvar.vt,
copy.vt);
239 ok(
copy.uhVal.QuadPart == 0,
"%u: expected 0, got %#lx/%#lx\n",
240 i,
copy.uhVal.u.LowPart,
copy.uhVal.u.HighPart);
249 ok(propvar.vt == 0,
"expected 0, got %d\n", propvar.vt);
250 ok(propvar.uhVal.QuadPart == 0,
"%u: expected 0, got %#lx/%#lx\n",
251 i, propvar.uhVal.u.LowPart, propvar.uhVal.u.HighPart);
253 memset(&propvar, 0x55,
sizeof(propvar));
254 propvar.caub.cElems = 0;
255 propvar.caub.pElems =
NULL;
262 ok(
copy.vt == propvar.vt,
"expected %d, got %d\n", propvar.vt,
copy.vt);
263 ok(!
copy.caub.cElems,
"%u: expected 0, got %ld\n",
i,
copy.caub.cElems);
264 ok(!
copy.caub.pElems,
"%u: expected NULL, got %p\n",
i,
copy.caub.pElems);
273 ok(propvar.vt == 0,
"expected 0, got %d\n", propvar.vt);
274 ok(propvar.uhVal.QuadPart == 0,
"%u: expected 0, got %#lx/%#lx\n",
275 i, propvar.uhVal.u.LowPart, propvar.uhVal.u.HighPart);
277 memset(&propvar, 0x55,
sizeof(propvar));
278 propvar.pszVal =
NULL;
285 ok(
copy.vt == propvar.vt,
"expected %d, got %d\n", propvar.vt,
copy.vt);
286 ok(
copy.uhVal.QuadPart == propvar.uhVal.QuadPart,
"%u: expected %#lx/%#lx, got %#lx/%#lx\n",
287 i, propvar.uhVal.u.LowPart, propvar.uhVal.u.HighPart,
288 copy.uhVal.u.LowPart,
copy.uhVal.u.HighPart);
297 ok(propvar.vt == 0,
"expected 0, got %d\n", propvar.vt);
298 ok(propvar.uhVal.QuadPart == 0,
"%u: expected 0, got %#lx/%#lx\n",
299 i, propvar.uhVal.u.LowPart, propvar.uhVal.u.HighPart);
318 trace(
"Call to unk_QueryInterface()\n");
320 IUnknown_AddRef(iface);
328 trace(
"Call to unk_AddRef()\n");
336 trace(
"Call to unk_Release()\n");
349 static char szTestString[] =
"Test String";
350 static WCHAR wszTestString[] = {
'T',
'e',
's',
't',
' ',
'S',
't',
'r',
'i',
'n',
'g',0};
353 PROPVARIANT propvarDst;
363 ok(
hr ==
S_OK,
"PropVariantCopy(...VT_BSTR...) failed\n");
366 ok(
hr ==
S_OK,
"PropVariantClear(...VT_BSTR...) failed\n");
368 ok(
hr ==
S_OK,
"PropVariantClear(...VT_BSTR...) failed\n");
374 ok(
hr ==
S_OK,
"Failed to copy propvar, hr %#lx.\n",
hr);
375 ok(
SysStringLen(propvarDst.bstrVal) == 8,
"Unexpected copy length.\n");
379 ok(
hr ==
S_OK,
"Failed to clear propvar, hr %#lx.\n",
hr);
381 ok(
hr ==
S_OK,
"Failed to clear propvar, hr %#lx.\n",
hr);
386 ok(
hr ==
S_OK,
"PropVariantCopy(...VT_LPWSTR...) failed\n");
389 ok(
hr ==
S_OK,
"PropVariantClear(...VT_LPWSTR...) failed\n");
395 ok(
hr ==
S_OK,
"PropVariantCopy(...VT_LPSTR...) failed\n");
398 ok(
hr ==
S_OK,
"PropVariantClear(...VT_LPSTR...) failed\n");
404 ok(
hr ==
S_OK,
"PropVariantCopy(...VT_UNKNOWN...) failed: 0x%08lx.\n",
hr);
405 ok(propvarDst.punkVal == &unk_obj.
IUnknown_iface,
"Got wrong IUnknown pointer\n");
406 ok(unk_obj.
ref == 2,
"got wrong refcount: %ld.\n", unk_obj.
ref);
408 ok(
hr ==
S_OK,
"PropVariantClear(...VT_UNKNOWN...) failed: 0x%08lx.\n",
hr);
409 ok(unk_obj.
ref == 1,
"got wrong refcount: %ld.\n", unk_obj.
ref);
419 ok(unk_obj.
ref == 3,
"got wrong refcount: %ld.\n", unk_obj.
ref);
424 ok(
hr ==
S_OK,
"PropVariantCopy(...VT_ARRAY|VT_UNKNOWN...) failed: 0x%08lx.\n",
hr);
425 ok(unk_obj.
ref == 5,
"got wrong refcount: %ld.\n", unk_obj.
ref);
427 ok(
hr ==
S_OK,
"PropVariantClear(...VT_ARRAY|VT_UNKNOWN...) failed: 0x%08lx.\n",
hr);
428 ok(unk_obj.
ref == 3,
"got wrong refcount: %ld.\n", unk_obj.
ref);
430 ok(
hr ==
S_OK,
"PropVariantClear(...VT_ARRAY|VT_UNKNOWN...) failed: 0x%08lx.\n",
hr);
431 ok(unk_obj.
ref == 1,
"got wrong refcount: %ld.\n", unk_obj.
ref);
475 thunk->
func = (
char*)
fn - (
char*)(&thunk->
func + 1);
545 pStgConvertPropertyToVariant = (
void*)
GetProcAddress(hole32,
"StgConvertPropertyToVariant");
547 if (!pStgConvertPropertyToVariant)
549 win_skip(
"StgConvertPropertyToVariant not available\n");
559 ok(
ret == 0,
"StgConvertPropertyToVariant returned %i\n",
ret);
560 ok(propvar.vt ==
VT_EMPTY,
"unexpected vt %x\n", propvar.vt);
565 ok(
ret == 0,
"StgConvertPropertyToVariant returned %i\n",
ret);
566 ok(propvar.vt ==
VT_NULL,
"unexpected vt %x\n", propvar.vt);
571 ok(
ret == 0,
"StgConvertPropertyToVariant returned %i\n",
ret);
572 ok(propvar.vt ==
VT_I4,
"unexpected vt %x\n", propvar.vt);
573 ok(propvar.lVal == 0xfeabcdef,
"unexpected lVal %lx\n", propvar.lVal);
578 ok(
ret == 0,
"StgConvertPropertyToVariant returned %i\n",
ret);
579 ok(propvar.vt ==
VT_BSTR,
"unexpected vt %x\n", propvar.vt);
586 ok(
ret == 0,
"StgConvertPropertyToVariant returned %i\n",
ret);
587 ok(propvar.vt ==
VT_BSTR,
"unexpected vt %x\n", propvar.vt);
601 BSTR test_string_bstr;
605 pStgConvertVariantToProperty = (
void*)
GetProcAddress(hole32,
"StgConvertVariantToProperty");
607 if (!pStgConvertVariantToProperty)
609 win_skip(
"StgConvertVariantToProperty not available\n");
615 PropVariantInit(&propvar);
618 propvar.lVal = 0xfeabcdef;
624 ok(propvalue ==
NULL,
"got nonnull propvalue\n");
627 if (
len == 0xdeadbeef)
634 propvalue = pStgConvertVariantToProperty(&propvar,
CP_WINUNICODE, own_propvalue, &
len,
637 ok(propvalue == own_propvalue,
"unexpected propvalue %p\n", propvalue);
638 ok(
len == 8,
"unexpected length %ld\n",
len);
643 own_propvalue->dwType = 0xdeadbeef;
644 propvalue = pStgConvertVariantToProperty(&propvar,
CP_WINUNICODE, own_propvalue, &
len,
647 ok(propvalue == own_propvalue,
"unexpected propvalue %p\n", propvalue);
650 else ok(propvalue->dwType == 0xdeadbeef,
"unexpected type %ld\n", propvalue->dwType);
654 propvalue = pStgConvertVariantToProperty(&propvar,
CP_WINUNICODE, own_propvalue, &
len,
657 ok(propvalue == own_propvalue,
"unexpected propvalue %p\n", propvalue);
658 ok(
len == 4,
"unexpected length %ld\n",
len);
664 propvar.bstrVal = test_string_bstr;
666 propvalue = pStgConvertVariantToProperty(&propvar,
CP_WINUNICODE, own_propvalue, &
len,
669 ok(propvalue == own_propvalue,
"unexpected propvalue %p\n", propvalue);
670 ok(
len == 20,
"unexpected length %ld\n",
len);
674 propvalue = pStgConvertVariantToProperty(&propvar,
CP_UTF8, own_propvalue, &
len,
677 ok(propvalue == own_propvalue,
"unexpected propvalue %p\n", propvalue);
678 ok(
len == 16,
"unexpected length %ld\n",
len);
static struct sockaddr_in sa
#define InterlockedIncrement
#define InterlockedDecrement
INT copy(TCHAR source[MAX_PATH], TCHAR dest[MAX_PATH], INT append, DWORD lpdwFlags, BOOL bTouch)
HRESULT WINAPI PropVariantClear(PROPVARIANT *pvar)
HRESULT WINAPI PropVariantCopy(PROPVARIANT *pvarDest, const PROPVARIANT *pvarSrc)
#define GetProcAddress(x, y)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
static REFPROPVARIANT propvarSrc
static REFPROPVARIANT PROPVAR_CHANGE_FLAGS VARTYPE vt
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
SAFEARRAY *WINAPI SafeArrayCreate(VARTYPE vt, UINT cDims, SAFEARRAYBOUND *rgsabound)
HRESULT WINAPI SafeArrayPutElement(SAFEARRAY *psa, LONG *rgIndices, void *pvData)
void uninit(_In_ device_extension *Vcb)
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
void *WINAPI CoTaskMemAlloc(SIZE_T size)
void WINAPI CoTaskMemFree(void *ptr)
#define todo_wine_if(is_todo)
static void * wrapperCodeMem
static const CLSID IPropertyStorage UINT *static const PROPSPEC PROPVARIANT *static UINT const PROPSPEC PROPVARIANT PROPID
#define PAGE_EXECUTE_READWRITE
BSTR WINAPI SysAllocString(LPCOLESTR str)
UINT WINAPI SysStringLen(BSTR str)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
static void test_validtypes(void)
static void setup_vtable(struct _PMemoryAllocator_vtable *vtable)
static const char serialized_bstr_mb[]
static const char serialized_empty[]
static ULONG WINAPI unk_Release(IUnknown *iface)
static const char serialized_null[]
static struct unk_impl * impl_from_IUnknown(IUnknown *iface)
static HRESULT WINAPI unk_QueryInterface(IUnknown *iface, REFIID riid, void **ppv)
static void WINAPI PMemoryAllocator_Free(PMemoryAllocator *_this, void *pv)
static void test_copy(void)
static void test_varianttoproperty(void)
static void *WINAPI PMemoryAllocator_Allocate(PMemoryAllocator *_this, ULONG cbSize)
static ULONG WINAPI unk_AddRef(IUnknown *iface)
static void test_propertytovariant(void)
static const char serialized_bstr_wc[]
static const char serialized_i4[]
static const IUnknownVtbl unk_vtbl
struct _PMemoryAllocator PMemoryAllocator
static const struct valid_mapping valid_types[]
static const char * wine_vtypes[VT_CLSID+1]
struct _PMemoryAllocator_vtable * vt
#define CONTAINING_RECORD(address, type, field)
static GLenum _GLUfuncptr fn
LPVOID NTAPI VirtualAlloc(IN LPVOID lpAddress, IN SIZE_T dwSize, IN DWORD flAllocationType, IN DWORD flProtect)
#define DISP_E_BADVARTYPE
#define STG_E_INVALIDPARAMETER