Initiering av en miniportdrivrutin
När en nätverksenhet blir tillgänglig läser systemet in NDIS-miniportdrivrutinen för att hantera enheten (om drivrutinen inte redan har lästs in). Varje miniportdrivrutin måste tillhandahålla en DriverEntry-funktion. Systemet anropar DriverEntry efter att drivrutinen har lästs in. DriverEntry registrerar miniportdrivrutinens egenskaper med NDIS (inklusive den NDIS-version som stöds och drivrutinsinmatningspunkterna).
Systemet skickar två argument till DriverEntry:
En pekare till drivrutinsobjektet som skapades av I/O-systemet.
En pekare till registersökvägen, som anger var drivrutinsspecifika parametrar lagras.
I DriverEntryskickar miniportdrivrutinerna båda dessa pekare i ett anrop till funktionen NdisMRegisterMiniportDriver. Miniportdrivrutiner exporterar en uppsättning standardfunktioner MiniportXxx genom att lagra sina startpunkter i en NDIS_MINIPORT_DRIVER_CHARACTERISTICS struktur och skicka den strukturen till NdisMRegisterMiniportDriver.
DriverEntry för miniportdrivrutiner returnerar värdet som returneras av anropet till NdisMRegisterMiniportDriver.
En miniportdrivrutin utför också andra drivrutinsspecifika initieringar som krävs i DriverEntry. Drivrutinen utför adapterspecifik initialisering i funktionen MiniportInitializeEx. Mer information om initiering av adapter finns i Initiera en adapter.
DriverEntry kan allokera NDIS_MINIPORT_DRIVER_CHARACTERISTICS struktur på stacken eftersom NDIS-biblioteket kopierar relevant information till sin egen lagring. DriverEntry bör rensa minnet för den här strukturen med NdisZeroMemory- innan du anger några värden som tillhandahålls av drivrutinen i dess medlemmar. MajorNdisVersion och MinorNdisVersion medlemmar måste innehålla de större och mindre versioner av NDIS som drivrutinen stöder. I varje medlem av Xxx-hanterare i egenskapsstrukturen måste DriverEntry ange startpunkten för en MiniportXxx funktion, eller så måste medlemmen vara NULL-.
Om du vill aktivera en miniportdrivrutin för att konfigurera valfria tjänster anropar NDIS funktionen MiniportSetOptions i kontexten för miniportdrivrutinens anrop till NdisMRegisterMiniportDriver. För mer information om valfria tjänster, se Konfigurering av tjänster för valfria Miniport-drivrutiner.
Drivrutiner som anropar NdisMRegisterMiniportDriver måste vara förberedda på att NDIS kan anropa deras MiniportInitializeEx-funktioner när som helst efter att DriverEntry returnerar. En sådan drivrutin måste ha tillräcklig installations- och konfigurationsinformation lagrad i registret eller tillgänglig från anrop till en NdisXxx busstypsspecifik konfigurationsfunktion för att konfigurera eventuella NIC-specifika resurser som drivrutinen måste utföra nätverks-I/O-åtgärder.
Miniportdrivrutinen måste så småningom anropa NdisMDeregisterMiniportDriver för att frigöra resurser som allokerats genom att anropa NdisMRegisterMiniportDriver. Om drivrutinsinitieringen misslyckas efter att anropet till NdisMRegisterMiniportDriver har lyckats kan drivrutinen anropa NdisMDeregisterMiniportDriver från DriverEntry. I annat fall måste miniportdrivrutinen frigöra de drivrutinsspecifika resurser som den allokerar i sin MiniportDriverUnload- funktion. Om NdisMRegisterMiniportDriver inte returnerar NDIS_STATUS_SUCCESS måste DriverEntry, med andra ord, frigöra alla resurser som den allokerade innan den återlämnar kontrollen. Drivrutinen läses inte in om detta inträffar. Mer information finns i Avlasta en miniportdrivrutin.