Windows2000/private/ntos/io/flunkirp.h
2020-09-30 17:12:32 +02:00

125 lines
2.4 KiB
C

/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
flunkirp.h
Abstract:
The module associated with this header asserts specific Irp types (eg PNP)
are handled correctly by drivers. Generic IRP assertion is done by the
trackirp.* bits.
Author:
Adrian J. Oney (adriao) 20-Apr-1998
Revision History:
*/
#ifndef _FLUNKIRP_H_
#define _FLUNKIRP_H_
#ifndef NO_SPECIAL_IRP
// These are in flunkirp.c
BOOLEAN
IovpAssertIsNewRequest(
IN PIO_STACK_LOCATION IrpLastSp,
IN PIO_STACK_LOCATION IrpSp
);
VOID
IovpAssertNewIrps(
IN PIOV_REQUEST_PACKET IrpTrackingData,
IN PIO_STACK_LOCATION IrpSp,
IN PIOV_STACK_LOCATION StackLocationData
);
VOID
IovpAssertNewRequest(
IN PIOV_REQUEST_PACKET IrpTrackingData,
IN PDEVICE_OBJECT DeviceObject,
IN PIO_STACK_LOCATION IrpLastSp OPTIONAL,
IN PIO_STACK_LOCATION IrpSp,
IN PIOV_STACK_LOCATION StackLocationData
);
BOOLEAN
IovpAssertDoAdvanceStatus(
IN PIO_STACK_LOCATION IrpSp,
IN NTSTATUS OriginalStatus,
IN OUT NTSTATUS *StatusToAdvance
);
VOID
IovpAssertIrpStackDownward(
IN PIOV_REQUEST_PACKET IrpTrackingData,
IN PDEVICE_OBJECT DeviceObject,
IN PIO_STACK_LOCATION IrpLastSp,
IN PIO_STACK_LOCATION IrpSp,
IN PIOV_STACK_LOCATION StackLocationData
);
VOID
IovpAssertIrpStackUpward(
IN PIOV_REQUEST_PACKET IrpTrackingData,
IN PIO_STACK_LOCATION IrpSp,
IN PIOV_STACK_LOCATION StackLocationData,
IN BOOLEAN IsNewlyCompleted,
IN BOOLEAN RequestFinalized
);
VOID
IovpAssertFinalIrpStack(
IN PIOV_REQUEST_PACKET IrpTrackingData,
IN PIO_STACK_LOCATION IrpSp
);
BOOLEAN
IovpAssertIsValidIrpStatus(
IN PIO_STACK_LOCATION IrpSp,
IN NTSTATUS Status
);
VOID
IovpThrowChaffAtStartedPdoStack(
IN PDEVICE_OBJECT DeviceObject
);
NTSTATUS
IovpThrowBogusSynchronousIrp(
IN PDEVICE_OBJECT DeviceObject,
IN PIO_STACK_LOCATION TopStackLocation,
IN OUT OPTIONAL ULONG_PTR Information,
IN OUT ULONG_PTR *InformationOut OPTIONAL,
IN BOOLEAN IsBogus
);
LONG
IovpStartObRefMonitoring(
IN PDEVICE_OBJECT DeviceObject
);
LONG
IovpStopObRefMonitoring(
IN PDEVICE_OBJECT DeviceObject,
IN LONG StartSkew
);
BOOLEAN
IovpIsSystemRestrictedIrp(
PIO_STACK_LOCATION IrpSp
);
#endif // NO_SPECIAL_IRP
#endif // _FLUNKIRP_H_