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