本主题介绍实现 NDIS-WDM 微型端口驱动程序的提示和要求。 NDIS-WDM 微型端口驱动程序可以同时调用 NDIS 和非 NDIS 函数。 这些非 NDIS 函数包括 WDM 内核模式支持例程,以及用于特定总线驱动程序接口的函数。
实现 NDIS-WDM 微型端口驱动程序时,请记住以下几点:
构建 NDIS-WDM 迷你端口驱动程序要求在包含 Ndis.h 头文件之前,定义 NDIS_WDM 标志。 定义NDIS_WDM标志可确保 Ndis.h 自动包含相应的 WDM 头文件。 NDIS_WDM标志应嵌入在微型端口驱动程序源代码的开头,或设置在微型端口驱动程序的 Sources 文件中。 NDIS-WDM 微型端口驱动程序需要 WDM 头文件来调用内核模式例程,例如 IoCallDriver 和 IoAllocateIrp。
特定总线驱动程序接口的函数调用需要该总线驱动程序的标头文件。
不建议在同一源文件中包含 NDIS 和非 NDIS 标头,因为它们可能不兼容。 也就是说,应为调用 NDIS 函数的代码和调用非 NDIS 函数的代码创建单独的源文件。
NDIS-WDM 微型端口驱动程序应调用相应的 NDIS 函数来分配和释放资源,除非 NDIS-WDM 微型端口驱动程序在以下方案中分配和释放资源:
- 资源(通常是内存资源)由 NDIS-WDM 微型端口驱动程序分配,后来由非 NDIS 实体(例如总线驱动程序接口)释放。
- 资源(通常是内存资源)由非 NDIS 实体分配,稍后由 NDIS-WDM 微型端口驱动程序发布。
对于上述方案,NDIS-WDM 微型端口驱动程序应调用相应的 WDM 例程来为非 NDIS 实体分配或释放资源。