@@ -94,7 +94,27 @@ TestHardError(
9494 CheckHardError (0x40000003 , 0 , OptionOk , STATUS_SUCCESS , ResponseNotHandled , 6 , 1 , 2 , 3 , 4 , 5 , 6 ); // TODO: interactive on ROS
9595 }
9696
97- CheckHardError (0x40000004 , 0 , OptionShutdownSystem , STATUS_PRIVILEGE_NOT_HELD , ResponseNotHandled , 0 , 0 );
97+ // The return value is a random large value on Windows Server 2003
98+ if (GetNTVersion () > _WIN32_WINNT_WS03 )
99+ {
100+ #if _WIN64
101+ if (GetNTVersion () == _WIN32_WINNT_VISTA )
102+ {
103+ CheckHardError (0x40000004 , 0 , OptionShutdownSystem , STATUS_PRIVILEGE_NOT_HELD , 64 , 0 , 0 );
104+ }
105+ else
106+ {
107+ CheckHardError (0x40000004 , 0 , OptionShutdownSystem , STATUS_PRIVILEGE_NOT_HELD , ResponseReturnToCaller , 0 , 0 );
108+ }
109+ #else
110+ // Return value is also a random large value on 32-bit 8+
111+ if (GetNTVersion () < _WIN32_WINNT_WIN8 )
112+ {
113+ CheckHardError (0x40000004 , 0 , OptionShutdownSystem , STATUS_PRIVILEGE_NOT_HELD , ResponseReturnToCaller , 0 , 0 );
114+ }
115+ #endif
116+ }
117+
98118 if (InteractivePart1 )
99119 {
100120 // TODO: these 2 are interactive on ROS
@@ -116,12 +136,12 @@ TestHardError(
116136 CheckHardError (0x40000013 , 0 , OptionYesNoCancel , STATUS_SUCCESS , ResponseNo , 0 , 0 ); // outputs a box :|
117137 CheckHardError (0x40000013 , 0 , OptionYesNoCancel , STATUS_SUCCESS , ResponseCancel , 0 , 0 ); // outputs a box :|
118138 }
119- CheckHardError (0x40000009 , 0 , 9 , STATUS_SUCCESS , ResponseNotHandled , 0 , 0 );
120- CheckHardError (0x4000000a , 0 , 10 , STATUS_SUCCESS , ResponseNotHandled , 0 , 0 );
121- CheckHardError (0x4000000b , 0 , 11 , STATUS_SUCCESS , ResponseNotHandled , 0 , 0 );
122- CheckHardError (0x4000000c , 0 , 12 , STATUS_SUCCESS , ResponseNotHandled , 0 , 0 );
123- CheckHardError (0x4000000d , 0 , MAXULONG / 2 + 1 , STATUS_SUCCESS , ResponseNotHandled , 0 , 0 );
124- CheckHardError (0x4000000d , 0 , MAXULONG , STATUS_SUCCESS , ResponseNotHandled , 0 , 0 );
139+ CheckHardError (0x40000009 , 0 , 9 , STATUS_SUCCESS , ResponseReturnToCaller , 0 , 0 );
140+ CheckHardError (0x4000000a , 0 , 10 , STATUS_SUCCESS , ResponseReturnToCaller , 0 , 0 );
141+ CheckHardError (0x4000000b , 0 , 11 , STATUS_SUCCESS , ResponseReturnToCaller , 0 , 0 );
142+ CheckHardError (0x4000000c , 0 , 12 , STATUS_SUCCESS , ResponseReturnToCaller , 0 , 0 );
143+ CheckHardError (0x4000000d , 0 , MAXULONG / 2 + 1 , STATUS_SUCCESS , ResponseReturnToCaller , 0 , 0 );
144+ CheckHardError (0x4000000d , 0 , MAXULONG , STATUS_SUCCESS , ResponseReturnToCaller , 0 , 0 );
125145
126146 if (InteractivePart2 )
127147 {
0 commit comments