IoAdjustStackSizeForRedirection
NTSTATUS __stdcall IoAdjustStackSizeForRedirection(
_DEVICE_OBJECT *SourceDevice,
_DEVICE_OBJECT *TargetDevice,
PSTR ExtraStackLocations){
NTSTATUS v4;
UINT8 v7;
char v8;
KIRQL v9;
char v10;
CHAR v11;
__int64 v12;
__int64 v13;
v4 = 0;
v7 = KeAcquireQueuedSpinLock(0xAui64);
v8 = *((_BYTE *)SourceDevice + 76);
v9 = v7;
v10 = *((_BYTE *)TargetDevice + 76);
if( v8 < v10 )
{
v11 = v10 - v8;
IoGetAttachedDevice(SourceDevice);
v13 = v12;
if( (unsigned __int16)v11 + (unsigned int)(unsigned __int16)*(char *)(v12 + 76) < 0x7D )
{
if( (_DEVICE_OBJECT *)v12 != SourceDevice )
{
do
{
*(_BYTE *)(v13 + 76) += v11;
v13 = *(_QWORD *)(*(_QWORD *)(v13 + 312) + 48i64);
}
while( (_DEVICE_OBJECT *)v13 != SourceDevice );
v8 = *((_BYTE *)SourceDevice + 76);
}
*((_BYTE *)SourceDevice + 76) = v11 + v8;
}
else
{
v4 = -1073741811;
}
}
else
{
v11 = 0;
}
KeReleaseQueuedSpinLock(0xAui64, v9);
if( v4 >= 0 && ExtraStackLocations )
*ExtraStackLocations = v11;
return v4;
}Referenced by:
No references.