[COM_APITEST]
[reactos.git] / rostests / apitests / com / com_apitest.c
index 79fa153..6e9ffcb 100644 (file)
@@ -34,11 +34,17 @@ static KNOWN_INTERFACE KnownInterfaces[] =
     { ID_NAME(IID_IACList),                     TRUE },
     { ID_NAME(IID_IACList2),                    TRUE },
     { ID_NAME(IID_IADesktopP2),                 TRUE },
+    { ID_NAME(IID_IAccIdentity)                      },
+    { ID_NAME(IID_IAccPropServer)                    },
+    { ID_NAME(IID_IAccPropServices)                  },
     { ID_NAME(IID_IAccessible)                       },
+    { ID_NAME(IID_IAccessibleHandler)                },
     { ID_NAME(IID_IAccessControl),              TRUE },
     { ID_NAME(IID_IAccessor)                         },
     { ID_NAME(IID_IActiveDesktop),              TRUE },
     { ID_NAME(IID_IActiveDesktopP),             TRUE },
+    { ID_NAME(IID_IActionProgress)                   },
+    { ID_NAME(IID_IActionProgressDialog)             },
     { ID_NAME(IID_IAddressBarParser),           TRUE },
     { ID_NAME(IID_IAddressBand),                TRUE },
     { ID_NAME(IID_IAddressEditBox),             TRUE },
@@ -46,20 +52,35 @@ static KNOWN_INTERFACE KnownInterfaces[] =
     { ID_NAME(IID_IAugmentedShellFolder2),      TRUE },
     { ID_NAME(IID_IAutoComplete),               TRUE },
     { ID_NAME(IID_IAutoComplete2),              TRUE },
-    { ID_NAME(IID_IBandNavigate),               TRUE },
+    { ID_NAME(IID_IAutoCompleteDropDown)             },
+    { ID_NAME(IID_IBandHost)                         },
+    { 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_IClassFactory)                     },
     { ID_NAME(IID_IClassFactory2)                    },
     { ID_NAME(IID_IClassFactory3),              TRUE },
     { ID_NAME(IID_IClientSecurity),             TRUE },
+    { ID_NAME(IID_ICommDlgBrowser)                   },
+    { ID_NAME(IID_ICommDlgBrowser2)                  },
+    { ID_NAME(IID_ICommDlgBrowser3)                  },
+    { ID_NAME(IID_IComputerInfoChangeNotify),        },
     { ID_NAME(IID_IComThreadingInfo),           TRUE },
     { ID_NAME(IID_IContext),                    TRUE },
     { ID_NAME(IID_IContextMenu),                TRUE },
@@ -68,6 +89,8 @@ static KNOWN_INTERFACE KnownInterfaces[] =
     { ID_NAME(IID_IContextMenuCB),              TRUE },
     { ID_NAME(IID_IContextMenuSite)                  },
     { ID_NAME(IID_IContinue)                         },
+    { ID_NAME(IID_ICopyHookA),                  TRUE },
+    { ID_NAME(IID_ICopyHookW),                  TRUE },
     { ID_NAME(IID_IDVGetEnum),                  TRUE },
     { ID_NAME(IID_IDataObject)                       },
     //{ ID_NAME(IID_IDefViewID)                        }, == DefViewFrame3
@@ -76,6 +99,7 @@ static KNOWN_INTERFACE KnownInterfaces[] =
     { ID_NAME(IID_IDefViewFrameGroup)                },
     { ID_NAME(IID_IDefViewSafety),                   },
     { ID_NAME(IID_IDefViewScript),              TRUE },
+    { ID_NAME(IID_IDelayedRelease),             TRUE },
     { ID_NAME(IID_IDeskBand)                         },
     { ID_NAME(IID_IDeskBandEx)                       },
     { ID_NAME(IID_IDeskBar),                    TRUE },
@@ -93,11 +117,18 @@ 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)                      },
     { ID_NAME(IID_IErrorLog)                         },
