#include "precomp.h"
#include <debug.h>
Go to the source code of this file.
|
| static VOID | UpdateServiceStatus (_In_ DWORD dwState, _In_ DWORD dwCheckPoint) |
| |
| static DWORD WINAPI | ServiceControlHandler (DWORD dwControl, DWORD dwEventType, LPVOID lpEventData, LPVOID lpContext) |
| |
| static DWORD | GetBooleanRegValue (IN HKEY hKey, IN PCWSTR lpSubKey, IN PCWSTR lpValue, OUT PBOOL pValue) |
| |
| BOOL | GetSuppressNewUIValue (VOID) |
| |
| BOOL | RunningOnLiveMedium (VOID) |
| |
| VOID WINAPI | ServiceMain (DWORD argc, LPTSTR *argv) |
| |
| static DWORD | InitializePnPManager (VOID) |
| |
| BOOL WINAPI | DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) |
| |
◆ NDEBUG
◆ DllMain()
Definition at line 406 of file umpnpmgr.c.
409{
411 {
415 break;
416
418 break;
419 }
420
422}
static DWORD const fdwReason
#define DLL_PROCESS_ATTACH
#define DLL_PROCESS_DETACH
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
static DWORD InitializePnPManager(VOID)
◆ GetBooleanRegValue()
Definition at line 133 of file umpnpmgr.c.
138{
142
143
145
147 lpSubKey,
148 0,
150 &hSubKey);
152 {
153 DPRINT(
"GetBooleanRegValue(): RegOpenKeyExW() has failed to open '%S' key! (Error: %lu)\n",
154 lpSubKey, dwError);
155 return dwError;
156 }
157
159 lpValue,
160 0,
161 &dwType,
165 {
166 DPRINT(
"GetBooleanRegValue(): RegQueryValueExW() has failed to query '%S' value! (Error: %lu)\n",
167 lpValue, dwError);
169 }
171 {
172 DPRINT(
"GetBooleanRegValue(): The value is not of REG_DWORD type!\n");
174 }
175
176
178
181
182 return dwError;
183}
#define RegCloseKey(hKey)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
static const WCHAR Cleanup[]
static HANDLE ULONG_PTR dwData
_In_opt_ _In_opt_ _In_ _In_ DWORD cbData
Referenced by GetSuppressNewUIValue(), and InitializePnPManager().
◆ GetSuppressNewUIValue()
Definition at line 186 of file umpnpmgr.c.
187{
189
190
191
192
193
195 L"Software\\Policies\\Microsoft\\Windows\\DeviceInstall\\Settings",
197 &bSuppressNewHWUI);
198 if (bSuppressNewHWUI)
199 DPRINT(
"GetSuppressNewUIValue(): newdev.dll's wizard UI won't be shown!\n");
200
201 return bSuppressNewHWUI;
202}
static DWORD GetBooleanRegValue(IN HKEY hKey, IN PCWSTR lpSubKey, IN PCWSTR lpValue, OUT PBOOL pValue)
#define HKEY_LOCAL_MACHINE
Referenced by IsUISuppressionAllowed().
◆ InitializePnPManager()
Definition at line 320 of file umpnpmgr.c.
321{
324
325 DPRINT(
"UMPNPMGR: InitializePnPManager() started\n");
326
327
329
332 {
334 DPRINT1(
"Could not create the Install Event! (Error %lu)\n", dwError);
335 return dwError;
336 }
337
341 L"Global\\PnP_No_Pending_Install_Events");
343 {
345 DPRINT1(
"Could not create the Pending-Install Event! (Error %lu)\n", dwError);
346 return dwError;
347 }
348
349
350
351
352
355 {
357 DPRINT1(
"Could not create the List Event! (Error %lu)\n", dwError);
358 return dwError;
359 }
360
363 {
365 DPRINT1(
"Could not create the List Mutex! (Error %lu)\n", dwError);
366 return dwError;
367 }
369
370
372 L"System\\CurrentControlSet\\Services\\PlugPlay\\Parameters",
376 DPRINT(
"UMPNPMGR: newdev.dll's wizard UI won't be shown!\n");
377
379 L"System\\CurrentControlSet\\Enum",
380 0,
384 {
385 DPRINT1(
"Could not open the Enum Key! (Error %lu)\n", dwError);
386 return dwError;
387 }
388
390 L"System\\CurrentControlSet\\Control\\Class",
391 0,
395 {
396 DPRINT1(
"Could not open the Class Key! (Error %lu)\n", dwError);
397 return dwError;
398 }
399
400 DPRINT(
"UMPNPMGR: InitializePnPManager() done\n");
401
402 return 0;
403}
static BOOL SetupIsActive(VOID)
HANDLE hDeviceInstallListNotEmpty
HANDLE hDeviceInstallListMutex
HANDLE hNoPendingInstalls
LIST_ENTRY DeviceInstallListHead
#define InitializeListHead(ListHead)
#define SE_ASSIGNPRIMARYTOKEN_PRIVILEGE
NTSYSAPI NTSTATUS NTAPI RtlAdjustPrivilege(_In_ ULONG Privilege, _In_ BOOLEAN NewValue, _In_ BOOLEAN ForThread, _Out_ PBOOLEAN OldValue)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateMutexW(IN LPSECURITY_ATTRIBUTES lpMutexAttributes OPTIONAL, IN BOOL bInitialOwner, IN LPCWSTR lpName OPTIONAL)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
DWORD WINAPI GetLastError(void)
Referenced by DllMain().
◆ RunningOnLiveMedium()
Definition at line 205 of file umpnpmgr.c.
206{
214
215 DPRINT(
"RunningOnLiveMedium()\n");
216
217
219 L"SYSTEM\\CurrentControlSet\\Control",
220 0,
222 &hControlKey);
224 goto done;
225
226
229 L"SystemStartOptions",
231 &dwType,
235 goto done;
236
237
239 while (CurrentOption)
240 {
244 if (
_wcsicmp(CurrentOption,
L"MININT") == 0)
245 {
246 DPRINT(
"Found 'MININT' boot option\n");
248 goto done;
249 }
251 }
252
253done:
255
256 return LiveMedium;
257}
static char * NextOption(const char *const ostr)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
_In_ PWDFDEVICE_INIT _In_ PWDF_REMOVE_LOCK_OPTIONS Options
Referenced by ServiceMain().
◆ ServiceControlHandler()
Definition at line 85 of file umpnpmgr.c.
89{
90 DPRINT1(
"ServiceControlHandler() called\n");
91
92 switch (dwControl)
93 {
95 DPRINT1(
" SERVICE_CONTROL_STOP received\n");
97
101
103 DPRINT1(
" SERVICE_CONTROL_PAUSE received\n");
106
108 DPRINT1(
" SERVICE_CONTROL_CONTINUE received\n");
111
113 DPRINT1(
" SERVICE_CONTROL_INTERROGATE received\n");
117
119 DPRINT1(
" SERVICE_CONTROL_SHUTDOWN received\n");
121
125
126 default :
127 DPRINT1(
" Control %lu received\n", dwControl);
129 }
130}
#define ERROR_CALL_NOT_IMPLEMENTED
RPC_STATUS WINAPI RpcMgmtStopServerListening(RPC_BINDING_HANDLE Binding)
BOOL WINAPI SetServiceStatus(SERVICE_STATUS_HANDLE hServiceStatus, LPSERVICE_STATUS lpServiceStatus)
static VOID UpdateServiceStatus(_In_ DWORD dwState, _In_ DWORD dwCheckPoint)
static SERVICE_STATUS_HANDLE ServiceStatusHandle
static SERVICE_STATUS ServiceStatus
#define SERVICE_STOP_PENDING
#define SERVICE_CONTROL_SHUTDOWN
#define SERVICE_CONTROL_CONTINUE
#define SERVICE_CONTROL_STOP
#define SERVICE_CONTROL_PAUSE
#define SERVICE_CONTROL_INTERROGATE
Referenced by ServiceMain().
◆ ServiceMain()
Definition at line 260 of file umpnpmgr.c.
261{
264
267
268 DPRINT(
"ServiceMain() called\n");
269
271
276 {
278 return;
279 }
280
282
284 0,
287 0,
291
293
295 0,
298 0,
302
304
306 0,
309 0,
313
315
316 DPRINT(
"ServiceMain() done\n");
317}
DWORD WINAPI PnpEventThread(_In_ LPVOID lpParameter)
DWORD WINAPI DeviceInstallThread(LPVOID lpParameter)
DWORD WINAPI RpcServerThread(LPVOID lpParameter)
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)
#define UNREFERENCED_PARAMETER(P)
SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerExW(LPCWSTR lpServiceName, LPHANDLER_FUNCTION_EX lpHandlerProc, LPVOID lpContext)
static WCHAR ServiceName[]
static DWORD WINAPI ServiceControlHandler(DWORD dwControl, DWORD dwEventType, LPVOID lpEventData, LPVOID lpContext)
BOOL RunningOnLiveMedium(VOID)
#define SERVICE_START_PENDING
◆ UpdateServiceStatus()
Definition at line 53 of file umpnpmgr.c.
56{
59
65
68 else
70
76 else
78
81}
DWORD dwServiceSpecificExitCode
#define SERVICE_ACCEPT_SHUTDOWN
#define SERVICE_PAUSE_PENDING
#define SERVICE_CONTINUE_PENDING
#define SERVICE_WIN32_OWN_PROCESS
Referenced by ServiceControlHandler(), and ServiceMain().
◆ g_IsLiveMedium
◆ g_IsUISuppressed
◆ g_ShuttingDown
◆ hClassKey
Definition at line 45 of file umpnpmgr.c.
Referenced by EditTypeDlg_ReadClass(), EditTypeDlg_WriteClass(), InitializePnPManager(), PNP_DeleteClassKey(), PNP_EnumerateSubKeys(), PNP_GetClassInstance(), PNP_GetClassRegProp(), PNP_SetClassRegProp(), PrintAdapterDescription(), SETUP_CreateClassKey(), SETUP_GetIconIndex(), SETUPDI_CreateDrvKey(), SetupDiBuildClassInfoListExW(), and SetupDiClassGuidsFromNameExW().
◆ hEnumKey
Definition at line 44 of file umpnpmgr.c.
Referenced by CreateDeviceInstance(), GenerateDeviceID(), GetAllInstanceList(), GetAllInstanceListSize(), GetBootResourceList(), GetDeviceInstanceList(), GetDeviceInstanceListSize(), GetEnumeratorInstanceList(), GetEnumeratorInstanceListSize(), GetEnumOptions(), GetServiceInstanceList(), GetServiceInstanceListSize(), InitializePnPManager(), InstallDevice(), PNP_AddID(), PNP_CreateDevInst(), PNP_CreateKey(), PNP_EnumerateSubKeys(), PNP_GetCustomDevProp(), PNP_GetDeviceRegProp(), PNP_SetDeviceRegProp(), PNP_ValidateDeviceInstance(), SETUP_CreateInterfaceList(), and SetupDeviceInstance().
◆ ServiceName
| WCHAR ServiceName[] = L"PlugPlay" |
|
static |
◆ ServiceStatus
◆ ServiceStatusHandle