Função SetupCopyOEMInfA (setupapi.h)
[Essa função está disponível para uso nos sistemas operacionais indicados na seção Requisitos. Ele pode estar alterado ou indisponível em versões subsequentes. SetupAPI não deve mais ser usado para instalar aplicativos. Em vez disso, use o Windows Installer para desenvolver instaladores de aplicativos. SetupAPI continua a ser usado para instalar drivers de dispositivo.]
A função SetupCopyOEMInf
Um chamador dessa função é necessário ter privilégios administrativos, caso contrário, a função falhará.
Sintaxe
WINSETUPAPI BOOL SetupCopyOEMInfA(
[in] PCSTR SourceInfFileName,
[in] PCSTR OEMSourceMediaLocation,
[in] DWORD OEMSourceMediaType,
[in] DWORD CopyStyle,
[out, optional] PSTR DestinationInfFileName,
[in] DWORD DestinationInfFileNameSize,
[out, optional] PDWORD RequiredSize,
[out, optional] PSTR *DestinationInfFileNameComponent
);
Parâmetros
[in] SourceInfFileName
Caminho completo para o arquivo .inf de origem. Você deve usar uma cadeia de caracteres terminada em nulo. Esse caminho não deve exceder MAX_PATH de tamanho, incluindo a terminação NULL.
[in] OEMSourceMediaLocation
Informações de local de origem a serem armazenadas no .inf (.pnf) pré-compilado. Essas informações de localização são específicas para o tipo de mídia de origem especificado. Você deve usar uma cadeia de caracteres terminada em nulo. Esse caminho não deve exceder MAX_PATH de tamanho, incluindo a terminação NULL.
[in] OEMSourceMediaType
Tipo de mídia de origem referenciado pelas informações de localização. Esse parâmetro pode ser um dos seguintes valores.
[in] CopyStyle
Especifica como o arquivo .inf é copiado para o diretório .inf. Os sinalizadores a seguir podem ser combinados.
Valor | Significado |
---|---|
|
Exclua o arquivo de origem na cópia bem-sucedida. |
|
Copie somente se esse arquivo já existir no diretório Inf. Esse sinalizador pode ser usado para atualizar as informações de local de origem para um .inf existente. |
|
Copie somente se os arquivos especificados não existirem no diretório Inf no momento. Se o .inf existir no momento, essa API falhará e GetLastError retornará ERROR_FILE_EXISTS. Nesse caso, o nome do arquivo .inf existente é colocado no campo apropriado nos buffers de saída de informações do arquivo .inf de destino. |
|
Os arquivos de catálogo correspondentes do arquivo .inf especificado são copiados para %windir%\Inf. Se esse sinalizador for especificado, as informações de nome de arquivo de destino serão inseridas após o retorno bem-sucedido se o arquivo .inf especificado já existir no diretório Inf. |
[out, optional] DestinationInfFileName
Ponteiro para um buffer para receber o nome do arquivo .inf atribuído a ele no momento em que ele foi copiado para o diretório Inf. O buffer, se especificado, normalmente deve ser MAX_PATH de comprimento. Se o sinalizador SP_COPY_NOOVERWRITE for especificado e a função SetupCopyOEMInf falhar com um código de retorno de ERROR_FILE_EXISTS, esse buffer conterá o nome do arquivo .inf existente. Se o sinalizador SP_COPY_OEMINF_CATALOG_ONLY for especificado, esse buffer conterá o nome do arquivo .inf de destino se o arquivo .inf já estiver presente no diretório Inf. Caso contrário, esse buffer será definido como a cadeia de caracteres vazia. Esse parâmetro pode ser NULL.
[in] DestinationInfFileNameSize
Tamanho do buffer DestinationInfFileName, em caracteres ou zero, se o buffer não for especificado. Se DestinationInfFileName for especificado e esse tamanho de buffer for menor do que o tamanho necessário para retornar o nome de arquivo .inf de destino (incluindo o caminho completo), essa função falhará. Nesse caso, GetLastError retorna ERROR_INSUFFICIENT_BUFFER.
[out, optional] RequiredSize
Ponteiro para uma variável que recebe o tamanho (em caracteres) necessário para armazenar o nome do arquivo .inf de destino, incluindo uma terminação NULL. Se o sinalizador SP_COPY_OEMINF_CATALOG_ONLY for especificado, essa variável receberá um comprimento de cadeia de caracteres somente se o arquivo .inf já existir no diretório Inf. Caso contrário, essa variável será definida como zero. Esse parâmetro pode ser NULL.
[out, optional] DestinationInfFileNameComponent
Ponteiro para uma cadeia de caracteres que é definida no retorno bem-sucedido (ou ERROR_FILE_EXISTS) para apontar para o início do componente filename do caminho armazenado no parâmetro DestinationInfFileName. Se o sinalizador SP_COPY_OEMINF_CATALOG_ONLY for especificado, o parâmetro DestinationInfFileName poderá ser uma cadeia de caracteres vazia. Nesse caso, o ponteiro de caractere é definido como NULL após o retorno bem-sucedido. Esse parâmetro pode ser NULL.
Valor de retorno
Essa função retorna WINSETUPAPI BOOL.
Observações
A função SetupCopyOEMInf copia um arquivo .inf especificado no diretório %windir%\Inf. SetupCopyOEMInf não recopia o arquivo se descobrir que já existe uma imagem binária do arquivo .inf especificado no diretório Inf com o mesmo nome ou um nome do formulário OEM*.inf. Quando SetupCopyOEMInf copia um arquivo, ele renomeia o arquivo copiado para OEM*.inf. O nome fornecido é exclusivo e não pode ser previsto.
SetupCopyOEMInf usa o procedimento a seguir para determinar se o arquivo .inf já existe no diretório Inf:
Todos os arquivos .inf com nomes do formulário OEM*.inf são enumerados e todos os arquivos que têm o mesmo tamanho de arquivo que o arquivo .inf especificado são binários comparados.
O diretório inf é pesquisado pelo nome de arquivo de origem do arquivo .inf. Se existir um arquivo .inf com o mesmo nome e tiver o mesmo tamanho do arquivo .inf especificado, os dois arquivos serão binários em comparação para determinar se são idênticos.
Se o arquivo .inf especificado já existir, uma verificação adicional será executada para determinar se o arquivo .inf especificado contém uma entrada CatalogFile= em sua seção [Versão]. Se isso acontecer, o arquivo .inf %windir%\Inf nome de arquivo primário com uma extensão ".cat" será usado para determinar se o catálogo já está instalado. Se houver um catálogo instalado, mas não for o mesmo que o catálogo associado ao .inf de origem, isso não será considerado uma correspondência e as enumerações continuarão. É possível ter vários arquivos .inf idênticos com catálogos exclusivos contidos em %windir%diretório \Inf. Se uma correspondência existente não for encontrada, os arquivos .inf e .cat serão instalados em um nome novo e exclusivo.
Arquivos .inf OEM que não especificam uma entrada CatalogFile= são considerados inválidos em relação à verificação de assinatura digital.
Nos casos em que o arquivo .inf deve ser copiado para o diretório %windir%\Inf, quaisquer falhas de verificação de assinatura digital são relatadas.
Se os arquivos .inf e .cat já existirem, esses nomes de arquivo existentes serão usados e o comportamento de substituição de arquivo será baseado nos sinalizadores CopyStyle especificados. O comportamento de substituição refere-se apenas às informações de mídia de origem armazenadas no .pnf. Os arquivos .inf, .pnf e .cat existentes não são modificados.
Nota
O cabeçalho setupapi.h define SetupCopyOEMInf como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows XP [somente aplicativos da área de trabalho] |
servidor com suporte mínimo | Windows Server 2003 [somente aplicativos da área de trabalho] |
da Plataforma de Destino |
Windows |
cabeçalho | setupapi.h |
biblioteca | Setupapi.lib |
de DLL |
Setupapi.dll |
conjunto de API | ext-ms-win-setupapi-classinstallers-l1-1-2 (introduzido no Windows 10, versão 10.0.14393) |