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