ReactOS 0.4.15-dev-7788-g1ad9096
wdfinterrupt.h
Go to the documentation of this file.
1/*++
2
3Copyright (c) Microsoft Corporation. All rights reserved.
4
5_WdfVersionBuild_
6
7Module Name:
8
9 wdfinterrupt.h
10
11Abstract:
12
13 This is the C header for driver framework Interrupt object
14
15Revision 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
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//
81typedef
82_Function_class_(EVT_WDF_INTERRUPT_ISR)
87EVT_WDF_INTERRUPT_ISR(
88 _In_
89 WDFINTERRUPT Interrupt,
90 _In_
92 );
93
94typedef 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//
102typedef
103_Function_class_(EVT_WDF_INTERRUPT_SYNCHRONIZE)
108EVT_WDF_INTERRUPT_SYNCHRONIZE(
109 _In_
110 WDFINTERRUPT Interrupt,
111 _In_
113 );
114
115typedef 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//
121typedef
122_Function_class_(EVT_WDF_INTERRUPT_DPC)
125VOID
127EVT_WDF_INTERRUPT_DPC(
128 _In_
129 WDFINTERRUPT Interrupt,
130 _In_
132 );
133
134typedef 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//
140typedef
141_Function_class_(EVT_WDF_INTERRUPT_WORKITEM)
144VOID
146EVT_WDF_INTERRUPT_WORKITEM(
147 _In_
148 WDFINTERRUPT Interrupt,
149 _In_
151 );
152
153typedef 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//
162typedef
163_Function_class_(EVT_WDF_INTERRUPT_ENABLE)
168EVT_WDF_INTERRUPT_ENABLE(
169 _In_
170 WDFINTERRUPT Interrupt,
171 _In_
173 );
174
175typedef 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//
184typedef
185_Function_class_(EVT_WDF_INTERRUPT_DISABLE)
190EVT_WDF_INTERRUPT_DISABLE(
191 _In_
192 WDFINTERRUPT Interrupt,
193 _In_
194 WDFDEVICE AssociatedDevice
195 );
196
197typedef EVT_WDF_INTERRUPT_DISABLE *PFN_WDF_INTERRUPT_DISABLE;
198
199//
200// Interrupt Configuration Structure
201//
202typedef 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
270VOID
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
300typedef 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
324VOID
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
348VOID
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//
363typedef
366WDFAPI
368(STDCALL *PFN_WDFINTERRUPTCREATE)(
369 _In_
371 _In_
372 WDFDEVICE Device,
373 _In_
377 _Out_
378 WDFINTERRUPT* Interrupt
379 );
380
385WdfInterruptCreate(
386 _In_
387 WDFDEVICE Device,
388 _In_
392 _Out_
393 WDFINTERRUPT* Interrupt
394 )
395{
397}
398
399//
400// WDF Function: WdfInterruptQueueDpcForIsr
401//
402typedef
403WDFAPI
406 _In_
408 _In_
409 WDFINTERRUPT Interrupt
410 );
411
415 _In_
416 WDFINTERRUPT Interrupt
417 )
418{
420}
421
422//
423// WDF Function: WdfInterruptQueueWorkItemForIsr
424//
425typedef
426WDFAPI
429 _In_
431 _In_
432 WDFINTERRUPT Interrupt
433 );
434
438 _In_
439 WDFINTERRUPT Interrupt
440 )
441{
443}
444
445//
446// WDF Function: WdfInterruptSynchronize
447//
448typedef
450WDFAPI
452(STDCALL *PFN_WDFINTERRUPTSYNCHRONIZE)(
453 _In_
455 _In_
456 WDFINTERRUPT Interrupt,
457 _In_
459 _In_
461 );
462
466WdfInterruptSynchronize(
467 _In_
468 WDFINTERRUPT Interrupt,
469 _In_
471 _In_
473 )
474{
476}
477
478//
479// WDF Function: WdfInterruptAcquireLock
480//
481typedef
483WDFAPI
484VOID
485(STDCALL *PFN_WDFINTERRUPTACQUIRELOCK)(
486 _In_
488 _In_
490 _Acquires_lock_(_Curr_)
491 WDFINTERRUPT Interrupt
492 );
493
496VOID
497WdfInterruptAcquireLock(
498 _In_
500 _Acquires_lock_(_Curr_)
501 WDFINTERRUPT Interrupt
502 )
503{
505}
506
507//
508// WDF Function: WdfInterruptReleaseLock
509//
510typedef
512WDFAPI
513VOID
514(STDCALL *PFN_WDFINTERRUPTRELEASELOCK)(
515 _In_
517 _In_
519 _Releases_lock_(_Curr_)
520 WDFINTERRUPT Interrupt
521 );
522
525VOID
526WdfInterruptReleaseLock(
527 _In_
529 _Releases_lock_(_Curr_)
530 WDFINTERRUPT Interrupt
531 )
532{
534}
535
536//
537// WDF Function: WdfInterruptEnable
538//
539typedef
541WDFAPI
542VOID
543(STDCALL *PFN_WDFINTERRUPTENABLE)(
544 _In_
546 _In_
547 WDFINTERRUPT Interrupt
548 );
549
552VOID
553WdfInterruptEnable(
554 _In_
555 WDFINTERRUPT Interrupt
556 )
557{
559}
560
561//
562// WDF Function: WdfInterruptDisable
563//
564typedef
566WDFAPI
567VOID
568(STDCALL *PFN_WDFINTERRUPTDISABLE)(
569 _In_
571 _In_
572 WDFINTERRUPT Interrupt
573 );
574
577VOID
578WdfInterruptDisable(
579 _In_
580 WDFINTERRUPT Interrupt
581 )
582{
584}
585
586//
587// WDF Function: WdfInterruptWdmGetInterrupt
588//
589typedef
591WDFAPI
594 _In_
596 _In_
597 WDFINTERRUPT Interrupt
598 );
599
604 _In_
605 WDFINTERRUPT Interrupt
606 )
607{
609}
610
611//
612// WDF Function: WdfInterruptGetInfo
613//
614typedef
616WDFAPI
617VOID
618(STDCALL *PFN_WDFINTERRUPTGETINFO)(
619 _In_
621 _In_
622 WDFINTERRUPT Interrupt,
623 _Out_
625 );
626
629VOID
630WdfInterruptGetInfo(
631 _In_
632 WDFINTERRUPT Interrupt,
633 _Out_
635 )
636{
638}
639
640//
641// WDF Function: WdfInterruptSetPolicy
642//
643typedef
645WDFAPI
646VOID
647(STDCALL *PFN_WDFINTERRUPTSETPOLICY)(
648 _In_
650 _In_
651 WDFINTERRUPT Interrupt,
652 _In_
654 _In_
656 _In_
658 );
659
662VOID
663WdfInterruptSetPolicy(
664 _In_
665 WDFINTERRUPT Interrupt,
666 _In_
668 _In_
670 _In_
672 )
673{
675}
676
677//
678// WDF Function: WdfInterruptSetExtendedPolicy
679//
680typedef
682WDFAPI
683VOID
684(STDCALL *PFN_WDFINTERRUPTSETEXTENDEDPOLICY)(
685 _In_
687 _In_
688 WDFINTERRUPT Interrupt,
689 _In_
691 );
692
695VOID
696WdfInterruptSetExtendedPolicy(
697 _In_
698 WDFINTERRUPT Interrupt,
699 _In_
701 )
702{
704}
705
706//
707// WDF Function: WdfInterruptGetDevice
708//
709typedef
710WDFAPI
711WDFDEVICE
713 _In_
715 _In_
716 WDFINTERRUPT Interrupt
717 );
718
720WDFDEVICE
722 _In_
723 WDFINTERRUPT Interrupt
724 )
725{
727}
728
729//
730// WDF Function: WdfInterruptTryToAcquireLock
731//
732typedef
734_Post_satisfies_(return == 1 || return == 0)
736WDFAPI
738(STDCALL *PFN_WDFINTERRUPTTRYTOACQUIRELOCK)(
739 _In_
741 _In_
744 WDFINTERRUPT Interrupt
745 );
746
748_Post_satisfies_(return == 1 || return == 0)
752WdfInterruptTryToAcquireLock(
753 _In_
755 _When_(return!=0, _Acquires_lock_(_Curr_))
756 WDFINTERRUPT Interrupt
757 )
758{
759 return ((PFN_WDFINTERRUPTTRYTOACQUIRELOCK) WdfFunctions[WdfInterruptTryToAcquireLockTableIndex])(WdfDriverGlobals, Interrupt);
760}
761
762//
763// WDF Function: WdfInterruptReportActive
764//
765typedef
767WDFAPI
768VOID
769(STDCALL *PFN_WDFINTERRUPTREPORTACTIVE)(
770 _In_
772 _In_
773 WDFINTERRUPT Interrupt
774 );
775
778VOID
779WdfInterruptReportActive(
780 _In_
781 WDFINTERRUPT Interrupt
782 )
783{
785}
786
787//
788// WDF Function: WdfInterruptReportInactive
789//
790typedef
792WDFAPI
793VOID
794(STDCALL *PFN_WDFINTERRUPTREPORTINACTIVE)(
795 _In_
797 _In_
798 WDFINTERRUPT Interrupt
799 );
800
803VOID
804WdfInterruptReportInactive(
805 _In_
806 WDFINTERRUPT Interrupt
807 )
808{
810}
811
812
813
814#endif // (NTDDI_VERSION >= NTDDI_WIN2K)
815
816
818
819#endif // _WDFINTERRUPT_H_
820
unsigned char BOOLEAN
#define VOID
Definition: acefi.h:82
LONG NTSTATUS
Definition: precomp.h:26
return
Definition: dirsup.c:529
#define _Releases_lock_(lock)
#define NTSTATUS
Definition: precomp.h:21
ULONG_PTR KAFFINITY
Definition: compat.h:85
#define _IRQL_requires_same_
Definition: driverspecs.h:232
#define _IRQL_requires_min_(irql)
Definition: driverspecs.h:231
#define _IRQL_requires_(irql)
Definition: driverspecs.h:229
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
UCHAR KIRQL
Definition: env_spec_w32.h:591
#define DISPATCH_LEVEL
Definition: env_spec_w32.h:696
DriverGlobals
unsigned __int64 ULONG64
Definition: imports.h:198
#define _Function_class_(x)
Definition: ms_sal.h:2946
#define _Must_inspect_result_
Definition: ms_sal.h:558
#define _Out_
Definition: ms_sal.h:345
#define _When_(expr, annos)
Definition: ms_sal.h:254
#define _In_
Definition: ms_sal.h:308
#define _In_opt_
Definition: ms_sal.h:309
_In_opt_ PSID Group
Definition: rtlfuncs.h:1646
struct _KINTERRUPT * PKINTERRUPT
Definition: nt_native.h:32
#define BOOLEAN
Definition: pedump.c:73
unsigned short USHORT
Definition: pedump.c:61
enum _KINTERRUPT_MODE KINTERRUPT_MODE
BOOLEAN AutomaticSerialization
Definition: wdfinterrupt.h:220
WDF_TRI_STATE ShareVector
Definition: wdfinterrupt.h:212
PFN_WDF_INTERRUPT_WORKITEM EvtInterruptWorkItem
Definition: wdfinterrupt.h:229
PFN_WDF_INTERRUPT_DPC EvtInterruptDpc
Definition: wdfinterrupt.h:226
PCM_PARTIAL_RESOURCE_DESCRIPTOR InterruptTranslated
Definition: wdfinterrupt.h:236
WDF_TRI_STATE ReportInactiveOnPowerDown
Definition: wdfinterrupt.h:256
PFN_WDF_INTERRUPT_DISABLE EvtInterruptDisable
Definition: wdfinterrupt.h:228
PFN_WDF_INTERRUPT_ISR EvtInterruptIsr
Definition: wdfinterrupt.h:225
PFN_WDF_INTERRUPT_ENABLE EvtInterruptEnable
Definition: wdfinterrupt.h:227
PCM_PARTIAL_RESOURCE_DESCRIPTOR InterruptRaw
Definition: wdfinterrupt.h:235
GROUP_AFFINITY TargetProcessorSetAndGroup
Definition: wdfinterrupt.h:343
WDF_INTERRUPT_POLICY Policy
Definition: wdfinterrupt.h:341
WDF_INTERRUPT_PRIORITY Priority
Definition: wdfinterrupt.h:342
DECLSPEC_ALIGN(8) USHORT Group
KAFFINITY TargetProcessorSet
Definition: wdfinterrupt.h:306
KINTERRUPT_MODE Mode
Definition: wdfinterrupt.h:311
WDF_INTERRUPT_POLARITY Polarity
Definition: wdfinterrupt.h:312
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
uint32_t ULONG
Definition: typedefs.h:59
#define STDCALL
Definition: wdf.h:45
#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:690
_Must_inspect_result_ _In_ WDFDEVICE Device
Definition: wdfchildlist.h:474
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
PWDF_DRIVER_GLOBALS WdfDriverGlobals
@ WdfInterruptDisableTableIndex
Definition: wdffuncenum.h:172
@ WdfInterruptAcquireLockTableIndex
Definition: wdffuncenum.h:169
@ WdfInterruptSetExtendedPolicyTableIndex
Definition: wdffuncenum.h:414
@ WdfInterruptWdmGetInterruptTableIndex
Definition: wdffuncenum.h:173
@ WdfInterruptGetDeviceTableIndex
Definition: wdffuncenum.h:176
@ WdfInterruptReportInactiveTableIndex
Definition: wdffuncenum.h:454
@ WdfInterruptSetPolicyTableIndex
Definition: wdffuncenum.h:175
@ WdfInterruptTryToAcquireLockTableIndex
Definition: wdffuncenum.h:442
@ WdfInterruptCreateTableIndex
Definition: wdffuncenum.h:166
@ WdfInterruptQueueDpcForIsrTableIndex
Definition: wdffuncenum.h:167
@ WdfInterruptQueueWorkItemForIsrTableIndex
Definition: wdffuncenum.h:441
@ WdfInterruptReportActiveTableIndex
Definition: wdffuncenum.h:453
@ WdfInterruptReleaseLockTableIndex
Definition: wdffuncenum.h:170
@ WdfInterruptEnableTableIndex
Definition: wdffuncenum.h:171
@ WdfInterruptSynchronizeTableIndex
Definition: wdffuncenum.h:168
@ WdfInterruptGetInfoTableIndex
Definition: wdffuncenum.h:174
_Must_inspect_result_ FORCEINLINE PKINTERRUPT WdfInterruptWdmGetInterrupt(_In_ WDFINTERRUPT Interrupt)
Definition: wdfinterrupt.h:603
_In_ WDFCONTEXT Context
Definition: wdfinterrupt.h:113
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
Definition: wdfinterrupt.h:376
EVT_WDF_INTERRUPT_DISABLE * PFN_WDF_INTERRUPT_DISABLE
Definition: wdfinterrupt.h:197
WDFAPI BOOLEAN(STDCALL * PFN_WDFINTERRUPTQUEUEDPCFORISR)(_In_ PWDF_DRIVER_GLOBALS DriverGlobals, _In_ WDFINTERRUPT Interrupt)
Definition: wdfinterrupt.h:405
struct _WDF_INTERRUPT_INFO WDF_INTERRUPT_INFO
FORCEINLINE VOID WDF_INTERRUPT_EXTENDED_POLICY_INIT(_Out_ PWDF_INTERRUPT_EXTENDED_POLICY ExtendedPolicy)
Definition: wdfinterrupt.h:349
_In_ WDFINTERRUPT _Out_ PWDF_INTERRUPT_INFO Info
Definition: wdfinterrupt.h:625
#define WDF_EXTERN_C_END
Definition: wdfinterrupt.h:37
_Must_inspect_result_ _In_ WDFDEVICE Device
Definition: wdfinterrupt.h:372
_In_ WDFINTERRUPT _In_ WDF_INTERRUPT_POLICY _In_ WDF_INTERRUPT_PRIORITY _In_ KAFFINITY TargetProcessorSet
Definition: wdfinterrupt.h:658
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG Configuration
Definition: wdfinterrupt.h:374
struct _WDF_INTERRUPT_CONFIG WDF_INTERRUPT_CONFIG
_WDF_INTERRUPT_PRIORITY
Definition: wdfinterrupt.h:65
@ WdfIrqPriorityHigh
Definition: wdfinterrupt.h:69
@ WdfIrqPriorityUndefined
Definition: wdfinterrupt.h:66
@ WdfIrqPriorityNormal
Definition: wdfinterrupt.h:68
@ WdfIrqPriorityLow
Definition: wdfinterrupt.h:67
_In_ WDFINTERRUPT _In_ WDF_INTERRUPT_POLICY _In_ WDF_INTERRUPT_PRIORITY Priority
Definition: wdfinterrupt.h:655
_In_ WDFINTERRUPT _In_ PWDF_INTERRUPT_EXTENDED_POLICY PolicyAndGroup
Definition: wdfinterrupt.h:691
enum _WDF_INTERRUPT_PRIORITY WDF_INTERRUPT_PRIORITY
_In_ _Requires_lock_held_(_Curr_) _Releases_lock_(_Curr_) WDFINTERRUPT Interrupt)
Returns the quota, depending on the given pool type of the quota in question. The routine is used exc...
Definition: wdfinterrupt.h:518
enum _WDF_INTERRUPT_POLICY WDF_INTERRUPT_POLICY
FORCEINLINE WDFDEVICE WdfInterruptGetDevice(_In_ WDFINTERRUPT Interrupt)
Definition: wdfinterrupt.h:721
_Must_inspect_result_ _In_ _Acquires_lock_(_Curr_)) WDFINTERRUPT Interrupt)
Definition: wdfinterrupt.h:743
#define WDF_EXTERN_C_START
Definition: wdfinterrupt.h:36
_In_ WDFDEVICE AssociatedDevice
Definition: wdfinterrupt.h:173
EVT_WDF_INTERRUPT_DPC * PFN_WDF_INTERRUPT_DPC
Definition: wdfinterrupt.h:134
enum _WDF_INTERRUPT_POLICY * PWDF_INTERRUPT_POLICY
EVT_WDF_INTERRUPT_ISR * PFN_WDF_INTERRUPT_ISR
Definition: wdfinterrupt.h:94
_In_ _Requires_lock_not_held_(_Curr_) _Acquires_lock_(_Curr_) WDFINTERRUPT Interrupt)
Definition: wdfinterrupt.h:489
FORCEINLINE BOOLEAN WdfInterruptQueueWorkItemForIsr(_In_ WDFINTERRUPT Interrupt)
Definition: wdfinterrupt.h:437
FORCEINLINE VOID WDF_INTERRUPT_INFO_INIT(_Out_ PWDF_INTERRUPT_INFO Info)
Definition: wdfinterrupt.h:325
WDF_EXTERN_C_START enum _WDF_INTERRUPT_POLARITY * PWDF_INTERRUPT_POLARITY
EVT_WDF_INTERRUPT_WORKITEM * PFN_WDF_INTERRUPT_WORKITEM
Definition: wdfinterrupt.h:153
_In_ WDFOBJECT AssociatedObject
Definition: wdfinterrupt.h:132
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
struct _WDF_INTERRUPT_EXTENDED_POLICY * PWDF_INTERRUPT_EXTENDED_POLICY
enum _WDF_INTERRUPT_PRIORITY * PWDF_INTERRUPT_PRIORITY
_In_ ULONG MessageID
Definition: wdfinterrupt.h:92
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
Definition: wdfinterrupt.h:458
struct _WDF_INTERRUPT_EXTENDED_POLICY WDF_INTERRUPT_EXTENDED_POLICY
_WDF_INTERRUPT_POLICY
Definition: wdfinterrupt.h:56
@ WdfIrqPolicyOneCloseProcessor
Definition: wdfinterrupt.h:59
@ WdfIrqPolicyAllCloseProcessors
Definition: wdfinterrupt.h:58
@ WdfIrqPolicyAllProcessorsInMachine
Definition: wdfinterrupt.h:60
@ WdfIrqPolicyMachineDefault
Definition: wdfinterrupt.h:57
@ WdfIrqPolicySpecifiedProcessors
Definition: wdfinterrupt.h:61
@ WdfIrqPolicySpreadMessagesAcrossAllProcessors
Definition: wdfinterrupt.h:62
FORCEINLINE BOOLEAN WdfInterruptQueueDpcForIsr(_In_ WDFINTERRUPT Interrupt)
Definition: wdfinterrupt.h:414
struct _WDF_INTERRUPT_CONFIG * PWDF_INTERRUPT_CONFIG
EVT_WDF_INTERRUPT_SYNCHRONIZE * PFN_WDF_INTERRUPT_SYNCHRONIZE
Definition: wdfinterrupt.h:115
_WDF_INTERRUPT_POLARITY
Definition: wdfinterrupt.h:50
@ WdfInterruptPolarityUnknown
Definition: wdfinterrupt.h:51
@ WdfInterruptActiveHigh
Definition: wdfinterrupt.h:52
@ WdfInterruptActiveLow
Definition: wdfinterrupt.h:53
_Must_inspect_result_ WDFAPI PKINTERRUPT(STDCALL * PFN_WDFINTERRUPTWDMGETINTERRUPT)(_In_ PWDF_DRIVER_GLOBALS DriverGlobals, _In_ WDFINTERRUPT Interrupt)
Definition: wdfinterrupt.h:593
EVT_WDF_INTERRUPT_ENABLE * PFN_WDF_INTERRUPT_ENABLE
Definition: wdfinterrupt.h:175
WDF_EXTERN_C_START enum _WDF_INTERRUPT_POLARITY WDF_INTERRUPT_POLARITY
WDFAPI BOOLEAN(STDCALL * PFN_WDFINTERRUPTQUEUEWORKITEMFORISR)(_In_ PWDF_DRIVER_GLOBALS DriverGlobals, _In_ WDFINTERRUPT Interrupt)
Definition: wdfinterrupt.h:428
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFINTERRUPT * Interrupt
Definition: wdfinterrupt.h:379
WDFAPI WDFDEVICE(STDCALL * PFN_WDFINTERRUPTGETDEVICE)(_In_ PWDF_DRIVER_GLOBALS DriverGlobals, _In_ WDFINTERRUPT Interrupt)
Definition: wdfinterrupt.h:712
_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
_Must_inspect_result_ _IRQL_requires_max_(DISPATCH_LEVEL) WDFAPI NTSTATUS(STDCALL *PFN_WDFINTERRUPTCREATE)(_In_ PWDF_DRIVER_GLOBALS DriverGlobals
Definition: wdfinterrupt.h:365
_In_ WDFINTERRUPT _In_ WDF_INTERRUPT_POLICY Policy
Definition: wdfinterrupt.h:653
@ WdfUseDefault
Definition: wdftypes.h:89
#define WDFAPI
Definition: wdftypes.h:53
#define FORCEINLINE
Definition: wdftypes.h:67
enum _WDF_TRI_STATE WDF_TRI_STATE
unsigned char UCHAR
Definition: xmlstorage.h:181