ReactOS  0.4.14-dev-52-g6116262
pcivrify.c
Go to the documentation of this file.
1 /*
2  * PROJECT: ReactOS PCI Bus Driver
3  * LICENSE: BSD - See COPYING.ARM in the top level directory
4  * FILE: drivers/bus/pci/pcivrify.c
5  * PURPOSE: PCI Driver Verifier Support
6  * PROGRAMMERS: ReactOS Portable Systems Group
7  */
8 
9 /* INCLUDES *******************************************************************/
10 
11 #include <pci.h>
12 
13 #define NDEBUG
14 #include <debug.h>
15 
16 /* GLOBALS ********************************************************************/
17 
20 
22 {
23  {
24  1,
26  0,
27  "The BIOS has reprogrammed the bus numbers of an active PCI device "
28  "(!devstack %DevObj) during a dock or undock!"
29  },
30  {
31  2,
33  0,
34  "A device in the system did not update it's PMCSR register in the spec "
35  "mandated time (!devstack %DevObj, Power state D%Ulong)"
36  },
37  {
38  3,
40  0,
41  "A driver controlling a PCI device has tried to access OS controlled "
42  "configuration space registers (!devstack %DevObj, Offset 0x%Ulong1, "
43  "Length 0x%Ulong2)"
44  },
45  {
46  4,
48  0,
49  "A driver controlling a PCI device has tried to read or write from an "
50  "invalid space using IRP_MN_READ/WRITE_CONFIG or via BUS_INTERFACE_STANDARD."
51  " NB: These functions take WhichSpace parameters of the form PCI_WHICHSPACE_*"
52  " and not a BUS_DATA_TYPE (!devstack %DevObj, WhichSpace 0x%Ulong1)"
53  },
54 };
55 
56 /* FUNCTIONS ******************************************************************/
57 
59 NTAPI
61 {
62  PPCI_VERIFIER_DATA VerifierData;
63 
64  /* Scan the verifier failure table for this code */
65  VerifierData = PciVerifierFailureTable;
66  while (VerifierData->FailureCode != FailureCode)
67  {
68  /* Keep searching */
69  ++VerifierData;
71  }
72 
73  /* Return the entry for this code */
74  return VerifierData;
75 }
76 
77 DRIVER_NOTIFICATION_CALLBACK_ROUTINE PciVerifierProfileChangeCallback;
78 
80 NTAPI
83 {
86 
87  /* This function is not yet implemented */
89  return STATUS_SUCCESS;
90 }
91 
92 VOID
93 NTAPI
95 {
97 
98  /* Check if the kernel driver verifier is enabled */
100  {
101  /* Register a notification for changes, to keep track of the PCI tree */
103  0,
104  NULL,
105  DriverObject,
107  NULL,
110  }
111 }
112 
113 /* EOF */
_In_ PVOID NotificationStructure
Definition: iofuncs.h:1203
BOOLEAN PciVerifierRegistered
Definition: pcivrify.c:18
#define IN
Definition: typedefs.h:38
#define TRUE
Definition: types.h:120
DRIVER_NOTIFICATION_CALLBACK_ROUTINE PciVerifierProfileChangeCallback
Definition: pcivrify.c:77
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:323
LONG NTSTATUS
Definition: precomp.h:26
BOOLEAN NTAPI VfIsVerificationEnabled(IN VF_OBJECT_TYPE VfObjectType, IN PVOID Object OPTIONAL)
Definition: driver.c:22
PVOID PciVerifierNotificationHandle
Definition: pcivrify.c:19
ULONG FailureCode
Definition: pci.h:413
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
Definition: IoEaTest.cpp:117
PCI_VERIFIER_DATA PciVerifierFailureTable[PCI_VERIFIER_CODES]
Definition: pcivrify.c:21
VOID NTAPI PciVerifierInit(IN PDRIVER_OBJECT DriverObject)
Definition: pcivrify.c:94
unsigned char BOOLEAN
smooth NULL
Definition: ftsmooth.c:416
static PDRIVER_OBJECT DriverObject
Definition: template.c:42
PPCI_VERIFIER_DATA NTAPI PciVerifierRetrieveFailureData(IN ULONG FailureCode)
Definition: pcivrify.c:60
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
#define PCI_VERIFIER_CODES
Definition: pci.h:80
NTSTATUS NTAPI IoRegisterPlugPlayNotification(IN IO_NOTIFICATION_EVENT_CATEGORY EventCategory, IN ULONG EventCategoryFlags, IN PVOID EventCategoryData OPTIONAL, IN PDRIVER_OBJECT DriverObject, IN PDRIVER_NOTIFICATION_CALLBACK_ROUTINE CallbackRoutine, IN PVOID Context, OUT PVOID *NotificationEntry)
Definition: pnpnotify.c:249
Status
Definition: gdiplustypes.h:24
#define UNIMPLEMENTED_DBGBREAK(...)
Definition: debug.h:57
unsigned int ULONG
Definition: retypes.h:1
return STATUS_SUCCESS
Definition: btrfs.c:2966