Compartilhar via


Bus Drivers

Windows Mobile Not SupportedWindows Embedded CE Supported

9/8/2008

Um driver barramento é qualquer software que carrega os drivers. Drivers de barramento ter um ou mais dessas responsabilidades:

  • Gerenciando físico barramentos, tais como cartão PC, USB ou PCI.
  • Carregando drivers em um físico barramento que o driver barramento não diretamente gerenciar.
    Um exemplo é o Barramento de enumerador, que é o driver barramento raiz interno que carrega os drivers, se a plataforma tiver suporte barramento PCI.
  • Chamando ActivateDeviceEx diretamente para carregar um driver de dispositivo.
    Talvez a driver de dispositivo carregado hardware gerenciar indiretamente por outro driver de dispositivo.

Para permitir que acessar a um driver de dispositivo com CreateFile, drivers barramento devem fornecer Gerenciador de dispositivos com informações suficientes para criar barramento-relativo nomes e habilitar dispositivo alças. Eles também devem fornecer informações suficientes para identificar próprios para drivers e aplicativos para operações controle barramento. Um driver barramento pode especificar um barramento-relativo nome para o driver, mas para drivers e aplicativos para poder acessar o driver barramento para operações controle barramento, o driver barramento deve expor uma interface transmitir. O espaço para nome $ barramento fornece uma maneira de executar operações em um dispositivo que são diferentes das operações típicas dispositivo. Controlando acessar ao espaço para nome barramento $, você também pode fornecer segurança para seu sistema.

Para acessar habilitar para um driver que usa o espaço para nome barramento $

  1. Anunciar o DMCLASS_PROTECTEDBUSNAMESPACE GUID do driver IClass chave Registro.

    Se o driver não anuncia DMCLASS_PROTECTEDBUSNAMESPACE, Device Manager não é possível sabe que o driver é possível diferenciar entre acessar normal e acessar sistema para o dispositivo. DMCLASS_PROTECTEDBUSNAMESPACE deve ser associado com do o driver $ barramento interface.

    Se o driver anuncia a DMCLASS_PROTECTEDBUSNAMESPACE interface, o driver XXX_Open (Device Manager) ponto de entrada é invocado com o bit DEVACCESS_BUSNAMESPACE definir na dwAccess parâmetro. O driver deve controlar manter do que alças foram abertas com esse bit definir para que ele pode aceitar ou rejeitar IOCTLs e outras operações de forma apropriada.

    Mesmo se o driver não anuncia DMCLASS_PROTECTEDBUSNAMESPACE, seu nome barramento $ ainda pode ser útil para a comunicação com do o driver driver barramento pai para serviços such as carregando, descarregando e gerenciamento de energia.

  2. Expor o apontar de montagem barramento $, adicionando = %b Depois de IClass valor chave do Registro.

    O IClass valor chave do Registro para o driver deve ter = %b Depois de IClass valor do Registro. O seguinte exemplo chave do Registro mostra onde a local = %b.

    "IClass"=multi_sz:"{B3CC6EBA-5507-4196-8E41-2BF42E4A47C9}=%b","{6F40791D-300E-44E4-BC38-E0E63CA8375C}=%b"
    

    Para obter mais informações sobre pontos de montagem e nomes arquivo dispositivo, consulte Nomes de arquivos do dispositivo.

Convenções de nomenclatura do driver de barramento

Drivers de barramento fornecem drivers subordinados com um nome barramento para si mesmos e um nome barramento para o driver recém-carregada. Geralmente, os nomes barramento devem ser derivado do tipo de barramento, número barramento e outros identificadores específicos barramento such as o dispositivo número e função número. O convenção de nomenclatura driver barramento assume que todos os barramentos de um tipo específico são numerados de forma exclusiva. Quando essa combinação de identificadores é exclusivo, não ocorrer colisões Nome. De exemplo, diferentes invocações do enumerador de barramento devem ser consideradas barramentos diferentes e atribuídas números barramento diferente.

Barramento números são compatível com o INTERFACE_TYPE enumeração. Você pode adicionar novos identificadores de seu hardware.

Em geral, barramento nomes se relacionam com os subjacente estrutura barramento. Isso simplifica a estrutura sistema se um aplicativo enumera drivers dispositivo em um barramento. Nomes de barramento diferem dos nomes interface transmitir porque nem todos os drivers dispositivo expõem uma interface transmitir para aplicativos. No entanto, apresentam nomes barramento relacionar para o subjacente barramento. De exemplo, os aplicativos podem carregar drivers dispositivo diretamente pelo chamado ActivateDeviceEx. Esses aplicativos talvez não expor uma interface barramento si, mas o driver de dispositivo que carregar o aplicativo pode expor uma interface barramento.

Para drivers que carrega um aplicativo, transmitir interface Nome do driver é usado para gerar um exclusivo nome barramento. De exemplo, se um aplicativo carrega " com1: " ou "\$device\COM1", seu nome barramento seria "\$bus\COM1". Esta é uma abordagem segura porque são nomes interface transmitir exclusivo em todo o sistema.

Para obter informações sobre nomes arquivo dispositivo, consulte Nomes de arquivos do dispositivo.

Entradas do Registro do driver de barramento

Device Manager associa informações barramento do driver fsdev_t estrutura, que é interna para Device Manager. A seguinte tabela mostra as informações desse local drivers barramento na Ativa chave Registro.

Subchave do Registro Descrição

BusDriver

Nome de barramento do driver de barramento. "\$Bus" Presume-se. É um valor exemplo "PCI_0_1_0".

BusName

Nome de barramento do driver que está carregando. É um valor exemplo "PCMCIA_0_1_1". Barramentos diferentes podem estrutura nomes de maneira diferente. De exemplo, talvez os dispositivos USB HID estrutura isso como "HID_interface_coleção".

Para obter informações sobre chaves Registro Device Manager, consulte Chaves do Registro do Gerenciador de dispositivos.

Callbacks de energia do driver de barramento

Driver de Barramento ISTs não tem a chance descarregar drivers na ordem para evitar uma invocação callback de energia. Isso ocorre porque não são segmentos execução durante retornos de chamada de energia. Como com instaláveis ISRs, retornos de chamada de energia podem tentar acessar ausente dispositivos quando reinicia o hardware. Para evitar energia retornos de chamada acessem dispositivos ausentes, o driver de dispositivo no barramento pai podem invocar IOCTL_BUS_IS_CHILD_REMOVED Para determinar se seu dispositivo está faltando ou não. Retornos de chamada de energia podem invocar esse IOCTL. Para obter mais informações sobre isso IOCTL e outros relacionado IOCTLs, consulte CEDDK de vínculo dinâmico de biblioteca de barramento ACCESS IOCTLs.

Para informações sobre suspender e continuar energia retornos de chamada, consulte Suspender e continuar Callbacks de energia.

See Also

Reference

CEDDK Dynamic-Link Library Bus Access Reference