DeviceContext.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. // DeviceContext.h - WDFDEVICE 设备上下文
  2. // 每个被过滤的串口设备都关联一个上下文,存储:
  3. // - 该端口的环形缓冲区指针(捕获的事件)
  4. // - 是否已通过 IOCTL_COMMKIT_ATTACH_PORT 启用监控
  5. // - 该端口的 COM 编号(从硬件 ID 解析或注册时填入)
  6. #pragma once
  7. #include <ntddk.h>
  8. #include <wdf.h>
  9. #include "../common/CommKitIoctl.h"
  10. // 前向声明
  11. struct COMMKIT_RING_ENTRY;
  12. // 每个串口过滤设备的上下文
  13. typedef struct _DEVICE_CONTEXT {
  14. // 该端口对应的 COM 编号(COM n 的 n),0 表示未知
  15. ULONG ComNumber;
  16. // 是否已通过 ATTACH_PORT IOCTL 启用监控
  17. // 未启用的端口只做 IRP 透传,不捕获数据
  18. BOOLEAN MonitoringEnabled;
  19. // 该端口的事件环形缓冲(指针避免结构体过大)
  20. // 实际为 EventRingBuffer 实例指针,定义见 EventRingBuffer.h
  21. PVOID RingBuffer;
  22. // 下层真实串口设备对象(attach 目标)
  23. PDEVICE_OBJECT LowerDevice;
  24. // WDF 设备句柄(包装下层)
  25. WDFDEVICE WdfDevice;
  26. } DEVICE_CONTEXT, *PDEVICE_CONTEXT;
  27. // WDF_DECLARE_CONTEXT_TYPE_WITH_NAME 必须在全局作用域
  28. WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(DEVICE_CONTEXT, DeviceGetContext)