IopIncrementVpbRefCount

NTSTATUS __stdcall IopIncrementVpbRefCount(_VPB *Vpb, UINT8 LockRequired){
  unsigned int *p_ReferenceCount; 
  NTSTATUS result; 
  _DEVICE_OBJECT *DeviceObject; 
  void *v6; 
  p_ReferenceCount = &Vpb->ReferenceCount;
  if( LockRequired )
    result = IopInterlockedIncrementUlong(9ui64, (INT64 *)&Vpb->ReferenceCount);
  else
    result = ++*p_ReferenceCount;
  if( result <= 0 )
  {
    DeviceObject = Vpb->DeviceObject;
    if( DeviceObject )
    {
      IoAddTriageDumpDataBlock(DeviceObject, 0x150ui64);
      v6 = (void *)*((_QWORD *)Vpb->DeviceObject + 1);
      if( v6 )
      {
        IoAddTriageDumpDataBlock(v6, 0x150ui64);
        IoAddTriageDumpDataBlock(
          *(PVOID *)(*((_QWORD *)Vpb->DeviceObject + 1) + 64i64),
          *(unsigned __int16 *)(*((_QWORD *)Vpb->DeviceObject + 1) + 56i64));
      }
    }
    KeBugCheckEx(0x18u, 0i64, (ULONG_PTR)Vpb, 7ui64, *p_ReferenceCount);
  }
  return result;
}

Referenced by:

IoCreateStreamFileObjectEx2
IopMountInitializeVpb
IopParseDevice
IopReferenceVerifyVpb