EVT_SERCX_FILECLEANUP回调函数 (sercx.h)
EvtSerCxFileCleanup 事件回调函数通知串行控制器驱动程序客户端已关闭表示串行控制器设备的文件对象的最后一个句柄。
语法
EVT_SERCX_FILECLEANUP EvtSercxFilecleanup;
void EvtSercxFilecleanup(
[in] WDFDEVICE Device
)
{...}
参数
[in] Device
表示串行控制器的框架设备对象的 WDFDEVICE 句柄。
返回值
没有
言论
此函数可以解除分配以前为文件对象的生存期分配驱动程序的某些系统资源。 结合 EvtSerCxFileClose 函数,EvtSerCerCxFileCleanup 函数应从可接收和传输数据的状态中删除串行控制器设备。 EvtSerCxFileCleanup 函数应专门关注清理任务,例如解除分配内存。
如果串行控制器驱动程序以前只为关闭的文件对象的生存期分配了内存,驱动程序应在 EvtSerCxFileCleanup 或 EvtSerCxFileClose 函数中解除分配此内存。
通常,只有在释放文件对象后,才应禁用中断。 因此,EvtSerCxFileClose 函数(而不是 EvtSerCxFileCleanup 函数)应禁用中断。
SerCx 调用驱动程序的 EvtSerCxFileCleanup 函数,最后一个文件对象的句柄关闭后。 由于 I/O 请求未完成,此对象可能尚未释放。 此调用后,驱动程序不会收到对 I/O 操作的新请求。
SerCx 在调用驱动程序的 EvtSerCxFileCleanup 函数后调用驱动程序的 EvtSerCxFileClose 函数。 SerCx 在释放文件对象后调用 EvtSerCxFileClose 函数,仅当所有未完成的 I/O 请求完成或取消时才发生。
EvtSerCxFileCleanup 函数是可选的。 如果串行控制器驱动程序未实现此函数,驱动程序的 EvtSerCxFileClose 函数必须处理最后一个文件句柄关闭后所需的所有清理任务。
若要注册 EvtSerCxFileCleanup 回调函数,驱动程序必须调用 SerCxInitialize 方法。
有关详细信息,请参阅 Framework 文件对象。
例子
此回调的函数类型在 Sercx.h 中声明,如下所示。
typedef VOID
EVT_SERCX_FILECLEANUP(
__in WDFDEVICE Device
);
若要定义名为 MyEvtSerCxFileCleanup
的 EvtSerCxFileCleanup 回调函数,必须先提供 静态驱动程序验证程序(SDV)和其他验证工具所需的函数声明,如下所示。
EVT_SERCX_FILECLEANUP MyEvtSerCxFileCleanup;
然后,按如下所示实现回调函数。
VOID
MyEvtSerCxFileCleanup(
__in WDFDEVICE Device
)
{ ... }
有关函数声明的 SDV 要求的详细信息,请参阅 使用 KMDF 驱动程序的函数角色类型声明函数。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 从 Windows 8 开始可用。 |
目标平台 | 桌面 |
标头 | sercx.h |
IRQL | 在 IRQL <调用 = DISPATCH_LEVEL |