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