typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR
{
    unsigned char Type;
    unsigned char ShareDisposition;
    unsigned short Flags;
    union
    {
        struct
        {
            LARGE_INTEGER Start;
            unsigned long Length;
        } Generic;
        struct
        {
            LARGE_INTEGER Start;
            unsigned long Length;
        } Port;
        struct
        {
            unsigned short Level;
            unsigned short Group;
            unsigned long Vector;
            unsigned __int64 Affinity;
        } Interrupt;
        struct
        {
            union
            {
                struct
                {
                    unsigned short Group;
                    unsigned short MessageCount;
                    unsigned long Vector;
                    unsigned __int64 Affinity;
                } Raw;
                struct
                {
                    unsigned short Level;
                    unsigned short Group;
                    unsigned long Vector;
                    unsigned __int64 Affinity;
                } Translated;
            };
        } MessageInterrupt;
        struct
        {
            LARGE_INTEGER Start;
            unsigned long Length;
        } Memory;
        struct
        {
            unsigned long Channel;
            unsigned long Port;
            unsigned long Reserved1;
        } Dma;
        struct
        {
            unsigned long Data[3];
        } DevicePrivate;
        struct
        {
            unsigned long Start;
            unsigned long Length;
            unsigned long Reserved;
        } BusNumber;
        struct
        {
            unsigned long DataSize;
            unsigned long Reserved1;
            unsigned long Reserved2;
        } DeviceSpecificData;
        struct
        {
            LARGE_INTEGER Start;
            unsigned long Length40;
        } Memory40;
        struct
        {
            LARGE_INTEGER Start;
            unsigned long Length48;
        } Memory48;
        struct
        {
            LARGE_INTEGER Start;
            unsigned long Length64;
        } Memory64;
    } u;
} CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;