Condividi tramite


Funzione NdisMRegisterDmaChannel (ndis.h)

La funzione NdisMRegisterDmaChannel attestazione un canale controller DMA di sistema durante l'inizializzazione per le operazioni DMA su una scheda di interfaccia di rete subordinata o su una scheda di interfaccia di rete master del bus ISA.

Sintassi

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

Parametri

[out] MiniportDmaHandle

Puntatore a una variabile fornita dal chiamante in cui questa funzione restituisce un handle usato dal driver miniport nelle chiamate successive alla NdisMxxx funzioni DMA di sistema.

[in] MiniportAdapterHandle

Input dell'handle dell'adattatore miniport per l'oggetto funzione miniportInitializeEx.

[in] DmaChannel

Ignorato. Impostare il canale DMA, se presente, in DmaDescription .

[in] Dma32BitAddresses

Valore booleano TRUE se la scheda di interfaccia di rete ha 32 righe di indirizzo. In caso contrario, è FALSE.

[in] DmaDescription

Puntatore a una struttura NDIS_DMA_DESCRIPTION compilata dal chiamante. Questa struttura è definita come segue:

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;

Il driver deve inizializzare questa struttura con zeri prima di compilare i membri seguenti:

DemandMode

Valore booleano TRUE se la scheda di interfaccia di rete subordinata usa la modalità richiesta del controller DMA di sistema. In caso contrario, è FALSE.

Inizializzazione automatica

Valore booleano TRUE se la scheda di interfaccia di rete subordinata usa la modalità di inizializzazione automatica del controller DMA di sistema. In caso contrario, è FALSE.

DmaChannelSpecified

Valore booleano TRUE se DmaChannel è impostato sul valore relativo del bus del canale controller DMA di sistema utilizzato dalla scheda di interfaccia di rete. In caso contrario, è FALSE.

DmaWidth

Larghezza di trasferimento per le operazioni DMA, uno dei Width8Bit, Width16Bitso Width32Bits.

DmaSpeed

Velocità DMA come una delle compatibili, TypeA, TypeBo TypeC.

DmaPort

Questo membro fa riferimento al bus MCA, che non è più supportato. Questo membro deve essere zero.

DmaChannel

Numero relativo del bus del canale controller DMA di sistema usato dalla scheda di interfaccia di rete.

[in] MaximumLength

Numero massimo di byte che la scheda di interfaccia di rete può trasferire in una singola operazione DMA. Se la scheda di interfaccia di rete ha capacità di trasferimento illimitata, impostare questo parametro su -1.

Valore restituito

NdisMRegisterDmaChannel può restituire uno dei valori di stato seguenti:

Codice restituito Descrizione
NDIS_STATUS_SUCCESS
NDIS ha richiesto il canale DMA specificato nel Registro di sistema per la scheda di interfaccia di rete del chiamante e ha configurato le risorse necessarie per le successive operazioni DMA dal driver miniport.
NDIS_STATUS_RESOURCE_CONFLICT
Un tentativo di attestazione del canale DMA nel Registro di sistema non è riuscito, probabilmente perché un altro driver ha già richiesto tale canale per il dispositivo. NdisMRegisterDmaChannel registra un errore in questo caso.
NDIS_STATUS_RESOURCES
NDIS non è riuscito ad allocare le risorse di sistema necessarie per supportare le operazioni DMA da questo driver miniport.
NDIS_STATUS_FAILURE
Il tipo di bus o il numero di bus non è compreso nell'intervallo oppure il driver ha dichiarato che la scheda di interfaccia di rete è un master bus su un bus di I/O diverso da ISA.

Osservazioni

Un driver di una scheda di interfaccia di rete subordinata-DMA deve chiamare NdisMRegisterDmaChannel dalla relativa funzione MiniportInitializeEx per riservare le risorse di sistema per le successive operazioni DMA e per richiederle nel Registro di sistema.

Il driver di una scheda di interfaccia di rete master del bus ISA deve anche chiamare NdisMRegisterDmaChannel da MiniportInitializeEx per richiedere un canale controller DMA di sistema per la scheda di interfaccia di rete nel Registro di sistema.

miniportInitializeEx deve chiamare NdisMSetMiniportAttributes funzione prima di chiamare NdisMRegisterDmaChannel.

MiniportInitializeEx ottenuto i valori relativi al bus passati a NdisMRegisterDmaChannel dal Registro di sistema o chiamando la funzione NdisMGetBusData.

Se un driver di questo tipo non può allocare le risorse DMA di sistema necessarie per il dispositivo, MiniportInitializeEx deve rilasciare tutte le risorse già allocate per la scheda di interfaccia di rete e, quindi, non riuscire l'inizializzazione per tale scheda di interfaccia di rete.

Se il driver registra correttamente il canale DMA, deve chiamare successivamente funzione NdisMDeregisterDmaChannel per annullare la registrazione del canale DMA.

Fabbisogno

Requisito Valore
client minimo supportato Supportato per i driver NDIS 6.0 e NDIS 5.1 (vedere NdisMRegisterDmaChannel (NDIS 5.1) in Windows Vista. Supportato per i driver NDIS 5.1 (vedere NdisMRegisterDmaChannel (NDIS 5.1)) in Windows XP.
piattaforma di destinazione Universale
intestazione ndis.h (include Ndis.h)
libreria Ndis.lib
IRQL PASSIVE_LEVEL
regole di conformità DDI Irql_Miniport_Driver_Function(ndis)

Vedere anche

MiniportInitializeEx

NdisMDeregisterDmaChannel

NdisMGetBusData

NdisMSetMiniportAttributes