ReactOS  0.4.15-dev-2720-g5ee0925
fxglobalskm.h
Go to the documentation of this file.
1 /*++
2 
3 Copyright (c) Microsoft Corporation
4 
5 Module Name:
6 
7  FxGlobalsKm.h
8 
9 Abstract:
10 
11  This module contains kernel-mode specific globals definitions
12  for the frameworks.
13 
14  For common definitions common between km and um please see
15  FxGlobals.h
16 
17 Author:
18 
19 
20 
21 Environment:
22 
23  Kernel mode only
24 
25 Revision History:
26 
27 
28 --*/
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32 
33 extern PCHAR WdfLdrType;
34 
35 #define WDF_LDR_STATIC_TYPE_STR "WdfStatic"
36 
37 // forward definitions
40 
45 };
46 
47 #define NUM_MDLS_IN_INFO (16)
48 
53 };
54 
55 #define DDI_ENTRY_IMPERSONATION_OK()
56 #define DDI_ENTRY()
57 
58 typedef
59 BOOLEAN
61  );
62 
63 typedef
64 VOID
66  VOID
67  );
68 
69 typedef
73  __in PIRP Irp,
79  );
80 
81 typedef
82 BOOLEAN
88  );
89 
90 typedef
91 BOOLEAN
94  );
95 
96 typedef
100  );
101 
102 typedef
103 NTSTATUS
106  );
107 
108 typedef
109 NTSTATUS
115  __in ULONG Vector,
116  __in KIRQL Irql,
122  );
123 
124 typedef
125 VOID
128  );
129 
130 typedef
131 KIRQL
134  );
135 
136 typedef
137 VOID
140  );
141 
142 typedef
145  __inout PSLIST_HEADER ListHead
146  );
147 
148 typedef
151  __inout PSLIST_HEADER ListHead,
152  __inout PSLIST_ENTRY ListEntry
153  );
154 
155 typedef
156 BOOLEAN
158  __in PIRP Irp
159  );
160 
161 typedef
162 VOID
165  );
166 
167 typedef
168 KAFFINITY
170  VOID
171  );
172 
173 typedef
174 VOID
176  __in PRKDPC Dpc,
178  );
179 
180 typedef
181 BOOLEAN
185  __in ULONG Period,
188  );
189 
190 typedef
191 ULONG
193  VOID
194  );
195 
196 typedef
197 ULONG
199  __out_opt PPROCESSOR_NUMBER ProcNumber
200  );
201 
202 typedef
203 ULONG
205  __in USHORT GroupNumber
206  );
207 
208 typedef
209 ULONG
211  VOID
212  );
213 
214 typedef
215 BOOLEAN
217  VOID
218  );
219 
220 typedef
221 ULONG
223  VOID
224  );
225 
226 typedef
227 NTSTATUS
230  );
231 
232 typedef
233 NTSTATUS
236  __in PPO_FX_DEVICE PoxDevice,
237  __out POHANDLE * Handle
238  );
239 
240 typedef
241 VOID
243  __in POHANDLE Handle
244  );
245 
246 typedef
247 VOID
249  __in POHANDLE Handle
250  );
251 
252 typedef
253 VOID
255  __in POHANDLE Handle,
258  );
259 
260 typedef
261 VOID
263  __in POHANDLE Handle,
266  );
267 
268 typedef
269 VOID
271  __in POHANDLE Handle
272  );
273 
274 typedef
275 VOID
277  __in POHANDLE Handle,
279  );
280 
281 typedef
282 VOID
284  __in POHANDLE Handle,
286  );
287 
288 typedef
289 VOID
291  __in POHANDLE Handle
292  );
293 
294 typedef
295 VOID
297  __in POHANDLE Handle,
298  __in ULONGLONG IdleTimeout
299  );
300 
301 typedef
302 VOID
305  );
306 
307 typedef
308 VOID
311  );
312 
313 typedef
314 VOID
317  _In_ PVOID CallingAddress,
319  );
320 
321 VOID
323  __inout PFX_DRIVER_GLOBALS FxDriverGlobals,
325  );
326 
327 VOID
329  __inout PFX_DRIVER_GLOBALS FxDriverGlobals
330  );
331 
332 VOID
334 
335 VOID
337 
338 VOID
340  __in PFX_DRIVER_GLOBALS FxDriverGlobals
341  );
342 
343 VOID
345  __in PFX_DRIVER_GLOBALS FxDriverGlobals
346  );
347 
349  //
350  // Internal data types.
351  //
352 private:
353  typedef struct _FX_DRIVER_TRACKER_ENTRY {
356 
357  //
358  // Public interface.
359  //
360 public:
362  NTSTATUS
363  Initialize();
364 
365  VOID
366  Uninitialize();
367 
369  NTSTATUS
370  Register(
371  __in PFX_DRIVER_GLOBALS FxDriverGlobals
372  );
373 
374  VOID
375  Deregister(
376  __in PFX_DRIVER_GLOBALS FxDriverGlobals
377  );
378 
379  //
380  // Tracks the driver usage on the current processor.
381  // KeGetCurrentProcessorNumberEx is called directly because the procgrp.lib
382  // provides the downlevel support for Vista, XP and Win2000.
383  //
384  __inline
385  VOID
387  __in PFX_DRIVER_GLOBALS FxDriverGlobals
388  )
389  {
391 
394  FxDriverGlobals;
395  }
396 
397  //
398  // Returns the tracked driver (globals) on the current processor.
399  // KeGetCurrentProcessorNumberEx is called directly because the procgrp.lib
400  // provides the downlevel support for Vista, XP and Win2000.
401  //
403  __inline
406  {
408 
410 
413 
414  return fxDriverGlobals;
415  }
416 
417  //
418  // Helper functions.
419  //
420 private:
421  //
422  // Returns the per-processor cache-aligned driver usage ref structure for
423  // given processor.
424  //
425  __inline
429  )
430  {
432  Index * m_EntrySize));
433  }
434 
435  //
436  // Data members.
437  //
438 private:
439  //
440  // Pointer to array of cache-line aligned tracking driver structures.
441  //
443 
444  //
445  // Points to pool of per-proc tracking entries that needs to be freed.
446  //
448 
449  //
450  // Size of each padded tracking driver structure.
451  //
453 
454  //
455  // Indicates # of entries in the array of tracking driver structures.
456  //
459 
460 
461 #include "fxglobals.h"
462 
463 
464 //
465 // This inline function tracks driver usage; This info is used by the
466 // debug dump callback routine for selecting which driver's log to save
467 // in the minidump. At this time we track the following OS to framework calls:
468 // (a) IRP dispatch (general, I/O, PnP, WMI).
469 // (b) Request's completion callbacks.
470 // (c) Work Item's (& System Work Item's) callback handlers.
471 // (d) Timer's callback handlers.
472 //
473 __inline
474 VOID
476  __in PFX_DRIVER_GLOBALS FxDriverGlobals
477  )
478 {
479  if (FxDriverGlobals->FxTrackDriverForMiniDumpLog) {
480  FxLibraryGlobals.DriverTracker.TrackDriver(FxDriverGlobals);
481  }
482 }
483 
485 __inline
486 PVOID
489  )
490 
491 /*++
492 
493 Routine Description:
494 
495  This function removes (pops) the first entry from the specified
496  nonpaged lookaside list. This function was added to allow request allocated
497  by a lookaside list to be freed by ExFreePool and hence do no tracking of statistics.
498 
499 Arguments:
500 
501  Lookaside - Supplies a pointer to a nonpaged lookaside list structure.
502 
503 Return Value:
504 
505  If an entry is removed from the specified lookaside list, then the
506  address of the entry is returned as the function value. Otherwise,
507  NULL is returned.
508 
509 --*/
510 
511 {
512 
513  PVOID Entry;
514 
515  Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead);
516 
517  if (Entry == NULL) {
518  Entry = (Lookaside->L.Allocate)(Lookaside->L.Type,
519  Lookaside->L.Size,
520  Lookaside->L.Tag);
521  }
522 
523  return Entry;
524 }
525 
526 __inline
527 VOID
531  )
532 /*++
533 
534 Routine Description:
535 
536  This function inserts (pushes) the specified entry into the specified
537  nonpaged lookaside list. This function was added to allow request allocated
538  by a lookaside list to be freed by ExFreePool and hence do no tracking of statistics.
539 
540 Arguments:
541 
542  Lookaside - Supplies a pointer to a nonpaged lookaside list structure.
543 
544  Entry - Supples a pointer to the entry that is inserted in the
545  lookaside list.
546 
547 Return Value:
548 
549  None.
550 
551 --*/
552 
553 {
554  if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) {
555  (Lookaside->L.Free)(Entry);
556  }
557  else {
560  }
561 }
562 
563 __inline
564 PVOID
567  _In_opt_ size_t ElementSize = 0
568  )
569 
570 /*++
571 
572 Routine Description:
573 
574  This function removes (pops) the first entry from the specified
575  nonpaged lookaside list.
576 
577 Arguments:
578 
579  Lookaside - Supplies a pointer to a nonpaged lookaside list structure.
580 
581 Return Value:
582 
583  If an entry is removed from the specified lookaside list, then the
584  address of the entry is returned as the function value. Otherwise,
585  NULL is returned.
586 
587 --*/
588 
589 {
590 
591  PVOID Entry;
592 
593  UNREFERENCED_PARAMETER(ElementSize);
594 
595  Lookaside->L.TotalAllocates += 1;
596 
597  Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead);
598 
599  if (Entry == NULL) {
600  Lookaside->L.AllocateMisses += 1;
601  Entry = (Lookaside->L.Allocate)(Lookaside->L.Type,
602  Lookaside->L.Size,
603  Lookaside->L.Tag);
604  }
605 
606  return Entry;
607 }
608 
609 __inline
610 VOID
614  )
615 /*++
616 
617 Routine Description:
618 
619  This function inserts (pushes) the specified entry into the specified
620  nonpaged lookaside list.
621 
622 Arguments:
623 
624  Lookaside - Supplies a pointer to a nonpaged lookaside list structure.
625 
626  Entry - Supples a pointer to the entry that is inserted in the
627  lookaside list.
628 
629 Return Value:
630 
631  None.
632 
633 --*/
634 
635 {
636  Lookaside->L.TotalFrees += 1;
637 
638  if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) {
639  Lookaside->L.FreeMisses += 1;
640  (Lookaside->L.Free)(Entry);
641 
642  }
643  else {
646  }
647 }
648 
650 __inline
651 PVOID
654  )
655 
656 /*++
657 
658 Routine Description:
659 
660  This function removes (pops) the first entry from the specified
661  paged lookaside list.
662 
663 Arguments:
664 
665  Lookaside - Supplies a pointer to a paged lookaside list structure.
666 
667 Return Value:
668 
669  If an entry is removed from the specified lookaside list, then the
670  address of the entry is returned as the function value. Otherwise,
671  NULL is returned.
672 
673 --*/
674 
675 {
676 
677  PVOID Entry;
678 
679  Lookaside->L.TotalAllocates += 1;
680 
681  Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead);
682  if (Entry == NULL) {
683  Lookaside->L.AllocateMisses += 1;
684  Entry = (Lookaside->L.Allocate)(Lookaside->L.Type,
685  Lookaside->L.Size,
686  Lookaside->L.Tag);
687  }
688 
689  return Entry;
690 }
691 
692 __inline
693 VOID
697  )
698 /*++
699 
700 Routine Description:
701 
702  This function inserts (pushes) the specified entry into the specified
703  paged lookaside list.
704 
705 Arguments:
706 
707  Lookaside - Supplies a pointer to a paged lookaside list structure.
708 
709  Entry - Supples a pointer to the entry that is inserted in the
710  lookaside list.
711 
712 Return Value:
713 
714  None.
715 
716 --*/
717 
718 {
719  Lookaside->L.TotalFrees += 1;
720 
721  if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) {
722  Lookaside->L.FreeMisses += 1;
723  (Lookaside->L.Free)(Entry);
724 
725  } else {
728  }
729 }
730 
732 __inline
733 BOOLEAN
735  VOID
736  )
737 {
738  //
739  // Groups are supported in Win 7 and forward.
740  //
742 }
743 
744 #ifdef __cplusplus
745 }
746 #endif
_In_ LARGE_INTEGER _In_ ULONG _In_ ULONG TolerableDelay
Definition: kefuncs.h:1324
signed char * PCHAR
Definition: retypes.h:7
struct FxAllocatedMdls * Next
Definition: fxglobalskm.h:52
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_opt_ PVOID _In_ BOOLEAN _In_ BOOLEAN InvokeOnError
Definition: iofuncs.h:1939
struct _FX_DUMP_DRIVER_INFO_ENTRY * PFX_DUMP_DRIVER_INFO_ENTRY
Definition: fxglobalskm.h:39
volatile PFX_DRIVER_GLOBALS FxDriverGlobals
Definition: fxglobalskm.h:354
VOID(STDCALL * PFN_VF_CHECK_NX_POOL_TYPE)(_In_ POOL_TYPE PoolType, _In_ PVOID CallingAddress, _In_ ULONG PoolTag)
Definition: fxglobalskm.h:315
* PPROCESSOR_NUMBER
Definition: ntbasedef.h:642
#define _Must_inspect_result_
Definition: no_sal2.h:62
PFX_DRIVER_TRACKER_ENTRY m_DriverUsage
Definition: fxglobalskm.h:442
_In_ PKSERVICE_ROUTINE _In_opt_ PVOID _In_opt_ PKSPIN_LOCK _In_ ULONG _In_ KIRQL _In_ KIRQL _In_ KINTERRUPT_MODE InterruptMode
Definition: iofuncs.h:800
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
Definition: wdfdpc.h:107
ULONG(STDCALL * PFN_KE_QUERY_MAXIMUM_PROCESSOR_COUNT)(VOID)
Definition: fxglobalskm.h:210
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_ _In_ _Strict_type_match_ POOL_TYPE _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_opt_ ULONG _Out_ WDFLOOKASIDE * Lookaside
Definition: wdfmemory.h:407
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
Definition: wdfio.h:863
struct _Entry Entry
Definition: kefuncs.h:627
VOID(STDCALL * PFN_POX_START_DEVICE_POWER_MANAGEMENT)(__in POHANDLE Handle)
Definition: fxglobalskm.h:242
BOOLEAN(STDCALL * PFN_KE_REGISTER_BUGCHECK_REASON_CALLBACK)(__in PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord, __in PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine, __in KBUGCHECK_CALLBACK_REASON Reason, __in PUCHAR Component)
Definition: fxglobalskm.h:83
#define __in_opt
Definition: dbghelp.h:38
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:317
_In_ ULONG Component
Definition: potypes.h:496
_In_ PKSERVICE_ROUTINE _In_opt_ PVOID _In_opt_ PKSPIN_LOCK _In_ ULONG _In_ KIRQL _In_ KIRQL _In_ KINTERRUPT_MODE _In_ BOOLEAN ShareVector
Definition: iofuncs.h:800
VOID(STDCALL * PFN_PO_SET_SYSTEM_WAKE)(__inout PIRP Irp)
Definition: fxglobalskm.h:163
unsigned char * PUCHAR
Definition: retypes.h:3
__inline VOID FxFreeToNPagedLookasideListNoTracking(__in PNPAGED_LOOKASIDE_LIST Lookaside, __in PVOID Entry)
Definition: fxglobalskm.h:528
LONG NTSTATUS
Definition: precomp.h:26
VOID FxRegisterBugCheckCallback(__inout PFX_DRIVER_GLOBALS FxDriverGlobals, __in PDRIVER_OBJECT DriverObject)
VOID(STDCALL * PFN_POX_REPORT_DEVICE_POWERED_ON)(__in POHANDLE Handle)
Definition: fxglobalskm.h:270
VOID(STDCALL * PFN_KE_FLUSH_QUEUED_DPCS)(VOID)
Definition: fxglobalskm.h:65
NTSTATUS(STDCALL * PFN_IO_SET_COMPLETION_ROUTINE_EX)(__in PDEVICE_OBJECT DeviceObject, __in PIRP Irp, __in PIO_COMPLETION_ROUTINE CompletionRoutine, __in PVOID Context, __in BOOLEAN InvokeOnSuccess, __in BOOLEAN InvokeOnError, __in BOOLEAN InvokeOnCancel)
Definition: fxglobalskm.h:71
_In_ LARGE_INTEGER _In_ ULONG Period
Definition: kefuncs.h:1324
KSPIN_LOCK * PKSPIN_LOCK
Definition: env_spec_w32.h:73
__inline VOID FxFreeToPagedLookasideList(__in PPAGED_LOOKASIDE_LIST Lookaside, __in PVOID Entry)
Definition: fxglobalskm.h:694
VOID Deregister(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
KIRQL(FASTCALL * PFN_KF_RAISE_IRQL)(__in KIRQL NewIrql)
Definition: fxglobalskm.h:132
ULONG(STDCALL * PFN_KE_GET_RECOMMENDED_SHARED_DATA_ALIGNMENT)(VOID)
Definition: fxglobalskm.h:222
Definition: fxbugcheck.h:81
#define FASTCALL
Definition: nt_native.h:50
_Out_ PKIRQL Irql
Definition: csq.h:179
VOID(STDCALL * PFN_POX_UNREGISTER_DEVICE)(__in POHANDLE Handle)
Definition: fxglobalskm.h:248
__inline PVOID FxAllocateFromNPagedLookasideList(_In_ PNPAGED_LOOKASIDE_LIST Lookaside, _In_opt_ size_t ElementSize=0)
Definition: fxglobalskm.h:565
NTSTATUS(STDCALL * PFN_IO_CONNECT_INTERRUPT)(__out PKINTERRUPT *InterruptObject, __in PKSERVICE_ROUTINE ServiceRoutine, __in_opt PVOID ServiceContext, __in_opt PKSPIN_LOCK SpinLock, __in ULONG Vector, __in KIRQL Irql, __in KIRQL SynchronizeIrql, __in KINTERRUPT_MODE InterruptMode, __in BOOLEAN ShareVector, __in KAFFINITY ProcessorEnableMask, __in BOOLEAN FloatingSave)
Definition: fxglobalskm.h:110
PSLIST_ENTRY WINAPI InterlockedPopEntrySList(PSLIST_HEADER ListHead)
Definition: interlocked.c:55
#define _In_opt_
Definition: no_sal2.h:212
KAFFINITY(STDCALL * PFN_KE_QUERY_ACTIVE_PROCESSORS)(VOID)
Definition: fxglobalskm.h:169
struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST * PNPAGED_LOOKASIDE_LIST
KSERVICE_ROUTINE * PKSERVICE_ROUTINE
Definition: ketypes.h:500
__inline PFX_DRIVER_TRACKER_ENTRY GetProcessorDriverEntryRef(__in ULONG Index)
Definition: fxglobalskm.h:427
BOOLEAN(STDCALL * PFN_PO_GET_SYSTEM_WAKE)(__in PIRP Irp)
Definition: fxglobalskm.h:157
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
Definition: wdfchildlist.h:683
FX_DRIVER_TRACKER_CACHE_AWARE DriverTracker
Definition: fxglobals.h:812
UCHAR KIRQL
Definition: env_spec_w32.h:591
_Must_inspect_result_ _In_ PFLT_GET_OPERATION_STATUS_CALLBACK CallbackRoutine
Definition: fltkernel.h:1035
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
#define __out_opt
Definition: dbghelp.h:65
KBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord
_In_ ULONG _In_opt_ PVOID _In_ PDRIVER_OBJECT _In_ PDRIVER_NOTIFICATION_CALLBACK_ROUTINE _Inout_opt_ __drv_aliasesMem PVOID _Outptr_result_nullonfailure_ _At_ * NotificationEntry(return==0, __drv_allocatesMem(Mem))) PVOID *NotificationEntry
_In_ PIRP Irp
Definition: csq.h:116
PSLIST_ENTRY(FASTCALL * PFN_INTERLOCKED_POP_ENTRY_SLIST)(__inout PSLIST_HEADER ListHead)
Definition: fxglobalskm.h:144
VOID(STDCALL * PFN_IO_REPORT_INTERRUPT_INACTIVE)(_In_ PIO_REPORT_INTERRUPT_ACTIVE_STATE_PARAMETERS Parameters)
Definition: fxglobalskm.h:309
VOID(STDCALL * PFN_POX_COMPLETE_DEVICE_POWER_NOT_REQUIRED)(__in POHANDLE Handle)
Definition: fxglobalskm.h:290
BOOLEAN(STDCALL * PFN_KE_DEREGISTER_BUGCHECK_REASON_CALLBACK)(__in PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecords)
Definition: fxglobalskm.h:92
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
Definition: wdfminiport.h:64
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFSPINLOCK * SpinLock
Definition: wdfsync.h:225
FORCEINLINE ULONG KeGetCurrentProcessorIndex(VOID)
Definition: ke.h:158
#define __out
Definition: dbghelp.h:62
VOID(FASTCALL * PFN_KF_LOWER_IRQL)(__in KIRQL NewIrql)
Definition: fxglobalskm.h:138
unsigned char BOOLEAN
struct _FX_DRIVER_TRACKER_CACHE_AWARE * PFX_DRIVER_TRACKER_CACHE_AWARE
VOID FxPurgeBugCheckDriverInfo(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
enum _KINTERRUPT_MODE KINTERRUPT_MODE
_In_ PKSERVICE_ROUTINE _In_opt_ PVOID _In_opt_ PKSPIN_LOCK _In_ ULONG _In_ KIRQL _In_ KIRQL SynchronizeIrql
Definition: iofuncs.h:800
_In_ PKSERVICE_ROUTINE _In_opt_ PVOID _In_opt_ PKSPIN_LOCK _In_ ULONG _In_ KIRQL _In_ KIRQL _In_ KINTERRUPT_MODE _In_ BOOLEAN _In_ KAFFINITY ProcessorEnableMask
Definition: iofuncs.h:800
struct _FX_DRIVER_TRACKER_CACHE_AWARE FX_DRIVER_TRACKER_CACHE_AWARE
KBUGCHECK_REASON_CALLBACK_ROUTINE * PKBUGCHECK_REASON_CALLBACK_ROUTINE
Definition: ketypes.h:259
VOID(STDCALL * PFN_IO_DISCONNECT_INTERRUPT)(__in PKINTERRUPT InterruptObject)
Definition: fxglobalskm.h:126
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
Definition: wdfdriver.h:213
BOOLEAN(STDCALL * PFN_KE_SET_COALESCABLE_TIMER)(__inout PKTIMER Timer, __in LARGE_INTEGER DueTime, __in ULONG Period, __in ULONG TolerableDelay, __in_opt PKDPC Dpc)
Definition: fxglobalskm.h:182
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_opt_ PVOID _In_ BOOLEAN _In_ BOOLEAN _In_ BOOLEAN InvokeOnCancel
Definition: iofuncs.h:1939
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
ULONG(STDCALL * PFN_KE_GET_CURRENT_PROCESSOR_NUMBER_EX)(__out_opt PPROCESSOR_NUMBER ProcNumber)
Definition: fxglobalskm.h:198
#define STDCALL
Definition: wdf.h:45
#define ASSERT(a)
Definition: mode.c:44
VOID(STDCALL * PFN_POX_IDLE_COMPONENT)(__in POHANDLE Handle, __in ULONG Component, __in ULONG Flags)
Definition: fxglobalskm.h:262
char CCHAR
Definition: typedefs.h:51
INT POOL_TYPE
Definition: typedefs.h:78
_In_ WDFCOLLECTION _In_ ULONG Index
uint64_t ULONGLONG
Definition: typedefs.h:67
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_opt_ PVOID _In_ BOOLEAN InvokeOnSuccess
Definition: iofuncs.h:1939
__inline VOID TrackDriver(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
Definition: fxglobalskm.h:386
struct _FX_DRIVER_GLOBALS * PFX_DRIVER_GLOBALS
Definition: fxglobalskm.h:38
#define PSLIST_ENTRY
Definition: rtltypes.h:134
FORCEINLINE USHORT ExQueryDepthSList(_In_ PSLIST_HEADER SListHead)
Definition: exfuncs.h:153
_In_ PKSERVICE_ROUTINE _In_opt_ PVOID ServiceContext
Definition: iofuncs.h:800
ULONG(STDCALL * PFN_KE_QUERY_MAXIMUM_PROCESSOR_COUNT_EX)(__in USHORT GroupNumber)
Definition: fxglobalskm.h:204
_Must_inspect_result_ __inline BOOLEAN FxIsProcessorGroupSupported(VOID)
Definition: fxglobalskm.h:734
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_ _Strict_type_match_ POOL_TYPE _In_opt_ ULONG PoolTag
Definition: wdfmemory.h:159
BOOLEAN ProcessorGroupSupport
Definition: fxglobals.h:798
_Must_inspect_result_ NTSTATUS Initialize()
Definition: ketypes.h:687
#define NTSTATUS
Definition: precomp.h:20
#define VOID
Definition: acefi.h:82
VOID(STDCALL * PFN_POX_ACTIVATE_COMPONENT)(__in POHANDLE Handle, __in ULONG Component, __in ULONG Flags)
Definition: fxglobalskm.h:254
_In_ PKSERVICE_ROUTINE _In_opt_ PVOID _In_opt_ PKSPIN_LOCK _In_ ULONG _In_ KIRQL _In_ KIRQL _In_ KINTERRUPT_MODE _In_ BOOLEAN _In_ KAFFINITY _In_ BOOLEAN FloatingSave
Definition: iofuncs.h:800
VOID FxCacheBugCheckDriverInfo(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
VOID FxUninitializeBugCheckDriverInfo()
NTSTATUS(STDCALL * PFN_IO_CONNECT_INTERRUPT_EX)(__inout PIO_CONNECT_INTERRUPT_PARAMETERS Parameters)
Definition: fxglobalskm.h:98
#define __inout
Definition: dbghelp.h:50
_Must_inspect_result_ __inline PFX_DRIVER_GLOBALS GetCurrentTrackedDriver()
Definition: fxglobalskm.h:405
VOID(STDCALL * PFN_IO_REPORT_INTERRUPT_ACTIVE)(_In_ PIO_REPORT_INTERRUPT_ACTIVE_STATE_PARAMETERS Parameters)
Definition: fxglobalskm.h:303
NTKERNELAPI PSLIST_ENTRY FASTCALL InterlockedPushEntrySList(IN PSLIST_HEADER ListHead, IN PSLIST_ENTRY ListEntry)
Definition: interlocked.c:82
__inline VOID FxFreeToNPagedLookasideList(__in PNPAGED_LOOKASIDE_LIST Lookaside, __in PVOID Entry)
Definition: fxglobalskm.h:611
FxLibraryGlobalsType FxLibraryGlobals
Definition: globals.cpp:95
_In_opt_ PENTER_STATE_SYSTEM_HANDLER _In_opt_ PVOID _In_ LONG _In_opt_ LONG volatile * Number
Definition: ntpoapi.h:204
_Must_inspect_result_ _In_ PWDF_TIMER_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFTIMER * Timer
Definition: wdftimer.h:153
ULONG(STDCALL * PFN_KE_GET_CURRENT_PROCESSOR_NUMBER)(VOID)
Definition: fxglobalskm.h:192
#define _In_
Definition: no_sal2.h:158
VOID FxUnregisterBugCheckCallback(__inout PFX_DRIVER_GLOBALS FxDriverGlobals)
FxObject * Owner
Definition: fxglobalskm.h:43
unsigned short USHORT
Definition: pedump.c:61
ULONG_PTR KAFFINITY
Definition: compat.h:85
Definition: fxglobalskm.h:353
_In_ PKSERVICE_ROUTINE _In_opt_ PVOID _In_opt_ PKSPIN_LOCK _In_ ULONG Vector
Definition: iofuncs.h:800
PFX_DRIVER_GLOBALS fxDriverGlobals
_In_ WDFREQUEST _In_opt_ PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine
Definition: wdfrequest.h:893
NTSTATUS(STDCALL * PFN_POX_REGISTER_DEVICE)(__in MdDeviceObject Pdo, __in PPO_FX_DEVICE PoxDevice, __out POHANDLE *Handle)
Definition: fxglobalskm.h:234
_Must_inspect_result_ __inline PVOID FxAllocateFromPagedLookasideList(__in PPAGED_LOOKASIDE_LIST Lookaside)
Definition: fxglobalskm.h:652
#define NULL
Definition: types.h:112
__inline VOID FX_TRACK_DRIVER(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
Definition: fxglobalskm.h:475
IO_COMPLETION_ROUTINE * PIO_COMPLETION_ROUTINE
Definition: iotypes.h:2835
BOOLEAN(STDCALL * PFN_KE_ARE_APCS_DISABLED)(VOID)
Definition: fxglobalskm.h:216
_In_ WDFTIMER _In_ LONGLONG DueTime
Definition: wdftimer.h:187
_In_ HANDLE Handle
Definition: extypes.h:390
struct tagContext Context
Definition: acpixf.h:1034
#define BOOLEAN
Definition: pedump.c:73
VOID FxInitializeBugCheckDriverInfo()
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
Definition: wdfdevice.h:3810
unsigned int ULONG
Definition: retypes.h:1
VOID(STDCALL * PFN_POX_COMPLETE_IDLE_STATE)(__in POHANDLE Handle, __in ULONG Component)
Definition: fxglobalskm.h:276
KBUGCHECK_CALLBACK_REASON
Definition: ketypes.h:247
BOOLEAN(STDCALL * PFN_KD_REFRESH)()
Definition: fxglobalskm.h:60
_Must_inspect_result_ NTSTATUS Register(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
NTSTATUS(STDCALL * PFN_IO_DISCONNECT_INTERRUPT_EX)(__in PIO_DISCONNECT_INTERRUPT_PARAMETERS Parameters)
Definition: fxglobalskm.h:104
struct _FX_DRIVER_TRACKER_CACHE_AWARE::_FX_DRIVER_TRACKER_ENTRY * PFX_DRIVER_TRACKER_ENTRY
VOID(STDCALL * PFN_POX_SET_DEVICE_IDLE_TIMEOUT)(__in POHANDLE Handle, __in ULONGLONG IdleTimeout)
Definition: fxglobalskm.h:296
struct LOOKASIDE_ALIGN _PAGED_LOOKASIDE_LIST * PPAGED_LOOKASIDE_LIST
NTSTATUS(STDCALL * PFN_IO_UNREGISTER_PLUGPLAY_NOTIFICATION_EX)(__in PVOID NotificationEntry)
Definition: fxglobalskm.h:228
struct _FX_DRIVER_TRACKER_CACHE_AWARE::_FX_DRIVER_TRACKER_ENTRY FX_DRIVER_TRACKER_ENTRY
PCHAR WdfLdrType
Definition: version.cpp:108
PVOID PVOID PWCHAR PVOID USHORT PULONG Reason
Definition: env.c:47
#define __in
Definition: dbghelp.h:35
VOID(STDCALL * PFN_KE_SET_TARGET_PROCESSOR_DPC)(__in PRKDPC Dpc, __in CCHAR Number)
Definition: fxglobalskm.h:175
PSLIST_ENTRY(FASTCALL * PFN_INTERLOCKED_PUSH_ENTRY_SLIST)(__inout PSLIST_HEADER ListHead, __inout PSLIST_ENTRY ListEntry)
Definition: fxglobalskm.h:150
_Must_inspect_result_ __inline PVOID FxAllocateFromNPagedLookasideListNoTracking(__in PNPAGED_LOOKASIDE_LIST Lookaside)
Definition: fxglobalskm.h:487
base of all file and directory entries
Definition: entries.h:82
VOID(STDCALL * PFN_POX_COMPLETE_IDLE_CONDITION)(__in POHANDLE Handle, __in ULONG Component)
Definition: fxglobalskm.h:283
_Requires_lock_held_ SpinLock _Releases_lock_ SpinLock _In_ _IRQL_restores_ KIRQL NewIrql
Definition: ke.h:114
_In_ PKSERVICE_ROUTINE ServiceRoutine
Definition: iofuncs.h:800
#define NUM_MDLS_IN_INFO
Definition: fxglobalskm.h:47