Implementeringstips och krav för WDM Lower Edge
Det här avsnittet beskriver tips och krav för att implementera en NDIS-WDM miniportdrivrutin. En NDIS-WDM miniportdrivrutin kan anropa både NDIS- och icke-NDIS-funktioner. Dessa icke-NDIS-funktioner omfattar till exempel stödrutiner och funktioner för WDM-kernel-läge för ett visst bus-driver-gränssnitt.
Tänk på följande när du implementerar en NDIS-WDM miniportdrivrutin:
Att skapa en NDIS-WDM miniportdrivrutin kräver att flaggan NDIS_WDM definieras innan Ndis.h-rubrikfilen inkluderas. Genom att definiera flaggan NDIS_WDM ser du till att Ndis.h automatiskt innehåller lämplig WDM-huvudfil. Flaggan NDIS_WDM ska antingen bäddas in i början av miniportdrivrutinens källkod eller anges i miniportdrivrutinens källfil. En NDIS-WDM miniportdrivrutin kräver en WDM-huvudfil för att anropa kernellägesrutiner som IoCallDriver och IoAllocateIrp.
Funktionsanrop för ett visst buss-drivrutinsgränssnitt kräver huvudfilerna för bussdrivrutinen.
Att inkludera NDIS- och icke-NDIS-huvuden i samma källfil rekommenderas inte eftersom de kanske inte är kompatibla. Det vill sägs att separata källfiler ska skapas för kod som anropar NDIS-funktioner och för kod som anropar icke-NDIS-funktioner.
En NDIS-WDM miniportdrivrutin bör anropa lämpliga NDIS-funktioner för att allokera och frigöra resurser såvida inte NDIS-WDM miniportdrivrutin allokerar och släpper resurser i något av följande scenarier:
- En resurs, vanligtvis en minnesresurs, allokeras av NDIS-WDM miniportdrivrutin och släpps senare av en icke-NDIS-entitet, till exempel ett bussdrivrutinsgränssnitt.
- En resurs, vanligtvis en minnesresurs, allokeras av en icke-NDIS-entitet och släpps senare av NDIS-WDM miniportdrivrutin.
För de föregående scenarierna bör NDIS-WDM miniportdrivrutinen anropa lämpliga WDM-rutiner för att allokera eller frigöra resurser för den icke-NDIS-entiteten.