From b5e5b4f01245b46325761eb16af402a990426363 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Sat, 23 Oct 2004 08:10:57 +0000 Subject: [PATCH] - Add declarations for the PnP arbiter and resource translation interfaces (ARBITER_REQUEST_SOURCE, ARBITER_RESULT, ARBITER_ACTION, ARBITER_CONFLICT_INFO, ARBITER_PARAMETERS, ARBITER_LIST_ENTRY, PARBITER_HANDLER, ARBITER_INTERFACE, RESOURCE_TRANSLATION_DIRECTION, PTRANSLATE_RESOURCE_HANDLER, PTRANSLATE_RESOURCE_REQUIREMENTS_HANDLER, TRANSLATOR_INTERFACE). svn path=/trunk/; revision=11396 --- reactos/w32api/include/ddk/winddk.h | 148 +++++++++++++++++++++++++++- 1 file changed, 145 insertions(+), 3 deletions(-) diff --git a/reactos/w32api/include/ddk/winddk.h b/reactos/w32api/include/ddk/winddk.h index ed7e8f291b1..14ea0e73f55 100644 --- a/reactos/w32api/include/ddk/winddk.h +++ b/reactos/w32api/include/ddk/winddk.h @@ -740,7 +740,6 @@ typedef VOID DDKAPI IN PVOID Context); - /* ** System structures */ @@ -1725,8 +1724,7 @@ typedef struct _DEVICE_OBJECT { USHORT Spare1; struct _DEVOBJ_EXTENSION *DeviceObjectExtension; PVOID Reserved; -} DEVICE_OBJECT; -typedef struct _DEVICE_OBJECT *PDEVICE_OBJECT; +} DEVICE_OBJECT, *PDEVICE_OBJECT; typedef enum _DEVICE_RELATION_TYPE { BusRelations, @@ -1923,6 +1921,150 @@ typedef struct _DMA_ADAPTER { PDMA_OPERATIONS DmaOperations; } DMA_ADAPTER; + +typedef enum _ARBITER_REQUEST_SOURCE { + ArbiterRequestUndefined = -1, + ArbiterRequestLegacyReported, + ArbiterRequestHalReported, + ArbiterRequestLegacyAssigned, + ArbiterRequestPnpDetected, + ArbiterRequestPnpEnumerated +} ARBITER_REQUEST_SOURCE; + +typedef enum _ARBITER_RESULT { + ArbiterResultUndefined = -1, + ArbiterResultSuccess, + ArbiterResultExternalConflict, + ArbiterResultNullRequest +} ARBITER_RESULT; + +typedef enum _ARBITER_ACTION { + ArbiterActionTestAllocation, + ArbiterActionRetestAllocation, + ArbiterActionCommitAllocation, + ArbiterActionRollbackAllocation, + ArbiterActionQueryAllocatedResources, + ArbiterActionWriteReservedResources, + ArbiterActionQueryConflict, + ArbiterActionQueryArbitrate, + ArbiterActionAddReserved, + ArbiterActionBootAllocation +} ARBITER_ACTION, *PARBITER_ACTION; + +typedef struct _ARBITER_CONFLICT_INFO { + PDEVICE_OBJECT OwningObject; + ULONGLONG Start; + ULONGLONG End; +} ARBITER_CONFLICT_INFO, *PARBITER_CONFLICT_INFO; + +typedef struct _ARBITER_PARAMETERS { + union { + struct { + IN OUT PLIST_ENTRY ArbitrationList; + IN ULONG AllocateFromCount; + IN PCM_PARTIAL_RESOURCE_DESCRIPTOR AllocateFrom; + } TestAllocation; + + struct { + IN OUT PLIST_ENTRY ArbitrationList; + IN ULONG AllocateFromCount; + IN PCM_PARTIAL_RESOURCE_DESCRIPTOR AllocateFrom; + } RetestAllocation; + + struct { + IN OUT PLIST_ENTRY ArbitrationList; + } BootAllocation; + + struct { + OUT PCM_PARTIAL_RESOURCE_LIST *AllocatedResources; + } QueryAllocatedResources; + + struct { + IN PDEVICE_OBJECT PhysicalDeviceObject; + IN PIO_RESOURCE_DESCRIPTOR ConflictingResource; + OUT PULONG ConflictCount; + OUT PARBITER_CONFLICT_INFO *Conflicts; + } QueryConflict; + + struct { + IN PLIST_ENTRY ArbitrationList; + } QueryArbitrate; + + struct { + IN PDEVICE_OBJECT ReserveDevice; + } AddReserved; + } Parameters; +} ARBITER_PARAMETERS, *PARBITER_PARAMETERS; + +#define ARBITER_FLAG_BOOT_CONFIG 0x00000001 + +typedef struct _ARBITER_LIST_ENTRY { + LIST_ENTRY ListEntry; + ULONG AlternativeCount; + PIO_RESOURCE_DESCRIPTOR Alternatives; + PDEVICE_OBJECT PhysicalDeviceObject; + ARBITER_REQUEST_SOURCE RequestSource; + ULONG Flags; + LONG_PTR WorkSpace; + INTERFACE_TYPE InterfaceType; + ULONG SlotNumber; + ULONG BusNumber; + PCM_PARTIAL_RESOURCE_DESCRIPTOR Assignment; + PIO_RESOURCE_DESCRIPTOR SelectedAlternative; + ARBITER_RESULT Result; +} ARBITER_LIST_ENTRY, *PARBITER_LIST_ENTRY; + +typedef NTSTATUS +(DDKAPI *PARBITER_HANDLER)( + IN PVOID Context, + IN ARBITER_ACTION Action, + IN OUT PARBITER_PARAMETERS Parameters); + +#define ARBITER_PARTIAL 0x00000001 + +typedef struct _ARBITER_INTERFACE { + USHORT Size; + USHORT Version; + PVOID Context; + PINTERFACE_REFERENCE InterfaceReference; + PINTERFACE_DEREFERENCE InterfaceDereference; + PARBITER_HANDLER ArbiterHandler; + ULONG Flags; +} ARBITER_INTERFACE, *PARBITER_INTERFACE; + +typedef enum _RESOURCE_TRANSLATION_DIRECTION { + TranslateChildToParent, + TranslateParentToChild +} RESOURCE_TRANSLATION_DIRECTION; + +typedef NTSTATUS +(DDKAPI *PTRANSLATE_RESOURCE_HANDLER)( + IN PVOID Context, + IN PCM_PARTIAL_RESOURCE_DESCRIPTOR Source, + IN RESOURCE_TRANSLATION_DIRECTION Direction, + IN ULONG AlternativesCount, + IN IO_RESOURCE_DESCRIPTOR Alternatives[], + IN PDEVICE_OBJECT PhysicalDeviceObject, + OUT PCM_PARTIAL_RESOURCE_DESCRIPTOR Target); + +typedef NTSTATUS +(DDKAPI *PTRANSLATE_RESOURCE_REQUIREMENTS_HANDLER)( + IN PVOID Context, + IN PIO_RESOURCE_DESCRIPTOR Source, + IN PDEVICE_OBJECT PhysicalDeviceObject, + OUT PULONG TargetCount, + OUT PIO_RESOURCE_DESCRIPTOR *Target); + +typedef struct _TRANSLATOR_INTERFACE { + USHORT Size; + USHORT Version; + PVOID Context; + PINTERFACE_REFERENCE InterfaceReference; + PINTERFACE_DEREFERENCE InterfaceDereference; + PTRANSLATE_RESOURCE_HANDLER TranslateResources; + PTRANSLATE_RESOURCE_REQUIREMENTS_HANDLER TranslateResourceRequirements; +} TRANSLATOR_INTERFACE, *PTRANSLATOR_INTERFACE; + typedef enum _FILE_INFORMATION_CLASS { FileDirectoryInformation = 1, FileFullDirectoryInformation,