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.
[in] CopyStyle
Especifica cómo se copia el archivo .inf en el directorio .inf. Se pueden combinar las marcas siguientes.
Valor | Significado |
---|---|
|
Elimine el archivo de origen al copiar correctamente. |
|
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. |
|
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. |
|
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) |