Condividi tramite


Funzione NdisMRegisterDmaChannel (ndis.h)

La funzione NdisMRegisterDmaChannel attestazione un canale controller DMA di sistema durante l'inizializzazione per le operazioni DMA in una scheda di interfaccia di rete subordinata o in 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 alle funzioni DMA del sistema NdisMXxx .

[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 di 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 zero 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.

AutoInitialize

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

DmaChannelSpecified

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

DmaWidth

Larghezza di trasferimento per le operazioni DMA, uno di Width8Bits, Width16Bits o Width32Bits.

DmaSpeed

Velocità DMA come una delle funzionalità Compatibili, TypeA, TypeB o 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 configurare le risorse necessarie per le operazioni DMA successive 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à affermato che il canale per il dispositivo. NdisMRegisterDmaChannel registra un errore se si verifica.
NDIS_STATUS_RESOURCES
NDIS non è riuscito a 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 del bus non è compreso nell'intervallo o il driver ha dichiarato che la scheda di interfaccia di rete è un master del bus su un bus di I/O diverso da ISA.

Commenti

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

Il driver di una scheda di interfaccia di rete master del bus ISA deve chiamare anche 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 Funzione NdisMSetMiniportAttributes prima di chiamare NdisMRegisterDmaChannel.

MiniportInitializeEx ha 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 in seguito Funzione NdisMDeregisterDmaChannel per annullare la registrazione del canale DMA.

Requisiti

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 (includere Ndis.h)
Libreria Ndis.lib
IRQL PASSIVE_LEVEL
Regole di conformità DDI Irql_Miniport_Driver_Function(ndis)

Vedi anche

MiniportInitializeEx

NdisMDeregisterDmaChannel

NdisMGetBusData

NdisMSetMiniportAttributes