1 /* 2 * Test for the default activation context that is active in every process. 3 * 4 * Copyright 2017 Giannis Adamopoulos 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 19 */ 20 21 #include "precomp.h" 22 23 START_TEST(DefaultActCtx) 24 { 25 DWORD buffer[256]; 26 BOOL res; 27 PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION details = (PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION)buffer; 28 PACTIVATION_CONTEXT_DETAILED_INFORMATION info = (PACTIVATION_CONTEXT_DETAILED_INFORMATION)buffer; 29 HANDLE h; 30 DWORD i; 31 ACTCTX_SECTION_KEYED_DATA KeyedData = { 0 }; 32 33 res = QueryActCtxW(QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX, 34 NULL, 35 NULL, 36 ActivationContextDetailedInformation, 37 &buffer, 38 sizeof(buffer), 39 NULL); 40 ok(res == TRUE, "Expected success\n"); 41 if(res) 42 { 43 ok(info->lpRootManifestPath == NULL, "Expected null lpRootManifestPath, got %S\n", info->lpRootManifestPath); 44 ok(info->lpRootConfigurationPath == NULL, "Expected null lpRootConfigurationPath, got %S\n", info->lpRootConfigurationPath); 45 ok(info->lpAppDirPath == NULL, "Expected null lpAppDirPath, got %S\n", info->lpAppDirPath); 46 ok(info->ulAssemblyCount == 0, "Expected 0 assemblies\n"); 47 } 48 else 49 { 50 skip("ActivationContextDetailedInformation failed\n"); 51 } 52 53 54 i = 0; 55 res = QueryActCtxW(QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX, 56 NULL, 57 &i, 58 AssemblyDetailedInformationInActivationContext, 59 &buffer, 60 sizeof(buffer), 61 NULL); 62 ok(res == TRUE, "Expected success\n"); 63 if (res) 64 { 65 ok(details->lpAssemblyEncodedAssemblyIdentity == NULL, "Expected null lpAssemblyEncodedAssemblyIdentity, got %S\n", details->lpAssemblyEncodedAssemblyIdentity); 66 ok(details->lpAssemblyManifestPath == NULL, "Expected null lpAssemblyManifestPath, got %S\n", details->lpAssemblyManifestPath); 67 ok(details->lpAssemblyPolicyPath == NULL, "Expected null lpAssemblyPolicyPath, got %S\n", details->lpAssemblyPolicyPath); 68 ok(details->lpAssemblyDirectoryName == NULL, "Expected null lpAssemblyDirectoryName, got %S\n", details->lpAssemblyDirectoryName); 69 } 70 else 71 { 72 skip("AssemblyDetailedInformationInActivationContext failed\n"); 73 } 74 75 i = 1; 76 res = QueryActCtxW(QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX, 77 NULL, 78 &i, 79 AssemblyDetailedInformationInActivationContext, 80 &buffer, 81 sizeof(buffer), 82 NULL); 83 ok(res == TRUE, "Expected success\n"); /* This is FALSE in win10 */ 84 if (res) 85 { 86 ok(details->lpAssemblyEncodedAssemblyIdentity == NULL, "Expected null lpAssemblyEncodedAssemblyIdentity, got %S\n", details->lpAssemblyEncodedAssemblyIdentity); 87 ok(details->lpAssemblyManifestPath == NULL, "Expected null lpAssemblyManifestPath, got %S\n", details->lpAssemblyManifestPath); 88 ok(details->lpAssemblyPolicyPath == NULL, "Expected null lpAssemblyPolicyPath, got %S\n", details->lpAssemblyPolicyPath); 89 ok(details->lpAssemblyDirectoryName == NULL, "Expected null lpAssemblyDirectoryName, got %S\n", details->lpAssemblyDirectoryName); 90 } 91 else 92 { 93 skip("AssemblyDetailedInformationInActivationContext failed\n"); 94 } 95 96 res = GetCurrentActCtx (&h); 97 ok(res == TRUE, "Expected success\n"); 98 ok(h == NULL, "Expected null current context\n"); 99 100 KeyedData.cbSize = sizeof(KeyedData); 101 res = FindActCtxSectionStringW(FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX, 102 NULL, 103 ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION, 104 L"Microsoft.Windows.SysyemCompatible", 105 &KeyedData); 106 ok(res == FALSE, "Expected failure\n"); 107 108 KeyedData.cbSize = sizeof(KeyedData); 109 res = FindActCtxSectionStringW(FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX, 110 NULL, 111 ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION, 112 L"System Default Context", 113 &KeyedData); 114 ok(res == FALSE, "Expected failure\n"); 115 116 KeyedData.cbSize = sizeof(KeyedData); 117 res = FindActCtxSectionStringW(FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX, 118 NULL, 119 ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION, 120 L"Microsoft.Windows.Common-Controls", 121 &KeyedData); 122 ok(res == TRUE, "Expected success\n"); 123 if (res) 124 { 125 ok(KeyedData.hActCtx == NULL, "Expected null handle for common control context\n"); 126 ok(KeyedData.ulAssemblyRosterIndex != 0, "%lu\n", KeyedData.ulAssemblyRosterIndex); 127 } 128 else 129 { 130 skip("ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION failed\n"); 131 } 132 133 } 134 135 HANDLE _CreateActCtxFromFile(LPCWSTR FileName, int line); 136 137 START_TEST(ActCtxWithXmlNamespaces) 138 { 139 // _CreateActCtxFromFile() contains all the assertions we need. 140 (void)_CreateActCtxFromFile(L"xmlns.manifest", __LINE__); 141 } 142