[COM_APITEST]
[reactos.git] / rostests / apitests / com / com_apitest.c
index 9f8c3b0..6444834 100644 (file)
@@ -54,18 +54,26 @@ static KNOWN_INTERFACE KnownInterfaces[] =
     { ID_NAME(IID_IAutoComplete2),              TRUE },
     { ID_NAME(IID_IAutoCompleteDropDown)             },
     { ID_NAME(IID_IBandHost)                         },
-    { ID_NAME(IID_IBandNavigate),               TRUE },
+    { ID_NAME(IID_IBandNavigate),                    },
     { ID_NAME(IID_IBandProxy),                  TRUE },
     { ID_NAME(IID_IBandSite)                         },
     { ID_NAME(IID_IBandSiteHelper),             TRUE },
     { ID_NAME(IID_IBanneredBar),                TRUE },
     { ID_NAME(IID_IBindCtx)                          },
+    { ID_NAME(IID_IBindEventHandler)                 },
+    { ID_NAME(IID_IBindHost)                         },
+    { ID_NAME(IID_IBinding)                          },
+    { ID_NAME(IID_IBindProtocol),               TRUE },
+    { ID_NAME(IID_IBindResource)                     },
+    { ID_NAME(IID_IBindStatusCallback)               },
     { ID_NAME(IID_IBrowserFrameOptions),        TRUE },
     { ID_NAME(IID_IBrowserService)                   },
     { ID_NAME(IID_IBrowserService2),            TRUE },
     { ID_NAME(IID_IBrowserService3),            TRUE },
+    { ID_NAME(IID_IBrowserService4),            TRUE },
     { ID_NAME(IID_ICDBurn)                           },
     { ID_NAME(IID_ICDBurnExt)                        },
+    { ID_NAME(IID_ICallFactory),                TRUE },
     { ID_NAME(IID_IClassFactory)                     },
     { ID_NAME(IID_IClassFactory2)                    },
     { ID_NAME(IID_IClassFactory3),              TRUE },
@@ -110,11 +118,13 @@ static KNOWN_INTERFACE KnownInterfaces[] =
     { ID_NAME(IID_IEnumExtraSearch)                  },
     { ID_NAME(IID_IEnumGUID)                         },
     { ID_NAME(IID_IEnumIDList)                       },
+    { ID_NAME(IID_IEnumMoniker)                      },
     //{ ID_NAME(IID_IEnumNetCfgBindingInterface)       },
     //{ ID_NAME(IID_IEnumNetCfgBindingPath)            },
     { ID_NAME(IID_IEnumNetCfgComponent),        TRUE },
     { ID_NAME(IID_IEnumNetConnection)                },
     { ID_NAME(IID_IEnumShellItems)                   },
+    { ID_NAME(IID_IEnumSTATSTG)                       },
     { ID_NAME(IID_IEnumString)                       },
     { ID_NAME(IID_IEnumUnknown)                      },
     { ID_NAME(IID_IEnumVARIANT)                      },
@@ -141,23 +151,30 @@ static KNOWN_INTERFACE KnownInterfaces[] =
     { ID_NAME(IID_IFolderViewHost),             TRUE },
     { ID_NAME(IID_IFolderViewOC)                     },
     { ID_NAME(IID_IFolderViewSettings)               },
+    { ID_NAME(IID_IForegroundTransfer),         TRUE },
     { ID_NAME(IID_IGetNameSpaceExtensionPointer),TRUE},
     { ID_NAME(IID_IGlobalFolderSettings),       TRUE },
     { ID_NAME(IID_IHWEventHandler)                   },
     { ID_NAME(IID_IHWEventHandler2)                  },
+    { ID_NAME(IID_IImageList),                  TRUE },
+    { ID_NAME(IID_IImageList2),                 TRUE },
     { ID_NAME(IID_IInitializeObject),           TRUE },
     { ID_NAME(IID_IInputObject)                      },
     { ID_NAME(IID_IInputObjectSite)                  },
     { ID_NAME(IID_IInternalUnknown),            TRUE },
     { ID_NAME(IID_IMarshal)                          },
