Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenpci.h
Go to the documentation of this file.
00001 /* 00002 * PROJECT: ReactOS PCI Bus Driver 00003 * LICENSE: BSD - See COPYING.ARM in the top level directory 00004 * FILE: drivers/bus/pci/pci.h 00005 * PURPOSE: Main Header File 00006 * PROGRAMMERS: ReactOS Portable Systems Group 00007 */ 00008 00009 #include <initguid.h> 00010 #include <ntifs.h> 00011 #include <ntagp.h> 00012 #include <wdmguid.h> 00013 #include <wchar.h> 00014 #include <acpiioct.h> 00015 #include <drivers/pci/pci.h> 00016 #include <drivers/acpi/acpi.h> 00017 #include "halfuncs.h" 00018 #include "rtlfuncs.h" 00019 #include "vffuncs.h" 00020 #include "bugcodes.h" 00021 00022 // 00023 // Tag used in all pool allocations (Pci Bus) 00024 // 00025 #define PCI_POOL_TAG 'BicP' 00026 00027 // 00028 // Checks if the specified FDO is the FDO for the Root PCI Bus 00029 // 00030 #define PCI_IS_ROOT_FDO(x) ((x)->BusRootFdoExtension == x) 00031 00032 // 00033 // Assertions to make sure we are dealing with the right kind of extension 00034 // 00035 #define ASSERT_FDO(x) ASSERT((x)->ExtensionType == PciFdoExtensionType); 00036 #define ASSERT_PDO(x) ASSERT((x)->ExtensionType == PciPdoExtensionType); 00037 00038 // 00039 // PCI Hack Entry Name Lengths 00040 // 00041 #define PCI_HACK_ENTRY_SIZE sizeof(L"VVVVdddd") - sizeof(UNICODE_NULL) 00042 #define PCI_HACK_ENTRY_REV_SIZE sizeof(L"VVVVddddRR") - sizeof(UNICODE_NULL) 00043 #define PCI_HACK_ENTRY_SUBSYS_SIZE sizeof(L"VVVVddddssssIIII") - sizeof(UNICODE_NULL) 00044 #define PCI_HACK_ENTRY_FULL_SIZE sizeof(L"VVVVddddssssIIIIRR") - sizeof(UNICODE_NULL) 00045 00046 // 00047 // PCI Hack Entry Flags 00048 // 00049 #define PCI_HACK_HAS_REVISION_INFO 0x01 00050 #define PCI_HACK_HAS_SUBSYSTEM_INFO 0x02 00051 00052 // 00053 // PCI Interface Flags 00054 // 00055 #define PCI_INTERFACE_PDO 0x01 00056 #define PCI_INTERFACE_FDO 0x02 00057 #define PCI_INTERFACE_ROOT 0x04 00058 00059 // 00060 // PCI Skip Function Flags 00061 // 00062 #define PCI_SKIP_DEVICE_ENUMERATION 0x01 00063 #define PCI_SKIP_RESOURCE_ENUMERATION 0x02 00064 00065 // 00066 // PCI Apply Hack Flags 00067 // 00068 #define PCI_HACK_FIXUP_BEFORE_CONFIGURATION 0x00 00069 #define PCI_HACK_FIXUP_AFTER_CONFIGURATION 0x01 00070 #define PCI_HACK_FIXUP_BEFORE_UPDATE 0x03 00071 00072 // 00073 // PCI Debugging Device Support 00074 // 00075 #define MAX_DEBUGGING_DEVICES_SUPPORTED 0x04 00076 00077 // 00078 // PCI Driver Verifier Failures 00079 // 00080 #define PCI_VERIFIER_CODES 0x04 00081 00082 // 00083 // PCI ID Buffer ANSI Strings 00084 // 00085 #define MAX_ANSI_STRINGS 0x08 00086 00087 // 00088 // Device Extension, Interface, Translator and Arbiter Signatures 00089 // 00090 typedef enum _PCI_SIGNATURE 00091 { 00092 PciPdoExtensionType = 'icP0', 00093 PciFdoExtensionType = 'icP1', 00094 PciArb_Io = 'icP2', 00095 PciArb_Memory = 'icP3', 00096 PciArb_Interrupt = 'icP4', 00097 PciArb_BusNumber = 'icP5', 00098 PciTrans_Interrupt = 'icP6', 00099 PciInterface_BusHandler = 'icP7', 00100 PciInterface_IntRouteHandler = 'icP8', 00101 PciInterface_PciCb = 'icP9', 00102 PciInterface_LegacyDeviceDetection = 'icP:', 00103 PciInterface_PmeHandler = 'icP;', 00104 PciInterface_DevicePresent = 'icP<', 00105 PciInterface_NativeIde = 'icP=', 00106 PciInterface_AgpTarget = 'icP>', 00107 PciInterface_Location = 'icP?' 00108 } PCI_SIGNATURE, *PPCI_SIGNATURE; 00109 00110 // 00111 // Driver-handled PCI Device Types 00112 // 00113 typedef enum _PCI_DEVICE_TYPES 00114 { 00115 PciTypeInvalid, 00116 PciTypeHostBridge, 00117 PciTypePciBridge, 00118 PciTypeCardbusBridge, 00119 PciTypeDevice 00120 } PCI_DEVICE_TYPES; 00121 00122 // 00123 // Device Extension Logic States 00124 // 00125 typedef enum _PCI_STATE 00126 { 00127 PciNotStarted, 00128 PciStarted, 00129 PciDeleted, 00130 PciStopped, 00131 PciSurpriseRemoved, 00132 PciSynchronizedOperation, 00133 PciMaxObjectState 00134 } PCI_STATE; 00135 00136 // 00137 // IRP Dispatch Logic Style 00138 // 00139 typedef enum _PCI_DISPATCH_STYLE 00140 { 00141 IRP_COMPLETE, 00142 IRP_DOWNWARD, 00143 IRP_UPWARD, 00144 IRP_DISPATCH, 00145 } PCI_DISPATCH_STYLE; 00146 00147 // 00148 // PCI Hack Entry Information 00149 // 00150 typedef struct _PCI_HACK_ENTRY 00151 { 00152 USHORT VendorID; 00153 USHORT DeviceID; 00154 USHORT SubVendorID; 00155 USHORT SubSystemID; 00156 ULONGLONG HackFlags; 00157 USHORT RevisionID; 00158 UCHAR Flags; 00159 } PCI_HACK_ENTRY, *PPCI_HACK_ENTRY; 00160 00161 // 00162 // Power State Information for Device Extension 00163 // 00164 typedef struct _PCI_POWER_STATE 00165 { 00166 SYSTEM_POWER_STATE CurrentSystemState; 00167 DEVICE_POWER_STATE CurrentDeviceState; 00168 SYSTEM_POWER_STATE SystemWakeLevel; 00169 DEVICE_POWER_STATE DeviceWakeLevel; 00170 DEVICE_POWER_STATE SystemStateMapping[7]; 00171 PIRP WaitWakeIrp; 00172 PVOID SavedCancelRoutine; 00173 LONG Paging; 00174 LONG Hibernate; 00175 LONG CrashDump; 00176 } PCI_POWER_STATE, *PPCI_POWER_STATE; 00177 00178 // 00179 // Internal PCI Lock Structure 00180 // 00181 typedef struct _PCI_LOCK 00182 { 00183 LONG Atom; 00184 BOOLEAN OldIrql; 00185 } PCI_LOCK, *PPCI_LOCK; 00186 00187 // 00188 // Device Extension for a Bus FDO 00189 // 00190 typedef struct _PCI_FDO_EXTENSION 00191 { 00192 SINGLE_LIST_ENTRY List; 00193 ULONG ExtensionType; 00194 struct _PCI_MJ_DISPATCH_TABLE *IrpDispatchTable; 00195 BOOLEAN DeviceState; 00196 BOOLEAN TentativeNextState; 00197 KEVENT SecondaryExtLock; 00198 PDEVICE_OBJECT PhysicalDeviceObject; 00199 PDEVICE_OBJECT FunctionalDeviceObject; 00200 PDEVICE_OBJECT AttachedDeviceObject; 00201 KEVENT ChildListLock; 00202 struct _PCI_PDO_EXTENSION *ChildPdoList; 00203 struct _PCI_FDO_EXTENSION *BusRootFdoExtension; 00204 struct _PCI_FDO_EXTENSION *ParentFdoExtension; 00205 struct _PCI_PDO_EXTENSION *ChildBridgePdoList; 00206 PPCI_BUS_INTERFACE_STANDARD PciBusInterface; 00207 BOOLEAN MaxSubordinateBus; 00208 BUS_HANDLER *BusHandler; 00209 BOOLEAN BaseBus; 00210 BOOLEAN Fake; 00211 BOOLEAN ChildDelete; 00212 BOOLEAN Scanned; 00213 BOOLEAN ArbitersInitialized; 00214 BOOLEAN BrokenVideoHackApplied; 00215 BOOLEAN Hibernated; 00216 PCI_POWER_STATE PowerState; 00217 SINGLE_LIST_ENTRY SecondaryExtension; 00218 LONG ChildWaitWakeCount; 00219 PPCI_COMMON_CONFIG PreservedConfig; 00220 PCI_LOCK Lock; 00221 struct 00222 { 00223 BOOLEAN Acquired; 00224 BOOLEAN CacheLineSize; 00225 BOOLEAN LatencyTimer; 00226 BOOLEAN EnablePERR; 00227 BOOLEAN EnableSERR; 00228 } HotPlugParameters; 00229 LONG BusHackFlags; 00230 } PCI_FDO_EXTENSION, *PPCI_FDO_EXTENSION; 00231 00232 typedef struct _PCI_FUNCTION_RESOURCES 00233 { 00234 IO_RESOURCE_DESCRIPTOR Limit[7]; 00235 CM_PARTIAL_RESOURCE_DESCRIPTOR Current[7]; 00236 } PCI_FUNCTION_RESOURCES, *PPCI_FUNCTION_RESOURCES; 00237 00238 typedef union _PCI_HEADER_TYPE_DEPENDENT 00239 { 00240 struct 00241 { 00242 UCHAR Spare[4]; 00243 } type0; 00244 struct 00245 { 00246 UCHAR PrimaryBus; 00247 UCHAR SecondaryBus; 00248 UCHAR SubordinateBus; 00249 UCHAR SubtractiveDecode:1; 00250 UCHAR IsaBitSet:1; 00251 UCHAR VgaBitSet:1; 00252 UCHAR WeChangedBusNumbers:1; 00253 UCHAR IsaBitRequired:1; 00254 } type1; 00255 struct 00256 { 00257 UCHAR Spare[4]; 00258 } type2; 00259 } PCI_HEADER_TYPE_DEPENDENT, *PPCI_HEADER_TYPE_DEPENDENT; 00260 00261 typedef struct _PCI_PDO_EXTENSION 00262 { 00263 PVOID Next; 00264 ULONG ExtensionType; 00265 struct _PCI_MJ_DISPATCH_TABLE *IrpDispatchTable; 00266 BOOLEAN DeviceState; 00267 BOOLEAN TentativeNextState; 00268 00269 KEVENT SecondaryExtLock; 00270 PCI_SLOT_NUMBER Slot; 00271 PDEVICE_OBJECT PhysicalDeviceObject; 00272 PPCI_FDO_EXTENSION ParentFdoExtension; 00273 SINGLE_LIST_ENTRY SecondaryExtension; 00274 LONG BusInterfaceReferenceCount; 00275 LONG AgpInterfaceReferenceCount; 00276 USHORT VendorId; 00277 USHORT DeviceId; 00278 USHORT SubsystemVendorId; 00279 USHORT SubsystemId; 00280 BOOLEAN RevisionId; 00281 BOOLEAN ProgIf; 00282 BOOLEAN SubClass; 00283 BOOLEAN BaseClass; 00284 BOOLEAN AdditionalResourceCount; 00285 BOOLEAN AdjustedInterruptLine; 00286 BOOLEAN InterruptPin; 00287 BOOLEAN RawInterruptLine; 00288 BOOLEAN CapabilitiesPtr; 00289 BOOLEAN SavedLatencyTimer; 00290 BOOLEAN SavedCacheLineSize; 00291 BOOLEAN HeaderType; 00292 BOOLEAN NotPresent; 00293 BOOLEAN ReportedMissing; 00294 BOOLEAN ExpectedWritebackFailure; 00295 BOOLEAN NoTouchPmeEnable; 00296 BOOLEAN LegacyDriver; 00297 BOOLEAN UpdateHardware; 00298 BOOLEAN MovedDevice; 00299 BOOLEAN DisablePowerDown; 00300 BOOLEAN NeedsHotPlugConfiguration; 00301 BOOLEAN IDEInNativeMode; 00302 BOOLEAN BIOSAllowsIDESwitchToNativeMode; 00303 BOOLEAN IoSpaceUnderNativeIdeControl; 00304 BOOLEAN OnDebugPath; 00305 BOOLEAN IoSpaceNotRequired; 00306 PCI_POWER_STATE PowerState; 00307 PCI_HEADER_TYPE_DEPENDENT Dependent; 00308 ULONGLONG HackFlags; 00309 PCI_FUNCTION_RESOURCES *Resources; 00310 PCI_FDO_EXTENSION *BridgeFdoExtension; 00311 struct _PCI_PDO_EXTENSION *NextBridge; 00312 struct _PCI_PDO_EXTENSION *NextHashEntry; 00313 PCI_LOCK Lock; 00314 PCI_PMC PowerCapabilities; 00315 BOOLEAN TargetAgpCapabilityId; 00316 USHORT CommandEnables; 00317 USHORT InitialCommand; 00318 } PCI_PDO_EXTENSION, *PPCI_PDO_EXTENSION; 00319 00320 // 00321 // IRP Dispatch Function Type 00322 // 00323 typedef NTSTATUS (NTAPI *PCI_DISPATCH_FUNCTION)( 00324 IN PIRP Irp, 00325 IN PIO_STACK_LOCATION IoStackLocation, 00326 IN PVOID DeviceExtension 00327 ); 00328 00329 // 00330 // IRP Dispatch Minor Table 00331 // 00332 typedef struct _PCI_MN_DISPATCH_TABLE 00333 { 00334 PCI_DISPATCH_STYLE DispatchStyle; 00335 PCI_DISPATCH_FUNCTION DispatchFunction; 00336 } PCI_MN_DISPATCH_TABLE, *PPCI_MN_DISPATCH_TABLE; 00337 00338 // 00339 // IRP Dispatch Major Table 00340 // 00341 typedef struct _PCI_MJ_DISPATCH_TABLE 00342 { 00343 ULONG PnpIrpMaximumMinorFunction; 00344 PPCI_MN_DISPATCH_TABLE PnpIrpDispatchTable; 00345 ULONG PowerIrpMaximumMinorFunction; 00346 PPCI_MN_DISPATCH_TABLE PowerIrpDispatchTable; 00347 PCI_DISPATCH_STYLE SystemControlIrpDispatchStyle; 00348 PCI_DISPATCH_FUNCTION SystemControlIrpDispatchFunction; 00349 PCI_DISPATCH_STYLE OtherIrpDispatchStyle; 00350 PCI_DISPATCH_FUNCTION OtherIrpDispatchFunction; 00351 } PCI_MJ_DISPATCH_TABLE, *PPCI_MJ_DISPATCH_TABLE; 00352 00353 // 00354 // Generic PCI Interface Constructor and Initializer 00355 // 00356 struct _PCI_INTERFACE; 00357 typedef NTSTATUS (NTAPI *PCI_INTERFACE_CONSTRUCTOR)( 00358 IN PVOID DeviceExtension, 00359 IN PVOID Instance, 00360 IN PVOID InterfaceData, 00361 IN USHORT Version, 00362 IN USHORT Size, 00363 IN PINTERFACE Interface 00364 ); 00365 00366 typedef NTSTATUS (NTAPI *PCI_INTERFACE_INITIALIZER)( 00367 IN PVOID Instance 00368 ); 00369 00370 // 00371 // Generic PCI Interface (Interface, Translator, Arbiter) 00372 // 00373 typedef struct _PCI_INTERFACE 00374 { 00375 CONST GUID *InterfaceType; 00376 USHORT MinSize; 00377 USHORT MinVersion; 00378 USHORT MaxVersion; 00379 USHORT Flags; 00380 LONG ReferenceCount; 00381 PCI_SIGNATURE Signature; 00382 PCI_INTERFACE_CONSTRUCTOR Constructor; 00383 PCI_INTERFACE_INITIALIZER Initializer; 00384 } PCI_INTERFACE, *PPCI_INTERFACE; 00385 00386 // 00387 // Generic Secondary Extension Instance Header (Interface, Translator, Arbiter) 00388 // 00389 typedef struct PCI_SECONDARY_EXTENSION 00390 { 00391 SINGLE_LIST_ENTRY List; 00392 PCI_SIGNATURE ExtensionType; 00393 PVOID Destructor; 00394 } PCI_SECONDARY_EXTENSION, *PPCI_SECONDARY_EXTENSION; 00395 00396 // 00397 // PCI Arbiter Instance 00398 // 00399 typedef struct PCI_ARBITER_INSTANCE 00400 { 00401 PCI_SECONDARY_EXTENSION Header; 00402 PPCI_INTERFACE Interface; 00403 PPCI_FDO_EXTENSION BusFdoExtension; 00404 WCHAR InstanceName[24]; 00405 //ARBITER_INSTANCE CommonInstance; FIXME: Need Arbiter Headers 00406 } PCI_ARBITER_INSTANCE, *PPCI_ARBITER_INSTANCE; 00407 00408 // 00409 // PCI Verifier Data 00410 // 00411 typedef struct _PCI_VERIFIER_DATA 00412 { 00413 ULONG FailureCode; 00414 VF_FAILURE_CLASS FailureClass; 00415 ULONG AssertionControl; 00416 PCHAR DebuggerMessageText; 00417 } PCI_VERIFIER_DATA, *PPCI_VERIFIER_DATA; 00418 00419 // 00420 // PCI ID Buffer Descriptor 00421 // 00422 typedef struct _PCI_ID_BUFFER 00423 { 00424 ULONG Count; 00425 ANSI_STRING Strings[MAX_ANSI_STRINGS]; 00426 ULONG StringSize[MAX_ANSI_STRINGS]; 00427 ULONG TotalLength; 00428 PCHAR CharBuffer; 00429 CHAR BufferData[256]; 00430 } PCI_ID_BUFFER, *PPCI_ID_BUFFER; 00431 00432 // 00433 // PCI Configuration Callbacks 00434 // 00435 struct _PCI_CONFIGURATOR_CONTEXT; 00436 00437 typedef VOID (NTAPI *PCI_CONFIGURATOR_INITIALIZE)( 00438 IN struct _PCI_CONFIGURATOR_CONTEXT* Context 00439 ); 00440 00441 typedef VOID (NTAPI *PCI_CONFIGURATOR_RESTORE_CURRENT)( 00442 IN struct _PCI_CONFIGURATOR_CONTEXT* Context 00443 ); 00444 00445 typedef VOID (NTAPI *PCI_CONFIGURATOR_SAVE_LIMITS)( 00446 IN struct _PCI_CONFIGURATOR_CONTEXT* Context 00447 ); 00448 00449 typedef VOID (NTAPI *PCI_CONFIGURATOR_SAVE_CURRENT_SETTINGS)( 00450 IN struct _PCI_CONFIGURATOR_CONTEXT* Context 00451 ); 00452 00453 typedef VOID (NTAPI *PCI_CONFIGURATOR_CHANGE_RESOURCE_SETTINGS)( 00454 IN PPCI_PDO_EXTENSION PdoExtension, 00455 IN PPCI_COMMON_HEADER PciData 00456 ); 00457 00458 typedef VOID (NTAPI *PCI_CONFIGURATOR_GET_ADDITIONAL_RESOURCE_DESCRIPTORS)( 00459 IN struct _PCI_CONFIGURATOR_CONTEXT* Context, 00460 IN PPCI_COMMON_HEADER PciData, 00461 IN PIO_RESOURCE_DESCRIPTOR IoDescriptor 00462 ); 00463 00464 typedef VOID (NTAPI *PCI_CONFIGURATOR_RESET_DEVICE)( 00465 IN PPCI_PDO_EXTENSION PdoExtension, 00466 IN PPCI_COMMON_HEADER PciData 00467 ); 00468 00469 // 00470 // PCI Configurator 00471 // 00472 typedef struct _PCI_CONFIGURATOR 00473 { 00474 PCI_CONFIGURATOR_INITIALIZE Initialize; 00475 PCI_CONFIGURATOR_RESTORE_CURRENT RestoreCurrent; 00476 PCI_CONFIGURATOR_SAVE_LIMITS SaveLimits; 00477 PCI_CONFIGURATOR_SAVE_CURRENT_SETTINGS SaveCurrentSettings; 00478 PCI_CONFIGURATOR_CHANGE_RESOURCE_SETTINGS ChangeResourceSettings; 00479 PCI_CONFIGURATOR_GET_ADDITIONAL_RESOURCE_DESCRIPTORS GetAdditionalResourceDescriptors; 00480 PCI_CONFIGURATOR_RESET_DEVICE ResetDevice; 00481 } PCI_CONFIGURATOR, *PPCI_CONFIGURATOR; 00482 00483 // 00484 // PCI Configurator Context 00485 // 00486 typedef struct _PCI_CONFIGURATOR_CONTEXT 00487 { 00488 PPCI_PDO_EXTENSION PdoExtension; 00489 PPCI_COMMON_HEADER Current; 00490 PPCI_COMMON_HEADER PciData; 00491 PPCI_CONFIGURATOR Configurator; 00492 USHORT SecondaryStatus; 00493 USHORT Status; 00494 USHORT Command; 00495 } PCI_CONFIGURATOR_CONTEXT, *PPCI_CONFIGURATOR_CONTEXT; 00496 00497 // 00498 // PCI IPI Function 00499 // 00500 typedef VOID (NTAPI *PCI_IPI_FUNCTION)( 00501 IN PVOID Reserved, 00502 IN PVOID Context 00503 ); 00504 00505 // 00506 // PCI IPI Context 00507 // 00508 typedef struct _PCI_IPI_CONTEXT 00509 { 00510 LONG RunCount; 00511 ULONG Barrier; 00512 PVOID DeviceExtension; 00513 PCI_IPI_FUNCTION Function; 00514 PVOID Context; 00515 } PCI_IPI_CONTEXT, *PPCI_IPI_CONTEXT; 00516 00517 // 00518 // PCI Legacy Device Location Cache 00519 // 00520 typedef struct _PCI_LEGACY_DEVICE 00521 { 00522 struct _PCI_LEGACY_DEVICE *Next; 00523 PDEVICE_OBJECT DeviceObject; 00524 ULONG BusNumber; 00525 ULONG SlotNumber; 00526 UCHAR InterruptLine; 00527 UCHAR InterruptPin; 00528 UCHAR BaseClass; 00529 UCHAR SubClass; 00530 PDEVICE_OBJECT PhysicalDeviceObject; 00531 ROUTING_TOKEN RoutingToken; 00532 PPCI_PDO_EXTENSION PdoExtension; 00533 } PCI_LEGACY_DEVICE, *PPCI_LEGACY_DEVICE; 00534 00535 // 00536 // IRP Dispatch Routines 00537 // 00538 NTSTATUS 00539 NTAPI 00540 PciDispatchIrp( 00541 IN PDEVICE_OBJECT DeviceObject, 00542 IN PIRP Irp 00543 ); 00544 00545 NTSTATUS 00546 NTAPI 00547 PciIrpNotSupported( 00548 IN PIRP Irp, 00549 IN PIO_STACK_LOCATION IoStackLocation, 00550 IN PPCI_FDO_EXTENSION DeviceExtension 00551 ); 00552 00553 NTSTATUS 00554 NTAPI 00555 PciPassIrpFromFdoToPdo( 00556 IN PPCI_FDO_EXTENSION DeviceExtension, 00557 IN PIRP Irp 00558 ); 00559 00560 NTSTATUS 00561 NTAPI 00562 PciCallDownIrpStack( 00563 IN PPCI_FDO_EXTENSION DeviceExtension, 00564 IN PIRP Irp 00565 ); 00566 00567 NTSTATUS 00568 NTAPI 00569 PciIrpInvalidDeviceRequest( 00570 IN PIRP Irp, 00571 IN PIO_STACK_LOCATION IoStackLocation, 00572 IN PPCI_FDO_EXTENSION DeviceExtension 00573 ); 00574 00575 // 00576 // Power Routines 00577 // 00578 NTSTATUS 00579 NTAPI 00580 PciFdoWaitWake( 00581 IN PIRP Irp, 00582 IN PIO_STACK_LOCATION IoStackLocation, 00583 IN PPCI_FDO_EXTENSION DeviceExtension 00584 ); 00585 00586 NTSTATUS 00587 NTAPI 00588 PciFdoSetPowerState( 00589 IN PIRP Irp, 00590 IN PIO_STACK_LOCATION IoStackLocation, 00591 IN PPCI_FDO_EXTENSION DeviceExtension 00592 ); 00593 00594 NTSTATUS 00595 NTAPI 00596 PciFdoIrpQueryPower( 00597 IN PIRP Irp, 00598 IN PIO_STACK_LOCATION IoStackLocation, 00599 IN PPCI_FDO_EXTENSION DeviceExtension 00600 ); 00601 00602 NTSTATUS 00603 NTAPI 00604 PciSetPowerManagedDevicePowerState( 00605 IN PPCI_PDO_EXTENSION DeviceExtension, 00606 IN DEVICE_POWER_STATE DeviceState, 00607 IN BOOLEAN IrpSet 00608 ); 00609 00610 // 00611 // Bus FDO Routines 00612 // 00613 NTSTATUS 00614 NTAPI 00615 PciAddDevice( 00616 IN PDRIVER_OBJECT DriverObject, 00617 IN PDEVICE_OBJECT PhysicalDeviceObject 00618 ); 00619 00620 NTSTATUS 00621 NTAPI 00622 PciFdoIrpStartDevice( 00623 IN PIRP Irp, 00624 IN PIO_STACK_LOCATION IoStackLocation, 00625 IN PPCI_FDO_EXTENSION DeviceExtension 00626 ); 00627 00628 NTSTATUS 00629 NTAPI 00630 PciFdoIrpQueryRemoveDevice( 00631 IN PIRP Irp, 00632 IN PIO_STACK_LOCATION IoStackLocation, 00633 IN PPCI_FDO_EXTENSION DeviceExtension 00634 ); 00635 00636 NTSTATUS 00637 NTAPI 00638 PciFdoIrpRemoveDevice( 00639 IN PIRP Irp, 00640 IN PIO_STACK_LOCATION IoStackLocation, 00641 IN PPCI_FDO_EXTENSION DeviceExtension 00642 ); 00643 00644 NTSTATUS 00645 NTAPI 00646 PciFdoIrpCancelRemoveDevice( 00647 IN PIRP Irp, 00648 IN PIO_STACK_LOCATION IoStackLocation, 00649 IN PPCI_FDO_EXTENSION DeviceExtension 00650 ); 00651 00652 NTSTATUS 00653 NTAPI 00654 PciFdoIrpStopDevice( 00655 IN PIRP Irp, 00656 IN PIO_STACK_LOCATION IoStackLocation, 00657 IN PPCI_FDO_EXTENSION DeviceExtension 00658 ); 00659 00660 NTSTATUS 00661 NTAPI 00662 PciFdoIrpQueryStopDevice( 00663 IN PIRP Irp, 00664 IN PIO_STACK_LOCATION IoStackLocation, 00665 IN PPCI_FDO_EXTENSION DeviceExtension 00666 ); 00667 00668 NTSTATUS 00669 NTAPI 00670 PciFdoIrpCancelStopDevice( 00671 IN PIRP Irp, 00672 IN PIO_STACK_LOCATION IoStackLocation, 00673 IN PPCI_FDO_EXTENSION DeviceExtension 00674 ); 00675 00676 NTSTATUS 00677 NTAPI 00678 PciFdoIrpQueryDeviceRelations( 00679 IN PIRP Irp, 00680 IN PIO_STACK_LOCATION IoStackLocation, 00681 IN PPCI_FDO_EXTENSION DeviceExtension 00682 ); 00683 00684 NTSTATUS 00685 NTAPI 00686 PciFdoIrpQueryInterface( 00687 IN PIRP Irp, 00688 IN PIO_STACK_LOCATION IoStackLocation, 00689 IN PPCI_FDO_EXTENSION DeviceExtension 00690 ); 00691 00692 NTSTATUS 00693 NTAPI 00694 PciFdoIrpQueryCapabilities( 00695 IN PIRP Irp, 00696 IN PIO_STACK_LOCATION IoStackLocation, 00697 IN PPCI_FDO_EXTENSION DeviceExtension 00698 ); 00699 00700 NTSTATUS 00701 NTAPI 00702 PciFdoIrpDeviceUsageNotification( 00703 IN PIRP Irp, 00704 IN PIO_STACK_LOCATION IoStackLocation, 00705 IN PPCI_FDO_EXTENSION DeviceExtension 00706 ); 00707 00708 NTSTATUS 00709 NTAPI 00710 PciFdoIrpSurpriseRemoval( 00711 IN PIRP Irp, 00712 IN PIO_STACK_LOCATION IoStackLocation, 00713 IN PPCI_FDO_EXTENSION DeviceExtension 00714 ); 00715 00716 NTSTATUS 00717 NTAPI 00718 PciFdoIrpQueryLegacyBusInformation( 00719 IN PIRP Irp, 00720 IN PIO_STACK_LOCATION IoStackLocation, 00721 IN PPCI_FDO_EXTENSION DeviceExtension 00722 ); 00723 00724 // 00725 // Device PDO Routines 00726 // 00727 NTSTATUS 00728 NTAPI 00729 PciPdoCreate( 00730 IN PPCI_FDO_EXTENSION DeviceExtension, 00731 IN PCI_SLOT_NUMBER Slot, 00732 OUT PDEVICE_OBJECT *PdoDeviceObject 00733 ); 00734 00735 NTSTATUS 00736 NTAPI 00737 PciPdoWaitWake( 00738 IN PIRP Irp, 00739 IN PIO_STACK_LOCATION IoStackLocation, 00740 IN PPCI_PDO_EXTENSION DeviceExtension 00741 ); 00742 00743 NTSTATUS 00744 NTAPI 00745 PciPdoSetPowerState( 00746 IN PIRP Irp, 00747 IN PIO_STACK_LOCATION IoStackLocation, 00748 IN PPCI_PDO_EXTENSION DeviceExtension 00749 ); 00750 00751 NTSTATUS 00752 NTAPI 00753 PciPdoIrpQueryPower( 00754 IN PIRP Irp, 00755 IN PIO_STACK_LOCATION IoStackLocation, 00756 IN PPCI_PDO_EXTENSION DeviceExtension 00757 ); 00758 00759 NTSTATUS 00760 NTAPI 00761 PciPdoIrpStartDevice( 00762 IN PIRP Irp, 00763 IN PIO_STACK_LOCATION IoStackLocation, 00764 IN PPCI_PDO_EXTENSION DeviceExtension 00765 ); 00766 00767 NTSTATUS 00768 NTAPI 00769 PciPdoIrpQueryRemoveDevice( 00770 IN PIRP Irp, 00771 IN PIO_STACK_LOCATION IoStackLocation, 00772 IN PPCI_PDO_EXTENSION DeviceExtension 00773 ); 00774 00775 NTSTATUS 00776 NTAPI 00777 PciPdoIrpRemoveDevice( 00778 IN PIRP Irp, 00779 IN PIO_STACK_LOCATION IoStackLocation, 00780 IN PPCI_PDO_EXTENSION DeviceExtension 00781 ); 00782 00783 NTSTATUS 00784 NTAPI 00785 PciPdoIrpCancelRemoveDevice( 00786 IN PIRP Irp, 00787 IN PIO_STACK_LOCATION IoStackLocation, 00788 IN PPCI_PDO_EXTENSION DeviceExtension 00789 ); 00790 00791 NTSTATUS 00792 NTAPI 00793 PciPdoIrpStopDevice( 00794 IN PIRP Irp, 00795 IN PIO_STACK_LOCATION IoStackLocation, 00796 IN PPCI_PDO_EXTENSION DeviceExtension 00797 ); 00798 00799 NTSTATUS 00800 NTAPI 00801 PciPdoIrpQueryStopDevice( 00802 IN PIRP Irp, 00803 IN PIO_STACK_LOCATION IoStackLocation, 00804 IN PPCI_PDO_EXTENSION DeviceExtension 00805 ); 00806 00807 NTSTATUS 00808 NTAPI 00809 PciPdoIrpCancelStopDevice( 00810 IN PIRP Irp, 00811 IN PIO_STACK_LOCATION IoStackLocation, 00812 IN PPCI_PDO_EXTENSION DeviceExtension 00813 ); 00814 00815 NTSTATUS 00816 NTAPI 00817 PciPdoIrpQueryDeviceRelations( 00818 IN PIRP Irp, 00819 IN PIO_STACK_LOCATION IoStackLocation, 00820 IN PPCI_PDO_EXTENSION DeviceExtension 00821 ); 00822 00823 NTSTATUS 00824 NTAPI 00825 PciPdoIrpQueryInterface( 00826 IN PIRP Irp, 00827 IN PIO_STACK_LOCATION IoStackLocation, 00828 IN PPCI_PDO_EXTENSION DeviceExtension 00829 ); 00830 00831 NTSTATUS 00832 NTAPI 00833 PciPdoIrpQueryCapabilities( 00834 IN PIRP Irp, 00835 IN PIO_STACK_LOCATION IoStackLocation, 00836 IN PPCI_PDO_EXTENSION DeviceExtension 00837 ); 00838 00839 NTSTATUS 00840 NTAPI 00841 PciPdoIrpQueryResources( 00842 IN PIRP Irp, 00843 IN PIO_STACK_LOCATION IoStackLocation, 00844 IN PPCI_PDO_EXTENSION DeviceExtension 00845 ); 00846 00847 NTSTATUS 00848 NTAPI 00849 PciPdoIrpQueryResourceRequirements( 00850 IN PIRP Irp, 00851 IN PIO_STACK_LOCATION IoStackLocation, 00852 IN PPCI_PDO_EXTENSION DeviceExtension 00853 ); 00854 00855 NTSTATUS 00856 NTAPI 00857 PciPdoIrpQueryDeviceText( 00858 IN PIRP Irp, 00859 IN PIO_STACK_LOCATION IoStackLocation, 00860 IN PPCI_PDO_EXTENSION DeviceExtension 00861 ); 00862 00863 NTSTATUS 00864 NTAPI 00865 PciPdoIrpReadConfig( 00866 IN PIRP Irp, 00867 IN PIO_STACK_LOCATION IoStackLocation, 00868 IN PPCI_PDO_EXTENSION DeviceExtension 00869 ); 00870 00871 NTSTATUS 00872 NTAPI 00873 PciPdoIrpWriteConfig( 00874 IN PIRP Irp, 00875 IN PIO_STACK_LOCATION IoStackLocation, 00876 IN PPCI_PDO_EXTENSION DeviceExtension 00877 ); 00878 00879 NTSTATUS 00880 NTAPI 00881 PciPdoIrpQueryId( 00882 IN PIRP Irp, 00883 IN PIO_STACK_LOCATION IoStackLocation, 00884 IN PPCI_PDO_EXTENSION DeviceExtension 00885 ); 00886 00887 NTSTATUS 00888 NTAPI 00889 PciPdoIrpQueryDeviceState( 00890 IN PIRP Irp, 00891 IN PIO_STACK_LOCATION IoStackLocation, 00892 IN PPCI_PDO_EXTENSION DeviceExtension 00893 ); 00894 00895 NTSTATUS 00896 NTAPI 00897 PciPdoIrpQueryBusInformation( 00898 IN PIRP Irp, 00899 IN PIO_STACK_LOCATION IoStackLocation, 00900 IN PPCI_PDO_EXTENSION DeviceExtension 00901 ); 00902 00903 NTSTATUS 00904 NTAPI 00905 PciPdoIrpDeviceUsageNotification( 00906 IN PIRP Irp, 00907 IN PIO_STACK_LOCATION IoStackLocation, 00908 IN PPCI_PDO_EXTENSION DeviceExtension 00909 ); 00910 00911 NTSTATUS 00912 NTAPI 00913 PciPdoIrpSurpriseRemoval( 00914 IN PIRP Irp, 00915 IN PIO_STACK_LOCATION IoStackLocation, 00916 IN PPCI_PDO_EXTENSION DeviceExtension 00917 ); 00918 00919 NTSTATUS 00920 NTAPI 00921 PciPdoIrpQueryLegacyBusInformation( 00922 IN PIRP Irp, 00923 IN PIO_STACK_LOCATION IoStackLocation, 00924 IN PPCI_PDO_EXTENSION DeviceExtension 00925 ); 00926 00927 00928 // 00929 // HAL Callback/Hook Routines 00930 // 00931 VOID 00932 NTAPI 00933 PciHookHal( 00934 VOID 00935 ); 00936 00937 // 00938 // PCI Verifier Routines 00939 // 00940 VOID 00941 NTAPI 00942 PciVerifierInit( 00943 IN PDRIVER_OBJECT DriverObject 00944 ); 00945 00946 PPCI_VERIFIER_DATA 00947 NTAPI 00948 PciVerifierRetrieveFailureData( 00949 IN ULONG FailureCode 00950 ); 00951 00952 // 00953 // Utility Routines 00954 // 00955 BOOLEAN 00956 NTAPI 00957 PciStringToUSHORT( 00958 IN PWCHAR String, 00959 OUT PUSHORT Value 00960 ); 00961 00962 BOOLEAN 00963 NTAPI 00964 PciIsDatacenter( 00965 VOID 00966 ); 00967 00968 NTSTATUS 00969 NTAPI 00970 PciBuildDefaultExclusionLists( 00971 VOID 00972 ); 00973 00974 BOOLEAN 00975 NTAPI 00976 PciUnicodeStringStrStr( 00977 IN PUNICODE_STRING InputString, 00978 IN PCUNICODE_STRING EqualString, 00979 IN BOOLEAN CaseInSensitive 00980 ); 00981 00982 BOOLEAN 00983 NTAPI 00984 PciOpenKey( 00985 IN PWCHAR KeyName, 00986 IN HANDLE RootKey, 00987 IN ACCESS_MASK DesiredAccess, 00988 OUT PHANDLE KeyHandle, 00989 OUT PNTSTATUS KeyStatus 00990 ); 00991 00992 NTSTATUS 00993 NTAPI 00994 PciGetRegistryValue( 00995 IN PWCHAR ValueName, 00996 IN PWCHAR KeyName, 00997 IN HANDLE RootHandle, 00998 IN ULONG Type, 00999 OUT PVOID *OutputBuffer, 01000 OUT PULONG OutputLength 01001 ); 01002 01003 PPCI_FDO_EXTENSION 01004 NTAPI 01005 PciFindParentPciFdoExtension( 01006 IN PDEVICE_OBJECT DeviceObject, 01007 IN PKEVENT Lock 01008 ); 01009 01010 VOID 01011 NTAPI 01012 PciInsertEntryAtTail( 01013 IN PSINGLE_LIST_ENTRY ListHead, 01014 IN PPCI_FDO_EXTENSION DeviceExtension, 01015 IN PKEVENT Lock 01016 ); 01017 01018 NTSTATUS 01019 NTAPI 01020 PciGetDeviceProperty( 01021 IN PDEVICE_OBJECT DeviceObject, 01022 IN DEVICE_REGISTRY_PROPERTY DeviceProperty, 01023 OUT PVOID *OutputBuffer 01024 ); 01025 01026 NTSTATUS 01027 NTAPI 01028 PciSendIoctl( 01029 IN PDEVICE_OBJECT DeviceObject, 01030 IN ULONG IoControlCode, 01031 IN PVOID InputBuffer, 01032 IN ULONG InputBufferLength, 01033 IN PVOID OutputBuffer, 01034 IN ULONG OutputBufferLength 01035 ); 01036 01037 VOID 01038 NTAPI 01039 PcipLinkSecondaryExtension( 01040 IN PSINGLE_LIST_ENTRY List, 01041 IN PVOID Lock, 01042 IN PPCI_SECONDARY_EXTENSION SecondaryExtension, 01043 IN PCI_SIGNATURE ExtensionType, 01044 IN PVOID Destructor 01045 ); 01046 01047 PPCI_SECONDARY_EXTENSION 01048 NTAPI 01049 PciFindNextSecondaryExtension( 01050 IN PSINGLE_LIST_ENTRY ListHead, 01051 IN PCI_SIGNATURE ExtensionType 01052 ); 01053 01054 ULONGLONG 01055 NTAPI 01056 PciGetHackFlags( 01057 IN USHORT VendorId, 01058 IN USHORT DeviceId, 01059 IN USHORT SubVendorId, 01060 IN USHORT SubSystemId, 01061 IN UCHAR RevisionId 01062 ); 01063 01064 PPCI_PDO_EXTENSION 01065 NTAPI 01066 PciFindPdoByFunction( 01067 IN PPCI_FDO_EXTENSION DeviceExtension, 01068 IN ULONG FunctionNumber, 01069 IN PPCI_COMMON_HEADER PciData 01070 ); 01071 01072 BOOLEAN 01073 NTAPI 01074 PciIsCriticalDeviceClass( 01075 IN UCHAR BaseClass, 01076 IN UCHAR SubClass 01077 ); 01078 01079 BOOLEAN 01080 NTAPI 01081 PciIsDeviceOnDebugPath( 01082 IN PPCI_PDO_EXTENSION DeviceExtension 01083 ); 01084 01085 NTSTATUS 01086 NTAPI 01087 PciGetBiosConfig( 01088 IN PPCI_PDO_EXTENSION DeviceExtension, 01089 OUT PPCI_COMMON_HEADER PciData 01090 ); 01091 01092 NTSTATUS 01093 NTAPI 01094 PciSaveBiosConfig( 01095 IN PPCI_PDO_EXTENSION DeviceExtension, 01096 OUT PPCI_COMMON_HEADER PciData 01097 ); 01098 01099 UCHAR 01100 NTAPI 01101 PciReadDeviceCapability( 01102 IN PPCI_PDO_EXTENSION DeviceExtension, 01103 IN UCHAR Offset, 01104 IN ULONG CapabilityId, 01105 OUT PPCI_CAPABILITIES_HEADER Buffer, 01106 IN ULONG Length 01107 ); 01108 01109 BOOLEAN 01110 NTAPI 01111 PciCanDisableDecodes( 01112 IN PPCI_PDO_EXTENSION DeviceExtension, 01113 IN PPCI_COMMON_HEADER Config, 01114 IN ULONGLONG HackFlags, 01115 IN BOOLEAN ForPowerDown 01116 ); 01117 01118 PCI_DEVICE_TYPES 01119 NTAPI 01120 PciClassifyDeviceType( 01121 IN PPCI_PDO_EXTENSION PdoExtension 01122 ); 01123 01124 ULONG_PTR 01125 NTAPI 01126 PciExecuteCriticalSystemRoutine( 01127 IN ULONG_PTR IpiContext 01128 ); 01129 01130 BOOLEAN 01131 NTAPI 01132 PciCreateIoDescriptorFromBarLimit( 01133 PIO_RESOURCE_DESCRIPTOR ResourceDescriptor, 01134 IN PULONG BarArray, 01135 IN BOOLEAN Rom 01136 ); 01137 01138 BOOLEAN 01139 NTAPI 01140 PciIsSlotPresentInParentMethod( 01141 IN PPCI_PDO_EXTENSION PdoExtension, 01142 IN ULONG Method 01143 ); 01144 01145 VOID 01146 NTAPI 01147 PciDecodeEnable( 01148 IN PPCI_PDO_EXTENSION PdoExtension, 01149 IN BOOLEAN Enable, 01150 OUT PUSHORT Command 01151 ); 01152 01153 NTSTATUS 01154 NTAPI 01155 PciQueryBusInformation( 01156 IN PPCI_PDO_EXTENSION PdoExtension, 01157 IN PPNP_BUS_INFORMATION* Buffer 01158 ); 01159 01160 NTSTATUS 01161 NTAPI 01162 PciQueryCapabilities( 01163 IN PPCI_PDO_EXTENSION PdoExtension, 01164 IN OUT PDEVICE_CAPABILITIES DeviceCapability 01165 ); 01166 01167 PCM_PARTIAL_RESOURCE_DESCRIPTOR 01168 NTAPI 01169 PciNextPartialDescriptor( 01170 PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor 01171 ); 01172 01173 // 01174 // Configuration Routines 01175 // 01176 NTSTATUS 01177 NTAPI 01178 PciGetConfigHandlers( 01179 IN PPCI_FDO_EXTENSION FdoExtension 01180 ); 01181 01182 VOID 01183 NTAPI 01184 PciReadSlotConfig( 01185 IN PPCI_FDO_EXTENSION DeviceExtension, 01186 IN PCI_SLOT_NUMBER Slot, 01187 IN PVOID Buffer, 01188 IN ULONG Offset, 01189 IN ULONG Length 01190 ); 01191 01192 VOID 01193 NTAPI 01194 PciWriteDeviceConfig( 01195 IN PPCI_PDO_EXTENSION DeviceExtension, 01196 IN PVOID Buffer, 01197 IN ULONG Offset, 01198 IN ULONG Length 01199 ); 01200 01201 VOID 01202 NTAPI 01203 PciReadDeviceConfig( 01204 IN PPCI_PDO_EXTENSION DeviceExtension, 01205 IN PVOID Buffer, 01206 IN ULONG Offset, 01207 IN ULONG Length 01208 ); 01209 01210 UCHAR 01211 NTAPI 01212 PciGetAdjustedInterruptLine( 01213 IN PPCI_PDO_EXTENSION PdoExtension 01214 ); 01215 01216 // 01217 // State Machine Logic Transition Routines 01218 // 01219 VOID 01220 NTAPI 01221 PciInitializeState( 01222 IN PPCI_FDO_EXTENSION DeviceExtension 01223 ); 01224 01225 NTSTATUS 01226 NTAPI 01227 PciBeginStateTransition( 01228 IN PPCI_FDO_EXTENSION DeviceExtension, 01229 IN PCI_STATE NewState 01230 ); 01231 01232 NTSTATUS 01233 NTAPI 01234 PciCancelStateTransition( 01235 IN PPCI_FDO_EXTENSION DeviceExtension, 01236 IN PCI_STATE NewState 01237 ); 01238 01239 VOID 01240 NTAPI 01241 PciCommitStateTransition( 01242 IN PPCI_FDO_EXTENSION DeviceExtension, 01243 IN PCI_STATE NewState 01244 ); 01245 01246 // 01247 // Arbiter Support 01248 // 01249 NTSTATUS 01250 NTAPI 01251 PciInitializeArbiters( 01252 IN PPCI_FDO_EXTENSION FdoExtension 01253 ); 01254 01255 NTSTATUS 01256 NTAPI 01257 PciInitializeArbiterRanges( 01258 IN PPCI_FDO_EXTENSION DeviceExtension, 01259 IN PCM_RESOURCE_LIST Resources 01260 ); 01261 01262 // 01263 // Debug Helpers 01264 // 01265 BOOLEAN 01266 NTAPI 01267 PciDebugIrpDispatchDisplay( 01268 IN PIO_STACK_LOCATION IoStackLocation, 01269 IN PPCI_FDO_EXTENSION DeviceExtension, 01270 IN USHORT MaxMinor 01271 ); 01272 01273 VOID 01274 NTAPI 01275 PciDebugDumpCommonConfig( 01276 IN PPCI_COMMON_HEADER PciData 01277 ); 01278 01279 VOID 01280 NTAPI 01281 PciDebugDumpQueryCapabilities( 01282 IN PDEVICE_CAPABILITIES DeviceCaps 01283 ); 01284 01285 VOID 01286 NTAPI 01287 PciDebugPrintIoResReqList( 01288 IN PIO_RESOURCE_REQUIREMENTS_LIST Requirements 01289 ); 01290 01291 VOID 01292 NTAPI 01293 PciDebugPrintCmResList( 01294 IN PCM_RESOURCE_LIST ResourceList 01295 ); 01296 01297 VOID 01298 NTAPI 01299 PciDebugPrintPartialResource( 01300 IN PCM_PARTIAL_RESOURCE_DESCRIPTOR PartialResource 01301 ); 01302 01303 // 01304 // Interface Support 01305 // 01306 NTSTATUS 01307 NTAPI 01308 PciQueryInterface( 01309 IN PPCI_FDO_EXTENSION DeviceExtension, 01310 IN CONST GUID* InterfaceType, 01311 IN ULONG Size, 01312 IN ULONG Version, 01313 IN PVOID InterfaceData, 01314 IN PINTERFACE Interface, 01315 IN BOOLEAN LastChance 01316 ); 01317 01318 NTSTATUS 01319 NTAPI 01320 PciPmeInterfaceInitializer( 01321 IN PVOID Instance 01322 ); 01323 01324 NTSTATUS 01325 NTAPI 01326 routeintrf_Initializer( 01327 IN PVOID Instance 01328 ); 01329 01330 NTSTATUS 01331 NTAPI 01332 arbusno_Initializer( 01333 IN PVOID Instance 01334 ); 01335 01336 NTSTATUS 01337 NTAPI 01338 agpintrf_Initializer( 01339 IN PVOID Instance 01340 ); 01341 01342 NTSTATUS 01343 NTAPI 01344 tranirq_Initializer( 01345 IN PVOID Instance 01346 ); 01347 01348 NTSTATUS 01349 NTAPI 01350 busintrf_Initializer( 01351 IN PVOID Instance 01352 ); 01353 01354 NTSTATUS 01355 NTAPI 01356 armem_Initializer( 01357 IN PVOID Instance 01358 ); 01359 01360 NTSTATUS 01361 NTAPI 01362 ario_Initializer( 01363 IN PVOID Instance 01364 ); 01365 01366 NTSTATUS 01367 NTAPI 01368 locintrf_Initializer( 01369 IN PVOID Instance 01370 ); 01371 01372 NTSTATUS 01373 NTAPI 01374 pcicbintrf_Initializer( 01375 IN PVOID Instance 01376 ); 01377 01378 NTSTATUS 01379 NTAPI 01380 lddintrf_Initializer( 01381 IN PVOID Instance 01382 ); 01383 01384 NTSTATUS 01385 NTAPI 01386 devpresent_Initializer( 01387 IN PVOID Instance 01388 ); 01389 01390 NTSTATUS 01391 NTAPI 01392 agpintrf_Constructor( 01393 IN PVOID DeviceExtension, 01394 IN PVOID Instance, 01395 IN PVOID InterfaceData, 01396 IN USHORT Version, 01397 IN USHORT Size, 01398 IN PINTERFACE Interface 01399 ); 01400 01401 NTSTATUS 01402 NTAPI 01403 arbusno_Constructor( 01404 IN PVOID DeviceExtension, 01405 IN PVOID Instance, 01406 IN PVOID InterfaceData, 01407 IN USHORT Version, 01408 IN USHORT Size, 01409 IN PINTERFACE Interface 01410 ); 01411 01412 NTSTATUS 01413 NTAPI 01414 tranirq_Constructor( 01415 IN PVOID DeviceExtension, 01416 IN PVOID Instance, 01417 IN PVOID InterfaceData, 01418 IN USHORT Version, 01419 IN USHORT Size, 01420 IN PINTERFACE Interface 01421 ); 01422 01423 NTSTATUS 01424 NTAPI 01425 armem_Constructor( 01426 IN PVOID DeviceExtension, 01427 IN PVOID Instance, 01428 IN PVOID InterfaceData, 01429 IN USHORT Version, 01430 IN USHORT Size, 01431 IN PINTERFACE Interface 01432 ); 01433 01434 NTSTATUS 01435 NTAPI 01436 busintrf_Constructor( 01437 IN PVOID DeviceExtension, 01438 IN PVOID Instance, 01439 IN PVOID InterfaceData, 01440 IN USHORT Version, 01441 IN USHORT Size, 01442 IN PINTERFACE Interface 01443 ); 01444 01445 NTSTATUS 01446 NTAPI 01447 ario_Constructor( 01448 IN PVOID DeviceExtension, 01449 IN PVOID Instance, 01450 IN PVOID InterfaceData, 01451 IN USHORT Version, 01452 IN USHORT Size, 01453 IN PINTERFACE Interface 01454 ); 01455 01456 VOID 01457 NTAPI 01458 ario_ApplyBrokenVideoHack( 01459 IN PPCI_FDO_EXTENSION FdoExtension 01460 ); 01461 01462 NTSTATUS 01463 NTAPI 01464 pcicbintrf_Constructor( 01465 IN PVOID DeviceExtension, 01466 IN PVOID Instance, 01467 IN PVOID InterfaceData, 01468 IN USHORT Version, 01469 IN USHORT Size, 01470 IN PINTERFACE Interface 01471 ); 01472 01473 NTSTATUS 01474 NTAPI 01475 lddintrf_Constructor( 01476 IN PVOID DeviceExtension, 01477 IN PVOID Instance, 01478 IN PVOID InterfaceData, 01479 IN USHORT Version, 01480 IN USHORT Size, 01481 IN PINTERFACE Interface 01482 ); 01483 01484 NTSTATUS 01485 NTAPI 01486 locintrf_Constructor( 01487 IN PVOID DeviceExtension, 01488 IN PVOID Instance, 01489 IN PVOID InterfaceData, 01490 IN USHORT Version, 01491 IN USHORT Size, 01492 IN PINTERFACE Interface 01493 ); 01494 01495 NTSTATUS 01496 NTAPI 01497 PciPmeInterfaceConstructor( 01498 IN PVOID DeviceExtension, 01499 IN PVOID Instance, 01500 IN PVOID InterfaceData, 01501 IN USHORT Version, 01502 IN USHORT Size, 01503 IN PINTERFACE Interface 01504 ); 01505 01506 NTSTATUS 01507 NTAPI 01508 routeintrf_Constructor( 01509 IN PVOID DeviceExtension, 01510 IN PVOID Instance, 01511 IN PVOID InterfaceData, 01512 IN USHORT Version, 01513 IN USHORT Size, 01514 IN PINTERFACE Interface 01515 ); 01516 01517 NTSTATUS 01518 NTAPI 01519 devpresent_Constructor( 01520 IN PVOID DeviceExtension, 01521 IN PVOID Instance, 01522 IN PVOID InterfaceData, 01523 IN USHORT Version, 01524 IN USHORT Size, 01525 IN PINTERFACE Interface 01526 ); 01527 01528 // 01529 // PCI Enumeration and Resources 01530 // 01531 NTSTATUS 01532 NTAPI 01533 PciQueryDeviceRelations( 01534 IN PPCI_FDO_EXTENSION DeviceExtension, 01535 IN OUT PDEVICE_RELATIONS *pDeviceRelations 01536 ); 01537 01538 NTSTATUS 01539 NTAPI 01540 PciQueryResources( 01541 IN PPCI_PDO_EXTENSION PdoExtension, 01542 OUT PCM_RESOURCE_LIST *Buffer 01543 ); 01544 01545 NTSTATUS 01546 NTAPI 01547 PciQueryTargetDeviceRelations( 01548 IN PPCI_PDO_EXTENSION PdoExtension, 01549 IN OUT PDEVICE_RELATIONS *pDeviceRelations 01550 ); 01551 01552 NTSTATUS 01553 NTAPI 01554 PciQueryEjectionRelations( 01555 IN PPCI_PDO_EXTENSION PdoExtension, 01556 IN OUT PDEVICE_RELATIONS *pDeviceRelations 01557 ); 01558 01559 NTSTATUS 01560 NTAPI 01561 PciQueryRequirements( 01562 IN PPCI_PDO_EXTENSION PdoExtension, 01563 IN OUT PIO_RESOURCE_REQUIREMENTS_LIST *RequirementsList 01564 ); 01565 01566 BOOLEAN 01567 NTAPI 01568 PciComputeNewCurrentSettings( 01569 IN PPCI_PDO_EXTENSION PdoExtension, 01570 IN PCM_RESOURCE_LIST ResourceList 01571 ); 01572 01573 NTSTATUS 01574 NTAPI 01575 PciSetResources( 01576 IN PPCI_PDO_EXTENSION PdoExtension, 01577 IN BOOLEAN DoReset, 01578 IN BOOLEAN SomethingSomethingDarkSide 01579 ); 01580 01581 NTSTATUS 01582 NTAPI 01583 PciBuildRequirementsList( 01584 IN PPCI_PDO_EXTENSION PdoExtension, 01585 IN PPCI_COMMON_HEADER PciData, 01586 OUT PIO_RESOURCE_REQUIREMENTS_LIST* Buffer 01587 ); 01588 01589 // 01590 // Identification Functions 01591 // 01592 PWCHAR 01593 NTAPI 01594 PciGetDeviceDescriptionMessage( 01595 IN UCHAR BaseClass, 01596 IN UCHAR SubClass 01597 ); 01598 01599 NTSTATUS 01600 NTAPI 01601 PciQueryDeviceText( 01602 IN PPCI_PDO_EXTENSION PdoExtension, 01603 IN DEVICE_TEXT_TYPE QueryType, 01604 IN ULONG Locale, 01605 OUT PWCHAR *Buffer 01606 ); 01607 01608 NTSTATUS 01609 NTAPI 01610 PciQueryId( 01611 IN PPCI_PDO_EXTENSION DeviceExtension, 01612 IN BUS_QUERY_ID_TYPE QueryType, 01613 OUT PWCHAR *Buffer 01614 ); 01615 01616 // 01617 // CardBUS Support 01618 // 01619 VOID 01620 NTAPI 01621 Cardbus_MassageHeaderForLimitsDetermination( 01622 IN PPCI_CONFIGURATOR_CONTEXT Context 01623 ); 01624 01625 VOID 01626 NTAPI 01627 Cardbus_SaveCurrentSettings( 01628 IN PPCI_CONFIGURATOR_CONTEXT Context 01629 ); 01630 01631 VOID 01632 NTAPI 01633 Cardbus_SaveLimits( 01634 IN PPCI_CONFIGURATOR_CONTEXT Context 01635 ); 01636 01637 VOID 01638 NTAPI 01639 Cardbus_RestoreCurrent( 01640 IN PPCI_CONFIGURATOR_CONTEXT Context 01641 ); 01642 01643 VOID 01644 NTAPI 01645 Cardbus_GetAdditionalResourceDescriptors( 01646 IN PPCI_CONFIGURATOR_CONTEXT Context, 01647 IN PPCI_COMMON_HEADER PciData, 01648 IN PIO_RESOURCE_DESCRIPTOR IoDescriptor 01649 ); 01650 01651 VOID 01652 NTAPI 01653 Cardbus_ResetDevice( 01654 IN PPCI_PDO_EXTENSION PdoExtension, 01655 IN PPCI_COMMON_HEADER PciData 01656 ); 01657 01658 VOID 01659 NTAPI 01660 Cardbus_ChangeResourceSettings( 01661 IN PPCI_PDO_EXTENSION PdoExtension, 01662 IN PPCI_COMMON_HEADER PciData 01663 ); 01664 01665 // 01666 // PCI Device Support 01667 // 01668 VOID 01669 NTAPI 01670 Device_MassageHeaderForLimitsDetermination( 01671 IN PPCI_CONFIGURATOR_CONTEXT Context 01672 ); 01673 01674 VOID 01675 NTAPI 01676 Device_SaveCurrentSettings( 01677 IN PPCI_CONFIGURATOR_CONTEXT Context 01678 ); 01679 01680 VOID 01681 NTAPI 01682 Device_SaveLimits( 01683 IN PPCI_CONFIGURATOR_CONTEXT Context 01684 ); 01685 01686 VOID 01687 NTAPI 01688 Device_RestoreCurrent( 01689 IN PPCI_CONFIGURATOR_CONTEXT Context 01690 ); 01691 01692 VOID 01693 NTAPI 01694 Device_GetAdditionalResourceDescriptors( 01695 IN PPCI_CONFIGURATOR_CONTEXT Context, 01696 IN PPCI_COMMON_HEADER PciData, 01697 IN PIO_RESOURCE_DESCRIPTOR IoDescriptor 01698 ); 01699 01700 VOID 01701 NTAPI 01702 Device_ResetDevice( 01703 IN PPCI_PDO_EXTENSION PdoExtension, 01704 IN PPCI_COMMON_HEADER PciData 01705 ); 01706 01707 VOID 01708 NTAPI 01709 Device_ChangeResourceSettings( 01710 IN PPCI_PDO_EXTENSION PdoExtension, 01711 IN PPCI_COMMON_HEADER PciData 01712 ); 01713 01714 // 01715 // PCI-to-PCI Bridge Device Support 01716 // 01717 VOID 01718 NTAPI 01719 PPBridge_MassageHeaderForLimitsDetermination( 01720 IN PPCI_CONFIGURATOR_CONTEXT Context 01721 ); 01722 01723 VOID 01724 NTAPI 01725 PPBridge_SaveCurrentSettings( 01726 IN PPCI_CONFIGURATOR_CONTEXT Context 01727 ); 01728 01729 VOID 01730 NTAPI 01731 PPBridge_SaveLimits( 01732 IN PPCI_CONFIGURATOR_CONTEXT Context 01733 ); 01734 01735 VOID 01736 NTAPI 01737 PPBridge_RestoreCurrent( 01738 IN PPCI_CONFIGURATOR_CONTEXT Context 01739 ); 01740 01741 VOID 01742 NTAPI 01743 PPBridge_GetAdditionalResourceDescriptors( 01744 IN PPCI_CONFIGURATOR_CONTEXT Context, 01745 IN PPCI_COMMON_HEADER PciData, 01746 IN PIO_RESOURCE_DESCRIPTOR IoDescriptor 01747 ); 01748 01749 VOID 01750 NTAPI 01751 PPBridge_ResetDevice( 01752 IN PPCI_PDO_EXTENSION PdoExtension, 01753 IN PPCI_COMMON_HEADER PciData 01754 ); 01755 01756 VOID 01757 NTAPI 01758 PPBridge_ChangeResourceSettings( 01759 IN PPCI_PDO_EXTENSION PdoExtension, 01760 IN PPCI_COMMON_HEADER PciData 01761 ); 01762 01763 // 01764 // Bus Number Routines 01765 // 01766 BOOLEAN 01767 NTAPI 01768 PciAreBusNumbersConfigured( 01769 IN PPCI_PDO_EXTENSION PdoExtension 01770 ); 01771 01772 // 01773 // Routine Interface 01774 // 01775 NTSTATUS 01776 NTAPI 01777 PciCacheLegacyDeviceRouting( 01778 IN PDEVICE_OBJECT DeviceObject, 01779 IN ULONG BusNumber, 01780 IN ULONG SlotNumber, 01781 IN UCHAR InterruptLine, 01782 IN UCHAR InterruptPin, 01783 IN UCHAR BaseClass, 01784 IN UCHAR SubClass, 01785 IN PDEVICE_OBJECT PhysicalDeviceObject, 01786 IN PPCI_PDO_EXTENSION PdoExtension, 01787 OUT PDEVICE_OBJECT *pFoundDeviceObject 01788 ); 01789 01790 // 01791 // External Resources 01792 // 01793 extern SINGLE_LIST_ENTRY PciFdoExtensionListHead; 01794 extern KEVENT PciGlobalLock; 01795 extern PPCI_INTERFACE PciInterfaces[]; 01796 extern PCI_INTERFACE ArbiterInterfaceBusNumber; 01797 extern PCI_INTERFACE ArbiterInterfaceMemory; 01798 extern PCI_INTERFACE ArbiterInterfaceIo; 01799 extern PCI_INTERFACE BusHandlerInterface; 01800 extern PCI_INTERFACE PciRoutingInterface; 01801 extern PCI_INTERFACE PciCardbusPrivateInterface; 01802 extern PCI_INTERFACE PciLegacyDeviceDetectionInterface; 01803 extern PCI_INTERFACE PciPmeInterface; 01804 extern PCI_INTERFACE PciDevicePresentInterface; 01805 //extern PCI_INTERFACE PciNativeIdeInterface; 01806 extern PCI_INTERFACE PciLocationInterface; 01807 extern PCI_INTERFACE AgpTargetInterface; 01808 extern PCI_INTERFACE TranslatorInterfaceInterrupt; 01809 extern PDRIVER_OBJECT PciDriverObject; 01810 extern PWATCHDOG_TABLE WdTable; 01811 extern PPCI_HACK_ENTRY PciHackTable; 01812 extern BOOLEAN PciAssignBusNumbers; 01813 extern BOOLEAN PciEnableNativeModeATA; 01814 extern PPCI_IRQ_ROUTING_TABLE PciIrqRoutingTable; 01815 extern BOOLEAN PciRunningDatacenter; 01816 01817 /* Exported by NTOS, should this go in the NDK? */ 01818 extern NTSYSAPI BOOLEAN InitSafeBootMode; 01819 01820 /* EOF */ Generated on Sat May 26 2012 04:26:03 for ReactOS by
1.7.6.1
|