MINIPORT_CANCEL_SEND Rückruffunktion (ndis.h)
NDIS ruft die MiniportCancelSend-Funktion eines Miniporttreibers auf, um die Übertragung aller NET_BUFFER_LIST Strukturen abzubrechen, die mit einem angegebenen Abbruchbezeichner gekennzeichnet sind.
MINIPORT_CANCEL_SEND MiniportCancelSend;
void MiniportCancelSend(
[in] NDIS_HANDLE MiniportAdapterContext,
[in] PVOID CancelId
)
{...}
[in] MiniportAdapterContext
Ein Handle für einen Kontextbereich, den der Miniporttreiber in seiner MiniportInitializeEx-Funktion zugeordnet hat. Der Miniporttreiber verwendet diesen Kontextbereich, um Zustandsinformationen zu einem Adapter zu verwalten.
[in] CancelId
Ein Abbruchbezeichner. Dieser Bezeichner gibt die NET_BUFFER_LIST Strukturen an, die abgebrochen werden.
Keine
Miniporttreiber und Zwischentreiber, die NET_BUFFER_LIST Strukturen senden , exportieren eine MiniportCancelSend-Funktion . Die MiniportCancelSend-Funktion bricht die ausstehende Übertragung der angegebenen NET_BUFFER_LIST-Strukturen ab.
Wenn ein Überlastungs-NDIS-Treiber den aufruft NdisCancelSendNetBufferLists-Funktion , NDIS ruft die MiniportCancelSend-Funktion des entsprechenden Treibers auf niedrigerer Ebene für die Bindung auf. NDIS führt diesen Aufruf nur aus, wenn der Treiber auf niedrigerer Ebene eine MiniportCancelSend-Funktion exportiert.
Die MiniportCancelSend-Funktion eines Miniporttreibers führt die folgenden Vorgänge aus:
- Durchläuft die Liste der NET_BUFFER_LIST-Strukturen in der Warteschlange für den angegebenen Adapter und ruft die NDIS_GET_NET_BUFFER_LIST_CANCEL_ID Makro, um den Abbruchbezeichner für jede NET_BUFFER_LIST-Struktur in der Warteschlange abzurufen. Der Miniporttreiber vergleicht den Abbruchbezeichner, der NDIS_GET_NET_BUFFER_LIST_CANCEL_ID zurückgibt, mit dem Abbruchbezeichner, den NDIS an MiniportCancelSend übergeben hat.
- Entfernt alle NET_BUFFER_LIST Strukturen, deren Abbruchbezeichner mit dem angegebenen Abbruchbezeichner übereinstimmen, aus der Sendewarteschlange (Aufheben der Verknüpfungen).
- Ruft die NdisMSendNetBufferListsComplete-Funktion für alle nicht verknüpften NET_BUFFER_LIST-Strukturen, um die Strukturen zurückzugeben. Der Miniporttreiber legt das status Feld der NET_BUFFER_LIST-Strukturen auf NDIS_STATUS_SEND_ABORTED fest.
- Führt die Vorgänge in der vorherigen Liste für die MiniportCancelSend-Funktion eines Miniporttreibers aus.
- Ruft die NdisCancelSendNetBufferLists-Funktion , die die Bindung angibt, die dem Adapter zugeordnet ist, den NDIS im Aufruf von MiniportCancelSend angegeben hat.
Um beispielsweise eine MiniportCancelSend-Funktion mit dem Namen "MyCancelSend" zu definieren, verwenden Sie den typ MINIPORT_CANCEL_SEND , wie in diesem Codebeispiel gezeigt:
MINIPORT_CANCEL_SEND MyCancelSend;
Implementieren Sie dann Ihre Funktion wie folgt:
_Use_decl_annotations_
VOID
MyCancelSend(
NDIS_HANDLE MiniportAdapterContext,
PVOID CancelId
)
{...}
Der MINIPORT_CANCEL_SEND Funktionstyp ist in der Ndis.h-Headerdatei definiert. Um Fehler beim Ausführen der Codeanalysetools genauer zu identifizieren, müssen Sie der Funktionsdefinition die anmerkung Use_decl_annotations hinzufügen. Die Use_decl_annotations-Anmerkung stellt sicher, dass die Anmerkungen verwendet werden, die auf den MINIPORT_CANCEL_SEND Funktionstyp in der Headerdatei angewendet werden. Weitere Informationen zu den Anforderungen für Funktionsdeklarationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für NDIS-Treiber.
Informationen zu Use_decl_annotations finden Sie unter Verhalten von Funktionen mit Anmerkungen.
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Unterstützt in NDIS 6.0 und höher. |
Zielplattform | Windows |
Kopfzeile | ndis.h (include Ndis.h) |
IRQL | <= DISPATCH_LEVEL |