ReactOS  0.4.14-dev-583-g2a1ba2c
misc.c File Reference
#include <wine/test.h>
#include <stdarg.h>
#include <stddef.h>
#include <stdio.h>
#include "windef.h"
#include "winbase.h"
#include "ole2.h"
#include "urlmon.h"
#include "initguid.h"
#include "wine/heap.h"
Include dependency graph for misc.c:

Go to the source code of this file.

Classes

struct  parse_test
 
struct  RefUnk
 

Macros

#define COBJMACROS
 
#define CONST_VTABLE
 
#define NONAMELESSUNION
 
#define DEFINE_EXPECT(func)   static BOOL expect_ ## func = FALSE, called_ ## func = FALSE
 
#define SET_EXPECT(func)   expect_ ## func = TRUE
 
#define CHECK_EXPECT(func)
 
#define CHECK_EXPECT2(func)
 
#define CHECK_CALLED(func)
 

Functions

 DEFINE_GUID (CLSID_AboutProtocol, 0x3050F406, 0x98B5, 0x11CF, 0xBB, 0x82, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x0B)
 
 DEFINE_EXPECT (ParseUrl)
 
 DEFINE_EXPECT (ParseUrl_ENCODE)
 
 DEFINE_EXPECT (ParseUrl_UNESCAPE)
 
 DEFINE_EXPECT (QI_IInternetProtocolInfo)
 
 DEFINE_EXPECT (CreateInstance)
 
 DEFINE_EXPECT (unk_Release)
 
