Uso de Dirids
Muchos de los directorios que aparecen en los archivos INF se pueden expresar mediante identificadores de directorio (dirids), que son números que identifican directorios específicos. Las aplicaciones pueden usar, pero no pueden reasignar, los directorios definidos por el sistema asociados a dirids cuyos valores van de -1 a 32767.
Para crear dirids con valores definidos por el usuario de 32768 a 65534, o 65536 y versiones posteriores, use la función SetupSetDirectoryId (que se describe en la documentación de Microsoft Windows SDK).
Tenga en cuenta que un dirid con un valor de 65535 se considera sinónimo de un dirid con un valor de -1, aunque se prefiere el último (dirid -1).
Si piensa usar dirids en el archivo INF, tenga en cuenta las dos instrucciones siguientes:
Cuando la sintaxis de una entrada de archivo INF especifica explícitamente un valor dirid (la sección INF DestinationDirs, por ejemplo), exprese ese valor como un número.
En el siguiente ejemplo se muestra esta sintaxis.
[DestinationDirs] DefaultDestDir = 11 ; \system32 directory on Windows 2000 and later versions
Cuando la sintaxis de una entrada de archivo INF especifica una ruta de acceso de archivo, puede usar una sustitución de cadenas proporcionada por el sistema para representar parte o toda esta ruta de acceso. Esta sustitución tiene el siguiente formato:
%dirid%
Este formato consta de un carácter de porcentaje (%) seguido del dirid del directorio que desea especificar, seguido de otro carácter de porcentaje (%). Un carácter de barra invertida () separa esta expresión del siguiente nombre de archivo o directorios adicionales en la ruta.
En el siguiente ejemplo se muestra esta sintaxis.
[aic78xx_Service_Inst] ServiceBinary = %12%\aic78xx.sys
Cuando se expande completamente, la ruta mostrada en el ejemplo anterior se convierte en c:\windows\system32\drivers\aic78xx.sys (suponiendo que Windows esté instalado en el directorio c:\windows). Tenga en cuenta que la sustitución de cadenas, o el formato %dirid%, se puede usar en cualquier lugar donde se espere una cadena, con la excepción de la sección INF Strings del archivo INF.
Los dos ejemplos siguientes muestran cómo no se debe usar la sustitución de cadenas.
[DestinationDirs] DefaultDestDir = %11% ; Error! - number expected [aic78xx_Service_Inst] ServiceBinary = 12\aic78xx.sys ; Error! - unknown directory name
En el primer ejemplo, la sintaxis de la entrada DefaultDestDir requiere que su valor sea un número. Sin embargo, la expresión %11% se expande a una cadena. En el segundo ejemplo, el escritor INF aparentemente pretende establecer el valor de la entrada ServiceBinary en un archivo del directorio que contiene controladores (consulte la tabla siguiente para obtener más información). El error se produce porque Windows busca el archivo especificado en un directorio denominado "12", que probablemente no existe en el equipo.
En la tabla siguiente se muestran varios dirids usados habitualmente y los directorios que representan. Los valores especificados con más frecuencia por los archivos INF de dispositivos y los archivos INF de controladores aparecen en la parte superior de la tabla.
Como parte de los requisitos de aislamiento de paquetes de controladores, un controlador debe ejecutarse desde el almacén de controladores y usar DIRID 13 para especificar la ubicación de los archivos de paquete de controladores en la instalación. A partir de Windows 11, versión 24H2, algunos de los dirids usados habitualmente han quedado en desuso al enviar el INF para una firma WHQL. Para obtener más información, consulte InfVerif /h.
Valor | Directorio de destino | Versión en desuso |
---|---|---|
01 |
SourceDrive:\pathname (el directorio desde el que se instaló el archivo INF) |
24H2 de Windows 11 |
10 |
Directorio de Windows. Esto equivale a %SystemRoot%. |
|
11 |
Directorio del sistema. Esto equivale a %SystemRoot%\system32 para Windows 2000 y versiones posteriores de Windows. |
|
12 |
Directorio controladores. Esto equivale a %SystemRoot%\system32\drivers para Windows 2000 y versiones posteriores de Windows. |
|
13 |
Directorio del almacén de controladores del paquete de controladores. Para Windows 8.1 y versiones posteriores de Windows, especifica la ruta al directorio del almacén de controladores donde se importó el paquete de controladores. No use DelFiles en un archivo para el que DestinationDirs incluye dirid 13. El subdirectorio opcional de la sección SourceDiskFiles de un archivo debe coincidir con el subdirectorio de la sección DestinationDirs para la entrada que se aplica a este archivo. No use CopyFiles para cambiar el nombre de un archivo para el que DestinationDirs incluye dirid 13. Para obtener más información sobre el uso de dirid 13, consulte Ejecutar desde el almacén de controladores. |
|
17 |
Directorio de archivos INF |
24H2 de Windows 11 |
18 |
Directorio de ayuda |
24H2 de Windows 11 |
20 |
Directorio de fuentes |
24H2 de Windows 11 |
21 |
Directorio de visores |
24H2 de Windows 11 |
23 |
El directorio de colores (ICM) (no se usa para instalar controladores de impresora) |
|
24 |
Directorio raíz del disco del sistema. Este es el directorio raíz del disco en el que se instalan los archivos de Windows. Por ejemplo, si dirid 10 es "C:\winnt", entonces dirid 24 es "C:\". |
24H2 de Windows 11 |
25 |
Directorio compartido |
24H2 de Windows 11 |
30 |
Directorio raíz del disco de arranque, también conocido como "partición del sistema ARC". (Esto podría ser o no el mismo directorio que el representado por dirid 24). |
24H2 de Windows 11 |
50 |
Directorio del sistema Esto equivale a %SystemRoot%\system. |
24H2 de Windows 11 |
51 |
Directorio de colas (no usado para instalar controladores de impresora; consulte Dirids de impresora) |
|
52 |
Directorio de controladores de cola (no se usa para instalar controladores de impresora) |
|
53 |
Directorio de perfil de usuario |
24H2 de Windows 11 |
54 |
Directorio donde residen Ntldr.exe y Osloader.exe |
24H2 de Windows 11 |
55 |
Directorio de procesadores de impresión (no se usa para instalar controladores de impresora) |
|
-1 |
Ruta de acceso absoluta |
24H2 de Windows 11 |
Los valores dirid de 16384 a 32767 están reservados para carpetas de shell especiales. En la tabla siguiente se muestran valores dirid para estas carpetas.
Valor | Carpeta especial Shell | Versión en desuso |
---|---|---|
16406 |
Todos los usuarios\Menú Inicio |
24H2 de Windows 11 |
16407 |
Todos los usuarios\Menú Inicio\Programas |
24H2 de Windows 11 |
16408 |
Todos los usuarios\Menú Inicio\Programas\Inicio |
24H2 de Windows 11 |
16409 |
Todos los usuarios\Escritorio |
24H2 de Windows 11 |
16415 |
Todos los usuarios\Favoritos |
24H2 de Windows 11 |
16419 |
Todos los usuarios\Datos de la aplicación |
24H2 de Windows 11 |
16422 |
Archivos de programa |
|
16425 |
%SystemRoot%\SysWOW64 |
|
16426 |
%ProgramFiles(x86)% |
|
16427 |
Program Files\Common |
|
16428 |
%ProgramFiles(x86)%\Common |
|
16429 |
Todos los usuarios\plantillas |
24H2 de Windows 11 |
16430 |
Todos los usuarios\Documentos |
24H2 de Windows 11 |
Además de los valores de esta tabla definidos en Setupapi.h, puede usar cualquiera de los valores CSIDL_Xxx definidos en Shlobj.h. Para definir un valor dirid para una carpeta que no aparece en esta tabla, agregue 16384 (0x4000) al valor CSIDL_Xxx. Para obtener más información sobre los valores CSIDL_Xxx, consulte la documentación de Windows SDK.