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 |
---|---|
|
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. |
|
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. |
|
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. |
|
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) |