Freigeben über


NDK_FN_CONNECT Rückruffunktion (ndkpi.h)

Die Funktion NdkConnect (NDK_FN_CONNECT) initiiert eine NDK-Verbindungsanforderung.

Syntax

NDK_FN_CONNECT NdkFnConnect;

NTSTATUS NdkFnConnect(
  [in]                                      NDK_CONNECTOR *pNdkConnector,
  [in]                                      NDK_QP *pNdkQp,
                                            const PSOCKADDR pSrcAddress,
  [in]                                      ULONG SrcAddressLength,
  [in]                                      const PSOCKADDR pDestAddress,
  [in]                                      ULONG DestAddressLength,
  [in]                                      ULONG InboundReadLimit,
  [in]                                      ULONG OutboundReadLimit,
  [_In_reads_bytes_opt_(PrivateDataLength)] const PVOID pPrivateData,
  [in]                                      ULONG PrivateDataLength,
  [in]                                      NDK_FN_REQUEST_COMPLETION RequestCompletion,
  [in, optional]                            PVOID RequestContext
)
{...}

Parameter

[in] pNdkConnector

Ein Zeiger auf ein NDK-Connectorobjekt (NDK_CONNECTOR).

[in] pNdkQp

Ein Zeiger auf ein QP-Objekt (NDK-Warteschlangenpaar) (NDK_QP), das der Verbindung zugeordnet werden soll.

pSrcAddress

Eine Quelladresse. Für AF_INET oder AF_INET6 pSrcAddress die Quell-IP-Adresse und den Quell-ND-Port.

[in] SrcAddressLength

Die Größe der Quelladressdaten am pSrcAddress-Parameter in Bytes.

[in] pDestAddress

Eine Zieladresse. Für AF_INET oder AF_INET6 pDestAddress ist die Ziel-IP-Adresse und der Quell-ND-Port .

[in] DestAddressLength

Die Größe der Zieladressdaten am Parameter pDestAddress in Bytes.

[in] InboundReadLimit

Die vom Consumer bereitgestellte maximale Anzahl eingehender in Bearbeitung ausgeführter Lesevorgänge, die für die QP zulässig sind. Wenn der zugrunde liegende Anbieter über einen niedrigeren MaxInboundReadLimit-Wert in der NDK_ADAPTER_INFO-Struktur verfügt, begrenzt der Anbieter den vom Consumer bereitgestellten Wert auf das Anbietermaximum. Wenn der Peer einen niedrigeren Wert für OutboundReadLimit aufweist, verwendet der Anbieter diesen Wert als effektives InboundReadLimit. Der Consumer kann das effektive InboundReadLimit abrufen, indem er die Funktion NdkGetConnectionData (NDK_FN_GET_CONNECTION_DATA) aufruft.

[in] OutboundReadLimit

Die vom Consumer bereitgestellte maximale Anzahl ausgehender Lesevorgänge, die für den QP zugelassen werden sollen. Wenn der zugrunde liegende Anbieter einen niedrigeren MaxOutboundReadLimit-Wert in der NDK_ADAPTER_INFO-Struktur aufweist, begrenzt der Anbieter den angegebenen Consumerwert auf das Anbietermaximum. Wenn der Peer ein niedrigeres InboundReadLimit aufweist, verwendet der Anbieter diesen Wert als effektives OutboundReadLimit. Der Consumer kann das effektive OutboundReadLimit abrufen, indem er die NdkGetConnectionData-Funktion (NDK_FN_GET_CONNECTION_DATA) aufruft.

[_In_reads_bytes_opt_(PrivateDataLength)] pPrivateData

Ein Zeiger auf private Daten, die mit der Verbindungsanforderung gesendet werden.

[in] PrivateDataLength

Die Länge der privaten Daten in Bytes, die im pPrivateData-Parameter bereitgestellt werden.

[in] RequestCompletion

Ein Zeiger auf eine Rückrufroutine für die Anforderungsvervollständigung NdkRequestCompletion (NDK_FN_REQUEST_COMPLETION).

[in, optional] RequestContext

Ein Kontextwert, der an den Context-Parameter der Rückruffunktion übergeben werden soll, der im RequestCompletion-Parameter angegeben ist.

Rückgabewert

Die NdkConnect-Funktion gibt einen der folgenden NTSTATUS-Codes zurück.

