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 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. |
|
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 non è riuscito ad allocare le risorse di sistema necessarie per supportare le operazioni DMA da questo driver miniport. |
|
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.