Artigo: 115486 - Última revisão: terça-feira, 1 de Março de 2005 - Revisão: 3.3

Como controlo de dispositivo controlador carga encomenda

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sumário

Windows NT concebido o conceito que o primeiro controlador de reclamar um dispositivo obtém a propriedade desse dispositivo. Esta propriedade pode ser partilhada ou pode ser exclusivo; isto é para o controlador de dispositivo claiming. Se o dispositivo é pedido exclusivamente por um controlador de dispositivo, quaisquer outras tentativas para reclamar o dispositivo por controladores de dispositivo carregado posteriormente falharem. Devido isto, é imperativo que a ordem em que controladores de dispositivo são carregados pode ser modificada pelos autores de controlador de dispositivo. Este artigo descreve os dois métodos que pode utilizar para controlar a ordem em que controladores de dispositivo são carregados.

Mais Informação

Existem dois métodos que pode utilizar para controlar a ordem em que controladores de dispositivo são carregados. Ambos os métodos tirar partido das entradas do registo que pode ser encontrado em \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control. O primeiro método consiste em Modificar a ServiceGroupOrder. O segundo método consiste em atribuir valores de código que determinam a ordem de carregamento de acordo com o GroupOrderList do controlador. Os valores de tag de tipo de início e de nomes de grupos estão HKLM\SYSTEM\CurrentControlSet\Services\ <drivername> chave que deve ser adicionado antes dos valores podem ser listados na lista de ordem de grupo.

Estes dois métodos funcionam apenas para controladores de dispositivo que tenham um valor inicial de 0 (SERVICE_BOOT_START) ou 1 (SERVICE_SYSTEM_START). Em todos os casos, controladores de dispositivo com um valor de início de carregamento 0 antes de quaisquer controladores de dispositivo com um valor inicial de 1 tentativa para carregar.

Método 1: ServiceGroupOrder

O ServiceGroupOrder contém uma lista de nomes de grupo pela ordem em que serão carregadas. Seguem-se o conteúdo não tendo sido modificado ServiceGroupOrder:

Miniport SCSI
porta
Disco principal
Classe de SCSI
Unidade de CD-ROM SCSI classe
filtro
sistema de ficheiros de arranque
Base
Porta de ponteiro
Porta de teclado
Classe de ponteiro
Classe de teclado
Init vídeo
Vídeo
Guardar vídeo
sistema de ficheiros
Registo de eventos
Controladores de transmissões em sequência
NDIS
TDI
NetBIOSGroup
SpoolerGroup
Acordo com a ServiceGroupOrder, controladores de dispositivo in a carga de "Classe SCSI" grupo depois de todos os controladores de dispositivo do grupo "Disco primário" e antes de controladores de dispositivo in a carga do grupo "unidade de CD-ROM SCSI class". Quanto maior for o grupo de um controlador de dispositivo consta da lista, o mais cedo carrega. A lista de ServiceGroupOrder é analisada duas vezes. Primeiro, todos os controladores de dispositivo com um valor inicial de carga 0; depois, todos os controladores de dispositivo com um valor inicial de 1 carga. Deste modo, um controlador de dispositivo com um valor inicial de cargas 0 antes de qualquer controlador de dispositivo com um valor inicial de 1, independentemente do que a posição na lista ServiceGroupOrder.

É possível que o autor do controlador de dispositivo editar o ServiceGroupOrder. Ao fazê-lo, um novo grupo pode ser criado em qualquer lugar na lista. Um bom exemplo pode ser um controlador de dispositivo de SCSI de classe denominado "SAMPLDRV" necessitar de carregar antes de "SCSIDISK" porque SCSIDISK é um dispositivo que necessita SAMPLDRV para reclamar que afirma. Seguem-se entradas do registo do SCSIDISK:
       \registry\machine\system\currentcontrolset\services\scsidisk
          Type = REG_DWORD 0x00000001
          Start = REG_DWORD 0x00000000
          Group = SCSI class
          ErrorControl = REG_DWORD 0x00000000
          DependOnGroup = REG_MULTI_SZ "SCSI miniport"
				

Um novo grupo pode ser adicionado para ServiceGroupOrder denominado "O-me primeiro" e SAMPLDRV podem ter o respectivo grupo definida para o me primeiro. Segue-se ServiceGroupOrder modificado:

