ReactOS 0.4.17-dev-1190-g4c812f4
pciidex.h
Go to the documentation of this file.
1/*
2 * PROJECT: PCI IDE bus driver extension
3 * LICENSE: See COPYING in the top level directory
4 * PURPOSE: Common header file
5 * COPYRIGHT: Copyright 2005 Hervé Poussineau <hpoussin@reactos.org>
6 * Copyright 2023 Dmitry Borisov <di.sean@protonmail.com>
7 */
8
9#pragma once
10
11#include <ntddk.h>
12#include <ntstrsafe.h>
13#include <ntintsafe.h>
14#include <initguid.h>
15#include <wdmguid.h>
16
17#include <ata.h>
18#include <ide.h>
19
20#include <scsi.h>
23#include "debug.h"
24#include "ahci.h"
25
26#include <debug/driverdbg.h>
27
31
32#define TAG_PCIIDEX 'XedI'
33
34#define ASSUME(cond) \
35 do { \
36 ASSERT(cond); \
37 __assume(cond); \
38 } while (0)
39
40#define IS_FDO(p) \
41 ((((PCOMMON_DEVICE_EXTENSION)(p))->Flags & DO_IS_FDO) != 0)
42
43#define IS_PRIMARY_CHANNEL(PdoExtension) (PdoExtension->Channel == 0)
44
45#if defined(_MSC_VER)
46#pragma section("PAGECONS", read)
47#endif
48
50#define PCIIDEX_PAGED_DATA DATA_SEG("PAGECONS")
51
52#define MAX_CHANNELS 32
53
54#define PORT_TIMER_TICK_MS 10 // Timer interval is 10ms
55
56#define DEV_NUMBER(Device) ((Device)->TransportFlags & DEVICE_NUMBER_MASK)
57
60
62typedef BOOLEAN
63(ATA_PCI_MATCH_FN)(
68typedef ATA_PCI_MATCH_FN *PATA_PCI_MATCH_FN;
69
72(CONTROLLER_CHANNEL_ENABLED)(
75typedef CONTROLLER_CHANNEL_ENABLED *PCONTROLLER_CHANNEL_ENABLED;
76
78typedef VOID
79(CONTROLLER_START)(
81typedef CONTROLLER_START *PCONTROLLER_START;
82
84typedef VOID
85(CONTROLLER_STOP)(
87typedef CONTROLLER_STOP *PCONTROLLER_STOP;
88
89typedef VOID
93
94typedef NTSTATUS
96 _In_ PVOID ChannelContext,
97 _In_ BOOLEAN Attach);
99
101typedef VOID
102(CHANNEL_SET_MODE_EX)(
106typedef CHANNEL_SET_MODE_EX *PCHANNEL_SET_MODE_EX;
107
108typedef NTSTATUS
110 _In_ PVOID ChannelContext);
112
113typedef VOID
115 _In_ PVOID ChannelContext);
117
118typedef VOID
120 _In_ PVOID ChannelContext,
123
124typedef BOOLEAN
126 _In_ PCHANNEL_DATA_PATA ChanData);
128
129typedef VOID
131 _In_ PCHANNEL_DATA_PATA ChanData,
134
135typedef VOID
137 _In_ PCHANNEL_DATA_PATA ChanData,
140
141typedef UCHAR
143 _In_ PCHANNEL_DATA_PATA ChanData);
145
146typedef BOOLEAN
148 _In_ PCHANNEL_DATA_PATA ChanData,
153
154typedef BOOLEAN
156 _In_ PCHANNEL_DATA_PATA ChanData,
161
163{
168
169typedef struct _ATA_CONTROLLER
170{
173 struct
174 {
186
187 struct
188 {
190#define RANGE_IS_VALID 0x01
191#define RANGE_IS_MEMORY 0x02
192#define RANGE_IS_MAPPED 0x04
196
206 union
207 {
210 };
216
221
223 ULONG Flags;
224#define CTRL_FLAG_NATIVE_PCI 0x00000001
225#define CTRL_FLAG_IS_SIMPLEX 0x00000002
226#define CTRL_FLAG_SATA_HBA_ACPI 0x00000002
227#define CTRL_FLAG_USE_TEST_FUNCTION 0x00000004
228#define CTRL_FLAG_IS_AHCI 0x00000008
229#define CTRL_FLAG_NON_PNP 0x00000010
230#define CTRL_FLAG_MANUAL_RES 0x00000020
231#define CTRL_FLAG_DMA_INTERRUPT 0x00000040
232
236
238{
254 struct
255 {
261#define CHANNEL_FLAG_IO32 0x00000001
262#define CHANNEL_FLAG_DRIVE0_DMA_CAPABLE 0x00000002
263#define CHANNEL_FLAG_DRIVE1_DMA_CAPABLE 0x00000004
264#define CHANNEL_FLAG_CONTROL_PORT_BASE_MAPPED 0x00000008
265#define CHANNEL_FLAG_COMMAND_PORT_BASE_MAPPED 0x00000010
266#define CHANNEL_FLAG_DMA_PORT_BASE_MAPPED 0x00000020
267#define CHANNEL_FLAG_64_BIT_DMA 0x00000040
268#define CHANNEL_FLAG_PRIMARY_ADDRESS_CLAIMED 0x00000080
269#define CHANNEL_FLAG_SECONDARY_ADDRESS_CLAIMED 0x00000100
270#define CHANNEL_FLAG_PIO_VIA_DMA 0x00000200
271#define CHANNEL_FLAG_NO_SLAVE 0x00000400
272#define CHANNEL_FLAG_IS_EXTERNAL 0x00000800
273#define CHANNEL_FLAG_IS_PMP 0x00001000
274#define CHANNEL_FLAG_HAS_FBS 0x00002000
275#define CHANNEL_FLAG_FBS_ENABLED 0x00004000
276#define CHANNEL_FLAG_HAS_ACPI_GTM 0x00008000
277#define CHANNEL_FLAG_HAS_NCQ 0x00010000
278#define CHANNEL_FLAG_PIO_FOR_LBA48_XFER 0x00020000 // TODO: Not used yet
279#define CHANNEL_FLAG_NO_ATAPI_DMA 0x00040000
280#define CHANNEL_FLAG_DMA_BEFORE_CMD 0x00080000
281#define CHANNEL_FLAG_MRES_TF 0x00100000 // MRES_TF
282#define CHANNEL_FLAG_MRES_DMA 0x00200000 // MRES_DMA
283#define CHANNEL_FLAG_MRES_CTRL 0x00400000 // MRES_CTRL
284#define CHANNEL_FLAG_CBUS 0x80000000
285
292
293typedef struct _CHANNEL_DATA_PATA
294{
297
309#if defined(_M_IX86)
310 UCHAR LastAtaBankId;
311#endif
320
321typedef struct _CHANNEL_INFO_AHCI
322{
335
336typedef struct _CHANNEL_DATA_AHCI
337{
340
350
352{
356
357typedef struct _COMMON_DEVICE_EXTENSION
358{
359 _Write_guarded_by_(_Global_interlock_)
360 volatile LONG PageFiles;
361
362 _Write_guarded_by_(_Global_interlock_)
363 volatile LONG HibernateFiles;
364
365 _Write_guarded_by_(_Global_interlock_)
366 volatile LONG DumpFiles;
367
368 union
369 {
372
375 };
376
378
380#define DO_IS_FDO 0x80000000
381
384
385typedef struct _FDO_DEVICE_EXTENSION
386{
389
398
399 /* Must be the last entry */
402
403typedef struct _PDO_DEVICE_EXTENSION
404{
407
410#define PDO_FLAG_NOT_PRESENT 0x00000001
411#define PDO_FLAG_REPORTED_MISSING 0x00000002
412
414
417
418VOID
422 _In_ ULONG MmioFlags);
423
424#include "pata.h"
425
427
428/* acpi.c *********************************************************************/
429
434
441
442CODE_SEG("PAGE")
443PVOID
446
447CODE_SEG("PAGE")
448VOID
452
453/* fdo.c **********************************************************************/
454
455CODE_SEG("PAGE")
457
458CODE_SEG("PAGE")
460
461CODE_SEG("PAGE")
463
464CHANNEL_SET_MODE AtaCtrlSetTransferMode;
467
468CODE_SEG("PAGE")
470
471CODE_SEG("PAGE")
473
475VOID
477 _In_ PVOID ChannelContext,
479
480CODE_SEG("PAGE")
481PVOID
485 _In_ ULONG MinimumIoLength);
486
487CODE_SEG("PAGE")
492
493CODE_SEG("PAGE")
498
499/* miniport.c *****************************************************************/
500
501CODE_SEG("PAGE")
506
508NTAPI
510 _In_ PVOID DeviceExtension,
511 _Out_ PULONG BusLocation);
512
513/* pciidex.c ******************************************************************/
514
515CODE_SEG("PAGE")
516DRIVER_INITIALIZE DriverEntry;
517
518CODE_SEG("PAGE")
519DRIVER_UNLOAD PciIdeXUnload;
520
521CODE_SEG("PAGE")
522DRIVER_ADD_DEVICE PciIdeXAddDevice;
523
525CODE_SEG("PAGE")
526DRIVER_DISPATCH_PAGED PciIdeXDispatchWmi;
527
528IO_COMPLETION_ROUTINE PciIdeXPdoCompletionRoutine;
529
532 _In_ __callback PATA_PCI_MATCH_FN MatchFunction,
534
535VOID
536PciRead(
539 _In_ ULONG ConfigDataOffset,
541
542VOID
546 _In_ ULONG ConfigDataOffset,
548
549VOID
551
552CODE_SEG("PAGE")
556 _In_ PIRP Irp,
558
559CODE_SEG("PAGE")
563 _In_ PIRP Irp);
564
565CODE_SEG("PAGE")
569 _In_ PIRP Irp);
570
571/* pdo.c **********************************************************************/
572
574CODE_SEG("PAGE")
575DRIVER_DISPATCH_PAGED PciIdeXDispatchPnp;
576
577CODE_SEG("PAGE")
581 _In_ PIRP Irp,
582 _In_ BOOLEAN FinalRemove);
583
584/* power.c ********************************************************************/
585
588
589/* ahci_generic.c *************************************************************/
590
591CODE_SEG("PAGE")
595
596/* ahci_hw.c ******************************************************************/
597
602
603VOID
605 _In_ PCHANNEL_DATA_AHCI ChanData);
606
607VOID
609 _In_ PCHANNEL_DATA_AHCI ChanData,
611 _In_ BOOLEAN ProcessErrorStatus);
612
613VOID
615 _In_ PCHANNEL_DATA_AHCI ChanData);
616
617VOID
619 _In_ PCHANNEL_DATA_AHCI ChanData,
620 _In_ ULONG InterruptStatus);
621
624 _In_ PCHANNEL_DATA_AHCI ChanData);
625
626ULONG
628 _In_ PVOID ChannelContext);
629
630/* ahci_io.c ******************************************************************/
631
632CHANNEL_START_IO AtaAhciStartIo;
633CHANNEL_PREPARE_IO AtaAhciPrepareIo;
634CHANNEL_PREPARE_PRD_TABLE AtaAhciPreparePrdTable;
635CHANNEL_ALLOCATE_SLOT AtaAhciAllocateSlot;
636KSERVICE_ROUTINE AtaAhciHbaIsr;
637
638/* pata_generic.c *************************************************************/
639
640CHANNEL_SET_MODE_EX SataSetTransferMode;
642
643CODE_SEG("PAGE")
645
646VOID
650 _In_range_(>, 0) ULONG ClockPeriodPs,
652
653CODE_SEG("PAGE")
654VOID
656 _In_ PCHANNEL_DATA_PATA ChanData,
657 _In_ ULONG_PTR CommandPortBase,
658 _In_ ULONG_PTR ControlPortBase,
659 _In_ ULONG CommandBlockSpare);
660
661CODE_SEG("PAGE")
666
667CODE_SEG("PAGE")
670 _In_ PCHANNEL_DATA_PATA ChanData,
672
673CODE_SEG("PAGE")
674VOID
676 _In_ PVOID ChannelContext);
677
678CODE_SEG("PAGE")
681 _In_ PVOID ChannelContext);
682
683CODE_SEG("PAGE")
687 _In_ ULONG HwExtensionSize);
688
689CODE_SEG("PAGE")
693
694/* pata_hw.c ******************************************************************/
695
699
700ULONG
702 _In_ PVOID ChannelContext);
703
704/* pata_io.c ******************************************************************/
705
706CHANNEL_ALLOCATE_SLOT PataAllocateSlot;
707CHANNEL_PREPARE_PRD_TABLE PciIdePreparePrdTable;
708CHANNEL_PREPARE_IO PataPrepareIo;
709CHANNEL_START_IO PataStartIo;
710KSERVICE_ROUTINE PataChannelIsr;
711KSERVICE_ROUTINE PciIdeChannelIsr;
716KDEFERRED_ROUTINE PataPollingTimerDpc;
717
718VOID
723 _In_ ULONG MmioFlags);
724
725VOID
730 _In_ ULONG MmioFlags);
731
732VOID
737 _In_ ULONG MmioFlags);
738
739VOID
744 _In_ ULONG MmioFlags);
745
746UCHAR
749 _In_ ULONG MmioFlags);
750
751VOID
755 _In_ ULONG MmioFlags);
756
757VOID
759 _In_ PCHANNEL_DATA_PATA ChanData);
760
761/* misc ***********************************************************************/
762
763#if defined(ATA_DETECT_LEGACY_DEVICES)
764CODE_SEG("PAGE")
769#endif
770
771CODE_SEG("PAGE")
775
776CODE_SEG("PAGE")
780
781CODE_SEG("PAGE")
785
786CODE_SEG("PAGE")
790
791CODE_SEG("PAGE")
795
796CODE_SEG("PAGE")
800
801CODE_SEG("PAGE")
805
806CODE_SEG("PAGE")
810
811CODE_SEG("PAGE")
815
816CODE_SEG("PAGE")
820
821CODE_SEG("PAGE")
825
826CHANNEL_SET_MODE_EX SvwSetTransferMode;
827
828CODE_SEG("PAGE")
833
834VOID
836 _Inout_ PATA_TIMING Timing);
837
839ULONG
841 _In_ ULONG x)
842{
843 x -= x >> 1 & 0x55555555;
844 x = (x & 0x33333333) + (x >> 2 & 0x33333333);
845
846 return ((x + (x >> 4)) & 0x0F0F0F0F) * 0x01010101 >> 24;
847}
848
852 _In_ ULONG x)
853{
854 /* Also exclude zero numbers */
855 return (x != 0) && ((x & (x - 1)) == 0);
856}
857
859UCHAR
862 _In_ ULONG ConfigDataOffset)
863{
865
866 PciRead(Controller, &Result, ConfigDataOffset, sizeof(Result));
867 return Result;
868}
869
871USHORT
874 _In_ ULONG ConfigDataOffset)
875{
877
878 PciRead(Controller, &Result, ConfigDataOffset, sizeof(Result));
879 return Result;
880}
881
883ULONG
886 _In_ ULONG ConfigDataOffset)
887{
889
890 PciRead(Controller, &Result, ConfigDataOffset, sizeof(Result));
891 return Result;
892}
893
895VOID
898 _In_ ULONG ConfigDataOffset,
900{
901 PciWrite(Controller, &Value, ConfigDataOffset, sizeof(Value));
902}
903
905VOID
908 _In_ ULONG ConfigDataOffset,
910{
911 PciWrite(Controller, &Value, ConfigDataOffset, sizeof(Value));
912}
913
915VOID
918 _In_ ULONG ConfigDataOffset,
920{
921 PciWrite(Controller, &Value, ConfigDataOffset, sizeof(Value));
922}
#define CODE_SEG(...)
#define VOID
Definition: acefi.h:82
unsigned char BOOLEAN
Definition: actypes.h:127
enum _SATA_SCR_REGISTER SATA_SCR_REGISTER
#define AHCI_MAX_COMMAND_SLOTS
Definition: ahci.h:13
BOOLEAN() CHANNEL_DOWNGRADE_INTERFACE_SPEED(_In_ PVOID ChannelContext)
Definition: ata_shared.h:399
NTSTATUS() CONTROLLER_ATTACH_CHANNEL(_In_ PVOID ChannelContext, _In_ BOOLEAN Attach)
Definition: ata_shared.h:380
VOID() CONTROLLER_PNP_REMOVE_DEVICE(_In_ PVOID ControllerContext)
Definition: ata_shared.h:476
VOID() CHANNEL_ABORT_CHANNEL(_In_ PVOID ChannelContext, _In_ BOOLEAN DisableInterrupts)
Definition: ata_shared.h:404
NTSTATUS() CONTROLLER_PNP_START_DEVICE(_In_ PVOID ControllerContext, _In_ PCM_RESOURCE_LIST ResourcesTranslated)
Definition: ata_shared.h:470
_In_ PVOID typedef PORT_NOTIFICATION * PPORT_NOTIFICATION
Definition: ata_shared.h:377
CHANNEL_START_IO * PCHANNEL_START_IO
Definition: ata_shared.h:460
VOID() CHANNEL_RESET_CHANNEL(_In_ PVOID ChannelContext)
Definition: ata_shared.h:410
ULONG() CHANNEL_ENUMERATE_CHANNEL(_In_ PVOID ChannelContext)
Definition: ata_shared.h:415
PVOID() CHANNEL_GET_INIT_TASK_FILE(_In_ PVOID ChannelContext, _In_ PDEVICE_OBJECT DeviceObject)
Definition: ata_shared.h:393
CHANNEL_PREPARE_PRD_TABLE * PCHANNEL_PREPARE_PRD_TABLE
Definition: ata_shared.h:446
VOID() CHANNEL_SET_DEVICE_DATA(_In_ PVOID ChannelContext, _In_ PDEVICE_OBJECT DeviceObject, _In_ PIDENTIFY_DEVICE_DATA IdentifyDeviceData)
Definition: ata_shared.h:386
CHANNEL_PREPARE_IO * PCHANNEL_PREPARE_IO
Definition: ata_shared.h:453
ATA_CONNECTION_STATUS() CHANNEL_IDENTIFY_DEVICE(_In_ PVOID ChannelContext, _In_ ULONG DeviceNumber)
Definition: ata_shared.h:420
LONG NTSTATUS
Definition: precomp.h:26
#define NTSYSAPI
Definition: ntoskrnl.h:12
#define _Dispatch_type_(a)
Definition: btrfs_drv.h:204
#define IRP_MJ_PNP
Definition: cdrw_usr.h:52
Definition: bufpool.h:45
_In_ D3DDDI_VIDEO_PRESENT_TARGET_ID _In_ ULONG _In_ ULONG Flags
Definition: dispmprt.h:245
#define NTSTATUS
Definition: precomp.h:19
PDEVICE_LIST DeviceList
Definition: utils.c:27
NTSTATUS NTAPI PciIdeXDispatchPower(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp)
Definition: power.c:53
@ PdoExtension
Definition: precomp.h:61
@ FdoExtension
Definition: precomp.h:60
#define _IRQL_requires_max_(irql)
Definition: driverspecs.h:230
#define _IRQL_requires_(irql)
Definition: driverspecs.h:229
ULONG KSPIN_LOCK
Definition: env_spec_w32.h:72
#define APC_LEVEL
Definition: env_spec_w32.h:695
#define DISPATCH_LEVEL
Definition: env_spec_w32.h:696
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
CPPORT Port[4]
Definition: headless.c:38
_In_ ULONG PortNumber
Definition: hubucx.h:272
#define MAX_IDE_DEVICE
Definition: ide.h:32
NTSTATUS(NTAPI * PCONTROLLER_PROPERTIES)(_In_ PVOID DeviceExtension, _In_ PIDE_CONTROLLER_PROPERTIES ControllerProperties)
Definition: ide.h:245
IDE_CHANNEL_STATE
Definition: ide.h:196
_In_ PIRP Irp
Definition: kse.h:79
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_ PVOID Context
Definition: kse.h:81
unsigned __int64 ULONG64
Definition: imports.h:198
_In_ PIOMMU_DEVICE_PATH _In_ PIOMMU_SVM_CAPABILITIES DeviceCapabilities
Definition: haltypes.h:1892
#define _In_reads_bytes_(s)
Definition: no_sal2.h:170
#define _In_reads_(s)
Definition: no_sal2.h:168
#define _Inout_
Definition: no_sal2.h:162
#define _Out_
Definition: no_sal2.h:160
#define _In_
Definition: no_sal2.h:158
#define _Out_writes_bytes_all_(s)
Definition: no_sal2.h:194
#define _In_opt_
Definition: no_sal2.h:212
#define _In_range_(l, h)
Definition: no_sal2.h:368
#define _Out_writes_all_(s)
Definition: no_sal2.h:192
int Count
Definition: noreturn.cpp:7
_In_ ULONGLONG _In_ ULONGLONG _In_ BOOLEAN Enable
Definition: ntddpcm.h:142
NTSTATUS PataGetControllerProperties(_Inout_ PATA_CONTROLLER Controller, _In_ PCM_RESOURCE_LIST ResourcesTranslated)
Definition: pata_legacy.c:16
NTSTATUS NTAPI PciIdeXDispatchWmi(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp)
Definition: pciidex.c:117
CHANNEL_PREPARE_IO PataPrepareIo
Definition: pciidex.h:708
struct _CHANNEL_INFO_AHCI * PCHANNEL_INFO_AHCI
VOID AtaWritePortUchar(_In_ PUCHAR Port, _In_ UCHAR Value, _In_ ULONG MmioFlags)
Definition: pata_io.c:90
BOOLEAN AtaAcpiGetTimingMode(_In_ PDEVICE_OBJECT DeviceObject, _Out_ PIDE_ACPI_TIMING_MODE_BLOCK TimingMode)
Definition: acpi.c:119
BOOLEAN() CHANNEL_CHECK_INTERRUPT(_In_ PCHANNEL_DATA_PATA ChanData)
Definition: pciidex.h:125
struct _FDO_DEVICE_EXTENSION FDO_DEVICE_EXTENSION
IDE_CHANNEL_STATE PciIdeXChannelState(_In_ PFDO_DEVICE_EXTENSION FdoExtension, _In_ ULONG Channel)
Definition: miniport.c:15
CONTROLLER_START * PCONTROLLER_START
Definition: pciidex.h:81
NTSTATUS AtaAcpiSetTimingMode(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIDE_ACPI_TIMING_MODE_BLOCK TimingMode, _In_opt_ PIDENTIFY_DEVICE_DATA IdBlock1, _In_opt_ PIDENTIFY_DEVICE_DATA IdBlock2)
Definition: acpi.c:168
NTSTATUS PciIdeXFdoDispatchPnp(_In_ PFDO_DEVICE_EXTENSION FdoExtension, _Inout_ PIRP Irp)
Definition: fdo.c:915
CHANNEL_ENABLE_INTERRUPTS * PCHANNEL_ENABLE_INTERRUPTS
Definition: pciidex.h:122
FORCEINLINE UCHAR PciRead8(_In_ PATA_CONTROLLER Controller, _In_ ULONG ConfigDataOffset)
Definition: pciidex.h:860
NTSTATUS PciIdeXPnpQueryDeviceUsageNotification(_In_ PCOMMON_DEVICE_EXTENSION CommonExt, _In_ PIRP Irp)
Definition: pciidex.c:214
VOID PciWrite(_In_ PATA_CONTROLLER Controller, _In_reads_bytes_(BufferLength) PVOID Buffer, _In_ ULONG ConfigDataOffset, _In_ ULONG BufferLength)
Definition: pciidex.c:86
VOID PciRead(_In_ PATA_CONTROLLER Controller, _Out_writes_bytes_all_(BufferLength) PVOID Buffer, _In_ ULONG ConfigDataOffset, _In_ ULONG BufferLength)
Definition: pciidex.c:72
NTSTATUS PcTechGetControllerProperties(_Inout_ PATA_CONTROLLER Controller)
Definition: pctech.c:41
struct _CHANNEL_DATA_AHCI * PCHANNEL_DATA_AHCI
BOOLEAN() CHANNEL_READ_SCR(_In_ PCHANNEL_DATA_PATA ChanData, _In_ SATA_SCR_REGISTER Register, _In_ ULONG PortNumber, _In_ PULONG Result)
Definition: pciidex.h:147
CONTROLLER_PNP_START_DEVICE PciIdeXFdoStartDevice
Definition: pciidex.h:469
NTSTATUS() CHANNEL_ALLOCATE_MEMORY(_In_ PVOID ChannelContext)
Definition: pciidex.h:109
CHANNEL_LOAD_TASK_FILE PataLoadTaskFile
Definition: pciidex.h:713
DRIVER_UNLOAD PciIdeXUnload
Definition: pciidex.h:519
NTSTATUS NTAPI PciIdexGetBusLocation(_In_ PVOID DeviceExtension, _Out_ PULONG BusLocation)
Definition: miniport.c:159
VOID() CHANNEL_ENABLE_INTERRUPTS(_In_ PVOID ChannelContext, _In_ BOOLEAN Enable)
Definition: pciidex.h:119
VOID AtaSleep(VOID)
Definition: pciidex.c:100
CHANNEL_SAVE_TASK_FILE * PCHANNEL_SAVE_TASK_FILE
Definition: pciidex.h:139
CONTROLLER_FREE_RESOURCES * PCONTROLLER_FREE_RESOURCES
Definition: pciidex.h:92
CHANNEL_PREPARE_IO AtaAhciPrepareIo
Definition: pciidex.h:633
NTSTATUS CmdGetControllerProperties(_Inout_ PATA_CONTROLLER Controller)
Definition: cmd.c:460
KDEFERRED_ROUTINE PataPollingTimerDpc
Definition: pciidex.h:716
_In_ ULONG _In_ PCI_SLOT_NUMBER PciSlot
Definition: pciidex.h:66
struct _CHANNEL_INFO_AHCI CHANNEL_INFO_AHCI
CHANNEL_START_IO PataStartIo
Definition: pciidex.h:709
VOID() CHANNEL_FREE_MEMORY(_In_ PVOID ChannelContext)
Definition: pciidex.h:114
VOID AtaSelectTimings(_In_reads_(MAX_IDE_DEVICE) PCHANNEL_DEVICE_CONFIG *DeviceList, _Out_writes_all_(MAX_IDE_DEVICE) PATA_TIMING Timings, _In_range_(>, 0) ULONG ClockPeriodPs, _In_ ULONG Flags)
Definition: pata_generic.c:116
struct _FDO_DEVICE_EXTENSION * PFDO_DEVICE_EXTENSION
CONTROLLER_CHANNEL_ENABLED * PCONTROLLER_CHANNEL_ENABLED
Definition: pciidex.h:75
ULONG AtaAhciChannelGetMaximumDeviceCount(_In_ PVOID ChannelContext)
Definition: ahci_hw.c:1569
BOOLEAN AtaAhciDowngradeInterfaceSpeed(_In_ PCHANNEL_DATA_AHCI ChanData)
Definition: ahci_hw.c:1542
struct _ATA_PCI_ENABLE_BITS * PATA_PCI_ENABLE_BITS
CONTROLLER_ATTACH_CHANNEL AtaCtrlAttachChannel
Definition: pciidex.h:456
NTSTATUS PciIdeParseResources(_In_ PCHANNEL_DATA_PATA ChanData, _In_ PCM_RESOURCE_LIST ResourcesTranslated)
Definition: pata_generic.c:859
VOID AtaWritePortUlong(_In_ PULONG Port, _In_ ULONG Value, _In_ ULONG MmioFlags)
Definition: pata_io.c:102
VOID AtaAhciStopDma(_In_ PCHANNEL_DATA_AHCI ChanData)
Definition: ahci_hw.c:1280
_In_ ULONG Channel
Definition: pciidex.h:74
DRIVER_INITIALIZE DriverEntry
Definition: pciidex.h:516
VOID AtaAhciHandleFatalError(_In_ PCHANNEL_DATA_AHCI ChanData)
Definition: ahci_hw.c:1397
CHANNEL_SET_MODE AtaCtrlSetTransferMode
Definition: pciidex.h:464
CHANNEL_CHECK_INTERRUPT * PCHANNEL_CHECK_INTERRUPT
Definition: pciidex.h:127
CHANNEL_IDENTIFY_DEVICE PataIdentifyDevice
Definition: pciidex.h:698
FORCEINLINE VOID PciWrite16(_In_ PATA_CONTROLLER Controller, _In_ ULONG ConfigDataOffset, _In_ USHORT Value)
Definition: pciidex.h:906
CHANNEL_ENUMERATE_CHANNEL PataEnumerateChannel
Definition: pciidex.h:697
CHANNEL_ALLOCATE_SLOT AtaAhciAllocateSlot
Definition: pciidex.h:635
CHANNEL_SET_DEVICE_DATA AtaCtrlSetDeviceData
Definition: pciidex.h:459
NTSTATUS PciIdeXPnpRepeatRequest(_In_ PCOMMON_DEVICE_EXTENSION CommonExt, _In_ PIRP Irp, _In_opt_ PDEVICE_CAPABILITIES DeviceCapabilities)
Definition: pciidex.c:156
NTSTATUS HptGetControllerProperties(_Inout_ PATA_CONTROLLER Controller)
Definition: hpt.c:316
NTSTATUS IntelGetControllerProperties(_Inout_ PATA_CONTROLLER Controller)
Definition: intel.c:969
CHANNEL_READ_STATUS * PCHANNEL_READ_STATUS
Definition: pciidex.h:144
DRIVER_ADD_DEVICE PciIdeXAddDevice
Definition: pciidex.h:522
KSERVICE_ROUTINE PciIdeChannelIsr
Definition: pciidex.h:711
BOOLEAN PciFindDevice(_In_ __callback PATA_PCI_MATCH_FN MatchFunction, _In_ PVOID Context)
Definition: pciidex.c:13
CHANNEL_FREE_MEMORY * PCHANNEL_FREE_MEMORY
Definition: pciidex.h:116
struct _CHANNEL_DATA_AHCI CHANNEL_DATA_AHCI
CHANNEL_IDENTIFY_DEVICE AtaAhciIdentifyDevice
Definition: pciidex.h:600
struct _PDO_DEVICE_EXTENSION PDO_DEVICE_EXTENSION
Definition: pciidex.h:58
FORCEINLINE VOID PciWrite8(_In_ PATA_CONTROLLER Controller, _In_ ULONG ConfigDataOffset, _In_ UCHAR Value)
Definition: pciidex.h:896
CHANNEL_SAVE_TASK_FILE PataSaveTaskFile
Definition: pciidex.h:714
IDE_CHANNEL_STATE PciIdeGetChannelState(_In_ PATA_CONTROLLER Controller, _In_ ULONG Channel)
Definition: pata_generic.c:912
struct _ATA_PCI_ENABLE_BITS ATA_PCI_ENABLE_BITS
VOID ViaClampTimings(_Inout_ PATA_TIMING Timing)
Definition: via.c:165
CHANNEL_ALLOCATE_MEMORY * PCHANNEL_ALLOCATE_MEMORY
Definition: pciidex.h:111
ULONG PataChannelGetMaximumDeviceCount(_In_ PVOID ChannelContext)
Definition: pata_hw.c:87
NTSTATUS PciIdeXPdoRemoveDevice(_In_ PPDO_DEVICE_EXTENSION PdoExtension, _In_ PIRP Irp, _In_ BOOLEAN FinalRemove)
Definition: pdo.c:193
_In_ ULONG BusNumber
Definition: pciidex.h:65
FORCEINLINE VOID PciWrite32(_In_ PATA_CONTROLLER Controller, _In_ ULONG ConfigDataOffset, _In_ ULONG Value)
Definition: pciidex.h:916
struct _PDO_DEVICE_EXTENSION * PPDO_DEVICE_EXTENSION
Definition: pciidex.h:58
CONTROLLER_STOP * PCONTROLLER_STOP
Definition: pciidex.h:87
FORCEINLINE BOOLEAN IsPowerOfTwo(_In_ ULONG x)
Definition: pciidex.h:851
CONTROLLER_ATTACH_CHANNEL_EX PciIdeAttachChannel
Definition: pciidex.h:644
CHANNEL_ALLOCATE_SLOT PataAllocateSlot
Definition: pciidex.h:706
CHANNEL_ENABLE_INTERRUPTS AtaAhciEnableInterrupts
Definition: pciidex.h:598
FORCEINLINE USHORT PciRead16(_In_ PATA_CONTROLLER Controller, _In_ ULONG ConfigDataOffset)
Definition: pciidex.h:872
NTSTATUS Sil680GetControllerProperties(_Inout_ PATA_CONTROLLER Controller)
Definition: sil680.c:214
struct _CHANNEL_DATA_PATA CHANNEL_DATA_PATA
Definition: pciidex.h:28
KSERVICE_ROUTINE PataChannelIsr
Definition: pciidex.h:710
CHANNEL_DOWNGRADE_INTERFACE_SPEED AtaCtrlDowngradeInterfaceSpeed
Definition: pciidex.h:465
CHANNEL_SET_MODE_EX SataSetTransferMode
Definition: pciidex.h:640
CHANNEL_RESET_CHANNEL PataResetChannel
Definition: pciidex.h:696
NTSTATUS PciIdeConnectInterrupt(_In_ PVOID ChannelContext)
CHANNEL_CHECK_INTERRUPT PciIdeCheckInterrupt
Definition: pciidex.h:712
VOID PciIdeFreeResources(_In_ PVOID ChannelContext)
Definition: pata_generic.c:887
CHANNEL_SET_MODE_EX * PCHANNEL_SET_MODE_EX
Definition: pciidex.h:106
CHANNEL_READ_STATUS PataReadStatus
Definition: pciidex.h:715
DECLSPEC_NOINLINE_FROM_PAGED VOID AtaChanEnableInterruptsSync(_In_ PVOID ChannelContext, _In_ BOOLEAN Enable)
Definition: fdo.c:62
BOOLEAN SvwHasUdmaCable(_In_ PATA_CONTROLLER Controller, _In_ ULONG Channel)
Definition: svw_pata.c:213
struct _PCIIDEX_DRIVER_EXTENSION PCIIDEX_DRIVER_EXTENSION
NTSTATUS SvwPataGetControllerProperties(_Inout_ PATA_CONTROLLER Controller)
Definition: svw_pata.c:288
ATA_PCI_MATCH_FN * PATA_PCI_MATCH_FN
Definition: pciidex.h:68
struct _PCIIDE_PRD_TABLE_ENTRY * PPCIIDE_PRD_TABLE_ENTRY
Definition: pciidex.h:30
VOID AtaReadBlock16(_In_ PUSHORT Port, _In_ PUSHORT Buffer, _In_ ULONG Count, _In_ ULONG MmioFlags)
Definition: pata_io.c:31
VOID() CHANNEL_SAVE_TASK_FILE(_In_ PCHANNEL_DATA_PATA ChanData, _Inout_ PATA_DEVICE_REQUEST Request)
Definition: pciidex.h:136
IO_COMPLETION_ROUTINE PciIdeXPdoCompletionRoutine
Definition: pciidex.h:528
VOID AtaAcpiSetDeviceData(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIDENTIFY_DEVICE_DATA IdBlock)
Definition: acpi.c:317
CHANNEL_WRITE_SCR * PCHANNEL_WRITE_SCR
Definition: pciidex.h:160
CHANNEL_ENUMERATE_CHANNEL AtaAhciEnumerateChannel
Definition: pciidex.h:599
NTSTATUS ViaGetControllerProperties(_Inout_ PATA_CONTROLLER Controller)
Definition: via.c:859
NTSTATUS AmdGetControllerProperties(_Inout_ PATA_CONTROLLER Controller)
Definition: amd.c:329
PVOID AtaAcpiGetTaskFile(_In_ PDEVICE_OBJECT DeviceObject)
Definition: acpi.c:233
struct _CHANNEL_DATA_COMMON CHANNEL_DATA_COMMON
Definition: pciidex.h:29
VOID() CHANNEL_LOAD_TASK_FILE(_In_ PCHANNEL_DATA_PATA ChanData, _In_ PATA_DEVICE_REQUEST Request)
Definition: pciidex.h:130
NTSTATUS() CONTROLLER_ATTACH_CHANNEL_EX(_In_ PVOID ChannelContext, _In_ BOOLEAN Attach)
Definition: pciidex.h:95
FORCEINLINE ULONG CountSetBits(_In_ ULONG x)
Definition: pciidex.h:840
struct _PCIIDEX_DRIVER_EXTENSION * PPCIIDEX_DRIVER_EXTENSION
CHANNEL_ABORT_CHANNEL AtaCtrlAbortChannel
Definition: pciidex.h:466
NTSTATUS ToshibaGetControllerProperties(_Inout_ PATA_CONTROLLER Controller)
Definition: toshiba.c:102
struct _COMMON_DEVICE_EXTENSION COMMON_DEVICE_EXTENSION
struct _CHANNEL_DATA_PATA * PCHANNEL_DATA_PATA
Definition: pciidex.h:28
VOID AtaAhciHandlePortStateChange(_In_ PCHANNEL_DATA_AHCI ChanData, _In_ ULONG InterruptStatus)
Definition: ahci_hw.c:1512
CHANNEL_PREPARE_PRD_TABLE AtaAhciPreparePrdTable
Definition: pciidex.h:634
VOID AtaWriteBlock16(_In_ PUSHORT Port, _In_ PUSHORT Buffer, _In_ ULONG Count, _In_ ULONG MmioFlags)
Definition: pata_io.c:15
NTSYSAPI ULONG InitSafeBootMode
Definition: init.c:75
KSERVICE_ROUTINE AtaAhciHbaIsr
Definition: pciidex.h:636
CHANNEL_PREPARE_PRD_TABLE PciIdePreparePrdTable
Definition: pciidex.h:707
UCHAR() CHANNEL_READ_STATUS(_In_ PCHANNEL_DATA_PATA ChanData)
Definition: pciidex.h:142
#define MAX_CHANNELS
Definition: pciidex.h:52
CHANNEL_START_IO AtaAhciStartIo
Definition: pciidex.h:632
CHANNEL_RESET_CHANNEL AtaAhciResetChannel
Definition: pciidex.h:601
CONTROLLER_PNP_REMOVE_DEVICE PciIdeXFdoRemoveDevice
Definition: pciidex.h:472
VOID AtaReadBlock32(_In_ PULONG Port, _In_ PULONG Buffer, _In_ ULONG Count, _In_ ULONG MmioFlags)
Definition: pata_io.c:63
VOID PciIdeDmaStop(_In_ PCHANNEL_DATA_PATA ChanData)
Definition: pata_io.c:247
struct _ATA_CONTROLLER ATA_CONTROLLER
Definition: pciidex.h:59
CHANNEL_SET_MODE_EX PciIdeGenericSetTransferMode
Definition: pciidex.h:641
CHANNEL_SET_MODE_EX SvwSetTransferMode
Definition: pciidex.h:826
NTSTATUS AhciGetControllerProperties(_Inout_ PATA_CONTROLLER Controller)
Definition: ahci_generic.c:625
NTSTATUS PciIdeCreateChannelData(_In_ PATA_CONTROLLER Controller, _In_ ULONG HwExtensionSize)
_In_ ULONG _In_ PCI_SLOT_NUMBER _In_ PPCI_COMMON_HEADER PciConfig
Definition: pciidex.h:67
CHANNEL_GET_INIT_TASK_FILE AtaCtrlGetInitTaskFile
Definition: pciidex.h:462
VOID AtaAhciSaveTaskFile(_In_ PCHANNEL_DATA_AHCI ChanData, _Inout_ PATA_DEVICE_REQUEST Request, _In_ BOOLEAN ProcessErrorStatus)
Definition: ahci_hw.c:1325
CHANNEL_READ_SCR * PCHANNEL_READ_SCR
Definition: pciidex.h:152
UCHAR AtaReadPortUchar(_In_ PUCHAR Port, _In_ ULONG MmioFlags)
Definition: pata_io.c:79
NTSTATUS AtiGetControllerProperties(_Inout_ PATA_CONTROLLER Controller)
Definition: ati.c:36
PVOID AtaCtrlPciMapBar(_In_ PATA_CONTROLLER Controller, _In_range_(0, PCI_TYPE0_ADDRESSES) ULONG Index, _In_ ULONG MinimumIoLength)
Definition: fdo.c:254
CHANNEL_LOAD_TASK_FILE * PCHANNEL_LOAD_TASK_FILE
Definition: pciidex.h:133
VOID AtaWriteBlock32(_In_ PULONG Port, _In_ PULONG Buffer, _In_ ULONG Count, _In_ ULONG MmioFlags)
Definition: pata_io.c:47
struct _ATA_CONTROLLER * PATA_CONTROLLER
Definition: pciidex.h:59
NTSTATUS SvwSataGetControllerProperties(_Inout_ PATA_CONTROLLER Controller)
Definition: svw_sata.c:215
BOOLEAN() CHANNEL_WRITE_SCR(_In_ PCHANNEL_DATA_PATA ChanData, _In_ SATA_SCR_REGISTER Register, _In_ ULONG PortNumber, _In_ ULONG Value)
Definition: pciidex.h:155
NTSTATUS PciIdeXPnpQueryPnpDeviceState(_In_ PCOMMON_DEVICE_EXTENSION CommonExt, _In_ PIRP Irp)
Definition: pciidex.c:266
struct _COMMON_DEVICE_EXTENSION * PCOMMON_DEVICE_EXTENSION
CONTROLLER_ATTACH_CHANNEL_EX * PCONTROLLER_ATTACH_CHANNEL_EX
Definition: pciidex.h:98
FORCEINLINE ULONG PciRead32(_In_ PATA_CONTROLLER Controller, _In_ ULONG ConfigDataOffset)
Definition: pciidex.h:884
VOID() CONTROLLER_FREE_RESOURCES(_In_ PATA_CONTROLLER Controller)
Definition: pciidex.h:90
struct _CHANNEL_DATA_COMMON * PCHANNEL_DATA_COMMON
Definition: pciidex.h:29
IDE_CHANNEL_STATE PciIdeXGetChannelState(_In_ PATA_CONTROLLER Controller, _In_ ULONG Channel)
Definition: fdo.c:683
NTSTATUS PciIdeGetControllerProperties(_Inout_ PATA_CONTROLLER Controller)
VOID PciIdeInitTaskFileIoResources(_In_ PCHANNEL_DATA_PATA ChanData, _In_ ULONG_PTR CommandPortBase, _In_ ULONG_PTR ControlPortBase, _In_ ULONG CommandBlockSpare)
Definition: pata_generic.c:673
#define BOOLEAN
Definition: pedump.c:73
long LONG
Definition: pedump.c:60
unsigned short USHORT
Definition: pedump.c:61
#define __callback
Definition: sal_old.h:112
#define DECLSPEC_NOINLINE_FROM_PAGED
NTSTATUS NTAPI PciIdeXDispatchPnp(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp)
Definition: pdo.c:1083
PGET_SET_DEVICE_DATA SetBusData
Definition: pciidex.h:197
PVOID IoBase
Definition: pciidex.h:194
struct _ATA_CONTROLLER::@1292 AccessRange[PCI_TYPE0_ADDRESSES]
PCONTROLLER_CHANNEL_ENABLED ChannelEnabledTest
Definition: pciidex.h:209
USHORT Command
Definition: pciidex.h:177
PCONTROLLER_OBJECT HwSyncObject
Definition: pciidex.h:201
ULONG AhciCapabilities
Definition: pciidex.h:219
ULONG BusLocation
Definition: pciidex.h:212
ULONG AlignmentRequirement
Definition: pciidex.h:213
ULONG Length
Definition: pciidex.h:193
USHORT DeviceID
Definition: pciidex.h:176
USHORT SubVendorID
Definition: pciidex.h:183
ULONG AhciCapabilitiesEx
Definition: pciidex.h:220
ULONG QueueDepth
Definition: pciidex.h:222
PCONTROLLER_START Start
Definition: pciidex.h:202
PCONTROLLER_ATTACH_CHANNEL_EX AttachChannel
Definition: pciidex.h:205
PVOID ChanDataBlock
Definition: pciidex.h:200
struct _ATA_CONTROLLER::@1291 Pci
CM_PARTIAL_RESOURCE_DESCRIPTOR InterruptDesc
Definition: pciidex.h:171
USHORT SubSystemID
Definition: pciidex.h:184
ULONG MaxChannels
Definition: pciidex.h:214
UCHAR BaseClass
Definition: pciidex.h:181
UCHAR ProgIf
Definition: pciidex.h:179
PVOID BusInterfaceContext
Definition: pciidex.h:199
KSPIN_LOCK Lock
Definition: pciidex.h:233
PCONTROLLER_STOP Stop
Definition: pciidex.h:203
ULONG AhciVersion
Definition: pciidex.h:218
USHORT VendorID
Definition: pciidex.h:175
ULONG ChannelBitmap
Definition: pciidex.h:215
UCHAR SubClass
Definition: pciidex.h:180
const ATA_PCI_ENABLE_BITS * ChannelEnableBits
Definition: pciidex.h:208
PGET_SET_DEVICE_DATA GetBusData
Definition: pciidex.h:198
UCHAR CacheLineSize
Definition: pciidex.h:182
PKINTERRUPT InterruptObject
Definition: pciidex.h:172
UCHAR RevisionID
Definition: pciidex.h:178
PUCHAR IoBase
Definition: pciidex.h:217
PVOID Channels[MAX_CHANNELS]
Definition: pciidex.h:234
PCONTROLLER_FREE_RESOURCES FreeResources
Definition: pciidex.h:204
PAHCI_COMMAND_TABLE CommandTable[AHCI_MAX_COMMAND_SLOTS]
Definition: pciidex.h:344
UCHAR LastFbsDeviceNumber
Definition: pciidex.h:346
ULONG TotalPortCount
Definition: pciidex.h:347
PAHCI_COMMAND_LIST CommandList
Definition: pciidex.h:343
PAHCI_RECEIVED_FIS ReceivedFis
Definition: pciidex.h:342
CHANNEL_INFO_AHCI Mem
Definition: pciidex.h:348
UCHAR LastPmpDeviceNumber
Definition: pciidex.h:345
PCHANNEL_PREPARE_IO PrepareIo
Definition: pciidex.h:246
PCHANNEL_SET_MODE_EX SetTransferMode
Definition: pciidex.h:244
ULONG TransferModeSupported
Definition: pciidex.h:251
struct _CHANNEL_DATA_COMMON::@1295 Current
PPORT_NOTIFICATION PortNotification
Definition: pciidex.h:287
PCHANNEL_PREPARE_PRD_TABLE PreparePrdTable
Definition: pciidex.h:245
PKINTERRUPT InterruptObject
Definition: pciidex.h:241
PCHANNEL_ALLOCATE_MEMORY AllocateMemory
Definition: pciidex.h:242
PPDO_DEVICE_EXTENSION PdoExt
Definition: pciidex.h:239
ULONG ActiveSlotsBitmap
Definition: pciidex.h:288
PDMA_ADAPTER DmaAdapter
Definition: pciidex.h:250
ULONG ActiveQueuedSlotsBitmap
Definition: pciidex.h:289
ULONG MaximumPhysicalPages
Definition: pciidex.h:259
CM_PARTIAL_RESOURCE_DESCRIPTOR InterruptDesc
Definition: pciidex.h:240
PATA_CONTROLLER Controller
Definition: pciidex.h:249
PATA_DEVICE_REQUEST * Slots
Definition: pciidex.h:290
ULONG MaximumTransferLength
Definition: pciidex.h:252
PCHANNEL_FREE_MEMORY FreeMemory
Definition: pciidex.h:243
PCHANNEL_ENABLE_INTERRUPTS EnableInterrupts
Definition: pciidex.h:248
PCHANNEL_START_IO StartIo
Definition: pciidex.h:247
PUCHAR DataBuffer
Definition: pciidex.h:305
PCHANNEL_CHECK_INTERRUPT CheckInterrupt
Definition: pciidex.h:304
PCHANNEL_READ_STATUS ReadStatus
Definition: pciidex.h:300
ULONG PrdTablePhysicalAddress
Definition: pciidex.h:302
ULONG DrqByteCount
Definition: pciidex.h:308
IDE_ACPI_TIMING_MODE_BLOCK CurrentTimingMode
Definition: pciidex.h:316
ULONG CommandFlags
Definition: pciidex.h:307
ULONG BytesToTransfer
Definition: pciidex.h:306
BOOLEAN IsPollingActive
Definition: pciidex.h:312
KDPC PollingTimerDpc
Definition: pciidex.h:313
PUCHAR HwExt[ANYSIZE_ARRAY]
Definition: pciidex.h:318
PPCIIDE_PRD_TABLE_ENTRY PrdTable
Definition: pciidex.h:301
PCHANNEL_SAVE_TASK_FILE SaveTaskFile
Definition: pciidex.h:299
PCHANNEL_LOAD_TASK_FILE LoadTaskFile
Definition: pciidex.h:298
PCHANNEL_WRITE_SCR ScrWrite
Definition: pciidex.h:315
IDE_REGISTERS Regs
Definition: pciidex.h:303
PCHANNEL_READ_SCR ScrRead
Definition: pciidex.h:314
ULONG64 CommandListPhys
Definition: pciidex.h:324
PVOID CommandListOriginal
Definition: pciidex.h:326
PHYSICAL_ADDRESS CommandListPhysOriginal
Definition: pciidex.h:331
ULONG CommandTableSize[AHCI_MAX_COMMAND_SLOTS]
Definition: pciidex.h:328
PVOID ReceivedFisOriginal
Definition: pciidex.h:325
ULONG CommandListSize
Definition: pciidex.h:329
PHYSICAL_ADDRESS ReceivedFisPhysOriginal
Definition: pciidex.h:330
PHYSICAL_ADDRESS CommandTablePhysOriginal[AHCI_MAX_COMMAND_SLOTS]
Definition: pciidex.h:332
ULONG64 ReceivedFisPhys
Definition: pciidex.h:323
PVOID CommandTableOriginal[AHCI_MAX_COMMAND_SLOTS]
Definition: pciidex.h:327
_Write_guarded_by_(_Global_interlock_) volatile LONG PageFiles
PDEVICE_OBJECT Self
Definition: pciidex.h:377
_Write_guarded_by_(_Global_interlock_) volatile LONG DumpFiles
PDEVICE_OBJECT LowerDeviceObject
Definition: pciidex.h:371
_Write_guarded_by_(_Global_interlock_) volatile LONG HibernateFiles
IO_REMOVE_LOCK RemoveLock
Definition: pciidex.h:382
IDE_CONTROLLER_PROPERTIES Properties
Definition: pciidex.h:397
LIST_ENTRY PdoListHead
Definition: precomp.h:256
FAST_MUTEX PdoListSyncMutex
Definition: pciidex.h:393
COMMON_DEVICE_EXTENSION Common
Definition: pci.h:84
PDRIVER_OBJECT DriverObject
Definition: pciidex.h:390
ATA_CONTROLLER Controller
Definition: pciidex.h:396
PUCHAR MiniControllerExtension[0]
Definition: pciidex.h:400
_Guarded_by_(PdoListSyncMutex) LIST_ENTRY PdoListHead
PDEVICE_OBJECT Pdo
Definition: i8042prt.h:128
Definition: ketypes.h:767
Definition: typedefs.h:120
ULONG MiniControllerExtensionSize
Definition: pciidex.h:354
PCONTROLLER_PROPERTIES HwGetControllerProperties
Definition: pciidex.h:353
Definition: pata.h:207
COMMON_DEVICE_EXTENSION Common
Definition: pci.h:59
PCHANNEL_DATA_COMMON ChanData
Definition: pciidex.h:413
LIST_ENTRY ListEntry
Definition: pciidex.h:415
uint32_t * PULONG
Definition: typedefs.h:59
unsigned char UCHAR
Definition: typedefs.h:53
#define ANYSIZE_ARRAY
Definition: typedefs.h:46
#define NTAPI
Definition: typedefs.h:36
uint16_t * PUSHORT
Definition: typedefs.h:56
uint32_t ULONG_PTR
Definition: typedefs.h:65
unsigned char * PUCHAR
Definition: typedefs.h:53
uint32_t ULONG
Definition: typedefs.h:59
_Must_inspect_result_ _In_ WDFDEVICE _In_ PUCX_CONTROLLER_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ UCXCONTROLLER * Controller
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFREQUEST Request
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2061
_In_ WDFCMRESLIST _In_ WDFCMRESLIST ResourcesTranslated
Definition: wdfdevice.h:891
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
Definition: wdfdevice.h:3777
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:413
#define FORCEINLINE
Definition: wdftypes.h:67
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:409
FAST_MUTEX
Definition: extypes.h:17
GET_SET_DEVICE_DATA * PGET_SET_DEVICE_DATA
Definition: iotypes.h:824
#define PCI_TYPE0_ADDRESSES
Definition: iotypes.h:3515
DRIVER_DISPATCH DRIVER_DISPATCH_RAISED
Definition: iotypes.h:2278
#define IRP_MJ_SYSTEM_CONTROL
* PDEVICE_CAPABILITIES
Definition: iotypes.h:965
#define IRP_MJ_POWER