[PSDK/DDK]: Add more missing definitions. Fix classpnp.h.

svn path=/trunk/; revision=48864
This commit is contained in:
Sir Richard 2010-09-25 05:15:47 +00:00
parent 7c9e442a28
commit c0e90cf2dd
3 changed files with 193 additions and 9 deletions

View file

@ -41,6 +41,42 @@
#define IS_SCSIOP_READWRITE(opCode) (IS_SCSIOP_READ(opCode) || IS_SCSIOP_WRITE(opCode))
#define ADJUST_FUA_FLAG(fdoExt) { \
if (TEST_FLAG(fdoExt->DeviceFlags, DEV_WRITE_CACHE) && \
!TEST_FLAG(fdoExt->DeviceFlags, DEV_POWER_PROTECTED) && \
!TEST_FLAG(fdoExt->ScanForSpecialFlags, CLASS_SPECIAL_FUA_NOT_SUPPORTED) ) { \
fdoExt->CdbForceUnitAccess = TRUE; \
} else { \
fdoExt->CdbForceUnitAccess = FALSE; \
} \
}
#define FREE_POOL(_PoolPtr) \
if (_PoolPtr != NULL) { \
ExFreePool(_PoolPtr); \
_PoolPtr = NULL; \
}
#ifdef POOL_TAGGING
#undef ExAllocatePool
#undef ExAllocatePoolWithQuota
#define ExAllocatePool(a,b) ExAllocatePoolWithTag(a,b,'nUcS')
//#define ExAllocatePool(a,b) #assert(0)
#define ExAllocatePoolWithQuota(a,b) ExAllocatePoolWithQuotaTag(a,b,'nUcS')
#endif
#define CLASS_TAG_AUTORUN_DISABLE 'ALcS'
#define CLASS_TAG_FILE_OBJECT_EXTENSION 'FLcS'
#define CLASS_TAG_MEDIA_CHANGE_DETECTION 'MLcS'
#define CLASS_TAG_MOUNT 'mLcS'
#define CLASS_TAG_RELEASE_QUEUE 'qLcS'
#define CLASS_TAG_POWER 'WLcS'
#define CLASS_TAG_WMI 'wLcS'
#define CLASS_TAG_FAILURE_PREDICT 'fLcS'
#define CLASS_TAG_DEVICE_CONTROL 'OIcS'
#define CLASS_TAG_MODE_DATA 'oLcS'
#define CLASS_TAG_MULTIPATH 'mPcS'
#define MAXIMUM_RETRIES 4
#define CLASS_DRIVER_EXTENSION_KEY ((PVOID) ClassInitialize)
@ -217,12 +253,9 @@ typedef struct _CLASS_PRIVATE_COMMON_DATA CLASS_PRIVATE_COMMON_DATA, *PCLASS_PRI
struct _MEDIA_CHANGE_DETECTION_INFO;
typedef struct _MEDIA_CHANGE_DETECTION_INFO MEDIA_CHANGE_DETECTION_INFO, *PMEDIA_CHANGE_DETECTION_INFO;
struct _DICTIONARY_HEADER;
typedef struct _DICTIONARY_HEADER DICTIONARY_HEADER, *PDICTIONARY_HEADER;
typedef struct _DICTIONARY {
ULONGLONG Signature;
PDICTIONARY_HEADER List;
struct _DICTIONARY_HEADER* List;
KSPIN_LOCK SpinLock;
} DICTIONARY, *PDICTIONARY;
@ -558,9 +591,6 @@ typedef struct _PHYSICAL_DEVICE_EXTENSION {
ULONG_PTR Reserved4;
} PHYSICAL_DEVICE_EXTENSION, *PPHYSICAL_DEVICE_EXTENSION;
struct _FAILURE_PREDICTION_INFO;
typedef struct _FAILURE_PREDICTION_INFO *PFAILURE_PREDICTION_INFO;
typedef struct _CLASS_POWER_OPTIONS {
ULONG PowerDown:1;
ULONG LockQueue:1;
@ -652,7 +682,7 @@ typedef struct _FUNCTIONAL_DEVICE_EXTENSION {
BOOLEAN ReleaseQueueIrpFromPool;
BOOLEAN FailurePredicted;
ULONG FailureReason;
PFAILURE_PREDICTION_INFO FailurePredictionInfo;
struct _FAILURE_PREDICTION_INFO* FailurePredictionInfo;
BOOLEAN PowerDownInProgress;
ULONG EnumerationInterlock;
KEVENT ChildLock;
@ -733,6 +763,14 @@ ClassDeviceControl(
PDEVICE_OBJECT DeviceObject,
PIRP Irp);
SCSIPORTAPI
NTSTATUS
NTAPI
ClassIoComplete(
PDEVICE_OBJECT DeviceObject,
PIRP Irp,
PVOID Context);
SCSIPORTAPI
BOOLEAN
NTAPI
@ -848,7 +886,7 @@ NTAPI
ClassGetDescriptor(
PDEVICE_OBJECT DeviceObject,
PSTORAGE_PROPERTY_ID PropertyId,
PVOID *Descriptor);
PSTORAGE_DESCRIPTOR_HEADER *Descriptor);
SCSIPORTAPI
VOID
@ -1007,6 +1045,13 @@ NTAPI
ClassReleaseChildLock(
PFUNCTIONAL_DEVICE_EXTENSION FdoExtension);
NTSTATUS
NTAPI
ClassSignalCompletion(
PDEVICE_OBJECT DeviceObject,
PIRP Irp,
PKEVENT Event);
VOID
NTAPI
ClassSendStartUnit(
@ -1019,12 +1064,28 @@ ClassRemoveDevice(
PDEVICE_OBJECT DeviceObject,
UCHAR RemoveType);
SCSIPORTAPI
NTSTATUS
NTAPI
ClassAsynchronousCompletion(
PDEVICE_OBJECT DeviceObject,
PIRP Irp,
PVOID Event);
SCSIPORTAPI
VOID
NTAPI
ClassCheckMediaState(
PFUNCTIONAL_DEVICE_EXTENSION FdoExtension);
SCSIPORTAPI
NTSTATUS
NTAPI
ClassCheckVerifyComplete(
PDEVICE_OBJECT DeviceObject,
PIRP Irp,
PVOID Context);
SCSIPORTAPI
VOID
NTAPI

View file

@ -617,6 +617,12 @@ typedef struct _GROUP_AFFINITY {
#define RTL_FIELD_SIZE(type, field) (sizeof(((type *)0)->field))
#define RTL_SIZEOF_THROUGH_FIELD(type, field) \
(FIELD_OFFSET(type, field) + RTL_FIELD_SIZE(type, field))
#define RTL_CONTAINS_FIELD(Struct, Size, Field) \
( (((PCHAR)(&(Struct)->Field)) + sizeof((Struct)->Field)) <= (((PCHAR)(Struct))+(Size)) )
#define RTL_NUMBER_OF_V1(A) (sizeof(A)/sizeof((A)[0]))
#define RTL_NUMBER_OF_V2(A) RTL_NUMBER_OF_V1(A)
#ifdef ENABLE_RTL_NUMBER_OF_V2

View file

@ -25,6 +25,123 @@ typedef struct _WNODE_HEADER
ULONG Flags;
} WNODE_HEADER, *PWNODE_HEADER;
#define WNODE_FLAG_ALL_DATA 0x00000001
#define WNODE_FLAG_SINGLE_INSTANCE 0x00000002
#define WNODE_FLAG_SINGLE_ITEM 0x00000004
#define WNODE_FLAG_EVENT_ITEM 0x00000008
#define WNODE_FLAG_FIXED_INSTANCE_SIZE 0x00000010
#define WNODE_FLAG_TOO_SMALL 0x00000020
#define WNODE_FLAG_INSTANCES_SAME 0x00000040
#define WNODE_FLAG_STATIC_INSTANCE_NAMES 0x00000080
#define WNODE_FLAG_INTERNAL 0x00000100
#define WNODE_FLAG_USE_TIMESTAMP 0x00000200
#define WNODE_FLAG_PERSIST_EVENT 0x00000400
#define WNODE_FLAG_EVENT_REFERENCE 0x00002000
#define WNODE_FLAG_ANSI_INSTANCENAMES 0x00004000
#define WNODE_FLAG_METHOD_ITEM 0x00008000
#define WNODE_FLAG_PDO_INSTANCE_NAMES 0x00010000
#define WNODE_FLAG_TRACED_GUID 0x00020000
#define WNODE_FLAG_LOG_WNODE 0x00040000
#define WNODE_FLAG_USE_GUID_PTR 0x00080000
#define WNODE_FLAG_USE_MOF_PTR 0x00100000
#define WNODE_FLAG_NO_HEADER 0x00200000
#define WNODE_FLAG_SEVERITY_MASK 0xff000000
typedef struct tagWNODE_TOO_SMALL
{
struct _WNODE_HEADER WnodeHeader;
ULONG SizeNeeded;
} WNODE_TOO_SMALL, *PWNODE_TOO_SMALL;
typedef struct tagWNODE_SINGLE_INSTANCE
{
struct _WNODE_HEADER WnodeHeader;
ULONG OffsetInstanceName;
ULONG InstanceIndex;
ULONG DataBlockOffset;
ULONG SizeDataBlock;
UCHAR VariableData[];
} WNODE_SINGLE_INSTANCE, *PWNODE_SINGLE_INSTANCE;
#define WMIREG_FLAG_EXPENSIVE 0x00000001
#define WMIREG_FLAG_INSTANCE_LIST 0x00000004
#define WMIREG_FLAG_INSTANCE_BASENAME 0x00000008
#define WMIREG_FLAG_INSTANCE_PDO 0x00000020
#define WMIREG_FLAG_REMOVE_GUID 0x00010000
#define WMIREG_FLAG_RESERVED1 0x00020000
#define WMIREG_FLAG_RESERVED2 0x00040000
#define WMIREG_FLAG_TRACED_GUID 0x00080000
#define WMIREG_FLAG_TRACE_CONTROL_GUID 0x00001000
#define WMIREG_FLAG_EVENT_ONLY_GUID 0x00000040
typedef struct
{
GUID Guid;
ULONG Flags;
ULONG InstanceCount;
union
{
ULONG InstanceNameList;
ULONG BaseNameOffset;
ULONG_PTR Pdo;
ULONG_PTR InstanceInfo;
};
} WMIREGGUIDW, *PWMIREGGUIDW;
typedef struct
{
ULONG BufferSize;
ULONG NextWmiRegInfo;
ULONG RegistryPath;
ULONG MofResourceName;
ULONG GuidCount;
WMIREGGUIDW WmiRegGuid[];
} WMIREGINFOW, *PWMIREGINFOW;
typedef WMIREGINFOW WMIREGINFO;
typedef PWMIREGINFOW PWMIREGINFO;
typedef struct
{
ULONG OffsetInstanceData;
ULONG LengthInstanceData;
} OFFSETINSTANCEDATAANDLENGTH, *POFFSETINSTANCEDATAANDLENGTH;
typedef struct tagWNODE_ALL_DATA
{
struct _WNODE_HEADER WnodeHeader;
ULONG DataBlockOffset;
ULONG InstanceCount;
ULONG OffsetInstanceNameOffsets;
union
{
ULONG FixedInstanceSize;
OFFSETINSTANCEDATAANDLENGTH OffsetInstanceDataAndLength[0];
};
} WNODE_ALL_DATA, *PWNODE_ALL_DATA;
typedef struct tagWNODE_SINGLE_ITEM
{
struct _WNODE_HEADER WnodeHeader;
ULONG OffsetInstanceName;
ULONG InstanceIndex;
ULONG ItemId;
ULONG DataBlockOffset;
ULONG SizeDataItem;
UCHAR VariableData[];
} WNODE_SINGLE_ITEM, *PWNODE_SINGLE_ITEM;
typedef struct tagWNODE_METHOD_ITEM
{
struct _WNODE_HEADER WnodeHeader;
ULONG OffsetInstanceName;
ULONG InstanceIndex;
ULONG MethodId;
ULONG DataBlockOffset;
ULONG SizeDataBlock;
UCHAR VariableData[];
} WNODE_METHOD_ITEM, *PWNODE_METHOD_ITEM;
typedef enum
{
WMI_GET_ALL_DATA = 0,