Função NdisMRegisterDmaChannel (ndis.h)

A função NdisMRegisterDmaChannel reivindica um canal do controlador DMA do sistema durante a inicialização para operações de DMA em uma NIC subordinada ou em uma NIC master de barramento ISA.

Sintaxe

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

Um ponteiro para uma variável fornecida pelo chamador na qual essa função retorna um identificador que o driver de miniporta usa em chamadas subsequentes para as funções DMA do sistema NdisMXxx .

[in] MiniportAdapterHandle

A entrada do identificador do adaptador de miniporta para o Função MiniportInitializeEx .

[in] DmaChannel

Ignorado. Defina o canal DMA, se houver, em DmaDescription .

[in] Dma32BitAddresses

Um valor booliano que será TRUE se a NIC tiver 32 linhas de endereço. Caso contrário, será FALSE.

[in] DmaDescription

Um ponteiro para uma estrutura NDIS_DMA_DESCRIPTION preenchida pelo chamador. Essa estrutura é definida da seguinte maneira:

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;

O driver deve inicializar essa estrutura com zeros antes de preencher os seguintes membros:

DemandMode

Um valor booliano que será TRUE se a NIC subordinada usar o modo de demanda do controlador de DMA do sistema. Caso contrário, será FALSE.

AutoInitializar

Um valor booliano que será TRUE se a NIC subordinada usar o modo de inicialização automática do controlador de DMA do sistema. Caso contrário, será FALSE.

DmaChannelSpecified

Um valor booliano que será TRUE se DmaChannel for definido como o valor relativo do barramento do canal do controlador de DMA do sistema usado pela NIC. Caso contrário, será FALSE.

DmaWidth

A largura de transferência para operações de DMA, uma de Width8Bits, Width16Bits ou Width32Bits.

DmaSpeed

A velocidade do AMD como uma de Compatible, TypeA, TypeB ou TypeC.

DmaPort

Esse membro refere-se ao barramento MCA, que não tem mais suporte. Esse membro deve ser zero.

DmaChannel

O número relativo do barramento do canal do controlador de DMA do sistema usado pela NIC.

[in] MaximumLength

O número máximo de bytes que a NIC pode transferir em uma única operação de DMA. Se a NIC tiver capacidade de transferência ilimitada, defina esse parâmetro como -1.

Retornar valor

NdisMRegisterDmaChannel pode retornar um dos seguintes valores de status:

Código de retorno Descrição
NDIS_STATUS_SUCCESS
O NDIS reivindicou o canal DMA especificado no registro para a NIC do chamador e configurou os recursos necessários para operações de DMA subsequentes pelo driver de miniporto.
NDIS_STATUS_RESOURCE_CONFLICT
Uma tentativa de reivindicar o canal de AMD no registro falhou, possivelmente porque outro driver já reivindicou esse canal para seu dispositivo. NdisMRegisterDmaChannel registra um erro se isso ocorrer.
NDIS_STATUS_RESOURCES
O NDIS não pôde alocar os recursos do sistema necessários para dar suporte a operações de AMD por esse driver de miniporta.
NDIS_STATUS_FAILURE
O tipo de ônibus ou o número do ônibus está fora do intervalo ou o motorista declarou que a NIC é um ônibus master em um ônibus de E/S diferente do ISA.

Comentários

Um driver de uma NIC subordinada-DMA deve chamar NdisMRegisterDmaChannel de sua função MiniportInitializeEx para reservar recursos do sistema para operações de DMA subsequentes e para reivindicá-los no registro.

O driver de uma NIC master de barramento ISA também deve chamar NdisMRegisterDmaChannel de MiniportInitializeEx para reivindicar um canal do controlador de DMA do sistema para a NIC no registro.

MiniportInitializeEx deve chamar o Função NdisMSetMiniportAttributes antes de chamar NdisMRegisterDmaChannel.

MiniportInitializeEx obteve os valores relativos do barramento passados para NdisMRegisterDmaChannel do registro ou chamando a função NdisMGetBusData .

Se esse driver não puder alocar os recursos de DMA do sistema de que seu dispositivo precisa, MiniportInitializeEx deverá liberar todos os recursos já alocados para a NIC e, em seguida, falhar na inicialização dessa NIC.

Se o driver registrar com êxito o canal DMA, ele deverá chamar o Função NdisMDeregisterDmaChannel para cancelar o registro do canal DMA.

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte para drivers NDIS 6.0 e NDIS 5.1 (consulte NdisMRegisterDmaChannel (NDIS 5.1)) no Windows Vista. Com suporte para drivers NDIS 5.1 (consulte NdisMRegisterDmaChannel (NDIS 5.1)) no Windows XP.
Plataforma de Destino Universal
Cabeçalho ndis.h (inclua Ndis.h)
Biblioteca Ndis.lib
IRQL PASSIVE_LEVEL
Regras de conformidade da DDI Irql_Miniport_Driver_Function(ndis)

Confira também

MiniportInitializeEx

NdisMDeregisterDmaChannel

NdisMGetBusData

NdisMSetMiniportAttributes