typedef struct _IO_RESOURCE_DESCRIPTOR { unsigned char Option; unsigned char Type; unsigned char ShareDisposition; unsigned char Spare1; unsigned short Flags; unsigned short Spare2; union { struct { unsigned long Length; unsigned long Alignment; LARGE_INTEGER MinimumAddress; LARGE_INTEGER MaximumAddress; } Port; struct { unsigned long Length; unsigned long Alignment; LARGE_INTEGER MinimumAddress; LARGE_INTEGER MaximumAddress; } Memory; struct { unsigned long MinimumVector; unsigned long MaximumVector; unsigned short AffinityPolicy; unsigned short Group; IRQ_PRIORITY PriorityPolicy; unsigned __int64 TargetedProcessors; } Interrupt; struct { unsigned long MinimumChannel; unsigned long MaximumChannel; } Dma; struct { unsigned long Length; unsigned long Alignment; LARGE_INTEGER MinimumAddress; LARGE_INTEGER MaximumAddress; } Generic; struct { unsigned long Data[3]; } DevicePrivate; struct { unsigned long Length; unsigned long MinBusNumber; unsigned long MaxBusNumber; unsigned long Reserved; } BusNumber; struct { unsigned long Priority; unsigned long Reserved1; unsigned long Reserved2; } ConfigData; struct { unsigned long Length40; unsigned long Alignment40; LARGE_INTEGER MinimumAddress; LARGE_INTEGER MaximumAddress; } Memory40; struct { unsigned long Length48; unsigned long Alignment48; LARGE_INTEGER MinimumAddress; LARGE_INTEGER MaximumAddress; } Memory48; struct { unsigned long Length64; unsigned long Alignment64; LARGE_INTEGER MinimumAddress; LARGE_INTEGER MaximumAddress; } Memory64; } u; } IO_RESOURCE_DESCRIPTOR, *PIO_RESOURCE_DESCRIPTOR;