PiRemoveDeferredSetInterfaceState
NTSTATUS __stdcall PiRemoveDeferredSetInterfaceState(PDEVICE_NODE DeviceNode, PUNICODE_STRING SymbolicLinkName){
__int64 v2;
_UNICODE_STRING *v4;
NTSTATUS v5;
void **v7;
void **Buffer;
v2 = *(_QWORD *)&DeviceNode + 608i64;
v4 = *(_UNICODE_STRING **)(*(_QWORD *)&DeviceNode + 608i64);
v5 = -1073741823;
if( v4 != (_UNICODE_STRING *)(*(_QWORD *)&DeviceNode + 608i64) )
{
while( 1 )
{
v7 = *(void ***)&v4->Length;
if( (unsigned __int8)RtlEqualUnicodeString(v4 + 1, SymbolicLinkName, 1u) )
break;
v4 = (_UNICODE_STRING *)v7;
if( v7 == (void **)v2 )
return v5;
}
if( v7[1] != v4 || (Buffer = (void **)v4->Buffer, *Buffer != v4) )
__fastfail(3u);
*Buffer = v7;
v7[1] = Buffer;
ExFreePoolWithTag(v4[1].Buffer, 0);
ExFreePoolWithTag(v4, 0);
return 0;
}
return v5;
}Referenced by:
IopProcessSetInterfaceState