IoFreeSfioStreamIdentifier
NTSTATUS __stdcall IoFreeSfioStreamIdentifier(_FILE_OBJECT *FileObject, VOID *Signature){
__int64 v3;
void **FileObjectExtension;
NTSTATUS v5;
UINT64 *v6;
unsigned __int8 v7;
VOID **v8;
unsigned __int64 v9;
void **v10;
void **v12;
FileObjectExtension = (void **)IopGetFileObjectExtension(FileObject, FoExtTypeSfio, 0i64);
v5 = -1073741275;
if( FileObjectExtension )
{
v6 = (UINT64 *)(v3 + 184);
v7 = KeAcquireSpinLockRaiseToDpc((UINT64 *)(v3 + 184));
v8 = (VOID **)*FileObjectExtension;
v9 = v7;
if( *FileObjectExtension != FileObjectExtension )
{
while( 1 )
{
v10 = (void **)*v8;
if( v8[3] == Signature )
break;
v8 = (VOID **)*v8;
if( v10 == FileObjectExtension )
goto LABEL_5;
}
v12 = (void **)v8[1];
if( v10[1] != v8 || *v12 != v8 )
__fastfail(3u);
*v12 = v10;
v10[1] = v12;
ExFreePoolWithTag(v8, 0);
v5 = 0;
}
LABEL_5:
KxReleaseSpinLock(v6);
__writecr8(v9);
}
return v5;
}Referenced by:
No references.