ReactOS 0.4.17-dev-1196-gb6224c3
routintf.c File Reference
#include <pci.h>
#include <debug.h>
Include dependency graph for routintf.c:

Go to the source code of this file.

Macros

#define NDEBUG
 

Functions

NTSTATUS NTAPI routeintrf_Initializer (IN PVOID Instance)
 
static PPCI_PDO_EXTENSION NTAPI routeintrf_FindDevice (_In_opt_ PDEVICE_OBJECT DeviceObject, _Outptr_result_maybenull_ PPCI_LEGACY_DEVICE *LegacyDevice)
 Finds the PDO extension behind one of our PDOs or a cached legacy device object. LegacyDevice receives the cache entry when the object came from a non-PnP driver.
 
static VOID NTAPI routeintrf_Reference (_In_ PVOID Context)
 
static VOID NTAPI routeintrf_Dereference (_In_ PVOID Context)
 
static NTSTATUS NTAPI routeintrf_GetInterruptRouting (_In_ PDEVICE_OBJECT Pdo, _Out_ ULONG *Bus, _Out_ ULONG *PciSlot, _Out_ UCHAR *InterruptLine, _Out_ UCHAR *InterruptPin, _Out_ UCHAR *ClassCode, _Out_ UCHAR *SubClassCode, _Out_ PDEVICE_OBJECT *ParentPdo, _Out_ ROUTING_TOKEN *RoutingToken, _Out_ UCHAR *Flags)
 Describes where a device's interrupt pin is wired. ParentPdo is the PDO of the bridge above the device's bus, which is not ours for a root bus.
 
static NTSTATUS NTAPI routeintrf_SetInterruptRoutingToken (_In_ PDEVICE_OBJECT Pdo, _In_ PROUTING_TOKEN RoutingToken)
 
static VOID NTAPI routeintrf_UpdateInterruptLine (_In_ PDEVICE_OBJECT Pdo, _In_ UCHAR LineRegister)
 Programs the IRQ chosen for a device into its interrupt line register. The saved BIOS copy is updated too, so a later enumeration does not restore the old line.
 
NTSTATUS NTAPI routeintrf_Constructor (IN PVOID DeviceExtension, IN PVOID Instance, IN PVOID InterfaceData, IN USHORT Version, IN USHORT Size, IN PINTERFACE Interface)
 
NTSTATUS NTAPI PciCacheLegacyDeviceRouting (IN PDEVICE_OBJECT DeviceObject, IN ULONG BusNumber, IN ULONG SlotNumber, IN UCHAR InterruptLine, IN UCHAR InterruptPin, IN UCHAR BaseClass, IN UCHAR SubClass, IN PDEVICE_OBJECT PhysicalDeviceObject, IN PPCI_PDO_EXTENSION PdoExtension, OUT PDEVICE_OBJECT *pFoundDeviceObject)
 
VOID NTAPI PciFreeLegacyDeviceCache (VOID)
 Frees the routing cached for slots claimed by legacy drivers.
 

Variables

PPCI_LEGACY_DEVICE PciLegacyDeviceHead
 
PCI_INTERFACE PciRoutingInterface
 

Macro Definition Documentation

◆ NDEBUG

#define NDEBUG

Definition at line 13 of file routintf.c.

Function Documentation

◆ PciCacheLegacyDeviceRouting()

NTSTATUS NTAPI PciCacheLegacyDeviceRouting ( IN PDEVICE_OBJECT  DeviceObject,
IN ULONG  BusNumber,
IN ULONG  SlotNumber,
IN UCHAR  InterruptLine,
IN UCHAR  InterruptPin,
IN UCHAR  BaseClass,
IN UCHAR  SubClass,
IN PDEVICE_OBJECT  PhysicalDeviceObject,
IN PPCI_PDO_EXTENSION  PdoExtension,
OUT PDEVICE_OBJECT *  pFoundDeviceObject 
)

Definition at line 266 of file routintf.c.

