Sammankopplingsfunktioner för rapporteringspaket
Miniportdrivrutiner registrerar följande funktioner med NDIS vid initiering av nätverkskort:
Paketkoalesceringsfunktioner som nätverkskortet stöder.
Paketkoalesceringsfunktioner som för närvarande är aktiverade på nätverkskortet.
Paketkopplingen tar emot filtreringsfunktioner som för närvarande är aktiverade på nätverkskortet.
Notera En miniportdrivrutins stöd för paketkoppling kan aktiveras eller inaktiveras via nyckelordsinställningen *PacketCoalescing INF. Den här inställningen visas på egenskapssidan Avancerat för nätverkskortet. För mer information om inställningen för INF-fil för paketsammanslagning, se Standardized INF Keywords for Packet Coalescing.
Miniportdrivrutinen rapporterar paketens sammansmältnings- och filtreringsfunktioner i det underliggande nätverkskortet via en NDIS_RECEIVE_FILTER_CAPABILITIES struktur. Om *PacketCoalescing nyckelordsinställningen i registret har värdet ett, aktiveras paketkolescering och miniportdrivrutinen initierar NDIS_RECEIVE_FILTER_CAPABILITIES struktur på följande sätt:
Miniportdrivrutinen initierar Header-medlemmen. Drivrutinen anger type medlem i Header till NDIS_OBJECT_TYPE_DEFAULT.
Om drivrutinen stöder paketkoppling, sätter den fältet Revision i Header till NDIS_RECEIVE_FILTER_CAPABILITIES_REVISION_2 och fältet Size till NDIS_SIZEOF_RECEIVE_FILTER_CAPABILITIES_REVISION_2.
Miniportdrivrutinen anger flaggan NDIS_RECEIVE_FILTER_PACKET_COALESCING_SUPPORTED_ON_DEFAULT_QUEUE i SupportedQueueProperties medlemsvariabel.
Om den här flaggan anges måste nätverkskortet ha stöd för filtrering av mottagna multicast-paket i maskinvaran. Den här filtreringen baseras på de multicast-adresser som NDIS avlastade till nätverkskortet genom att skicka OID_802_3_MULTICAST_LIST OID-uppsättningsbegäranden.
Note Protocol-drivrutiner kan också ändra innehållet i multicast-adresslistan genom att skicka OID_802_3_ADD_MULTICAST_ADDRESS och OID_802_3_DELETE_MULTICAST_ADDRESS begäranden. NDIS kombinerar dessa begäranden till OID_802_3_MULTICAST_LIST OID-uppsättningsbegäranden.
Obs Adaptern krävs för att avvisa inkommande multicast-paket vars MAC-adress (Destination Media Access Control) inte matchar någon av de multicast-adresser som anges av dessa OID-uppsättningsbegäranden.
Miniportdrivrutinen anger flaggan NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED i EnabledFilterTypes medlem.
Obs Om drivrutinen anger den här flaggan måste den också ange flaggan NDIS_RECEIVE_FILTER_PACKET_COALESCING_SUPPORTED_ON_DEFAULT_QUEUE i SupportedQueueProperties medlem. Annars kommer NDIS att misslyckas med anropet till NdisMSetMiniportAttributes genom att returnera NDIS_STATUS_BAD_CHARACTERISTICS.
Om miniportdrivrutinen anger flaggan NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED måste drivrutinen ha stöd för alla testkriterier för mottagningsfilter. Drivrutinen annonserar det här stödet genom att ange följande flaggor i SupportedFilterTests medlemmen:
NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_EQUAL_SUPPORTED
NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_MASK_EQUAL_SUPPORTED
NDIS_MOTTAGARFILTER_TEST_HUVUDFÄLT_INTE_LIKA_STÖD_FUNKTION
Obs Om miniportdrivrutinen inte anger flaggan NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED måste drivrutinen ange SupportedFilterTests medlemsvariabeln till värdet noll.
Om miniportdrivrutinen anger flaggan NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED måste miniportdrivrutinen ha stöd för filtrering av data inom olika fält i sidhuvudena för medieåtkomstkontroll (MAC), IP-version 4 (IPv4) och IP-version 6 (IPv6). Drivrutinen annonserar det här stödet genom att ange följande flaggor i SupportedHeaders medlemmen:
NDIS_RECEIVE_FILTER_MAC_HEADER_SUPPORTED
NDIS_RECEIVE_FILTER_ARP_HEADER_SUPPORTED
NDIS_RECEIVE_FILTER_IPV4_HEADER_SUPPORTED
NDIS MOTTA FILTER IPV6 HEADER STÖD
NDIS_RECEIVE_FILTER_UDP_HEADER_SUPPORTED
Obs Om miniportdrivrutinen inte anger flaggan NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED måste drivrutinen ange SupportedHeaders medlem till noll.
Om miniportdrivrutinen anger flaggan NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED måste miniportdrivrutinen ha stöd för filtrering av data i MAC-huvudet (Media Access Control) på det mottagna paketet. Drivrutinen signalerar det här stödet genom att ange följande flaggor i SupportedMacHeaderFields medlem:
NDIS_MOTTAGNINGSFILTER_MAC_HEADER_DEST_ADR_SUPPORTED
NDIS_RECEIVE_FILTER_MAC_HEADER_PROTOCOL_SUPPORTED
NDIS_RECEIVE_FILTER_MAC_HEADER_PACKET_TYPE_SUPPORTED
Observera Om miniportdrivrutinen inte anger flaggan NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED måste drivrutinen ange SupportedMacHeaderFields medlem till noll.
Om miniportdrivrutinen anger flaggan NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED måste miniportdrivrutinen ha stöd för filtrering av data i huvudet på ett mottaget ARP-paket (Address Resolution Protocol). Drivrutinen annonserar det här stödet genom att ange följande flaggor i SupportedARPHeaderFields medlem:
NDIS_RECEIVE_FILTER_ARP_HEADER_OPERATION_SUPPORTED
NDIS_RECEIVE_FILTER_ARP_HEADER_SPA_SUPPORTED
NDIS_RECEIVE_FILTER_ARP_HEADER_TPA_SUPPORTED
Obs Om miniportdrivrutinen inte ställer in flaggan NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, ska drivrutinen ställa in SupportedARPHeaderFields medlemsattributet till noll.
Om miniportdrivrutinen anger flaggan NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED måste miniportdrivrutinen ha stöd för filtrering av data i OSI-nivå 3-huvudet (Open Systems Interconnection) (L3) i ett mottaget IP-version 4-paket (IPv4). Drivrutinen annonserar det här stödet genom att ange följande flaggor i medlemsvariabeln SupportedIPv4HeaderFields:
- NDIS_EMPFÅNGSFILTER_IPV4_HEADER_PROTOCOLL_STÖDD
Obs Om miniportdrivrutinen inte anger flaggan NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED måste drivrutinen ange SupportedIPv4HeaderFields medlem till noll.
Om miniportdrivrutinen anger flaggan NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED måste miniportdrivrutinen ha stöd för filtrering av data i L3-huvudet för ett mottaget IP-version 6-paket (IPv6). Drivrutinen annonserar det här stödet genom att ange följande flaggor i SupportedIPv6HeaderFields medlemmens:
- NDIS_RECEIVE_FILTER_IPV6_HEADER_PROTOCOL_SUPPORTED
Obs Om miniportdrivrutinen inte anger flaggan NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED måste drivrutinen ange SupportedIPv6HeaderFields medlem till noll.
Om miniportdrivrutinen anger flaggan NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED måste miniportdrivrutinen ha stöd för filtrering av data i OSI layer 4-huvudet (L4) i ett mottaget UDP-paket (User Datagram Protocol). Drivrutinen indikerar det här stödet genom att ange följande flaggor i SupportedIUdpHeaderFields fält:
- NDIS_RECEIVE_FILTER_UDP_HEADER_DEST_PORT_SUPPORTED
Obs Om det mottagna UDP-paketet innehåller IPv4-alternativ eller IPv6-tilläggshuvuden kan nätverkskortet hantera paketet som om det misslyckades med UDP-filtertestet. På så sätt kan adaptern automatiskt släppa det mottagna paketet.
Obs Om miniportdrivrutinen inte anger flaggan NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED måste drivrutinen ange SupportedIUdpHeaderFields medlem till noll.
Miniportdrivrutinen måste rapportera det maximala antalet tester på pakethuvudfält som kan anges för ett enda paketsammankopplingsfilter. Drivrutinen anger det här värdet i MaxFieldTestsPerPacketCoalescingFilter medlem.
Observera Nätverkskort som stöder paketsammanslagning måste ha stöd för fem eller fler paketrubrikfält som kan anges i ett enda filter för sammanslagning av paket. Om adaptern inte stöder paketkoppling måste miniportdrivrutinen ange värdet till noll.
Miniportdrivrutinen måste rapportera det maximala antalet paketsammankopplingsfilter som stöds av nätverkskortet. Drivrutinen anger det här värdet i MaxPacketCoalescingFilters element.
Observera Nätverkskort som stöder sammankoppling av paket måste ha stöd för tio eller fler sammanspingande paketfilter. Om adaptern inte stöder paketkoppling måste miniportdrivrutinen ange värdet till noll.
När NDIS anropar miniportdrivrutinens MiniportInitializeEx-funktion rapporterar drivrutinen paketens sammankopplings- och filtreringsfunktioner i det underliggande nätverkskortet genom att följa dessa steg:
Miniportdrivrutinen initierar en NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES struktur.
Om *PacketCoalescing nyckelordsinställning i registret har värdet ett, anger miniportdrivrutinen HardwareReceiveFilterCapabilities medlem till en pekare till den tidigare initierade NDIS_RECEIVE_FILTER_CAPABILITIES strukturen.
Om nyckelordets inställning *PacketCoalescing i registret har värdet noll indikerar miniportdrivrutinen inte stöd för paketkolescering. Den ska ange HardwareReceiveFilterCapabilities medlemsvariabel till NULL.
Drivrutinen anropar NdisMSetMiniportAttributes och sätter parametern MiniportAttributes till en pekare till NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES strukturen.
Den metod som används av miniportdrivrutiner för att rapportera paketsammankopplings- och filtreringsfunktionerna i det underliggande nätverkskortet baseras på NDIS 6.20-metoden för rapportering av energisparfunktioner. Mer information om den här metoden finns i Rapportering av strömhanteringsfunktioner.
Mer information om initialiseringsprocessen för adaptern finns i Initialisera en miniportadapter.