Compartilhar via


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.

Valor Significado
SPOST_NONE
Nenhuma informação de mídia de origem é armazenada no arquivo .pnf. O valor de OEMSourceMediaLocation é ignorado nesse caso.
SPOST_PATH
OEMSourceMediaLocation contém um caminho para a mídia de origem. Por exemplo, se a mídia estiver em um disquete, esse caminho poderá ser "A:\". Se OEMSourceMediaLocation for NULL, o caminho será considerado o caminho onde o .inf está localizado. Se o .inf tiver um .pnf correspondente nesse local, as informações de mídia de origem do arquivo .pnf serão transferidas para o arquivo .pnf de destino.
SPOST_URL
OEMSourceMediaLocation contém um URL (localizador de recursos universal) que especifica o local da Internet de onde os arquivos .inf/driver foram recuperados. Se OEMSourceMediaLocation for NULL, supõe-se que o local padrão do Gerenciador de Download de Código tenha sido usado.

[in] CopyStyle

Especifica como o arquivo .inf é copiado para o diretório .inf. Os sinalizadores a seguir podem ser combinados.

Valor Significado
SP_COPY_DELETESOURCE
Exclua o arquivo de origem na cópia bem-sucedida.
SP_COPY_REPLACEONLY
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.
SP_COPY_NOOVERWRITE
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.
SP_COPY_OEMINF_CATALOG_ONLY
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)

Confira também

Funções

Visão geral

SetupUninstallOEMInf