typedef struct _DEVICE_CAPABILITIES
{
    unsigned short Size;
    unsigned short Version;
    unsigned long DeviceD1 : 1;
    unsigned long DeviceD2 : 1;
    unsigned long LockSupported : 1;
    unsigned long EjectSupported : 1;
    unsigned long Removable : 1;
    unsigned long DockDevice : 1;
    unsigned long UniqueID : 1;
    unsigned long SilentInstall : 1;
    unsigned long RawDeviceOK : 1;
    unsigned long SurpriseRemovalOK : 1;
    unsigned long WakeFromD0 : 1;
    unsigned long WakeFromD1 : 1;
    unsigned long WakeFromD2 : 1;
    unsigned long WakeFromD3 : 1;
    unsigned long HardwareDisabled : 1;
    unsigned long NonDynamic : 1;
    unsigned long WarmEjectSupported : 1;
    unsigned long NoDisplayInUI : 1;
    unsigned long Reserved1 : 1;
    unsigned long Reserved : 13;
    unsigned long Address;
    unsigned long UINumber;
    DEVICE_POWER_STATE DeviceState[7];
    SYSTEM_POWER_STATE SystemWake;
    DEVICE_POWER_STATE DeviceWake;
    unsigned long D1Latency;
    unsigned long D2Latency;
    unsigned long D3Latency;
} DEVICE_CAPABILITIES, *PDEVICE_CAPABILITIES;