#define SRB_CLASS_FLAGS_PAGING 0x40000000
#define SRB_CLASS_FLAGS_FREE_MDL 0x80000000
+#define ASSERT_FDO(x) \
+ ASSERT(((PCOMMON_DEVICE_EXTENSION) (x)->DeviceExtension)->IsFdo)
+
+#define ASSERT_PDO(x) \
+ ASSERT(!(((PCOMMON_DEVICE_EXTENSION) (x)->DeviceExtension)->IsFdo))
+
#define IS_CLEANUP_REQUEST(majorFunction) \
((majorFunction == IRP_MJ_CLOSE) || \
(majorFunction == IRP_MJ_CLEANUP) || \
#define DEFAULT_FAILURE_PREDICTION_PERIOD 60 * 60 * 1
+static inline ULONG CountOfSetBitsUChar(UCHAR _X)
+{ ULONG i = 0; while (_X) { _X &= _X - 1; i++; } return i; }
+static inline ULONG CountOfSetBitsULong(ULONG _X)
+{ ULONG i = 0; while (_X) { _X &= _X - 1; i++; } return i; }
+static inline ULONG CountOfSetBitsULong32(ULONG32 _X)
+{ ULONG i = 0; while (_X) { _X &= _X - 1; i++; } return i; }
+static inline ULONG CountOfSetBitsULong64(ULONG64 _X)
+{ ULONG i = 0; while (_X) { _X &= _X - 1; i++; } return i; }
+static inline ULONG CountOfSetBitsUlongPtr(ULONG_PTR _X)
+{ ULONG i = 0; while (_X) { _X &= _X - 1; i++; } return i; }
+
typedef enum _MEDIA_CHANGE_DETECTION_STATE {
MediaUnknown,
MediaPresent,
PIRP Irp,
PVOID Context);
+SCSIPORTAPI
+NTSTATUS
+NTAPI
+ClassIoCompleteAssociated(
+ PDEVICE_OBJECT DeviceObject,
+ PIRP Irp,
+ PVOID Context);
+
SCSIPORTAPI
BOOLEAN
NTAPI
ClassClaimDevice(
PDEVICE_OBJECT LowerDeviceObject,
BOOLEAN Release);
+
+SCSIPORTAPI
+NTSTATUS
+NTAPI
+ClassInternalIoControl (
+ PDEVICE_OBJECT DeviceObject,
+ PIRP Irp);
SCSIPORTAPI
VOID
CTL_CODE(IOCTL_STORAGE_BASE, 0x0301, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_RESET_BUS \
- CTL_CODE(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+ CTL_CODE(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_STORAGE_RESET_DEVICE \
- CTL_CODE(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+ CTL_CODE(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_STORAGE_GET_DEVICE_NUMBER \
CTL_CODE(IOCTL_STORAGE_BASE, 0x0420, METHOD_BUFFERED, FILE_ANY_ACCESS)