+    { ID_NAME(IID_IMarshal2),                   TRUE },
     { ID_NAME(IID_IMenuBand),                   TRUE },
     { ID_NAME(IID_IMenuPopup),                  TRUE },
     { ID_NAME(IID_IModalWindow)                      },
     { ID_NAME(IID_IMoniker)                          },
     { ID_NAME(IID_IMultiMonitorDockingSite),    TRUE },
     { ID_NAME(IID_IMultiQI),                    TRUE },
-    { ID_NAME(IID_INamespaceProxy),             TRUE },
     { ID_NAME(IID_INameSpaceTreeControl),       TRUE },
+    { ID_NAME(IID_INamespaceProxy),             TRUE },
+    { ID_NAME(IID_INamespaceWalk)                    },
+    { ID_NAME(IID_INamespaceWalkCB)                  },
+    { ID_NAME(IID_INamespaceWalkCB2)                 },
     { ID_NAME(IID_INetCfg),                     TRUE },
     //{ ID_NAME(IID_INetCfgBindingInterface)           },
     //{ ID_NAME(IID_INetCfgBindingPath)                },
@@ -174,6 +191,7 @@ static KNOWN_INTERFACE KnownInterfaces[] =
     { ID_NAME(IID_INetLanConnectionUiInfo),     TRUE },
     { ID_NAME(IID_INewShortcutHookA),           TRUE },
     { ID_NAME(IID_INewShortcutHookW),           TRUE },
+    { ID_NAME(IID_INewWindowManager)                 },
     { ID_NAME(IID_INSCTree),                    TRUE },
     { ID_NAME(IID_INSCTree2),                   TRUE },
     { ID_NAME(IID_IObjMgr),                     TRUE },
@@ -216,10 +234,16 @@ static KNOWN_INTERFACE KnownInterfaces[] =
     { ID_NAME(IID_IRegTreeOptions),             TRUE },
     { ID_NAME(IID_IRemoteComputer)                   },
     { ID_NAME(IID_IResolveShellLink)                 },
+    { ID_NAME(IID_IRpcOptions),                 TRUE },
     { ID_NAME(IID_IRunnableObject)                   },
+    { ID_NAME(IID_IScriptErrorList)                  },
+    { ID_NAME(IID_ISearch)                           },
+    { ID_NAME(IID_ISearchAssistantOC)                },
+    { ID_NAME(IID_ISearchAssistantOC2)               },
+    { ID_NAME(IID_ISearchAssistantOC3)               },
+    { ID_NAME(IID_ISearches)                         },
     { ID_NAME(IID_IServerSecurity),             TRUE },
     { ID_NAME(IID_IServiceProvider)                  },
-    { ID_NAME(IID_ISFHelper),                   TRUE },
     { ID_NAME(IID_IShellApp),                   TRUE },
     { ID_NAME(IID_IShellBrowser)                     },
     { ID_NAME(IID_IShellBrowserService),        TRUE },
@@ -233,9 +257,11 @@ static KNOWN_INTERFACE KnownInterfaces[] =
     { ID_NAME(IID_IShellDispatch3)                   },
     { ID_NAME(IID_IShellDispatch4)                   },
     { ID_NAME(IID_IShellDispatch5),             TRUE },
+    { ID_NAME(IID_IShellDispatch6),             TRUE },
     { ID_NAME(IID_IShellExecuteHookA),          TRUE },
     { ID_NAME(IID_IShellExecuteHookW),          TRUE },
     { ID_NAME(IID_IShellExtInit),               TRUE },
+    { ID_NAME(IID_IShellFavoritesNameSpace)          },
     { ID_NAME(IID_IShellFolder)                      },
     { ID_NAME(IID_IShellFolder2)                     },
     { ID_NAME(IID_IShellFolderBand),            TRUE },
@@ -245,6 +271,7 @@ static KNOWN_INTERFACE KnownInterfaces[] =
     { ID_NAME(IID_IShellFolderViewCB),          TRUE },
     { ID_NAME(IID_IShellFolderViewDual)              },
     { ID_NAME(IID_IShellFolderViewDual2)             },
