24 Controller->Start(Controller);
37 Controller->Stop(Controller);
101 DiscoveredNewDevice =
TRUE;
104 Device->SupportedModes &= ChanData->
Current.TransferModeSupported;
220 if (DisableInterrupts)
260 if (MinimumIoLength != 0)
262 if (Controller->AccessRange[
Index].Length < MinimumIoLength)
264 ERR(
"%04X:%04X.%02X: Unexpected PCI BAR #%lu length 0x%lx, minimum required 0x%lx\n",
265 Controller->Pci.VendorID,
266 Controller->Pci.DeviceID,
267 Controller->Pci.RevisionID,
269 Controller->AccessRange[
Index].Length,
284 Controller->AccessRange[
Index].Length,
288 return Controller->AccessRange[
Index].IoBase;
302 ULONG IoBase = PciData->u.type0.BaseAddresses[*
Bar];
305 IoBase &= ~PCI_ADDRESS_IO_SPACE;
341 RtlCopyMemory(&Controller->InterruptDesc, Desc,
sizeof(*Desc));
349 ULONG CurrBar, NextBar;
358 CurrBar = PciData->
u.type0.BaseAddresses[
Bar];
360 NextBar = PciData->
u.type0.BaseAddresses[
Bar + 1];
372 INFO(
"BAR[%lu]: I/O %I64X Len %lX\n",
376 Controller->AccessRange[
Bar].Length = Desc->
u.
Port.Length;
388 if (Desc->
u.
Memory.Start.HighPart != NextBar)
393 if (Desc->
u.
Memory.Start.HighPart != 0)
397 INFO(
"BAR[%lu]: MEM %I64X Len %lX\n",
401 Controller->AccessRange[
Bar].Length = Desc->
u.
Memory.Length;
417 Controller->Pci.VendorID = PciData->VendorID;
418 Controller->Pci.DeviceID = PciData->DeviceID;
419 Controller->Pci.Command = PciData->Command;
420 Controller->Pci.RevisionID = PciData->RevisionID;
421 Controller->Pci.ProgIf = PciData->ProgIf;
422 Controller->Pci.SubClass = PciData->SubClass;
423 Controller->Pci.BaseClass = PciData->BaseClass;
424 Controller->Pci.CacheLineSize = PciData->CacheLineSize;
425 Controller->Pci.SubVendorID = PciData->u.type0.SubVendorID;
426 Controller->Pci.SubSystemID = PciData->u.type0.SubSystemID;
479#if defined(ATA_DETECT_LEGACY_DEVICES)
490 ERR(
"Failed to collect PCI information 0x%lx\n",
Status);
494 INFO(
"Starting controller %04X:%04X.%02X-%04X.%04X-%02X.%02X.%02X\n",
495 Controller->
Pci.VendorID,
496 Controller->
Pci.DeviceID,
497 Controller->
Pci.RevisionID,
498 Controller->
Pci.SubVendorID,
499 Controller->
Pci.SubSystemID,
500 Controller->
Pci.BaseClass,
501 Controller->
Pci.SubClass,
502 Controller->
Pci.ProgIf);
510 ERR(
"Failed to match ATA controller with status %lx\n",
Status);
514 if (Controller->
Start)
531 if (Controller->
Stop)
562 if (Controller->
HwExt)
598 ListEntry = ListEntry->
Flink)
622 WCHAR DeviceNameBuffer[
sizeof(
"\\Device\\Ide\\PciIde99999Channel99-FFF")];
626 static ULONG PdoNumber = 0;
631 sizeof(DeviceNameBuffer),
632 L"\\Device\\Ide\\PciIde%luChannel%lu-%lx",
648 ERR(
"Failed to create PDO 0x%lx\n",
Status);
672 Pdo->Flags &= ~DO_DEVICE_INITIALIZING;
710 if (!DeviceRelations)
716 for (ListEntry = FdoExt->PdoListHead.
Flink;
717 ListEntry != &FdoExt->PdoListHead;
718 ListEntry = ListEntry->
Flink)
732 INFO(
"%04X:%04X.%02X: Skip disabled channel %lu\n",
733 Controller->
Pci.VendorID,
734 Controller->
Pci.DeviceID,
735 Controller->
Pci.RevisionID,
750 if (!(ChannelBitmap & (1 <<
i)))
756 INFO(
"%04X:%04X.%02X: Skip disabled channel %lu\n",
757 Controller->
Pci.VendorID,
758 Controller->
Pci.DeviceID,
759 Controller->
Pci.RevisionID,
776 DeviceRelations->
Count = 0;
777 for (ListEntry = FdoExt->PdoListHead.
Flink;
778 ListEntry != &FdoExt->PdoListHead;
779 ListEntry = ListEntry->
Flink)
810 &GUID_TRANSLATOR_INTERFACE_STANDARD))
814 CM_RESOURCE_TYPE ResourceType;
821 if (IoStack->Parameters.QueryInterface.Size <
sizeof(*TranslatorInterface))
824 ResourceType =
PtrToUlong(IoStack->Parameters.QueryInterface.InterfaceSpecificData);
833 sizeof(*TranslatorInterface),
834 IoStack->Parameters.QueryInterface.Version,
854 switch (IoStack->Parameters.QueryId.IdType)
872 static const WCHAR IdeGenericId[] =
L"*PNP0600\0";
883 INFO(
"Hardware/Compatible ID: '%S'\n",
Buffer);
#define ExAllocatePoolUninitialized
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
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)
VOID AtaAcpiSetDeviceData(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIDENTIFY_DEVICE_DATA IdBlock)
PVOID AtaAcpiGetTaskFile(_In_ PDEVICE_OBJECT DeviceObject)
FORCEINLINE ULONG AHCI_PORT_READ(_In_ PVOID PortIoBase, _In_ AHCI_PORT_REGISTER Register)
NTSTATUS AhciGetControllerProperties(_Inout_ PATA_CONTROLLER Controller)
BOOLEAN AtaAhciDowngradeInterfaceSpeed(_In_ PCHANNEL_DATA_AHCI ChanData)
#define ATA_MIN_BUFFER_ALIGNMENT
#define FILE_DEVICE_SECURE_OPEN
VOID NTAPI IoDeleteController(IN PCONTROLLER_OBJECT ControllerObject)
#define STATUS_NOT_SUPPORTED
#define NT_SUCCESS(StatCode)
NTSYSAPI BOOLEAN InitSafeBootMode
VOID CompleteIrp(IN PIRP Irp, IN NTSTATUS Status, IN ULONG_PTR Information)
#define InsertTailList(ListHead, Entry)
#define KeReleaseSpinLock(sl, irql)
#define KeAcquireSpinLock(sl, irql)
#define KeGetCurrentIrql()
union Alignment_ Alignment
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
VOID NTAPI MmUnmapIoSpace(IN PVOID BaseAddress, IN SIZE_T NumberOfBytes)
PVOID NTAPI MmMapIoSpace(IN PHYSICAL_ADDRESS PhysicalAddress, IN SIZE_T NumberOfBytes, IN MEMORY_CACHING_TYPE CacheType)
#define ExFreePoolWithTag(_P, _T)
static BOOL StartDevice(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DevInfoData OPTIONAL, IN BOOL bEnable, IN DWORD HardwareProfile OPTIONAL, OUT BOOL *bNeedReboot OPTIONAL)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define RTL_SIZEOF_THROUGH_FIELD(type, field)
_In_ ULONGLONG _In_ ULONGLONG _In_ BOOLEAN Enable
#define IRP_MN_SURPRISE_REMOVAL
#define IoSkipCurrentIrpStackLocation(Irp)
NTSTATUS NTAPI IoCreateDevice(IN PDRIVER_OBJECT DriverObject, IN ULONG DeviceExtensionSize, IN PUNICODE_STRING DeviceName, IN DEVICE_TYPE DeviceType, IN ULONG DeviceCharacteristics, IN BOOLEAN Exclusive, OUT PDEVICE_OBJECT *DeviceObject)
VOID NTAPI IoDetachDevice(IN PDEVICE_OBJECT TargetDevice)
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
#define IoCompleteRequest
BOOLEAN NTAPI IoForwardIrpSynchronously(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
KIRQL NTAPI KeAcquireInterruptSpinLock(IN PKINTERRUPT Interrupt)
VOID NTAPI KeReleaseInterruptSpinLock(IN PKINTERRUPT Interrupt, IN KIRQL OldIrql)
NTSTRSAFEVAPI RtlStringCbPrintfW(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PWSTR pszDest, _In_ size_t cbDest, _In_ _Printf_format_string_ NTSTRSAFE_PCWSTR pszFormat,...)
IDE_CHANNEL_STATE PciIdeGetChannelState(_In_ PATA_CONTROLLER Controller, _In_ ULONG Channel)
NTSTATUS PataGetControllerProperties(_Inout_ PATA_CONTROLLER Controller, _In_ PCM_RESOURCE_LIST ResourcesTranslated)
NTSTATUS NTAPI PciIdeGetControllerProperties(IN PVOID DeviceExtension, OUT PIDE_CONTROLLER_PROPERTIES ControllerProperties)
NTSTATUS PciIdeXPnpQueryDeviceUsageNotification(_In_ PCOMMON_DEVICE_EXTENSION CommonExt, _In_ PIRP Irp)
NTSTATUS PciIdeXPnpQueryPnpDeviceState(_In_ PCOMMON_DEVICE_EXTENSION CommonExt, _In_ PIRP Irp)
#define CTRL_FLAG_NATIVE_PCI
#define PDO_FLAG_REPORTED_MISSING
struct _CHANNEL_DATA_AHCI * PCHANNEL_DATA_AHCI
CONTROLLER_PNP_START_DEVICE PciIdeXFdoStartDevice
#define CHANNEL_FLAG_NO_ATAPI_DMA
CONTROLLER_ATTACH_CHANNEL AtaCtrlAttachChannel
CHANNEL_SET_MODE AtaCtrlSetTransferMode
#define CTRL_FLAG_NON_PNP
CHANNEL_SET_DEVICE_DATA AtaCtrlSetDeviceData
NTSTATUS PciIdeXPdoRemoveDevice(_In_ PPDO_DEVICE_EXTENSION PdoExtension, _In_ PIRP Irp, _In_ BOOLEAN FinalRemove)
CONTROLLER_ATTACH_CHANNEL_EX PciIdeAttachChannel
#define PDO_FLAG_NOT_PRESENT
#define CTRL_FLAG_SATA_HBA_ACPI
CHANNEL_DOWNGRADE_INTERFACE_SPEED AtaCtrlDowngradeInterfaceSpeed
#define CHANNEL_FLAG_PIO_VIA_DMA
#define CTRL_FLAG_IS_AHCI
CHANNEL_ABORT_CHANNEL AtaCtrlAbortChannel
CONTROLLER_PNP_REMOVE_DEVICE PciIdeXFdoRemoveDevice
#define CHANNEL_FLAG_HAS_ACPI_GTM
CHANNEL_GET_INIT_TASK_FILE AtaCtrlGetInitTaskFile
#define FILE_DEVICE_CONTROLLER
#define CmResourceTypeMemory
#define CmResourceTypePort
#define CmResourceTypeInterrupt
unsigned char _BitScanReverse(unsigned long *_Index, unsigned long _Mask)
#define DECLSPEC_NOINLINE_FROM_PAGED
NTSTATUS PciIdeXFdoDispatchPnp(_In_ PFDO_DEVICE_EXTENSION FdoExtension, _Inout_ PIRP Irp)
static NTSTATUS AtaCtrlPciCollectInformation(_In_ PFDO_DEVICE_EXTENSION FdoExt, _In_ PCM_RESOURCE_LIST ResourcesTranslated)
static PPDO_DEVICE_EXTENSION PciIdeXPdoCreateDevice(_In_ PFDO_DEVICE_EXTENSION FdoExtension, _In_ ULONG ChannelNumber)
static NTSTATUS PciIdeXFdoQueryBusRelations(_In_ PFDO_DEVICE_EXTENSION FdoExt, _In_ PIRP Irp)
static NTSTATUS PciIdeXFdoQueryInterface(_In_ PFDO_DEVICE_EXTENSION FdoExtension, _In_ PIO_STACK_LOCATION IoStack)
VOID DumpTestMiniport(_Inout_ PFDO_DEVICE_EXTENSION FdoExt)
DECLSPEC_NOINLINE_FROM_PAGED VOID AtaChanEnableInterruptsSync(_In_ PVOID ChannelContext, _In_ BOOLEAN Enable)
static VOID AtaCtrlPciAssignResources(_In_ PATA_CONTROLLER Controller, _In_ PCM_RESOURCE_LIST ResourcesTranslated, _In_ PPCI_COMMON_HEADER PciData)
static NTSTATUS PciIdeXFdoQueryId(_In_ PFDO_DEVICE_EXTENSION FdoExt, _In_ PIRP Irp, _In_ PIO_STACK_LOCATION IoStack)
static DECLSPEC_NOINLINE_FROM_PAGED VOID AtaCtrlCallStopController(_In_ PATA_CONTROLLER Controller)
static NTSTATUS PciIdeXFdoStopDevice(_In_ PFDO_DEVICE_EXTENSION FdoExtension)
static VOID PciIdeXFdoFreeResources(_In_ PFDO_DEVICE_EXTENSION FdoExtension)
static VOID AtaCtrlPciSaveData(_Out_ PATA_CONTROLLER Controller, _In_ PPCI_COMMON_HEADER PciData)
static DECLSPEC_NOINLINE_FROM_PAGED VOID AtaCtrlCallStartController(_In_ PATA_CONTROLLER Controller)
static BOOLEAN AtaCtrlPciGetNextBarIndex(_In_ PPCI_COMMON_HEADER PciData, _Inout_ PULONG Bar)
PVOID AtaCtrlPciMapBar(_In_ PATA_CONTROLLER Controller, _In_range_(0, PCI_TYPE0_ADDRESSES) ULONG Index, _In_ ULONG MinimumIoLength)
IDE_CHANNEL_STATE PciIdeXGetChannelState(_In_ PATA_CONTROLLER Controller, _In_ ULONG Channel)
PCONTROLLER_OBJECT HwSyncObject
ULONG AlignmentRequirement
PCONTROLLER_ATTACH_CHANNEL_EX AttachChannel
CM_PARTIAL_RESOURCE_DESCRIPTOR InterruptDesc
struct _ATA_CONTROLLER::@1180 AccessRange[PCI_TYPE0_ADDRESSES]
PVOID BusInterfaceContext
struct _ATA_CONTROLLER::@1179 Pci
const ATA_PCI_ENABLE_BITS * ChannelEnableBits
PGET_SET_DEVICE_DATA GetBusData
PKINTERRUPT InterruptObject
PCONTROLLER_FREE_RESOURCES FreeResources
PCHANNEL_SET_MODE_EX SetTransferMode
struct _CHANNEL_DATA_COMMON::@1183 Current
PKINTERRUPT InterruptObject
ULONG ActiveQueuedSlotsBitmap
PATA_CONTROLLER Controller
PCHANNEL_ENABLE_INTERRUPTS EnableInterrupts
IDE_ACPI_TIMING_MODE_BLOCK CurrentTimingMode
union _CM_PARTIAL_RESOURCE_DESCRIPTOR::@384 u
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@384::@386 Port
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@384::@389 Memory
PDEVICE_OBJECT Objects[1]
FAST_MUTEX PdoListSyncMutex
ATA_CONTROLLER Controller
union _IO_STACK_LOCATION::@1696 Parameters
struct _IO_STACK_LOCATION::@4454::@4479 QueryDeviceRelations
struct _LIST_ENTRY * Flink
COMMON_DEVICE_EXTENSION Common
#define FIELD_OFFSET(t, f)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_IO_DEVICE_ERROR
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
PUSBHUB_PORT_PDO_EXTENSION NTAPI PdoExt(IN PDEVICE_OBJECT DeviceObject)
_Must_inspect_result_ _In_ WDFDEVICE Device
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ PDEVICE_OBJECT DeviceObject
_In_ WDFCMRESLIST _In_ WDFCMRESLIST ResourcesTranslated
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesRead
WDF_EXTERN_C_START typedef _Must_inspect_result_ _In_ WDFDRIVER _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_ PDEVICE_OBJECT _In_opt_ PDEVICE_OBJECT _In_opt_ PDEVICE_OBJECT Pdo
#define IsEqualGUIDAligned(guid1, guid2)
#define HalGetInterruptTranslator
#define IoAcquireRemoveLock(RemoveLock, Tag)
#define IoReleaseRemoveLockAndWait(_RemoveLock, _Tag)
#define IoReleaseRemoveLock(_RemoveLock, _Tag)
#define IoInitializeRemoveLock(Lock, AllocateTag, MaxLockedMinutes, HighWatermark)
#define IRP_MN_CANCEL_STOP_DEVICE
#define IRP_MN_QUERY_PNP_DEVICE_STATE
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
#define PCI_WHICHSPACE_CONFIG
#define PCI_ADDRESS_IO_ADDRESS_MASK
#define IRP_MN_QUERY_INTERFACE
#define PCI_TYPE0_ADDRESSES
#define IRP_MN_START_DEVICE
#define IRP_MN_DEVICE_USAGE_NOTIFICATION
#define PCI_ADDRESS_IO_SPACE
#define IRP_MN_REMOVE_DEVICE
#define IRP_MN_QUERY_DEVICE_RELATIONS
#define PCI_ADDRESS_MEMORY_ADDRESS_MASK
#define IRP_MN_QUERY_STOP_DEVICE
struct _PCI_COMMON_HEADER * PPCI_COMMON_HEADER
#define IRP_MN_CANCEL_REMOVE_DEVICE
#define PCI_ADDRESS_MEMORY_PREFETCHABLE
#define IRP_MN_STOP_DEVICE
#define PCI_ADDRESS_MEMORY_TYPE_MASK
struct _TRANSLATOR_INTERFACE * PTRANSLATOR_INTERFACE
#define IRP_MN_QUERY_REMOVE_DEVICE
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
#define ObReferenceObject