ReactOS  0.4.15-dev-3165-gdf6fff7
wdfinterrupt.h
Go to the documentation of this file.
1 /*++
2 
3 Copyright (c) Microsoft Corporation. All rights reserved.
4 
5 _WdfVersionBuild_
6 
7 Module Name:
8 
9  wdfinterrupt.h
10 
11 Abstract:
12 
13  This is the C header for driver framework Interrupt object
14 
15 Revision History:
16 
17 
18 --*/
19 
20 //
21 // NOTE: This header is generated by stubwork. Please make any
22 // modifications to the corresponding template files
23 // (.x or .y) and use stubwork to regenerate the header
24 //
25 
26 #ifndef _WDFINTERRUPT_H_
27 #define _WDFINTERRUPT_H_
28 
29 #ifndef WDF_EXTERN_C
30  #ifdef __cplusplus
31  #define WDF_EXTERN_C extern "C"
32  #define WDF_EXTERN_C_START extern "C" {
33  #define WDF_EXTERN_C_END }
34  #else
35  #define WDF_EXTERN_C
36  #define WDF_EXTERN_C_START
37  #define WDF_EXTERN_C_END
38  #endif
39 #endif
40 
42 
43 
44 
45 #if (NTDDI_VERSION >= NTDDI_WIN2K)
46 
47 //
48 // Message Signaled Interrupts (MSI) information structure
49 //
55 
56 typedef enum _WDF_INTERRUPT_POLICY {
64 
71 
72 
73 
74 
75 //
76 // This is the function that gets invoked when the hardware ISR occurs.
77 // This function is called at the IRQL at which the interrupt is serviced:
78 // - DIRQL for DIRQL interrupt handling.
79 // - PASSIVE_LEVEL for passive-level interrupt handling.
80 //
81 typedef
82 _Function_class_(EVT_WDF_INTERRUPT_ISR)
85 BOOLEAN
86 STDCALL
87 EVT_WDF_INTERRUPT_ISR(
88  _In_
89  WDFINTERRUPT Interrupt,
90  _In_
92  );
93 
94 typedef EVT_WDF_INTERRUPT_ISR *PFN_WDF_INTERRUPT_ISR;
95 
96 //
97 // This is the function that gets invoked when a Synchronize execution occurs.
98 // This function is called at the IRQL at which the interrupt is serviced:
99 // - DIRQL for DIRQL interrupt handling.
100 // - PASSIVE_LEVEL for passive-level interrupt handling.
101 //
102 typedef
103 _Function_class_(EVT_WDF_INTERRUPT_SYNCHRONIZE)
106 BOOLEAN
107 STDCALL
108 EVT_WDF_INTERRUPT_SYNCHRONIZE(
109  _In_
110  WDFINTERRUPT Interrupt,
111  _In_
113  );
114 
115 typedef EVT_WDF_INTERRUPT_SYNCHRONIZE *PFN_WDF_INTERRUPT_SYNCHRONIZE;
116 
117 //
118 // This is the function that gets called back into the driver
119 // when the DpcForIsr fires. It will be called at DISPATCH_LEVEL.
120 //
121 typedef
122 _Function_class_(EVT_WDF_INTERRUPT_DPC)
125 VOID
126 STDCALL
127 EVT_WDF_INTERRUPT_DPC(
128  _In_
129  WDFINTERRUPT Interrupt,
130  _In_
132  );
133 
134 typedef EVT_WDF_INTERRUPT_DPC *PFN_WDF_INTERRUPT_DPC;
135 
136 //
137 // This is the function that gets called back into the driver
138 // when the WorkItemForIsr fires. It will be called at PASSIVE_LEVEL.
139 //
140 typedef
141 _Function_class_(EVT_WDF_INTERRUPT_WORKITEM)
144 VOID
145 STDCALL
146 EVT_WDF_INTERRUPT_WORKITEM(
147  _In_
148  WDFINTERRUPT Interrupt,
149  _In_
151  );
152 
153 typedef EVT_WDF_INTERRUPT_WORKITEM *PFN_WDF_INTERRUPT_WORKITEM;
154 
155 //
156 // This is the function that gets called back into the driver
157 // to enable the interrupt in the hardware. It will be called
158 // at the same IRQL at which the interrupt will be serviced:
159 // - DIRQL for DIRQL interrupt handling.
160 // - PASSIVE_LEVEL for passive-level interrupt handling.
161 //
162 typedef
163 _Function_class_(EVT_WDF_INTERRUPT_ENABLE)
166 NTSTATUS
167 STDCALL
168 EVT_WDF_INTERRUPT_ENABLE(
169  _In_
170  WDFINTERRUPT Interrupt,
171  _In_
172  WDFDEVICE AssociatedDevice
173  );
174 
175 typedef EVT_WDF_INTERRUPT_ENABLE *PFN_WDF_INTERRUPT_ENABLE;
176 
177 //
178 // This is the function that gets called back into the driver
179 // to disable the interrupt in the hardware. It will be called
180 // at the same IRQL at which the interrupt is serviced:
181 // - DIRQL for DIRQL interrupt handling.
182 // - PASSIVE_LEVEL for passive-level interrupt handling.
183 //
184 typedef
185 _Function_class_(EVT_WDF_INTERRUPT_DISABLE)
188 NTSTATUS
189 STDCALL
190 EVT_WDF_INTERRUPT_DISABLE(
191  _In_
192  WDFINTERRUPT Interrupt,
193  _In_
194  WDFDEVICE AssociatedDevice
195  );
196 
197 typedef EVT_WDF_INTERRUPT_DISABLE *PFN_WDF_INTERRUPT_DISABLE;
198 
199 //
200 // Interrupt Configuration Structure
201 //
202 typedef struct _WDF_INTERRUPT_CONFIG {
204 
205  //
206  // If this interrupt is to be synchronized with other interrupt(s) assigned
207  // to the same WDFDEVICE, create a WDFSPINLOCK and assign it to each of the
208  // WDFINTERRUPTs config.
209  //
210  WDFSPINLOCK SpinLock;
211 
213 
215 
216  //
217  // DIRQL handling: automatic serialization of the DpcForIsr/WaitItemForIsr.
218  // Passive-level handling: automatic serialization of all callbacks.
219  //
221 
222  //
223  // Event Callbacks
224  //
230 
231  //
232  // These fields are only used when interrupt is created in
233  // EvtDevicePrepareHardware callback.
234  //
237 
238  //
239  // Optional passive lock for handling interrupts at passive-level.
240  //
241  WDFWAITLOCK WaitLock;
242 
243  //
244  // TRUE: handle interrupt at passive-level.
245  // FALSE: handle interrupt at DIRQL level. This is the default.
246  //
248 
249  //
250  // TRUE: Interrupt is reported inactive on explicit power down
251  // instead of disconnecting it.
252  // FALSE: Interrupt is disconnected instead of reporting inactive
253  // on explicit power down.
254  // DEFAULT: Framework decides the right value.
255  //
257 
258  //
259  // TRUE: Interrupt is used to wake the device from low-power states
260  // and when the device is armed for wake this interrupt should
261  // remain connected.
262  // FALSE: Interrupt is not used to wake the device from low-power states.
263  // This is the default.
264  //
267 
268 
270 VOID
273  _In_ PFN_WDF_INTERRUPT_ISR EvtInterruptIsr,
274  _In_opt_ PFN_WDF_INTERRUPT_DPC EvtInterruptDpc
275  )
276 {
278 
279  Configuration->Size = sizeof(WDF_INTERRUPT_CONFIG);
280 
281  Configuration->ShareVector = WdfUseDefault;
282 
283  Configuration->EvtInterruptIsr = EvtInterruptIsr;
284  Configuration->EvtInterruptDpc = EvtInterruptDpc;
285 
286  Configuration->ReportInactiveOnPowerDown = WdfUseDefault;
287 }
288 
289 
290 
291 
292 //
293 // Disable warning C4324: structure was padded due to DECLSPEC_ALIGN
294 // This padding is intentional and necessary.
295 #ifdef _MSC_VER
296 #pragma warning(push)
297 #pragma warning(disable: 4324)
298 #endif
299 
300 typedef struct _WDF_INTERRUPT_INFO {
301  //
302  // Size of this structure in bytes
303  //
314  UCHAR ShareDisposition; //CM_SHARE_DISPOSITION
316 
318 
319 #ifdef _MSC_VER
320 #pragma warning(pop)
321 #endif
322 
324 VOID
327  )
328 {
330  Info->Size = sizeof(WDF_INTERRUPT_INFO);
331 }
332 
333 //
334 // Interrupt Extended Policy Configuration Structure
335 //
337  //
338  // Size of this structure in bytes
339  //
344 
346 
348 VOID
351  )
352 {
353  RtlZeroMemory(ExtendedPolicy, sizeof(WDF_INTERRUPT_EXTENDED_POLICY));
354  ExtendedPolicy->Size = sizeof(WDF_INTERRUPT_EXTENDED_POLICY);
355  ExtendedPolicy->Policy = WdfIrqPolicyMachineDefault;
356  ExtendedPolicy->Priority = WdfIrqPriorityUndefined;
357 }
358 
359 
360 //
361 // WDF Function: WdfInterruptCreate
362 //
363 typedef
366 WDFAPI
367 NTSTATUS
368 (STDCALL *PFN_WDFINTERRUPTCREATE)(
369  _In_
371  _In_
372  WDFDEVICE Device,
373  _In_
375  _In_opt_
377  _Out_
378  WDFINTERRUPT* Interrupt
379  );
380 
384 NTSTATUS
385 WdfInterruptCreate(
386  _In_
387  WDFDEVICE Device,
388  _In_
390  _In_opt_
392  _Out_
393  WDFINTERRUPT* Interrupt
394  )
395 {
397 }
398 
399 //
400 // WDF Function: WdfInterruptQueueDpcForIsr
401 //
402 typedef
403 WDFAPI
404 BOOLEAN
406  _In_
408  _In_
409  WDFINTERRUPT Interrupt
410  );
411 
413 BOOLEAN
415  _In_
416  WDFINTERRUPT Interrupt
417  )
418 {
420 }
421 
422 //
423 // WDF Function: WdfInterruptQueueWorkItemForIsr
424 //
425 typedef
426 WDFAPI
427 BOOLEAN
429  _In_
431  _In_
432  WDFINTERRUPT Interrupt
433  );
434 
436 BOOLEAN
438  _In_
439  WDFINTERRUPT Interrupt
440  )
441 {
443 }
444 
445 //
446 // WDF Function: WdfInterruptSynchronize
447 //
448 typedef
450 WDFAPI
451 BOOLEAN
452 (STDCALL *PFN_WDFINTERRUPTSYNCHRONIZE)(
453  _In_
455  _In_
456  WDFINTERRUPT Interrupt,
457  _In_
459  _In_
461  );
462 
465 BOOLEAN
466 WdfInterruptSynchronize(
467  _In_
468  WDFINTERRUPT Interrupt,
469  _In_
471  _In_
473  )
474 {
475  return ((PFN_WDFINTERRUPTSYNCHRONIZE) WdfFunctions[WdfInterruptSynchronizeTableIndex])(WdfDriverGlobals, Interrupt, Callback, Context);
476 }
477 
478 //
479 // WDF Function: WdfInterruptAcquireLock
480 //
481 typedef
483 WDFAPI
484 VOID
485 (STDCALL *PFN_WDFINTERRUPTACQUIRELOCK)(
486  _In_
488  _In_
490  _Acquires_lock_(_Curr_)
491  WDFINTERRUPT Interrupt
492  );
493 
496 VOID
497 WdfInterruptAcquireLock(
498  _In_
500  _Acquires_lock_(_Curr_)
501  WDFINTERRUPT Interrupt
502  )
503 {
505 }
506 
507 //
508 // WDF Function: WdfInterruptReleaseLock
509 //
510 typedef
512 WDFAPI
513 VOID
514 (STDCALL *PFN_WDFINTERRUPTRELEASELOCK)(
515  _In_
517  _In_
519  _Releases_lock_(_Curr_)
520  WDFINTERRUPT Interrupt
521  );
522 
525 VOID
526 WdfInterruptReleaseLock(
527  _In_
528  _Requires_lock_held_(_Curr_)
529  _Releases_lock_(_Curr_)
530  WDFINTERRUPT Interrupt
531  )
532 {
534 }
535 
536 //
537 // WDF Function: WdfInterruptEnable
538 //
539 typedef
541 WDFAPI
542 VOID
543 (STDCALL *PFN_WDFINTERRUPTENABLE)(
544  _In_
546  _In_
547  WDFINTERRUPT Interrupt
548  );
549 
552 VOID
553 WdfInterruptEnable(
554  _In_
555  WDFINTERRUPT Interrupt
556  )
557 {
559 }
560 
561 //
562 // WDF Function: WdfInterruptDisable
563 //
564 typedef
566 WDFAPI
567 VOID
568 (STDCALL *PFN_WDFINTERRUPTDISABLE)(
569  _In_
571  _In_
572  WDFINTERRUPT Interrupt
573  );
574 
577 VOID
578 WdfInterruptDisable(
579  _In_
580  WDFINTERRUPT Interrupt
581  )
582 {
584 }
585 
586 //
587 // WDF Function: WdfInterruptWdmGetInterrupt
588 //
589 typedef
591 WDFAPI
594  _In_
596  _In_
597  WDFINTERRUPT Interrupt
598  );
599 
604  _In_
605  WDFINTERRUPT Interrupt
606  )
607 {
609 }
610 
611 //
612 // WDF Function: WdfInterruptGetInfo
613 //
614 typedef
616 WDFAPI
617 VOID
618 (STDCALL *PFN_WDFINTERRUPTGETINFO)(
619  _In_
621  _In_
622  WDFINTERRUPT Interrupt,
623  _Out_
625  );
626 
629 VOID
630 WdfInterruptGetInfo(
631  _In_
632  WDFINTERRUPT Interrupt,
633  _Out_
635  )
636 {
638 }
639 
640 //
641 // WDF Function: WdfInterruptSetPolicy
642 //
643 typedef
645 WDFAPI
646 VOID
647 (STDCALL *PFN_WDFINTERRUPTSETPOLICY)(
648  _In_
650  _In_
651  WDFINTERRUPT Interrupt,
652  _In_
654  _In_
656  _In_
658  );
659 
662 VOID
663 WdfInterruptSetPolicy(
664  _In_
665  WDFINTERRUPT Interrupt,
666  _In_
668  _In_
670  _In_
672  )
673 {
675 }
676 
677 //
678 // WDF Function: WdfInterruptSetExtendedPolicy
679 //
680 typedef
682 WDFAPI
683 VOID
684 (STDCALL *PFN_WDFINTERRUPTSETEXTENDEDPOLICY)(
685  _In_
687  _In_
688  WDFINTERRUPT Interrupt,
689  _In_
691  );
692 
695 VOID
696 WdfInterruptSetExtendedPolicy(
697  _In_
698  WDFINTERRUPT Interrupt,
699  _In_
701  )
702 {
704 }
705 
706 //
707 // WDF Function: WdfInterruptGetDevice
708 //
709 typedef
710 WDFAPI
711 WDFDEVICE
713  _In_
715  _In_
716  WDFINTERRUPT Interrupt
717  );
718 
720 WDFDEVICE
722  _In_
723  WDFINTERRUPT Interrupt
724  )
725 {
727 }
728 
729 //
730 // WDF Function: WdfInterruptTryToAcquireLock
731 //
732 typedef
734 _Post_satisfies_(return == 1 || return == 0)
736 WDFAPI
737 BOOLEAN
738 (STDCALL *PFN_WDFINTERRUPTTRYTOACQUIRELOCK)(
739  _In_
741  _In_
744  WDFINTERRUPT Interrupt
745  );
746 
748 _Post_satisfies_(return == 1 || return == 0)
751 BOOLEAN
752 WdfInterruptTryToAcquireLock(
753  _In_
756  WDFINTERRUPT Interrupt
757  )
758 {
759  return ((PFN_WDFINTERRUPTTRYTOACQUIRELOCK) WdfFunctions[WdfInterruptTryToAcquireLockTableIndex])(WdfDriverGlobals, Interrupt);
760 }
761 
762 //
763 // WDF Function: WdfInterruptReportActive
764 //
765 typedef
767 WDFAPI
768 VOID
769 (STDCALL *PFN_WDFINTERRUPTREPORTACTIVE)(
770  _In_
772  _In_
773  WDFINTERRUPT Interrupt
774  );
775 
778 VOID
779 WdfInterruptReportActive(
780  _In_
781  WDFINTERRUPT Interrupt
782  )
783 {
785 }
786 
787 //
788 // WDF Function: WdfInterruptReportInactive
789 //
790 typedef
792 WDFAPI
793 VOID
794 (STDCALL *PFN_WDFINTERRUPTREPORTINACTIVE)(
795  _In_
797  _In_
798  WDFINTERRUPT Interrupt
799  );
800 
803 VOID
804 WdfInterruptReportInactive(
805  _In_
806  WDFINTERRUPT Interrupt
807  )
808 {
809  ((PFN_WDFINTERRUPTREPORTINACTIVE) WdfFunctions[WdfInterruptReportInactiveTableIndex])(WdfDriverGlobals, Interrupt);
810 }
811 
812 
813 
814 #endif // (NTDDI_VERSION >= NTDDI_WIN2K)
815 
816 
818 
819 #endif // _WDFINTERRUPT_H_
820 
PFN_WDF_INTERRUPT_DISABLE EvtInterruptDisable
Definition: wdfinterrupt.h:228
struct _WDF_INTERRUPT_EXTENDED_POLICY * PWDF_INTERRUPT_EXTENDED_POLICY
WDF_INTERRUPT_POLICY Policy
Definition: wdfinterrupt.h:341
PCM_PARTIAL_RESOURCE_DESCRIPTOR InterruptTranslated
Definition: wdfinterrupt.h:236
typedef _Function_class_(EVT_WDF_INTERRUPT_ISR) _IRQL_requires_same_ _IRQL_requires_min_(PASSIVE_LEVEL) BOOLEAN STDCALL EVT_WDF_INTERRUPT_ISR(_In_ WDFINTERRUPT Interrupt
return
Definition: dirsup.c:529
_Must_inspect_result_ WDFAPI PKINTERRUPT(STDCALL * PFN_WDFINTERRUPTWDMGETINTERRUPT)(_In_ PWDF_DRIVER_GLOBALS DriverGlobals, _In_ WDFINTERRUPT Interrupt)
Definition: wdfinterrupt.h:593
_Must_inspect_result_ FORCEINLINE PKINTERRUPT WdfInterruptWdmGetInterrupt(_In_ WDFINTERRUPT Interrupt)
Definition: wdfinterrupt.h:603
_In_ WDFOBJECT AssociatedObject
Definition: wdfinterrupt.h:132
#define _In_opt_
Definition: ms_sal.h:309
_WDF_INTERRUPT_POLICY
Definition: wdfinterrupt.h:56
#define _Out_
Definition: ms_sal.h:345
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG Configuration
Definition: wdfinterrupt.h:372
enum _WDF_TRI_STATE WDF_TRI_STATE
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFINTERRUPT * Interrupt
Definition: wdfinterrupt.h:372
_In_opt_ PSID Group
Definition: rtlfuncs.h:1605
WDF_EXTERN_C_START enum _WDF_INTERRUPT_POLARITY WDF_INTERRUPT_POLARITY
LONG NTSTATUS
Definition: precomp.h:26
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
Definition: wdfinterrupt.h:372
FORCEINLINE WDFDEVICE WdfInterruptGetDevice(_In_ WDFINTERRUPT Interrupt)
Definition: wdfinterrupt.h:721
FORCEINLINE BOOLEAN WdfInterruptQueueDpcForIsr(_In_ WDFINTERRUPT Interrupt)
Definition: wdfinterrupt.h:414
DriverGlobals
#define _When_(expr, annos)
Definition: ms_sal.h:254
struct _WDF_INTERRUPT_INFO WDF_INTERRUPT_INFO
#define WdfFunctions
Definition: wdf.h:66
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
Definition: wdfchildlist.h:683
_Must_inspect_result_ _In_ _Acquires_lock_(_Curr_)) WDFINTERRUPT Interrupt)
Definition: wdfinterrupt.h:743
struct _WDF_INTERRUPT_CONFIG WDF_INTERRUPT_CONFIG
UCHAR KIRQL
Definition: env_spec_w32.h:591
PFN_WDF_INTERRUPT_ENABLE EvtInterruptEnable
Definition: wdfinterrupt.h:227
KAFFINITY TargetProcessorSet
Definition: wdfinterrupt.h:306
EVT_WDF_INTERRUPT_SYNCHRONIZE * PFN_WDF_INTERRUPT_SYNCHRONIZE
Definition: wdfinterrupt.h:115
#define WDFAPI
Definition: wdftypes.h:53
#define _IRQL_requires_min_(irql)
Definition: driverspecs.h:231
FORCEINLINE VOID WDF_INTERRUPT_CONFIG_INIT(_Out_ PWDF_INTERRUPT_CONFIG Configuration, _In_ PFN_WDF_INTERRUPT_ISR EvtInterruptIsr, _In_opt_ PFN_WDF_INTERRUPT_DPC EvtInterruptDpc)
Definition: wdfinterrupt.h:271
#define _Releases_lock_(a)
Definition: btrfs_drv.h:208
#define WDF_EXTERN_C_START
Definition: wdfinterrupt.h:36
_In_ _Requires_lock_held_(_Curr_) _Releases_lock_(_Curr_) WDFINTERRUPT Interrupt)
Definition: wdfinterrupt.h:518
_WDF_INTERRUPT_POLARITY
Definition: wdfinterrupt.h:50
unsigned char BOOLEAN
enum _WDF_INTERRUPT_POLICY WDF_INTERRUPT_POLICY
enum _KINTERRUPT_MODE KINTERRUPT_MODE
#define _In_
Definition: ms_sal.h:308
#define _IRQL_requires_same_
Definition: driverspecs.h:232
struct _KINTERRUPT * PKINTERRUPT
Definition: nt_native.h:32
#define _IRQL_requires_(irql)
Definition: driverspecs.h:229
_In_ ULONG MessageID
Definition: wdfinterrupt.h:92
PWDF_DRIVER_GLOBALS WdfDriverGlobals
KINTERRUPT_MODE Mode
Definition: wdfinterrupt.h:311
_In_ WDFINTERRUPT _Out_ PWDF_INTERRUPT_INFO Info
Definition: wdfinterrupt.h:622
#define STDCALL
Definition: wdf.h:45
EVT_WDF_INTERRUPT_WORKITEM * PFN_WDF_INTERRUPT_WORKITEM
Definition: wdfinterrupt.h:153
enum _WDF_INTERRUPT_POLICY * PWDF_INTERRUPT_POLICY
_Must_inspect_result_ _In_ WDFDEVICE Device
Definition: wdfinterrupt.h:372
enum _WDF_INTERRUPT_PRIORITY WDF_INTERRUPT_PRIORITY
_In_ WDFCONTEXT Context
Definition: wdfinterrupt.h:113
enum _WDF_INTERRUPT_PRIORITY * PWDF_INTERRUPT_PRIORITY
_In_ WDFINTERRUPT _In_ WDF_INTERRUPT_POLICY _In_ WDF_INTERRUPT_PRIORITY _In_ KAFFINITY TargetProcessorSet
Definition: wdfinterrupt.h:651
_In_ _Requires_lock_not_held_(_Curr_) _Acquires_lock_(_Curr_) WDFINTERRUPT Interrupt)
Definition: wdfinterrupt.h:489
EVT_WDF_INTERRUPT_ISR * PFN_WDF_INTERRUPT_ISR
Definition: wdfinterrupt.h:94
_WDF_INTERRUPT_PRIORITY
Definition: wdfinterrupt.h:65
EVT_WDF_INTERRUPT_ENABLE * PFN_WDF_INTERRUPT_ENABLE
Definition: wdfinterrupt.h:175
WDFAPI BOOLEAN(STDCALL * PFN_WDFINTERRUPTQUEUEWORKITEMFORISR)(_In_ PWDF_DRIVER_GLOBALS DriverGlobals, _In_ WDFINTERRUPT Interrupt)
Definition: wdfinterrupt.h:428
unsigned __int64 ULONG64
Definition: imports.h:198
WDFAPI WDFDEVICE(STDCALL * PFN_WDFINTERRUPTGETDEVICE)(_In_ PWDF_DRIVER_GLOBALS DriverGlobals, _In_ WDFINTERRUPT Interrupt)
Definition: wdfinterrupt.h:712
_In_ WDFINTERRUPT _In_ WDF_INTERRUPT_POLICY _In_ WDF_INTERRUPT_PRIORITY Priority
Definition: wdfinterrupt.h:651
unsigned char UCHAR
Definition: xmlstorage.h:181
_In_ WDFDEVICE AssociatedDevice
Definition: wdfinterrupt.h:173
#define NTSTATUS
Definition: precomp.h:20
_Must_inspect_result_ _Post_satisfies_(return==1||return==0) _IRQL_requires_max_(PASSIVE_LEVEL) WDFAPI BOOLEAN(STDCALL *PFN_WDFINTERRUPTTRYTOACQUIRELOCK)(_In_ PWDF_DRIVER_GLOBALS DriverGlobals
Definition: wdfinterrupt.h:734
PFN_WDF_INTERRUPT_WORKITEM EvtInterruptWorkItem
Definition: wdfinterrupt.h:229
#define VOID
Definition: acefi.h:82
PFN_WDF_INTERRUPT_DPC EvtInterruptDpc
Definition: wdfinterrupt.h:226
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
#define _Must_inspect_result_
Definition: ms_sal.h:558
_Must_inspect_result_ _In_ WDFDEVICE Device
Definition: wdfchildlist.h:474
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
Definition: wdfinterrupt.h:456
#define DISPATCH_LEVEL
Definition: env_spec_w32.h:696
FORCEINLINE BOOLEAN WdfInterruptQueueWorkItemForIsr(_In_ WDFINTERRUPT Interrupt)
Definition: wdfinterrupt.h:437
WDF_EXTERN_C_START enum _WDF_INTERRUPT_POLARITY * PWDF_INTERRUPT_POLARITY
unsigned short USHORT
Definition: pedump.c:61
ULONG_PTR KAFFINITY
Definition: compat.h:85
#define FORCEINLINE
Definition: wdftypes.h:67
WDFAPI BOOLEAN(STDCALL * PFN_WDFINTERRUPTQUEUEDPCFORISR)(_In_ PWDF_DRIVER_GLOBALS DriverGlobals, _In_ WDFINTERRUPT Interrupt)
Definition: wdfinterrupt.h:405
EVT_WDF_INTERRUPT_DISABLE * PFN_WDF_INTERRUPT_DISABLE
Definition: wdfinterrupt.h:197
BOOLEAN AutomaticSerialization
Definition: wdfinterrupt.h:220
WDF_INTERRUPT_PRIORITY Priority
Definition: wdfinterrupt.h:342
#define BOOLEAN
Definition: pedump.c:73
_Must_inspect_result_ _IRQL_requires_max_(DISPATCH_LEVEL) WDFAPI NTSTATUS(STDCALL *PFN_WDFINTERRUPTCREATE)(_In_ PWDF_DRIVER_GLOBALS DriverGlobals
Definition: wdfinterrupt.h:365
#define WDF_EXTERN_C_END
Definition: wdfinterrupt.h:37
unsigned int ULONG
Definition: retypes.h:1
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
WDF_INTERRUPT_POLARITY Polarity
Definition: wdfinterrupt.h:312
FORCEINLINE VOID WDF_INTERRUPT_EXTENDED_POLICY_INIT(_Out_ PWDF_INTERRUPT_EXTENDED_POLICY ExtendedPolicy)
Definition: wdfinterrupt.h:349
GROUP_AFFINITY TargetProcessorSetAndGroup
Definition: wdfinterrupt.h:343
WDF_TRI_STATE ShareVector
Definition: wdfinterrupt.h:212
_In_ WDFINTERRUPT _In_ PWDF_INTERRUPT_EXTENDED_POLICY PolicyAndGroup
Definition: wdfinterrupt.h:688
struct _WDF_INTERRUPT_EXTENDED_POLICY WDF_INTERRUPT_EXTENDED_POLICY
_In_ WDFINTERRUPT _In_ WDF_INTERRUPT_POLICY Policy
Definition: wdfinterrupt.h:651
WDF_TRI_STATE ReportInactiveOnPowerDown
Definition: wdfinterrupt.h:256
PFN_WDF_INTERRUPT_ISR EvtInterruptIsr
Definition: wdfinterrupt.h:225
DECLSPEC_ALIGN(8) USHORT Group
struct _WDF_INTERRUPT_CONFIG * PWDF_INTERRUPT_CONFIG
EVT_WDF_INTERRUPT_DPC * PFN_WDF_INTERRUPT_DPC
Definition: wdfinterrupt.h:134
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
FORCEINLINE VOID WDF_INTERRUPT_INFO_INIT(_Out_ PWDF_INTERRUPT_INFO Info)
Definition: wdfinterrupt.h:325
PCM_PARTIAL_RESOURCE_DESCRIPTOR InterruptRaw
Definition: wdfinterrupt.h:235