+    { ID_NAME(IID_IShellFolderViewDual3),       TRUE },
     { ID_NAME(IID_IShellFolderViewType),        TRUE },
     { ID_NAME(IID_IShellIcon)                        },
     { ID_NAME(IID_IShellIconOverlay),           TRUE },
@@ -269,6 +296,8 @@ static KNOWN_INTERFACE KnownInterfaces[] =
     { ID_NAME(IID_IShellPropSheetExt),          TRUE },
     { ID_NAME(IID_IShellService),               TRUE },
     { ID_NAME(IID_IShellTaskScheduler),         TRUE },
+    { ID_NAME(IID_IShellUIHelper)                    },
+    { ID_NAME(IID_IShellUIHelper2),             TRUE },
     { ID_NAME(IID_IShellView)                        },
     { ID_NAME(IID_IShellView2)                       },
     { ID_NAME(IID_IShellView3)                       },
@@ -292,10 +321,19 @@ static KNOWN_INTERFACE KnownInterfaces[] =
     { ID_NAME(IID_IViewObject)                       },
     { ID_NAME(IID_IViewObject2)                      },
     { ID_NAME(IID_IViewObjectEx),               TRUE },
+    { ID_NAME(IID_IWebBrowser)                       },
+    { ID_NAME(IID_IWebBrowser2)                      },
+    { ID_NAME(IID_IWebBrowserApp)                    },
     { ID_NAME(IID_IWinEventHandler),            TRUE },
 
     { ID_NAME(IID_DFConstraint),                TRUE },
+    { ID_NAME(DIID__SearchAssistantEvents)           },
     { ID_NAME(DIID_DShellFolderViewEvents)           },
+    { ID_NAME(DIID_DShellNameSpaceEvents)            },
+    { ID_NAME(DIID_DShellWindowsEvents)              },
+    { ID_NAME(DIID_DWebBrowserEvents)                },
+    { ID_NAME(DIID_DWebBrowserEvents2)               },
+    { ID_NAME(DIID_XMLDOMDocumentEvents )            },
 
     { ID_NAME(IID_CDefView),                    TRUE },
     { ID_NAME(IID_Folder)                            },
