ReactOS 0.4.17-dev-116-ga4b6fe9
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)(
73 _In_ PATA_CONTROLLER Controller,
75typedef CONTROLLER_CHANNEL_ENABLED *PCONTROLLER_CHANNEL_ENABLED;
76
78typedef VOID
79(CONTROLLER_START)(
80 _In_ PATA_CONTROLLER Controller);
81typedef CONTROLLER_START *PCONTROLLER_START;
82
84typedef VOID
85(CONTROLLER_STOP)(
86 _In_ PATA_CONTROLLER Controller);
87typedef CONTROLLER_STOP *PCONTROLLER_STOP;
88
89typedef VOID
91 _In_ PATA_CONTROLLER Controller);
93
94typedef NTSTATUS
96 _In_ PVOID ChannelContext,
97 _In_ BOOLEAN Attach);
99
101typedef VOID
102(CHANNEL_SET_MODE_EX)(
103 _In_ PATA_CONTROLLER Controller,
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 };
215
220
222 ULONG Flags;
223#define CTRL_FLAG_NATIVE_PCI 0x00000001
224#define CTRL_FLAG_IS_SIMPLEX 0x00000002
225#define CTRL_FLAG_SATA_HBA_ACPI 0x00000002
226#define CTRL_FLAG_USE_TEST_FUNCTION 0x00000004
227#define CTRL_FLAG_IS_AHCI 0x00000008
228#define CTRL_FLAG_NON_PNP 0x00000010
229#define CTRL_FLAG_MANUAL_RES 0x00000020
230#define CTRL_FLAG_DMA_INTERRUPT 0x00000040
231
235
237{
253 struct
254 {
260#define CHANNEL_FLAG_IO32 0x00000001
261#define CHANNEL_FLAG_DRIVE0_DMA_CAPABLE 0x00000002
262#define CHANNEL_FLAG_DRIVE1_DMA_CAPABLE 0x00000004
263#define CHANNEL_FLAG_CONTROL_PORT_BASE_MAPPED 0x00000008
264#define CHANNEL_FLAG_COMMAND_PORT_BASE_MAPPED 0x00000010
265#define CHANNEL_FLAG_DMA_PORT_BASE_MAPPED 0x00000020
266#define CHANNEL_FLAG_64_BIT_DMA 0x00000040
267#define CHANNEL_FLAG_PRIMARY_ADDRESS_CLAIMED 0x00000080
268#define CHANNEL_FLAG_SECONDARY_ADDRESS_CLAIMED 0x00000100
269#define CHANNEL_FLAG_PIO_VIA_DMA 0x00000200
270#define CHANNEL_FLAG_NO_SLAVE 0x00000400
271#define CHANNEL_FLAG_IS_EXTERNAL 0x00000800
272#define CHANNEL_FLAG_IS_PMP 0x00001000
273#define CHANNEL_FLAG_HAS_FBS 0x00002000
274#define CHANNEL_FLAG_FBS_ENABLED 0x00004000
275#define CHANNEL_FLAG_HAS_ACPI_GTM 0x00008000
276#define CHANNEL_FLAG_HAS_NCQ 0x00010000
277#define CHANNEL_FLAG_PIO_FOR_LBA48_XFER 0x00020000 // TODO: Not used yet
278#define CHANNEL_FLAG_NO_ATAPI_DMA 0x00040000
279#define CHANNEL_FLAG_DMA_BEFORE_CMD 0x00080000
280#define CHANNEL_FLAG_MRES_TF 0x00100000 // MRES_TF
281#define CHANNEL_FLAG_MRES_DMA 0x00200000 // MRES_DMA
282#define CHANNEL_FLAG_MRES_CTRL 0x00400000 // MRES_CTRL
283#define CHANNEL_FLAG_CBUS 0x80000000
284
291
292typedef struct _CHANNEL_DATA_PATA
293{
296
308#if defined(_M_IX86)
309 UCHAR LastAtaBankId;
310#endif
319
320typedef struct _CHANNEL_INFO_AHCI
321{
334
335typedef struct _CHANNEL_DATA_AHCI
336{
339
349
351{
355
356typedef struct _COMMON_DEVICE_EXTENSION
357{
358 _Write_guarded_by_(_Global_interlock_)
359 volatile LONG PageFiles;
360
361 _Write_guarded_by_(_Global_interlock_)
362 volatile LONG HibernateFiles;
363
364 _Write_guarded_by_(_Global_interlock_)
365 volatile LONG DumpFiles;
366
367 union
368 {
371
374 };
375
377
379#define DO_IS_FDO 0x80000000
380
383
384typedef struct _FDO_DEVICE_EXTENSION
385{
388
397
398 /* Must be the last entry */
401
402typedef struct _PDO_DEVICE_EXTENSION
403{
406
409#define PDO_FLAG_NOT_PRESENT 0x00000001
410#define PDO_FLAG_REPORTED_MISSING 0x00000002
411
413
416
417VOID
421 _In_ ULONG MmioFlags);
422
423#include "pata.h"
424
426
427/* acpi.c *********************************************************************/
428
433
440
441CODE_SEG("PAGE")
442PVOID
445
446CODE_SEG("PAGE")
447VOID
451
452/* fdo.c **********************************************************************/
453
454CODE_SEG("PAGE")
456
457CODE_SEG("PAGE")
459
460CODE_SEG("PAGE")
462
463CHANNEL_SET_MODE AtaCtrlSetTransferMode;
466
467CODE_SEG("PAGE")
469
470CODE_SEG("PAGE")
472
474VOID
476 _In_ PVOID ChannelContext,
478
479CODE_SEG("PAGE")
480PVOID
482 _In_ PATA_CONTROLLER Controller,
484 _In_ ULONG MinimumIoLength);
485
486CODE_SEG("PAGE")
489 _In_ PATA_CONTROLLER Controller,
491
492CODE_SEG("PAGE")
497
498/* miniport.c *****************************************************************/
499
500CODE_SEG("PAGE")
505
506/* pciidex.c ******************************************************************/
507
508CODE_SEG("PAGE")
509DRIVER_INITIALIZE DriverEntry;
510
511CODE_SEG("PAGE")
512DRIVER_UNLOAD PciIdeXUnload;
513
514CODE_SEG("PAGE")
515DRIVER_ADD_DEVICE PciIdeXAddDevice;
516
518CODE_SEG("PAGE")
519DRIVER_DISPATCH_PAGED PciIdeXDispatchWmi;
520
521IO_COMPLETION_ROUTINE PciIdeXPdoCompletionRoutine;
522
525 _In_ __callback PATA_PCI_MATCH_FN MatchFunction,
527
528VOID
529PciRead(
530 _In_ PATA_CONTROLLER Controller,
532 _In_ ULONG ConfigDataOffset,
534
535VOID
537 _In_ PATA_CONTROLLER Controller,
539 _In_ ULONG ConfigDataOffset,
541
542VOID
544
545CODE_SEG("PAGE")
549 _In_ PIRP Irp,
551
552CODE_SEG("PAGE")
556 _In_ PIRP Irp);
557
558CODE_SEG("PAGE")
562 _In_ PIRP Irp);
563
564/* pdo.c **********************************************************************/
565
567CODE_SEG("PAGE")
568DRIVER_DISPATCH_PAGED PciIdeXDispatchPnp;
569
570CODE_SEG("PAGE")
574 _In_ PIRP Irp,
575 _In_ BOOLEAN FinalRemove);
576
577/* power.c ********************************************************************/
578
581
582/* ahci_generic.c *************************************************************/
583
584CODE_SEG("PAGE")
587 _Inout_ PATA_CONTROLLER Controller);
588
589/* ahci_hw.c ******************************************************************/
590
595
596VOID
598 _In_ PCHANNEL_DATA_AHCI ChanData);
599
600VOID
602 _In_ PCHANNEL_DATA_AHCI ChanData,
604 _In_ BOOLEAN ProcessErrorStatus);
605
606VOID
608 _In_ PCHANNEL_DATA_AHCI ChanData);
609
610VOID
612 _In_ PCHANNEL_DATA_AHCI ChanData,
613 _In_ ULONG InterruptStatus);
614
617 _In_ PCHANNEL_DATA_AHCI ChanData);
618
619ULONG
621 _In_ PVOID ChannelContext);
622
623/* ahci_io.c ******************************************************************/
624
625CHANNEL_START_IO AtaAhciStartIo;
626CHANNEL_PREPARE_IO AtaAhciPrepareIo;
627CHANNEL_PREPARE_PRD_TABLE AtaAhciPreparePrdTable;
628CHANNEL_ALLOCATE_SLOT AtaAhciAllocateSlot;
629KSERVICE_ROUTINE AtaAhciHbaIsr;
630
631/* pata_generic.c *************************************************************/
632
633CHANNEL_SET_MODE_EX SataSetTransferMode;
634
635CODE_SEG("PAGE")
637
638VOID
642 _In_range_(>, 0) ULONG ClockPeriodPs,
644
645CODE_SEG("PAGE")
646VOID
648 _In_ PCHANNEL_DATA_PATA ChanData,
649 _In_ ULONG_PTR CommandPortBase,
650 _In_ ULONG_PTR ControlPortBase,
651 _In_ ULONG CommandBlockSpare);
652
653CODE_SEG("PAGE")
656 _In_ PATA_CONTROLLER Controller,
658
659CODE_SEG("PAGE")
662 _In_ PCHANNEL_DATA_PATA ChanData,
664
665CODE_SEG("PAGE")
666VOID
668 _In_ PVOID ChannelContext);
669
670CODE_SEG("PAGE")
673 _In_ PVOID ChannelContext);
674
675CODE_SEG("PAGE")
678 _In_ PATA_CONTROLLER Controller,
679 _In_ ULONG HwExtensionSize);
680
681CODE_SEG("PAGE")
684 _Inout_ PATA_CONTROLLER Controller);
685
686/* pata_hw.c ******************************************************************/
687
691
692ULONG
694 _In_ PVOID ChannelContext);
695
696/* pata_io.c ******************************************************************/
697
698CHANNEL_ALLOCATE_SLOT PataAllocateSlot;
699CHANNEL_PREPARE_PRD_TABLE PciIdePreparePrdTable;
700CHANNEL_PREPARE_IO PataPrepareIo;
701CHANNEL_START_IO PataStartIo;
702KSERVICE_ROUTINE PataChannelIsr;
703KSERVICE_ROUTINE PciIdeChannelIsr;
708KDEFERRED_ROUTINE PataPollingTimerDpc;
709
710VOID
715 _In_ ULONG MmioFlags);
716
717VOID
722 _In_ ULONG MmioFlags);
723
724VOID
729 _In_ ULONG MmioFlags);
730
731VOID
736 _In_ ULONG MmioFlags);
737
738UCHAR
741 _In_ ULONG MmioFlags);
742
743VOID
747 _In_ ULONG MmioFlags);
748
749VOID
751 _In_ PCHANNEL_DATA_PATA ChanData);
752
753/* misc ***********************************************************************/
754
755#if defined(ATA_DETECT_LEGACY_DEVICES)
756CODE_SEG("PAGE")
759 _Inout_ PATA_CONTROLLER Controller,
761#endif
762
763CODE_SEG("PAGE")
766 _Inout_ PATA_CONTROLLER Controller);
767
768CODE_SEG("PAGE")
771 _Inout_ PATA_CONTROLLER Controller);
772
773CODE_SEG("PAGE")
776 _Inout_ PATA_CONTROLLER Controller);
777
778CODE_SEG("PAGE")
781 _Inout_ PATA_CONTROLLER Controller);
782
783CODE_SEG("PAGE")
786 _Inout_ PATA_CONTROLLER Controller);
787
788CODE_SEG("PAGE")
791 _Inout_ PATA_CONTROLLER Controller);
792
793CODE_SEG("PAGE")
796 _Inout_ PATA_CONTROLLER Controller);
797
798CODE_SEG("PAGE")
801 _Inout_ PATA_CONTROLLER Controller);
802
803CODE_SEG("PAGE")
806 _Inout_ PATA_CONTROLLER Controller);
807
808CODE_SEG("PAGE")
811 _Inout_ PATA_CONTROLLER Controller);
812
813CHANNEL_SET_MODE_EX SvwSetTransferMode;
814
815CODE_SEG("PAGE")
818 _In_ PATA_CONTROLLER Controller,
820
821VOID
823 _Inout_ PATA_TIMING Timing);
824
826ULONG
828 _In_ ULONG x)
829{
830 x -= x >> 1 & 0x55555555;
831 x = (x & 0x33333333) + (x >> 2 & 0x33333333);
832
833 return ((x + (x >> 4)) & 0x0F0F0F0F) * 0x01010101 >> 24;
834}
835
839 _In_ ULONG x)
840{
841 /* Also exclude zero numbers */
842 return (x != 0) && ((x & (x - 1)) == 0);
843}
844
846UCHAR
848 _In_ PATA_CONTROLLER Controller,
849 _In_ ULONG ConfigDataOffset)
850{
852
853 PciRead(Controller, &Result, ConfigDataOffset, sizeof(Result));
854 return Result;
855}
856
858USHORT
860 _In_ PATA_CONTROLLER Controller,
861 _In_ ULONG ConfigDataOffset)
862{
864
865 PciRead(Controller, &Result, ConfigDataOffset, sizeof(Result));
866 return Result;
867}
868
870ULONG
872 _In_ PATA_CONTROLLER Controller,
873 _In_ ULONG ConfigDataOffset)
874{
876
877 PciRead(Controller, &Result, ConfigDataOffset, sizeof(Result));
878 return Result;
879}
880
882VOID
884 _In_ PATA_CONTROLLER Controller,
885 _In_ ULONG ConfigDataOffset,
887{
888 PciWrite(Controller, &Value, ConfigDataOffset, sizeof(Value));
889}
890
892VOID
894 _In_ PATA_CONTROLLER Controller,
895 _In_ ULONG ConfigDataOffset,
897{
898 PciWrite(Controller, &Value, ConfigDataOffset, sizeof(Value));
899}
900
902VOID
904 _In_ PATA_CONTROLLER Controller,
905 _In_ ULONG ConfigDataOffset,
907{
908 PciWrite(Controller, &Value, ConfigDataOffset, sizeof(Value));
909}
#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_ PIRP Irp
Definition: csq.h:116
#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:49
@ FdoExtension
Definition: precomp.h:48
#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
#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
unsigned __int64 ULONG64
Definition: imports.h:198
_In_ PIOMMU_DEVICE_PATH _In_ PIOMMU_SVM_CAPABILITIES DeviceCapabilities
Definition: haltypes.h:1824
#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:700
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:98
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:147
NTSTATUS PciIdeXFdoDispatchPnp(_In_ PFDO_DEVICE_EXTENSION FdoExtension, _Inout_ PIRP Irp)
Definition: fdo.c:910
CHANNEL_ENABLE_INTERRUPTS * PCHANNEL_ENABLE_INTERRUPTS
Definition: pciidex.h:122
FORCEINLINE UCHAR PciRead8(_In_ PATA_CONTROLLER Controller, _In_ ULONG ConfigDataOffset)
Definition: pciidex.h:847
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:468
NTSTATUS() CHANNEL_ALLOCATE_MEMORY(_In_ PVOID ChannelContext)
Definition: pciidex.h:109
CHANNEL_LOAD_TASK_FILE PataLoadTaskFile
Definition: pciidex.h:705
DRIVER_UNLOAD PciIdeXUnload
Definition: pciidex.h:512
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:626
NTSTATUS CmdGetControllerProperties(_Inout_ PATA_CONTROLLER Controller)
Definition: cmd.c:460
KDEFERRED_ROUTINE PataPollingTimerDpc
Definition: pciidex.h:708
_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:701
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:455
NTSTATUS PciIdeParseResources(_In_ PCHANNEL_DATA_PATA ChanData, _In_ PCM_RESOURCE_LIST ResourcesTranslated)
Definition: pata_generic.c:849
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:509
VOID AtaAhciHandleFatalError(_In_ PCHANNEL_DATA_AHCI ChanData)
Definition: ahci_hw.c:1397
CHANNEL_SET_MODE AtaCtrlSetTransferMode
Definition: pciidex.h:463
CHANNEL_CHECK_INTERRUPT * PCHANNEL_CHECK_INTERRUPT
Definition: pciidex.h:127
CHANNEL_IDENTIFY_DEVICE PataIdentifyDevice
Definition: pciidex.h:690
FORCEINLINE VOID PciWrite16(_In_ PATA_CONTROLLER Controller, _In_ ULONG ConfigDataOffset, _In_ USHORT Value)
Definition: pciidex.h:893
CHANNEL_ENUMERATE_CHANNEL PataEnumerateChannel
Definition: pciidex.h:689
CHANNEL_ALLOCATE_SLOT AtaAhciAllocateSlot
Definition: pciidex.h:628
CHANNEL_SET_DEVICE_DATA AtaCtrlSetDeviceData
Definition: pciidex.h:458
NTSTATUS PciIdeXPnpRepeatRequest(_In_ PCOMMON_DEVICE_EXTENSION CommonExt, _In_ PIRP Irp, _In_opt_ PDEVICE_CAPABILITIES DeviceCapabilities)
Definition: pciidex.c:156
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:515
KSERVICE_ROUTINE PciIdeChannelIsr
Definition: pciidex.h:703
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:593
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:883
CHANNEL_SAVE_TASK_FILE PataSaveTaskFile
Definition: pciidex.h:706
IDE_CHANNEL_STATE PciIdeGetChannelState(_In_ PATA_CONTROLLER Controller, _In_ ULONG Channel)
Definition: pata_generic.c:902
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:903
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:838
CONTROLLER_ATTACH_CHANNEL_EX PciIdeAttachChannel
Definition: pciidex.h:636
CHANNEL_ALLOCATE_SLOT PataAllocateSlot
Definition: pciidex.h:698
CHANNEL_ENABLE_INTERRUPTS AtaAhciEnableInterrupts
Definition: pciidex.h:591
FORCEINLINE USHORT PciRead16(_In_ PATA_CONTROLLER Controller, _In_ ULONG ConfigDataOffset)
Definition: pciidex.h:859
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:702
CHANNEL_DOWNGRADE_INTERFACE_SPEED AtaCtrlDowngradeInterfaceSpeed
Definition: pciidex.h:464
CHANNEL_SET_MODE_EX SataSetTransferMode
Definition: pciidex.h:633
CHANNEL_RESET_CHANNEL PataResetChannel
Definition: pciidex.h:688
NTSTATUS PciIdeConnectInterrupt(_In_ PVOID ChannelContext)
CHANNEL_CHECK_INTERRUPT PciIdeCheckInterrupt
Definition: pciidex.h:704
VOID PciIdeFreeResources(_In_ PVOID ChannelContext)
Definition: pata_generic.c:877
CHANNEL_SET_MODE_EX * PCHANNEL_SET_MODE_EX
Definition: pciidex.h:106
CHANNEL_READ_STATUS PataReadStatus
Definition: pciidex.h:707
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:521
VOID AtaAcpiSetDeviceData(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIDENTIFY_DEVICE_DATA IdBlock)
Definition: acpi.c:296
CHANNEL_WRITE_SCR * PCHANNEL_WRITE_SCR
Definition: pciidex.h:160
CHANNEL_ENUMERATE_CHANNEL AtaAhciEnumerateChannel
Definition: pciidex.h:592
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:212
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:827
struct _PCIIDEX_DRIVER_EXTENSION * PPCIIDEX_DRIVER_EXTENSION
CHANNEL_ABORT_CHANNEL AtaCtrlAbortChannel
Definition: pciidex.h:465
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:627
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:71
KSERVICE_ROUTINE AtaAhciHbaIsr
Definition: pciidex.h:629
CHANNEL_PREPARE_PRD_TABLE PciIdePreparePrdTable
Definition: pciidex.h:699
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:625
CHANNEL_RESET_CHANNEL AtaAhciResetChannel
Definition: pciidex.h:594
CONTROLLER_PNP_REMOVE_DEVICE PciIdeXFdoRemoveDevice
Definition: pciidex.h:471
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 SvwSetTransferMode
Definition: pciidex.h:813
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:461
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:249
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:871
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:678
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:663
#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
ULONG PortNumber
Definition: storport.c:18
_In_ PVOID Context
Definition: storport.h:2269
PGET_SET_DEVICE_DATA SetBusData
Definition: pciidex.h:197
PVOID IoBase
Definition: pciidex.h:194
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:218
ULONG AlignmentRequirement
Definition: pciidex.h:212
ULONG Length
Definition: pciidex.h:193
USHORT DeviceID
Definition: pciidex.h:176
USHORT SubVendorID
Definition: pciidex.h:183
ULONG AhciCapabilitiesEx
Definition: pciidex.h:219
ULONG QueueDepth
Definition: pciidex.h:221
PCONTROLLER_START Start
Definition: pciidex.h:202
PCONTROLLER_ATTACH_CHANNEL_EX AttachChannel
Definition: pciidex.h:205
PVOID ChanDataBlock
Definition: pciidex.h:200
CM_PARTIAL_RESOURCE_DESCRIPTOR InterruptDesc
Definition: pciidex.h:171
USHORT SubSystemID
Definition: pciidex.h:184
ULONG MaxChannels
Definition: pciidex.h:213
UCHAR BaseClass
Definition: pciidex.h:181
struct _ATA_CONTROLLER::@1180 AccessRange[PCI_TYPE0_ADDRESSES]
UCHAR ProgIf
Definition: pciidex.h:179
PVOID BusInterfaceContext
Definition: pciidex.h:199
KSPIN_LOCK Lock
Definition: pciidex.h:232
PCONTROLLER_STOP Stop
Definition: pciidex.h:203
struct _ATA_CONTROLLER::@1179 Pci
ULONG AhciVersion
Definition: pciidex.h:217
USHORT VendorID
Definition: pciidex.h:175
ULONG ChannelBitmap
Definition: pciidex.h:214
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:216
PVOID Channels[MAX_CHANNELS]
Definition: pciidex.h:233
PCONTROLLER_FREE_RESOURCES FreeResources
Definition: pciidex.h:204
PAHCI_COMMAND_TABLE CommandTable[AHCI_MAX_COMMAND_SLOTS]
Definition: pciidex.h:343
UCHAR LastFbsDeviceNumber
Definition: pciidex.h:345
ULONG TotalPortCount
Definition: pciidex.h:346
PAHCI_COMMAND_LIST CommandList
Definition: pciidex.h:342
PAHCI_RECEIVED_FIS ReceivedFis
Definition: pciidex.h:341
CHANNEL_INFO_AHCI Mem
Definition: pciidex.h:347
UCHAR LastPmpDeviceNumber
Definition: pciidex.h:344
PCHANNEL_PREPARE_IO PrepareIo
Definition: pciidex.h:245
PCHANNEL_SET_MODE_EX SetTransferMode
Definition: pciidex.h:243
ULONG TransferModeSupported
Definition: pciidex.h:250
PPORT_NOTIFICATION PortNotification
Definition: pciidex.h:286
struct _CHANNEL_DATA_COMMON::@1183 Current
PCHANNEL_PREPARE_PRD_TABLE PreparePrdTable
Definition: pciidex.h:244
PKINTERRUPT InterruptObject
Definition: pciidex.h:240
PCHANNEL_ALLOCATE_MEMORY AllocateMemory
Definition: pciidex.h:241
PPDO_DEVICE_EXTENSION PdoExt
Definition: pciidex.h:238
ULONG ActiveSlotsBitmap
Definition: pciidex.h:287
PDMA_ADAPTER DmaAdapter
Definition: pciidex.h:249
ULONG ActiveQueuedSlotsBitmap
Definition: pciidex.h:288
ULONG MaximumPhysicalPages
Definition: pciidex.h:258
CM_PARTIAL_RESOURCE_DESCRIPTOR InterruptDesc
Definition: pciidex.h:239
PATA_CONTROLLER Controller
Definition: pciidex.h:248
PATA_DEVICE_REQUEST * Slots
Definition: pciidex.h:289
ULONG MaximumTransferLength
Definition: pciidex.h:251
PCHANNEL_FREE_MEMORY FreeMemory
Definition: pciidex.h:242
PCHANNEL_ENABLE_INTERRUPTS EnableInterrupts
Definition: pciidex.h:247
PCHANNEL_START_IO StartIo
Definition: pciidex.h:246
PUCHAR DataBuffer
Definition: pciidex.h:304
PCHANNEL_CHECK_INTERRUPT CheckInterrupt
Definition: pciidex.h:303
PCHANNEL_READ_STATUS ReadStatus
Definition: pciidex.h:299
ULONG PrdTablePhysicalAddress
Definition: pciidex.h:301
ULONG DrqByteCount
Definition: pciidex.h:307
IDE_ACPI_TIMING_MODE_BLOCK CurrentTimingMode
Definition: pciidex.h:315
ULONG CommandFlags
Definition: pciidex.h:306
ULONG BytesToTransfer
Definition: pciidex.h:305
BOOLEAN IsPollingActive
Definition: pciidex.h:311
KDPC PollingTimerDpc
Definition: pciidex.h:312
PUCHAR HwExt[ANYSIZE_ARRAY]
Definition: pciidex.h:317
PPCIIDE_PRD_TABLE_ENTRY PrdTable
Definition: pciidex.h:300
PCHANNEL_SAVE_TASK_FILE SaveTaskFile
Definition: pciidex.h:298
PCHANNEL_LOAD_TASK_FILE LoadTaskFile
Definition: pciidex.h:297
PCHANNEL_WRITE_SCR ScrWrite
Definition: pciidex.h:314
IDE_REGISTERS Regs
Definition: pciidex.h:302
PCHANNEL_READ_SCR ScrRead
Definition: pciidex.h:313
ULONG64 CommandListPhys
Definition: pciidex.h:323
PVOID CommandListOriginal
Definition: pciidex.h:325
PHYSICAL_ADDRESS CommandListPhysOriginal
Definition: pciidex.h:330
ULONG CommandTableSize[AHCI_MAX_COMMAND_SLOTS]
Definition: pciidex.h:327
PVOID ReceivedFisOriginal
Definition: pciidex.h:324
ULONG CommandListSize
Definition: pciidex.h:328
PHYSICAL_ADDRESS ReceivedFisPhysOriginal
Definition: pciidex.h:329
PHYSICAL_ADDRESS CommandTablePhysOriginal[AHCI_MAX_COMMAND_SLOTS]
Definition: pciidex.h:331
ULONG64 ReceivedFisPhys
Definition: pciidex.h:322
PVOID CommandTableOriginal[AHCI_MAX_COMMAND_SLOTS]
Definition: pciidex.h:326
_Write_guarded_by_(_Global_interlock_) volatile LONG PageFiles
PDEVICE_OBJECT Self
Definition: pciidex.h:376
_Write_guarded_by_(_Global_interlock_) volatile LONG DumpFiles
PDEVICE_OBJECT LowerDeviceObject
Definition: pciidex.h:370
_Write_guarded_by_(_Global_interlock_) volatile LONG HibernateFiles
IO_REMOVE_LOCK RemoveLock
Definition: pciidex.h:381
IDE_CONTROLLER_PROPERTIES Properties
Definition: pciidex.h:396
LIST_ENTRY PdoListHead
Definition: precomp.h:116
FAST_MUTEX PdoListSyncMutex
Definition: pciidex.h:392
COMMON_DEVICE_EXTENSION Common
Definition: pci.h:84
PDRIVER_OBJECT DriverObject
Definition: pciidex.h:389
ATA_CONTROLLER Controller
Definition: pciidex.h:395
PUCHAR MiniControllerExtension[0]
Definition: pciidex.h:399
_Guarded_by_(PdoListSyncMutex) LIST_ENTRY PdoListHead
PDEVICE_OBJECT Pdo
Definition: i8042prt.h:128
Definition: ketypes.h:751
Definition: typedefs.h:120
ULONG MiniControllerExtensionSize
Definition: pciidex.h:353
PCONTROLLER_PROPERTIES HwGetControllerProperties
Definition: pciidex.h:352
Definition: pata.h:206
COMMON_DEVICE_EXTENSION Common
Definition: pci.h:59
PCHANNEL_DATA_COMMON ChanData
Definition: pciidex.h:412
LIST_ENTRY ListEntry
Definition: pciidex.h:414
uint32_t * PULONG
Definition: typedefs.h:59
unsigned char UCHAR
Definition: typedefs.h:53
#define ANYSIZE_ARRAY
Definition: typedefs.h:46
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
_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
_In_ WDFREQUEST Request
Definition: wdfdevice.h:547
_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
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
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:3502
DRIVER_DISPATCH DRIVER_DISPATCH_RAISED
Definition: iotypes.h:2265
#define IRP_MJ_SYSTEM_CONTROL
* PDEVICE_CAPABILITIES
Definition: iotypes.h:965
#define IRP_MJ_POWER