00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
#include "ioassert.h"
00024 
#include "trackirp.h"
00025 
#include "flunkirp.h"
00026 
#include "hashirp.h"
00027 
#include "sessnirp.h"
00028 
00029 
#ifndef _IOVERIFIER_H_
00030 
#define _IOVERIFIER_H_
00031 
00032 typedef struct _IOV_INIT_DATA {
00033 
00034     ULONG 
InitFlags;
00035     ULONG 
VerifierFlags;
00036 
00037 } 
IOV_INIT_DATA, *
PIOV_INIT_DATA;
00038 
00039 #define IOVP_COMPLETE_REQUEST(Apc,Sa1,Sa2)   \
00040 
    {   \
00041 
        if (IopVerifierOn) \
00042 
            IovpCompleteRequest((Apc), (Sa1), (Sa2));   \
00043 
    }
00044 
00045 #define IOV_INITIALIZE_IRP(Irp, PacketSize, StackSize)   \
00046 
    {   \
00047 
        if (IopVerifierOn) \
00048 
            IovInitializeIrp((Irp), (PacketSize), (StackSize));   \
00049 
    }
00050 
00051 #define IOV_DELETE_DEVICE(DeviceObject)   \
00052 
    {   \
00053 
        if (IopVerifierOn) \
00054 
            IovDeleteDevice(DeviceObject);   \
00055 
    }
00056 
00057 #define IOV_DETACH_DEVICE(DeviceObject)   \
00058 
    {   \
00059 
        if (IopVerifierOn) \
00060 
            IovDetachDevice(DeviceObject);   \
00061 
    }
00062 
00063 #define IOV_ATTACH_DEVICE_TO_DEVICE_STACK(SourceDeviceObject, TargetDeviceObject)   \
00064 
    {   \
00065 
        if (IopVerifierOn) \
00066 
            IovAttachDeviceToDeviceStack((SourceDeviceObject), (TargetDeviceObject));   \
00067 
    }
00068 
00069 #define IOV_CANCEL_IRP(Irp, ReturnValue) \
00070 
        IovCancelIrp((Irp), (ReturnValue))
00071 
00072 
NTSTATUS
00073 
FASTCALL
00074 
IovSpecialIrpCallDriver(
00075     IN  
PDEVICE_OBJECT  DeviceObject,
00076     IN  OUT 
PIRP    Irp
00077     );
00078 
00079 
00080 
VOID
00081 
FASTCALL
00082 
IovSpecialIrpCompleteRequest(
00083     IN 
PIRP Irp,
00084     IN CCHAR PriorityBoost
00085     );
00086 
00087 
VOID
00088 
IovpSpecialIrpVerifierInitWorker(
00089     IN PVOID Parameter
00090     );
00091 
00092 
VOID
00093 
IovpCompleteRequest(
00094     IN 
PKAPC Apc,
00095     IN PVOID *SystemArgument1,
00096     IN PVOID *SystemArgument2
00097     );
00098 
00099 
VOID
00100 
IovInitializeIrp(
00101     
PIRP    Irp,
00102     USHORT  PacketSize,
00103     CCHAR   StackSize
00104     );
00105 
00106 
VOID
00107 
IovAttachDeviceToDeviceStack(
00108     
PDEVICE_OBJECT  SourceDevice,
00109     
PDEVICE_OBJECT  TargetDevice
00110     );
00111 
00112 
VOID
00113 
IovDeleteDevice(
00114     
PDEVICE_OBJECT  DeleteDevice
00115     );
00116 
00117 
VOID
00118 
IovDetachDevice(
00119     
PDEVICE_OBJECT  TargetDevice
00120     );
00121 
00122 BOOLEAN
00123 
IovCancelIrp(
00124     
PIRP    Irp,
00125     BOOLEAN *returnValue
00126     );
00127 
00128 
#endif // _IOVERIFIER_H_