@@ -420,7 +458,7 @@ TestModuleInterfaces(
                 continue;
             offset = GetInterfaceOffset(pUnk, iface->iid);
 #ifdef GENERATE_TABLE_ENTRIES
-            ok(offset == INTF_NOT_EXPOSED, "%s: { %s0x%x,   &%s },\n", class->name, offset < 0 ? "-" : "", offset < 0 ? -offset : offset, iface->name);
+            ok(offset == INTF_NOT_EXPOSED, "%s: { %s0x%lx,   &%s },\n", class->name, offset < 0 ? "-" : "", offset < 0 ? -offset : offset, iface->name);
 #else
             ok(offset == INTF_NOT_EXPOSED, "%s exposes %s (offset %ld), but shouldn't\n", class->name, iface->name, offset);
 #endif
@@ -444,7 +482,7 @@ TestModuleRegistry(
     HKEY hKeyClasses;
     LONG result;
 
-    result = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"Software\\Classes\\CLSID", 0, KEY_ENUMERATE_SUB_KEYS, &hKeyClasses);
+    result = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\Classes\\CLSID", 0, KEY_ENUMERATE_SUB_KEYS, &hKeyClasses);
     ok(result == NO_ERROR, "Failed to open classes key, error %lu\n", result);
     if (!myskip(result == NO_ERROR, "No classes key\n"))
     {
@@ -465,20 +503,20 @@ TestModuleRegistry(
             if (myskip(NT_SUCCESS(status), "No guid string\n"))
                 continue;
 
-            result = RegOpenKeyEx(hKeyClasses, clsid.Buffer, 0, KEY_ENUMERATE_SUB_KEYS, &hKey);
+            result = RegOpenKeyExW(hKeyClasses, clsid.Buffer, 0, KEY_ENUMERATE_SUB_KEYS, &hKey);
             ok(result == NO_ERROR, "Failed to open key for %s, error %lu\n", class->name, result);
             RtlFreeUnicodeString(&clsid);
             if (myskip(result == NO_ERROR, "No key\n"))
                 continue;
 
-            result = RegOpenKeyEx(hKey, L"InProcServer32", 0, KEY_QUERY_VALUE, &hKeyServer);
+            result = RegOpenKeyExW(hKey, L"InProcServer32", 0, KEY_QUERY_VALUE, &hKeyServer);
             ok(result == NO_ERROR, "Failed to open key for %s, error %lu\n", class->name, result);
             RegCloseKey(hKey);
             if (myskip(result == NO_ERROR, "No key\n"))
                 continue;
 
             dataSize = sizeof(data);
-            result = RegQueryValueEx(hKeyServer, NULL, NULL, &type, (PBYTE)data, &dataSize);
+            result = RegQueryValueExW(hKeyServer, NULL, NULL, &type, (PBYTE)data, &dataSize);
             ok(result == NO_ERROR, "Failed to query value for %s, error %lu\n", class->name, result);
             if (!myskip(result == NO_ERROR, "No module name\n"))
             {
@@ -493,7 +531,7 @@ TestModuleRegistry(
             }
 
             dataSize = sizeof(data);
-            result = RegQueryValueEx(hKeyServer, L"ThreadingModel", NULL, &type, (PBYTE)data, &dataSize);
+            result = RegQueryValueExW(hKeyServer, L"ThreadingModel", NULL, &type, (PBYTE)data, &dataSize);
             ok(result == NO_ERROR, "Failed to query value for %s, error %lu\n", class->name, result);
             if (!myskip(result == NO_ERROR, "No ThreadingModel\n"))
             {
@@ -524,7 +562,7 @@ TestManualInstantiation(
     PCCLASS_AND_INTERFACES class;
     HRESULT (__stdcall *DllGetClassObject)(REFCLSID, REFIID, PVOID *);
 
-    DllGetClassObject = (PVOID)GetProcAddress(GetModuleHandle(ModuleName), "DllGetClassObject");
+    DllGetClassObject = (PVOID)GetProcAddress(GetModuleHandleW(ModuleName), "DllGetClassObject");
     ok(DllGetClassObject != NULL, "DllGetClassObject not found in %ls, error %lu\n", ModuleName, GetLastError());
     if (myskip(DllGetClassObject != NULL, "No DllGetClassObject\n"))
         return;
@@ -581,7 +619,7 @@ TestInterfaceRegistry(
     HKEY hKeyInterface;
     LONG result;
 
-    result = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"Software\\Classes\\Interface", 0, KEY_ENUMERATE_SUB_KEYS, &hKeyInterface);
+    result = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\Classes\\Interface", 0, KEY_ENUMERATE_SUB_KEYS, &hKeyInterface);
     ok(result == NO_ERROR, "Failed to open interface key, error %lu\n", result);
     if (!myskip(result == NO_ERROR, "No interface key\n"))
     {
@@ -602,7 +640,7 @@ TestInterfaceRegistry(
             if (myskip(NT_SUCCESS(status), "No guid string\n"))
                 continue;
 
-            result = RegOpenKeyEx(hKeyInterface, iid.Buffer, 0, KEY_QUERY_VALUE, &hKey);
+            result = RegOpenKeyExW(hKeyInterface, iid.Buffer, 0, KEY_QUERY_VALUE, &hKey);
             if (iface->noreg)
             {
                 ok(result == ERROR_FILE_NOT_FOUND, "RegOpenKeyEx returned %lu for %s\n", result, iface->name);
@@ -617,7 +655,7 @@ TestInterfaceRegistry(
                 continue;
 
             dataSize = sizeof(data);
-            result = RegQueryValueEx(hKey, NULL, NULL, &type, (PBYTE)data, &dataSize);
+            result = RegQueryValueExW(hKey, NULL, NULL, &type, (PBYTE)data, &dataSize);
             ok(result == NO_ERROR, "Failed to query value for %s, error %lu\n", iface->name, result);
             if (!myskip(result == NO_ERROR, "No module name\n"))
             {