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_STATUS_SUCCESS
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.
NDIS_STATUS_RESOURCE_CONFLICT
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_STATUS_RESOURCES
NDIS no pudo asignar los recursos del sistema que necesita para admitir las operaciones DMA mediante este controlador de minipuerto.
NDIS_STATUS_FAILURE
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)

Consulte también

MiniportInitializeEx

NdisMDeregisterDmaChannel

NdisMGetBusData

NdisMSetMiniportAttributes