Função SetupCopyOEMInfA (setupapi.h)
[Essa função está disponível para uso nos sistemas operacionais indicados na seção Requisitos. Ele poderá ser alterado ou ficar 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 copia um arquivo .inf especificado para o diretório %windir%/Inf.
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 o NULL de terminação.
[in] OEMSourceMediaLocation
Informações de localização de origem a serem armazenadas no .inf pré-compilado (.pnf). 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 o NULL de terminação.
[in] OEMSourceMediaType
Tipo de mídia de origem referenciado pelas informações de localização. Esse parâmetro pode ser um dos valores a seguir.
[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 localização de origem de um .inf existente. |
|
Copie somente se os arquivos especificados não existirem atualmente no diretório Inf. 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 de 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 de 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. Este 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 que o tamanho necessário para retornar o nome de arquivo .inf de destino (incluindo 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 de arquivo .inf de destino, incluindo um NULL de terminação. 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. Este parâmetro pode ser NULL.
[out, optional] DestinationInfFileNameComponent
Ponteiro para uma cadeia de caracteres que é definida após o 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. Este parâmetro pode ser NULL.
Retornar valor
Essa função retorna WINSETUPAPI BOOL.
Comentários
A função SetupCopyOEMInf copia um arquivo .inf especificado no diretório %windir%\Inf. SetupCopyOEMInf não fará o escopo do arquivo se descobrir que uma imagem binária do arquivo .inf especificado já existe 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 para o nome do 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 com determinar se eles são idênticos.
Se o arquivo .inf especificado já existir mais marcar será executado para determinar se o arquivo .inf especificado contém uma entrada CatalogFile= em sua seção [Versão]. Se isso acontecer, o nome de arquivo primário %windir%\Inf do arquivo .inf 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 no diretório %windir%\Inf. Se uma correspondência existente não for encontrada, os arquivos .inf e .cat serão instalados em um nome novo e exclusivo.
Os arquivos .inf do 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.
Observação
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 de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | setupapi.h |
Biblioteca | Setupapi.lib |
DLL | Setupapi.dll |
Conjunto de APIs | ext-ms-win-setupapi-classinstallers-l1-1-2 (introduzido no Windows 10, versão 10.0.14393) |