Rückgabecode Beschreibung
STATUS_SUCCESS
Die Verbindungsanforderung wurde erfolgreich abgeschlossen.
STATUS_PENDING
Der Vorgang steht aus und wird später abgeschlossen. Der Treiber ruft die angegebene RequestCompletion-Funktion (NDK_FN_REQUEST_COMPLETION) auf, um den ausstehenden Vorgang abzuschließen.
STATUS_INSUFFICIENT_RESOURCES
Fehler bei der Anforderung aufgrund unzureichender Ressourcen.
Wichtig Die Anforderung kann sowohl inline als auch asynchron mit diesem status Code fehlschlagen.
 
STATUS_NETWORK_UNREACHABLE
Die Anforderung ist fehlgeschlagen, weil das Remotenetzwerk nicht erreichbar war. Der Verbindungsversuch kann wiederholt werden.
Wichtig Die Anforderung kann sowohl inline als auch asynchron mit diesem status Code fehlschlagen.
 
STATUS_HOST_UNREACHABLE
Die Anforderung ist fehlgeschlagen, weil das Remotehostsystem nicht erreichbar war. Der Verbindungsversuch kann wiederholt werden.
Wichtig Die Anforderung kann sowohl inline als auch asynchron mit diesem status Code fehlschlagen.
 
STATUS_CONNECTION_REFUSED
Die Anforderung ist fehlgeschlagen, weil das Remotesystem die Verbindungsanforderung abgelehnt hat. Dies kann auf fehlende Listener, Backloggrenzwerte oder die aktive Ablehnung der Verbindungsanforderung durch den Peer zurückzuführen sein. Der Verbindungsversuch kann wiederholt werden.
Wichtig Die Anforderung kann sowohl inline als auch asynchron mit diesem status Code fehlschlagen.
 
STATUS_IO_TIMEOUT
Bei der Anforderung ist ein Fehler aufgetreten, da für die Verbindungsanforderung ein Timeout aufgetreten ist. Der Verbindungsversuch kann wiederholt werden. Timeoutwerte werden von Network Direct-Anbietern so ausgewählt, dass sie ihren jeweiligen Netzwerkeigenschaften entsprechen.
Wichtig Die Anforderung kann sowohl inline als auch asynchron mit diesem status Code fehlschlagen.
 
STATUS_SHARING_VIOLATION
Fehler bei der Anforderung, da die angegebene lokale Adresse bereits verwendet wird.
Wichtig Die Anforderung kann sowohl inline als auch asynchron mit diesem status Code fehlschlagen.
 
STATUS_INVALID_ADDRESS
Bei der Anforderung ist ein Fehler aufgetreten, da die angegebene lokale Adresse keine gültige Adresse für den Adapter ist.
Wichtig Die Anforderung kann sowohl inline als auch asynchron mit diesem status Code fehlschlagen.
 
STATUS_TOO_MANY_ADDRESSES
Die Anforderung ist fehlgeschlagen, weil der Consumer eine lokale Portnummer von 0 angegeben hat und der direkte Netzwerkanbieter keinen Port aus dem kurzlebigen Portraum (Ports 49152-65535) zuordnen konnte.
Wichtig Die Anforderung kann sowohl inline als auch asynchron mit diesem status Code fehlschlagen.
 
STATUS_ADDRESS_ALREADY_EXISTS
Die Anforderung ist fehlgeschlagen, da bereits eine Verbindung mit der Kombination aus lokaler Adresse, lokalem Port, Remoteadresse und Remoteport vorhanden ist.
Wichtig Die Anforderung kann sowohl inline als auch asynchron mit diesem status Code fehlschlagen.
 
Andere status Codes
Ein Fehler ist aufgetreten.

Hinweise

NdkConnect initiiert eine Verbindungsanforderung von einer lokalen Adresse an eine Remoteadresse.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Keine unterstützt, wird in NDIS 6.30 und höher unterstützt.
Unterstützte Mindestversion (Server) Windows Server 2012
Zielplattform Windows
Kopfzeile ndkpi.h (include Ndkpi.h)
IRQL <=DISPATCH_LEVEL

Weitere Informationen

Anforderungen an die Lebensdauer des NDKPI-Objekts

NDK_ADAPTER_INFO

NDK_CONNECTOR

NDK_CONNECTOR_DISPATCH

NDK_FN_DISCONNECT

NDK_FN_GET_CONNECTION_DATA

NDK_FN_REQUEST_COMPLETION

NDK_QP