mirror of
https://github.com/reactos/reactos.git
synced 2025-03-10 10:14:44 +00:00
95 lines
2 KiB
C++
95 lines
2 KiB
C++
![]() |
//
|
||
|
// Copyright (C) Microsoft. All rights reserved.
|
||
|
//
|
||
|
#ifndef _FXIRPDYNAMICDISPATCHINFO_H_
|
||
|
#define _FXIRPDYNAMICDISPATCHINFO_H_
|
||
|
|
||
|
//
|
||
|
// Placeholder macro for a no-op
|
||
|
//
|
||
|
#ifndef DO_NOTHING
|
||
|
#define DO_NOTHING() (0)
|
||
|
#endif
|
||
|
|
||
|
struct FxIrpDynamicDispatchInfo : public FxStump {
|
||
|
FxIrpDynamicDispatchInfo() :
|
||
|
CxDeviceInfo(NULL)
|
||
|
{
|
||
|
InitializeListHead(&ListEntry);
|
||
|
RtlZeroMemory(Dispatch, sizeof(Dispatch));
|
||
|
}
|
||
|
|
||
|
~FxIrpDynamicDispatchInfo()
|
||
|
{
|
||
|
ASSERT(IsListEmpty(&ListEntry));
|
||
|
}
|
||
|
|
||
|
enum DynamicDispatchType {
|
||
|
DynamicDispatchRead = 0,
|
||
|
DynamicDispatchWrite = 1,
|
||
|
DynamicDispatchIoctl = 2,
|
||
|
DynamicDispatchInternalIoctl = 3,
|
||
|
DynamicDispatchMax
|
||
|
};
|
||
|
|
||
|
struct Info {
|
||
|
Info() :
|
||
|
EvtDeviceDynamicDispatch(NULL),
|
||
|
DriverContext(NULL)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
~Info()
|
||
|
{
|
||
|
DO_NOTHING();
|
||
|
}
|
||
|
|
||
|
PFN_WDFDEVICE_WDM_IRP_DISPATCH EvtDeviceDynamicDispatch;
|
||
|
WDFCONTEXT DriverContext;
|
||
|
};
|
||
|
|
||
|
__inline
|
||
|
static
|
||
|
int
|
||
|
Mj2Index(
|
||
|
UCHAR MajorFunction
|
||
|
)
|
||
|
{
|
||
|
DynamicDispatchType type;
|
||
|
|
||
|
switch (MajorFunction) {
|
||
|
case IRP_MJ_READ:
|
||
|
type = DynamicDispatchRead;
|
||
|
break;
|
||
|
|
||
|
case IRP_MJ_WRITE:
|
||
|
type = DynamicDispatchWrite;
|
||
|
break;
|
||
|
|
||
|
case IRP_MJ_DEVICE_CONTROL:
|
||
|
type = DynamicDispatchIoctl;
|
||
|
break;
|
||
|
|
||
|
case IRP_MJ_INTERNAL_DEVICE_CONTROL:
|
||
|
type = DynamicDispatchInternalIoctl;
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
type = DynamicDispatchMax;
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
return (int)type;
|
||
|
}
|
||
|
|
||
|
LIST_ENTRY ListEntry;
|
||
|
Info Dispatch[DynamicDispatchMax];
|
||
|
|
||
|
//
|
||
|
// If not null, weak ref to class extension info struct.
|
||
|
//
|
||
|
FxCxDeviceInfo* CxDeviceInfo;
|
||
|
};
|
||
|
|
||
|
#endif // _FXIRPDYNAMICDISPATCHINFO_H_
|