Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Os motoristas de ônibus para ônibus com espaço de configuração devem lidar com essa solicitação para seus dispositivos filho (PDOs filho). Os drivers de funções e de filtro não lidam com essa solicitação.
Valor
0x0F
Código principal
Quando enviado
Um driver ou outro componente do sistema envia esse IRP para ler o espaço de configuração do barramento pai de um dispositivo.
Um driver ou outro componente do sistema envia esse IRP no IRQL < DISPATCH_LEVEL em um contexto de thread arbitrário.
Parâmetros de Entrada
O membro Parameters.ReadWriteConfig da estrutura IO_STACK_LOCATION é uma estrutura que contém as seguintes informações:
ULONG WhichSpace;
PVOID Buffer;
ULONG Offset;
ULONG Length
Os membros da estrutura podem ser interpretados de forma diferente por diferentes motoristas de ônibus, mas os membros normalmente são definidos da seguinte maneira:
WhichSpace
Especifica qual área de memória acessar. Esse parâmetro pode usar os seguintes valores:
| Valor | Barramento | Significado |
|---|---|---|
PCI_WHICHSPACE_CONFIG |
PCI |
Espaço de configuração de PCI. |
PCI_WHICHSPACE_ROM |
PCI |
Memória somente leitura. |
PCCARD_COMMON_MEMORY PCCARD_COMMON_MEMORY_INDIRECT |
PCMCIA |
Memória principal do PCCARD. |
PCCARD_ATTRIBUTE_MEMORY PCCARD_ATTRIBUTE_MEMORY_INDIRECT |
PCMCIA |
Espaço do atributo PCMCIA (configuração). |
PCCARD_PCI_CONFIGURATION_SPACE |
PCMCIA |
Espaço de configuração de PCI. |
Os valores PCI_XXX são definidos em Wdm.h. Os valores PCCARD_XXX são definidos em Ntddpcm.h.
Buffer
Aponta para um buffer no qual retornar as informações solicitadas. O componente que envia o IRP aloca essa estrutura da memória paginada. O formato do buffer é específico do barramento.
Deslocamento
Especifica um deslocamento para o espaço de configuração.
Comprimento
Especifica o número de bytes a serem lidos.
Parâmetros de saída
Em caso de êxito, um driver de barramento preenche o buffer em Parameters.ReadWriteConfig.Buffer com os dados solicitados.
Bloco de Status de E/S
Um motorista de ônibus define Irp-IoStatus.Status> como STATUS_SUCCESS ou para um erro apropriado status como STATUS_INVALID_PARAMETER_n, STATUS_NO_SUCH_DEVICE ou STATUS_DEVICE_NOT_READY.
Em caso de êxito, um motorista de ônibus define Irp-IoStatus.Information> como o número de bytes retornados.
Se um motorista de ônibus não conseguir concluir essa solicitação imediatamente, ele poderá marcar o IRP pendente, retornar STATUS_PENDING e concluir o IRP posteriormente.
Operação
Um motorista de ônibus manipula esse IRP para seus dispositivos filho (PDOs filho).
Os drivers de função e filtro não lidam com esse IRP; eles passam para o próximo driver inferior sem alterações em Irp-IoStatus>. Status e eles não definem uma rotina IoCompletion.
Um driver de barramento que manipula essa solicitação deve marcar o parâmetro WhichSpace para garantir que ele contenha um valor compatível com o driver.
Consulte Plug and Play para obter as regras gerais para lidar com Plug and Play IRPs menores.
Enviando este IRP
Normalmente, um driver de função envia esse IRP para o driver superior na pilha de dispositivos à qual ele está anexado e o IRP é manipulado pelo driver de barramento pai.
Consulte Manipulando IRPs para obter informações sobre como enviar IRPs. As seguintes etapas se aplicam especificamente a este IRP:
Aloque um buffer de um pool paginado e inicialize-o para zeros.
Defina os valores no próximo local da pilha de E/S do IRP: defina MajorFunctioncomo IRP_MJ_PNP, defina MinorFunctioncomo IRP_MN_READ_CONFIG e defina os valores apropriados em Parameters.ReadWriteConfig.
Inicialize IoStatus.Status para STATUS_NOT_SUPPORTED.
Desaloque o IRP e o buffer quando eles não forem mais necessários.
Os drivers devem enviar esse IRP da DISPATCH_LEVEL IRQL < .
Um driver pode acessar o espaço de configuração de um barramento em DISPATCH_LEVEL por meio de uma rotina de interface de barramento, se o driver de barramento pai der suporte a essa interface. Para obter uma interface de barramento, um driver envia uma solicitação IRP_MN_QUERY_INTERFACE para a pilha de dispositivos na qual o driver está anexado. Em seguida, o driver chama a rotina apropriada retornada na interface .
Por exemplo, para ler o espaço de configuração do DISPATCH_LEVEL, um driver pode chamar IRP_MN_QUERY_INTERFACE durante a inicialização do driver para obter a interface BUS_INTERFACE_STANDARD do driver de barramento pai. O driver envia o IRP de consulta do IRQL PASSIVE_LEVEL. Posteriormente, a partir do código no DISPATCH_LEVEL IRQL, o driver chama a rotina apropriada retornada na interface, como a rotina Interface.GetBusData .
Requisitos
parâmetro |
Wdm.h (inclua Wdm.h, Ntddk.h ou Ntifs.h) |