IS_MY_CONTROL_DEVICE_OBJECT
场景:驱动编程里边:IS_MY_CONTROL_DEVICE_OBJECT是什么?解决思路
驱动编程里边:IS_MY_CONTROL_DEVICE_OBJECT是什么?
IS_MY_CONTROL_DEVICE_OBJECT 这个在别人代码里边很多用到,可是我用不了呢?
说这个东西 没有定义。
------解决方案--------------------
宏定义
//
// Macro to test if this is my control device object
//
#define IS_MY_CONTROL_DEVICE_OBJECT(_devObj) \
(((_devObj) == gSFilterControlDeviceObject) ? \
(ASSERT(((_devObj)->DriverObject == gSFilterDriverObject) && \
((_devObj)->DeviceExtension == NULL)), TRUE) : \
FALSE)
------解决方案--------------------
一个宏定义
驱动编程里边:IS_MY_CONTROL_DEVICE_OBJECT是什么?
IS_MY_CONTROL_DEVICE_OBJECT 这个在别人代码里边很多用到,可是我用不了呢?
说这个东西 没有定义。
------解决方案--------------------
宏定义
//
// Macro to test if this is my control device object
//
#define IS_MY_CONTROL_DEVICE_OBJECT(_devObj) \
(((_devObj) == gSFilterControlDeviceObject) ? \
(ASSERT(((_devObj)->DriverObject == gSFilterDriverObject) && \
((_devObj)->DeviceExtension == NULL)), TRUE) : \
FALSE)
------解决方案--------------------
一个宏定义
- C/C++ code
//Sfilter中常用的几个宏 // // Macro to test if this is my device object // #define IS_MY_DEVICE_OBJECT(_devObj) \ (((_devObj) != NULL) && \ ((_devObj)->DriverObject == gSFilterDriverObject) && \ ((_devObj)->DeviceExtension != NULL) && \ ((*(ULONG *)(_devObj)->DeviceExtension) == SFLT_POOL_TAG)) // // Macro to test if this is my control device object // #define IS_MY_CONTROL_DEVICE_OBJECT(_devObj) \ (((_devObj) == gSFilterControlDeviceObject) ? \ (ASSERT(((_devObj)->DriverObject == gSFilterDriverObject) && \ ((_devObj)->DeviceExtension == NULL)), TRUE) : \ FALSE) // // Macro to test for device types we want to attach to // #define IS_DESIRED_DEVICE_TYPE(_type) \ (((_type) == FILE_DEVICE_DISK_FILE_SYSTEM) || \ ((_type) == FILE_DEVICE_CD_ROM_FILE_SYSTEM) || \ ((_type) == FILE_DEVICE_NETWORK_FILE_SYSTEM)) // // Macro to test if FAST_IO_DISPATCH handling routine is valid // #define VALID_FAST_IO_DISPATCH_HANDLER(_FastIoDispatchPtr, _FieldName) \ (((_FastIoDispatchPtr) != NULL) && \ (((_FastIoDispatchPtr)->SizeOfFastIoDispatch) >= \ (FIELD_OFFSET(FAST_IO_DISPATCH, _FieldName) + sizeof(void *))) && \ ((_FastIoDispatchPtr)->_FieldName != NULL)) // // MULTIVERSION NOTE: For this version of the driver, we need to know the // current OS version while we are running to make decisions regarding what // logic to use when the logic cannot be the same for all platforms. We // will look up the OS version in DriverEntry and store the values // in these global variables. // ULONG gSfOsMajorVersion = 0; ULONG gSfOsMinorVersion = 0;//Call kernel API (PsGetVersion() etc)to initialize the variable // // Here is what the major and minor versions should be for the various OS versions: // // OS Name MajorVersion MinorVersion // --------------------------------- // Windows 2000 5 0 // Windows XP 5 1 // Windows Server 2003 5 2 // #define IS_WINDOWS2000() \ ((gSfOsMajorVersion == 5) && (gSfOsMinorVersion == 0)) #define IS_WINDOWSXP() \ ((gSfOsMajorVersion == 5) && (gSfOsMinorVersion == 1)) #define IS_WINDOWSXP_OR_LATER() \ (((gSfOsMajorVersion == 5) && (gSfOsMinorVersion >= 1)) || \ (gSfOsMajorVersion > 5)) #define IS_WINDOWSSRV2003_OR_LATER() \ (((gSfOsMajorVersion == 5) && (gSfOsMinorVersion >= 2)) || \ (gSfOsMajorVersion > 5))