@@ -31,10 +31,21 @@ SetLogger(_In_ LoggerFunction NewLogger)
31
31
}
32
32
33
33
static VOID
34
- PrintError (_In_ LOGGER_LEVEL Level , _In_ const TCHAR * Prefix )
34
+ PrintError (_In_ LOGGER_LEVEL Level , _In_z_ const TCHAR * Prefix , ... )
35
35
{
36
36
DWORD ErrorCode = GetLastError ();
37
- TCHAR * SystemMessage = NULL , * FormattedMessage = NULL ;
37
+ TCHAR * Message = NULL , * SystemMessage = NULL , * FormattedMessage = NULL ;
38
+ va_list Args ;
39
+ va_start (Args , Prefix );
40
+ FormatMessage (
41
+ FORMAT_MESSAGE_FROM_STRING | FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_MAX_WIDTH_MASK ,
42
+ Prefix ,
43
+ 0 ,
44
+ 0 ,
45
+ (VOID * )& Message ,
46
+ 0 ,
47
+ & Args );
48
+ va_end (Args );
38
49
FormatMessage (
39
50
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_MAX_WIDTH_MASK ,
40
51
NULL ,
@@ -51,11 +62,12 @@ PrintError(_In_ LOGGER_LEVEL Level, _In_ const TCHAR *Prefix)
51
62
0 ,
52
63
(VOID * )& FormattedMessage ,
53
64
0 ,
54
- (va_list * )(DWORD_PTR []){ (DWORD_PTR )Prefix , (DWORD_PTR )ErrorCode , (DWORD_PTR )SystemMessage });
65
+ (va_list * )(DWORD_PTR []){ (DWORD_PTR )Message , (DWORD_PTR )ErrorCode , (DWORD_PTR )SystemMessage });
55
66
if (FormattedMessage )
56
67
Logger (Level , FormattedMessage );
57
68
LocalFree (FormattedMessage );
58
69
LocalFree (SystemMessage );
70
+ LocalFree (Message );
59
71
}
60
72
61
73
HINSTANCE ResourceModule ;
@@ -287,14 +299,20 @@ InstallDriver(_In_ BOOL UpdateExisting, _Inout_ BOOL *IsRebootRequired)
287
299
288
300
Logger (LOG_INFO , TEXT ("Installing driver" ));
289
301
Ret = SetupCopyOEMInf (InfPath , NULL , SPOST_PATH , 0 , NULL , 0 , NULL , NULL );
290
- BOOL RebootRequired = FALSE;
291
- if (UpdateExisting &&
292
- !UpdateDriverForPlugAndPlayDevices (
293
- NULL , TEXT ("root\\" ) TEXT (PRODUCT_TAP_WIN_COMPONENT_ID ), InfPath , INSTALLFLAG_FORCE | INSTALLFLAG_NONINTERACTIVE , & RebootRequired ))
294
- PrintError (LOG_WARN , TEXT ("Could not update existing adapters" ));
295
- if (RebootRequired ) {
296
- Logger (LOG_WARN , TEXT ("A reboot might be required" ));
297
- * IsRebootRequired = TRUE;
302
+ static const TCHAR * HwID [] = {
303
+ TEXT ("root\\" ) TEXT (PRODUCT_TAP_WIN_COMPONENT_ID ),
304
+ TEXT (PRODUCT_TAP_WIN_COMPONENT_ID )
305
+ };
306
+ for (int i = 0 ; i < _countof (HwID ); ++ i ) {
307
+ BOOL RebootRequired = FALSE;
308
+ if (UpdateExisting &&
309
+ !UpdateDriverForPlugAndPlayDevices (
310
+ NULL , HwID [i ], InfPath , INSTALLFLAG_FORCE | INSTALLFLAG_NONINTERACTIVE , & RebootRequired ))
311
+ PrintError (LOG_WARN , TEXT ("Could not update existing %1 adapters" ), HwID [i ]);
312
+ if (RebootRequired ) {
313
+ Logger (LOG_WARN , TEXT ("A reboot might be required" ));
314
+ * IsRebootRequired = TRUE;
315
+ }
298
316
}
299
317
300
318
cleanupDelete :
0 commit comments