DEVPROP_TYPE_STRING_INDIRECT
O identificador DEVPROP_TYPE_STRING_INDIRECT representa o identificador de tipo de dados base para uma cadeia de caracteres Unicode terminada em NULL que contém uma referência de cadeia de caracteres indireta.
Comentários
Uma referência de cadeia de caracteres indireta descreve um recurso de cadeia de caracteres que contém a cadeia de caracteres real. A referência de cadeia de caracteres indireta pode aparecer em um dos seguintes formatos:
@[caminho\] FileName,-ResourceID
O Windows extrai a cadeia de caracteres do módulo especificado pelas entradas path e FileName , e o identificador de recurso da cadeia de caracteres é fornecido pela entrada ResourceID (excluindo o sinal de subtração necessário). O recurso de cadeia de caracteres é carregado da seção de recursos do módulo que melhor corresponde a um dos idiomas de interface do usuário preferenciais do chamador. A entrada de caminho é opcional. Se você especificar a entrada de caminho , o módulo deverá estar localizado em um diretório que esteja no caminho de pesquisa definido pelo sistema.
@
InfName,%strkey%
O Windows extrai a cadeia de caracteres da seção Cadeias de Caracteres INF do arquivo INF no diretório %SystemRoot%\inf cujo nome é fornecido pela entrada InfName . O identificador de token strkey deve corresponder à chave de uma linha na seção Cadeias de caracteres que melhor corresponde a um dos idiomas de interface do usuário preferidos do chamador. Se não existirem seções strings específicas do idioma, o Windows usará a seção cadeias de caracteres padrão.
Não é possível combinar DEVPROP_TYPE_STRING_INDIRECT com nenhum dos modificadores de tipo de dados de propriedade.
Definindo uma propriedade desse tipo
Para definir uma propriedade cujo tipo de dados base é DEVPROP_TYPE_STRING_INDIRECT, chame a função de propriedade SetupDiSetXxx correspondente e defina os parâmetros de entrada da função da seguinte maneira:
Defina o parâmetro PropertyType como DEVPROP_TYPE_STRING_INDIRECT.
Defina o parâmetro PropertyBuffer como um ponteiro para um buffer que contém a cadeia de caracteres terminada em NULL que fornece uma referência de cadeia de caracteres indireta.
Defina o parâmetro PropertyBufferSize como o tamanho, em bytes, da cadeia de caracteres.
Defina os parâmetros de função restantes conforme apropriado para definir a propriedade .
Recuperando o valor desse tipo de propriedade
Quando um aplicativo chama uma função de propriedade SetupDiGetXxx para recuperar o valor de uma propriedade desse tipo de dados base, o Windows tenta localizar a cadeia de caracteres real que a propriedade referencia. Se o Windows puder recuperar a cadeia de caracteres real, ele retornará a cadeia de caracteres real para o chamador e identificará o tipo de dados base da propriedade recuperada como DEVPROP_TYPE_STRING. Caso contrário, o Windows retornará a referência de cadeia de caracteres indireta e identificará o tipo de dados base da propriedade recuperada como DEVPROP_TYPE_STRING_INDIRECT.
Localizando texto estático
A partir do Windows Vista, você pode localizar propriedades de texto estático PnP personalizadas e padrão do tipo cadeia de caracteres usando recursos de uma cadeia de caracteres ou tabelas de recursos de uma imagem PE definindo tipos de propriedade de texto estático como DEVPROP_TYPE_STRING_INDIRECT. Você também pode adicionar dados de cadeia de caracteres de substituição não localizados que podem ser formatados no texto estático.
As cadeias de caracteres localizadas no recurso STRINGTABLE de uma imagem PE (como normalmente executado pelo LoadString) devem usar o seguinte formato:
"@"System32\mydll.dll,-21[; Fallback" String]"
"@System32\mydll.dll,-21[; Cadeia de caracteres de fallback com %1, %2, ... para %n[;(Arg1,Arg2,...,ArgN)]]"
As cadeias de caracteres localizadas no recurso de tabela de mensagens de imagens PE (normalmente executadas por RtlFindMessage, mais comumente usadas em drivers) devem usar o seguinte formato:
"@System32\drivers\mydriver.sys,#21[; Cadeia de caracteres de fallback]"
"@System32\drivers\mydriver.sys,#21[; Cadeia de caracteres de fallback com %1, %2, ... para %n[;(Arg1,Arg2,...,ArgN)]]"
Uma "Cadeia de Caracteres de Fallback" é opcional, mas útil porque pode ser retornada se o recurso não puder ser encontrado ou carregado. A cadeia de caracteres de fallback também é retornada para processos de sistema não interativos que não estão representando um usuário e, como tal, não pode mostrar texto localizado aos usuários de qualquer maneira.
Essa técnica permite localizar o texto estático extraído da cadeia de caracteres ou do recurso de tabela de mensagens que melhor corresponde à localidade do chamador.
O Windows formatará os argumentos à direita na cadeia de caracteres (ou na cadeia de caracteres de fallback) quando eles forem recuperados da respectiva tabela de recursos, da mesma maneira que RtlFormatMessage.
O texto estático PnP personalizado e padrão do tipo de cadeia de caracteres é localizado quando você define a propriedade carregando o recurso do componente que executa a operação de conjunto, que normalmente ocorre sob a localidade padrão do sistema para componentes no nível do sistema.
Observação: as imagens PE podem usar o tipo de tabela de recursos (recursos STRINGTABLE ou recursos de tabela de mensagens).
Requisitos
Versão |
Windows Vista e versões posteriores do Windows. |
Cabeçalho |
Devpropdef.h (inclua Devpropdef.h) |