Miniport SCSI
porta
Disco principal
Carregar-me primeiro
Classe de SCSI
Unidade de CD-ROM SCSI classe
filtro
sistema de ficheiros de arranque
.
.
.
Seguem-se entradas do registo do SAMPLDRV:
       \registry\machine\system\currentcontrolset\services\sampldrv
          Type = REG_DWORD 0x00000001
          Start = REG_DWORD 0x00000000
          Group = Load Me First
          ErrorControl = REG_DWORD 0x00000000
          DependOnGroup = REG_MULTI_SZ "SCSI miniport"
				

Com esta configuração, SAMPLDRV carrega antes SCSIDISK.

Método n.º 2: GroupOrderList e valores de código

Uma chave opcional denominada controlo pode ser incluída no registo de um controlador de dispositivo. O valor de etiqueta ajuda a determinar a ordem de carregamento de controladores de dispositivos num grupo. A ordem de carregamento não é necessariamente por ordem numérica; em vez disso, é pela ordem definida pelo GroupOrderList. A primeira entrada por grupo de GroupOrderList é o número de valores de controlo. Este é seguido de sequência numérica na qual os valores de controlo devem ser carregado. Controladores de dispositivos num grupo primeiro são carregados acordo com para o respectivo valor de código conforme definido pelo GroupOrderList. Se o controlador de dispositivo não tiver um valor de controlo ou se o valor de código não estiver no GroupOrderList, estes controladores de dispositivo carregado depois dos controladores de dispositivo com valores de código válidos são carregados. Estes controladores de dispositivo, a ordem de carregamento não está assegurada, diferente do que todos os controladores de dispositivo num grupo são carregados antes de carrega o grupo seguinte.

Segue-se uma saída parcial do GroupOrderList:
      \registry\machine\system\currentcontrolset\control\grouporderlist
          Base = REG_BINARY 0d 00 00 00 01 00...
          Extended base = REG_BINARY 04 00 00 00 01 00...
          Filter = REG_BINARY 05 00 00 00 01 00...
          Keyboard Class = REG_BINARY 01 00 00 00 01 00...
          Keyboard Port = REG_BINARY 01 00 00 00 01 00...
          Ndis = REG_BINARY 09 00 00 00 01 00...
          Pointer Class = REG_BINARY 01 00 00 00 01 00...
          Pointer Port = REG_BINARY 03 00 00 00 01 00...
          .
          .
          .
				

NOTA: Não existe nenhum valor para a classe SCSI. Nem todos os grupo é representado no GroupOrderList. Quando um grupo não está a GroupOrderList, a ordem devido ao qual controladores de dispositivo carregado dentro do grupo não pode ser garantida.

Tal como com ServiceGroupOrder, o GroupOrderList pode ser modificado. Utilizando o mesmo exemplo acima indicado, as entradas de controlo para classe de SCSI podem ser adicionadas:
      \registry\machine\system\currentcontrolset\control\grouporderlist
          SCSI class = REG_BINARY 02 00 00 00 02 00 00 00 01 00 00 00
          Base = REG_BINARY 0d 00 00 00 01 00...
          Extended base = REG_BINARY 04 00 00 00 01 00...
          .
          .
          .
				

Neste exemplo, a classe de SCSI de grupo reconhece dois valores de controlo, 00000001 e 00000002. A ordem em que a carga de valores do controlo é 00000002 em primeiro lugar, seguido de 00000001. Se SAMPLDRV estiver num grupo de classe de SCSI, que é o mesmo SCSIDISK, o valor de código garante que SAMPLDRV carrega antes SCSIDISK porque SCSIDISK não tem nenhum valor de código e não marcados controladores são carregados pela última vez num grupo.

Se por algum motivo SCSIDISK é atribuído um valor de código de 0 x 00000001, SAMPLDRV carrega antes SCSIDISK quando SAMPLDRV é atribuído um valor de código de 00000002:
       \registry\machine\system\currentcontrolset\services\sampldrv
          Type = REG_DWORD 0x00000001
          Start = REG_DWORD 0x00000000
          Group = SCSI class
          ErrorControl = REG_DWORD 0x00000000
          DependOnGroup = REG_MULTI_SZ "SCSI miniport"
          Tag = REG_DWORD 0x00000002
				

A informação contida neste artigo aplica-se a:
  • Microsoft Win32 Device Driver Kit para Windows NT 3.5
  • Microsoft Win32 Device Driver Kit para Windows NT 3.5
  • Microsoft Win32 Device Driver Kit para Windows NT 3.51
  • Microsoft Win32 Device Driver Kit para Windows NT 4.0
  • Microsoft Win32 Device Driver Kit para Windows 2000
Palavras-chave: 
kbmt kbhowto KB115486 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 115486  (http://support.microsoft.com/kb/115486/en-us/ )