Compartilhar via


Função NdisMRegisterDmaChannel (ndis.h)

A função NdisMRegisterDmaChannel declara um canal do controlador DMA do sistema durante a inicialização de operações de DMA em uma NIC subordinada ou em uma NIC mestre 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 miniporto usa em chamadas subsequentes para o NdisMxxx funções DMA do sistema.

[in] MiniportAdapterHandle

A entrada do adaptador de miniporto para o função MiniportInitializeEx.

[in] DmaChannel

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

[in] Dma32BitAddresses

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

[in] DmaDescription

Um ponteiro para uma estrutura de 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 VERDADEIRO se a NIC subordinada usar o modo de demanda do controlador DMA do sistema. Caso contrário, será FALSE.

AutoInitializar

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

DmaChannelSpecified

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

DmaWidth

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

DmaSpeed

A velocidade do DMA como um dos compatíveis com, 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.

Valor de retorno

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 DMA no registro falhou, possivelmente porque outro driver já alegou 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 às operações de DMA por esse driver de miniporto.
NDIS_STATUS_FAILURE
O tipo de ônibus ou o número do ônibus está fora de alcance ou o motorista declarou a NIC como um mestre de ônibus em um ônibus de E/S diferente do ISA.

Observações

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

O driver de uma NIC mestre 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 posteriormente o função NdisMDeregisterDmaChannel para desregister o canal DMA.

Requisitos

Requisito Valor
de cliente com suporte mínimo 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.
da Plataforma de Destino Universal
cabeçalho ndis.h (inclua Ndis.h)
biblioteca Ndis.lib
IRQL PASSIVE_LEVEL
regras de conformidade de DDI Irql_Miniport_Driver_Function(ndis)

Consulte também

MiniportInitializeEx

NdisMDeregisterDmaChannel

NdisMGetBusData

NdisMSetMiniportAttributes