WDF_INTERRUPT_CONFIG 结构

  • Post author:
  • Post category:其他



WDF_INTERRUPT_CONFI


G


结构主要包含了设备中断的配置信息。

语法:

typedef struct _WDF_INTERRUPT_CONFIG {

ULONG                     Size;

WDFSPINLOCK               SpinLock;

WDF_TRI_STATE             ShareVector;

BOOLEAN                   FloatingSave;

BOOLEAN                   AutomaticSerialization;

PFN_WDF_INTERRUPT_ISR     EvtInterruptIsr;

PFN_WDF_INTERRUPT_DPC     EvtInterruptDpc;

PFN_WDF_INTERRUPT_ENABLE  EvtInterruptEnable;

PFN_WDF_INTERRUPT_DISABLE EvtInterruptDisable;

} WDF_INTERRUPT_CONFIG, *PWDF_INTERRUPT_CONFIG;

成员:

Size

WDF_INTERRUPT_CONFG

结构体大小,以字节为单位。

SpinLock


Framework

自旋锁句柄对象,或者由之前调用




WdfSpinLockCreate



时获得,或者为

NULL


。如果这个参数为


NULL





Framework


会使用内部的自旋锁对象。当驱动的




EvtInterruptSynchronize





事件


回调函数被调用钱并且驱动调用了



WdfInterruptAcquireLock


时,

Framework

会获取自旋锁。


ShareVector



WDF_TRI_STATE



类型的值。如果这个值为


WdfTrue


,中断向量可以共享;如果为


WdfFalse


,则中断向量不可以共享。如果值是默认的


WdfDefault





PnP(

管理层


)


将会使用总线驱动的值。


FloatingSave


Boolean

型变量。如果为


TRUE


,那么系统将会保存设备中断时处理区的浮点真真和


MMX


状态,相反则不保存。当




EvtInterruptIsr





回调函数必须使用浮点指针或者

MMX


寄存器时,驱动代码必须设为


TRUE


。更多信息,查看




Using Floating Point or MMX in a WDM Driver



.


AutomaticSerialization


Boolean

型变量。如果为


TRUE





Framework


会同步执行此中断对象以及此中断之下的父类设备对象的




EvtInterruptDpc





回调函数。

EvtInterruptIsr


驱动的



EvtInterruptIsr





回调函数指针,不可以为


NULL




EvtInterruptDpc


驱动的



EvtInterruptDpc





回调函数指针,可以为


NULL




EvtInterruptEnable


驱动的



EvtInterruptEnable





回调函数指针,可以为


NULL




EvtInterruptDisable


驱动的



EvtInterruptDisable





回调函数指针,可以为


NULL




备注:


WDF_INTERRUPT_CONFIG


结构是



WdfInterruptCreate


接口

的输入参数。


必须调用



WDF_INTERRUPT_CONFIG_INIT



来初始化


WDF_INTERRUPT_CONFIG


结构体,并且还要给其他


(



WDF_INTERRUPT_CONFIG_INIT



)


没有初始化的成员进行初始化。


如果父类的设备对象


s


ynchronization scope


的值为


WdfSynchronizationScopeNone





设置


AutomaticSerialization






TRUE


不会对父类的设备对象有影响。


如果父类的设备对象



execution level





设置为


WdfExecutionLevelPassive


,设置


AutomaticSerialization







TRUE


会引起


WdfInterruptCreate




失败。


更多关于


AutomaticSerialization




和驱动同步回调的内容,可以参考



Synchronization Techniques for Framework-Based Drivers



.


更多关于


Framework

层处理中断的内容,参考




Handling Hardware Interrupts



.


Note:


1.KMDF V1.0及之后版本;

头文件Wdfinterrupt.h。