Función NdisMRegisterDmaChannel (ndis.h)
La función NdisMRegisterDmaChannel reclama un canal de controlador DMA del sistema durante la inicialización de operaciones DMA en una NIC subordinada o en una NIC de bus-master de ISA.
Sintaxis
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
);
Parámetros
[out] MiniportDmaHandle
Puntero a una variable proporcionada por el autor de la llamada en la que esta función devuelve un identificador que usa el controlador de miniporte en llamadas posteriores a las funciones DMA del sistema NdisMXxx .
[in] MiniportAdapterHandle
El adaptador de minipuerto controla la entrada en el Función MiniportInitializeEx .
[in] DmaChannel
ignorado. Establezca el canal DMA, si existe, en DmaDescription .
[in] Dma32BitAddresses
Valor booleano que es TRUE si la NIC tiene 32 líneas de direcciones. De lo contrario, es FALSE.
[in] DmaDescription
Puntero a una estructura de NDIS_DMA_DESCRIPTION rellenada por el autor de la llamada. Esta estructura se define de la siguiente manera:
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;
El controlador debe inicializar esta estructura con ceros antes de rellenar los miembros siguientes:
DemandMode
Valor booleano que es TRUE si la NIC subordinada usa el modo de demanda del controlador DMA del sistema. De lo contrario, es FALSE.
AutoInitialize
Valor booleano que es TRUE si la NIC subordinada usa el modo de inicialización automática del controlador DMA del sistema. De lo contrario, es FALSE.
DmaChannelSpecified
Valor booleano que es TRUE si DmaChannel está establecido en el valor relativo al bus del canal del controlador DMA del sistema utilizado por la NIC. De lo contrario, es FALSE.
DmaWidth
Ancho de transferencia para las operaciones DMA, uno de Width8Bits, Width16Bits o Width32Bits.
DmaSpeed
Velocidad DMA como una de Compatible, TypeA, TypeB o TypeC.
DmaPort
Este miembro hace referencia al bus MCA, que ya no se admite. Este miembro debe ser cero.
DmaChannel
Número relativo al bus del canal del controlador DMA del sistema utilizado por la NIC.
[in] MaximumLength
Número máximo de bytes que la NIC puede transferir en una sola operación DMA. Si la NIC tiene capacidad de transferencia ilimitada, establezca este parámetro en -1.
Valor devuelto
NdisMRegisterDmaChannel puede devolver uno de los siguientes valores de estado:
Código devuelto | Descripción |
---|---|
|
NDIS afirmó el canal DMA especificado en el registro para la NIC del autor de la llamada y configuró los recursos necesarios para las operaciones DMA posteriores por el controlador de miniport. |
|
Error al intentar reclamar el canal DMA en el registro, posiblemente porque otro controlador ya ha reclamado ese canal para su dispositivo. NdisMRegisterDmaChannel registra un error si esto ocurre. |
|
NDIS no pudo asignar los recursos del sistema que necesita para admitir las operaciones DMA mediante este controlador de minipuerto. |
|
El tipo de autobús o el número de autobús están fuera del intervalo o el controlador declaró que la NIC es un patrón de autobús en un bus de E/S distinto de ISA. |
Comentarios
Un controlador de una NIC subordinada-DMA debe llamar a NdisMRegisterDmaChannel desde su función MiniportInitializeEx para reservar recursos del sistema para las operaciones DMA posteriores y reclamarlos en el registro.
El controlador de una NIC de bus-master de ISA también debe llamar a NdisMRegisterDmaChannel desde MiniportInitializeEx para reclamar un canal de controlador DMA del sistema para la NIC en el registro.
MiniportInitializeEx debe llamar a Función NdisMSetMiniportAttributes antes de llamar a NdisMRegisterDmaChannel.
MiniportInitializeEx obtuvo los valores relativos al bus pasados a NdisMRegisterDmaChannel desde el registro o llamando a la función NdisMGetBusData .
Si este controlador no puede asignar los recursos DMA del sistema que necesita su dispositivo, MiniportInitializeEx debe liberar todos los recursos que ya ha asignado para la NIC y, a continuación, producir un error en la inicialización de esa NIC.
Si el controlador registra correctamente el canal DMA, debe llamar más adelante a . Función NdisMDeregisterDmaChannel para anular el registro del canal DMA.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Compatible con controladores NDIS 6.0 y NDIS 5.1 (consulte NdisMRegisterDmaChannel (NDIS 5.1)) en Windows Vista. Compatible con controladores NDIS 5.1 (consulte NdisMRegisterDmaChannel (NDIS 5.1)) en Windows XP. |
Plataforma de destino | Universal |
Encabezado | ndis.h (incluya Ndis.h) |
Library | Ndis.lib |
IRQL | PASSIVE_LEVEL |
Reglas de cumplimiento de DDI | Irql_Miniport_Driver_Function(ndis) |