Partager via


NdisMRegisterDmaChannel, fonction (ndis.h)

La fonction NdisMRegisterDmaChannel revendique un canal de contrôleur DMA système pendant l’initialisation pour les opérations DMA sur une carte réseau subordonnée ou sur une carte réseau master bus ISA.

Syntaxe

NDIS_STATUS NdisMRegisterDmaChannel(
  [out] PNDIS_HANDLE          MiniportDmaHandle,
  [in]  NDIS_HANDLE           MiniportAdapterHandle,
  [in]  UINT                  DmaChannel,
  [in]  BOOLEAN               Dma32BitAddresses,
  [in]  PNDIS_DMA_DESCRIPTION DmaDescription,
  [in]  ULONG                 MaximumLength
);

Paramètres

[out] MiniportDmaHandle

Pointeur vers une variable fournie par l’appelant dans laquelle cette fonction retourne un handle que le pilote miniport utilise dans les appels suivants aux fonctions DMA système NdisMXxx .

[in] MiniportAdapterHandle

Entrée de la poignée de l’adaptateur miniport dans le Fonction MiniportInitializeEx .

[in] DmaChannel

Ignoré. Définissez le canal DMA, le cas échéant, dans DmaDescription .

[in] Dma32BitAddresses

Valeur booléenne true si la carte réseau a 32 lignes d’adresse. Sinon, elle est FALSE.

[in] DmaDescription

Pointeur vers une structure NDIS_DMA_DESCRIPTION remplie par l’appelant. Cette structure est définie comme suit :

typedef struct _NDIS_DMA_DESCRIPTION {
    BOOLEAN DemandMode;
    BOOLEAN AutoInitialize;
    BOOLEAN DmaChannelSpecified;
    DMA_WIDTH DmaWidth;
    DMA_SPEED DmaSpeed;
    ULONG DmaPort;
    ULONG DmaChannel;
} NDIS_DMA_DESCRIPTION, *PNDIS_DMA_DESCRIPTION;

Le pilote doit initialiser cette structure avec des zéros avant de remplir les membres suivants :

DemandMode

Valeur booléenne true si la carte réseau subordonnée utilise le mode de demande du contrôleur DMA système. Sinon, elle est FALSE.

AutoInitialize

Valeur booléenne true si la carte réseau subordonnée utilise le mode d’autoinitialisation du contrôleur DMA système. Sinon, elle est FALSE.

DmaChannelSpecified

Valeur booléenne true si DmaChannel est défini sur la valeur relative du bus du canal de contrôleur DMA système utilisé par la carte réseau. Sinon, elle est FALSE.

DmaWidth

Largeur de transfert pour les opérations DMA, l’une de Width8Bits, Width16Bits ou Width32Bits.

DmaSpeed

Vitesse DMA comme compatible, TypeA, TypeB ou TypeC.

DmaPort

Ce membre fait référence au bus MCA, qui n’est plus pris en charge. Ce membre doit être égal à zéro.

DmaChannel

Numéro relatif de bus du canal du contrôleur DMA système utilisé par la carte réseau.

[in] MaximumLength

Nombre maximal d’octets que la carte réseau peut transférer dans une seule opération DMA. Si la carte réseau a une capacité de transfert illimitée, définissez ce paramètre sur -1.

Valeur retournée

NdisMRegisterDmaChannel peut retourner l’une des valeurs de status suivantes :

Code de retour Description
NDIS_STATUS_SUCCESS
NDIS a revendiqué le canal DMA spécifié dans le Registre pour la carte réseau de l’appelant et configuré les ressources nécessaires pour les opérations DMA suivantes par le pilote miniport.
NDIS_STATUS_RESOURCE_CONFLICT
Une tentative de revendication du canal DMA dans le Registre a échoué, peut-être parce qu’un autre pilote a déjà revendiqué ce canal pour son appareil. NdisMRegisterDmaChannel enregistre une erreur si cela se produit.
NDIS_STATUS_RESOURCES
NDIS n’a pas pu allouer les ressources système dont il a besoin pour prendre en charge les opérations DMA par ce pilote miniport.
NDIS_STATUS_FAILURE
Le type de bus ou le numéro de bus est hors limites ou le pilote a déclaré la carte réseau comme étant une master de bus sur un bus d’E/S autre que ISA.

Remarques

Un pilote d’une carte réseau DMA subordonnée doit appeler NdisMRegisterDmaChannel à partir de sa fonction MiniportInitializeEx pour réserver des ressources système aux opérations DMA suivantes et les revendiquer dans le Registre.

Le pilote d’une carte réseau master bus ISA doit également appeler NdisMRegisterDmaChannel à partir de MiniportInitializeEx pour revendiquer un canal de contrôleur DMA système pour la carte réseau dans le Registre.

MiniportInitializeEx doit appeler le Fonction NdisMSetMiniportAttributes avant d’appeler NdisMRegisterDmaChannel.

MiniportInitializeEx a obtenu les valeurs relatives de bus passées à NdisMRegisterDmaChannel à partir du registre ou en appelant la fonction NdisMGetBusData .

Si un tel pilote ne peut pas allouer les ressources DMA système dont son appareil a besoin, MiniportInitializeEx doit libérer toutes les ressources qu’il a déjà allouées pour la carte réseau, puis échouer l’initialisation de cette carte réseau.

Si le pilote inscrit correctement le canal DMA, il doit appeler ultérieurement le Fonction NdisMDeregisterDmaChannel pour désinscrire le canal DMA.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge pour les pilotes NDIS 6.0 et NDIS 5.1 (voir NdisMRegisterDmaChannel (NDIS 5.1)) dans Windows Vista. Pris en charge pour les pilotes NDIS 5.1 (voir NdisMRegisterDmaChannel (NDIS 5.1)) dans Windows XP.
Plateforme cible Universal
En-tête ndis.h (inclure Ndis.h)
Bibliothèque Ndis.lib
IRQL PASSIVE_LEVEL
Règles de conformité DDI Irql_Miniport_Driver_Function(ndis)

Voir aussi

MiniportInitializeEx

NdisMDeregisterDmaChannel

NdisMGetBusData

NdisMSetMiniportAttributes