IN PULONG_PTR Parameters,
IN BOOLEAN Shutdown)
{
+ ULONG_PTR BugCheckParameters[MAXIMUM_HARDERROR_PARAMETERS] = {0, 0, 0, 0};
+ ULONG i;
+
+ /* Sanity check */
+ ASSERT(NumberOfParameters <= MAXIMUM_HARDERROR_PARAMETERS);
+
+ /*
+ * KeBugCheck expects MAXIMUM_HARDERROR_PARAMETERS parameters,
+ * but we might get called with less, so use a local buffer here.
+ */
+ for (i = 0; i < NumberOfParameters; i++)
+ {
+ /* Copy them over */
+ BugCheckParameters[i] = Parameters[i];
+ }
+
/* FIXME: STUB */
KeBugCheckEx(FATAL_UNHANDLED_HARD_ERROR,
ErrorStatus,
- 0,
+ (ULONG_PTR)BugCheckParameters,
0,
0);
return STATUS_SUCCESS;
/* Setup the LPC Message */
Message->h.u1.Length = (sizeof(HARDERROR_MSG) << 16) |
(sizeof(HARDERROR_MSG) - sizeof(PORT_MESSAGE));
- Message->h.u2.ZeroInit = LPC_ERROR_EVENT;
+ Message->h.u2.ZeroInit = 0;
+ Message->h.u2.s2.Type = LPC_ERROR_EVENT;
Message->Status = ErrorStatus &~ 0x10000000;
Message->ValidResponseOptions = ValidResponseOptions;
Message->UnicodeStringParameterMask = UnicodeStringParameterMask;
* Optional string parameter (can be only one per error code)
*
* @param Parameters
- * Array of ULONG parameters for use in error message string
+ * Array of ULONG_PTR parameters for use in error message string
*
* @param ValidResponseOptions
* See HARDERROR_RESPONSE_OPTION for possible values description