Reactos
at master 159 lines 3.2 kB view raw
1/* 2 * PROJECT: ReactOS Shell 3 * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later) 4 * PURPOSE: ReactOS Networking Configuration 5 * COPYRIGHT: Copyright 2008 Johannes Anderwald (johannes.anderwald@reactos.org) 6 */ 7 8#include "precomp.h" 9 10HMODULE g_hModule = NULL; 11 12HINSTANCE netshell_hInstance; 13 14class CNetshellModule : public CComModule 15{ 16public: 17}; 18 19BEGIN_OBJECT_MAP(ObjectMap) 20 OBJECT_ENTRY(CLSID_NetworkConnections, CNetworkConnections) 21 OBJECT_ENTRY(CLSID_ConnectionManager, CNetConnectionManager) 22 OBJECT_ENTRY(CLSID_LanConnectionUi, CNetConnectionPropertyUi) 23 OBJECT_ENTRY(CLSID_ConnectionTray, CLanStatus) 24END_OBJECT_MAP() 25 26CNetshellModule gModule; 27 28HPROPSHEETPAGE 29InitializePropertySheetPage(LPWSTR resname, DLGPROC dlgproc, LPARAM lParam, LPWSTR szTitle) 30{ 31 PROPSHEETPAGEW ppage; 32 33 memset(&ppage, 0x0, sizeof(PROPSHEETPAGEW)); 34 ppage.dwSize = sizeof(PROPSHEETPAGEW); 35 ppage.dwFlags = PSP_DEFAULT; 36 ppage.pszTemplate = resname; 37 ppage.pfnDlgProc = dlgproc; 38 ppage.lParam = lParam; 39 ppage.hInstance = netshell_hInstance; 40 if (szTitle) 41 { 42 ppage.dwFlags |= PSP_USETITLE; 43 ppage.pszTitle = szTitle; 44 } 45 return CreatePropertySheetPageW(&ppage); 46} 47 48extern "C" 49{ 50 51BOOL 52WINAPI 53DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad) 54{ 55 switch (fdwReason) 56 { 57 case DLL_PROCESS_ATTACH: 58 netshell_hInstance = hinstDLL; 59 DisableThreadLibraryCalls(netshell_hInstance); 60 gModule.Init(ObjectMap, netshell_hInstance, NULL); 61 break; 62 default: 63 break; 64 } 65 66 return TRUE; 67} 68 69HRESULT 70WINAPI 71DllCanUnloadNow(void) 72{ 73 return S_FALSE; 74} 75 76STDAPI 77DllRegisterServer(void) 78{ 79 HRESULT hr; 80 81 hr = gModule.DllRegisterServer(FALSE); 82 if (FAILED_UNEXPECTEDLY(hr)) 83 return hr; 84 85 hr = gModule.UpdateRegistryFromResource(IDR_NETSHELL, TRUE, NULL); 86 if (FAILED_UNEXPECTEDLY(hr)) 87 return hr; 88 89 return S_OK; 90} 91 92STDAPI 93DllUnregisterServer(void) 94{ 95 HRESULT hr; 96 97 hr = gModule.DllUnregisterServer(FALSE); 98 if (FAILED_UNEXPECTEDLY(hr)) 99 return hr; 100 101 hr = gModule.UpdateRegistryFromResource(IDR_NETSHELL, FALSE, NULL); 102 if (FAILED_UNEXPECTEDLY(hr)) 103 return hr; 104 105 return S_OK; 106} 107 108STDAPI 109DllGetClassObject( 110 REFCLSID rclsid, 111 REFIID riid, 112 LPVOID *ppv) 113{ 114 return gModule.DllGetClassObject(rclsid, riid, ppv); 115} 116 117VOID 118WINAPI 119NcFreeNetconProperties(NETCON_PROPERTIES *pProps) 120{ 121 CoTaskMemFree(pProps->pszwName); 122 CoTaskMemFree(pProps->pszwDeviceName); 123 CoTaskMemFree(pProps); 124} 125 126BOOL 127WINAPI 128NcIsValidConnectionName(_In_ PCWSTR pszwName) 129{ 130 if (!pszwName) 131 return FALSE; 132 133 BOOL nonSpace = FALSE; 134 while (*pszwName) 135 { 136 switch(*(pszwName++)) 137 { 138 case L'\\': 139 case L'/': 140 case L':': 141 case L'*': 142 case L'\t': 143 case L'?': 144 case L'<': 145 case L'>': 146 case L'|': 147 case L'\"': 148 return FALSE; 149 case L' ': 150 break; 151 default: 152 nonSpace = TRUE; 153 break; 154 } 155 } 156 return nonSpace; 157} 158 159} // extern "C"