FsRtlQueryOpen

INT64 __stdcall FsRtlQueryOpen(PDEVICE_OBJECT DeviceObject, INT64 a2){
  INT64 v2; 
  INT64 v3; 
  INT64 v4; 
  INT64 v7; 
  __int64 v8; 
  __int64 v9; 
  INT64 v10; 
  _ETHREAD *CurrentThread; 
  unsigned int v12; 
  int v13; 
  int v14[4]; 
  INT64 result[6]; 
  int v16; 
  __int16 v17; 
  int v18; 
  v4 = v2;
  v14[0] = 0;
  v7 = v3;
  memset((INT64)result, 0i64);
  IoGetAttachedDevice(DeviceObject);
  v10 = FsFilterCtrlInit((__int64)result, 249, v8, v9, *(_QWORD *)(*(_QWORD *)(a2 + 184) + 48i64), 1);
  if( (int)v10 >= 0 )
  {
    v16 = v18;
    result[3] = a2;
    result[4] = v4;
    result[5] = v7;
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    --*((_WORD *)CurrentThread + 242);
    v12 = FsFilterPerformCallbacks((INT64)result, 1, 1, v14);
    v13 = v12;
    if( v17 )
      v13 = FsFilterPerformCompletionCallbacks((__int64)result, v12);
    KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
    FsFilterCtrlFree((__int64)result);
    if( v13 >= 0 && (v14[0] & 2) == 0 )
      return(unsigned int)-1073741822;
    return(unsigned int)v13;
  }
  return v10;
}

Referenced by:

IopQueryInformation