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.
A enumeração estática é a capacidade de um driver de detetar e relatar a existência de dispositivos durante a inicialização do sistema, com uma capacidade limitada de relatar alterações subsequentes na configuração do sistema.
Os condutores de autocarro podem usar a enumeração estática se o número e o tipo de dispositivos ou subunidades funcionais forem predeterminados e permanentes, e não dependerem da configuração do sistema no qual o condutor está a ser executado.
Por exemplo, o driver de uma placa de som pode atuar como um driver de barramento e criar objetos de dispositivo físico (ODP) separados para cada um dos recursos da placa, como MIDI, áudio e joystick.
Listas secundárias estáticas
A estrutura permite que os drivers ofereçam suporte à enumeração estática fornecendo listas filhas estáticas. Cada lista estática de crianças representa uma lista de dispositivos de crianças que se ligam a um dispositivo pai. O driver de barramento para o dispositivo pai deve identificar os dispositivos filho do pai, adicioná-los à lista filha estática do dispositivo pai e criar um DOP para cada dispositivo filho.
Criando uma lista filha estática
Cada vez que um driver cria um objeto de dispositivo de estrutura que representa um objeto de dispositivo funcional (FDO) para um dispositivo, a estrutura cria uma lista filha vazia e estática para o dispositivo.
Quando o framework chama a função de retorno de chamada EvtDriverDeviceAdd de um driver de barramento, a função de retorno de chamada deve chamar WdfDeviceCreate para criar um FDO para o dispositivo pai. Para obter mais informações sobre como criar um FDO, consulte Criando objetos de dispositivo em um driver de função.
O driver deve então enumerar os filhos do dispositivo pai, criar PDOs para os filhos e adicionar os filhos à lista de filhos.
Opcionalmente, o driver pode chamar WdfDeviceSetBusInformationForChildren para fornecer ao framework informações sobre o barramento. Isso é recomendado porque facilita a identificação do barramento por dispositivos e aplicativos infantis.
Para criar um PDO para um dispositivo filho detetado, o controlador de barramento deve:
Chame WdfPdoInitAllocate para obter uma estrutura WDFDEVICE_INIT .
Inicialize a estrutura WDFDEVICE_INIT.
Chame WdfDeviceCreate para criar um objeto de dispositivo da framework que represente um PDO.
Para obter mais informações sobre como criar um PDO, consulte Criando objetos de dispositivo em um driver de barramento.
Depois de chamar WdfDeviceCreate, o driver deve chamar WdfFdoAddStaticChild para adicionar o dispositivo filho à lista filho.
Modificando uma sublista estática
Como os drivers só devem usar listas filhas estáticas para configurações de dispositivos predeterminadas e permanentes, há pouca necessidade de um driver modificar uma lista filha estática depois de criá-la. Se o driver determinar que um dispositivo filho se tornou inacessível, o driver pode chamar WdfPdoMarkMissing. (Se um dispositivo filho permanecer acessível, mas deixar de responder e não puder ser utilizado, o driver deverá definir o membro Failed da estrutura WDF_DEVICE_STATE como WdfTrue e, em seguida, chamar WdfDeviceSetDeviceState.)
Percorrendo uma lista de filhos estática
Se você precisar recuperar o conteúdo de uma lista filha estática, o driver pode percorrer a lista fazendo o seguinte:
Chamando WdfFdoLockStaticChildListForIteration.
Chamando WdfFdoRetrieveNextStaticChild quantas vezes forem necessárias.
Chamando WdfFdoUnlockStaticChildListFromIteration.