Delen via


Een VM-wachtrij toewijzen

Om een wachtrij toe te wijzen met een initieel pakket configuratieparameters, verzendt een overliggend stuurprogramma een OID_RECEIVE_FILTER_ALLOCATE_QUEUE methode-OID-aanvraag. Het InformationBuffer-lid van de NDIS_OID_REQUEST-structuur bevat in eerste instantie een aanwijzer naar een NDIS_RECEIVE_QUEUE_PARAMETERS structuur. Nadat de aanvraag voor de OID-methode is geretourneerd, bevat het lid InformationBuffer van de NDIS_OID_REQUEST-structuur een aanwijzer naar een NDIS_RECEIVE_QUEUE_PARAMETERS structuur met een nieuwe wachtrij-id en een MSI-X tabelvermelding.

De NDIS_RECEIVE_QUEUE_PARAMETERS structuur wordt gebruikt in de OID_RECEIVE_FILTER_ALLOCATE_QUEUE OID en de OID_RECEIVE_FILTER_QUEUE_PARAMETERS OID. Zie Vm-wachtrijparameters verkrijgen en bijwerken voor meer informatie over VM-wachtrijparameters.

Het overliggende stuurprogramma initialiseert de NDIS_RECEIVE_QUEUE_PARAMETERS structuur met de volgende configuratieparameters voor de wachtrij:

  • Het wachtrijtype (NdisReceiveQueueTypeVMQueue uit de opsomming NDIS_RECEIVE_QUEUE_TYPE.)

  • De processoraffiniteit voor de wachtrij.

  • De naam van de wachtrij en de naam van de virtuele machine.

  • De parameters lookahead-split.

    Opmerking Vanaf NDIS 6.30 wordt het splitsen van pakketgegevens in afzonderlijke lookahead-buffers niet meer ondersteund.

Notitie Het overliggende stuurprogramma kan de NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION en NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED vlaggen instellen in het lid Vlaggen van de NDIS_RECEIVE_QUEUE_PARAMETERS structuur. De andere vlaggen worden niet gebruikt voor wachtrijtoewijzing.

Wanneer NDIS een OID-aanvraag ontvangt om een ontvangstwachtrij toe te wijzen, worden de wachtrijparameters gecontroleerd. Nadat NDIS de benodigde resources en de wachtrij-id heeft toegewezen, wordt de OID-aanvraag verzonden naar het onderliggende minipoortstuurprogramma. De wachtrij-id is uniek voor de bijbehorende netwerkadapter.

Als het minipoortstuurprogramma de benodigde software- en hardwarebronnen voor de ontvangstwachtrij kan toewijzen, wordt de OID-aanvraag voltooid met de status Geslaagd.

Voordat NDIS de OID-aanvraag naar het minipoortstuurprogramma verzendt, wijst NDIS een wachtrij-id toe aan het queueId-lid van de NDIS_RECEIVE_QUEUE_PARAMETERS-structuur en geeft de methodeaanvraag door aan het minipoortstuurprogramma. Het minipoortstuurprogramma biedt de MSI-X tabelvermelding in het MSIXTableEntry-lid.

Het minipoortstuurprogramma moet de wachtrij-id's voor de toegewezen wachtrijen behouden. NDIS gebruikt de wachtrij-id van een ontvangstwachtrij voor volgende aanroepen naar het minipoortstuurprogramma om een ontvangstfilter in te stellen voor de ontvangstwachtrij, de parameters voor de ontvangstwachtrij te wijzigen of de ontvangstwachtrij vrij te maken.

Notitie De standaardwachtrij (wachtrij-id nul) wordt altijd toegewezen en kan niet worden vrijgemaakt.

Het overliggende stuurprogramma moet de wachtrij-id gebruiken die NDIS biedt in volgende OID-aanvragen, bijvoorbeeld om de wachtrijparameters te wijzigen of de wachtrij vrij te maken. De wachtrij-id wordt ook opgenomen in de OOB-gegevens op alle NET_BUFFER_LIST structuren die zijn gekoppeld aan de wachtrij. Stuurprogramma's gebruiken de macro NET_BUFFER_LIST_RECEIVE_QUEUE_ID om de wachtrij-id op te halen in een NET_BUFFER_LIST structuur.

Notitie Een protocolstuurprogramma kan VMQ-filters op elk gewenst moment instellen nadat een wachtrij is toegewezen en voordat de wachtrij wordt verwijderd.

Het protocolstuurprogramma geeft een OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE methode OID-aanvraag uit om de toewijzing van de wachtrij te voltooien. Het minipoortstuurprogramma kan gedeeld geheugen en andere resources toewijzen wanneer de toewijzing is voltooid. Zie Toewijzing van gedeelde geheugenresources voor meer informatie over het toewijzen van gedeelde geheugenresources.

Nadat een miniportstuurprogramma een OID_RECEIVE_FILTER_QUEUE_ALLOCATION OID-aanvraag ontvangt en deze met succes verwerkt, heeft de wachtrij de status Toegewezen. Zie Wachtrijstatussen en -bewerkingenvoor meer informatie over wachtrijstatussen.

Nadat een overliggend stuurprogramma een of meer ontvangstwachtrijen toewijst (en eventueel de eerste filters instelt), moet het OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE OID-aanvragen instellen om het minipoortstuurprogramma te informeren dat de toewijzing is voltooid voor de huidige batch ontvangstwachtrijen.

Het minipoortstuurprogramma mag geen pakketten in een ontvangstwachtrij bewaren als er geen filters zijn ingesteld voor die wachtrij. Als een wachtrij nooit filters heeft ingesteld of alle filters zijn gewist, moet de wachtrij leeg zijn en moeten alle pakketten worden verwijderd. Dat wil zeggen, ze worden niet doorgegeven naar de stuurprogrammastack of in de wachtrij bewaard.

Overliggende stuurprogramma's gebruiken de OID_RECEIVE_FILTER_FREE_QUEUE OID om wachtrijen vrij te geven die ze toewijzen. Zie Een VM-wachtrij vrijmaken voor meer informatie over het vrijmaken van wachtrijen.