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 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. |
|
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 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. |
|
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) |