Compartir a través de


Función SetupCopyOEMInfA (setupapi.h)

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

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

Se requiere un autor de llamada 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 tamaño, incluida la terminación NULL.

[in] OEMSourceMediaLocation

Información de ubicación de origen que se 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 tamaño, incluida la terminación NULL.

[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 multimedia 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 multimedia 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 cuando la copia se haya realizado correctamente.
SP_COPY_REPLACEONLY
Copie solo si este archivo ya existe en el directorio Inf. Esta marca se puede 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, esta API produce un error 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 .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 la función SetupCopyOEMInf produce un error con un código devuelto 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 DestinationInfFileName búfer, 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, incluida una terminación NULL. 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 al devolver correctamente (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 tras la devolución correcta. Este parámetro puede ser null.

Valor devuelto

Esta función devuelve WINSETUPAPI BOOL.

Observaciones

La función SetupCopyOEMInf copia un archivo .inf especificado en el directorio \Inf de %windir%. 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 todos 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 son binarios en comparación con determinar si son idénticos.

Si el archivo .inf especificado ya existe una comprobación adicional se realiza para determinar si el archivo .inf especificado contiene una entrada CatalogFile= en su sección [Versión]. Si es así, el archivo .inf %windir%nombre de archivo principal \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 incluidos en %windir%directorio \Inf. Si no se encuentra una coincidencia existente, los archivos .inf y .cat se instalan con 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 verificación de firmas digitales.

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

Si los archivos .inf y .cat ya existen, estos nombres de archivo existentes se usan 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 multimedia 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 neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows XP [solo aplicaciones de escritorio]
servidor mínimo admitido Windows Server 2003 [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de setupapi.h
biblioteca de Setupapi.lib
DLL de Setupapi.dll
conjunto de API de ext-ms-win-setupapi-classinstallers-l1-1-2 (introducido en Windows 10, versión 10.0.14393)

Consulte también

funciones de

información general

SetupUninstallOEMInf