IoSetOplockPrivateFoExt

NTSTATUS __stdcall IoSetOplockPrivateFoExt(_FILE_OBJECT *FileObject, _OPLOCK_FOEXT *InputOplockFoExt){
  int v2; 
  _QWORD *FileObjectExtension; 
  char v5; 
  VOID *v6; 
  NTSTATUS result; 
  _OWORD *v8; 
  VOID *FoExt; 

  v2 = 0;
  FoExt = 0i64;
  if( !FileObject->FileObjectExtension )
  {
    IopAllocateFileObjectExtension(FileObject, &FoExt);
    v2 = result;
    if( result < 0 )
      return result;
    goto LABEL_9;
  }
  FileObjectExtension = IopGetFileObjectExtension(FileObject, FoExtTypeOplockKey, &FoExt);
  if( !FileObjectExtension )
  {
LABEL_9:
    v8 = ExAllocateFromNPagedLookasideList((_NPAGED_LOOKASIDE_LIST *)((char *)&WheapErrorSourceTable + 2984));
    FileObjectExtension = v8;
    if( !v8 )
      return -1073741670;
    v5 = 1;
    *v8 = 0i64;
    v8[1] = 0i64;
    v8[2] = 0i64;
  }
  FileObjectExtension[5] = *((_QWORD *)InputOplockFoExt + 5);
  if( v5 )
  {
    v2 = IopSetTypeSpecificFoExtension((_IOP_FILE_OBJECT_EXTENSION *)FoExt, FoExtTypeOplockKey, FileObjectExtension);
    if( v2 < 0 )
      ExFreeToNPagedLookasideList((_NPAGED_LOOKASIDE_LIST *)((char *)&WheapErrorSourceTable + 2984), v6);
  }
  return v2;
}

Referenced by:

No references.