+    { ID_NAME(IID_IExplorerBrowser)                  },
     { ID_NAME(IID_IExplorerToolbar),            TRUE },
     { ID_NAME(IID_IExtractIconA),               TRUE },
     { ID_NAME(IID_IExtractIconW),               TRUE },
@@ -105,27 +136,60 @@ static KNOWN_INTERFACE KnownInterfaces[] =
     { ID_NAME(IID_IExtractImage2)                    },
     { ID_NAME(IID_IFileDialog)                       },
     { ID_NAME(IID_IFileDialog2),                TRUE },
+    { ID_NAME(IID_IFileOpenDialog)                   },
+    { ID_NAME(IID_IFileSaveDialog)                   },
     { ID_NAME(IID_IFileSearchBand)                   },
+    { ID_NAME(IID_IFileViewerA),                TRUE },
+    { ID_NAME(IID_IFileViewerSite),             TRUE },
+    { ID_NAME(IID_IFileViewerW),                TRUE },
     { ID_NAME(IID_IFolderBandPriv)                   },
     { ID_NAME(IID_IFolderFilter)                     },
     { ID_NAME(IID_IFolderFilterSite)                 },
     { ID_NAME(IID_IFolderView)                       },
     { ID_NAME(IID_IFolderView2)                      },
+    { ID_NAME(IID_IFolderViewHost),             TRUE },
     { ID_NAME(IID_IFolderViewOC)                     },
     { ID_NAME(IID_IFolderViewSettings)               },
+    { 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_INamespaceWalk)                    },
+    { ID_NAME(IID_INamespaceWalkCB)                  },
+    { ID_NAME(IID_INamespaceWalkCB2)                 },
+    { ID_NAME(IID_INetCfg),                     TRUE },
+    //{ ID_NAME(IID_INetCfgBindingInterface)           },
+    //{ ID_NAME(IID_INetCfgBindingPath)                },
+    { ID_NAME(IID_INetCfgComponent),            TRUE },
+    { ID_NAME(IID_INetCfgComponentBindings),    TRUE },
+    { ID_NAME(IID_INetCfgComponentControl),     TRUE },
+    { ID_NAME(IID_INetCfgComponentPropertyUi),  TRUE },
+    { ID_NAME(IID_INetCfgLock),                 TRUE },
+    { ID_NAME(IID_INetCfgPnpReconfigCallback),  TRUE },
+    { ID_NAME(IID_INetConnectionConnectUi),     TRUE },
+    { ID_NAME(IID_INetConnectionPropertyUi),    TRUE },
+    { ID_NAME(IID_INetConnectionPropertyUi2),   TRUE },
+    { ID_NAME(IID_INetConnectionManager)             },
+    { 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 },
@@ -147,6 +211,7 @@ static KNOWN_INTERFACE KnownInterfaces[] =
     { ID_NAME(IID_IPersistFolder)                    },
     { ID_NAME(IID_IPersistFolder2)                   },
     { ID_NAME(IID_IPersistFolder3)                   },
+    { ID_NAME(IID_IPersistFreeThreadedObject),  TRUE },
     { ID_NAME(IID_IPersistHistory)                   },
     { ID_NAME(IID_IPersistIDList)                    },
     { ID_NAME(IID_IPersistMemory)                    },
@@ -155,41 +220,68 @@ static KNOWN_INTERFACE KnownInterfaces[] =
     { ID_NAME(IID_IPersistStorage)                   },
     { ID_NAME(IID_IPersistStream)                    },
     { ID_NAME(IID_IPersistStreamInit)                },
+    { ID_NAME(IID_IPreviewHandler)                   },
+    { ID_NAME(IID_IPreviewHandlerFrame)              },
+    { ID_NAME(IID_IPreviewHandlerVisuals)            },
     { ID_NAME(IID_IProgressDialog),             TRUE },
     { ID_NAME(IID_IPropertyBag)                      },
     { ID_NAME(IID_IPropertyBag2)                     },
