windows-nt/Source/XPSP1/NT/base/ntos/io/iovutil.h

174 lines
2.9 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
iovutil.h
Abstract:
This header exposes various utilities required to do driver verification.
Author:
Adrian J. Oney (adriao) 20-Apr-1998
Environment:
Kernel mode
Revision History:
AdriaO 02/10/2000 - Seperated out from ntos\io\trackirp.h
--*/
typedef enum {
DATABASELOCKSTATE_HELD,
DATABASELOCKSTATE_NOT_HELD
} DATABASELOCKSTATE;
typedef enum {
DEVOBJ_RELATION_IDENTICAL,
DEVOBJ_RELATION_FIRST_IMMEDIATELY_ABOVE_SECOND,
DEVOBJ_RELATION_FIRST_IMMEDIATELY_BELOW_SECOND,
DEVOBJ_RELATION_FIRST_ABOVE_SECOND,
DEVOBJ_RELATION_FIRST_BELOW_SECOND,
DEVOBJ_RELATION_NOT_IN_SAME_STACK
} DEVOBJ_RELATION, *PDEVOBJ_RELATION;
typedef enum {
MARKTYPE_DELETED,
MARKTYPE_BOTTOM_OF_FDO_STACK,
MARKTYPE_DESIGNATED_FDO,
MARKTYPE_RAW_PDO,
MARKTYPE_DEVICE_CHECKED,
MARKTYPE_RELATION_PDO_EXAMINED
} MARK_TYPE;
VOID
FASTCALL
IovUtilInit(
VOID
);
VOID
FASTCALL
IovUtilGetLowerDeviceObject(
IN PDEVICE_OBJECT UpperDeviceObject,
OUT PDEVICE_OBJECT *LowerDeviceObject
);
VOID
FASTCALL
IovUtilGetBottomDeviceObject(
IN PDEVICE_OBJECT DeviceObject,
OUT PDEVICE_OBJECT *BottomDeviceObject
);
VOID
FASTCALL
IovUtilGetUpperDeviceObject(
IN PDEVICE_OBJECT LowerDeviceObject,
OUT PDEVICE_OBJECT *UpperDeviceObject
);
BOOLEAN
FASTCALL
IovUtilIsVerifiedDeviceStack(
IN PDEVICE_OBJECT DeviceObject
);
VOID
FASTCALL
IovUtilFlushVerifierDriverListCache(
VOID
);
VOID
FASTCALL
IovUtilFlushStackCache(
IN PDEVICE_OBJECT DeviceObject,
IN DATABASELOCKSTATE DatabaseLockState
);
VOID
IovUtilRelateDeviceObjects(
IN PDEVICE_OBJECT FirstDeviceObject,
IN PDEVICE_OBJECT SecondDeviceObject,
OUT DEVOBJ_RELATION *DeviceObjectRelation
);
BOOLEAN
IovUtilIsPdo(
IN PDEVICE_OBJECT DeviceObject
);
BOOLEAN
IovUtilIsWdmStack(
IN PDEVICE_OBJECT DeviceObject
);
BOOLEAN
FASTCALL
IovUtilHasDispatchHandler(
IN PDRIVER_OBJECT DriverObject,
IN UCHAR MajorFunction
);
BOOLEAN
FASTCALL
IovUtilIsInFdoStack(
IN PDEVICE_OBJECT DeviceObject
);
BOOLEAN
FASTCALL
IovUtilIsRawPdo(
IN PDEVICE_OBJECT DeviceObject
);
BOOLEAN
FASTCALL
IovUtilIsDesignatedFdo(
IN PDEVICE_OBJECT DeviceObject
);
VOID
FASTCALL
IovUtilMarkDeviceObject(
IN PDEVICE_OBJECT DeviceObject,
IN MARK_TYPE MarkType
);
BOOLEAN
FASTCALL
IovUtilIsDeviceObjectMarked(
IN PDEVICE_OBJECT DeviceObject,
IN MARK_TYPE MarkType
);
VOID
FASTCALL
IovUtilMarkStack(
IN PDEVICE_OBJECT PhysicalDeviceObject,
IN PDEVICE_OBJECT BottomOfFdoStack OPTIONAL,
IN PDEVICE_OBJECT FunctionalDeviceObject OPTIONAL,
IN BOOLEAN RawStack
);
VOID
FASTCALL
IovUtilWatermarkIrp(
IN PIRP Irp,
IN ULONG Flags
);