Función SetupCopyOEMInfA (setupapi.h)

[Esta función está disponible para su uso en los sistemas operativos indicados en la sección Requisitos. En versiones posteriores podría modificarse o no estar disponible. SetupAPI ya no debe usarse para instalar aplicaciones. En su lugar, use Windows Installer para desarrollar instaladores de aplicaciones. SetupAPI sigue utilizándose para instalar controladores de dispositivo.

La función SetupCopyOEMInf copia un archivo .inf especificado en el directorio %windir%/Inf.

Se requiere un llamador de esta función con privilegios administrativos; de lo contrario, se produce un error en la función.

Sintaxis

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

Ruta de acceso completa al archivo .inf de origen. Debe usar una cadena terminada en null. Esta ruta de acceso no debe superar MAX_PATH de tamaño, incluido el valor NULL de terminación.

[in] OEMSourceMediaLocation

Información de ubicación de origen que se va a almacenar en el archivo .inf precompilado (.pnf). Esta información de ubicación es específica del tipo de medio de origen especificado. Debe usar una cadena terminada en null. Esta ruta de acceso no debe superar MAX_PATH de tamaño, incluido el valor NULL de terminación.

[in] OEMSourceMediaType

Tipo de medio de origen al que hace referencia la información de ubicación. Este parámetro puede ser uno de los siguientes valores.

Valor Significado
SPOST_NONE
No se almacena información de medios de origen en el archivo .pnf. El valor de OEMSourceMediaLocation se omite en este caso.
SPOST_PATH
OEMSourceMediaLocation contiene una ruta de acceso al medio de origen. Por ejemplo, si el medio está en un disquete, esta ruta de acceso podría ser "A:\". Si OEMSourceMediaLocation es NULL, se supone que la ruta de acceso es la ruta de acceso donde se encuentra el archivo .inf. Si el archivo .inf tiene un archivo .pnf correspondiente en esa ubicación, la información del medio de origen del archivo .pnf se transfiere al archivo .pnf de destino.
SPOST_URL
OEMSourceMediaLocation contiene un localizador de recursos universal (URL) que especifica la ubicación de Internet desde donde se recuperaron los archivos .inf/driver. Si OEMSourceMediaLocation es NULL, se supone que se usó la ubicación predeterminada del Administrador de descarga de código.

[in] CopyStyle

Especifica cómo se copia el archivo .inf en el directorio .inf. Se pueden combinar las marcas siguientes.

Valor Significado
SP_COPY_DELETESOURCE
Elimine el archivo de origen al copiar correctamente.
SP_COPY_REPLACEONLY
Copie solo si este archivo ya existe en el directorio Inf. Esta marca se podría usar para actualizar la información de ubicación de origen de un archivo .inf existente.
SP_COPY_NOOVERWRITE
Copie solo si los archivos especificados no existen actualmente en el directorio Inf. Si el archivo .inf existe actualmente, se produce un error en esta API y GetLastError devuelve ERROR_FILE_EXISTS. En este caso, el nombre de archivo .inf existente se coloca en el campo adecuado en los búferes de salida de información del archivo .inf de destino.
SP_COPY_OEMINF_CATALOG_ONLY
Los archivos de catálogo correspondientes del archivo .inf especificados se copian en %windir%\Inf. Si se especifica esta marca, la información del nombre de archivo de destino se escribe cuando se devuelve correctamente si el archivo .inf especificado ya existe en el directorio Inf.

[out, optional] DestinationInfFileName

Puntero a un búfer para recibir el nombre de archivo .inf asignado en el momento en que se copió en el directorio Inf. El búfer, si se especifica, normalmente debe estar MAX_PATH de longitud. Si se especifica la marca SP_COPY_NOOVERWRITE y se produce un error en la función SetupCopyOEMInf con un código de retorno de ERROR_FILE_EXISTS, este búfer contiene el nombre del archivo .inf existente. Si se especifica la marca SP_COPY_OEMINF_CATALOG_ONLY, este búfer contiene el nombre de archivo .inf de destino si el archivo .inf ya está presente en el directorio Inf. De lo contrario, este búfer se establece en la cadena vacía. Este parámetro puede ser NULL.

[in] DestinationInfFileNameSize

Tamaño del búfer DestinationInfFileName , en caracteres o cero si no se especifica el búfer. Si se especifica DestinationInfFileName y este tamaño de búfer es menor que el tamaño necesario para devolver el nombre de archivo .inf de destino (incluida la ruta de acceso completa), se produce un error en esta función. En este caso , GetLastError devuelve ERROR_INSUFFICIENT_BUFFER.

[out, optional] RequiredSize

Puntero a una variable que recibe el tamaño (en caracteres) necesario para almacenar el nombre de archivo .inf de destino, incluido un valor NULL de terminación. Si se especifica la marca SP_COPY_OEMINF_CATALOG_ONLY, esta variable recibe una longitud de cadena solo si el archivo .inf ya existe en el directorio Inf. De lo contrario, esta variable se establece en cero. Este parámetro puede ser NULL.

[out, optional] DestinationInfFileNameComponent

Puntero a una cadena que se establece tras la devolución correcta (o ERROR_FILE_EXISTS) para que apunte al principio del componente de nombre de archivo de la ruta de acceso almacenada en el parámetro DestinationInfFileName . Si se especifica la marca SP_COPY_OEMINF_CATALOG_ONLY, el parámetro DestinationInfFileName puede ser una cadena vacía. En este caso, el puntero de caracteres se establece en NULL cuando se devuelve correctamente. Este parámetro puede ser NULL.

Valor devuelto

Esta función devuelve WINSETUPAPI BOOL.

Comentarios

La función SetupCopyOEMInf copia un archivo .inf especificado en el directorio %windir%\Inf. SetupCopyOEMInf no vuelve a copiar el archivo si encuentra que ya existe una imagen binaria del archivo .inf especificado en el directorio Inf con el mismo nombre o un nombre del formulario OEM*.inf. Cuando SetupCopyOEMInf copia un archivo, cambia el nombre del archivo copiado a OEM*.inf. El nombre proporcionado es único y no se puede predecir.

SetupCopyOEMInf usa el procedimiento siguiente para determinar si el archivo .inf ya existe en el directorio Inf:

Todos los archivos .inf con nombres del formato OEM*.inf se enumeran y se comparan los archivos que tengan el mismo tamaño de archivo que el archivo .inf especificado.

Se busca en el directorio Inf el nombre de archivo de origen del archivo .inf. Si existe un archivo .inf con el mismo nombre y tiene el mismo tamaño que el del archivo .inf especificado, los dos archivos se comparan binariamente para determinar si son idénticos.

Si el archivo .inf especificado ya existe una comprobación adicional para determinar si el archivo .inf especificado contiene una entrada CatalogFile= en su sección [Versión]. Si es así, el nombre de archivo principal %windir%\Inf del archivo .inf con una extensión ".cat" se usa para determinar si el catálogo ya está instalado. Si hay un catálogo instalado, pero no es el mismo que el catálogo asociado con el archivo .inf de origen, esto no se considera una coincidencia y las enumeraciones continúan. Es posible tener varios archivos .inf idénticos con catálogos únicos contenidos en el directorio %windir%\Inf. Si no se encuentra una coincidencia existente, los archivos .inf y .cat se instalan bajo un nombre nuevo y único.

Los archivos .inf de OEM que no especifican una entrada CatalogFile= se consideran no válidos con respecto a la comprobación de firmas digitales.

En los casos en los que el archivo .inf se debe copiar en el directorio %windir%\Inf, se notifican los errores de comprobación de firmas digitales.

Si los archivos .inf y .cat ya existen, se usan estos nombres de archivo existentes y el comportamiento de reemplazo de archivos se basa en las marcas CopyStyle especificadas. El comportamiento de reemplazo solo hace referencia a la información de medios de origen almacenada en .pnf. Los archivos .inf, .pnf y .cat existentes no se modifican.

Nota

El encabezado setupapi.h define SetupCopyOEMInf como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado setupapi.h
Library Setupapi.lib
Archivo DLL Setupapi.dll
Conjunto de API ext-ms-win-setupapi-classinstallers-l1-1-2 (introducido en Windows 10, versión 10.0.14393)

Vea también

Funciones

Información general

SetupUninstallOEMInf