[ISAPNP] Fix descriptors and support alternative configurations

- Fix empty resource descriptors being created.
- Properly support IRQ descriptors.
- Introduce four helpers made to help search descriptors
  in the logical device's requirements.
- Implement support for memory descriptors and alternative configurations.
- DMA descriptors are always DMA_8.
This commit is contained in:
Dmitry Borisov 2021-03-20 20:51:29 +06:00
parent b29a3ac524
commit 8ed43b6907
2 changed files with 816 additions and 112 deletions

File diff suppressed because it is too large Load diff

View file

@ -279,6 +279,41 @@ HasMemory32Alternatives(
/* isapnp.c */
CODE_SEG("PAGE")
BOOLEAN
FindIoDescriptor(
_In_ PISAPNP_LOGICAL_DEVICE LogDevice,
_In_opt_ ULONG Base,
_In_ ULONG RangeStart,
_In_ ULONG RangeEnd,
_Out_opt_ PUCHAR Information,
_Out_opt_ PULONG Length,
_Out_opt_ PUCHAR WriteOrder);
CODE_SEG("PAGE")
BOOLEAN
FindIrqDescriptor(
_In_ PISAPNP_LOGICAL_DEVICE LogDevice,
_In_ ULONG Vector,
_Out_opt_ PUCHAR WriteOrder);
CODE_SEG("PAGE")
BOOLEAN
FindDmaDescriptor(
_In_ PISAPNP_LOGICAL_DEVICE LogDevice,
_In_ ULONG Channel,
_Out_opt_ PUCHAR WriteOrder);
CODE_SEG("PAGE")
BOOLEAN
FindMemoryDescriptor(
_In_ PISAPNP_LOGICAL_DEVICE LogDevice,
_In_ ULONG RangeStart,
_In_ ULONG RangeEnd,
_Out_opt_ PBOOLEAN Memory32,
_Out_opt_ PUCHAR Information,
_Out_opt_ PUCHAR WriteOrder);
CODE_SEG("PAGE")
NTSTATUS
IsaPnpCreateReadPortDORequirements(