Compartilhar via


Função SwDeviceCreate (swdevice.h)

Inicia a enumeração de um dispositivo de software.

Sintaxe

HRESULT SwDeviceCreate(
  [in]           PCWSTR                      pszEnumeratorName,
  [in]           PCWSTR                      pszParentDeviceInstance,
  [in]           const SW_DEVICE_CREATE_INFO *pCreateInfo,
  [in]           ULONG                       cPropertyCount,
  [in, optional] const DEVPROPERTY           *pProperties,
  [in]           SW_DEVICE_CREATE_CALLBACK   pCallback,
  [in, optional] PVOID                       pContext,
  [out]          PHSWDEVICE                  phSwDevice
);

Parâmetros

[in] pszEnumeratorName

Uma cadeia de caracteres que nomeia o enumerador do dispositivo de software. Escolha um nome que represente o componente que enumera os dispositivos.

[in] pszParentDeviceInstance

Uma cadeia de caracteres que especifica a ID da instância do dispositivo que é o pai do dispositivo de software.

Isso pode ser HTREE\ROOT\0, mas é recomendável manter os filhos do dispositivo raiz no mínimo. Também recomendamos que o pai preferencial de um dispositivo de software seja um dispositivo real para o qual o dispositivo de software está estendendo a funcionalidade. Em situações em que um dispositivo de software não tem um pai tão natural, crie um dispositivo como um filho da raiz que possa coletar todos os dispositivos de software que um componente enumerará; em seguida, enumere os dispositivos de software reais como filhos desse nó de agrupamento de dispositivos. Isso mantém os filhos do dispositivo raiz em um número gerenciável.

[in] pCreateInfo

Um ponteiro para uma estrutura SW_DEVICE_CREATE_INFO que descreve as informações que o PnP usa para criar o dispositivo.

[in] cPropertyCount

O número de estruturas DEVPROPERTY na matriz pProperties .

[in, optional] pProperties

Uma matriz opcional de estruturas DEVPROPERTY . Essas propriedades são definidas no dispositivo depois que ele é criado, mas antes que uma notificação de que o dispositivo foi criado seja enviada. Para obter mais informações, consulte Comentários. Esse ponteiro pode ser NULL.

[in] pCallback

O SW_DEVICE_CREATE_CALLBACK função de retorno de chamada que o sistema operacional chama depois que o PnP enumera o dispositivo.

[in, optional] pContext

Um contexto de cliente opcional que o sistema operacional passa para a função de retorno de chamada. Esse ponteiro pode ser NULL.

[out] phSwDevice

Um ponteiro para uma variável que recebe o identificador HSWDEVICE que representa o dispositivo. Chame SwDeviceClose para fechar esse identificador depois que o aplicativo cliente quiser que o PnP remova o dispositivo.


DECLARE_HANDLE(HSWDEVICE);
typedef HSWDEVICE *PHSWDEVICE;

Retornar valor

S_OK será retornado se a enumeração do dispositivo tiver sido iniciada com êxito. Isso não significa que o dispositivo foi enumerado com êxito. Verifique o parâmetro CreateResult da função de retorno de chamada SW_DEVICE_CREATE_CALLBACK para determinar se o dispositivo foi enumerado com êxito.

Comentários

SwDeviceCreate retorna um identificador que representa o dispositivo. Depois que esse identificador for fechado, o PnP removerá o dispositivo.

O processo de chamada deve ter acesso de Administrador para iniciar a enumeração de um dispositivo de software.

O PnP forma a ID da instância do dispositivo de um dispositivo de software como "SWD< pszEnumeratorName>< pszInstanceId>", mas essa cadeia de caracteres pode mudar ou pnP pode decorar o nome. Sempre obtenha a ID da instância do dispositivo da função de retorno de chamada.

Há uma diferença sutil entre as propriedades que são definidas como parte de uma chamada SwDeviceCreate e propriedades que são definidas posteriormente chamando SwDevicePropertySet. As propriedades definidas como parte de SwDeviceCreate são armazenadas na memória; se o dispositivo estiver desinstalado ou um driver nulo apagar os repositórios de propriedades, essas propriedades serão gravadas novamente pelo recurso de API de Dispositivo de Software quando o PnP renumerar os dispositivos. Tudo isso é transparente para o cliente. As propriedades definidas usando SwDevicePropertySet após a enumeração não persistem na memória. Mas, se você definir uma propriedade usando SwDeviceCreate, poderá atualizar o valor com SwDevicePropertySet e essa atualização será aplicada ao valor na memória, bem como ao repositório persistente.

Recomendamos que todas as propriedades sejam especificadas como parte da chamada para SwDeviceCreate quando possível e que essas propriedades sejam especificadas para cada chamada para SwDeviceCreate.

Nota O sistema operacional pode chamar SW_DEVICE_CREATE_CALLBACK antes que a chamada para SwDeviceCreate retorne. Por esse motivo, o identificador do dispositivo de software para o dispositivo é fornecido como um parâmetro para a função de retorno de chamada.
 
Você pode criar um dispositivo de software como o filho de um pai que não está presente no momento. O PnP enumerará o dispositivo de software depois que o pai se tornar presente.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8
Servidor mínimo com suporte Windows Server 2012
Plataforma de Destino Universal
Cabeçalho swdevice.h
Biblioteca Swdevice.lib; OneCoreUAP.lib no Windows 10
DLL Cfgmgr32.dll

Confira também

SW_DEVICE_CREATE_CALLBACK