PiDeferSetInterfaceState

BOOL __fastcall PiDeferSetInterfaceState(_DEVICE_NODE *DeviceNode, _UNICODE_STRING *SymbolicLinkName){
  UNICODE_STRING *PoolWithTag; 
  UNICODE_STRING *v5; 
  NTSTATUS UnicodeString; 
  UNICODE_STRING *v7; 
  _DEVICE_NODE **v8; 
  PoolWithTag = (UNICODE_STRING *)ExAllocatePoolWithTag(PagedPool, 0x20ui64, 0x20207050ui64);
  v5 = PoolWithTag;
  if( !PoolWithTag )
    return -1073741670;
  UnicodeString = IopAllocateUnicodeString(PoolWithTag + 1, SymbolicLinkName->Length);
  if( UnicodeString < 0 )
  {
    UnicodeString = -1073741670;
    ExFreePoolWithTag(v5, 0);
  }
  else
  {
    RtlCopyUnicodeString(v5 + 1, SymbolicLinkName, v7);
    v8 = (_DEVICE_NODE **)*((_QWORD *)DeviceNode + 77);
    if( *v8 != (_DEVICE_NODE *)((char *)DeviceNode + 608) )
      __fastfail(3u);
    *(_QWORD *)&v5->Length = (char *)DeviceNode + 608;
    v5->Buffer = (wchar_t *)v8;
    *v8 = (_DEVICE_NODE *)v5;
    *((_QWORD *)DeviceNode + 77) = v5;
  }
  return UnicodeString;
}

Referenced by:

IopProcessSetInterfaceState