static HRESULT (WINAPI *pCoInternetCompareUrl)(LPCWSTR
 
static int strcmp_wa (const WCHAR *strw, const char *stra)
 
static WCHARa2w (const char *str)
 
static WCHARa2co (const char *str)
 
static void test_CreateFormatEnum (void)
 
static void test_RegisterFormatEnumerator (void)
 
static void test_CoInternetParseUrl (void)
 
static void test_CoInternetCompareUrl (void)
 
static void test_CoInternetQueryInfo (void)
 
static void test_FindMimeFromData (void)
 
static void register_protocols (void)
 
static HRESULT WINAPI InternetProtocolInfo_QueryInterface (IInternetProtocolInfo *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI InternetProtocolInfo_AddRef (IInternetProtocolInfo *iface)
 
static ULONG WINAPI InternetProtocolInfo_Release (IInternetProtocolInfo *iface)
 
static HRESULT WINAPI InternetProtocolInfo_ParseUrl (IInternetProtocolInfo *iface, LPCWSTR pwzUrl, PARSEACTION ParseAction, DWORD dwParseFlags, LPWSTR pwzResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved)
 
static HRESULT WINAPI InternetProtocolInfo_CombineUrl (IInternetProtocolInfo *iface, LPCWSTR pwzBaseUrl, LPCWSTR pwzRelativeUrl, DWORD dwCombineFlags, LPWSTR pwzResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved)
 
static HRESULT WINAPI InternetProtocolInfo_CompareUrl (IInternetProtocolInfo *iface, LPCWSTR pwzUrl1, LPCWSTR pwzUrl2, DWORD dwCompareFlags)
 
static HRESULT WINAPI InternetProtocolInfo_QueryInfo (IInternetProtocolInfo *iface, LPCWSTR pwzUrl, QUERYOPTION OueryOption, DWORD dwQueryFlags, LPVOID pBuffer, DWORD cbBuffer, DWORD *pcbBuf, DWORD dwReserved)
 
static HRESULT WINAPI ClassFactory_QueryInterface (IClassFactory *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI ClassFactory_AddRef (IClassFactory *iface)
 
static ULONG WINAPI ClassFactory_Release (IClassFactory *iface)
 
static HRESULT WINAPI ClassFactory_CreateInstance (IClassFactory *iface, IUnknown *pOuter, REFIID riid, void **ppv)
 
static HRESULT WINAPI ProtocolCF_CreateInstance (IClassFactory *iface, IUnknown *pOuter, REFIID riid, void **ppv)
 
static HRESULT WINAPI ClassFactory_LockServer (IClassFactory *iface, BOOL dolock)
 
static void test_NameSpace (void)
 
static void test_MimeFilter (void)
 
static ULONG WINAPI unk_Release (IUnknown *iface)
 
static void test_ReleaseBindInfo (void)
 
static void test_CopyStgMedium (void)
 
static void test_CopyBindInfo (void)
 
static void test_UrlMkGetSessionOption (void)
 
static void test_user_agent (void)
 
static void test_MkParseDisplayNameEx (void)
 
static void test_IsValidURL (void)
 
static void test_internet_feature_defaults (void)
 
static void test_internet_features_registry (void)
 
static void test_CoInternetIsFeatureEnabled (void)
 
static void test_CoInternetSetFeatureEnabled (void)
 
static void test_internet_features (void)
 
static HRESULT WINAPI BindStatusCallback_QueryInterface (IBindStatusCallbackEx *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI BindStatusCallback_AddRef (IBindStatusCallbackEx *iface)
 
static ULONG WINAPI BindStatusCallback_Release (IBindStatusCallbackEx *iface)
 
static HRESULT WINAPI BindStatusCallback_OnStartBinding (IBindStatusCallbackEx *iface, DWORD dwReserved, IBinding *pib)
 
static HRESULT WINAPI BindStatusCallback_GetPriority (IBindStatusCallbackEx *iface, LONG *pnPriority)
 
static HRESULT WINAPI BindStatusCallback_OnLowResource (IBindStatusCallbackEx *iface, DWORD reserved)
 
static HRESULT WINAPI BindStatusCallback_OnProgress (IBindStatusCallbackEx *iface, ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText)
 
static HRESULT WINAPI BindStatusCallback_OnStopBinding (IBindStatusCallbackEx *iface, HRESULT hresult, LPCWSTR szError)
 
static HRESULT WINAPI BindStatusCallback_GetBindInfo (IBindStatusCallbackEx *iface, DWORD *grfBINDF, BINDINFO *pbindinfo)
 
static HRESULT WINAPI BindStatusCallback_OnDataAvailable (IBindStatusCallbackEx *iface, DWORD grfBSCF, DWORD dwSize, FORMATETC *pformatetc, STGMEDIUM *pstgmed)
 
static HRESULT WINAPI BindStatusCallback_OnObjectAvailable (IBindStatusCallbackEx *iface, REFIID riid, IUnknown *punk)
 
static HRESULT WINAPI BindStatusCallbackEx_GetBindInfoEx (IBindStatusCallbackEx *iface, DWORD *grfBINDF, BINDINFO *pbindinfo, DWORD *grfBINDF2, DWORD *pdwReserved)
 
static RefUnkimpl_from_IUnknown (IUnknown *iface)
 
static HRESULT WINAPI RefUnk_QueryInterface (IUnknown *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI RefUnk_AddRef (IUnknown *iface)
 
static ULONG WINAPI RefUnk_Release (IUnknown *iface)
 
static DWORD WINAPI bsc_thread (void *arg)
 
static void test_bsc_marshaling (void)
 
 START_TEST (misc)
 

Variables

static LPCWSTR
 
static DWORD
 
static LPWSTR PSUACTION
 
static PARSEACTION
 
static LPWSTR
 
static QUERYOPTION
 
static LPVOID
 
static LPSTR
 
static BOOL
 
static const WCHAR url1 []
 
static const WCHAR url2 [] = {'i','n','d','e','x','.','h','t','m',0}
 
static const WCHAR url3 [] = {'f','i','l','e',':','/','/','c',':','\\','I','n','d','e','x','.','h','t','m',0}
 
static const WCHAR url4 []
 
static const WCHAR url5 []
 
static const WCHAR url6 [] = {'a','b','o','u','t',':','b','l','a','n','k',0}
 
static const WCHAR url7 []
 
static const WCHAR url8 [] = {'t','e','s','t',':','1','2','3','a','b','c',0}
 
static const WCHAR url9 []
 
static const WCHAR url10 []
 
static const WCHAR url4e []
 
static const WCHAR path3 [] = {'c',':','\\','I','n','d','e','x','.','h','t','m',0}
 
static const WCHAR path4 [] = {'s','o','m','e',' ','f','i','l','e','.','j','p','g',0}
 
static const WCHAR wszRes [] = {'r','e','s',0}
 
static const WCHAR wszFile [] = {'f','i','l','e',0}
 
static const WCHAR wszHttp [] = {'h','t','t','p',0}
 
static const WCHAR wszAbout [] = {'a','b','o','u','t',0}
 
static const WCHAR wszEmpty [] = {0}
 
static const WCHAR wszGoogle [] = {'g','o','o','g','l','e','.','*','.','c','o','m',0}
 
static const WCHAR wszWineHQ [] = {'w','w','w','.','w','i','n','e','h','q','.','o','r','g',0}
 
static const WCHAR wszHttpWineHQ []
 
static const WCHAR wszHttpGoogle []
 
static const struct parse_test parse_tests []
 
struct {
   LPCWSTR   url
 
   DWORD   uses_net
 
query_info_tests []
 
struct {
   const char *   url
 
   const char *   mime
 
   HRESULT   hres
 
   BOOL   broken_failure
 
   const char *   broken_mime
 
mime_tests []
 
static BYTE data1 [] = "test data\n"
 
static BYTE data2 [] = {31,'t','e','s',0xfa,'t',' ','d','a','t','a','\n',0}
 
static BYTE data3 [] = {0,0,0}
 
static BYTE data4 [] = {'t','e','s',0xfa,'t',' ','d','a','t','a','\n',0,0}
 
static BYTE data5 [] = {0xa,0xa,0xa,'x',32,'x',0}
 
static BYTE data6 [] = {0xfa,0xfa,0xfa,0xfa,'\n','\r','\t','x','x','x',1}
 
static BYTE data7 [] = "<html>blahblah"
 
static BYTE data8 [] = {'t','e','s',0xfa,'t',' ','<','h','t','m','l','>','d','a','t','a','\n',0,0}
 
static BYTE data9 [] = {'t','e',0,'s',0xfa,'t',' ','<','h','t','m','l','>','d','a','t','a','\n',0,0}
 
static BYTE data10 [] = "<HtmL>blahblah"
 
static BYTE data11 [] = "blah<HTML>blahblah"
 
static BYTE data12 [] = "blah<HTMLblahblah"
 
static BYTE data13 [] = "blahHTML>blahblah"
 
static BYTE data14 [] = "blah<HTMblahblah"
 
static BYTE data15 [] = {0xff,0xd8}
 
static BYTE data16 [] = {0xff,0xd8,'h'}
 
static BYTE data17 [] = {0,0xff,0xd8}
 
static BYTE data18 [] = {0xff,0xd8,'<','h','t','m','l','>'}
 
static BYTE data19 [] = {'G','I','F','8','7','a'}
 
static BYTE data20 [] = {'G','I','F','8','9','a'}
 
static BYTE data21 [] = {'G','I','F','8','7'}
 
static BYTE data22 [] = {'G','i','F','8','7','a'}
 
static BYTE data23 [] = {'G','i','F','8','8','a'}
 
static BYTE data24 [] = {'g','i','f','8','7','a'}
 
static BYTE data25 [] = {'G','i','F','8','7','A'}
 
static BYTE data26 [] = {'G','i','F','8','7','a','<','h','t','m','l','>'}
 
static BYTE data27 [] = {0x30,'G','i','F','8','7','A'}
 
static BYTE data28 [] = {0x42,0x4d,0x6e,0x42,0x1c,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00}
 
static BYTE data29 [] = {0x42,0x4d,'x','x','x','x',0x00,0x00,0x00,0x00,'x','x','x','x'}
 
static BYTE data30 [] = {0x42,0x4d,'x','x','x','x',0x00,0x01,0x00,0x00,'x','x','x','x'}
 
static BYTE data31 [] = {0x42,0x4d,'x','x','x','x',0x00,0x00,0x00,0x00,'<','h','t','m','l','>'}
 
static BYTE data32 [] = {0x42,0x4d,'x','x','x','x',0x00,0x00,0x00,0x00,'x','x','x'}
 
static BYTE data33 [] = {0x00,0x42,0x4d,'x','x','x','x',0x00,0x00,0x00,0x00,'x','x','x'}
 
static BYTE data34 [] = {0x89,'P','N','G',0x0d,0x0a,0x1a,0x0a,'x'}
 
static BYTE data35 [] = {0x89,'P','N','G',0x0d,0x0a,0x1a,0x0a,'x','x','x','x',0}
 
static BYTE data36 [] = {0x89,'P','N','G',0x0d,0x0a,0x1a,'x','x'}
 
static BYTE data37 [] = {0x89,'P','N','G',0x0d,0x0a,0x1a,0x0a,'<','h','t','m','l','>'}
 
static BYTE data38 [] = {0x00,0x89,'P','N','G',0x0d,0x0a,0x1a,0x0a,'x'}
 
static BYTE data39 [] = {0x4d,0x4d,0x00,0x2a,0xff}
 
static BYTE data40 [] = {0x4d,0x4d,0x00,0x2a,'<','h','t','m','l','>',0}
 
static BYTE data41 [] = {0x4d,0x4d,0xff}
 
static BYTE data42 [] = {0x4d,0x4d}
 
static BYTE data43 [] = {0x00,0x4d,0x4d,0x00}
 
static BYTE data44 [] = {'R','I','F','F',0xff,0xff,0xff,0xff,'A','V','I',0x20,0xff}
 
static BYTE data45 [] = {'R','I','F','f',0xff,0xff,0xff,0xff,'A','V','I',0x20,0xff}
 
static BYTE data46 [] = {'R','I','F','F',0xff,0xff,0xff,0xff,'A','V','I',0x20}
 
static BYTE data47 [] = {'R','I','F','F',0xff,0xff,0xff,0xff,'A','V','I',0x21,0xff}
 
static BYTE data48 [] = {'R','I','F','F',0xff,0xff,0xff,0xff,'A','V','I',0x20,'<','h','t','m','l','>'}
 
static BYTE data49 [] = {'R','I','F','F',0x0f,0x0f,0xf0,0xf0,'A','V','I',0x20,0xf0,0x00}
 
static BYTE data50 [] = {0x00,0x00,0x01,0xb3,0xff}
 
static BYTE data51 [] = {0x00,0x00,0x01,0xba,0xff}
 
static BYTE data52 [] = {0x00,0x00,0x01,0xb8,0xff}
 
static BYTE data53 [] = {0x00,0x00,0x01,0xba}
 
static BYTE data54 [] = {0x00,0x00,0x01,0xba,'<','h','t','m','l','>'}
 
static BYTE data55 [] = {0x1f,0x8b,'x'}
 
static BYTE data56 [] = {0x1f}
 
static BYTE data57 [] = {0x1f,0x8b,'<','h','t','m','l','>','t','e','s','t',0}
 
static BYTE data58 [] = {0x1f,0x8b}
 
static BYTE data59 [] = {0x50,0x4b,'x'}
 
static BYTE data60 [] = {0x50,0x4b}
 
static BYTE data61 [] = {0x50,0x4b,'<','h','t','m','l','>',0}
 
static BYTE data62 [] = {0xca,0xfe,0xba,0xbe,'x'}
 
static BYTE data63 [] = {0xca,0xfe,0xba,0xbe}
 
static BYTE data64 [] = {0xca,0xfe,0xba,0xbe,'<','h','t','m','l','>',0}
 
static BYTE data65 [] = {0x25,0x50,0x44,0x46,'x'}
 
static BYTE data66 [] = {0x25,0x50,0x44,0x46}
 
static BYTE data67 [] = {0x25,0x50,0x44,0x46,'x','<','h','t','m','l','>'}
 
static BYTE data68 [] = {'M','Z','x'}
 
static BYTE data69 [] = {'M','Z'}
 
static BYTE data70 [] = {'M','Z','<','h','t','m','l','>',0xff}
 
static BYTE data71 [] = {'{','\\','r','t','f',0}
 
static BYTE data72 [] = {'{','\\','r','t','f'}
 
static BYTE data73 [] = {' ','{','\\','r','t','f',' '}
 
static BYTE data74 [] = {'{','\\','r','t','f','<','h','t','m','l','>',' '}
 
static BYTE data75 [] = {'R','I','F','F',0xff,0xff,0xff,0xff,'W','A','V','E',0xff}
 
static BYTE data76 [] = {'R','I','F','F',0xff,0xff,0xff,0xff,'W','A','V','E'}
 
static BYTE data77 [] = {'R','I','F','F',0xff,0xff,0xff,0xff,'W','A','V',0xff,0xff}
 
static BYTE data78 [] = {'R','I','F','F',0xff,0xff,0xff,0xff,'<','h','t','m','l','>',0xff}
 
static BYTE data79 [] = {'%','!',0xff}
 
static BYTE data80 [] = {'%','!'}
 
static BYTE data81 [] = {'%','!','P','S','<','h','t','m','l','>'}
 
static BYTE data82 [] = {'.','s','n','d',0}
 
static BYTE data83 [] = {'.','s','n','d'}
 
static BYTE data84 [] = {'.','s','n','d',0,'<','h','t','m','l','>',1,1}
 
static BYTE data85 [] = {'.','S','N','D',0}
 
static BYTE data86 [] = {0x49,0x49,0x2a,0xff}
 
static BYTE data87 [] = {' ','<','h','e','a','d'}
 
static BYTE data88 [] = {' ','<','h','e','a','d','>'}
 
static BYTE data89 [] = {'\t','\r','<','h','e','a','d','>'}
 
static BYTE data90 [] = {'<','H','e','A','d',' '}
 
static BYTE data91 [] = {'<','?','x','m','l',' ',0}
 
static BYTE data92 [] = {'a','b','c','<','?','x','m','l',' ',' '}
 
static BYTE data93 [] = {'<','?','x','m','l',' ',' ','<','h','t','m','l','>'}
 
static BYTE data94 [] = {'<','h','t','m','l','>','<','?','x','m','l',' ',' '}
 
static BYTE data95 [] = {'{','\\','r','t','f','<','?','x','m','l',' ',' '}
 
static BYTE data96 [] = {'<','?','x','m','l',' '}
 
static BYTE data97 [] = "<body"
 
static BYTE data98 [] = "blah<BoDyblahblah"
 
struct {
   BYTE *   data
 
   DWORD   size
 
   const char *   mime
 
   const char *   mime_pjpeg
 
   const char *   broken_mime
 
   const char *   url
 
   const char *   proposed_mime
 
mime_tests2 []
 
static const IInternetProtocolInfoVtbl InternetProtocolInfoVtbl
 
static IInternetProtocolInfo protocol_info = { &InternetProtocolInfoVtbl }
 
static HRESULT qiret
 
static IClassFactoryexpect_cf
 
static const IClassFactoryVtbl ClassFactoryVtbl
 
static const IClassFactoryVtbl ProtocolCFVtbl
 
static IClassFactory test_protocol_cf = { &ProtocolCFVtbl }
 
static IClassFactory test_protocol_cf2 = { &ProtocolCFVtbl }
 
static IClassFactory test_cf = { &ClassFactoryVtbl }
 
static const IUnknownVtbl unk_vtbl
 
struct {
   INTERNETFEATURELIST   feature
 
   DWORD   get_flags
 
   HRESULT   expected
 
   BOOL   todo
 
default_feature_tests []
 
static const charszFeatureControlKey = "Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl"
 
struct {
   INTERNETFEATURELIST   feature
 
   DWORD   set_flags
 
   BOOL   enable
 
   HRESULT   set_expected
 
   BOOL   set_todo
 
   DWORD   get_flags
 
   HRESULT   get_expected
 
   BOOL   get_todo
 
internet_feature_tests []
 
static BINDINFO rem_bindinfo = { sizeof(rem_bindinfo) }
 
static BINDINFO in_bindinfo
 
static DWORD rem_bindf
 
static STGMEDIUM in_stgmed
 
static STGMEDIUM rem_stgmed
 
static const IBindStatusCallbackExVtbl BindStatusCallbackExVtbl
 
static IBindStatusCallbackEx BindStatusCallback = { &BindStatusCallbackExVtbl }
 
static const IUnknownVtbl RefUnkVtbl
 
static RefUnk unk_in = {{&RefUnkVtbl}}
 
static RefUnk unk_out = {{&RefUnkVtbl}}
 
static HANDLE thread_ready
 

Macro Definition Documentation

◆ CHECK_CALLED

#define CHECK_CALLED (   func)
Value:
do { \
ok(called_ ## func, "expected " #func "\n"); \
expect_ ## func = called_ ## func = FALSE; \
}while(0)
GLenum func
Definition: glext.h:6028

Definition at line 57 of file misc.c.

◆ CHECK_EXPECT

#define CHECK_EXPECT (   func)
Value:
do { \
ok(expect_ ##func, "unexpected call " #func "\n"); \
expect_ ## func = FALSE; \
called_ ## func = TRUE; \
}while(0)
GLenum func
Definition: glext.h:6028
#define TRUE
Definition: types.h:120
#define expect_(expected, got, precision)
Definition: font.c:29

Definition at line 44 of file misc.c.

◆ CHECK_EXPECT2

#define CHECK_EXPECT2 (   func)
Value:
do { \
ok(expect_ ##func, "unexpected call " #func "\n"); \
called_ ## func = TRUE; \
}while(0)
GLenum func
Definition: glext.h:6028
#define TRUE
Definition: types.h:120
#define expect_(expected, got, precision)
Definition: font.c:29

Definition at line 51 of file misc.c.

◆ COBJMACROS

#define COBJMACROS

Definition at line 19 of file misc.c.

◆ CONST_VTABLE

#define CONST_VTABLE

Definition at line 20 of file misc.c.

◆ DEFINE_EXPECT

#define DEFINE_EXPECT (   func)    static BOOL expect_ ## func = FALSE, called_ ## func = FALSE

Definition at line 38 of file misc.c.

◆ NONAMELESSUNION

#define NONAMELESSUNION

Definition at line 21 of file misc.c.

◆ SET_EXPECT

#define SET_EXPECT (   func)    expect_ ## func = TRUE

Definition at line 41 of file misc.c.

Function Documentation

◆ a2co()

static WCHAR* a2co ( const char str)
static

Definition at line 109 of file misc.c.

110 {
111  WCHAR *ret;
112  int len;
113 
114  if(!str)
115  return NULL;
116 
117  len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
118  ret = CoTaskMemAlloc(len*sizeof(WCHAR));
119  MultiByteToWideChar(CP_ACP, 0, str, -1, ret, len);
120 
121  return ret;
122 }
#define CP_ACP
Definition: compat.h:99
const WCHAR * str
smooth NULL
Definition: ftsmooth.c:416
__wchar_t WCHAR
Definition: xmlstorage.h:180
int ret
GLenum GLsizei len
Definition: glext.h:6722
#define MultiByteToWideChar
Definition: compat.h:100
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: ifs.c:404

Referenced by test_bsc_marshaling().

◆ a2w()

static WCHAR* a2w ( const char str)
static

Definition at line 94 of file misc.c.

95 {
96  WCHAR *ret;
97  int len;
98 
99  if(!str)
100  return NULL;
101 
102  len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
103  ret = HeapAlloc(GetProcessHeap(), 0, len*sizeof(WCHAR));
104  MultiByteToWideChar(CP_ACP, 0, str, -1, ret, len);
105 
106  return ret;
107 }
#define CP_ACP
Definition: compat.h:99
const WCHAR * str
smooth NULL
Definition: ftsmooth.c:416
#define GetProcessHeap()
Definition: compat.h:403
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
__wchar_t WCHAR
Definition: xmlstorage.h:180
int ret
GLenum GLsizei len
Definition: glext.h:6722
#define MultiByteToWideChar
Definition: compat.h:100

Referenced by test_FindMimeFromData().

◆ BindStatusCallback_AddRef()

static ULONG WINAPI BindStatusCallback_AddRef ( IBindStatusCallbackEx iface)
static

Definition at line 1976 of file misc.c.

1977 {
1978  return 2;
1979 }

◆ BindStatusCallback_GetBindInfo()

static HRESULT WINAPI BindStatusCallback_GetBindInfo ( IBindStatusCallbackEx iface,
DWORD grfBINDF,
BINDINFO *  pbindinfo 
)
static

Definition at line 2018 of file misc.c.

2019 {
2020  in_bindinfo = *pbindinfo;
2021  *grfBINDF = rem_bindf;
2022  *pbindinfo = rem_bindinfo;
2023  return S_OK;
2024 }
static BINDINFO in_bindinfo
Definition: misc.c:1960
static DWORD rem_bindf
Definition: misc.c:1961
static BINDINFO rem_bindinfo
Definition: misc.c:1960
#define S_OK
Definition: intsafe.h:59

◆ BindStatusCallback_GetPriority()

static HRESULT WINAPI BindStatusCallback_GetPriority ( IBindStatusCallbackEx iface,
LONG pnPriority 
)
static

Definition at line 1993 of file misc.c.

1994 {
1995  ok(0, "unexpected call\n");
1996  return E_NOTIMPL;
1997 }
#define ok(value,...)
Definition: atltest.h:57
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ BindStatusCallback_OnDataAvailable()

static HRESULT WINAPI BindStatusCallback_OnDataAvailable ( IBindStatusCallbackEx iface,
DWORD  grfBSCF,
DWORD  dwSize,
FORMATETC *  pformatetc,
STGMEDIUM *  pstgmed 
)
static

Definition at line 2028 of file misc.c.

2030 {
2031  in_stgmed = *pstgmed;
2032  *pstgmed = rem_stgmed;
2033  return S_OK;
2034 }
static STGMEDIUM in_stgmed
Definition: misc.c:2026
#define S_OK
Definition: intsafe.h:59
static STGMEDIUM rem_stgmed
Definition: misc.c:2026

◆ BindStatusCallback_OnLowResource()

static HRESULT WINAPI BindStatusCallback_OnLowResource ( IBindStatusCallbackEx iface,
DWORD  reserved 
)
static

Definition at line 1999 of file misc.c.

2000 {
2001  ok(0, "unexpected call\n");
2002  return E_NOTIMPL;
2003 }
#define ok(value,...)
Definition: atltest.h:57
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ BindStatusCallback_OnObjectAvailable()

static HRESULT WINAPI BindStatusCallback_OnObjectAvailable ( IBindStatusCallbackEx iface,
REFIID  riid,
IUnknown punk 
)
static

Definition at line 2036 of file misc.c.

2037 {
2038  ok(0, "unexpected call\n");
2039  return S_OK;
2040 }
#define S_OK
Definition: intsafe.h:59
#define ok(value,...)
Definition: atltest.h:57

◆ BindStatusCallback_OnProgress()

static HRESULT WINAPI BindStatusCallback_OnProgress ( IBindStatusCallbackEx iface,
ULONG  ulProgress,
ULONG  ulProgressMax,
ULONG  ulStatusCode,
LPCWSTR  szStatusText 
)
static

Definition at line 2005 of file misc.c.

2007 {
2008  ok(0, "unexpected call\n");
2009  return S_OK;
2010 }
#define S_OK
Definition: intsafe.h:59
#define ok(value,...)
Definition: atltest.h:57

◆ BindStatusCallback_OnStartBinding()

static HRESULT WINAPI BindStatusCallback_OnStartBinding ( IBindStatusCallbackEx iface,
DWORD  dwReserved,
IBinding pib 
)
static

Definition at line 1986 of file misc.c.

1988 {
1989  ok(0, "unexpected call\n");
1990  return S_OK;
1991 }
#define S_OK
Definition: intsafe.h:59
#define ok(value,...)
Definition: atltest.h:57

◆ BindStatusCallback_OnStopBinding()

static HRESULT WINAPI BindStatusCallback_OnStopBinding ( IBindStatusCallbackEx iface,
HRESULT  hresult,
LPCWSTR  szError 
)
static

Definition at line 2012 of file misc.c.

2013 {
2014  ok(0, "unexpected call\n");
2015  return S_OK;
2016 }
#define S_OK
Definition: intsafe.h:59
#define ok(value,...)
Definition: atltest.h:57

◆ BindStatusCallback_QueryInterface()

static HRESULT WINAPI BindStatusCallback_QueryInterface ( IBindStatusCallbackEx iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 1963 of file misc.c.

1964 {
1965  if(IsEqualGUID(&IID_IBindStatusCallbackEx, riid)
1966  || IsEqualGUID(&IID_IBindStatusCallback, riid)
1967  || IsEqualGUID(&IID_IUnknown, riid)) {
1968  *ppv = iface;
1969  return S_OK;
1970  }
1971 
1972  *ppv = NULL;
1973  return E_NOINTERFACE;
1974 }
#define E_NOINTERFACE
Definition: winerror.h:2364
REFIID riid
Definition: precomp.h:44
REFIID LPVOID * ppv
Definition: atlbase.h:39
smooth NULL
Definition: ftsmooth.c:416
const GUID IID_IUnknown
#define S_OK
Definition: intsafe.h:59
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4112

◆ BindStatusCallback_Release()

static ULONG WINAPI BindStatusCallback_Release ( IBindStatusCallbackEx iface)
static

Definition at line 1981 of file misc.c.

1982 {
1983  return 1;
1984 }

◆ BindStatusCallbackEx_GetBindInfoEx()

static HRESULT WINAPI BindStatusCallbackEx_GetBindInfoEx ( IBindStatusCallbackEx iface,
DWORD grfBINDF,
BINDINFO *  pbindinfo,
DWORD grfBINDF2,
DWORD pdwReserved 
)
static

Definition at line 2042 of file misc.c.

2044 {
2045  in_bindinfo = *pbindinfo;
2046  *grfBINDF = rem_bindf;
2047  *pbindinfo = rem_bindinfo;
2048  *grfBINDF2 = 11;
2049  *pdwReserved = 12;
2050  return S_OK;
2051 }
static BINDINFO in_bindinfo
Definition: misc.c:1960
static DWORD rem_bindf
Definition: misc.c:1961
static BINDINFO rem_bindinfo
Definition: misc.c:1960
_Reserved_ DWORD * pdwReserved
Definition: wincrypt.h:4254
#define S_OK
Definition: intsafe.h:59

◆ bsc_thread()

static DWORD WINAPI bsc_thread ( void arg)
static

Definition at line 2114 of file misc.c.

2115 {
2116  IStream *stream = arg;
2118  MSG msg;
2119  HRESULT hres;
2120 
2121  CoInitialize(NULL);
2122 
2123  hres = CoMarshalInterface(stream, &IID_IBindStatusCallback, (IUnknown*)&BindStatusCallback,
2124  MSHCTX_INPROC, NULL, MSHLFLAGS_NORMAL);
2125  ok(hres == S_OK, "CoMarshalInterface failed: %08x\n", hres);
2126 
2127  zero.QuadPart = 0;
2128  hres = IStream_Seek(stream, zero, STREAM_SEEK_SET, NULL);
2129  ok(hres == S_OK, "Seek failed: 0x%08x\n", hres);
2130 
2132 
2133  while(GetMessageW(&msg, NULL, 0, 0)) {
2136  }
2137 
2138  CoUninitialize();
2139  return 0;
2140 }
BOOL WINAPI TranslateMessage(_In_ const MSG *)
static HANDLE thread_ready
Definition: misc.c:2112
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1827
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
Definition: synch.c:733
void * arg
Definition: msvc.h:10
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
smooth NULL
Definition: ftsmooth.c:416
LONG HRESULT
Definition: typedefs.h:77
HRESULT hres
Definition: misc.c:488
static double zero
Definition: j0_y0.c:96
Definition: parse.h:22
#define S_OK
Definition: intsafe.h:59
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: compobj.c:2067
#define ok(value,...)
Definition: atltest.h:57
BOOL WINAPI GetMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
Definition: compobj.c:1964
#define msg(x)
Definition: auth_time.c:54
HRESULT WINAPI CoMarshalInterface(IStream *pStream, REFIID riid, IUnknown *pUnk, DWORD dwDestContext, void *pvDestContext, DWORD mshlFlags)
Definition: marshal.c:1876

Referenced by test_bsc_marshaling().

◆ ClassFactory_AddRef()

static ULONG WINAPI ClassFactory_AddRef ( IClassFactory iface)
static

Definition at line 965 of file misc.c.

966 {
967  return 2;
968 }

◆ ClassFactory_CreateInstance()

static HRESULT WINAPI ClassFactory_CreateInstance ( IClassFactory iface,
IUnknown pOuter,
REFIID  riid,
void **  ppv 
)
static

Definition at line 975 of file misc.c.

977 {
978  ok(0, "unexpected call\n");
979  return E_NOTIMPL;
980 }
#define ok(value,...)
Definition: atltest.h:57
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ ClassFactory_LockServer()

static HRESULT WINAPI ClassFactory_LockServer ( IClassFactory iface,
BOOL  dolock 
)
static

Definition at line 996 of file misc.c.

997 {
998  ok(0, "unexpected call\n");
999  return S_OK;
1000 }
#define S_OK
Definition: intsafe.h:59
#define ok(value,...)
Definition: atltest.h:57

◆ ClassFactory_QueryInterface()

static HRESULT WINAPI ClassFactory_QueryInterface ( IClassFactory iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 952 of file misc.c.

953 {
954  if(IsEqualGUID(&IID_IInternetProtocolInfo, riid)) {
955  CHECK_EXPECT2(QI_IInternetProtocolInfo);
956  ok(iface == expect_cf, "unexpected iface\n");
957  *ppv = &protocol_info;
958  return qiret;
959  }
960 
961  ok(0, "unexpected call\n");
962  return E_NOINTERFACE;
963 }
#define E_NOINTERFACE
Definition: winerror.h:2364
static IInternetProtocolInfo protocol_info
Definition: misc.c:947
REFIID riid
Definition: precomp.h:44
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define CHECK_EXPECT2(func)
Definition: misc.c:51
static HRESULT qiret
Definition: misc.c:949
#define ok(value,...)
Definition: atltest.h:57
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4112
static IClassFactory * expect_cf
Definition: misc.c:950

◆ ClassFactory_Release()

static ULONG WINAPI ClassFactory_Release ( IClassFactory iface)
static

Definition at line 970 of file misc.c.

971 {
972  return 1;
973 }

◆ DEFINE_EXPECT() [1/6]

DEFINE_EXPECT ( ParseUrl  )

◆ DEFINE_EXPECT() [2/6]

DEFINE_EXPECT ( ParseUrl_ENCODE  )

◆ DEFINE_EXPECT() [3/6]

DEFINE_EXPECT ( ParseUrl_UNESCAPE  )

◆ DEFINE_EXPECT() [4/6]

DEFINE_EXPECT ( QI_IInternetProtocolInfo  )

◆ DEFINE_EXPECT() [5/6]

DEFINE_EXPECT ( CreateInstance  )

◆ DEFINE_EXPECT() [6/6]

DEFINE_EXPECT ( unk_Release  )

◆ DEFINE_GUID()

DEFINE_GUID ( CLSID_AboutProtocol  ,
0x3050F406  ,
0x98B5  ,
0x11CF  ,
0xBB  ,
0x82  ,
0x00  ,
0xAA  ,
0x00  ,
0xBD  ,
0xCE  ,
0x0B   
)

◆ HRESULT()

static HRESULT ( WINAPI pCoInternetCompareUrl)
static

◆ impl_from_IUnknown()

static RefUnk* impl_from_IUnknown ( IUnknown iface)
inlinestatic

Definition at line 2075 of file misc.c.

2076 {
2077  return CONTAINING_RECORD(iface, RefUnk, IUnknown_iface);
2078 }
Definition: misc.c:2070
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)
Definition: Messaging.c:560

Referenced by RefUnk_AddRef(), and RefUnk_Release().

◆ InternetProtocolInfo_AddRef()

static ULONG WINAPI InternetProtocolInfo_AddRef ( IInternetProtocolInfo iface)
static

Definition at line 873 of file misc.c.

874 {
875  return 2;
876 }

◆ InternetProtocolInfo_CombineUrl()

static HRESULT WINAPI InternetProtocolInfo_CombineUrl ( IInternetProtocolInfo iface,
LPCWSTR  pwzBaseUrl,
LPCWSTR  pwzRelativeUrl,
DWORD  dwCombineFlags,
LPWSTR  pwzResult,
DWORD  cchResult,
DWORD pcchResult,
DWORD  dwReserved 
)
static

Definition at line 914 of file misc.c.

917 {
918  ok(0, "unexpected call\n");
919  return E_NOTIMPL;
920 }
#define ok(value,...)
Definition: atltest.h:57
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ InternetProtocolInfo_CompareUrl()

static HRESULT WINAPI InternetProtocolInfo_CompareUrl ( IInternetProtocolInfo iface,
LPCWSTR  pwzUrl1,
LPCWSTR  pwzUrl2,
DWORD  dwCompareFlags 
)
static

Definition at line 922 of file misc.c.

924 {
925  ok(0, "unexpected call\n");
926  return E_NOTIMPL;
927 }
#define ok(value,...)
Definition: atltest.h:57
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ InternetProtocolInfo_ParseUrl()

static HRESULT WINAPI InternetProtocolInfo_ParseUrl ( IInternetProtocolInfo iface,
LPCWSTR  pwzUrl,
PARSEACTION  ParseAction,
DWORD  dwParseFlags,
LPWSTR  pwzResult,
DWORD  cchResult,
DWORD pcchResult,
DWORD  dwReserved 
)
static

Definition at line 883 of file misc.c.

886 {
887  switch(ParseAction) {
888  case PARSE_SECURITY_URL:
889  CHECK_EXPECT2(ParseUrl);
890  if(pcchResult)
891  *pcchResult = ARRAY_SIZE(url1);
892 
893  if(cchResult < ARRAY_SIZE(url1))
894  return S_FALSE;
895 
896  memcpy(pwzResult, url1, sizeof(url1));
897  return S_OK;
898  case PARSE_ENCODE:
899  CHECK_EXPECT2(ParseUrl_ENCODE);
900  break;
901 
902  case PARSE_UNESCAPE:
903  CHECK_EXPECT2(ParseUrl_UNESCAPE);
904  break;
905 
906  default:
907  CHECK_EXPECT2(ParseUrl);
908  break;
909  }
910 
911  return E_NOTIMPL;
912 }
#define CHECK_EXPECT2(func)
Definition: misc.c:51
#define S_FALSE
Definition: winerror.h:2357
static const WCHAR url1[]
Definition: misc.c:300
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define S_OK
Definition: intsafe.h:59
#define ARRAY_SIZE(a)
Definition: main.h:24
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ InternetProtocolInfo_QueryInfo()

static HRESULT WINAPI InternetProtocolInfo_QueryInfo ( IInternetProtocolInfo iface,
LPCWSTR  pwzUrl,
QUERYOPTION  OueryOption,
DWORD  dwQueryFlags,
LPVOID  pBuffer,
DWORD  cbBuffer,
DWORD pcbBuf,
DWORD  dwReserved 
)
static

Definition at line 929 of file misc.c.

932 {
933  ok(0, "unexpected call\n");
934  return E_NOTIMPL;
935 }
#define ok(value,...)
Definition: atltest.h:57
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ InternetProtocolInfo_QueryInterface()

static HRESULT WINAPI InternetProtocolInfo_QueryInterface ( IInternetProtocolInfo iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 866 of file misc.c.

868 {
869  ok(0, "unexpected call\n");
870  return E_NOINTERFACE;
871 }
#define E_NOINTERFACE
Definition: winerror.h:2364
#define ok(value,...)
Definition: atltest.h:57

◆ InternetProtocolInfo_Release()

static ULONG WINAPI InternetProtocolInfo_Release ( IInternetProtocolInfo iface)
static

Definition at line 878 of file misc.c.

879 {
880  return 1;
881 }

◆ ProtocolCF_CreateInstance()

static HRESULT WINAPI ProtocolCF_CreateInstance ( IClassFactory iface,
IUnknown pOuter,
REFIID  riid,
void **  ppv 
)
static

Definition at line 982 of file misc.c.

984 {
985  CHECK_EXPECT(CreateInstance);
986 
987  ok(iface == expect_cf, "unexpected iface\n");
988  ok(pOuter == NULL, "pOuter = %p\n", pOuter);
989  ok(IsEqualGUID(&IID_IInternetProtocolInfo, riid), "unexpected riid\n");
990  ok(ppv != NULL, "ppv == NULL\n");
991 
992  *ppv = &protocol_info;
993  return S_OK;
994 }
static IInternetProtocolInfo protocol_info
Definition: misc.c:947
REFIID riid
Definition: precomp.h:44
REFIID LPVOID * ppv
Definition: atlbase.h:39
smooth NULL
Definition: ftsmooth.c:416
#define CHECK_EXPECT(func)
Definition: misc.c:44
#define S_OK
Definition: intsafe.h:59
#define ok(value,...)
Definition: atltest.h:57
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4112
static IClassFactory * expect_cf
Definition: misc.c:950

◆ RefUnk_AddRef()

static ULONG WINAPI RefUnk_AddRef ( IUnknown iface)
static

Definition at line 2092 of file misc.c.

2093 {
2094  RefUnk *This = impl_from_IUnknown(iface);
2095  return InterlockedIncrement(&This->ref);
2096 }
Definition: misc.c:2070
static RefUnk * impl_from_IUnknown(IUnknown *iface)
Definition: misc.c:2075
#define InterlockedIncrement
Definition: armddk.h:53

◆ RefUnk_QueryInterface()

static HRESULT WINAPI RefUnk_QueryInterface ( IUnknown iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 2080 of file misc.c.

2081 {
2082  if(!IsEqualGUID(&IID_IUnknown, riid)) {
2083  *ppv = NULL;
2084  return E_NOINTERFACE;
2085  }
2086 
2087  IUnknown_AddRef(iface);
2088  *ppv = iface;
2089  return S_OK;
2090 }
#define E_NOINTERFACE
Definition: winerror.h:2364
REFIID riid
Definition: precomp.h:44
REFIID LPVOID * ppv
Definition: atlbase.h:39
smooth NULL
Definition: ftsmooth.c:416
const GUID IID_IUnknown
#define S_OK
Definition: intsafe.h:59
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4112

◆ RefUnk_Release()

static ULONG WINAPI RefUnk_Release ( IUnknown iface)
static

Definition at line 2098 of file misc.c.

2099 {
2100  RefUnk *This = impl_from_IUnknown(iface);
2101  return InterlockedDecrement(&This->ref);
2102 }
Definition: misc.c:2070
#define InterlockedDecrement
Definition: armddk.h:52
static RefUnk * impl_from_IUnknown(IUnknown *iface)
Definition: misc.c:2075

◆ register_protocols()

static void register_protocols ( void  )
static

Definition at line 840 of file misc.c.

841 {
844  HRESULT hres;
845 
846  static const WCHAR wszAbout[] = {'a','b','o','u','t',0};
847 
848  hres = pCoInternetGetSession(0, &session, 0);
849  ok(hres == S_OK, "CoInternetGetSession failed: %08x\n", hres);
850  if(FAILED(hres))
851  return;
852 
853  hres = CoGetClassObject(&CLSID_AboutProtocol, CLSCTX_INPROC_SERVER, NULL,
854  &IID_IClassFactory, (void**)&factory);
855  ok(hres == S_OK, "Could not get AboutProtocol factory: %08x\n", hres);
856  if(FAILED(hres))
857  return;
858 
859  IInternetSession_RegisterNameSpace(session, factory, &CLSID_AboutProtocol,
860  wszAbout, 0, NULL, 0);
861  IClassFactory_Release(factory);
862 
863  IInternetSession_Release(session);
864 }
CLSID CLSID_AboutProtocol
Definition: main.c:438
smooth NULL
Definition: ftsmooth.c:416
HRESULT WINAPI DECLSPEC_HOTPATCH CoGetClassObject(REFCLSID rclsid, DWORD dwClsContext, COSERVERINFO *pServerInfo, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3103
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
HRESULT hres
Definition: misc.c:488
#define S_OK
Definition: intsafe.h:59
#define ok(value,...)
Definition: atltest.h:57
static ClassFactoryImpl factory
Definition: ole_server.c:234
const GUID IID_IClassFactory
static const WCHAR wszAbout[]
Definition: misc.c:326

Referenced by START_TEST().

◆ START_TEST()

START_TEST ( misc  )

Definition at line 2667 of file misc.c.

2668 {
2669  HMODULE hurlmon;
2670  int argc;
2671  char **argv;
2672 
2674 
2675  hurlmon = GetModuleHandleA("urlmon.dll");
2676  pCoInternetCompareUrl = (void *) GetProcAddress(hurlmon, "CoInternetCompareUrl");
2677  pCoInternetGetSecurityUrl = (void*) GetProcAddress(hurlmon, "CoInternetGetSecurityUrl");
2678  pCoInternetGetSession = (void*) GetProcAddress(hurlmon, "CoInternetGetSession");
2679  pCoInternetParseUrl = (void*) GetProcAddress(hurlmon, "CoInternetParseUrl");
2680  pCoInternetQueryInfo = (void*) GetProcAddress(hurlmon, "CoInternetQueryInfo");
2681  pCopyStgMedium = (void*) GetProcAddress(hurlmon, "CopyStgMedium");
2682  pCopyBindInfo = (void*) GetProcAddress(hurlmon, "CopyBindInfo");
2683  pFindMimeFromData = (void*) GetProcAddress(hurlmon, "FindMimeFromData");
2684  pObtainUserAgentString = (void*) GetProcAddress(hurlmon, "ObtainUserAgentString");
2685  pReleaseBindInfo = (void*) GetProcAddress(hurlmon, "ReleaseBindInfo");
2686  pUrlMkGetSessionOption = (void*) GetProcAddress(hurlmon, "UrlMkGetSessionOption");
2687  pCompareSecurityIds = (void*) GetProcAddress(hurlmon, "CompareSecurityIds");
2688  pCoInternetIsFeatureEnabled = (void*) GetProcAddress(hurlmon, "CoInternetIsFeatureEnabled");
2689  pCoInternetSetFeatureEnabled = (void*) GetProcAddress(hurlmon, "CoInternetSetFeatureEnabled");
2690  pIEInstallScope = (void*) GetProcAddress(hurlmon, "IEInstallScope");
2691 
2692  if (!pCoInternetCompareUrl || !pCoInternetGetSecurityUrl ||
2693  !pCoInternetGetSession || !pCoInternetParseUrl || !pCompareSecurityIds) {
2694  win_skip("Various needed functions not present, too old IE\n");
2695  return;
2696  }
2697 
2699 
2700  if(argc <= 2 || strcmp(argv[2], "internet_features")) {
2702 
2709  test_NameSpace();
2710  test_MimeFilter();
2715  test_user_agent();
2717  test_IsValidURL();
2719  }
2720 
2722 
2723  OleUninitialize();
2724 }
static void test_FindMimeFromData(void)
Definition: misc.c:723
static int argc
Definition: ServiceArgs.c:12
static void test_CoInternetCompareUrl(void)
Definition: misc.c:429
static void test_MkParseDisplayNameEx(void)
Definition: misc.c:1609
static void test_CoInternetParseUrl(void)
Definition: misc.c:359
#define argv
Definition: mplay32.c:18
static void test_NameSpace(void)
Definition: misc.c:1022
static void register_protocols(void)
Definition: misc.c:840
static void test_user_agent(void)
Definition: misc.c:1479
static void test_CopyStgMedium(void)
Definition: misc.c:1250
smooth NULL
Definition: ftsmooth.c:416
static void test_CopyBindInfo(void)
Definition: misc.c:1328
int winetest_get_mainargs(char ***pargv)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
Definition: loader.c:821
HRESULT WINAPI DECLSPEC_HOTPATCH OleInitialize(LPVOID reserved)
Definition: ole2.c:169
static void test_MimeFilter(void)
Definition: misc.c:1181
static void test_UrlMkGetSessionOption(void)
Definition: misc.c:1439
static void test_IsValidURL(void)
Definition: misc.c:1699
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
static void test_CreateFormatEnum(void)
Definition: misc.c:124
#define GetProcAddress(x, y)
Definition: compat.h:418
static void test_RegisterFormatEnumerator(void)
Definition: misc.c:227
static void test_internet_features(void)
Definition: misc.c:1920
void WINAPI DECLSPEC_HOTPATCH OleUninitialize(void)
Definition: ole2.c:230
#define win_skip
Definition: test.h:150
static void test_ReleaseBindInfo(void)
Definition: misc.c:1220
static void test_CoInternetQueryInfo(void)
Definition: misc.c:457
static void test_bsc_marshaling(void)
Definition: misc.c:2142

◆ strcmp_wa()

static int strcmp_wa ( const WCHAR strw,
const char stra 
)
static

Definition at line 87 of file misc.c.

88 {
89  WCHAR buf[512];
90  MultiByteToWideChar(CP_ACP, 0, stra, -1, buf, ARRAY_SIZE(buf));
91  return lstrcmpW(strw, buf);
92 }
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
#define CP_ACP
Definition: compat.h:99
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:170
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define ARRAY_SIZE(a)
Definition: main.h:24
#define MultiByteToWideChar
Definition: compat.h:100
static const char * strw(LPCWSTR x)
Definition: actctx.c:49

Referenced by test_bsc_marshaling(), and test_FindMimeFromData().

◆ test_bsc_marshaling()

static void test_bsc_marshaling ( void  )
static

Definition at line 2142 of file misc.c.

2143 {
2144  FORMATETC formatetc = {0, NULL, 1, -1, TYMED_ISTREAM};
2145  IBindStatusCallbackEx *callbackex;
2147  BINDINFO bindinfo;
2148  IStream *stream, *binding_stream;
2149  HANDLE thread;
2150  WCHAR *extra_info_out;
2151  WCHAR *verb_out;
2153  STGMEDIUM stgmed;
2154  void *buf;
2155  DWORD bindf;
2156  HRESULT hres;
2157 
2159  ok(hres == S_OK, "CreateStreamOnHGlobal returned: %08x\n", hres);
2160 
2164 
2165  hres = CoUnmarshalInterface(stream, &IID_IBindStatusCallback, (void**)&bsc);
2166  ok(hres == S_OK, "CoUnmarshalInterface failed: %08x\n", hres);
2167 
2168  hres = CreateStreamOnHGlobal(NULL, TRUE, &binding_stream);
2169  ok(hres == S_OK, "CreateStreamOnHGlobal returned: %08x\n", hres);
2170  hres = IStream_Write(binding_stream, "xxx", 3, NULL);
2171  ok(hres == S_OK, "Write failed: %08x\n", hres);
2172 
2173  rem_bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA;
2174  bindf = 0xdeadbeef;
2175 
2176  memset(&bindinfo, 0, sizeof(bindinfo));
2177  bindinfo.cbSize = sizeof(bindinfo);
2178  bindinfo.grfBindInfoF = 12;
2179  bindinfo.dwBindVerb = 13;
2180  bindinfo.cbstgmedData = 19;
2181  bindinfo.dwOptions = 14;
2182  bindinfo.dwOptionsFlags = 15;
2183  bindinfo.dwCodePage = 16;
2184  bindinfo.securityAttributes.nLength = 30;
2185  bindinfo.securityAttributes.lpSecurityDescriptor = (void*)0xdead0001;
2186  bindinfo.securityAttributes.bInheritHandle = 31;
2187  bindinfo.iid.Data1 = 17;
2188  bindinfo.pUnk = (IUnknown*)0xdeadbeef;
2189  bindinfo.dwReserved = 18;
2190  bindinfo.stgmedData.pUnkForRelease = &unk_in.IUnknown_iface;
2191  unk_in.ref = 1;
2192 
2193  memset(&rem_bindinfo, 0, sizeof(bindinfo));
2194  rem_bindinfo.cbSize = sizeof(rem_bindinfo);
2195  rem_bindinfo.szExtraInfo = extra_info_out = a2co("extra info out");
2196  rem_bindinfo.grfBindInfoF = 22;
2197  rem_bindinfo.dwBindVerb = 23;
2198  rem_bindinfo.szCustomVerb = verb_out = a2co("custom verb out");
2199  rem_bindinfo.cbstgmedData = 29;
2200  rem_bindinfo.dwOptions = 24;
2201  rem_bindinfo.dwOptionsFlags = 25;
2202  rem_bindinfo.dwCodePage = 16;
2203  rem_bindinfo.securityAttributes.nLength = 40;
2204  rem_bindinfo.securityAttributes.lpSecurityDescriptor = (void*)0xdead0002;
2205  rem_bindinfo.securityAttributes.bInheritHandle = 41;
2206  rem_bindinfo.iid.Data1 = 27;
2207  rem_bindinfo.pUnk = (IUnknown*)0xdeadbeef;
2208  rem_bindinfo.dwReserved = 18;
2209  rem_bindinfo.stgmedData.pUnkForRelease = &unk_out.IUnknown_iface;
2210  unk_out.ref = 1;
2211 
2212  hres = IBindStatusCallback_GetBindInfo(bsc, &bindf, &bindinfo);
2213  ok(hres == S_OK, "GetBindInfo failed: %08x\n", hres);
2214  ok(bindf == rem_bindf, "bindf = %x, expected %x\n", bindf, rem_bindf);
2215 
2216  ok(in_bindinfo.cbSize == sizeof(in_bindinfo), "cbSize = %u\n", in_bindinfo.cbSize);
2217  ok(!in_bindinfo.szExtraInfo, "szExtraInfo = %s\n", wine_dbgstr_w(in_bindinfo.szExtraInfo));
2218  ok(in_bindinfo.grfBindInfoF == 12, "cbSize = %u\n", in_bindinfo.grfBindInfoF);
2219  ok(in_bindinfo.dwBindVerb == 13, "dwBindVerb = %u\n", in_bindinfo.dwBindVerb);
2220  ok(!in_bindinfo.szCustomVerb, "szCustomVerb = %s\n", wine_dbgstr_w(in_bindinfo.szCustomVerb));
2221  ok(in_bindinfo.cbstgmedData == 19, "cbstgmedData = %u\n", in_bindinfo.cbstgmedData);
2222  ok(!in_bindinfo.dwOptions, "dwOptions = %u\n", in_bindinfo.dwOptions);
2223  ok(!in_bindinfo.dwOptionsFlags, "dwOptionsFlags = %u\n", in_bindinfo.dwOptionsFlags);
2224  ok(!in_bindinfo.dwCodePage, "dwCodePage = %u\n", in_bindinfo.dwCodePage);
2225  ok(!in_bindinfo.iid.Data1, "iid.Data1 = %u\n", in_bindinfo.iid.Data1);
2226  ok(!in_bindinfo.pUnk, "pUnk = %p\n", in_bindinfo.pUnk);
2227  ok(!in_bindinfo.dwReserved, "dwReserved = %u\n", in_bindinfo.dwReserved);
2228  ok(!in_bindinfo.securityAttributes.nLength, "securityAttributes.nLength = %u\n",
2229  in_bindinfo.securityAttributes.nLength);
2230  ok(!in_bindinfo.securityAttributes.lpSecurityDescriptor,
2231  "securityAttributes.lpSecurityDescriptor = %p\n",
2232  in_bindinfo.securityAttributes.lpSecurityDescriptor);
2233  ok(!in_bindinfo.securityAttributes.bInheritHandle, "securityAttributes.bInheritHandle = %u\n",
2234  in_bindinfo.securityAttributes.bInheritHandle);
2235  ok(!in_bindinfo.stgmedData.pUnkForRelease, "pUnkForRelease = %p\n",
2236  in_bindinfo.stgmedData.pUnkForRelease);
2237 
2238  ok(bindinfo.cbSize == sizeof(rem_bindinfo), "cbSize = %u\n", rem_bindinfo.cbSize);
2239  ok(!strcmp_wa(bindinfo.szExtraInfo, "extra info out"),
2240  "szExtraInfo = %s\n", wine_dbgstr_w(bindinfo.szExtraInfo));
2241  ok(bindinfo.grfBindInfoF == 22, "grfBindInfoF = %u\n", rem_bindinfo.grfBindInfoF);
2242  ok(bindinfo.dwBindVerb == 23, "dwBindVerb = %u\n", bindinfo.dwBindVerb);
2243  ok(bindinfo.szCustomVerb != verb_out, "szCustomVerb == inbuf\n");
2244  ok(!strcmp_wa(bindinfo.szCustomVerb, "custom verb out"), "szCustomVerb = %s\n",
2245  wine_dbgstr_w(bindinfo.szCustomVerb));
2246  ok(bindinfo.cbstgmedData == 29, "cbstgmedData = %u\n", bindinfo.cbstgmedData);
2247  ok(bindinfo.dwOptions == 24, "dwOptions = %u\n", bindinfo.dwOptions);
2248  ok(bindinfo.dwOptionsFlags == 25, "dwOptionsFlags = %u\n", bindinfo.dwOptionsFlags);
2249  ok(bindinfo.dwCodePage, "dwCodePage = %u\n", bindinfo.dwCodePage);
2250  ok(!bindinfo.iid.Data1, "iid.Data1 = %u\n", bindinfo.iid.Data1);
2251  ok(!bindinfo.pUnk, "pUnk = %p\n", bindinfo.pUnk);
2252  ok(bindinfo.dwReserved == 18, "dwReserved = %u\n", bindinfo.dwReserved);
2253  ok(bindinfo.securityAttributes.nLength == 30, "securityAttributes.nLength = %u\n",
2254  bindinfo.securityAttributes.nLength);
2255  ok(bindinfo.securityAttributes.lpSecurityDescriptor == (void*)0xdead0001,
2256  "securityAttributes.lpSecurityDescriptor = %p\n",
2257  bindinfo.securityAttributes.lpSecurityDescriptor);
2258  ok(bindinfo.securityAttributes.bInheritHandle == 31, "securityAttributes.bInheritHandle = %u\n",
2259  bindinfo.securityAttributes.bInheritHandle);
2260  ok(bindinfo.stgmedData.pUnkForRelease == &unk_in.IUnknown_iface, "pUnkForRelease = %p\n",
2261  bindinfo.stgmedData.pUnkForRelease);
2262  ok(unk_out.ref == 1, "unk_out.ref = %u\n", unk_out.ref);
2263 
2264  bindinfo.stgmedData.pUnkForRelease = NULL;
2265  ReleaseBindInfo(&bindinfo);
2266 
2267  zero.QuadPart = 0;
2268  hres = IStream_Seek(binding_stream, zero, STREAM_SEEK_SET, NULL);
2269  ok(hres == S_OK, "Seek failed: 0x%08x\n", hres);
2270 
2271  /* Return IStream stgmed from GetBindInfo, it's not marshaled back */
2272  rem_bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA;
2273  bindf = 0xdeadbeef;
2274 
2275  memset(&bindinfo, 0, sizeof(bindinfo));
2276  bindinfo.cbSize = sizeof(bindinfo);
2277 
2278  memset(&rem_bindinfo, 0, sizeof(rem_bindinfo));
2279  rem_bindinfo.cbSize = sizeof(rem_bindinfo);
2280 
2281  rem_bindinfo.stgmedData.tymed = TYMED_ISTREAM;
2282  rem_bindinfo.stgmedData.u.pstm = binding_stream;
2283  rem_bindinfo.cbstgmedData = 3;
2284  IStream_AddRef(binding_stream);
2285 
2286  hres = IBindStatusCallback_GetBindInfo(bsc, &bindf, &bindinfo);
2287  ok(hres == S_OK, "GetBindInfo failed: %08x\n", hres);
2288  ok(bindf == rem_bindf, "bindf = %x, expected %x\n", bindf, rem_bindf);
2289 
2290  ok(in_bindinfo.cbSize == sizeof(in_bindinfo), "cbSize = %u\n", in_bindinfo.cbSize);
2291  ok(!in_bindinfo.pUnk, "pUnk = %p\n", in_bindinfo.pUnk);
2292  ok(in_bindinfo.stgmedData.tymed == TYMED_NULL, "tymed = %u\n",
2293  in_bindinfo.stgmedData.tymed);
2294 
2295  ok(bindinfo.cbSize == sizeof(bindinfo), "cbSize = %u\n", bindinfo.cbSize);
2296  ok(!bindinfo.pUnk, "pUnk = %p\n", bindinfo.pUnk);
2297  ok(bindinfo.stgmedData.tymed == TYMED_NULL, "tymed = %u\n",
2298  bindinfo.stgmedData.tymed);
2299  ok(!bindinfo.stgmedData.u.pstm, "stm = %p\n",
2300  bindinfo.stgmedData.u.pstm);
2301  ok(!bindinfo.stgmedData.pUnkForRelease, "pUnkForRelease = %p\n",
2302  bindinfo.stgmedData.pUnkForRelease);
2303  ok(bindinfo.cbstgmedData == 3, "cbstgmedData = %u\n", bindinfo.cbstgmedData);
2304 
2305  ReleaseBindInfo(&bindinfo);
2306 
2307  /* Same, but with pUnkForRelease, it's not marshaled back */
2308  rem_bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA;
2309  bindf = 0xdeadbeef;
2310 
2311  memset(&bindinfo, 0, sizeof(bindinfo));
2312  bindinfo.cbSize = sizeof(bindinfo);
2313 
2314  memset(&rem_bindinfo, 0, sizeof(rem_bindinfo));
2315  rem_bindinfo.cbSize = sizeof(rem_bindinfo);
2316 
2317  rem_bindinfo.stgmedData.tymed = TYMED_ISTREAM;
2318  rem_bindinfo.stgmedData.u.pstm = binding_stream;
2319  rem_bindinfo.stgmedData.pUnkForRelease = &unk_out.IUnknown_iface;
2320  unk_out.ref = 1;
2321  rem_bindinfo.cbstgmedData = 3;
2322  IStream_AddRef(binding_stream);
2323 
2324  hres = IBindStatusCallback_GetBindInfo(bsc, &bindf, &bindinfo);
2325  ok(hres == S_OK, "GetBindInfo failed: %08x\n", hres);
2326  ok(bindf == rem_bindf, "bindf = %x, expected %x\n", bindf, rem_bindf);
2327 
2328  ok(in_bindinfo.cbSize == sizeof(in_bindinfo), "cbSize = %u\n", in_bindinfo.cbSize);
2329  ok(!in_bindinfo.pUnk, "pUnk = %p\n", in_bindinfo.pUnk);
2330  ok(in_bindinfo.stgmedData.tymed == TYMED_NULL, "tymed = %u\n",
2331  in_bindinfo.stgmedData.tymed);
2332 
2333  ok(bindinfo.cbSize == sizeof(bindinfo), "cbSize = %u\n", bindinfo.cbSize);
2334  ok(!bindinfo.pUnk, "pUnk = %p\n", bindinfo.pUnk);
2335  ok(bindinfo.stgmedData.tymed == TYMED_NULL, "tymed = %u\n",
2336  bindinfo.stgmedData.tymed);
2337  ok(!bindinfo.stgmedData.u.pstm, "stm = %p\n",
2338  bindinfo.stgmedData.u.pstm);
2339  ok(!bindinfo.stgmedData.pUnkForRelease, "pUnkForRelease = %p\n",
2340  bindinfo.stgmedData.pUnkForRelease);
2341  ok(bindinfo.cbstgmedData == 3, "cbstgmedData = %u\n", bindinfo.cbstgmedData);
2342 
2343  ReleaseBindInfo(&bindinfo);
2344 
2345  /* Return HGLOBAL stgmed from GetBindInfo, it's not marshaled back */
2346  rem_bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA;
2347  bindf = 0xdeadbeef;
2348 
2349  memset(&bindinfo, 0, sizeof(bindinfo));
2350  bindinfo.cbSize = sizeof(bindinfo);
2351 
2352  memset(&rem_bindinfo, 0, sizeof(rem_bindinfo));
2353  rem_bindinfo.cbSize = sizeof(rem_bindinfo);
2354 
2355  rem_bindinfo.stgmedData.tymed = TYMED_HGLOBAL;
2356 
2357  buf = GlobalAlloc(0, 5);
2358  strcpy(buf, "test");
2359  rem_bindinfo.stgmedData.u.hGlobal = buf;
2360  rem_bindinfo.cbstgmedData = 5;
2361 
2362  hres = IBindStatusCallback_GetBindInfo(bsc, &bindf, &bindinfo);
2363  ok(hres == S_OK, "GetBindInfo failed: %08x\n", hres);
2364  ok(bindf == rem_bindf, "bindf = %x, expected %x\n", bindf, rem_bindf);
2365 
2366  ok(in_bindinfo.cbSize == sizeof(in_bindinfo), "cbSize = %u\n", in_bindinfo.cbSize);
2367  ok(!in_bindinfo.pUnk, "pUnk = %p\n", in_bindinfo.pUnk);
2368  ok(in_bindinfo.stgmedData.tymed == TYMED_NULL, "tymed = %u\n",
2369  in_bindinfo.stgmedData.tymed);
2370 
2371  ok(bindinfo.cbSize == sizeof(bindinfo), "cbSize = %u\n", bindinfo.cbSize);
2372  ok(!bindinfo.pUnk, "pUnk = %p\n", bindinfo.pUnk);
2373  ok(bindinfo.stgmedData.tymed == TYMED_NULL, "tymed = %u\n",
2374  bindinfo.stgmedData.tymed);
2375  ok(!bindinfo.stgmedData.u.pstm, "stm = %p\n",
2376  bindinfo.stgmedData.u.pstm);
2377  ok(!bindinfo.stgmedData.pUnkForRelease, "pUnkForRelease = %p\n",
2378  bindinfo.stgmedData.pUnkForRelease);
2379  ok(bindinfo.cbstgmedData == 5, "cbstgmedData = %u\n", bindinfo.cbstgmedData);
2380 
2381  ReleaseBindInfo(&bindinfo);
2382 
2383  /* Same with GetBindInfoEx */
2384  hres = IBindStatusCallback_QueryInterface(bsc, &IID_IBindStatusCallbackEx, (void**)&callbackex);
2385  if(SUCCEEDED(hres)) {
2386  DWORD bindf2, reserved;
2387 
2388  rem_bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA;
2389  bindf = bindf2 = reserved = 0xdeadbeef;
2390 
2391  memset(&bindinfo, 0, sizeof(bindinfo));
2392  bindinfo.cbSize = sizeof(bindinfo);
2393  bindinfo.grfBindInfoF = 12;
2394  bindinfo.dwBindVerb = 13;
2395  bindinfo.cbstgmedData = 19;
2396  bindinfo.dwOptions = 14;
2397  bindinfo.dwOptionsFlags = 15;
2398  bindinfo.dwCodePage = 16;
2399  bindinfo.securityAttributes.nLength = 30;
2400  bindinfo.securityAttributes.lpSecurityDescriptor = (void*)0xdead0001;
2401  bindinfo.securityAttributes.bInheritHandle = 31;
2402  bindinfo.iid.Data1 = 17;
2403  bindinfo.pUnk = (IUnknown*)0xdeadbeef;
2404  bindinfo.dwReserved = 18;
2405  bindinfo.stgmedData.pUnkForRelease = &unk_in.IUnknown_iface;
2406  unk_in.ref = 1;
2407 
2408  memset(&rem_bindinfo, 0, sizeof(bindinfo));
2409  rem_bindinfo.cbSize = sizeof(rem_bindinfo);
2410  rem_bindinfo.szExtraInfo = extra_info_out = a2co("extra info out");
2411  rem_bindinfo.grfBindInfoF = 22;
2412  rem_bindinfo.dwBindVerb = 23;
2413  rem_bindinfo.szCustomVerb = verb_out = a2co("custom verb out");
2414  rem_bindinfo.cbstgmedData = 29;
2415  rem_bindinfo.dwOptions = 24;
2416  rem_bindinfo.dwOptionsFlags = 25;
2417  rem_bindinfo.dwCodePage = 16;
2418  rem_bindinfo.securityAttributes.nLength = 40;
2419  rem_bindinfo.securityAttributes.lpSecurityDescriptor = (void*)0xdead0002;
2420  rem_bindinfo.securityAttributes.bInheritHandle = 41;
2421  rem_bindinfo.iid.Data1 = 27;
2422  rem_bindinfo.pUnk = (IUnknown*)0xdeadbeef;
2423  rem_bindinfo.dwReserved = 18;
2424  rem_bindinfo.stgmedData.pUnkForRelease = &unk_out.IUnknown_iface;
2425  unk_out.ref = 1;
2426 
2427  hres = IBindStatusCallbackEx_GetBindInfoEx(callbackex, &bindf, &bindinfo, &bindf2, &reserved);
2428  ok(hres == S_OK, "GetBindInfo failed: %08x\n", hres);
2429  ok(bindf == rem_bindf, "bindf = %x, expected %x\n", bindf, rem_bindf);
2430  ok(bindf2 == 11, "bindf2 = %x\n", bindf);
2431  ok(reserved == 12, "reserved = %x\n", reserved);
2432 
2433  ok(in_bindinfo.cbSize == sizeof(in_bindinfo), "cbSize = %u\n", in_bindinfo.cbSize);
2434  ok(!in_bindinfo.szExtraInfo, "szExtraInfo = %s\n", wine_dbgstr_w(in_bindinfo.szExtraInfo));
2435  ok(in_bindinfo.grfBindInfoF == 12, "cbSize = %u\n", in_bindinfo.grfBindInfoF);
2436  ok(in_bindinfo.dwBindVerb == 13, "dwBindVerb = %u\n", in_bindinfo.dwBindVerb);
2437  ok(!in_bindinfo.szCustomVerb, "szCustomVerb = %s\n", wine_dbgstr_w(in_bindinfo.szCustomVerb));
2438  ok(in_bindinfo.cbstgmedData == 19, "cbstgmedData = %u\n", in_bindinfo.cbstgmedData);
2439  ok(!in_bindinfo.dwOptions, "dwOptions = %u\n", in_bindinfo.dwOptions);
2440  ok(!in_bindinfo.dwOptionsFlags, "dwOptionsFlags = %u\n", in_bindinfo.dwOptionsFlags);
2441  ok(!in_bindinfo.dwCodePage, "dwCodePage = %u\n", in_bindinfo.dwCodePage);
2442  ok(!in_bindinfo.iid.Data1, "iid.Data1 = %u\n", in_bindinfo.iid.Data1);
2443  ok(!in_bindinfo.pUnk, "pUnk = %p\n", in_bindinfo.pUnk);
2444  ok(!in_bindinfo.dwReserved, "dwReserved = %u\n", in_bindinfo.dwReserved);
2445  ok(!in_bindinfo.securityAttributes.nLength, "securityAttributes.nLength = %u\n",
2446  in_bindinfo.securityAttributes.nLength);
2447  ok(!in_bindinfo.securityAttributes.lpSecurityDescriptor,
2448  "securityAttributes.lpSecurityDescriptor = %p\n",
2449  in_bindinfo.securityAttributes.lpSecurityDescriptor);
2450  ok(!in_bindinfo.securityAttributes.bInheritHandle, "securityAttributes.bInheritHandle = %u\n",
2451  in_bindinfo.securityAttributes.bInheritHandle);
2452  ok(!in_bindinfo.stgmedData.pUnkForRelease, "pUnkForRelease = %p\n",
2453  in_bindinfo.stgmedData.pUnkForRelease);
2454 
2455  ok(bindinfo.cbSize == sizeof(rem_bindinfo), "cbSize = %u\n", rem_bindinfo.cbSize);
2456  ok(!strcmp_wa(bindinfo.szExtraInfo, "extra info out"),
2457  "szExtraInfo = %s\n", wine_dbgstr_w(bindinfo.szExtraInfo));
2458  ok(bindinfo.grfBindInfoF == 22, "grfBindInfoF = %u\n", rem_bindinfo.grfBindInfoF);
2459  ok(bindinfo.dwBindVerb == 23, "dwBindVerb = %u\n", bindinfo.dwBindVerb);
2460  ok(bindinfo.szCustomVerb != verb_out, "szCustomVerb == inbuf\n");
2461  ok(!strcmp_wa(bindinfo.szCustomVerb, "custom verb out"), "szCustomVerb = %s\n",
2462  wine_dbgstr_w(bindinfo.szCustomVerb));
2463  ok(bindinfo.cbstgmedData == 29, "cbstgmedData = %u\n", bindinfo.cbstgmedData);
2464  ok(bindinfo.dwOptions == 24, "dwOptions = %u\n", bindinfo.dwOptions);
2465  ok(bindinfo.dwOptionsFlags == 25, "dwOptionsFlags = %u\n", bindinfo.dwOptionsFlags);
2466  ok(bindinfo.dwCodePage, "dwCodePage = %u\n", bindinfo.dwCodePage);
2467  ok(!bindinfo.iid.Data1, "iid.Data1 = %u\n", bindinfo.iid.Data1);
2468  ok(!bindinfo.pUnk, "pUnk = %p\n", bindinfo.pUnk);
2469  ok(bindinfo.dwReserved == 18, "dwReserved = %u\n", bindinfo.dwReserved);
2470  ok(bindinfo.securityAttributes.nLength == 30, "securityAttributes.nLength = %u\n",
2471  bindinfo.securityAttributes.nLength);
2472  ok(bindinfo.securityAttributes.lpSecurityDescriptor == (void*)0xdead0001,
2473  "securityAttributes.lpSecurityDescriptor = %p\n",
2474  bindinfo.securityAttributes.lpSecurityDescriptor);
2475  ok(bindinfo.securityAttributes.bInheritHandle == 31, "securityAttributes.bInheritHandle = %u\n",
2476  bindinfo.securityAttributes.bInheritHandle);
2477  ok(bindinfo.stgmedData.pUnkForRelease == &unk_in.IUnknown_iface, "pUnkForRelease = %p\n",
2478  bindinfo.stgmedData.pUnkForRelease);
2479  ok(unk_out.ref == 1, "unk_out.ref = %u\n", unk_out.ref);
2480 
2481  bindinfo.stgmedData.pUnkForRelease = NULL;
2482  ReleaseBindInfo(&bindinfo);
2483 
2484  zero.QuadPart = 0;
2485  hres = IStream_Seek(binding_stream, zero, STREAM_SEEK_SET, NULL);
2486  ok(hres == S_OK, "Seek failed: 0x%08x\n", hres);
2487 
2488  /* Return IStream stgmed from GetBindInfoEx, it's not marshaled back */
2489  rem_bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA;
2490  bindf = bindf2 = reserved = 0xdeadbeef;
2491 
2492  memset(&bindinfo, 0, sizeof(bindinfo));
2493  bindinfo.cbSize = sizeof(bindinfo);
2494 
2495  memset(&rem_bindinfo, 0, sizeof(rem_bindinfo));
2496  rem_bindinfo.cbSize = sizeof(rem_bindinfo);
2497 
2498  rem_bindinfo.stgmedData.tymed = TYMED_ISTREAM;
2499  rem_bindinfo.stgmedData.u.pstm = binding_stream;
2500  rem_bindinfo.cbstgmedData = 3;
2501  IStream_AddRef(binding_stream);
2502 
2503  hres = IBindStatusCallbackEx_GetBindInfoEx(callbackex, &bindf, &bindinfo, &bindf2, &reserved);
2504  ok(hres == S_OK, "GetBindInfoEx failed: %08x\n", hres);
2505  ok(bindf == rem_bindf, "bindf = %x, expected %x\n", bindf, rem_bindf);
2506 
2507  ok(in_bindinfo.cbSize == sizeof(in_bindinfo), "cbSize = %u\n", in_bindinfo.cbSize);
2508  ok(!in_bindinfo.pUnk, "pUnk = %p\n", in_bindinfo.pUnk);
2509  ok(in_bindinfo.stgmedData.tymed == TYMED_NULL, "tymed = %u\n",
2510  in_bindinfo.stgmedData.tymed);
2511 
2512  ok(bindinfo.cbSize == sizeof(bindinfo), "cbSize = %u\n", bindinfo.cbSize);
2513  ok(!bindinfo.pUnk, "pUnk = %p\n", bindinfo.pUnk);
2514  ok(bindinfo.stgmedData.tymed == TYMED_NULL, "tymed = %u\n",
2515  bindinfo.stgmedData.tymed);
2516  ok(!bindinfo.stgmedData.u.pstm, "stm = %p\n",
2517  bindinfo.stgmedData.u.pstm);
2518  ok(!bindinfo.stgmedData.pUnkForRelease, "pUnkForRelease = %p\n",
2519  bindinfo.stgmedData.pUnkForRelease);
2520  ok(bindinfo.cbstgmedData == 3, "cbstgmedData = %u\n", bindinfo.cbstgmedData);
2521 
2522  ReleaseBindInfo(&bindinfo);
2523 
2524  /* Same, but with pUnkForRelease, it's not marshaled back */
2525  rem_bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA;
2526  bindf = bindf2 = reserved = 0xdeadbeef;
2527 
2528  memset(&bindinfo, 0, sizeof(bindinfo));
2529  bindinfo.cbSize = sizeof(bindinfo);
2530 
2531  memset(&rem_bindinfo, 0, sizeof(rem_bindinfo));
2532  rem_bindinfo.cbSize = sizeof(rem_bindinfo);
2533 
2534  rem_bindinfo.stgmedData.tymed = TYMED_ISTREAM;
2535  rem_bindinfo.stgmedData.u.pstm = binding_stream;
2536  rem_bindinfo.stgmedData.pUnkForRelease = &unk_out.IUnknown_iface;
2537  unk_out.ref = 1;
2538  rem_bindinfo.cbstgmedData = 3;
2539  IStream_AddRef(binding_stream);
2540 
2541  hres = IBindStatusCallbackEx_GetBindInfoEx(callbackex, &bindf, &bindinfo, &bindf2, &reserved);
2542  ok(hres == S_OK, "GetBindInfoEx failed: %08x\n", hres);
2543  ok(bindf == rem_bindf, "bindf = %x, expected %x\n", bindf, rem_bindf);
2544 
2545  ok(in_bindinfo.cbSize == sizeof(in_bindinfo), "cbSize = %u\n", in_bindinfo.cbSize);
2546  ok(!in_bindinfo.pUnk, "pUnk = %p\n", in_bindinfo.pUnk);
2547  ok(in_bindinfo.stgmedData.tymed == TYMED_NULL, "tymed = %u\n",
2548  in_bindinfo.stgmedData.tymed);
2549 
2550  ok(bindinfo.cbSize == sizeof(bindinfo), "cbSize = %u\n", bindinfo.cbSize);
2551  ok(!bindinfo.pUnk, "pUnk = %p\n", bindinfo.pUnk);
2552  ok(bindinfo.stgmedData.tymed == TYMED_NULL, "tymed = %u\n",
2553  bindinfo.stgmedData.tymed);
2554  ok(!bindinfo.stgmedData.u.pstm, "stm = %p\n",
2555  bindinfo.stgmedData.u.pstm);
2556  ok(!bindinfo.stgmedData.pUnkForRelease, "pUnkForRelease = %p\n",
2557  bindinfo.stgmedData.pUnkForRelease);
2558  ok(bindinfo.cbstgmedData == 3, "cbstgmedData = %u\n", bindinfo.cbstgmedData);
2559 
2560  ReleaseBindInfo(&bindinfo);
2561 
2562  /* Return HGLOBAL stgmed from GetBindInfoEx, it's not marshaled back */
2563  rem_bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA;
2564  bindf = bindf2 = reserved = 0xdeadbeef;
2565 
2566  memset(&bindinfo, 0, sizeof(bindinfo));
2567  bindinfo.cbSize = sizeof(bindinfo);
2568 
2569  memset(&rem_bindinfo, 0, sizeof(rem_bindinfo));
2570  rem_bindinfo.cbSize = sizeof(rem_bindinfo);
2571 
2572  rem_bindinfo.stgmedData.tymed = TYMED_HGLOBAL;
2573 
2574  buf = GlobalAlloc(0, 5);
2575  strcpy(buf, "test");
2576  rem_bindinfo.stgmedData.u.hGlobal = buf;
2577  rem_bindinfo.cbstgmedData = 5;
2578 
2579  hres = IBindStatusCallbackEx_GetBindInfoEx(callbackex, &bindf, &bindinfo, &bindf2, &reserved);
2580  ok(hres == S_OK, "GetBindInfoEx failed: %08x\n", hres);
2581  ok(bindf == rem_bindf, "bindf = %x, expected %x\n", bindf, rem_bindf);
2582 
2583  ok(in_bindinfo.cbSize == sizeof(in_bindinfo), "cbSize = %u\n", in_bindinfo.cbSize);
2584  ok(!in_bindinfo.pUnk, "pUnk = %p\n", in_bindinfo.pUnk);
2585  ok(in_bindinfo.stgmedData.tymed == TYMED_NULL, "tymed = %u\n",
2586  in_bindinfo.stgmedData.tymed);
2587 
2588  ok(bindinfo.cbSize == sizeof(bindinfo), "cbSize = %u\n", bindinfo.cbSize);
2589  ok(!bindinfo.pUnk, "pUnk = %p\n", bindinfo.pUnk);
2590  ok(bindinfo.stgmedData.tymed == TYMED_NULL, "tymed = %u\n",
2591  bindinfo.stgmedData.tymed);
2592  ok(!bindinfo.stgmedData.u.pstm, "stm = %p\n",
2593  bindinfo.stgmedData.u.pstm);
2594  ok(!bindinfo.stgmedData.pUnkForRelease, "pUnkForRelease = %p\n",
2595  bindinfo.stgmedData.pUnkForRelease);
2596  ok(bindinfo.cbstgmedData == 5, "cbstgmedData = %u\n", bindinfo.cbstgmedData);
2597 
2598  ReleaseBindInfo(&bindinfo);
2599 
2600  IBindStatusCallbackEx_Release(callbackex);
2601  }else {
2602  win_skip("IBindStatusCallbackEx not supported\n");
2603  }
2604 
2605  /* Test marshaling stgmed from OnDataAvailable */
2606  memset(&in_stgmed, 0xcc, sizeof(in_stgmed));
2607  stgmed.tymed = TYMED_ISTREAM;
2608  stgmed.u.pstm = binding_stream;
2609  stgmed.pUnkForRelease = NULL;
2610 
2611  hres = IBindStatusCallback_OnDataAvailable(bsc, 1, 10, &formatetc, &stgmed);
2612  ok(hres == S_OK, "OnDataAvailable failed: %08x\n", hres);
2613 
2614  ok(in_stgmed.tymed == TYMED_ISTREAM, "tymed = %u\n", in_stgmed.tymed);
2615  ok(in_stgmed.u.pstm != NULL, "pstm = NULL\n");
2616  ok(!in_stgmed.pUnkForRelease, "pUnkForRelease = %p\n", in_stgmed.pUnkForRelease);
2617 
2618  /* OnDataAvailable with both IStream and pUnkForRelease */
2619  memset(&in_stgmed, 0xcc, sizeof(in_stgmed));
2620  stgmed.tymed = TYMED_ISTREAM;
2621  stgmed.u.pstm = binding_stream;
2622  stgmed.pUnkForRelease = &unk_in.IUnknown_iface;
2623  unk_in.ref = 1;
2624 
2625  hres = IBindStatusCallback_OnDataAvailable(bsc, 1, 10, &formatetc, &stgmed);
2626  ok(hres == S_OK, "OnDataAvailable failed: %08x\n", hres);
2627 
2628  ok(in_stgmed.tymed == TYMED_ISTREAM, "tymed = %u\n", in_stgmed.tymed);
2629  ok(in_stgmed.u.pstm != NULL, "pstm = NULL\n");
2630  ok(in_stgmed.pUnkForRelease != NULL, "pUnkForRelease = %p\n", in_stgmed.pUnkForRelease);
2631  ok(unk_in.ref > 1, "ref = %u\n", unk_in.ref);
2632 
2633  /* OnDataAvailable with TYMED_ISTREAM, but NULL stream */
2634  memset(&in_stgmed, 0xcc, sizeof(in_stgmed));
2635  stgmed.tymed = TYMED_ISTREAM;
2636  stgmed.u.pstm = binding_stream;
2637  stgmed.pUnkForRelease = NULL;
2638 
2639  hres = IBindStatusCallback_OnDataAvailable(bsc, 1, 10, &formatetc, &stgmed);
2640  ok(hres == S_OK, "OnDataAvailable failed: %08x\n", hres);
2641 
2642  ok(in_stgmed.tymed == TYMED_ISTREAM, "tymed = %u\n", in_stgmed.tymed);
2643  ok(in_stgmed.u.pstm != NULL, "pstm = NULL\n");
2644  ok(!in_stgmed.pUnkForRelease, "pUnkForRelease = %p\n", in_stgmed.pUnkForRelease);
2645 
2646  /* OnDataAvailable with TYMED_NULL and pUnkForRelease */
2647  memset(&in_stgmed, 0xcc, sizeof(in_stgmed));
2648  stgmed.tymed = TYMED_NULL;
2649  stgmed.u.pstm = binding_stream;
2650  stgmed.pUnkForRelease = &unk_in.IUnknown_iface;
2651  unk_in.ref = 1;
2652 
2653  hres = IBindStatusCallback_OnDataAvailable(bsc, 1, 10, &formatetc, &stgmed);
2654  ok(hres == S_OK, "OnDataAvailable failed: %08x\n", hres);
2655 
2656  ok(in_stgmed.tymed == TYMED_NULL, "tymed = %u\n", in_stgmed.tymed);
2657  ok(!in_stgmed.u.pstm, "pstm != NULL\n");
2658  ok(in_stgmed.pUnkForRelease != NULL, "pUnkForRelease = %p\n", in_stgmed.pUnkForRelease);
2659  ok(unk_in.ref == 1, "ref = %u\n", unk_in.ref);
2660 
2661  IStream_Release(binding_stream);
2662  IBindStatusCallback_Release(bsc);
2663 
2664  TerminateThread(thread, 0);
2665 }
HRESULT WINAPI CoUnmarshalInterface(IStream *pStream, REFIID riid, LPVOID *ppv)
Definition: marshal.c:1981
#define TRUE
Definition: types.h:120
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
Definition: heapmem.c:368
BOOL WINAPI TerminateThread(IN HANDLE hThread, IN DWORD dwExitCode)
Definition: thread.c:586
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
static DWORD WINAPI bsc_thread(void *arg)
Definition: misc.c:2114
char * wine_dbgstr_w(const wchar_t *wstr)
Definition: atltest.h:87
void WINAPI ReleaseBindInfo(BINDINFO *pbindinfo)
Definition: urlmon_main.c:572
static HANDLE thread_ready
Definition: misc.c:2112
HRESULT WINAPI CreateStreamOnHGlobal(HGLOBAL hGlobal, BOOL fDeleteOnRelease, LPSTREAM *ppstm)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
Definition: synch.c:651
static BINDINFO in_bindinfo
Definition: misc.c:1960
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
Definition: synch.c:82
IUnknown IUnknown_iface
Definition: misc.c:2071
r reserved
Definition: btrfs.c:2865
static IBindStatusCallbackEx bsc
Definition: url.c:2150
static STGMEDIUM in_stgmed
Definition: misc.c:2026
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
Definition: thread.c:136
smooth NULL
Definition: ftsmooth.c:416
static RefUnk unk_in
Definition: misc.c:2110
static WCHAR * a2co(const char *str)
Definition: misc.c:109
static DWORD rem_bindf
Definition: misc.c:1961
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
HRESULT hres
Definition: misc.c:488
unsigned long DWORD
Definition: ntddk_ex.h:95
static BINDINFO rem_bindinfo
Definition: misc.c:1960
static HANDLE thread
Definition: service.c:33
static double zero
Definition: j0_y0.c:96
Definition: parse.h:22
GLuint GLuint stream
Definition: glext.h:7522
static RefUnk unk_out
Definition: misc.c:2110
static int strcmp_wa(const WCHAR *strw, const char *stra)
Definition: misc.c:87
#define S_OK
Definition: intsafe.h:59
#define ok(value,...)
Definition: atltest.h:57
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
#define INFINITE
Definition: serial.h:102
#define memset(x, y, z)
Definition: compat.h:39
#define win_skip
Definition: test.h:150
LONG ref
Definition: misc.c:2072
#define SUCCEEDED(hr)
Definition: intsafe.h:57
static DWORD bindf
Definition: protocol.c:70

Referenced by START_TEST().

◆ test_CoInternetCompareUrl()

static void test_CoInternetCompareUrl ( void  )
static

Definition at line 429 of file misc.c.

430 {
431  HRESULT hres;
432 
433  hres = pCoInternetCompareUrl(url1, url1, 0);
434  ok(hres == S_OK, "CoInternetCompareUrl failed: %08x\n", hres);
435 
436  hres = pCoInternetCompareUrl(url1, url3, 0);
437  ok(hres == S_FALSE, "CoInternetCompareUrl failed: %08x\n", hres);
438 
439  hres = pCoInternetCompareUrl(url3, url1, 0);
440  ok(hres == S_FALSE, "CoInternetCompareUrl failed: %08x\n", hres);
441 }
#define S_FALSE
Definition: winerror.h:2357
static const WCHAR url1[]
Definition: misc.c:300
LONG HRESULT
Definition: typedefs.h:77
HRESULT hres
Definition: misc.c:488
static const WCHAR url3[]
Definition: misc.c:303
#define S_OK
Definition: intsafe.h:59
#define ok(value,...)
Definition: atltest.h:57

Referenced by START_TEST().

◆ test_CoInternetIsFeatureEnabled()

static void test_CoInternetIsFeatureEnabled ( void  )
static

Definition at line 1876 of file misc.c.

1876  {
1877  HRESULT hres;
1878 
1879  hres = pCoInternetIsFeatureEnabled(FEATURE_ENTRY_COUNT, GET_FEATURE_FROM_PROCESS);
1880  ok(hres == E_FAIL, "CoInternetIsFeatureEnabled returned %08x, expected E_FAIL\n", hres);
1881 }
#define E_FAIL
Definition: ddrawi.h:102
LONG HRESULT
Definition: typedefs.h:77
HRESULT hres
Definition: misc.c:488
#define ok(value,...)
Definition: atltest.h:57

Referenced by test_internet_features().

◆ test_CoInternetParseUrl()

static void test_CoInternetParseUrl ( void  )
static

Definition at line 359 of file misc.c.

360 {
361  HRESULT hres;
362  DWORD size;
363  int i;
364 
365  static WCHAR buf[4096];
366 
367  memset(buf, 0xf0, sizeof(buf));
368  hres = pCoInternetParseUrl(parse_tests[0].url, PARSE_SCHEMA, 0, buf,
369  3, &size, 0);
370  ok(hres == E_POINTER, "schema failed: %08x, expected E_POINTER\n", hres);
371 
372  for(i = 0; i < ARRAY_SIZE(parse_tests); i++) {
373  memset(buf, 0xf0, sizeof(buf));
374  hres = pCoInternetParseUrl(parse_tests[i].url, PARSE_SECURITY_URL, 0, buf,
375  ARRAY_SIZE(buf), &size, 0);
376  ok(hres == parse_tests[i].secur_hres, "[%d] security url failed: %08x, expected %08x\n",
377  i, hres, parse_tests[i].secur_hres);
378 
379  memset(buf, 0xf0, sizeof(buf));
380  hres = pCoInternetParseUrl(parse_tests[i].url, PARSE_ENCODE, 0, buf,
381  ARRAY_SIZE(buf), &size, 0);
382  ok(hres == S_OK, "[%d] encoding failed: %08x\n", i, hres);
383  ok(size == lstrlenW(parse_tests[i].encoded_url), "[%d] wrong size\n", i);
384  ok(!lstrcmpW(parse_tests[i].encoded_url, buf), "[%d] wrong encoded url\n", i);
385 
386  memset(buf, 0xf0, sizeof(buf));
387  hres = pCoInternetParseUrl(parse_tests[i].url, PARSE_UNESCAPE, 0, buf,
388  ARRAY_SIZE(buf), &size, 0);
389  ok(hres == S_OK, "[%d] encoding failed: %08x\n", i, hres);
390  ok(size == lstrlenW(parse_tests[i].encoded_url), "[%d] wrong size\n", i);
391  ok(!lstrcmpW(parse_tests[i].encoded_url, buf), "[%d] wrong encoded url\n", i);
392 
393  memset(buf, 0xf0, sizeof(buf));
394  hres = pCoInternetParseUrl(parse_tests[i].url, PARSE_PATH_FROM_URL, 0, buf,
395  ARRAY_SIZE(buf), &size, 0);
396  ok(hres == parse_tests[i].path_hres, "[%d] path failed: %08x, expected %08x\n",
397  i, hres, parse_tests[i].path_hres);
398  if(parse_tests[i].path) {
399  ok(size == lstrlenW(parse_tests[i].path), "[%d] wrong size\n", i);
400  ok(!lstrcmpW(parse_tests[i].path, buf), "[%d] wrong path\n", i);
401  }
402 
403  memset(buf, 0xf0, sizeof(buf));
404  hres = pCoInternetParseUrl(parse_tests[i].url, PARSE_SCHEMA, 0, buf,
405  ARRAY_SIZE(buf), &size, 0);
406  ok(hres == S_OK, "[%d] schema failed: %08x\n", i, hres);
407  ok(size == lstrlenW(parse_tests[i].schema), "[%d] wrong size\n", i);
408  ok(!lstrcmpW(parse_tests[i].schema, buf), "[%d] wrong schema\n", i);
409 
410  if(memcmp(parse_tests[i].url, wszRes, 3*sizeof(WCHAR))
411  && memcmp(parse_tests[i].url, wszAbout, 5*sizeof(WCHAR))) {
412  memset(buf, 0xf0, sizeof(buf));
413  hres = pCoInternetParseUrl(parse_tests[i].url, PARSE_DOMAIN, 0, buf,
414  ARRAY_SIZE(buf), &size, 0);
415  ok(hres == parse_tests[i].domain_hres, "[%d] domain failed: %08x\n", i, hres);
416  if(parse_tests[i].domain)
417  ok(!lstrcmpW(parse_tests[i].domain, buf), "[%d] wrong domain, received %s\n", i, wine_dbgstr_w(buf));
418  }
419 
420  memset(buf, 0xf0, sizeof(buf));
421  hres = pCoInternetParseUrl(parse_tests[i].url, PARSE_ROOTDOCUMENT, 0, buf,
422  ARRAY_SIZE(buf), &size, 0);
423  ok(hres == parse_tests[i].rootdocument_hres, "[%d] rootdocument failed: %08x\n", i, hres);
424  if(parse_tests[i].rootdocument)
425  ok(!lstrcmpW(parse_tests[i].rootdocument, buf), "[%d] wrong rootdocument, received %s\n", i, wine_dbgstr_w(buf));
426  }
427 }
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
Definition: utclib.c:112
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
char * wine_dbgstr_w(const wchar_t *wstr)
Definition: atltest.h:87
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:170
static const struct parse_test parse_tests[]
Definition: misc.c:349
#define lstrlenW
Definition: compat.h:415
Definition: cookie.c:41
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
Definition: glfuncs.h:248
GLsizeiptr size
Definition: glext.h:5919
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
unsigned long DWORD
Definition: ntddk_ex.h:95
HRESULT hres
Definition: misc.c:488
#define S_OK
Definition: intsafe.h:59
#define ARRAY_SIZE(a)
Definition: main.h:24
#define ok(value,...)
Definition: atltest.h:57
const WCHAR * schema
static const WCHAR wszRes[]
Definition: misc.c:323
DWORD size
Definition: misc.c:605
#define E_POINTER
Definition: winerror.h:2365
#define memset(x, y, z)
Definition: compat.h:39
static const WCHAR wszAbout[]
Definition: misc.c:326
LPCWSTR url
Definition: misc.c:444

Referenced by START_TEST().

◆ test_CoInternetQueryInfo()

static void test_CoInternetQueryInfo ( void  )
static

Definition at line 457 of file misc.c.

458 {
459  BYTE buf[100];
460  DWORD cb, i;
461  HRESULT hres;
462 
463  for(i = 0; i < ARRAY_SIZE(query_info_tests); i++) {
464  cb = 0xdeadbeef;
465  memset(buf, '?', sizeof(buf));
466  hres = pCoInternetQueryInfo(query_info_tests[0].url, QUERY_USES_NETWORK, 0, buf, sizeof(buf), &cb, 0);
467  ok(hres == S_OK, "[%d] CoInternetQueryInfo failed: %08x\n", i, hres);
468  ok(cb == sizeof(DWORD), "[%d] cb = %d\n", i, cb);
469  ok(*(DWORD*)buf == query_info_tests[i].uses_net, "[%d] ret %x, expected %x\n",
471 
472  hres = pCoInternetQueryInfo(query_info_tests[0].url, QUERY_USES_NETWORK, 0, buf, 3, &cb, 0);
473  ok(hres == E_FAIL, "[%d] CoInternetQueryInfo failed: %08x, expected E_FAIL\n", i, hres);
474  hres = pCoInternetQueryInfo(query_info_tests[0].url, QUERY_USES_NETWORK, 0, NULL, sizeof(buf), &cb, 0);
475  ok(hres == E_FAIL, "[%d] CoInternetQueryInfo failed: %08x, expected E_FAIL\n", i, hres);
476 
477  memset(buf, '?', sizeof(buf));
478  hres = pCoInternetQueryInfo(query_info_tests[0].url, QUERY_USES_NETWORK, 0, buf, sizeof(buf), NULL, 0);
479  ok(hres == S_OK, "[%d] CoInternetQueryInfo failed: %08x\n", i, hres);
480  ok(*(DWORD*)buf == query_info_tests[i].uses_net, "[%d] ret %x, expected %x\n",
482  }
483 }
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
DWORD uses_net
Definition: misc.c:445
#define E_FAIL
Definition: ddrawi.h:102
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
Definition: glfuncs.h:248
static const struct @1662 query_info_tests[]
smooth NULL
Definition: ftsmooth.c:416
LONG HRESULT
Definition: typedefs.h:77
HRESULT hres
Definition: misc.c:488
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned char BYTE
Definition: mem.h:68
#define S_OK
Definition: intsafe.h:59
#define ARRAY_SIZE(a)
Definition: main.h:24
#define ok(value,...)
Definition: atltest.h:57
static HMODULE MODULEINFO DWORD cb
Definition: module.c:32
#define memset(x, y, z)
Definition: compat.h:39
LPCWSTR url
Definition: misc.c:444

Referenced by START_TEST().

◆ test_CoInternetSetFeatureEnabled()

static void test_CoInternetSetFeatureEnabled ( void  )
static

Definition at line 1898 of file misc.c.

1898  {
1899  HRESULT hres;
1900  DWORD i;
1901 
1902  hres = pCoInternetSetFeatureEnabled(FEATURE_ENTRY_COUNT,SET_FEATURE_ON_PROCESS,TRUE);
1903  ok(hres == E_FAIL, "CoInternetSetFeatureEnabled returned %08x, expected E_FAIL\n", hres);
1904 
1905  for(i = 0; i < ARRAY_SIZE(internet_feature_tests); ++i) {
1906  hres = pCoInternetSetFeatureEnabled(internet_feature_tests[i].feature, internet_feature_tests[i].set_flags,
1909  ok(hres == internet_feature_tests[i].set_expected, "CoInternetSetFeatureEnabled returned %08x, expected %08x on test %d\n",
1911 
1912  hres = pCoInternetIsFeatureEnabled(internet_feature_tests[i].feature, internet_feature_tests[i].set_flags);
1914  ok(hres == internet_feature_tests[i].get_expected, "CoInternetIsFeatureEnabled returned %08x, expected %08x on test %d\n",
1916 
1917  }
1918 }
INTERNETFEATURELIST feature
Definition: misc.c:1719
#define TRUE
Definition: types.h:120
BOOL set_todo
Definition: misc.c:1888
HRESULT set_expected
Definition: misc.c:1887
HRESULT get_expected
Definition: misc.c:1890
#define E_FAIL
Definition: ddrawi.h:102
BOOL get_todo
Definition: misc.c:1891
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
Definition: glfuncs.h:248
static const struct @1666 internet_feature_tests[]
#define todo_wine_if(is_todo)
Definition: test.h:164
LONG HRESULT
Definition: typedefs.h:77
unsigned long DWORD
Definition: ntddk_ex.h:95
HRESULT hres
Definition: misc.c:488
GLboolean enable
Definition: glext.h:11120
#define ARRAY_SIZE(a)
Definition: main.h:24
#define ok(value,...)
Definition: atltest.h:57
DWORD set_flags
Definition: misc.c:1885

Referenced by test_internet_features().

◆ test_CopyBindInfo()

static void test_CopyBindInfo ( void  )
static

Definition at line 1328 of file misc.c.

1329 {
1330  BINDINFO src[2], dest[2];
1331  SECURITY_DESCRIPTOR sec_desc;
1332  HRESULT hres;
1333  int i;
1334 
1335  hres = pCopyBindInfo(NULL, NULL);
1336  ok(hres == E_POINTER, "CopyBindInfo returned %08x, expected E_POINTER\n", hres);
1337 
1338  memset(src, 0, sizeof(BINDINFO[2]));
1339  memset(dest, 0xde, sizeof(BINDINFO[2]));
1340  hres = pCopyBindInfo(src, dest);
1341  ok(hres == E_INVALIDARG, "CopyBindInfo returned: %08x, expected E_INVALIDARG\n", hres);
1342 
1343  memset(src, 0, sizeof(BINDINFO[2]));
1344  memset(dest, 0xde, sizeof(BINDINFO[2]));
1345  src[0].cbSize = sizeof(BINDINFO);
1346  dest[0].cbSize = 0;
1347  hres = pCopyBindInfo(src, dest);
1348  ok(hres == E_INVALIDARG, "CopyBindInfo returned: %08x, expected E_INVALIDARG\n", hres);
1349 
1350  memset(src, 0, sizeof(BINDINFO[2]));
1351  memset(dest, 0xde, sizeof(BINDINFO[2]));
1352  src[0].cbSize = 1;
1353  dest[0].cbSize = sizeof(BINDINFO)+sizeof(DWORD);
1354  hres = pCopyBindInfo(src, dest);
1355  ok(hres == S_OK, "CopyBindInfo failed: %08x\n", hres);
1356  ok(dest[0].cbSize == sizeof(BINDINFO)+sizeof(DWORD), "incorrect cbSize: %d\n", dest[0].cbSize);
1357  for(i=1; i<dest[0].cbSize/sizeof(int); i++)
1358  ok(((int*)dest)[i] == 0, "unset values should be set to 0, got %d on %d\n", ((int*)dest)[i], i);
1359 
1360  memset(src, 0, sizeof(BINDINFO[2]));
1361  memset(dest, 0xde, sizeof(BINDINFO[2]));
1362  src[0].cbSize = sizeof(BINDINFO)+2*sizeof(DWORD);
1363  dest[0].cbSize = sizeof(BINDINFO)+sizeof(DWORD);
1364  hres = pCopyBindInfo(src, dest);
1365  ok(hres == S_OK, "CopyBindInfo failed: %08x\n", hres);
1366  ok(dest[1].cbSize == src[1].cbSize, "additional data should be copied\n");
1367  ok(dest[1].szExtraInfo != src[1].szExtraInfo,
1368  "data not fitting in destination buffer should not be copied\n");
1369 
1370  memset(src, 0xf0, sizeof(BINDINFO[2]));
1371  memset(dest, 0xde, sizeof(BINDINFO[2]));
1372  src[0].cbSize = sizeof(BINDINFO);
1373  src[0].szExtraInfo = CoTaskMemAlloc(sizeof(WCHAR));
1374  src[0].szExtraInfo[0] = 0;
1375  src[0].szCustomVerb = NULL;
1376  src[0].pUnk = NULL;
1377  src[0].stgmedData.tymed = TYMED_NULL;
1378  src[0].stgmedData.pUnkForRelease = NULL;
1379  dest[0].cbSize = sizeof(BINDINFO);
1380  hres = pCopyBindInfo(src, dest);
1381  ok(hres == S_OK, "CopyBindInfo failed: %08x\n", hres);
1382 
1383  ok(dest[0].cbSize == sizeof(BINDINFO), "incorrect cbSize: %d\n", dest[0].cbSize);
1384  ok(dest[0].szExtraInfo && !dest[0].szExtraInfo[0] && dest[0].szExtraInfo!=src[0].szExtraInfo,
1385  "incorrect szExtraInfo: (%p!=%p) %d\n", dest[0].szExtraInfo,
1386  src[0].szExtraInfo, dest[0].szExtraInfo[0]);
1387  ok(!memcmp(&dest[0].stgmedData, &src[0].stgmedData, sizeof(STGMEDIUM)),
1388  "incorrect stgmedData value\n");
1389  ok(src[0].grfBindInfoF == dest[0].grfBindInfoF, "grfBindInfoF = %x, expected %x\n",
1390  dest[0].grfBindInfoF, src[0].grfBindInfoF);
1391  ok(src[0].dwBindVerb == dest[0].dwBindVerb, "dwBindVerb = %x, expected %x\n",
1392  dest[0].dwBindVerb, src[0].dwBindVerb);
1393  ok(!dest[0].szCustomVerb, "szCustmoVerb != NULL\n");
1394  ok(src[0].cbstgmedData == dest[0].cbstgmedData, "cbstgmedData = %x, expected %x\n",
1395  dest[0].cbstgmedData, src[0].cbstgmedData);
1396  ok(src[0].dwOptions == dest[0].dwOptions, "dwOptions = %x, expected %x\n",
1397  dest[0].dwOptions, src[0].dwOptions);
1398  ok(src[0].dwOptionsFlags == dest[0].dwOptionsFlags, "dwOptionsFlags = %x, expected %x\n",
1399  dest[0].dwOptionsFlags, src[0].dwOptionsFlags);
1400  ok(src[0].dwCodePage == dest[0].dwCodePage, "dwCodePage = %x, expected %x\n",
1401  dest[0].dwCodePage, src[0].dwCodePage);
1402  ok(!dest[0].securityAttributes.nLength,
1403  "unexpected securityAttributes.nLength value: %d\n",
1404  dest[0].securityAttributes.nLength);
1405  ok(!dest[0].securityAttributes.lpSecurityDescriptor,
1406  "unexpected securityAttributes.lpSecurityDescriptor value: %p\n",
1407  dest[0].securityAttributes.lpSecurityDescriptor);
1408  ok(!dest[0].securityAttributes.bInheritHandle,
1409  "unexpected securityAttributes.bInheritHandle value: %d\n",
1410  dest[0].securityAttributes.bInheritHandle);
1411  ok(!memcmp(&dest[0].iid, &src[0].iid, sizeof(IID)),
1412  "incorrect iid value\n");
1413  ok(!dest[0].pUnk, "pUnk != NULL\n");
1414  ok(src[0].dwReserved == dest[0].dwReserved, "dwReserved = %x, expected %x\n",
1415  dest[0].dwReserved, src[0].dwReserved);
1416 
1417  CoTaskMemFree(src[0].szExtraInfo);
1418  CoTaskMemFree(dest[0].szExtraInfo);
1419 
1420  src[0].szExtraInfo = NULL;
1421  src[0].securityAttributes.nLength = sizeof(SECURITY_ATTRIBUTES);
1423  "InitializeSecurityDescriptor failed\n");
1424  src[0].securityAttributes.lpSecurityDescriptor = (void*)&sec_desc;
1425  src[0].securityAttributes.bInheritHandle = TRUE;
1426  hres = pCopyBindInfo(src, dest);
1427  ok(hres == S_OK, "CopyBindInfo failed: %08x\n", hres);
1428  ok(!dest[0].securityAttributes.nLength,
1429  "unexpected securityAttributes.nLength value: %d\n",
1430  dest[0].securityAttributes.nLength);
1431  ok(!dest[0].securityAttributes.lpSecurityDescriptor,
1432  "unexpected securityAttributes.lpSecurityDescriptor value: %p\n",
1433  dest[0].securityAttributes.lpSecurityDescriptor);
1434  ok(!dest[0].securityAttributes.bInheritHandle,
1435  "unexpected securityAttributes.bInheritHandle value: %d\n",
1436  dest[0].securityAttributes.bInheritHandle);
1437 }
DWORD dwOptions
Definition: solitaire.cpp:23
#define TRUE
Definition: types.h:120
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
Definition: utclib.c:112
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:420
BOOL WINAPI InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR pSecurityDescriptor, DWORD dwRevision)
Definition: security.c:808
static int
Definition: misc.c:55
#define SECURITY_DESCRIPTOR_REVISION
Definition: setypes.h:58
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
Definition: glfuncs.h:248
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
Definition: mswsock.h:90
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
unsigned long DWORD
Definition: ntddk_ex.h:95
HRESULT hres
Definition: misc.c:488
GLenum src
Definition: glext.h:6340
#define S_OK
Definition: intsafe.h:59
#define ok(value,...)
Definition: atltest.h:57
static char * dest
Definition: rtl.c:135
#define E_POINTER
Definition: winerror.h:2365
#define memset(x, y, z)
Definition: compat.h:39
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
Definition: dplayx.c:30
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: ifs.c:404
struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES

Referenced by START_TEST().

◆ test_CopyStgMedium()

static void test_CopyStgMedium ( void  )
static

Definition at line 1250 of file misc.c.

1251 {
1252  STGMEDIUM src, dst;
1253  HGLOBAL empty, hg;
1254  char *ptr1, *ptr2;
1255  HRESULT hres;
1256  int size;
1257 
1258  static WCHAR fileW[] = {'f','i','l','e',0};
1259 
1260  memset(&src, 0xf0, sizeof(src));
1261  memset(&dst, 0xe0, sizeof(dst));
1262  memset(&empty, 0xf0, sizeof(empty));
1263  src.tymed = TYMED_NULL;
1264  src.pUnkForRelease = NULL;
1265  hres = pCopyStgMedium(&src, &dst);
1266  ok(hres == S_OK, "CopyStgMedium failed: %08x\n", hres);
1267  ok(dst.tymed == TYMED_NULL, "tymed=%d\n", dst.tymed);
1268  ok(dst.u.hGlobal == empty, "u=%p\n", dst.u.hGlobal);
1269  ok(!dst.pUnkForRelease, "pUnkForRelease=%p, expected NULL\n", dst.pUnkForRelease);
1270 
1271  memset(&dst, 0xe0, sizeof(dst));
1272  src.tymed = TYMED_ISTREAM;
1273  src.u.pstm = NULL;
1274  src.pUnkForRelease = NULL;
1275  hres = pCopyStgMedium(&src, &dst);
1276  ok(hres == S_OK, "CopyStgMedium failed: %08x\n", hres);
1277  ok(dst.tymed == TYMED_ISTREAM, "tymed=%d\n", dst.tymed);
1278  ok(!dst.u.pstm, "pstm=%p\n", dst.u.pstm);
1279  ok(!dst.pUnkForRelease, "pUnkForRelease=%p, expected NULL\n", dst.pUnkForRelease);
1280 
1281  memset(&dst, 0xe0, sizeof(dst));
1282  src.tymed = TYMED_FILE;
1283  src.u.lpszFileName = fileW;
1284  src.pUnkForRelease = NULL;
1285  hres = pCopyStgMedium(&src, &dst);
1286  ok(hres == S_OK, "CopyStgMedium failed: %08x\n", hres);
1287  ok(dst.tymed == TYMED_FILE, "tymed=%d\n", dst.tymed);
1288  ok(dst.u.lpszFileName && dst.u.lpszFileName != fileW, "lpszFileName=%p\n", dst.u.lpszFileName);
1289  ok(!lstrcmpW(dst.u.lpszFileName, fileW), "wrong file name\n");
1290  ok(!dst.pUnkForRelease, "pUnkForRelease=%p, expected NULL\n", dst.pUnkForRelease);
1292 
1293  /* TYMED_HGLOBAL */
1294  hg = GlobalAlloc(GMEM_MOVEABLE, 10);
1295  ptr1 = GlobalLock(hg);
1296  memset(ptr1, 0xfa, 10);
1297  memset(&dst, 0xe0, sizeof(dst));
1298  src.tymed = TYMED_HGLOBAL;
1299  src.u.hGlobal = hg;
1300  hres = pCopyStgMedium(&src, &dst);
1301  ok(hres == S_OK, "CopyStgMedium failed: %08x\n", hres);
1302  ok(dst.tymed == TYMED_HGLOBAL, "tymed=%d\n", dst.tymed);
1303  ok(dst.u.hGlobal != hg, "got %p, %p\n", dst.u.hGlobal, hg);
1304  size = GlobalSize(dst.u.hGlobal);
1305  ok(size == 10, "got size %d\n", size);
1306  /* compare contents */
1307  ptr2 = GlobalLock(dst.u.hGlobal);
1308  ok(!memcmp(ptr1, ptr2, 10), "got wrong data\n");
1309  GlobalUnlock(ptr2);
1310  GlobalUnlock(ptr1);
1311  ok(GlobalFlags(dst.u.hGlobal) == 0, "got 0x%08x\n", GlobalFlags(dst.u.hGlobal));
1312  GlobalFree(hg);
1314 
1315  memset(&dst, 0xe0, sizeof(dst));
1316  src.tymed = TYMED_HGLOBAL;
1317  src.u.hGlobal = NULL;
1318  hres = pCopyStgMedium(&src, &dst);
1319  ok(hres == S_OK, "CopyStgMedium failed: %08x\n", hres);
1320  ok(dst.u.hGlobal == NULL, "got %p\n", dst.u.hGlobal);
1321 
1322  hres = pCopyStgMedium(&src, NULL);
1323  ok(hres == E_POINTER, "CopyStgMedium failed: %08x, expected E_POINTER\n", hres);
1324  hres = pCopyStgMedium(NULL, &dst);
1325  ok(hres == E_POINTER, "CopyStgMedium failed: %08x, expected E_POINTER\n", hres);
1326 }
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
Definition: heapmem.c:368
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
Definition: utclib.c:112
void WINAPI ReleaseStgMedium(STGMEDIUM *pmedium)
Definition: ole2.c:2033
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:170
UINT NTAPI GlobalFlags(HGLOBAL hMem)
Definition: heapmem.c:520
SIZE_T NTAPI GlobalSize(HGLOBAL hMem)
Definition: heapmem.c:1090
smooth NULL
Definition: ftsmooth.c:416
GLsizeiptr size
Definition: glext.h:5919
_In_ FONTOBJ _In_ ULONG _In_ HGLYPH hg
Definition: winddi.h:3869
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
HRESULT hres
Definition: misc.c:488
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
Definition: heapmem.c:611
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
Definition: heapmem.c:755
GLenum src
Definition: glext.h:6340
#define S_OK
Definition: intsafe.h:59
#define ok(value,...)
Definition: atltest.h:57
GLenum GLenum dst
Definition: glext.h:6340
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
Definition: heapmem.c:1190
BOOL empty
Definition: button.c:170
DWORD size
Definition: misc.c:605
#define E_POINTER
Definition: winerror.h:2365
#define memset(x, y, z)
Definition: compat.h:39
static const WCHAR fileW[]
Definition: url.c:111
#define GMEM_MOVEABLE
Definition: winbase.h:291

Referenced by START_TEST().

◆ test_CreateFormatEnum()

static void test_CreateFormatEnum ( void  )
static

Definition at line 124 of file misc.c.

125 {
126  IEnumFORMATETC *fenum = NULL, *fenum2 = NULL;
127  FORMATETC fetc[5];
128  ULONG ul;
129  HRESULT hres;
130 
131  static DVTARGETDEVICE dev = {sizeof(dev),0,0,0,0,{0}};
132  static FORMATETC formatetc[] = {
133  {0,&dev,0,0,0},
134  {0,&dev,0,1,0},
135  {0,NULL,0,2,0},
136  {0,NULL,0,3,0},
137  {0,NULL,0,4,0}
138  };
139 
140  hres = CreateFormatEnumerator(0, formatetc, &fenum);
141  ok(hres == E_FAIL, "CreateFormatEnumerator failed: %08x, expected E_FAIL\n", hres);
142  hres = CreateFormatEnumerator(0, formatetc, NULL);
143  ok(hres == E_INVALIDARG, "CreateFormatEnumerator failed: %08x, expected E_INVALIDARG\n", hres);
144  hres = CreateFormatEnumerator(5, formatetc, NULL);
145  ok(hres == E_INVALIDARG, "CreateFormatEnumerator failed: %08x, expected E_INVALIDARG\n", hres);
146 
147 
148  hres = CreateFormatEnumerator(5, formatetc, &fenum);
149  ok(hres == S_OK, "CreateFormatEnumerator failed: %08x\n", hres);
150  if(FAILED(hres))
151  return;
152 
153  hres = IEnumFORMATETC_Next(fenum, 2, NULL, &ul);
154  ok(hres == E_INVALIDARG, "Next failed: %08x, expected E_INVALIDARG\n", hres);
155  ul = 100;
156  hres = IEnumFORMATETC_Next(fenum, 0, fetc, &ul);
157  ok(hres == S_OK, "Next failed: %08x\n", hres);
158  ok(ul == 0, "ul=%d, expected 0\n", ul);
159 
160  hres = IEnumFORMATETC_Next(fenum, 2, fetc, &ul);
161  ok(hres == S_OK, "Next failed: %08x\n", hres);
162  ok(fetc[0].lindex == 0, "fetc[0].lindex=%d, expected 0\n", fetc[0].lindex);
163  ok(fetc[1].lindex == 1, "fetc[1].lindex=%d, expected 1\n", fetc[1].lindex);
164  ok(fetc[0].ptd == &dev, "fetc[0].ptd=%p, expected %p\n", fetc[0].ptd, &dev);
165  ok(ul == 2, "ul=%d, expected 2\n", ul);
166 
167  hres = IEnumFORMATETC_Skip(fenum, 1);
168  ok(hres == S_OK, "Skip failed: %08x\n", hres);
169 
170  hres = IEnumFORMATETC_Next(fenum, 4, fetc, &ul);
171  ok(hres == S_FALSE, "Next failed: %08x, expected S_FALSE\n", hres);
172  ok(fetc[0].lindex == 3, "fetc[0].lindex=%d, expected 3\n", fetc[0].lindex);
173  ok(fetc[1].lindex == 4, "fetc[1].lindex=%d, expected 4\n", fetc[1].lindex);
174  ok(fetc[0].ptd == NULL, "fetc[0].ptd=%p, expected NULL\n", fetc[0].ptd);
175  ok(ul == 2, "ul=%d, expected 2\n", ul);
176 
177  hres = IEnumFORMATETC_Next(fenum, 4, fetc, &ul);
178  ok(hres == S_FALSE, "Next failed: %08x, expected S_FALSE\n", hres);
179  ok(ul == 0, "ul=%d, expected 0\n", ul);
180  ul = 100;
181  hres = IEnumFORMATETC_Next(fenum, 0, fetc, &ul);
182  ok(hres == S_OK, "Next failed: %08x\n", hres);
183  ok(ul == 0, "ul=%d, expected 0\n", ul);
184 
185  hres = IEnumFORMATETC_Skip(fenum, 3);
186  ok(hres == S_FALSE, "Skip failed: %08x, expected S_FALSE\n", hres);
187 
188  hres = IEnumFORMATETC_Reset(fenum);
189  ok(hres == S_OK, "Reset failed: %08x\n", hres);
190 
191  hres = IEnumFORMATETC_Next(fenum, 5, fetc, NULL);
192  ok(hres == S_OK, "Next failed: %08x\n", hres);
193  ok(fetc[0].lindex == 0, "fetc[0].lindex=%d, expected 0\n", fetc[0].lindex);
194 
195  hres = IEnumFORMATETC_Reset(fenum);
196  ok(hres == S_OK, "Reset failed: %08x\n", hres);
197 
198  hres = IEnumFORMATETC_Skip(fenum, 2);
199  ok(hres == S_OK, "Skip failed: %08x\n", hres);
200 
201  hres = IEnumFORMATETC_Clone(fenum, NULL);
202  ok(hres == E_INVALIDARG, "Clone failed: %08x, expected E_INVALIDARG\n", hres);
203 
204  hres = IEnumFORMATETC_Clone(fenum, &fenum2);
205  ok(hres == S_OK, "Clone failed: %08x\n", hres);
206 
207  if(SUCCEEDED(hres)) {
208  ok(fenum != fenum2, "fenum == fenum2\n");
209 
210  hres = IEnumFORMATETC_Next(fenum2, 2, fetc, &ul);
211  ok(hres == S_OK, "Next failed: %08x\n", hres);
212  ok(fetc[0].lindex == 2, "fetc[0].lindex=%d, expected 2\n", fetc[0].lindex);
213 
214  IEnumFORMATETC_Release(fenum2);
215  }
216 
217  hres = IEnumFORMATETC_Next(fenum, 2, fetc, &ul);
218  ok(hres == S_OK, "Next failed: %08x\n", hres);
219  ok(fetc[0].lindex == 2, "fetc[0].lindex=%d, expected 2\n", fetc[0].lindex);
220 
221  hres = IEnumFORMATETC_Skip(fenum, 1);
222  ok(hres == S_OK, "Skip failed: %08x\n", hres);
223 
224  IEnumFORMATETC_Release(fenum);
225 }
#define E_FAIL
Definition: ddrawi.h:102
static int dev
Definition: mkdosfs.c:536
#define S_FALSE
Definition: winerror.h:2357
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
LONG HRESULT
Definition: typedefs.h:77
HRESULT hres
Definition: misc.c:488
#define S_OK
Definition: intsafe.h:59
#define ok(value,...)
Definition: atltest.h:57
HRESULT WINAPI CreateFormatEnumerator(UINT cfmtetc, FORMATETC *rgfmtetc, IEnumFORMATETC **ppenumfmtetc)
Definition: format.c:177
unsigned int ULONG
Definition: retypes.h:1
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Referenced by START_TEST().

◆ test_FindMimeFromData()

static void test_FindMimeFromData ( void  )
static

Definition at line 723 of file misc.c.

724 {
726  HRESULT hres;
727  BYTE b;
728  int i;
729 
730  static const WCHAR app_octet_streamW[] =
731  {'a','p','p','l','i','c','a','t','i','o','n','/','o','c','t','e','t','-','s','t','r','e','a','m',0};
732  static const WCHAR image_pjpegW[] = {'i','m','a','g','e','/','p','j','p','e','g',0};
733  static const WCHAR text_htmlW[] = {'t','e','x','t','/','h','t','m','l',0};
734  static const WCHAR text_plainW[] = {'t','e','x','t','/','p','l','a','i','n',0};
735 
736  for(i = 0; i < ARRAY_SIZE(mime_tests); i++) {
737  mime = (LPWSTR)0xf0f0f0f0;
738  url = a2w(mime_tests[i].url);
739  hres = pFindMimeFromData(NULL, url, NULL, 0, NULL, 0, &mime, 0);
740  if(mime_tests[i].mime) {
741  ok(hres == S_OK || broken(mime_tests[i].broken_failure), "[%d] FindMimeFromData failed: %08x\n", i, hres);
742  if(hres == S_OK) {
745  "[%d] wrong mime: %s\n", i, wine_dbgstr_w(mime));
747  }
748  }else {
749  ok(hres == E_FAIL || hres == mime_tests[i].hres,
750  "[%d] FindMimeFromData failed: %08x, expected %08x\n",
751  i, hres, mime_tests[i].hres);
752  ok(mime == (LPWSTR)0xf0f0f0f0, "[%d] mime != 0xf0f0f0f0\n", i);
753  }
754 
755  mime = (LPWSTR)0xf0f0f0f0;
756  hres = pFindMimeFromData(NULL, url, NULL, 0, text_plainW, 0, &mime, 0);
757  ok(hres == S_OK, "[%d] FindMimeFromData failed: %08x\n", i, hres);
758  ok(!strcmp_wa(mime, "text/plain"), "[%d] wrong mime: %s\n", i, wine_dbgstr_w(mime));
760 
761  mime = (LPWSTR)0xf0f0f0f0;
762  hres = pFindMimeFromData(NULL, url, NULL, 0, app_octet_streamW, 0, &mime, 0);
763  ok(hres == S_OK, "[%d] FindMimeFromData failed: %08x\n", i, hres);
764  ok(!strcmp_wa(mime, "application/octet-stream"), "[%d] wrong mime: %s\n", i, wine_dbgstr_w(mime));
766  heap_free(url);
767  }
768 
769  for(i = 0; i < ARRAY_SIZE(mime_tests2); i++) {
770  url = a2w(mime_tests2[i].url);
772  hres = pFindMimeFromData(NULL, url, mime_tests2[i].data, mime_tests2[i].size,
773  proposed_mime, 0, &mime, 0);
774  ok(hres == S_OK, "[%d] FindMimeFromData failed: %08x\n", i, hres);
777  "[%d] wrong mime: %s\n", i, wine_dbgstr_w(mime));
779  heap_free(url);
781  if(!b || url || proposed_mime)
782  continue;
783 
784  hres = pFindMimeFromData(NULL, NULL, mime_tests2[i].data, mime_tests2[i].size,
785  app_octet_streamW, 0, &mime, 0);
786  ok(hres == S_OK, "[%d] FindMimeFromData failed: %08x\n", i, hres);
789  "[%d] wrong mime: %s\n", i, wine_dbgstr_w(mime));
791 
792  hres = pFindMimeFromData(NULL, NULL, mime_tests2[i].data, mime_tests2[i].size,
793  text_plainW, 0, &mime, 0);
794  ok(hres == S_OK, "[%d] FindMimeFromData failed: %08x\n", i, hres);
797  "[%d] wrong mime: %s\n", i, wine_dbgstr_w(mime));
799 
800  hres = pFindMimeFromData(NULL, NULL, mime_tests2[i].data, mime_tests2[i].size,
801  text_htmlW, 0, &mime, 0);
802  ok(hres == S_OK, "[%d] FindMimeFromData failed: %08x\n", i, hres);
803  if(!strcmp("application/octet-stream", mime_tests2[i].mime)
804  || !strcmp("text/plain", mime_tests2[i].mime) || i==92)
805  ok(!strcmp_wa(mime, "text/html"), "[%d] wrong mime: %s\n", i, wine_dbgstr_w(mime));
806  else
807  ok(!strcmp_wa(mime, mime_tests2[i].mime), "[%d] wrong mime: %s\n", i, wine_dbgstr_w(mime));
809 
810  hres = pFindMimeFromData(NULL, NULL, mime_tests2[i].data, mime_tests2[i].size,
811  image_pjpegW, 0, &mime, 0);
812  ok(hres == S_OK, "[%d] FindMimeFromData failed: %08x\n", i, hres);
815  "[%d] wrong mime, got %s\n", i, wine_dbgstr_w(mime));
817  }
818 
819  hres = pFindMimeFromData(NULL, NULL, NULL, 0, NULL, 0, &mime, 0);
820  ok(hres == E_INVALIDARG, "FindMimeFromData failed: %08x, expected E_INVALIDARG\n", hres);
821 
822  hres = pFindMimeFromData(NULL, NULL, NULL, 0, text_plainW, 0, &mime, 0);
823  ok(hres == E_INVALIDARG, "FindMimeFromData failed: %08x, expected E_INVALIDARG\n", hres);
824 
825  hres = pFindMimeFromData(NULL, NULL, data1, 0, NULL, 0, &mime, 0);
826  ok(hres == E_FAIL, "FindMimeFromData failed: %08x, expected E_FAIL\n", hres);
827 
828  hres = pFindMimeFromData(NULL, url1, data1, 0, NULL, 0, &mime, 0);
829  ok(hres == E_FAIL, "FindMimeFromData failed: %08x, expected E_FAIL\n", hres);
830 
831  hres = pFindMimeFromData(NULL, NULL, data1, 0, text_plainW, 0, &mime, 0);
832  ok(hres == S_OK, "FindMimeFromData failed: %08x\n", hres);
833  ok(!strcmp_wa(mime, "text/plain"), "wrong mime: %s\n", wine_dbgstr_w(mime));
835 
836  hres = pFindMimeFromData(NULL, NULL, data1, 0, text_plainW, 0, NULL, 0);
837  ok(hres == E_INVALIDARG, "FindMimeFromData failed: %08x, expected E_INVALIDARG\n", hres);
838 }
static const WCHAR image_pjpegW[]
Definition: mimefilter.c:491
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:420
const char * broken_mime
Definition: misc.c:490
char * wine_dbgstr_w(const wchar_t *wstr)
Definition: atltest.h:87
const char * mime_pjpeg
Definition: misc.c:607
Definition: tftpd.h:125
static const struct @1663 mime_tests[]
#define E_FAIL
Definition: ddrawi.h:102
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
Definition: glfuncs.h:248
static const struct @1664 mime_tests2[]
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
static WCHAR * a2w(const char *str)
Definition: misc.c:94
static const WCHAR url1[]
Definition: misc.c:300
#define b
Definition: ke_i.h:79
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
GLsizeiptr size
Definition: glext.h:5919
static const WCHAR text_htmlW[]
Definition: navigate.c:29
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
HRESULT hres
Definition: misc.c:488
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
const char * proposed_mime
Definition: misc.c:610
unsigned char BYTE
Definition: mem.h:68
const char * mime
Definition: misc.c:487
#define broken(x)
Definition: _sntprintf.h:21
static int strcmp_wa(const WCHAR *strw, const char *stra)
Definition: misc.c:87
BOOL broken_failure
Definition: misc.c:489
#define S_OK
Definition: intsafe.h:59
#define ARRAY_SIZE(a)
Definition: main.h:24
#define ok(value,...)
Definition: atltest.h:57
static LPWSTR
Definition: misc.c:35
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
static const WCHAR text_plainW[]
Definition: mimefilter.c:507
WCHAR * LPWSTR
Definition: xmlstorage.h:184
static BOOL heap_free(void *mem)
Definition: appwiz.h:75
LPCWSTR url
Definition: misc.c:444

Referenced by START_TEST().

◆ test_internet_feature_defaults()

static void test_internet_feature_defaults ( void  )
static

Definition at line 1754 of file misc.c.

1754  {
1755  HRESULT hres;
1756  DWORD i;
1757 
1758  for(i = 0; i < ARRAY_SIZE(default_feature_tests); ++i) {
1759  hres = pCoInternetIsFeatureEnabled(default_feature_tests[i].feature, default_feature_tests[i].get_flags);
1761  ok(hres == default_feature_tests[i].expected, "CoInternetIsFeatureEnabled returned %08x, expected %08x on test %d\n",
1763  }
1764 }
INTERNETFEATURELIST feature
Definition: misc.c:1719
BOOL todo
Definition: misc.c:1722
HRESULT expected
Definition: misc.c:1721
DWORD get_flags
Definition: misc.c:1720
static const struct @1665 default_feature_tests[]
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
Definition: glfuncs.h:248
#define todo_wine_if(is_todo)
Definition: test.h:164
LONG HRESULT
Definition: typedefs.h:77
unsigned long DWORD
Definition: ntddk_ex.h:95
HRESULT hres
Definition: misc.c:488
#define ARRAY_SIZE(a)
Definition: main.h:24
#define ok(value,...)
Definition: atltest.h:57

Referenced by test_internet_features_registry().

◆ test_internet_features()

static void test_internet_features ( void  )
static

Definition at line 1920 of file misc.c.

1920  {
1921  HKEY key;
1922  DWORD res;
1923 
1924  if(!pCoInternetIsFeatureEnabled || !pCoInternetSetFeatureEnabled) {
1925  win_skip("Skipping internet feature tests, IE is too old\n");
1926  return;
1927  }
1928 
1929  /* IE10 takes FeatureControl key into account only if it's available upon process start. */
1931  if(res != ERROR_SUCCESS) {
1933  STARTUPINFOA si = { 0 };
1934  char cmdline[MAX_PATH];
1935  char **argv;
1936  BOOL ret;
1937 
1939  ok(res == ERROR_SUCCESS, "RegCreateKey failed: %d\n", res);
1940 
1941  trace("Running features tests in a separated process.\n");
1942 
1944  sprintf(cmdline, "\"%s\" %s internet_features", argv[0], argv[1]);
1945  ret = CreateProcessA(argv[0], cmdline, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
1946  ok(ret, "Could not create process: %u\n", GetLastError());
1947  winetest_wait_child_process( pi.hProcess );
1948  CloseHandle(pi.hThread);
1949  CloseHandle(pi.hProcess);
1950 
1952  return;
1953  }
1954 
1958 }
LONG WINAPI RegOpenKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3257
#define CloseHandle
Definition: compat.h:406
#define ERROR_SUCCESS
Definition: deptool.c:10
static const char * szFeatureControlKey
Definition: misc.c:1774
#define HKEY_CURRENT_USER
Definition: winreg.h:11
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1059
TCHAR * cmdline
Definition: stretchblt.cpp:32
#define argv
Definition: mplay32.c:18
static void test_internet_features_registry(void)
Definition: misc.c:1776
#define sprintf(buf, format,...)
Definition: sprintf.c:55
unsigned int BOOL
Definition: ntddk_ex.h:94
smooth NULL
Definition: ftsmooth.c:416
LONG WINAPI RegCreateKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:1177
#define trace
Definition: atltest.h:70
static refpint_t pi[]
Definition: server.c:96
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessA(LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
Definition: proc.c:4742
#define MAX_PATH
Definition: compat.h:26
unsigned long DWORD
Definition: ntddk_ex.h:95
int winetest_get_mainargs(char ***pargv)
int ret
HKEY key
Definition: reg.c:42
void winetest_wait_child_process(HANDLE process)
LONG WINAPI RegDeleteKeyA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey)
Definition: reg.c:1222
#define ok(value,...)
Definition: atltest.h:57
static void test_CoInternetIsFeatureEnabled(void)
Definition: misc.c:1876
static void test_CoInternetSetFeatureEnabled(void)
Definition: misc.c:1898
GLuint res
Definition: glext.h:9613
#define win_skip
Definition: test.h:150
Definition: path.c:41

Referenced by START_TEST().

◆ test_internet_features_registry()

static void test_internet_features_registry ( void  )
static

Definition at line 1776 of file misc.c.

1776  {
1777  HRESULT hres;
1778  DWORD res;
1779  char module[MAX_PATH];
1780  char *name;
1782  HKEY feature;
1783  DWORD value;
1784  BOOL skip_zone;
1785  BOOL delete_feature_key = TRUE;
1786 
1787  static const char* szFeatureBehaviorsKey = "FEATURE_BEHAVIORS";
1788  static const char* szFeatureZoneElevationKey = "FEATURE_ZONE_ELEVATION";
1789 
1790  if(!pIEInstallScope) {
1791  win_skip("Skipping internet feature registry tests, IE is too old...\n");
1792  return;
1793  }
1794 
1795  res = GetModuleFileNameA(NULL, module, sizeof(module));
1796  ok(res, "GetModuleFileName failed: %d\n", GetLastError());
1797 
1798  name = strrchr(module, '\\')+1;
1799 
1800  /* Some Windows machines don't have a FeatureControl key in HKCU. */
1802  ok(res == ERROR_SUCCESS, "RegCreateKey failed: %d\n", res);
1803 
1804  res = RegOpenKeyA(feature_control, szFeatureBehaviorsKey, &feature);
1805  if(res == ERROR_SUCCESS) {
1806  /* FEATURE_BEHAVIORS already existed, so don't delete it when we're done. */
1807  delete_feature_key = FALSE;
1808  }else {
1809  res = RegCreateKeyA(feature_control, szFeatureBehaviorsKey, &feature);
1810  ok(res == ERROR_SUCCESS, "RegCreateKey failed: %d\n", res);
1811  }
1812 
1813  value = 0;
1814  res = RegSetValueExA(feature, name, 0, REG_DWORD, (BYTE*)&value, sizeof(DWORD));
1815  ok(res == ERROR_SUCCESS, "RegSetValueEx failed: %d\n", res);
1816 
1817  hres = pCoInternetIsFeatureEnabled(FEATURE_BEHAVIORS, GET_FEATURE_FROM_PROCESS);
1818  ok(hres == S_FALSE, "CoInternetIsFeatureEnabled returned %08x, expected S_FALSE\n", hres);
1819 
1820  if(delete_feature_key) {
1822  RegDeleteKeyA(feature_control, szFeatureBehaviorsKey);
1823  } else {
1826  }
1827 
1828  /* IE's feature control cached the value it got from the registry earlier. */
1829  hres = pCoInternetIsFeatureEnabled(FEATURE_BEHAVIORS, GET_FEATURE_FROM_PROCESS);
1830  ok(hres == S_FALSE, "CoInternetIsFeatureEnabled returned %08x, expected S_FALSE\n", hres);
1831 
1832  /* Restore this feature back to its default value. */
1833  hres = pCoInternetSetFeatureEnabled(FEATURE_BEHAVIORS, SET_FEATURE_ON_PROCESS, TRUE);
1834  ok(hres == S_OK, "CoInternetSetFeatureEnabled failed: %08x\n", hres);
1835 
1837 
1839  ok(res == ERROR_SUCCESS, "RegOpenKey failed: %d\n", res);
1840 
1841  res = RegOpenKeyA(feature_control, szFeatureZoneElevationKey, &feature);
1842  ok(res == ERROR_SUCCESS, "RegOpenKey failed: %d\n", res);
1843 
1844  value = 1;
1845  res = RegSetValueExA(feature, "*", 0, REG_DWORD, (BYTE*)&value, sizeof(DWORD));
1846  if (res == ERROR_ACCESS_DENIED)
1847  {
1848  skip("Not allowed to modify zone elevation\n");
1849  skip_zone = TRUE;
1850  }
1851  else
1852  {
1853  skip_zone = FALSE;
1854  ok(res == ERROR_SUCCESS, "RegSetValueEx failed: %d\n", res);
1855 
1856  hres = pCoInternetIsFeatureEnabled(FEATURE_ZONE_ELEVATION, GET_FEATURE_FROM_PROCESS);
1857  ok(hres == S_OK, "CoInternetIsFeatureEnabled returned %08x, expected S_OK\n", hres);
1858  }
1859  RegDeleteValueA(feature, "*");
1862 
1863  /* Value is still cached from last time. */
1864  if (!skip_zone)
1865  {
1866  hres = pCoInternetIsFeatureEnabled(FEATURE_ZONE_ELEVATION, GET_FEATURE_FROM_PROCESS);
1867  ok(hres == S_OK, "CoInternetIsFeatureEnabled returned %08x, expected S_OK\n", hres);
1868 
1869  hres = pCoInternetSetFeatureEnabled(FEATURE_ZONE_ELEVATION, SET_FEATURE_ON_PROCESS, FALSE);
1870  ok(hres == S_OK, "CoInternetSetFeatureEnabled failed: %08x\n", hres);
1871  }
1872 
1874 }
INTERNETFEATURELIST feature
Definition: misc.c:1719
LONG WINAPI RegOpenKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3257
#define TRUE
Definition: types.h:120
#define ERROR_SUCCESS
Definition: deptool.c:10
static const char * szFeatureControlKey
Definition: misc.c:1774
#define HKEY_CURRENT_USER
Definition: winreg.h:11
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1059
_Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strrchr(_In_z_ const char *_Str, _In_ int _Ch)
DWORD WINAPI GetModuleFileNameA(HINSTANCE hModule, LPSTR lpFilename, DWORD nSize)
Definition: loader.c:548
static void test_internet_feature_defaults(void)
Definition: misc.c:1754
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
#define ERROR_ACCESS_DENIED
Definition: compat.h:87
unsigned int BOOL
Definition: ntddk_ex.h:94
#define S_FALSE
Definition: winerror.h:2357
smooth NULL
Definition: ftsmooth.c:416
LONG WINAPI RegCreateKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:1177
LONG HRESULT
Definition: typedefs.h:77
#define MAX_PATH
Definition: compat.h:26
unsigned long DWORD
Definition: ntddk_ex.h:95
HRESULT hres
Definition: misc.c:488
struct feature_control feature_control
unsigned char BYTE
Definition: mem.h:68
GLsizei const GLfloat * value
Definition: glext.h:6069
LONG WINAPI RegDeleteKeyA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey)
Definition: reg.c:1222
#define S_OK
Definition: intsafe.h:59
#define ok(value,...)
Definition: atltest.h:57
LONG WINAPI RegDeleteValueA(HKEY hKey, LPCSTR lpValueName)
Definition: reg.c:2319
#define skip(...)
Definition: atltest.h:64
Definition: name.c:38
GLuint res
Definition: glext.h:9613
LONG WINAPI RegSetValueExA(HKEY hKey, LPCSTR lpValueName, DWORD Reserved, DWORD dwType, CONST BYTE *lpData, DWORD cbData)
Definition: reg.c:4812
#define REG_DWORD
Definition: sdbapi.c:596
#define win_skip
Definition: test.h:150
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
GLuint const GLchar * name
Definition: glext.h:6031

Referenced by test_internet_features().

◆ test_IsValidURL()

static void test_IsValidURL ( void  )
static

Definition at line 1699 of file misc.c.

1700 {
1701  HRESULT hr;
1702  IBindCtx *bctx = NULL;
1703 
1704  hr = IsValidURL(NULL, 0, 0);
1705  ok(hr == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", hr);
1706 
1708  ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
1709 
1710  CreateBindCtx(0, &bctx);
1711 
1712  hr = IsValidURL(bctx, wszHttpWineHQ, 0);
1713  ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
1714 
1715  IBindCtx_Release(bctx);
1716 }
HRESULT hr
Definition: shlfolder.c:183
static const WCHAR wszHttpWineHQ[]
Definition: misc.c:331
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
HRESULT WINAPI IsValidURL(LPBC pBC, LPCWSTR szURL, DWORD dwReserved)
Definition: urlmon_main.c:525
HRESULT WINAPI CreateBindCtx(DWORD reserved, LPBC *ppbc)
Definition: bindctx.c:556
LONG HRESULT
Definition: typedefs.h:77
#define S_OK
Definition: intsafe.h:59
#define ok(value,...)
Definition: atltest.h:57

Referenced by START_TEST().

◆ test_MimeFilter()

static void test_MimeFilter ( void  )
static

Definition at line 1181 of file misc.c.

1182 {
1184  HRESULT hres;
1185 
1186  static const WCHAR mimeW[] = {'t','e','s','t','/','m','i','m','e',0};
1187 
1188  hres = pCoInternetGetSession(0, &session, 0);
1189  ok(hres == S_OK, "CoInternetGetSession failed: %08x\n", hres);
1190  if(FAILED(hres))
1191  return;
1192 
1193  hres = IInternetSession_RegisterMimeFilter(session, &test_cf, &IID_NULL, mimeW);
1194  ok(hres == S_OK, "RegisterMimeFilter failed: %08x\n", hres);
1195 
1196  hres = IInternetSession_UnregisterMimeFilter(session, &test_cf, mimeW);
1197  ok(hres == S_OK, "UnregisterMimeFilter failed: %08x\n", hres);
1198 
1199  hres = IInternetSession_UnregisterMimeFilter(session, &test_cf, mimeW);
1200  ok(hres == S_OK, "UnregisterMimeFilter failed: %08x\n", hres);
1201 
1202  hres = IInternetSession_UnregisterMimeFilter(session, (void*)0xdeadbeef, mimeW);
1203  ok(hres == S_OK, "UnregisterMimeFilter failed: %08x\n", hres);
1204 
1205  IInternetSession_Release(session);
1206 }
static IClassFactory test_cf
Definition: misc.c:1020
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
HRESULT hres
Definition: misc.c:488
#define IID_NULL
Definition: guiddef.h:98
#define S_OK
Definition: intsafe.h:59
#define ok(value,...)
Definition: atltest.h:57

Referenced by START_TEST().

◆ test_MkParseDisplayNameEx()

static void test_MkParseDisplayNameEx ( void  )
static

Definition at line 1609 of file misc.c.

1610 {
1611  IMoniker *mon = NULL;
1612  LPWSTR name;
1613  DWORD issys;
1614  ULONG eaten = 0;
1615  IBindCtx *bctx;
1616  HRESULT hres;
1617 
1618  static const WCHAR clsid_nameW[] = {'c','l','s','i','d',':',
1619  '2','0','D','0','4','F','E','0','-','3','A','E','A','-','1','0','6','9','-','A','2','D','8',
1620  '-','0','8','0','0','2','B','3','0','3','0','9','D',':',0};
1621 
1622  const struct
1623  {
1624  LPBC *ppbc;
1625  LPCWSTR szDisplayName;
1626  ULONG *pchEaten;
1627  LPMONIKER *ppmk;
1628  } invalid_parameters[] =
1629  {
1630  {NULL, NULL, NULL, NULL},
1631  {NULL, NULL, NULL, &mon},
1632  {NULL, NULL, &eaten, NULL},
1633  {NULL, NULL, &eaten, &mon},
1634  {NULL, wszEmpty, NULL, NULL},
1635  {NULL, wszEmpty, NULL, &mon},
1636  {NULL, wszEmpty, &eaten, NULL},
1637  {NULL, wszEmpty, &eaten, &mon},
1638  {&bctx, NULL, NULL, NULL},
1639  {&bctx, NULL, NULL, &mon},
1640  {&bctx, NULL, &eaten, NULL},
1641  {&bctx, NULL, &eaten, &mon},
1642  {&bctx, wszEmpty, NULL, NULL},
1643  {&bctx, wszEmpty, NULL, &mon},
1644  {&bctx, wszEmpty, &eaten, NULL},
1645  {&bctx, wszEmpty, &eaten, &mon},
1646  };
1647 
1648  int i;
1649 
1650  CreateBindCtx(0, &bctx);
1651 
1652  for (i = 0; i < ARRAY_SIZE(invalid_parameters); i++)
1653  {
1654  eaten = 0xdeadbeef;
1655  mon = (IMoniker *)0xdeadbeef;
1656  hres = MkParseDisplayNameEx(invalid_parameters[i].ppbc ? *invalid_parameters[i].ppbc : NULL,
1657  invalid_parameters[i].szDisplayName,
1658  invalid_parameters[i].pchEaten,
1659  invalid_parameters[i].ppmk);
1660  ok(hres == E_INVALIDARG,
1661  "[%d] Expected MkParseDisplayNameEx to return E_INVALIDARG, got %08x\n", i, hres);
1662  ok(eaten == 0xdeadbeef, "[%d] Expected eaten to be 0xdeadbeef, got %u\n", i, eaten);
1663  ok(mon == (IMoniker *)0xdeadbeef, "[%d] Expected mon to be 0xdeadbeef, got %p\n", i, mon);
1664  }
1665 
1666  hres = MkParseDisplayNameEx(bctx, url9, &eaten, &mon);
1667  ok(hres == S_OK, "MkParseDisplayNameEx failed: %08x\n", hres);
1668  ok(eaten == ARRAY_SIZE(url9)-1, "eaten=%d\n", eaten);
1669  ok(mon != NULL, "mon == NULL\n");
1670 
1671  hres = IMoniker_GetDisplayName(mon, NULL, 0, &name);
1672  ok(hres == S_OK, "GetDisplayName failed: %08x\n", hres);
1673  ok(!lstrcmpW(name, url9), "wrong display name %s\n", wine_dbgstr_w(name));
1675 
1676  hres = IMoniker_IsSystemMoniker(mon, &issys);
1677  ok(hres == S_OK, "IsSystemMoniker failed: %08x\n", hres);
1678  ok(issys == MKSYS_URLMONIKER, "issys=%x\n", issys);
1679 
1680  IMoniker_Release(mon);
1681 
1682  hres = MkParseDisplayNameEx(bctx, clsid_nameW, &eaten, &mon);
1683  ok(hres == S_OK, "MkParseDisplayNameEx failed: %08x\n", hres);
1684  ok(eaten == ARRAY_SIZE(clsid_nameW)-1, "eaten=%d\n", eaten);
1685  ok(mon != NULL, "mon == NULL\n");
1686 
1687  hres = IMoniker_IsSystemMoniker(mon, &issys);
1688  ok(hres == S_OK, "IsSystemMoniker failed: %08x\n", hres);
1689  ok(issys == MKSYS_CLASSMONIKER, "issys=%x\n", issys);
1690 
1691  IMoniker_Release(mon);
1692 
1693  hres = MkParseDisplayNameEx(bctx, url8, &eaten, &mon);
1694  ok(FAILED(hres), "MkParseDisplayNameEx succeeded: %08x\n", hres);
1695 
1696  IBindCtx_Release(bctx);
1697 }
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:420
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
interface IBindCtx * LPBC
Definition: objfwd.h:18
char * wine_dbgstr_w(const wchar_t *wstr)
Definition: atltest.h:87
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:170
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
Definition: glfuncs.h:248
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
static const WCHAR wszEmpty[]
Definition: misc.c:327
static const WCHAR url8[]
Definition: misc.c:311