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