00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
#ifndef _HASHIRP_H_
00022
#define _HASHIRP_H_
00023
00024 #define IRP_TRACKING_HASH_SIZE 256
00025 #define IRP_TRACKING_HASH_PRIME 131
00026
00027
#ifndef NO_SPECIAL_IRP
00028
00029 extern ULONG
IovpIrpTrackingSpewLevel;
00030
00031 typedef enum _IOV_REFERENCE_TYPE {
00032
00033
IOVREFTYPE_PACKET = 0,
00034
IOVREFTYPE_POINTER
00035
00036 }
IOV_REFERENCE_TYPE;
00037
00038
VOID
00039
FASTCALL
00040
IovpTrackingDataInit(
00041 VOID
00042 );
00043
00044
PIOV_REQUEST_PACKET
00045
FASTCALL
00046
IovpTrackingDataFindAndLock(
00047 IN
PIRP Irp
00048 );
00049
00050
PIOV_REQUEST_PACKET
00051
FASTCALL
00052
IovpTrackingDataCreateAndLock(
00053 IN
PIRP Irp
00054 );
00055
00056
VOID
00057
FASTCALL
00058
IovpTrackingDataFree(
00059 IN
PIOV_REQUEST_PACKET IrpTrackingData
00060 );
00061
00062
PIOV_REQUEST_PACKET
00063
FASTCALL
00064
IovpTrackingDataFindPointer(
00065 IN
PIRP Irp,
00066 OUT PLIST_ENTRY *HashHead
00067 );
00068
00069
VOID
00070
FASTCALL
00071
IovpTrackingDataAcquireLock(
00072 IN
PIOV_REQUEST_PACKET IrpTrackingData
00073 );
00074
00075
VOID
00076
FASTCALL
00077
IovpTrackingDataReleaseLock(
00078 IN
PIOV_REQUEST_PACKET IrpTrackingData
00079 );
00080
00081
VOID
00082
FASTCALL
00083
IovpTrackingDataReference(
00084 IN
PIOV_REQUEST_PACKET IovPacket,
00085 IN IOV_REFERENCE_TYPE IovRefType
00086 );
00087
00088
VOID
00089
FASTCALL
00090
IovpTrackingDataDereference(
00091 IN
PIOV_REQUEST_PACKET IovPacket,
00092 IN IOV_REFERENCE_TYPE IovRefType
00093 );
00094
00095
VOID
00096
FASTCALL
00097
IovpWatermarkIrp(
00098 IN
PIRP Irp,
00099 IN ULONG Flags
00100 );
00101
00102
PIOV_SESSION_DATA
00103
FASTCALL
00104
IovpTrackingDataGetCurrentSessionData(
00105 IN
PIOV_REQUEST_PACKET IovPacket
00106 );
00107
00108 PVOID
00109
FASTCALL
00110
IovpProtectedIrpMakeUntouchable(
00111 IN
PIRP Irp OPTIONAL,
00112 IN BOOLEAN Permanent
00113 );
00114
00115
VOID
00116
FASTCALL
00117
IovpProtectedIrpMakeTouchable(
00118 IN
PIRP Irp,
00119 IN PVOID *RestoreHandle
00120 );
00121
00122
VOID
00123
FASTCALL
00124
IovpProtectedIrpFree(
00125 IN
PIRP Irp OPTIONAL,
00126 IN PVOID *RestoreHandle
00127 );
00128
00129
PIRP
00130
FASTCALL
00131
IovpProtectedIrpAllocate(
00132 IN CCHAR StackSize,
00133 IN BOOLEAN ChargeQuota,
00134 IN
PETHREAD QuotaThread OPTIONAL
00135 );
00136
00137
#endif // NO_SPECIAL_IRP
00138
00139
#endif // _HASHIRP_H_
00140