Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Especifica o mapa de registro do controlador.
Sintaxe
typedef struct {
NVME_CONTROLLER_CAPABILITIES CAP;
NVME_VERSION VS;
ULONG INTMS;
ULONG INTMC;
NVME_CONTROLLER_CONFIGURATION CC;
ULONG Reserved0;
NVME_CONTROLLER_STATUS CSTS;
NVME_NVM_SUBSYSTEM_RESET NSSR;
NVME_ADMIN_QUEUE_ATTRIBUTES AQA;
NVME_ADMIN_SUBMISSION_QUEUE_BASE_ADDRESS ASQ;
NVME_ADMIN_COMPLETION_QUEUE_BASE_ADDRESS ACQ;
NVME_CONTROLLER_MEMORY_BUFFER_LOCATION CMBLOC;
NVME_CONTROLLER_MEMORY_BUFFER_SIZE CMBSZ;
ULONG Reserved2[944];
ULONG Reserved3[64];
ULONG Doorbells[0];
} NVME_CONTROLLER_REGISTERS, *PNVME_CONTROLLER_REGISTERS;
Membros
CAP
Uma estrutura NVME_CONTROLLER_CAPABILITIES que indica os recursos básicos do controlador para hospedar software.
As funcionalidades do controlador o registro cap começa em Deslocamento 00h.
VS
uma estrutura NVME_VERSION que indica a versão principal e secundária da especificação NVM Express à qual a implementação do controlador dá suporte. As versões válidas da especificação são: 1.0, 1.1 e 1.2.
A versão registro do VS começa em Deslocamento 08h.
INTMS
Indica se um vetor de interrupção é mascarado por gerar uma interrupção ou relatar uma interrupção pendente na Estrutura de Funcionalidades do MSI.
Quando um valor de 1 é gravado em um bit no campo, o vetor de interrupção correspondente é mascarado de gerar uma interrupção ou relatar uma interrupção pendente na Estrutura de Funcionalidades do MSI. Escrever um 0 em um bit não tem efeito.
Quando lido, esse campo retorna o valor atual da máscara de interrupção dentro do controlador (não o valor deste registro). Se um bit tiver um valor de 1, o vetor de interrupção correspondente será mascarado. Se um bit tiver um valor de 0, o vetor de interrupção correspondente não será mascarado.
Esse registro é usado para mascarar interrupções ao usar interrupções baseadas em pin, MSI de mensagem única ou MSI de várias mensagens. Ao usar MSI-X, a tabela de máscara de interrupção definida como parte de MSI-X deve ser usada para mascarar interrupções. O software host não deve acessar esse registro quando ele está configurado para MSI-X; qualquer acesso quando configurado para MSI-X é indefinido.
O conjunto de máscaras de interrupção registro INTMS começa no Deslocamento 0Ch.
INTMC
Indica se um vetor de interrupção está mascarado.
Quando um valor de 1 é gravado em um bit no campo, o vetor de interrupção correspondente é desmascarado. Escrever um 0 em um bit não tem efeito.
Quando lido, esse campo retorna o valor atual da máscara de interrupção dentro do controlador (não o valor deste registro). Se um bit tiver um valor de 1, o vetor de interrupção correspondente será mascarado, se um bit tiver um valor de 0, o vetor de interrupção correspondente não será mascarado.
Esse registro é usado para desmascarar interrupções ao usar interrupções baseadas em pin, MSI de mensagem única ou MSI de várias mensagens. Ao usar MSI-X, a tabela de máscara de interrupção definida como parte de MSI-X deve ser usada para desmascarar interrupções. O software host não deve acessar esse registro quando ele está configurado para MSI-X; qualquer acesso quando configurado para MSI-X é indefinido.
O registro de Desmarcar máscara de interrupção começa em Deslocamento 10h.
CC
Uma estrutura NVME_CONTROLLER_CONFIGURATION que contém configurações de leitura/gravação para o controlador.
O software host deve definir os campos Mecanismo de Arbitragem (AMS), Tamanho da Página de Memória (MPS) e Conjunto de Comandos (CSS) em NVME_CONTROLLER_CONFIGURATION para valores válidos antes de habilitar o controlador definindo o campo Habilitar (EN) como 1.
A configuração do controlador registro cc começa em Deslocamento 14h.
Reserved0
O deslocamento 18h é reservado.
Todos os registros reservados e todos os bits reservados dentro dos registros são somente leitura e retornam 0h quando lidos, no entanto, o software não deve depender de 0h ser retornado.
CSTS
Uma estrutura NVME_CONTROLLER_STATUS que indica o status do controlador.
O registro de do CSTS status do controlador começa no Deslocamento 1Ch.
NSSR
Uma estrutura NVME_NVM_SUBSYSTEM_RESET que fornece software host com a capacidade de iniciar uma Redefinição de Subsistema NVM.
O suporte para esse registro opcional é indicado pelo estado do campo Redefinição de Subsistema NVM Compatível (NSSRS) no de Recursos do Controlador de. Se não houver suporte para o registro, o intervalo de endereços ocupado pelo registro será reservado.
O registro de redefinição de subsistema NVM (opcional) começa em Deslocamento 20h.
AQA
Uma estrutura NVME_ADMIN_QUEUE_ATTRIBUTES que especifica os Atributos de Fila de Administradores para a Fila de Envio do Administrador e a Fila de Conclusão do Administrador.
Os atributos de fila de administrador registro de AQA começam em Deslocamento 24h.
ASQ
Uma estrutura NVME_ADMIN_SUBMISSION_QUEUE_BASE_ADDRESS que especifica o endereço de memória base da Fila de Envio do Administrador.
O registro de Endereço Base da Fila de Envio de Administrador começa em Deslocamento 28h.
ACQ
Uma estrutura NVME_ADMIN_COMPLETION_QUEUE_BASE_ADDRESS que especifica o endereço de memória base da Fila de Conclusão do Administrador.
O registro de endereço base da fila de conclusão do administrador começa em Deslocamento 30h.
CMBLOC
Uma estrutura NVME_CONTROLLER_MEMORY_BUFFER_LOCATION que especifica o local do Buffer de Memória do Controlador.
Se o valor de CMBSZ for 0, esse registro será reservado.
O registro do Local do Buffer de Memória do Controlador (Opcional) começa em Deslocamento 38h.
CMBSZ
Uma estrutura NVME_CONTROLLER_MEMORY_BUFFER_SIZE que especifica o tamanho do Buffer de Memória do Controlador.
Se o controlador não der suporte ao recurso buffer de memória do controlador, esse registro será liberado para 0h.
O registro tamanho do buffer de memória do controlador (opcional) começa em Deslocamento 3Ch.
Reserved2[944]
O deslocamento de 40h para EFFh é reservado.
Todos os registros reservados e todos os bits reservados dentro dos registros são somente leitura e retornam 0h quando lidos, no entanto, o software não deve depender de 0h ser retornado.
Reserved3[64]
Deslocamento F00h para FFFh é reservado para registros específicos do Conjunto de Comandos.
Todos os registros reservados e todos os bits reservados dentro dos registros são somente leitura e retornam 0h quando lidos, no entanto, o software não deve depender de 0h ser retornado.
Doorbells[0]
Especifica o início do primeiro registro doorbell. O da Porta da Cauda da Fila de Envio do Administrador.
Observações
Os registros do controlador estão localizados nos registros MLBAR (Endereço Base Inferior) do Registro de Memória/MUBAR (Endereço Base Superior do Registro de Memória) (PCI BAR0 e BAR1) mapeados para um espaço de memória que dá suporte ao acesso em ordem e larguras de acesso variável. Para muitas arquiteturas de computador, especificar o espaço de memória como inacessível produz esse comportamento.
O host não deve emitir acessos bloqueados e deve acessar registros em sua largura nativa ou acessos alinhados de 32 bits. A violação de qualquer um desses requisitos de host resulta em um comportamento indefinido.
O intervalo de endereços Específico do Fornecedor é iniciado após a última campainha com suporte pelo controlador e continua até o final do intervalo com suporte de BAR0/1. O início do intervalo de endereços específico do fornecedor começa no mesmo local e não depende do número de campainhas alocadas.
Não há suporte para acessos direcionados a qualquer parte de dois ou mais registros.
Requisitos
| Requisito | Valor |
|---|---|
| de cliente com suporte mínimo | Windows 10 |
| cabeçalho | nvme.h |