276{
278 PPCI_LEGACY_DEVICE LegacyDevice;
279 PDEVICE_OBJECT FoundDeviceObject;
280 PAGED_CODE();
281
282 /* Scan current registered devices */
283 LegacyDevice = PciLegacyDeviceHead;
285 while (LegacyDevice)
286 {
287 /* Find a match */
288 if ((BusNumber == LegacyDevice->BusNumber) &&
289 (SlotNumber == LegacyDevice->SlotNumber))
290 {
291 /* We already know about this routing */
292 break;
293 }
294
295 /* We know about device already, but for a different location */
296 if (LegacyDevice->DeviceObject == DeviceObject)
297 {
298 /* Free the existing structure, move to the next one */
299 *Link = LegacyDevice->Next;
300 ExFreePoolWithTag(LegacyDevice, 0);
301 LegacyDevice = *Link;
302 }
303 else
304 {
305 /* Keep going */
306 Link = &LegacyDevice->Next;
307 LegacyDevice = LegacyDevice->Next;
308 }
309 }
310
311 /* Did we find a match? */
312 if (!LegacyDevice)
313 {
314 /* Allocate a new cache structure */
315 LegacyDevice = ExAllocatePoolWithTag(PagedPool,
316 sizeof(PCI_LEGACY_DEVICE),
318 if (!LegacyDevice) return STATUS_INSUFFICIENT_RESOURCES;
319
320 /* Save all the data in it */
321 RtlZeroMemory(LegacyDevice, sizeof(PCI_LEGACY_DEVICE));
322 LegacyDevice->BusNumber = BusNumber;
323 LegacyDevice->SlotNumber = SlotNumber;
324 LegacyDevice->InterruptLine = InterruptLine;
325 LegacyDevice->InterruptPin = InterruptPin;
326 LegacyDevice->BaseClass = BaseClass;
327 LegacyDevice->SubClass = SubClass;
329 LegacyDevice->DeviceObject = DeviceObject;
330 LegacyDevice->PdoExtension = PdoExtension;
331
332 /* Link it in the list */
333 LegacyDevice->Next = PciLegacyDeviceHead;
334 PciLegacyDeviceHead = LegacyDevice;
335 }
336
337 /* Check if we found, or created, a matching caching structure */
338 FoundDeviceObject = LegacyDevice->DeviceObject;
339 if (FoundDeviceObject == DeviceObject)
340 {
341 /* Return the device object and success */
342 if (pFoundDeviceObject) *pFoundDeviceObject = DeviceObject;
343 return STATUS_SUCCESS;
344 }
345
346 /* Otherwise, this is a new device object for this location */
347 LegacyDevice->DeviceObject = DeviceObject;
348 if (pFoundDeviceObject) *pFoundDeviceObject = FoundDeviceObject;
349 return STATUS_SUCCESS;
350}
#define PAGED_CODE()
PDEVICE_OBJECT PhysicalDeviceObject
Definition: btrfs_drv.h:1157
#define TAG_PCI_ROUTING
Definition: pci.h:32
@ PdoExtension
Definition: precomp.h:61
#define ExAllocatePoolWithTag(hernya, size, tag)
Definition: env_spec_w32.h:350
#define PagedPool
Definition: env_spec_w32.h:308
#define ExFreePoolWithTag(_P, _T)
Definition: module.h:1109
_In_ ULONG BusNumber
Definition: pciidex.h:65
PPCI_LEGACY_DEVICE PciLegacyDeviceHead
Definition: routintf.c:18
#define STATUS_SUCCESS
Definition: shellext.h:65
UCHAR InterruptPin
Definition: pci.h:593
UCHAR SubClass
Definition: pci.h:595
UCHAR BaseClass
Definition: pci.h:594
PPCI_PDO_EXTENSION PdoExtension
Definition: pci.h:598
UCHAR InterruptLine
Definition: pci.h:592
PDEVICE_OBJECT PhysicalDeviceObject
Definition: pci.h:596
PDEVICE_OBJECT DeviceObject
Definition: pci.h:589
struct _PCI_LEGACY_DEVICE * Next
Definition: pci.h:588
ULONG BusNumber
Definition: pci.h:590
ULONG SlotNumber
Definition: pci.h:591
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158
static int Link(const char **args)
Definition: vfdcmd.c:2414
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2061
_In_ WDFIORESREQLIST _In_ ULONG SlotNumber
Definition: wdfresource.h:68

Referenced by PciAssignSlotResources().

◆ PciFreeLegacyDeviceCache()

VOID NTAPI PciFreeLegacyDeviceCache ( VOID  )

Frees the routing cached for slots claimed by legacy drivers.

Definition at line 357 of file routintf.c.

358{
359 PPCI_LEGACY_DEVICE LegacyDevice;
360 PAGED_CODE();
361
362 while (PciLegacyDeviceHead)
363 {
364 LegacyDevice = PciLegacyDeviceHead;
365 PciLegacyDeviceHead = LegacyDevice->Next;
366 ExFreePoolWithTag(LegacyDevice, TAG_PCI_ROUTING);
367 }
368}

Referenced by PciDriverUnload().

◆ routeintrf_Constructor()

NTSTATUS NTAPI routeintrf_Constructor ( IN PVOID  DeviceExtension,
IN PVOID  Instance,
IN PVOID  InterfaceData,
IN USHORT  Version,
IN USHORT  Size,
IN PINTERFACE  Interface 
)

Definition at line 236 of file routintf.c.

242{
244 PAGED_CODE();
245
247 UNREFERENCED_PARAMETER(InterfaceData);
249
250 /* Only version 1 is supported */
252
253 RouteInterface->Size = sizeof(*RouteInterface);
255 RouteInterface->Context = DeviceExtension;
261 return STATUS_SUCCESS;
262}
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:329
#define STATUS_NOINTERFACE
Definition: ntstatus.h:937
static VOID NTAPI routeintrf_UpdateInterruptLine(_In_ PDEVICE_OBJECT Pdo, _In_ UCHAR LineRegister)
Programs the IRQ chosen for a device into its interrupt line register. The saved BIOS copy is updated...
Definition: routintf.c:200
static NTSTATUS NTAPI routeintrf_GetInterruptRouting(_In_ PDEVICE_OBJECT Pdo, _Out_ ULONG *Bus, _Out_ ULONG *PciSlot, _Out_ UCHAR *InterruptLine, _Out_ UCHAR *InterruptPin, _Out_ UCHAR *ClassCode, _Out_ UCHAR *SubClassCode, _Out_ PDEVICE_OBJECT *ParentPdo, _Out_ ROUTING_TOKEN *RoutingToken, _Out_ UCHAR *Flags)
Describes where a device's interrupt pin is wired. ParentPdo is the PDO of the bridge above the devic...
Definition: routintf.c:116
static NTSTATUS NTAPI routeintrf_SetInterruptRoutingToken(_In_ PDEVICE_OBJECT Pdo, _In_ PROUTING_TOKEN RoutingToken)
Definition: routintf.c:166
static VOID NTAPI routeintrf_Dereference(_In_ PVOID Context)
Definition: routintf.c:103
static VOID NTAPI routeintrf_Reference(_In_ PVOID Context)
Definition: routintf.c:93
PINTERFACE_DEREFERENCE InterfaceDereference
Definition: iotypes.h:5517
PGET_INTERRUPT_ROUTING GetInterruptRouting
Definition: iotypes.h:5518
PUPDATE_INTERRUPT_LINE UpdateInterruptLine
Definition: iotypes.h:5520
PINTERFACE_REFERENCE InterfaceReference
Definition: iotypes.h:5516
PSET_INTERRUPT_ROUTING_TOKEN SetInterruptRoutingToken
Definition: iotypes.h:5519
_In_ UCXUSBDEVICE _In_ ULONG Interface
Definition: ucxusbdevice.h:428
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4539
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT Version
Definition: wdffdo.h:469
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_WMI_INSTANCE_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_opt_ WDFWMIINSTANCE * Instance
Definition: wdfwmi.h:481
struct _INT_ROUTE_INTERFACE_STANDARD * PINT_ROUTE_INTERFACE_STANDARD
#define PCI_INT_ROUTE_INTRF_STANDARD_VER
Definition: iotypes.h:5473

◆ routeintrf_Dereference()

static VOID NTAPI routeintrf_Dereference ( _In_ PVOID  Context)
static

Definition at line 103 of file routintf.c.

105{
107}
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_ PVOID Context
Definition: kse.h:81

Referenced by routeintrf_Constructor().

◆ routeintrf_FindDevice()

static PPCI_PDO_EXTENSION NTAPI routeintrf_FindDevice ( _In_opt_ PDEVICE_OBJECT  DeviceObject,
_Outptr_result_maybenull_ PPCI_LEGACY_DEVICE *  LegacyDevice 
)
static

Finds the PDO extension behind one of our PDOs or a cached legacy device object. LegacyDevice receives the cache entry when the object came from a non-PnP driver.

Definition at line 57 of file routintf.c.

60{
63
64 *LegacyDevice = NULL;
65 if (!DeviceObject)
66 return NULL;
67
68 if (DeviceObject->DriverObject == PciDriverObject)
69 {
70 /* Our FDOs share the driver object */
71 PdoExtension = DeviceObject->DeviceExtension;
72 if (PdoExtension->ExtensionType != PciPdoExtensionType)
73 return NULL;
74
75 return PdoExtension;
76 }
77
78 for (Entry = PciLegacyDeviceHead; Entry; Entry = Entry->Next)
79 {
80 if (Entry->DeviceObject != DeviceObject || !Entry->PdoExtension)
81 continue;
82
83 *LegacyDevice = Entry;
84 return Entry->PdoExtension;
85 }
86
87 return NULL;
88}
#define NULL
Definition: types.h:112
PDRIVER_OBJECT PciDriverObject
Definition: init.c:19
@ PciPdoExtensionType
Definition: pci.h:133
Entry
Definition: section.c:5216

Referenced by routeintrf_GetInterruptRouting(), routeintrf_SetInterruptRoutingToken(), and routeintrf_UpdateInterruptLine().

◆ routeintrf_GetInterruptRouting()

static NTSTATUS NTAPI routeintrf_GetInterruptRouting ( _In_ PDEVICE_OBJECT  Pdo,
_Out_ ULONG *  Bus,
_Out_ ULONG *  PciSlot,
_Out_ UCHAR *  InterruptLine,
_Out_ UCHAR *  InterruptPin,
_Out_ UCHAR *  ClassCode,
_Out_ UCHAR *  SubClassCode,
_Out_ PDEVICE_OBJECT *  ParentPdo,
_Out_ ROUTING_TOKEN *  RoutingToken,
_Out_ UCHAR *  Flags 
)
static

Describes where a device's interrupt pin is wired. ParentPdo is the PDO of the bridge above the device's bus, which is not ours for a root bus.

Definition at line 116 of file routintf.c.

127{
129 PPCI_LEGACY_DEVICE LegacyDevice;
130 PAGED_CODE();
131
132 *Flags = 0;
133
134 PdoExtension = routeintrf_FindDevice(Pdo, &LegacyDevice);
135 if (!PdoExtension)
136 return STATUS_NOT_FOUND;
137
138 if (LegacyDevice)
139 {
140 /* Answer with what was captured when the legacy driver claimed the slot */
141 *Bus = LegacyDevice->BusNumber;
142 *PciSlot = LegacyDevice->SlotNumber;
143 *InterruptLine = LegacyDevice->InterruptLine;
144 *InterruptPin = LegacyDevice->InterruptPin;
145 *ClassCode = LegacyDevice->BaseClass;
146 *SubClassCode = LegacyDevice->SubClass;
147 *ParentPdo = LegacyDevice->PhysicalDeviceObject;
148 *RoutingToken = LegacyDevice->RoutingToken;
149 return STATUS_SUCCESS;
150 }
151
152 *Bus = PdoExtension->ParentFdoExtension->BaseBus;
153 *PciSlot = PdoExtension->Slot.u.AsULONG;
154 *InterruptLine = PdoExtension->RawInterruptLine;
155 *InterruptPin = PdoExtension->InterruptPin;
156 *ClassCode = PdoExtension->BaseClass;
157 *SubClassCode = PdoExtension->SubClass;
158 *ParentPdo = PdoExtension->ParentFdoExtension->PhysicalDeviceObject;
159 *RoutingToken = PdoExtension->RoutingToken;
160 return STATUS_SUCCESS;
161}
_In_ D3DDDI_VIDEO_PRESENT_TARGET_ID _In_ ULONG _In_ ULONG Flags
Definition: dispmprt.h:245
_In_ UCXUSBDEVICE _In_ PDEVICE_OBJECT Pdo
Definition: hubucx.h:280
_In_ ULONG _In_ PCI_SLOT_NUMBER PciSlot
Definition: pciidex.h:66
static PPCI_PDO_EXTENSION NTAPI routeintrf_FindDevice(_In_opt_ PDEVICE_OBJECT DeviceObject, _Outptr_result_maybenull_ PPCI_LEGACY_DEVICE *LegacyDevice)
Finds the PDO extension behind one of our PDOs or a cached legacy device object. LegacyDevice receive...
Definition: routintf.c:57
#define STATUS_NOT_FOUND
Definition: shellext.h:72
ROUTING_TOKEN RoutingToken
Definition: pci.h:597

Referenced by routeintrf_Constructor().

◆ routeintrf_Initializer()

NTSTATUS NTAPI routeintrf_Initializer ( IN PVOID  Instance)

Definition at line 37 of file routintf.c.

38{
40 /* PnP Interfaces don't get Initialized */
41 ASSERTMSG("PCI routeintrf_Initializer, unexpected call.\n", FALSE);
43}
#define FALSE
Definition: types.h:117
#define ASSERTMSG(msg, exp)
Definition: nt_native.h:431
#define STATUS_UNSUCCESSFUL
Definition: udferr_usr.h:132

◆ routeintrf_Reference()

static VOID NTAPI routeintrf_Reference ( _In_ PVOID  Context)
static

Definition at line 93 of file routintf.c.

95{
96 /* Nothing is reached through the context, so there is nothing to count */
98}

Referenced by routeintrf_Constructor().

◆ routeintrf_SetInterruptRoutingToken()

static NTSTATUS NTAPI routeintrf_SetInterruptRoutingToken ( _In_ PDEVICE_OBJECT  Pdo,
_In_ PROUTING_TOKEN  RoutingToken 
)
static

Definition at line 166 of file routintf.c.

169{
171 PPCI_LEGACY_DEVICE LegacyDevice;
172 PAGED_CODE();
173
174 if (!RoutingToken)
176
177 PdoExtension = routeintrf_FindDevice(Pdo, &LegacyDevice);
178 if (!PdoExtension)
179 return STATUS_NOT_FOUND;
180
181 if (LegacyDevice)
182 {
183 LegacyDevice->RoutingToken = *RoutingToken;
184 }
185 else
186 {
187 PdoExtension->RoutingToken = *RoutingToken;
188 }
189
190 return STATUS_SUCCESS;
191}
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135

Referenced by routeintrf_Constructor().

◆ routeintrf_UpdateInterruptLine()

static VOID NTAPI routeintrf_UpdateInterruptLine ( _In_ PDEVICE_OBJECT  Pdo,
_In_ UCHAR  LineRegister 
)
static

Programs the IRQ chosen for a device into its interrupt line register. The saved BIOS copy is updated too, so a later enumeration does not restore the old line.

Definition at line 200 of file routintf.c.

203{
205 PPCI_LEGACY_DEVICE LegacyDevice;
207 PAGED_CODE();
208
209 PdoExtension = routeintrf_FindDevice(Pdo, &LegacyDevice);
210 if (!PdoExtension)
211 return;
212
213 /* PciSetResources writes RawInterruptLine back whenever it programs the device */
214 PdoExtension->RawInterruptLine = LineRegister;
215 PdoExtension->AdjustedInterruptLine = LineRegister;
216 if (LegacyDevice)
217 LegacyDevice->InterruptLine = LineRegister;
218
220 &LineRegister,
221 FIELD_OFFSET(PCI_COMMON_HEADER, u.type0.InterruptLine),
222 sizeof(LineRegister));
223
225 return;
226
227 if (BiosData.u.type0.InterruptLine == LineRegister)
228 return;
229
230 BiosData.u.type0.InterruptLine = LineRegister;
232}
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
VOID NTAPI PciWriteDeviceConfig(IN PPCI_PDO_EXTENSION DeviceExtension, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
Definition: config.c:133
NTSTATUS NTAPI PciGetBiosConfig(IN PPCI_PDO_EXTENSION DeviceExtension, OUT PPCI_COMMON_HEADER PciData)
Definition: utils.c:840
NTSTATUS NTAPI PciSaveBiosConfig(IN PPCI_PDO_EXTENSION DeviceExtension, OUT PPCI_COMMON_HEADER PciData)
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
Definition: glfuncs.h:240
PBIOS_DATA BiosData
Definition: bios.c:42
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:255

Referenced by routeintrf_Constructor().

Variable Documentation

◆ PciLegacyDeviceHead

PPCI_LEGACY_DEVICE PciLegacyDeviceHead

◆ PciRoutingInterface

PCI_INTERFACE PciRoutingInterface
Initial value:
=
{
&GUID_INT_ROUTE_INTERFACE_STANDARD,
0,
}
#define PCI_INTERFACE_FDO
Definition: pci.h:68
@ PciInterface_IntRouteHandler
Definition: pci.h:141
NTSTATUS NTAPI routeintrf_Constructor(IN PVOID DeviceExtension, IN PVOID Instance, IN PVOID InterfaceData, IN USHORT Version, IN USHORT Size, IN PINTERFACE Interface)
Definition: routintf.c:236
NTSTATUS NTAPI routeintrf_Initializer(IN PVOID Instance)
Definition: routintf.c:37
struct _INT_ROUTE_INTERFACE_STANDARD INT_ROUTE_INTERFACE_STANDARD

Definition at line 20 of file routintf.c.