windows-nt/Source/XPSP1/NT/public/ddk/inc/wdm/dbc100.h
2020-09-26 16:20:57 +08:00

118 lines
3.4 KiB
C

/*++
Structures defined in the Device Class Definition
for Device Bay Controllers
--*/
#ifndef __DBC100_H__
#define __DBC100_H__
#include <PSHPACK1.H>
/*
Feature selectors
*/
#define DEVICE_STATUS_CHANGE_ENABLE 0
#define ENABLE_VID_POWER 1
#define LOCK_CTL 2
#define REMOVAL_EVENT_WAKE_ENABLE 3
#define REMOVAL_REQUEST_ENABLE 4
#define REQUEST_DEVICE_INSERTED_STATE 5
#define REQUEST_DEVICE_ENABLED_STATE 6
#define REQUEST_REMOVAL_REQUESTED_STATE 7
#define REQUEST_REMOVAL_ALLOWED_STATE 8
#define C_DEVICE_STATUS_CHANGE 9
#define C_REMOVE_REQUEST 10
#define ENABLE_VOP_POWER 11
/*
Class Descriptors
*/
#define DBC_SUSBSYSTEM_DESCRIPTOR_TYPE 0x40
#define DBC_BAY_DESCRIPTOR_TYPE 0x41
/* bay states (BayStateRequested and CurrentBayState) */
#define BAY_STATE_EMPTY 0x00 // 000
#define BAY_STATE_DEVICE_INSERTED 0x01 // 001
#define BAY_STATE_DEVICE_ENABLED 0x02 // 010
#define BAY_STATE_DEVICE_REMOVAL_REQUESTED 0x03 // 011
#define BAY_STATE_DEVICE_REMOVAL_ALLOWED 0x04 // 100
//#define BAY_STATE_ 0x05 // 101
//#define BAY_STATE_ 0x06 // 110
//#define BAY_STATE_ 0x07 // 111
typedef union _BAY_STATUS {
USHORT us;
struct {
unsigned VidEnabled:1; /* 0 */
unsigned RemovalWakeupEnabled:1; /* 1 */
unsigned DeviceStatusChangeEnabled:1; /* 2 */
unsigned RemovalRequestEnabled:1; /* 3 */
unsigned LastBayStateRequested:3; /* 4..6 */
unsigned InterlockEngaged:1; /* 7 */
unsigned DeviceUsbIsPresent:1; /* 8 */
unsigned Device1394IsPresent:1; /* 9 */
unsigned DeviceStatusChange:1; /* 10 */
unsigned RemovalRequestChange:1; /* 11 */
unsigned CurrentBayState:3; /* 12..14 */
unsigned SecurityLockEngaged:1; /* 15 */
unsigned Reserved:8; /* 16..23 */
};
} BAY_STATUS, *PBAY_STATUS;
typedef union _SUBSYTEM_ATTRIBUTES {
ULONG ul;
struct {
unsigned BayCount:4; /* 0 ..3 */
unsigned HasSecurityLock:1; /* 4 */
unsigned Reserved:27; /* 5..31 */
};
} SUBSYTEM_ATTRIBUTES, *PSUBSYTEM_ATTRIBUTES;
typedef struct _DBC_BAY_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bBayNumber;
UCHAR bHubPortNumber;
UCHAR bPHYPortNumber;
UCHAR bFormFactor;
} DBC_BAY_DESCRIPTOR, *PDBC_BAY_DESCRIPTOR;
typedef struct _DBC_SUBSYSTEM_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
SUBSYTEM_ATTRIBUTES bmAttributes;
UCHAR guid1394Link[8];
ULONG v3_3ContinuousPower;
ULONG v3_3PeakPower;
ULONG v5_0ContinuousPower;
ULONG v5_0PeakPower;
ULONG v12_0ContinuousPower;
ULONG v12_0PeakPower;
ULONG AggregatePower;
ULONG ThermalDissapation;
USHORT bcdSpecificationRelease;
} DBC_SUBSYSTEM_DESCRIPTOR, *PDBC_SUBSYSTEM_DESCRIPTOR;
#include <POPPACK.H>
#endif /* __DBC100_H__ */