IoSetOplockPrivateFoExt
NTSTATUS __fastcall IoSetOplockPrivateFoExt(FILE_OBJECT *a1, INT64 a2){
int v2;
_QWORD *FileObjectExtension;
char v5;
void *v6;
NTSTATUS result;
_OWORD *v8;
VOID *FoExt;
v2 = 0;
FoExt = 0i64;
if( !a1->FileObjectExtension )
{
result = IopAllocateFileObjectExtension(a1, &FoExt);
v2 = result;
if( result < 0 )
return result;
goto LABEL_9;
}
FileObjectExtension = IopGetFileObjectExtension(a1, FoExtTypeOplockKey, &FoExt);
if( !FileObjectExtension )
{
LABEL_9:
LODWORD(v8) = ExAllocateFromNPagedLookasideList((NPAGED_LOOKASIDE_LIST *)IopOplockFoExtLookasideList);
FileObjectExtension = v8;
if( !v8 )
return -1073741670;
v5 = 1;
*v8 = 0i64;
v8[1] = 0i64;
v8[2] = 0i64;
}
FileObjectExtension[5] = *(_QWORD *)(a2 + 40);
if( v5 )
{
v2 = IopSetTypeSpecificFoExtension((_IOP_FILE_OBJECT_EXTENSION *)FoExt, FoExtTypeOplockKey, FileObjectExtension);
if( v2 < 0 )
ExFreeToNPagedLookasideList((NPAGED_LOOKASIDE_LIST *)IopOplockFoExtLookasideList, v6);
}
return v2;
}Referenced by:
No references.