IopAddBugcheckTriageUnicodeString
NTSTATUS __stdcall IopAddBugcheckTriageUnicodeString(_UNICODE_STRING *TriageString){
__int64 MaximumLength;
NTSTATUS v2;
wchar_t *Buffer;
unsigned __int64 v5;
MaximumLength = TriageString->MaximumLength;
v2 = 0;
if( (_WORD)MaximumLength )
{
Buffer = TriageString->Buffer;
if( (unsigned __int16)MaximumLength > 0x100u )
{
if( KiIsAddressRangeValid((INT64)Buffer, 256i64) )
{
IoAddTriageDumpDataBlock(TriageString->Buffer, (_BYTE *)0x100);
return -2147483643;
}
}
else
{
v5 = (unsigned __int64)(MaximumLength + 7) >> 3;
if( KiIsAddressRangeValid((INT64)Buffer, 8 * v5) )
IoAddTriageDumpDataBlock(TriageString->Buffer, (_BYTE *)(unsigned int)(8 * v5));
else
return -1073741823;
}
}
return v2;
}Referenced by:
IopAddBugcheckTriageDevice
IopAddBugcheckTriageDeviceNode