+    { ID_NAME(IID_IPropSheetPage),              TRUE },
     { ID_NAME(IID_IQueryAssociations),          TRUE },
     { ID_NAME(IID_IQueryInfo),                  TRUE },
     { ID_NAME(IID_IRegTreeOptions),             TRUE },
+    { ID_NAME(IID_IRemoteComputer)                   },
+    { ID_NAME(IID_IResolveShellLink)                 },
     { 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 },
     { ID_NAME(IID_IShellChangeNotify),          TRUE },
+    { ID_NAME(IID_IShellCopyHookA),             TRUE },
+    { ID_NAME(IID_IShellCopyHookW),             TRUE },
     { ID_NAME(IID_IShellDesktopTray),           TRUE },
+    { ID_NAME(IID_IShellDetails),               TRUE },
     { ID_NAME(IID_IShellDispatch)                    },
     { ID_NAME(IID_IShellDispatch2)                   },
     { 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_IShellPropSheetExt),          TRUE },
-    { ID_NAME(IID_IShellIconOverlayIdentifier), TRUE },
+    { ID_NAME(IID_IShellFavoritesNameSpace)          },
     { ID_NAME(IID_IShellFolder)                      },
     { ID_NAME(IID_IShellFolder2)                     },
     { ID_NAME(IID_IShellFolderBand),            TRUE },
+    { ID_NAME(IID_IShellFolderSearchable),      TRUE },
+    { ID_NAME(IID_IShellFolderSearchableCallback), TRUE },
     { ID_NAME(IID_IShellFolderView),            TRUE },
     { 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 },
+    { ID_NAME(IID_IShellIconOverlayIdentifier), TRUE },
+    { ID_NAME(IID_IShellImageData),             TRUE },
+    { ID_NAME(IID_IShellImageDataAbort),        TRUE },
+    { ID_NAME(IID_IShellImageDataFactory),      TRUE },
     { ID_NAME(IID_IShellItem)                        },
     { ID_NAME(IID_IShellItem2)                       },
     { ID_NAME(IID_IShellItemArray)                   },
     { ID_NAME(IID_IShellItemFilter)                  },
     { ID_NAME(IID_IShellLinkA)                       },
+    { ID_NAME(IID_IShellLinkDataList),          TRUE },
     { ID_NAME(IID_IShellLinkDual)                    },
     { ID_NAME(IID_IShellLinkDual2)                   },
     { ID_NAME(IID_IShellLinkW)                       },
@@ -198,7 +290,11 @@ static KNOWN_INTERFACE KnownInterfaces[] =
     { ID_NAME(IID_IShellMenuAcc),               TRUE },
     { ID_NAME(IID_IShellMenuCallback),          TRUE },
     { ID_NAME(IID_IShellNameSpace)                   },
+    { 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)                       },
@@ -213,16 +309,28 @@ static KNOWN_INTERFACE KnownInterfaces[] =
     { ID_NAME(IID_ITaskbarList)                      },
     { ID_NAME(IID_ITaskbarList2)                     },
     { ID_NAME(IID_ITrackShellMenu),             TRUE },
+    { ID_NAME(IID_ITranslateShellChangeNotify), TRUE },
     { ID_NAME(IID_ITrayPriv),                   TRUE },
     { ID_NAME(IID_ITrayPriv2),                  TRUE },
     { ID_NAME(IID_IUnknown)                          },
+    { ID_NAME(IID_IURLSearchHook),              TRUE },
+    { ID_NAME(IID_IURLSearchHook2),             TRUE },
     { 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)                            },
@@ -371,7 +479,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"))
     {
@@ -392,20 +500,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"))
             {
@@ -420,7 +528,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"))
             {
@@ -451,7 +559,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;
@@ -508,7 +616,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"))
     {
@@ -529,7 +637,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);
@@ -544,7 +652,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"))
             {