Delen via


OID_RECEIVE_FILTER_FREE_QUEUE

NDIS-protocolstuurprogramma's geven object-id (OID) aanvragen van OID_RECEIVE_FILTER_FREE_QUEUE om een ontvangstwachtrij vrij te maken.

De InformationBuffer lid van de NDIS_OID_REQUEST-structuur bevat een aanwijzer naar een NDIS_RECEIVE_QUEUE_FREE_PARAMETERS structuur met een wachtrij-id van het type NDIS_RECEIVE_QUEUE_ID.

Opmerkingen

De OID-setaanvraag van OID_RECEIVE_FILTER_FREE_QUEUE is optioneel voor NDIS 6.20 en hoger minipoortstuurprogramma's. Dit is verplicht voor minipoortstuurprogramma's die ondersteuning bieden voor de wachtrijinterface van de virtuele machine.

Nadat een overliggend stuurprogramma de OID_RECEIVE_FILTER_ALLOCATE_QUEUE OID heeft opgegeven om een ontvangstwachtrij toe te wijzen, geeft het de OID_RECEIVE_FILTER_FREE_QUEUE OID uit om de ontvangstwachtrij vrij te maken.

Wanneer NDIS een minipoortstuurprogramma aanvraagt om een VMQ-ontvangstwachtrij vrij te maken, volgt deze stappen:

  1. De netwerkadapter stopt de DMA-overdracht van gegevens om buffers te ontvangen die zijn gekoppeld aan de ontvangstwachtrij, waarna de wachtrij de status DMA Gestopt moet invoeren. De netwerkadapter heeft waarschijnlijk de DMA-activiteit gestopt toen deze de OID_RECEIVE_FILTER_CLEAR_FILTER OID-aanvraag ontving om het laatste setfilter in de ontvangstwachtrij te wissen.

  2. Het minipoortstuurprogramma genereert een NDIS_STATUS_RECEIVE_QUEUE_STATE statusaanduiding met de QueueState lid van de NDIS_RECEIVE_QUEUE_STATE structuur ingesteld op NdisReceiveQueueOperationalStateDmaStopped om NDIS te melden dat de DMA-overdracht is gestopt.

  3. Het minipoortstuurprogramma wacht tot alle aangegeven pakketten worden ontvangen voordat die wachtrij wordt geretourneerd naar het minipoortstuurprogramma.

  4. Het minipoortstuurprogramma maakt alle gedeelde geheugen vrij die is toegewezen voor de ontvangen buffers van de netwerkadapter die aan de wachtrij zijn gekoppeld door NdisFreeSharedMemory-aan te roepen.

  5. Het minipoortstuurprogramma voltooit de OID_RECEIVE_FILTER_FREE_QUEUE OID-aanvraag om de ontvangstwachtrij vrij te maken.

Miniportstuurprogramma's roepen de NdisFreeSharedMemory- functie aan om gedeeld geheugen vrij te maken voor een wachtrij. Als het minipoortstuurprogramma het gedeelde geheugen voor een niet-standaardwachtrij heeft toegewezen, maakt het stuurprogramma het gedeelde geheugen vrij in de context van de OID_RECEIVE_FILTER_FREE_QUEUE OID terwijl de wachtrij wordt vrijgemaakt. Miniportstuurprogramma's maken gedeeld geheugen vrij die ze hebben toegewezen voor de standaardwachtrij in de context van de MiniportHaltEx functie.

Een overliggend stuurprogramma moet alle filters die in een wachtrij zijn ingesteld, vrijmaken voordat de wachtrij wordt vrijgemaakt. Bovendien moet een overliggend stuurprogramma alle ontvangen wachtrijen die zijn toegewezen aan een netwerkadapter vrijmaken voordat de functie NdisCloseAdapterEx wordt aangeroepen om een binding met de netwerkadapter te sluiten. NDIS maakt alle wachtrijen die zijn toegewezen op een netwerkadapter vrij voordat de minipoortstuurprogramma MiniportHaltEx functie aanroept.

Statuscodes retourneren

De MiniportOidRequest-functie van het minipoortstuurprogramma retourneert een van de volgende waarden voor deze aanvraag:

Term Beschrijving

NDIS_STATUS_SUCCESS

Het minipoortstuurprogramma heeft de aanvraag voltooid.

NDIS_STATUS_PENDING

Het minipoortstuurprogramma voltooit de aanvraag asynchroon. Nadat het minipoortstuurprogramma alle verwerking heeft voltooid, moet deze de aanvraag voltooien door de NdisMOidRequestComplete-functie aan te roepen en NDIS_STATUS_SUCCESS door te geven voor de parameter Status.

NDIS_STATUS_NOT_ACCEPTED

Het minipoortstuurprogramma wordt opnieuw ingezet.

NDIS_STATUS_REQUEST_ABORTED

Het minipoortstuurprogramma heeft de aanvraag niet meer verwerkt. NDIS heeft bijvoorbeeld de functie MiniportResetEx genoemd.

NDIS retourneert een van de volgende statuscodes voor deze aanvraag:

Statuscode Beschrijving

NDIS_STATUS_SUCCESS

De aangevraagde wachtrij is vrijgemaakt.

NDIS_STATUS_PENDING

De aanvraag is in behandeling. NDIS geeft de laatste statuscode en resultaten door aan de voltooiingshandler van de OID-aanvraag voor de aanroeper nadat de aanvraag is voltooid.

NDIS_STATUS_INVALID_PARAMETER

De wachtrij-id is ongeldig.

NDIS_STATUS_INVALID_LENGTH

De informatiebuffer is te kort. NDIS stelt de DATA-in.METHOD_INFORMATION.lid van BytesNeeded in de NDIS_OID_REQUEST-structuur tot de minimale buffergrootte die is vereist.

Eisen

Versie

Ondersteund in NDIS 6.20 en hoger.

Rubriek

Ntddndis.h (inclusief Ndis.h)

Zie ook

MiniportHaltEx-

NDIS_OID_REQUEST

NDIS_RECEIVE_QUEUE_FREE_PARAMETERS

NDIS_STATUS_RECEIVE_QUEUE_STATE

NdisCloseAdapterEx-

NdisFreeSharedMemory-

OID_RECEIVE_FILTER_ALLOCATE_QUEUE