在 Windows 上,DISM(Deployment Imaging Service and Management Tool)使用本机 Windows API 和 驱动程序接口 来执行操作,例如创建、修改、安装、挂载和更新 Windows 映像文件(.wim 文件)。DISM 是一个强大的工具,能够进行许多系统管理任务,特别是与 Windows 映像文件和部署相关的任务。
在 Windows 上,DISM(Deployment Imaging Service and Management Tool)使用本机 Windows API 和 驱动程序接口 来执行操作,例如创建、修改、安装、挂载和更新 Windows 映像文件(.wim 文件)。DISM 是一个强大的工具,能够进行许多系统管理任务,特别是与 Windows 映像文件和部署相关的任务。
DISM 使用本机 Windows API 进行的操作
DISM 使用本机 Windows API 来与 Windows 操作系统交互,执行以下几项主要功能:
1. 映像文件管理
DISM 通过 Windows API 来管理 .wim 和 .esd 文件格式。这些格式是 Windows 操作系统的映像文件,DISM 可以通过以下方式进行管理:
- 挂载映像:DISM 可以将 Windows 映像文件(例如
.wim文件)挂载到文件系统中,使得用户能够像操作文件夹一样操作其中的文件。DISM 使用本机文件系统 API(如CreateFile,CreateDirectory,GetFileAttributes等)来实现这一功能。DISM(Deployment Imaging Service and Management Tool)在挂载 Windows 映像文件(例如
.wim文件)时,利用了本机的文件系统 API 来处理与文件系统相关的操作。通过这些文件系统 API,DISM 能够挂载映像、操作映像中的文件或目录,并执行诸如添加、删除、复制和修改文件等任务。以下是与文件系统相关的主要 Windows API 的清单及其功能说明:
1. CreateFile
- 功能:打开或创建一个文件或设备。
- 用途:在 DISM 中,
CreateFile用来打开映像文件,进行读写操作。 - 常用参数:
lpFileName:文件名或设备名。dwDesiredAccess:访问权限(如读/写权限)。dwShareMode:共享模式。dwCreationDisposition:指定文件创建方式。dwFlagsAndAttributes:文件属性和标志。
2. CreateDirectory
- 功能:创建新目录。
- 用途:在挂载过程中,DISM 可能需要创建新的目录来存放挂载映像中的内容。
- 常用参数:
lpPathName:目录的路径。
3. GetFileAttributes
- 功能:获取文件或目录的属性。
- 用途:DISM 使用此 API 检查映像文件或目录的属性,以便做出合适的操作(例如,检查文件是否是只读、是否是隐藏文件等)。
- 常用参数:
lpFileName:文件或目录的路径。
- 返回值:返回文件属性,通常是按位组合的标志,如
FILE_ATTRIBUTE_READONLY、FILE_ATTRIBUTE_DIRECTORY等。
4. SetFileAttributes
- 功能:设置文件或目录的属性。
- 用途:DISM 使用此 API 来更改文件或目录的属性,例如,设置文件为只读,或者设置隐藏属性。
- 常用参数:
lpFileName:文件或目录的路径。dwFileAttributes:要设置的属性。
5. DeleteFile
- 功能:删除一个文件。
- 用途:DISM 使用此 API 删除映像中的某些文件,或在挂载映像后删除不需要的文件。
- 常用参数:
lpFileName:要删除的文件路径。
- 返回值:成功返回非零值,失败返回零。
6. RemoveDirectory
- 功能:删除空目录。
- 用途:DISM 在卸载映像时,使用此 API 删除空目录。
- 常用参数:
lpPathName:目录路径。
7. CopyFile
- 功能:复制文件。
- 用途:DISM 使用此 API 将文件从一个位置复制到另一个位置。例如,它可能将文件从映像中复制到目标系统或从系统中复制到挂载的映像。
- 常用参数:
lpExistingFileName:源文件路径。lpNewFileName:目标文件路径。bFailIfExists:如果目标文件已存在,是否返回错误。
8. MoveFile
- 功能:移动文件或重命名文件。
- 用途:DISM 可以使用此 API 移动文件或更改文件名,可能在文件组织或管理过程中使用。
- 常用参数:
lpExistingFileName:源文件路径。lpNewFileName:目标文件路径。
9. FindFirstFile / FindNextFile
- 功能:搜索目录中的文件。
- 用途:DISM 使用这对 API 来搜索和枚举目录中的文件,通常用于读取映像内容。
- 常用参数:
lpFileName:目录和文件模式。
- 返回值:返回一个
WIN32_FIND_DATA结构体,包含文件信息。
10. FindClose
- 功能:关闭一个搜索句柄。
- 用途:在文件搜索完毕后,DISM 使用此 API 来释放与
FindFirstFile或FindNextFile调用相关联的资源。 - 常用参数:
hFindFile:搜索句柄。
11. GetFileSize
- 功能:获取文件大小。
- 用途:DISM 可能需要使用此 API 来获取映像文件的大小,以确定挂载的文件是否成功或检查文件的完整性。
- 常用参数:
hFile:文件句柄。lpFileSizeHigh:接收文件大小的高位值。
12. GetFileTime
- 功能:获取文件的时间戳。
- 用途:DISM 使用此 API 来检查文件的创建时间、最后访问时间和最后修改时间。
- 常用参数:
hFile:文件句柄。lpCreationTime:创建时间。lpLastAccessTime:最后访问时间。lpLastWriteTime:最后写入时间。
13. SetFileTime
- 功能:设置文件的时间戳。
- 用途:DISM 可以使用此 API 设置文件的时间戳,例如在执行某些操作后更新文件的修改时间。
- 常用参数:
hFile:文件句柄。lpCreationTime:创建时间。lpLastAccessTime:最后访问时间。lpLastWriteTime:最后写入时间。
14. LockFile
- 功能:锁定文件,以便防止其他进程访问。
- 用途:DISM 可以使用此 API 锁定文件,防止文件在处理过程中被其他进程修改或访问。
- 常用参数:
hFile:文件句柄。dwFileOffsetLow、dwFileOffsetHigh:文件偏移量。nNumberOfBytesToLockLow、nNumberOfBytesToLockHigh:要锁定的字节数。
15. UnlockFile
- 功能:解锁文件。
- 用途:DISM 使用此 API 解锁先前锁定的文件,使其他进程能够访问该文件。
- 常用参数:
hFile:文件句柄。dwFileOffsetLow、dwFileOffsetHigh:文件偏移量。nNumberOfBytesToLockLow、nNumberOfBytesToLockHigh:要解锁的字节数。
16. GetCurrentDirectory
- 功能:获取当前目录路径。
- 用途:DISM 可能使用此 API 来获取当前工作目录,便于后续文件操作。
- 常用参数:
nBufferLength:缓冲区大小。
- 返回值:返回当前目录路径。
在挂载 Windows 映像时,DISM 利用一系列本机文件系统 API 来管理文件和目录。这些 API 提供了文件的创建、读取、修改、删除、属性管理、目录操作等功能,确保映像可以正确挂载和管理。在实际使用中,DISM 可能会通过组合这些 API 来实现各种任务,从简单的文件操作到更复杂的映像管理操作。
- 更新映像:DISM 可以向映像文件添加或删除文件、应用程序或更新。通过 Windows API,它可以通过类似于
AddFile,DeleteFile的功能来对映像进行操作。在使用 DISM(Deployment Imaging Service and Management Tool)更新映像时,DISM 通过使用本机文件系统 API 来添加、删除文件,安装更新、应用程序或驱动程序。这些操作涉及到对文件和目录的管理、复制、删除、修改属性等。
以下是与 DISM 在操作映像文件时可能使用的一些关键本机文件系统 API 的完整清单:
1. CreateFile
- 功能:打开或创建文件。
- 用途:DISM 用此 API 来打开文件以便进行读取、写入或删除等操作。
- 常用参数:
lpFileName:文件名或路径。dwDesiredAccess:指定文件访问权限(如读取或写入)。dwCreationDisposition:创建文件的方式(如是否创建新文件)。
- 返回值:成功时返回文件句柄。
2. DeleteFile
- 功能:删除文件。
- 用途:DISM 使用此 API 删除映像中的不需要的文件。
- 常用参数:
lpFileName:要删除的文件路径。
- 返回值:成功时返回非零值,失败时返回零。
3. CopyFile
- 功能:复制文件。
- 用途:DISM 使用此 API 将文件从源路径复制到目标路径。通常用于将新文件添加到映像中。
- 常用参数:
lpExistingFileName:源文件路径。lpNewFileName:目标文件路径。bFailIfExists:如果目标文件已存在,是否返回错误。
4. MoveFile
- 功能:移动文件或重命名文件。
- 用途:DISM 使用此 API 将文件从一个目录移动到另一个目录或重命名文件。
- 常用参数:
lpExistingFileName:源文件路径。lpNewFileName:目标文件路径。
5. CreateDirectory
- 功能:创建新目录。
- 用途:DISM 使用此 API 在映像中创建新目录,以便添加或组织文件。
- 常用参数:
lpPathName:新目录的路径。
- 返回值:成功时返回非零值,失败时返回零。
6. RemoveDirectory
- 功能:删除空目录。
- 用途:DISM 使用此 API 删除不再需要的空目录。
- 常用参数:
lpPathName:要删除的目录路径。
- 返回值:成功时返回非零值,失败时返回零。
7. SetFileAttributes
- 功能:设置文件或目录的属性。
- 用途:DISM 使用此 API 来设置文件的属性,例如设置文件为只读或隐藏。
- 常用参数:
lpFileName:文件路径。dwFileAttributes:要设置的文件属性。
- 返回值:成功时返回非零值,失败时返回零。
8. GetFileAttributes
- 功能:获取文件或目录的属性。
- 用途:DISM 使用此 API 检查文件或目录的属性,如检查文件是否只读、是否隐藏等。
- 常用参数:
lpFileName:文件路径。
- 返回值:返回文件的属性,通常是按位组合的标志(如
FILE_ATTRIBUTE_READONLY、FILE_ATTRIBUTE_DIRECTORY等)。
9. FindFirstFile / FindNextFile
- 功能:查找目录中的文件。
- 用途:DISM 使用这对 API 来遍历目录中的文件,查找并列出映像中的文件。
- 常用参数:
lpFileName:指定搜索模式的路径(如*.txt)。
- 返回值:返回一个文件信息结构,包含文件的属性和其他信息。
10. FindClose
- 功能:关闭文件查找句柄。
- 用途:DISM 在完成文件查找后,使用此 API 释放资源。
- 常用参数:
hFindFile:文件查找句柄。
11. GetFileSize
- 功能:获取文件的大小。
- 用途:DISM 使用此 API 获取文件的大小,以帮助判断文件是否已经正确添加到映像中。
- 常用参数:
hFile:文件句柄。lpFileSizeHigh:接收文件大小的高位。
- 返回值:文件大小(低位)。
12. GetFileTime
- 功能:获取文件的时间戳(创建、访问、修改时间)。
- 用途:DISM 可以使用此 API 获取文件的创建时间、最后修改时间等信息。
- 常用参数:
hFile:文件句柄。lpCreationTime、lpLastAccessTime、lpLastWriteTime:时间结构,接收相应的时间信息。
- 返回值:无,返回通过结构体传递的时间。
13. SetFileTime
- 功能:设置文件的时间戳。
- 用途:DISM 可以更新文件的创建、访问或修改时间,通常用于映像文件的时间同步。
- 常用参数:
hFile:文件句柄。lpCreationTime、lpLastAccessTime、lpLastWriteTime:时间结构,指定要设置的时间。
14. LockFile
- 功能:锁定文件,防止其他进程访问。
- 用途:DISM 使用此 API 锁定文件,防止其他进程在进行文件操作时修改文件内容。
- 常用参数:
hFile:文件句柄。dwFileOffsetLow、dwFileOffsetHigh:文件偏移量。nNumberOfBytesToLockLow、nNumberOfBytesToLockHigh:要锁定的字节数。
15. UnlockFile
- 功能:解锁文件。
- 用途:DISM 使用此 API 解除文件的锁定,使其他进程可以访问该文件。
- 常用参数:
hFile:文件句柄。dwFileOffsetLow、dwFileOffsetHigh:文件偏移量。nNumberOfBytesToLockLow、nNumberOfBytesToLockHigh:要解锁的字节数。
16. GetCurrentDirectory
- 功能:获取当前工作目录。
- 用途:DISM 使用此 API 获取当前工作目录,以便进行相对路径的文件操作。
- 常用参数:
nBufferLength:缓冲区大小。
- 返回值:当前工作目录的路径。
17. RemoveDirectoryEx
- 功能:删除目录,并且可以递归删除其中的文件。
- 用途:DISM 在卸载映像时,可以通过此 API 删除整个目录及其中的文件。
- 常用参数:
lpPathName:要删除的目录路径。
18. SetEndOfFile
- 功能:设置文件的结尾。
- 用途:DISM 在操作文件时,如果需要截断文件或设置文件大小的结尾,可以使用此 API。
- 常用参数:
hFile:文件句柄。
DISM 通过这些本机文件系统 API 来执行文件操作,如添加、删除、修改映像中的文件、更新文件的属性和时间戳等。在实际操作过程中,DISM 会通过组合这些 API 来进行诸如挂载映像、更新映像、添加补丁等复杂任务,从而确保映像的完整性和有效性。
- 卸载映像:DISM 使用
UnmountAPI 来卸载映像并确保所有更改都已保存。在卸载映像的过程中,DISM(Deployment Imaging Service and Management Tool)确实使用了 Unmount API 来卸载映像并确保所有更改都已保存。在这个过程中,DISM 主要涉及文件系统操作、资源管理以及映像的最终更新与验证。除了 Unmount API 外,DISM 还会利用一些本机文件系统 API 来确保映像的正确卸载。下面我将列出和卸载映像相关的本机文件系统 API,并说明它们在这个过程中如何使用。
1. FlushFileBuffers
- 功能:刷新文件系统缓存,将内存中的数据写入磁盘。
- 用途:在卸载映像之前,DISM 使用此 API 确保所有文件系统的更改(如文件修改、删除等)已写入磁盘,而不是留在内存中。它有助于确保映像中的所有更改被持久化。
- 常用参数:
hFile:文件句柄,指向需要刷新的文件。
- 返回值:成功时返回非零值,失败时返回零。
2. UnmountWimImage
- 功能:卸载 WIM(Windows Imaging Format)映像。
- 用途:DISM 使用此 API 来卸载已经挂载的 WIM 映像。卸载过程中,会将所有已做的更改应用到 WIM 映像文件中,同时会释放映像占用的所有资源。
- 常用参数:
lpImagePath:映像文件路径。dwFlags:控制卸载行为的标志(如是否提交更改、是否强制卸载等)。
3. DeleteFile
- 功能:删除文件。
- 用途:在卸载映像时,如果存在临时文件或挂载的映像文件,DISM 使用此 API 来删除不再需要的文件。
- 常用参数:
lpFileName:文件路径。
- 返回值:成功时返回非零值,失败时返回零。
4. RemoveDirectory
- 功能:删除空目录。
- 用途:DISM 在卸载映像时,通常会删除与映像挂载过程中创建的临时目录,以清理环境。
- 常用参数:
lpPathName:要删除的目录路径。
- 返回值:成功时返回非零值,失败时返回零。
5. CloseHandle
- 功能:关闭打开的文件句柄。
- 用途:在卸载映像时,DISM 需要释放占用的文件句柄,使用此 API 来关闭句柄。
- 常用参数:
hObject:文件句柄或资源句柄。
- 返回值:成功时返回非零值,失败时返回零。
6. SetFileAttributes
- 功能:设置文件的属性。
- 用途:在卸载映像过程中,DISM 可能会修改文件属性(如只读、隐藏等),确保映像的正确性或清理不需要的文件。
- 常用参数:
lpFileName:文件路径。dwFileAttributes:要设置的文件属性。
- 返回值:成功时返回非零值,失败时返回零。
7. GetFileAttributes
- 功能:获取文件的属性。
- 用途:DISM 可以在卸载映像时,使用此 API 检查文件属性,判断是否需要进一步的处理(如删除、修改等)。
- 常用参数:
lpFileName:文件路径。
- 返回值:返回文件属性,通常是按位组合的标志(如
FILE_ATTRIBUTE_READONLY、FILE_ATTRIBUTE_DIRECTORY等)。
8. CreateFile
- 功能:打开或创建文件。
- 用途:在卸载过程中,DISM 可能需要打开文件以保存更改或处理挂载映像的临时文件。
- 常用参数:
lpFileName:文件名或路径。dwDesiredAccess:文件访问权限(如读取或写入)。dwCreationDisposition:创建文件的方式。
- 返回值:成功时返回文件句柄,失败时返回
INVALID_HANDLE_VALUE。
9. LockFile
- 功能:锁定文件,防止其他进程访问。
- 用途:DISM 在卸载映像时,可能会临时锁定文件,防止其他进程修改映像文件。
- 常用参数:
hFile:文件句柄。dwFileOffsetLow、dwFileOffsetHigh:文件偏移量。nNumberOfBytesToLockLow、nNumberOfBytesToLockHigh:要锁定的字节数。
10. UnlockFile
- 功能:解锁文件。
- 用途:卸载映像时,DISM 在完成所有操作后会解锁文件,释放锁定的资源,确保其他进程可以访问文件。
- 常用参数:
hFile:文件句柄。dwFileOffsetLow、dwFileOffsetHigh:文件偏移量。nNumberOfBytesToLockLow、nNumberOfBytesToLockHigh:要解锁的字节数。
11. GetDiskFreeSpace
- 功能:获取磁盘上的可用空间。
- 用途:在卸载映像之前,DISM 可能会检查目标磁盘的可用空间,以确定是否有足够的空间进行卸载和保存更改。
- 常用参数:
lpRootPathName:驱动器路径(例如C:\)。lpSectorsPerCluster、lpBytesPerSector、lpNumberOfFreeClusters、lpTotalNumberOfClusters:返回磁盘空间的详细信息。
- 返回值:成功时返回非零值,失败时返回零。
12. MoveFile
- 功能:移动文件或重命名文件。
- 用途:如果需要,DISM 可能会移动临时文件或重命名文件,以便正确卸载映像。
- 常用参数:
lpExistingFileName:源文件路径。lpNewFileName:目标文件路径。
13. FindFirstFile / FindNextFile
- 功能:查找目录中的文件。
- 用途:DISM 使用这对 API 来遍历卸载过程中涉及的目录中的文件,确保文件清理和资源释放。
- 常用参数:
lpFileName:指定搜索模式的路径(如*.dll)。
- 返回值:返回文件信息结构,包含文件的属性和其他信息。
14. FindClose
- 功能:关闭文件查找句柄。
- 用途:卸载映像时,DISM 在完成文件查找后,使用此 API 释放资源。
- 常用参数:
hFindFile:文件查找句柄。
15. SetEndOfFile
- 功能:设置文件的结尾。
- 用途:DISM 在卸载映像时,可以使用此 API 调整文件大小或将文件截断为特定大小。
- 常用参数:
hFile:文件句柄。
16. SetFileTime
- 功能:设置文件的时间戳。
- 用途:卸载映像时,DISM 可能会设置文件的时间戳,以便反映最新的修改。
- 常用参数:
hFile:文件句柄。lpCreationTime、lpLastAccessTime、lpLastWriteTime:要设置的时间。
DISM 在卸载映像时,涉及的本机文件系统 API 主要是用于文件操作(如创建、删除、复制文件)、目录操作、文件句柄管理以及文件锁定等操作。这些 API 的结合使用确保了映像卸载过程中数据的一致性、正确性以及文件资源的释放。通过使用
UnmountAPI,DISM 可以卸载挂载的映像并确保所有更改都被正确保存,同时释放所有占用的系统资源。
2. 驱动程序和包的管理
DISM 使用本机 API 来处理驱动程序和包的添加、删除和更新操作。
- 添加驱动程序:通过使用 Windows 驱动程序接口(如
SetupAPI),DISM 可以将新的硬件驱动程序添加到 Windows 映像中。DISM 会利用这些 API 来扫描驱动程序并将它们集成到映像中。当使用 DISM (Deployment Imaging Service and Management Tool) 将硬件驱动程序添加到 Windows 映像中时,它会通过调用 Windows 驱动程序接口(如 SetupAPI)以及底层的文件系统 API 来处理驱动程序文件并将其集成到目标映像中。通过这些本机文件系统 API,DISM 可以操作文件、目录以及磁盘上的其他资源,确保驱动程序能够正确集成。
添加驱动程序的步骤概述:
- 扫描和选择驱动程序:DISM 会扫描指定的目录或驱动程序包,使用 SetupAPI 接口来识别驱动程序文件。
- 复制驱动程序文件:DISM 使用底层的文件系统 API 来将驱动程序文件从源位置复制到 Windows 映像中的正确目录。
- 注册驱动程序:DISM 会通过注册或更新 Windows 注册表条目来确保驱动程序被正确加载。
- 集成驱动程序:DISM 会将驱动程序信息添加到映像文件中,以确保在后续的操作系统启动过程中驱动程序能够被加载。
以下是与 DISM 在集成驱动程序时相关的本机文件系统 API 完整清单:
1. SetupAPI(用于驱动程序安装)
- 功能:SetupAPI 提供了驱动程序的安装、扫描、删除和管理功能。DISM 使用 SetupAPI 来集成驱动程序。
- 常用函数:
SetupDiGetClassDevs:获取与设备类相关的设备信息集合。SetupDiGetDeviceInfoListDetail:获取设备信息集合的详细信息。SetupDiEnumDeviceInfo:枚举设备信息集合中的设备。SetupDiInstallDevice:安装设备驱动程序。SetupCopyOEMInf:将 OEM 驱动程序信息复制到目标位置。
2. CopyFile
- 功能:将一个文件从源路径复制到目标路径。
- 用途:DISM 使用此 API 将驱动程序文件从驱动程序包或指定目录复制到目标 Windows 映像的相应目录中(如
C:\Windows\System32\DriverStore)。 - 常用参数:
lpExistingFileName:源文件路径。lpNewFileName:目标文件路径。
- 返回值:成功时返回非零值,失败时返回零。
3. MoveFile
- 功能:移动文件或重命名文件。
- 用途:DISM 可以使用此 API 来移动驱动程序文件到合适的目录,或者在集成过程中重命名文件。
- 常用参数:
lpExistingFileName:源文件路径。lpNewFileName:目标文件路径。
4. CreateDirectory
- 功能:创建一个新的目录。
- 用途:在驱动程序集成过程中,DISM 可能需要为驱动程序创建新的目录,以便存放驱动程序文件。
- 常用参数:
lpPathName:目录路径。
- 返回值:成功时返回非零值,失败时返回零。
5. SetFileAttributes
- 功能:设置文件的属性。
- 用途:DISM 使用此 API 来设置驱动程序文件的属性(如只读、系统文件等),以确保驱动程序在集成过程中的正确性。
- 常用参数:
lpFileName:文件路径。dwFileAttributes:文件属性。
- 返回值:成功时返回非零值,失败时返回零。
6. GetFileAttributes
- 功能:获取文件的属性。
- 用途:DISM 可以在集成过程中,使用此 API 检查驱动程序文件的属性,决定是否需要进行处理(例如,检查文件是否已存在,是否需要更新等)。
- 常用参数:
lpFileName:文件路径。
- 返回值:返回文件属性,通常是按位组合的标志(如
FILE_ATTRIBUTE_READONLY、FILE_ATTRIBUTE_SYSTEM等)。
7. CreateFile
- 功能:打开或创建文件。
- 用途:DISM 使用此 API 打开驱动程序文件进行读取、写入或其他操作。例如,DISM 可能会修改驱动程序配置文件,或者将驱动程序写入映像。
- 常用参数:
lpFileName:文件路径。dwDesiredAccess:文件访问权限(如读取或写入)。dwCreationDisposition:创建文件的方式。
- 返回值:成功时返回文件句柄,失败时返回
INVALID_HANDLE_VALUE。
8. FlushFileBuffers
- 功能:刷新文件缓存,将内存中的数据写入磁盘。
- 用途:DISM 使用此 API 来确保驱动程序文件的所有更改(如写入配置或更新信息)已被永久保存到磁盘。
- 常用参数:
hFile:文件句柄。
- 返回值:成功时返回非零值,失败时返回零。
9. DeleteFile
- 功能:删除文件。
- 用途:DISM 在清理过程中,可能会删除多余的驱动程序文件,或者在安装完成后移除临时文件。
- 常用参数:
lpFileName:文件路径。
- 返回值:成功时返回非零值,失败时返回零。
10. RemoveDirectory
- 功能:删除空目录。
- 用途:DISM 在集成完成后,可能会删除与驱动程序集成过程中创建的临时目录。
- 常用参数:
lpPathName:目录路径。
- 返回值:成功时返回非零值,失败时返回零。
11. GetDiskFreeSpace
- 功能:获取磁盘上的可用空间。
- 用途:DISM 使用此 API 来检查磁盘的可用空间,确保在将驱动程序文件集成到 Windows 映像时,目标磁盘有足够的空间。
- 常用参数:
lpRootPathName:驱动器路径(例如C:\)。lpSectorsPerCluster、lpBytesPerSector、lpNumberOfFreeClusters、lpTotalNumberOfClusters:返回磁盘空间的详细信息。
- 返回值:成功时返回非零值,失败时返回零。
12. FindFirstFile / FindNextFile
- 功能:查找目录中的文件。
- 用途:DISM 在集成驱动程序时,可能会遍历目录,查找需要集成的驱动程序文件。
- 常用参数:
lpFileName:指定搜索模式的路径(如*.inf、*.sys)。
- 返回值:返回文件信息结构,包含文件的属性和其他信息。
13. FindClose
- 功能:关闭文件查找句柄。
- 用途:DISM 在完成文件查找操作后,使用此 API 释放文件查找句柄。
- 常用参数:
hFindFile:文件查找句柄。
14. SetEndOfFile
- 功能:设置文件的结尾。
- 用途:DISM 使用此 API 来修改文件大小,或者将驱动程序配置文件的结尾调整到特定位置。
- 常用参数:
hFile:文件句柄。
在将硬件驱动程序添加到 Windows 映像的过程中,DISM 通过多个本机文件系统 API 完成文件的扫描、复制、注册、删除等操作。SetupAPI 是主要的驱动程序安装和管理接口,而其他文件系统 API 则处理驱动程序文件的操作,确保驱动程序能够正确集成到目标映像中。通过这些本机文件系统 API,DISM 可以实现驱动程序的高效集成与管理。
- 安装更新包:DISM 也可以使用 Windows 更新 API(如
WUAAPI)来安装和更新 Windows 更新包(例如.cab文件)。它能够通过调用相关的 API 实现将系统更新(如修复程序、服务包等)应用到映像中。当使用 DISM 安装 Windows 更新包(如
.cab文件)时,它能够通过调用 Windows 更新 API(如 WUAAPI)和其他本机文件系统 API 来实现更新包的安装和集成。Windows 更新 API 允许 DISM 在 Windows 映像中安装、卸载、查询和管理更新。DISM 还可以通过本机文件系统 API 操作更新包文件,并确保更新被正确集成到目标映像中。主要的 Windows 更新 API 和本机文件系统 API 清单:
以下是 DISM 安装更新包时,涉及的 Windows 更新 API 和本机文件系统 API 详细清单。
1. Windows 更新 API(WUAAPI)
Windows 更新 API(WUAAPI)是安装和管理更新的关键工具。DISM 使用这些 API 来下载、安装和查询更新包。
关键 API 函数:
- IUpdateSession
- 功能:表示 Windows 更新会话,允许用户操作更新。
- 常用方法:
CreateUpdateSearcher():创建一个更新搜索器对象,用于搜索可用更新。CreateUpdateInstaller():创建一个更新安装器对象,用于安装下载的更新。
- IUpdateSearcher
- 功能:用于搜索更新。
- 常用方法:
Search():执行更新搜索,返回符合条件的更新列表。
- IUpdateInstaller
- 功能:用于安装更新。
- 常用方法:
Install():安装更新。Uninstall():卸载已安装的更新。
- IUpdate
- 功能:表示单个更新。
- 常用属性:
Title:获取更新的标题。Description:获取更新的描述。IsDownloaded:检查更新是否已下载。
- IUpdateCollection
- 功能:表示一组更新。
- 常用方法:
Count:获取更新集合中的更新数。Item():访问集合中的特定更新。
2. 本机文件系统 API
在处理更新包时,DISM 还通过调用一些本机文件系统 API 来管理更新包文件,确保文件的正确复制、安装和验证。
关键 API 函数:
-
CopyFile
- 功能:将文件从源路径复制到目标路径。
- 用途:DISM 使用此 API 将
.cab更新包复制到目标 Windows 映像的相关目录中。 - 常用参数:
lpExistingFileName:源文件路径。lpNewFileName:目标文件路径。
- 返回值:成功时返回非零值,失败时返回零。
-
MoveFile
- 功能:将文件从一个位置移动到另一个位置。
- 用途:DISM 可以通过此 API 将临时文件移动到最终目标路径,或者进行重命名操作。
- 常用参数:
lpExistingFileName:源文件路径。lpNewFileName:目标文件路径。
-
CreateDirectory
- 功能:创建一个新的目录。
- 用途:DISM 在将更新包集成到 Windows 映像时,可能需要创建新的目录来存放更新文件。
- 常用参数:
lpPathName:目录路径。
- 返回值:成功时返回非零值,失败时返回零。
-
DeleteFile
- 功能:删除指定的文件。
- 用途:DISM 在更新包集成过程中,可能会删除临时文件或多余的文件。
- 常用参数:
lpFileName:文件路径。
- 返回值:成功时返回非零值,失败时返回零。
-
SetFileAttributes
- 功能:设置文件的属性。
- 用途:DISM 使用此 API 来设置更新包文件的属性,确保文件在集成过程中具有正确的权限和访问控制。
- 常用参数:
lpFileName:文件路径。dwFileAttributes:文件属性(如只读、隐藏等)。
- 返回值:成功时返回非零值,失败时返回零。
-
GetFileAttributes
- 功能:获取文件的属性。
- 用途:DISM 通过此 API 检查文件的属性,以确定是否需要操作该文件(例如检查文件是否已存在或是否需要更新)。
- 常用参数:
lpFileName:文件路径。
- 返回值:返回文件属性,通常为按位组合的标志(如
FILE_ATTRIBUTE_READONLY等)。
-
FindFirstFile / FindNextFile
- 功能:查找目录中的文件。
- 用途:DISM 在集成更新包时,可能需要搜索目录中的文件,寻找需要集成的
.cab文件。 - 常用参数:
lpFileName:指定搜索模式的路径(如*.cab)。
- 返回值:返回文件信息结构,包含文件的属性等信息。
-
FindClose
- 功能:关闭文件查找句柄。
- 用途:DISM 在完成文件查找操作后,使用此 API 释放文件查找句柄。
- 常用参数:
hFindFile:文件查找句柄。
-
CreateFile
- 功能:打开或创建文件。
- 用途:DISM 使用此 API 来打开
.cab文件或其他更新包文件,读取其内容或执行更新操作。 - 常用参数:
lpFileName:文件路径。dwDesiredAccess:文件访问权限(如读取或写入)。
- 返回值:成功时返回文件句柄,失败时返回
INVALID_HANDLE_VALUE。
-
SetEndOfFile
- 功能:设置文件的结尾。
- 用途:DISM 在更新过程中,可能需要将文件指针移动到文件的结尾,确保更新包完整。
- 常用参数:
hFile:文件句柄。
3. 其他重要功能
- CAB 文件操作:DISM 通过调用 Windows 更新 API 或者文件系统 API 来处理
.cab文件。它通过这些 API 解压和集成更新包文件。DISM 在安装.cab更新包时,通常涉及以下操作:- 解压
.cab文件到临时目录。 - 使用 Windows 更新 API 将更新包安装到目标映像中。
- 删除临时目录中的文件。
- 解压
DISM 使用 Windows 更新 API(WUAAPI) 作为核心工具来管理和安装更新包(如
.cab文件)。这些 API 提供了创建会话、搜索更新、安装更新、卸载更新等功能。而在操作文件时,DISM 还依赖于本机文件系统 API 来处理文件的复制、移动、删除、查找、属性设置等操作,从而确保更新包能正确集成到目标 Windows 映像中。 - IUpdateSession
3. 映像文件的修复
DISM 还能够修复现有的 Windows 映像。它使用 Windows 系统文件 API(如 Sfc、File System 等)来扫描和修复 Windows 映像中的系统文件。通过访问 Windows API,DISM 可以执行以下任务:
- 扫描损坏:DISM 使用 API 来检查 Windows 映像中的文件是否有损坏,确保操作系统能够顺利启动。
DISM(Deployment Imaging Service and Management Tool)是一个用于管理 Windows 映像的命令行工具,它通过使用不同的 API 来检查和修复 Windows 操作系统映像中的文件系统损坏问题。这些 API 主要集中在系统映像的健康检查、修复和管理。以下是一些与文件系统相关的本机 API 和工具,它们可以帮助执行检查和修复任务。
DISM 使用的相关本机文件系统 API
-
Windows Imaging API (WIMGAPI):
- 这是 DISM 使用的主要 API,用于创建、修改、管理和应用 Windows 映像(.wim 文件)。
- WIMGAPI 支持映像的挂载、操作以及检查系统映像的完整性。
- 常用功能包括通过
DISM命令访问和修改 .wim 文件中的内容。
-
CheckSUR (System Update Readiness Tool):
- CheckSUR 是一个工具,可以检查 Windows 系统中的损坏文件,并在发现问题时提供修复功能。
- 它使用 API 来识别损坏的文件系统、注册表项和其他关键组件,通常用于修复更新错误。
-
文件系统 API:
- CreateFile: 用于打开文件并访问文件系统。
- ReadFile: 用于读取文件内容。
- WriteFile: 用于向文件写入内容。
- CloseHandle: 关闭文件或设备句柄,完成文件系统操作。
- 这些 API 允许应用程序与文件系统交互,在操作系统级别进行文件操作。
-
Volume Shadow Copy API:
- 这些 API 允许创建磁盘的快照副本,这对于创建系统映像备份和还原非常重要。
- DISM 可能会使用这些 API 来确保在修复过程中系统文件和映像不会受到影响。
-
Chkdsk (Check Disk):
- 虽然
chkdsk命令是一个独立工具,但它依赖于底层的文件系统 API 来执行磁盘错误检查。 DISM会间接依赖此类工具来验证硬盘上的文件系统结构是否完整。
- 虽然
-
SFC (System File Checker) API:
- SFC 工具通过特定的文件系统 API 执行系统文件扫描,检查 Windows 核心文件是否损坏或丢失。
DISM可以调用 SFC API 来修复系统文件,或通过 SFC 与其他修复工具集成。
-
File System Filter Driver API:
- 这些驱动程序通过内核模式操作文件系统,提供低级别的操作,如文件访问、权限控制和文件完整性检查。
- 在使用 DISM 执行系统文件检查时,这些底层驱动程序可以帮助监控文件系统的健康状况。
DISM 中相关文件系统操作的核心步骤
-
扫描 Windows 映像中的损坏文件:
- DISM 会通过检查系统映像中所需的关键文件是否完整来判断系统映像的健康状况。如果文件丢失或损坏,DISM 会标记这些问题。
-
修复映像中的问题:
- 在识别损坏的文件后,DISM 会尝试通过内置的 API 来修复文件。如果映像无法直接修复,DISM 可以使用其他组件如 Windows 更新和资源修复工具来恢复系统文件。
-
健康检查和映像验证:
- DISM 使用命令(如
DISM /Online /Cleanup-Image /RestoreHealth)检查操作系统映像的健康状况并修复任何发现的问题。
- DISM 使用命令(如
DISM 工具通过调用各种底层 API 来管理和修复 Windows 映像中的文件系统和系统文件。在执行修复过程中,它主要依赖于 Windows Imaging API、文件系统 API、Volume Shadow Copy API 以及与 SFC 和 chkdsk 相关的工具和命令,确保操作系统能够顺利启动并正常运行。
-
- 修复文件:如果发现损坏或丢失的系统文件,DISM 可以通过调用本机修复 API 来恢复文件。例如,
Sfc /scannow也使用类似的方法来修复 Windows 系统中的文件。在修复 Windows 系统文件时,
DISM和SFC /scannow都依赖于一系列本机 API 来检测、修复和恢复文件系统中的损坏。以下是一些关键的本机文件系统 API 的详细清单和它们的作用。1. Windows Imaging API (WIMGAPI)
- 作用: 用于管理和操作 Windows 映像文件(.wim 文件)。它提供了与 Windows 映像相关的所有基本操作,包括挂载映像、修改文件和文件夹、检查映像的完整性等。
- 函数/方法:
WIMOpen: 打开一个映像文件。WIMMount: 将映像挂载为一个虚拟磁盘。WIMClose: 关闭映像文件。WIMApply: 将映像中的内容应用到目标系统。
2. CheckSUR API (System Update Readiness Tool)
- 作用: 用于扫描和修复损坏的 Windows 更新文件、注册表项和系统文件。它是用于处理 Windows 更新问题的主要工具,并可以通过 API 访问以进行文件恢复。
- 主要功能: 自动下载并修复系统映像中的更新错误和损坏的文件。
3. 文件系统 API
这些是 Windows 操作系统用来处理文件和磁盘的基本 API,包括文件操作、目录操作以及文件系统的管理。它们允许操作系统和应用程序与磁盘交互。
- 常见函数:
- CreateFile: 用于打开文件或设备,返回一个句柄。
- ReadFile: 从文件中读取数据。
- WriteFile: 向文件写入数据。
- SetFilePointer: 设置文件指针,控制文件访问位置。
- CloseHandle: 关闭文件或设备句柄。
- GetFileInformationByHandle: 获取文件的信息(如大小、创建时间等)。
- DeviceIoControl: 向设备驱动程序发送控制请求,可以用于磁盘、卷等设备的控制和查询。
4. Volume Shadow Copy API
- 作用: 允许创建磁盘的快照副本,确保在修复过程中不会影响系统的正常操作。这对于创建系统映像备份和还原非常重要。
- 常见函数:
- CreateVolumeShadowCopy: 创建卷的快照。
- GetShadowCopy: 获取现有快照。
- DeleteShadowCopy: 删除现有的卷快照。
5. System File Checker (SFC) API
- 作用:
SFC工具通过扫描系统文件来检查并修复损坏的 Windows 核心文件。SFC利用本机 API 执行文件扫描,检测并替换缺失或损坏的系统文件。 - 常见函数:
SfcScanFile: 执行文件扫描,检测是否存在损坏的文件。SfcRestore: 恢复文件到正确的版本,替换损坏的文件。- SfcGetFileInfo: 获取特定文件的完整性信息。
6. Chkdsk (Check Disk) API
- 作用:
chkdsk是检查磁盘完整性和修复磁盘上的文件系统错误的工具,尽管chkdsk是一个独立的命令行工具,但它依赖底层的文件系统 API 来检查和修复磁盘上的逻辑错误。 - 主要功能:
- 检查磁盘上是否有坏道。
- 修复文件系统错误。
7. File System Filter Drivers API
- 作用: 这些驱动程序在文件系统和应用程序之间提供过滤层,通常用于磁盘操作时提供额外的功能,如文件保护、病毒扫描或数据加密等。
- 常见功能:
- 通过过滤驱动程序检查文件读写请求。
- 在文件访问时执行实时保护、备份或恢复操作。
8. Backup and Restore API (VSS - Volume Shadow Service)
- 作用: 与文件系统快照创建相关的 API,用于创建文件的备份副本,并在数据丢失或损坏时进行恢复。它是确保系统文件的恢复和安全备份的关键部分。
- 常见函数:
- VssCreateSnapshot: 创建一个卷的快照。
- VssGetSnapshot: 获取现有快照信息。
- VssDeleteSnapshot: 删除快照副本。
9. Registry API
- 作用: 注册表是 Windows 系统的核心组成部分,存储着系统和应用程序的配置信息。DISM 和 SFC 在执行修复时可能需要修改注册表项,以恢复正确的文件路径、服务或驱动程序信息。
- 常见函数:
- RegOpenKeyEx: 打开注册表键。
- RegQueryValueEx: 查询注册表值。
- RegSetValueEx: 设置注册表值。
10. Windows Management Instrumentation (WMI) API
- 作用: 允许应用程序和脚本管理和监控 Windows 操作系统的硬件和软件资源,特别是在执行系统修复时,WMI API 可以提供关于操作系统健康状况的详细信息。
- 常见函数:
IWbemServices::ExecQuery: 执行查询以获取关于系统资源或硬件的详细信息。IWbemServices::PutInstance: 向系统中添加或更新资源实例。
11. Disk Management API
- 作用: 用于管理磁盘、卷和分区。虽然这些 API 主要用于硬盘分区的管理,但在修复系统文件时,操作系统可能会重新分配磁盘空间,或检查磁盘是否有损坏的扇区。
- 常见函数:
- CreatePartition: 创建分区。
- DeletePartition: 删除分区。
- ExtendVolume: 扩展卷。
DISM和SFC /scannow在修复 Windows 系统时会广泛使用上述本机文件系统 API 来执行文件扫描、修复损坏的系统文件、备份恢复文件、以及管理文件系统和磁盘。每个 API 都提供特定的功能,帮助操作系统和应用程序有效地识别、修复和恢复受损的文件。
4. Windows 更新管理
DISM 还能够使用 Windows 更新 API 来管理系统更新。它通过本机 API 来确保 Windows 映像包含最新的服务包、更新和修复补丁。这包括:
- 检查更新:DISM 可以检查 Windows 更新服务,并使用相关的 API 查询和安装最新的安全更新和功能更新。
DISM(Deployment Imaging Service and Management Tool)是 Windows 系统中的一个强大的工具,它用于管理 Windows 映像以及执行系统文件修复和更新。除了修复系统文件,它还可以用于检查和安装 Windows 更新。为了实现这些功能,DISM 依赖于多个本机文件系统 API 来访问和操作 Windows 更新服务、系统映像以及文件系统等。
DISM 检查和安装更新的核心 API
DISM 在执行检查和安装更新时,主要使用以下几类本机 API:
1. Windows Update API
- 作用: 这些 API 用于与 Windows 更新服务进行交互,检查、下载、安装和管理系统更新。
- 主要功能:
- 检查更新:通过查询 Windows 更新服务,DISM 能够确定是否有可用的更新。
- 安装更新:通过 API 下载并安装特定的更新包(如安全更新、驱动程序更新、功能更新等)。
- 常见函数:
WUApiLib::IUpdateSession::CreateUpdateSearcher:创建更新搜索器,用于查询系统更新。WUApiLib::IUpdateSearcher::Search:执行更新搜索,返回可用的更新列表。WUApiLib::IUpdateInstaller::Install:安装已下载的更新。WUApiLib::IUpdate::AcceptEula:接受更新的许可协议。
2. Windows Imaging API (WIMGAPI)
- 作用: 该 API 用于管理和操作 Windows 映像文件(.wim 文件),包括挂载、修改、应用和还原映像。
- 在 DISM 中的使用:DISM 使用 WIMGAPI 来挂载映像,检查和应用更新,并恢复受损的系统文件。
- 常见函数:
WIMOpen:打开 Windows 映像文件。WIMMount:挂载映像以进行操作。WIMApply:应用更新或修复。WIMClose:关闭映像文件。
3. Windows Management Instrumentation (WMI) API
- 作用: WMI 提供了对 Windows 系统信息、配置和硬件的访问,DISM 可以通过 WMI 来查询系统信息、检查系统健康状况、获取更新状态等。
- 常见功能:
- 获取硬件和系统配置信息,判断是否符合安装更新的要求。
- 获取系统更新的状态,查看哪些更新已安装,哪些更新待安装。
- 常见函数:
IWbemServices::ExecQuery:执行 WMI 查询,检索系统信息(包括更新状态)。IWbemServices::PutInstance:修改系统资源的状态(如安装更新)。
4. Windows Update Agent (WUA) API
- 作用: 这是用于管理 Windows 更新过程的 API,DISM 可以通过该 API 查询和安装 Windows 更新。
- 常见功能:
- 查询更新:DISM 使用该 API 查询 Windows 更新服务器,查找可用的更新。
- 安装更新:通过该 API 安装已下载的更新。
- 常见函数:
IUpdateSession::CreateUpdateSearcher:创建一个更新搜索器。IUpdateSearcher::Search:执行更新搜索,列出所有待处理更新。IUpdateInstaller::Install:执行更新的安装过程。
5. Windows Update Service (wuauserv)
- 作用: Windows 更新服务(wuauserv)提供了一个接口来管理更新下载和安装。DISM 通过该服务控制更新的安装过程。
- 主要功能:
- 启动、停止 Windows 更新服务。
- 检查更新服务的状态。
- 常见操作:
- 启动更新服务。
- 停止更新服务。
6. Microsoft Update Catalog API
- 作用: 允许系统直接访问 Microsoft 更新目录,以查询和下载更新程序包。此 API 在 DISM 安装离线更新时尤其重要。
- 常见函数:
MUCDownload: 下载更新包。MUCInstall: 安装下载的更新。
7. System File Checker (SFC) API
- 作用: SFC 工具检查 Windows 系统文件的完整性,并修复缺失或损坏的文件。在 DISM 执行修复时,SFC 会与 DISM 一起工作,扫描并修复操作系统文件。
- 常见函数:
SfcScanFile: 扫描并验证文件是否损坏。SfcRestore: 恢复文件到正确的版本。
8. Component Store API (CBS)
- 作用: 这些 API 用于访问和管理组件存储(Windows 的核心文件和服务的数据库)。DISM 通过 CBS API 管理组件的安装、卸载、查询等。
- 常见函数:
CBS_Query: 查询安装的组件和包。CBS_InstallPackage: 安装 Windows 更新包或服务包。CBS_Apply: 应用更新到系统映像。
9. Volume Shadow Copy API
- 作用: 用于创建磁盘或分区的快照副本,确保在安装更新或修复文件时不会影响正在运行的系统。通过此 API,DISM 可以在安装更新前创建系统快照,确保系统稳定性。
- 常见函数:
CreateVolumeShadowCopy: 创建卷的快照。GetShadowCopy: 获取现有快照的信息。
10. Registry API
- 作用: 用于访问和修改 Windows 注册表,DISM 可以通过这些 API 更新注册表项,以确保安装的更新能够正确注册和生效。
- 常见函数:
RegOpenKeyEx: 打开注册表键。RegQueryValueEx: 查询注册表项的值。RegSetValueEx: 设置注册表项的值。
DISM 使用多种本机文件系统和服务 API 来执行检查、下载、安装和修复更新。这些 API 包括 Windows Update API、WMI、WUA、系统文件检查工具(SFC)、Windows Imaging API 等,它们共同作用,以确保更新过程的顺利进行,并且可以修复系统文件、安装功能更新和安全补丁。DISM 工具通过这些底层 API 的协作,提供了完整的更新管理和修复机制。
- 集成更新:DISM 可以将下载的 Windows 更新集成到离线映像中,使得该映像在安装时已经包含最新的更新和修复程序。
当使用 DISM(Deployment Imaging Service and Management Tool)将下载的 Windows 更新集成到离线映像中时,DISM 会通过一系列本机文件系统 API 与 Windows 映像和组件存储进行交互,确保更新被成功集成到目标映像中。通过这些本机 API,DISM 能够操作系统文件、更新映像、修复损坏的文件、安装更新和驱动程序等。
在集成更新时,DISM 主要使用以下本机文件系统 API。下面是与集成更新相关的 API 完整清单:
1. Windows Imaging API (WIMGAPI)
- 作用: 这些 API 用于管理 Windows 映像文件(.wim 文件),包括挂载、修改和应用映像。通过这些 API,DISM 可以将更新集成到离线映像文件中。
- 常见函数:
- WIMOpen:打开映像文件,准备进行修改或挂载。
- WIMMount:挂载离线映像文件,允许对其进行更改。
- WIMApply:将更新集成到挂载的映像中。
- WIMUnmount:卸载映像文件,并保存对映像的更改。
- WIMClose:关闭映像文件,确保文件在修改后被正确保存。
2. Component Store API (CBS)
- 作用: CBS API 允许 DISM 管理和操作 Windows 组件存储(也叫组件库),这是包含操作系统所有核心文件、系统更新和服务包的数据库。DISM 使用 CBS API 来查询、添加或删除组件、安装更新包,并执行系统修复。
- 常见函数:
- CBS_Query:查询已安装的组件和更新信息。
- CBS_InstallPackage:安装更新包到映像文件。
- CBS_Apply:将更新应用于挂载的离线映像。
- CBS_UninstallPackage:卸载不需要的组件或更新。
3. Windows Update API (WUAPI)
- 作用: 这些 API 用于与 Windows 更新服务进行交互,DISM 通过它们查询和安装更新。对于集成更新,DISM 通过 Windows Update API 来下载并安装更新。
- 常见函数:
- IUpdateSession::CreateUpdateSearcher:创建更新搜索器,查询系统中可用的更新。
- IUpdateSearcher::Search:执行更新搜索,列出所有待处理的更新。
- IUpdateInstaller::Install:安装已下载的更新。
- IUpdate::AcceptEula:接受更新包的许可协议。
4. Windows Management Instrumentation (WMI) API
- 作用: WMI 提供了对 Windows 系统资源、硬件和软件组件的查询和管理功能。DISM 通过 WMI 查询系统状态和安装的信息,确保更新集成的准确性。
- 常见函数:
- IWbemServices::ExecQuery:执行 WMI 查询,获取有关系统、组件和更新的详细信息。
- IWbemServices::PutInstance:通过 WMI 修改系统设置或组件状态。
5. System File Checker (SFC) API
- 作用: SFC 用于扫描和修复系统文件中的损坏。DISM 使用 SFC API 执行文件修复,确保在集成更新后,系统文件处于健康状态。
- 常见函数:
- SfcScanFile:扫描并验证系统文件的完整性。
- SfcRestore:修复损坏或丢失的系统文件。
6. Registry API
- 作用: 注册表 API 用于访问和修改 Windows 注册表。DISM 通过这些 API 来更新与更新相关的注册表项,确保系统在集成更新后能够正确识别和应用更新。
- 常见函数:
- RegOpenKeyEx:打开指定的注册表键。
- RegQueryValueEx:查询注册表项的值,获取系统和更新状态信息。
- RegSetValueEx:设置或更新注册表项的值,以确保更新正确应用。
7. Volume Shadow Copy Service (VSS) API
- 作用: VSS 用于创建磁盘或分区的快照,以便在集成更新过程中保持数据的一致性,防止正在运行的系统受到影响。DISM 可以利用 VSS 创建快照来确保系统在执行更新时的稳定性。
- 常见函数:
- CreateVolumeShadowCopy:创建一个卷的快照,确保更新过程中数据的一致性。
- GetShadowCopy:获取现有快照的详细信息。
8. Microsoft Update Catalog API
- 作用: 这些 API 提供了访问 Microsoft 更新目录的能力,DISM 通过它们来下载、安装和集成离线更新包(如单个更新文件)。
- 常见函数:
- MUCDownload:下载更新包到本地。
- MUCInstall:安装下载的更新包。
9. Windows Update Agent (WUA) API
- 作用: 这些 API 用于直接与 Windows 更新代理进行交互。DISM 可以通过 WUA API 来检查、下载和安装更新包。
- 常见函数:
- IUpdateSession::CreateUpdateSearcher:创建更新搜索会话。
- IUpdateInstaller::Install:安装更新包。
- IUpdate::AcceptEula:接受更新包的最终用户许可协议。
10. File I/O API
- 作用: 文件 I/O API 用于直接访问和操作文件系统,DISM 可以通过这些 API 在离线映像中执行文件的复制、删除、修改等操作,以集成更新或修改文件。
- 常见函数:
- CopyFile:复制文件到目标位置。
- MoveFile:移动文件到指定位置。
- DeleteFile:删除指定文件。
- CreateFile:创建新的文件。
集成 Windows 更新到离线映像时,DISM 通过多个本机文件系统 API 协同工作,确保更新包被成功安装到映像中。这些 API 包括 WIMGAPI、CBS、WUAPI、WMI、SFC、Registry API、VSS、Microsoft Update Catalog API、WUA API 以及 File I/O API 等。每个 API 都在不同层面上协作,保证更新过程顺利进行,同时确保映像文件的完整性和稳定性。
5. 映像自定义
DISM 还能够使用本机 API 对映像进行一些自定义配置。例如,它能够配置 Windows 组件、应用程序和功能。
- 启用/禁用 Windows 功能:DISM 可以通过本机的功能管理 API 启用或禁用特定的 Windows 功能,如 .NET Framework、Windows Subsystem for Linux 等。它通过调用这些 API 来管理功能集。
在启用或禁用 Windows 功能时,DISM(部署映像服务和管理工具)通过本机的功能管理 API 来处理这些操作。Windows 功能如 .NET Framework、Windows Subsystem for Linux(WSL)、Hyper-V、Windows Defender 等可以通过这些 API 启用或禁用。DISM 依赖于一系列本机 API,这些 API 支持对 Windows 功能的管理操作。
以下是与启用/禁用 Windows 功能相关的本机文件系统 API 完整清单:
1. Windows Imaging API (WIMGAPI)
- 作用: 这些 API 用于管理 Windows 映像文件,包括挂载和修改映像。DISM 使用这些 API 来修改 Windows 功能的启用/禁用状态,特别是在处理离线映像时。
- 常见函数:
- WIMMount:挂载一个离线映像,以便可以对其进行更改,包括启用或禁用特定的功能。
- WIMApply:应用更改到映像中,包含启用或禁用功能。
- WIMUnmount:卸载映像,保存对映像所做的更改。
- WIMClose:关闭映像文件,确保所有操作被正确保存。
2. Windows Component Store API (CBS)
- 作用: CBS API 是 Windows 组件存储的管理工具,它允许 DISM 启用或禁用 Windows 功能。Windows 功能通常作为组件安装或删除,DISM 使用这些 API 来添加、删除或更改功能。
- 常见函数:
- CBS_Install:安装一个新的组件,通常与启用一个功能有关。
- CBS_Uninstall:卸载一个功能组件,通常与禁用某个功能相关。
- CBS_Query:查询组件的当前状态,检查是否启用或禁用某个功能。
- CBS_Apply:应用对功能的修改(启用或禁用)。
3. Windows Feature API
- 作用: 特定于管理 Windows 功能的 API,用于启用、禁用、安装或删除功能。例如,通过这些 API,DISM 可以启用 .NET Framework、Windows Subsystem for Linux(WSL)、Hyper-V 等功能。
- 常见函数:
- EnableFeature:启用指定的 Windows 功能。
- DisableFeature:禁用指定的 Windows 功能。
- QueryFeatureStatus:查询某个功能的当前启用或禁用状态。
- InstallFeature:安装指定的 Windows 功能。
- UninstallFeature:卸载指定的 Windows 功能。
4. Package API
- 作用: 这些 API 用于管理和操作 Windows 更新包和功能包,DISM 可以通过这些 API 启用或禁用功能包。
- 常见函数:
- InstallPackage:安装功能包,通常用于启用某个功能。
- UninstallPackage:卸载功能包,通常用于禁用某个功能。
- QueryPackage:查询功能包的状态。
- ApplyPackage:将已安装的功能包应用到系统。
5. Windows Management Instrumentation (WMI) API
- 作用: WMI 提供了对系统硬件、软件和功能的管理能力。DISM 使用 WMI 查询当前系统功能的状态,帮助判断是否需要启用或禁用某些功能。
- 常见函数:
- IWbemServices::ExecQuery:查询 Windows 功能的状态(启用或禁用)。
- IWbemServices::PutInstance:更改系统功能的配置或状态。
- IWbemClassObject:代表一个 WMI 对象,可以用于读取或修改功能状态。
6. Registry API
- 作用: Windows 注册表包含许多有关系统配置和功能的信息。DISM 使用注册表 API 来查找、修改和验证系统中与功能启用/禁用相关的注册表键。
- 常见函数:
- RegOpenKeyEx:打开一个注册表键,以便查询或修改功能设置。
- RegQueryValueEx:查询与功能启用状态相关的注册表值。
- RegSetValueEx:修改注册表值,从而启用或禁用功能。
- RegDeleteValue:删除功能的注册表项,以便禁用该功能。
7. File I/O API
- 作用: 文件 I/O API 用于对系统文件进行直接操作。DISM 可以利用这些 API 来访问与特定功能相关的文件或目录,从而启用或禁用该功能。
- 常见函数:
- CopyFile:将功能的文件或组件复制到目标位置,通常用于启用功能。
- DeleteFile:删除与功能相关的文件,通常用于禁用功能。
- MoveFile:移动文件,这在某些功能启用过程中可能会用到。
8. Deployment Image Servicing and Management (DISM) API
- 作用: DISM 本身提供了多个 API 来管理 Windows 映像的功能。通过这些 API,DISM 可以启用、禁用、安装、删除或查询 Windows 功能。
- 常见函数:
- Enable-Feature:启用某个功能。
- Disable-Feature:禁用某个功能。
- Get-FeatureInfo:查询某个功能的详细信息,获取其状态和属性。
- Install-Feature:安装功能到离线映像。
- Uninstall-Feature:卸载某个功能,通常用于禁用功能。
9. Windows Update API (WUAPI)
- 作用: 通过 Windows 更新 API,DISM 可以从 Windows 更新目录下载功能包,并启用或禁用功能。例如,DISM 可以使用 WUAPI 来处理需要通过 Windows 更新安装的功能。
- 常见函数:
- IUpdateSession::CreateUpdateSearcher:创建更新搜索器,查找待启用的功能。
- IUpdateInstaller::Install:安装功能更新包,通常与启用功能相关。
- IUpdate::AcceptEula:接受更新许可协议,启用相关功能。
10. Volume Shadow Copy Service (VSS) API
- 作用: 在启用或禁用 Windows 功能时,VSS API 用于创建磁盘的快照,确保系统数据的一致性。DISM 可以利用 VSS API 在启用或禁用功能时保护系统不受干扰。
- 常见函数:
- CreateVolumeShadowCopy:创建卷的快照,在启用或禁用功能时确保数据一致性。
- GetShadowCopy:获取快照,确保启用或禁用操作的稳定性。
11. System File Checker (SFC) API
- 作用: SFC 用于扫描和修复系统文件。DISM 使用这些 API 来确保在启用或禁用功能时,系统文件的完整性不会受到损害。
- 常见函数:
- SfcScanFile:扫描并修复系统文件,确保启用或禁用功能不会损坏系统文件。
DISM 在启用或禁用 Windows 功能时,依赖于多个本机文件系统 API 的协作。这些 API 包括 Windows Imaging API(WIMGAPI)、Windows Component Store API(CBS)、Windows Feature API、Package API、WMI API、Registry API、File I/O API、DISM API、Windows Update API、Volume Shadow Copy Service (VSS) API 和 System File Checker (SFC) API 等。通过这些 API,DISM 可以高效地管理功能的启用、禁用、安装、卸载,并确保系统在操作过程中的完整性和稳定性。
- 自定义设置:DISM 也支持通过本机 API 修改注册表项、网络设置等,进一步自定义映像以符合特定的需求。
DISM(部署映像服务和管理工具)确实可以通过本机 API 来修改系统配置,如注册表项、网络设置等,以便进一步自定义 Windows 映像。这些操作常常用于为特定的部署环境或需求优化映像。为了实现这些功能,DISM 使用了多个本机文件系统 API。这些 API 包括但不限于修改注册表、配置网络、处理系统文件和硬件配置等。
1. Registry API(注册表 API)
- 作用:DISM 可以通过 Windows 注册表 API 来修改和配置 Windows 系统的注册表项,以实现系统的定制化需求。例如,可以更改系统设置、启用或禁用特性、调整启动设置等。
- 常见函数:
- RegOpenKeyEx:打开一个注册表项,查询或修改注册表值。
- RegQueryValueEx:查询指定注册表项下的值,常用于检查某个设置的当前状态。
- RegSetValueEx:设置注册表项的值,通常用于修改功能启用或系统设置。
- RegDeleteKey:删除指定的注册表项,通常用于删除不需要的配置或功能。
- RegDeleteValue:删除注册表中的指定值,常用于禁用某些功能。
2. Network Configuration API(网络配置 API)
- 作用:DISM 可以通过网络配置 API 修改网络设置,如静态 IP、DNS 设置、网络接口配置等。这些设置通常用于定制系统的网络连接,以便适应不同的网络环境。
- 常见函数:
- SetNetworkConfiguration:配置网络设置(如静态 IP、DNS 服务器、网关等)。
- ConfigureIPSettings:配置 TCP/IP 协议设置,设置 IP 地址、子网掩码等。
- ConfigureDNS:修改 DNS 设置。
- Enable/Disable Network Adapter:启用或禁用特定的网络适配器。
3. Windows Imaging API (WIMGAPI)
- 作用:WIMGAPI 用于挂载和操作 Windows 映像,DISM 使用这些 API 来修改映像内容,包括将特定的设置或配置应用到映像文件中。它还支持对映像进行定制,添加特定的功能或更新。
- 常见函数:
- WIMMount:挂载一个 Windows 映像文件,以便在映像中应用修改。
- WIMApply:应用更改到已挂载的映像文件。
- WIMUnmount:卸载映像并保存所有更改。
4. Component Store API(CBS API)
- 作用:CBS API 是 Windows 组件存储的管理工具,它允许 DISM 启用、禁用、安装或删除系统组件。使用这些 API,DISM 可以定制并优化 Windows 映像中的功能和服务。
- 常见函数:
- CBS_Install:安装组件或功能,通常用于在映像中添加新功能。
- CBS_Uninstall:卸载组件或功能,用于禁用某些功能。
- CBS_Query:查询组件或功能的状态。
- CBS_Apply:应用组件存储中的更改。
5. Package API(包管理 API)
- 作用:DISM 使用 Package API 来管理和操作 Windows 更新包和功能包。例如,可以通过这些 API 添加自定义应用程序、驱动程序或其他更新包到 Windows 映像。
- 常见函数:
- InstallPackage:安装一个功能包或更新包,通常用于将额外的功能或软件包添加到系统。
- UninstallPackage:卸载一个功能包或更新包,用于移除不需要的功能。
- QueryPackage:查询已安装的功能包或更新包,检查其状态。
6. System Configuration API(系统配置 API)
- 作用:DISM 使用系统配置 API 修改 Windows 系统的各种设置,例如修改系统性能选项、调整电源设置、禁用或启用某些服务等。这些设置有助于定制系统的行为,以便符合特定的需求。
- 常见函数:
- SetPowerPlan:设置系统的电源计划,例如启用或禁用省电模式。
- SetServiceConfig:配置系统服务的启动类型(如自动启动、手动启动或禁用)。
- SetStartupConfig:修改系统启动项,配置启动时加载的程序和服务。
- ConfigureLocaleSettings:调整系统的区域设置、语言和时间区域等。
7. Windows Management Instrumentation (WMI) API
- 作用:WMI 提供了一个系统管理框架,允许 DISM 查询和修改系统配置,包括硬件配置、操作系统设置等。通过 WMI,DISM 可以获取或修改系统的多种设置。
- 常见函数:
- IWbemServices::ExecQuery:查询系统信息,如硬件配置、网络设置等。
- IWbemServices::PutInstance:修改 WMI 对象,修改系统配置。
- IWbemClassObject:代表 WMI 对象,DISM 可以用来读取或修改系统设置。
8. File I/O API(文件输入输出 API)
- 作用:DISM 使用文件 I/O API 来处理文件系统的操作,如复制文件、删除文件、移动文件等。通过这些操作,DISM 可以修改映像文件中某些系统配置,定制文件系统内容。
- 常见函数:
- CopyFile:将文件从源位置复制到目标位置,通常用于添加新文件到系统。
- MoveFile:移动文件,通常用于更改文件位置或重命名文件。
- DeleteFile:删除文件,通常用于移除不需要的文件或组件。
9. Volume Shadow Copy Service (VSS) API
- 作用:VSS API 在系统执行关键配置或修改时提供一致性快照。这对于确保系统在修改注册表、网络设置或其他重要配置时保持数据一致性至关重要。
- 常见函数:
- CreateVolumeShadowCopy:创建系统快照,确保操作的原子性和一致性。
- GetShadowCopy:获取指定的快照,供后续操作使用。
10. System File Checker (SFC) API
- 作用:SFC API 用于扫描和修复系统文件的完整性。在 DISM 执行自定义配置操作时,SFC API 可以确保文件系统的完整性,避免在修改配置时出现文件损坏。
- 常见函数:
- SfcScanFile:扫描并修复系统文件,确保没有被篡改或丢失。
11. Deployment Image Servicing and Management (DISM) API
- 作用:DISM 本身提供的 API 用于直接操作 Windows 映像,允许用户启用、禁用、安装、卸载功能,以及修改映像的其他配置。DISM API 是修改 Windows 映像的核心工具。
- 常见函数:
- Enable-Feature:启用某个功能。
- Disable-Feature:禁用某个功能。
- Get-FeatureInfo:查询某个功能的详细信息。
- Install-Feature:将某个功能包安装到映像中。
- Uninstall-Feature:卸载某个功能包。
DISM 通过多种本机 API 来实现系统配置的定制,包括注册表设置、网络配置、文件操作、功能启用/禁用、硬件配置等。这些 API 使得 DISM 能够对 Windows 映像进行广泛的修改,满足特定需求的定制化部署。通过调用 Registry API、Network Configuration API、File I/O API 等,DISM 能够修改系统的各个方面,使得映像更加符合特定的部署需求。
6. 系统恢复和还原
DISM 通过本机 API 提供了一些系统恢复和还原功能,这些功能可帮助管理员修复系统问题,恢复丢失的文件,或从系统映像中恢复数据。
- 恢复系统文件:DISM 可以通过本机的恢复 API(如
Recovery)修复操作系统中的关键文件或组件,使得系统能够正常启动并运行。DISM(部署映像服务和管理工具)通过多种本机文件系统 API 进行恢复操作,用于修复和恢复系统文件,确保操作系统能够正常启动并运行。这些 API 主要涉及恢复操作系统中的关键文件或组件,包括通过文件修复、组件存储修复、功能恢复等方式来实现。
以下是 DISM 在恢复系统文件过程中使用的本机文件系统 API 完整清单,包括相关的恢复功能:
1. Windows Recovery API
- 作用:Windows Recovery API 是一组提供操作系统恢复功能的本机 API。它们主要用于修复系统文件、启动文件、组件存储以及解决操作系统崩溃或不稳定等问题。
- 常见函数:
- Recovery::Repair:修复系统文件,确保操作系统可以正常启动。
- Recovery::Restore:恢复系统文件和组件到初始健康状态,通常在系统文件损坏时使用。
- Recovery::CheckIntegrity:检查系统文件的完整性,确保操作系统没有损坏的文件。
2. System File Checker (SFC) API
- 作用:SFC API 用于扫描并修复 Windows 操作系统中的损坏或丢失的关键系统文件。它通常与 DISM 结合使用,以修复系统文件中的错误或损坏,尤其是在更新、升级或配置更改之后。
- 常见函数:
- SfcScanFile:扫描并修复指定的系统文件,常用于修复受损或丢失的 Windows 文件。
- SfcReset:重置所有受损的系统文件,并恢复为系统完整的初始状态。
- SfcVerify:验证所有系统文件的完整性,并列出损坏的文件。
3. Component Store API (CBS API)
- 作用:CBS API 用于管理和修复 Windows 组件存储(Component Store)。如果操作系统的关键组件(如 Windows 功能、驱动程序等)遭到损坏或丢失,CBS API 能够帮助修复或恢复这些组件。
- 常见函数:
- CBS_Repair:修复损坏或丢失的系统组件,确保系统组件保持健康状态。
- CBS_Install:安装新的 Windows 组件或更新包,帮助恢复系统中的功能。
- CBS_Uninstall:卸载已损坏的系统组件,恢复系统功能。
- CBS_Apply:应用组件存储中的修复更改,修复已损坏的组件。
4. WIMMount (Windows Imaging API)
- 作用:WIMMount 是 DISM 使用的一个重要功能,它允许挂载 Windows 映像,以便修复或恢复系统文件。当操作系统无法启动时,可以使用 WIM 文件挂载功能,将映像中的文件或组件提取并恢复到本地系统。
- 常见函数:
- WIMMount:挂载一个 Windows 映像文件,允许对其中的文件和组件进行修复。
- WIMApply:将修复后的文件或组件应用到正在运行的系统中。
- WIMUnmount:卸载挂载的映像,保存所有的修复操作。
5. System Configuration API
- 作用:这些 API 主要用于修复和恢复系统配置文件。当操作系统配置文件丢失或损坏时,DISM 可以使用这些 API 恢复关键的系统配置,如注册表设置、服务配置和启动设置。
- 常见函数:
- SetServiceConfig:修复损坏的系统服务配置,恢复到初始状态。
- SetStartupConfig:恢复系统启动项的配置,确保操作系统正常启动。
- RestoreRegistryKey:恢复丢失或损坏的注册表项,修复关键系统配置。
6. Volume Shadow Copy Service (VSS) API
- 作用:VSS API 用于创建系统快照,以确保在执行系统恢复操作时,不会丢失数据。它允许创建一致的磁盘映像,从而在发生文件丢失或损坏时恢复到快照版本。
- 常见函数:
- CreateVolumeShadowCopy:创建系统卷的快照,以便从快照中恢复丢失的文件。
- RestoreShadowCopy:从快照恢复丢失或损坏的文件系统数据。
- GetShadowCopy:查询指定的快照,查看其中包含的文件和组件。
7. Windows Management Instrumentation (WMI) API
- 作用:WMI 提供了一种管理和查询 Windows 系统配置和硬件信息的方式。DISM 使用 WMI 来恢复操作系统的配置、硬件信息以及其他系统组件。
- 常见函数:
- IWbemServices::ExecQuery:查询系统状态和信息,查看损坏的配置或组件。
- IWbemServices::PutInstance:通过 WMI 接口恢复系统组件或配置。
- IWbemClassObject:代表 WMI 对象,通常用于恢复丢失的系统设置或硬件信息。
8. Deployment Image Servicing and Management (DISM) API
- 作用:DISM 本身提供了一组 API,用于管理和修复 Windows 映像。通过这些 API,DISM 可以修复系统组件、启用/禁用功能、安装更新包等,从而恢复系统到健康状态。
- 常见函数:
- RestoreHealth:使用 DISM API 修复损坏的操作系统映像,恢复到健康的工作状态。
- ScanHealth:扫描映像中存在的健康问题,检查文件系统和组件存储中的错误。
- ApplyFix:应用已修复的文件或组件,恢复系统功能。
9. File I/O API (文件输入输出 API)
- 作用:DISM 使用文件 I/O API 来修复丢失或损坏的系统文件。通过这些 API,DISM 可以恢复文件系统中的缺失文件或修复损坏的文件。
- 常见函数:
- CopyFile:将修复的文件复制到目标系统,恢复丢失的系统文件。
- MoveFile:移动或替换损坏的文件,恢复系统文件。
- DeleteFile:删除无效或损坏的文件,确保系统运行正常。
- RestoreFile:恢复被删除或损坏的关键系统文件。
10. Disk and Partition API (磁盘和分区 API)
- 作用:DISM 使用磁盘和分区 API 来修复硬盘和分区中的损坏文件或系统区域。这对于恢复启动文件、引导记录和其他关键系统区域至关重要。
- 常见函数:
- CreatePartition:创建一个新的分区,用于修复分区损坏或恢复引导分区。
- FormatPartition:格式化损坏的分区,确保数据完整性。
- RepairPartition:修复磁盘分区中的错误,恢复操作系统区域。
DISM 使用一系列本机文件系统 API 来恢复和修复操作系统中的关键文件或组件。这些 API 涉及文件系统、注册表、组件存储、磁盘和分区等多个领域。通过这些 API,DISM 可以确保操作系统的文件和配置恢复到正常状态,从而保证系统的稳定性和可靠性。
这些 API 主要包括:
- Recovery API:用于修复操作系统中的关键文件和组件。
- SFC API:修复和验证系统文件的完整性。
- CBS API:管理和修复系统组件存储中的文件和组件。
- WIMMount API:通过映像挂载和恢复丢失的文件。
- VSS API:提供一致性的快照和恢复功能。
- WMI API:通过管理和恢复系统配置和硬件信息来修复操作系统。
这些功能使得 DISM 成为 Windows 系统恢复和维护的重要工具。
- 还原功能:DISM 可以使用类似
System Restore的本机 API 来执行还原操作,将系统恢复到特定的快照或备份。在 Windows 操作系统中,DISM(部署映像服务和管理工具)提供了一些本机 API,能够帮助执行还原操作,类似于 System Restore(系统还原)。这些还原操作通常包括恢复系统到某个特定的时间点、版本或快照。与 System Restore 相关的本机 API 主要涉及文件系统、组件存储和快照管理等方面,确保操作系统能够恢复到正常的工作状态。
下面是 DISM 在执行还原操作时使用的一些本机文件系统 API 和相关功能的完整清单:
1. System Restore API(系统还原 API)
- 作用:Windows 提供了一组系统还原 API,允许操作系统将文件和系统配置恢复到先前的某个状态(快照)。这些 API 主要用于恢复系统到上一个还原点,或恢复到其他指定的还原点。
- 常见函数:
- SRCreateRestorePoint:创建系统还原点,为将来的还原操作做好准备。
- SRRestore:将系统恢复到指定的还原点或时间点。
- SRGetRestorePoint:获取系统当前的还原点信息或列出所有可用的还原点。
- SRApplyRestorePoint:应用某个指定的还原点,以便将系统恢复到某一特定状态。
2. Volume Shadow Copy Service (VSS) API(卷影复制服务 API)
- 作用:VSS API 用于创建一致的磁盘快照(卷影副本),确保即使在文件系统处于活动状态时,也可以捕获完整的系统镜像,以便用于系统恢复。DISM 和其他恢复工具可以利用 VSS API 来恢复文件系统状态,恢复丢失或损坏的文件。
- 常见函数:
- VSSCreateSnapshot:创建卷影副本(快照),用于数据恢复。
- VSSDeleteSnapshot:删除指定的卷影副本。
- VSSRestoreSnapshot:恢复数据到指定的卷影副本。
- VSSListSnapshots:列出当前存在的所有卷影副本,便于选择还原点。
3. WIM (Windows Imaging) API(Windows 映像 API)
- 作用:WIM API 使得 Windows 映像管理和恢复成为可能。DISM 使用 WIM 文件来挂载、修复、更新和还原 Windows 映像。如果需要将操作系统恢复到特定的映像版本,WIM API 是必要的工具。
- 常见函数:
- WIMMount:将 Windows 映像(.wim 文件)挂载到系统中,便于修复或恢复其中的文件和组件。
- WIMUnmount:卸载挂载的映像文件,保存已恢复的更改。
- WIMApply:应用一个 WIM 映像中的内容到当前系统中,用于还原操作。
- WIMCreate:创建 Windows 映像,通常在系统备份过程中使用,作为将来的恢复源。
4. System File Checker (SFC) API(系统文件检查器 API)
- 作用:SFC API 用于扫描和修复系统文件,通常用于系统文件损坏的情况。SFC 可以修复系统文件,还原到原始状态,确保系统的稳定性。
- 常见函数:
- SfcScanFile:扫描指定文件并修复损坏的系统文件。
- SfcReset:重置已修复的文件,确保它们恢复为系统的原始文件。
- SfcVerify:验证系统文件的完整性,确定文件是否损坏。
- SfcRestore:恢复所有文件到原始健康状态,修复系统文件。
5. Component Store API (CBS API)(组件存储 API)
- 作用:CBS API 用于修复系统组件和功能。在执行恢复操作时,CBS API 能够修复损坏的系统组件,恢复系统的完整性。
- 常见函数:
- CBS_Repair:修复损坏的操作系统组件,确保组件存储中的文件保持健康。
- CBS_Install:安装和恢复系统组件,确保恢复到功能正常的状态。
- CBS_Uninstall:卸载无效或损坏的组件。
- CBS_Apply:应用组件存储中的修复操作。
6. Deployment Image Servicing and Management (DISM) API(DISM API)
- 作用:DISM 是 Windows 提供的一个强大的工具,专门用于管理和修复 Windows 映像文件。DISM 本身也可以进行恢复操作,尤其是修复系统组件、更新和恢复操作系统的功能。
- 常见函数:
- RestoreHealth:执行操作系统恢复,修复损坏的操作系统映像。
- ScanHealth:扫描系统映像中存在的健康问题,检查文件系统、组件存储等内容。
- ApplyFix:应用已修复的文件和组件,确保系统恢复正常工作。
- ImageApply:将映像文件应用到系统,用于恢复操作。
7. File I/O API(文件输入输出 API)
- 作用:文件 I/O API 在执行还原操作时,用于恢复丢失或损坏的系统文件。通过这些 API,DISM 和其他恢复工具可以修复文件系统中的损坏文件或替换丢失的文件。
- 常见函数:
- CopyFile:将恢复的文件复制到目标位置,恢复系统文件。
- MoveFile:将恢复的文件移动到目标目录,替换损坏的文件。
- DeleteFile:删除无效或损坏的文件,以确保系统正常运行。
- RestoreFile:恢复丢失的文件或修复损坏的文件。
8. Windows Management Instrumentation (WMI) API(Windows 管理工具 API)
- 作用:WMI API 用于访问和管理系统配置、硬件和软件信息。在恢复操作中,WMI 可用于恢复系统的设置和硬件信息,确保操作系统的稳定性。
- 常见函数:
- IWbemServices::ExecQuery:查询并获取系统信息或配置,检查是否需要恢复。
- IWbemServices::PutInstance:恢复系统组件或配置文件。
- IWbemClassObject:表示一个 WMI 类对象,通常用于恢复系统配置和硬件信息。
9. Disk and Partition API(磁盘和分区 API)
- 作用:DISM 和其他工具可以使用磁盘和分区 API 来修复硬盘上的分区或磁盘区域。在系统恢复过程中,这些 API 可用于修复损坏的启动分区或恢复丢失的磁盘数据。
- 常见函数:
- CreatePartition:创建新的磁盘分区,用于恢复启动分区或其他系统分区。
- FormatPartition:格式化磁盘分区,恢复分区的正常功能。
- RepairPartition:修复损坏的磁盘分区,恢复操作系统所需的分区区域。
DISM 和 Windows 系统还原通过一组强大的本机文件系统 API 来执行系统恢复操作。这些 API 涉及多个方面,包括系统还原点创建与恢复、卷影副本管理、映像文件恢复、组件存储修复等。通过这些 API,DISM 可以修复系统中的文件、组件、配置、分区等,恢复操作系统的完整性和功能。
7. 挂载和操作 Windows 映像(WIM 和 VHD)
DISM 使用本机 API 来挂载、解挂、读取和写入 .wim 文件或 .vhd (虚拟硬盘)文件。这些功能是 Windows 操作系统部署和修复中的关键功能。
- 挂载 WIM 文件:DISM 能够通过使用本机的挂载 API 来将
.wim文件挂载到文件系统,允许用户直接访问并修改映像文件中的内容。在 Windows 操作系统中,DISM(部署映像服务和管理工具)允许通过本机文件系统 API 将
.wim文件(Windows 映像文件)挂载到文件系统中,这样用户就可以直接访问并修改映像文件中的内容。为了实现这一点,Windows 提供了一些本机文件系统 API,这些 API 用于挂载、修改、卸载和管理.wim文件。以下是与挂载和操作.wim文件相关的本机文件系统 API 完整清单:1. WIM (Windows Imaging Format) API
作用:WIM API 提供了对 Windows 映像文件(.wim 文件)的访问、操作、修改和管理功能。通过这些 API,DISM 可以将
.wim文件挂载到文件系统,允许对映像文件进行更改,修复或更新。常见函数:
-
WIMMount:挂载
.wim文件的一个或多个映像。该函数将映像文件载入文件系统,使其可以直接访问和修改。- 功能:将
.wim文件中的映像挂载到指定的目录,使其成为虚拟磁盘。 - 使用场景:例如,DISM 使用该功能挂载 Windows 安装映像进行修改。
- 功能:将
-
WIMUnmount:卸载已经挂载的
.wim文件映像。- 功能:卸载之前挂载的
.wim映像,并且可以选择保存或丢弃所做的修改。 - 使用场景:当对映像文件的修改完成后,可以使用此函数卸载映像。
- 功能:卸载之前挂载的
-
WIMApply:将
.wim映像中的内容应用到指定的目录或系统。- 功能:将挂载的映像内容写回系统或者指定的目标目录。
- 使用场景:当修改
.wim文件中的映像内容时,可以使用此函数将更改写回目标。
-
WIMCreate:创建新的
.wim映像文件,通常在制作操作系统备份时使用。- 功能:将指定的文件和文件夹打包成一个新的
.wim文件。 - 使用场景:例如,创建自定义的 Windows 映像文件,作为恢复的备份。
- 功能:将指定的文件和文件夹打包成一个新的
2. Virtual Disk Service (VDS) API
作用:VDS API 是 Windows 中的一组工具,专门用于虚拟磁盘管理。通过 VDS API,用户可以挂载虚拟磁盘(例如
.vhd或.vhdx),并与.wim映像进行交互。常见函数:
-
VdsOpenVirtualDisk:打开虚拟磁盘(包括
.wim文件的挂载)并获取其句柄。- 功能:打开指定路径的虚拟磁盘文件并准备进行操作。
- 使用场景:在需要对
.wim文件中的虚拟磁盘进行操作时使用。
-
VdsAttachVirtualDisk:将虚拟磁盘挂载到文件系统。
- 功能:将一个虚拟磁盘(包括
.wim文件中的内容)挂载到操作系统中。 - 使用场景:将
.wim文件中包含的虚拟磁盘附加到操作系统,以便对其中的内容进行访问和修改。
- 功能:将一个虚拟磁盘(包括
-
VdsDetachVirtualDisk:卸载虚拟磁盘。
- 功能:卸载虚拟磁盘并释放相关资源。
- 使用场景:卸载
.wim文件或其他虚拟磁盘文件,释放系统资源。
3. Mounting Tools API
作用:这些 API 提供了挂载和操作虚拟磁盘(包括
.wim文件)所需的支持。它们通常用于创建挂载点,将磁盘映像挂载到文件系统的目录中。常见函数:
-
MountVHD:挂载虚拟磁盘文件(例如
.vhd或.wim)。- 功能:将虚拟磁盘文件挂载到 Windows 操作系统中,创建一个挂载点以便进行访问。
- 使用场景:在使用
.wim映像时,可以将其挂载为虚拟磁盘进行进一步操作。
-
DismMountImage:卸载一个已经挂载的 Windows 映像。
- 功能:卸载已经通过 DISM 工具挂载的映像,并可以选择是否保存更改。
- 使用场景:用于卸载在文件系统上挂载的
.wim映像文件。
4. File System API
作用:这些文件系统 API 是操作 Windows 文件系统所需的基本工具。它们可以在挂载的映像中进行文件读取、写入、删除等操作。
常见函数:
-
CreateFile:创建或打开文件。
- 功能:允许用户访问挂载的
.wim文件中的文件,进行读取、修改或删除。 - 使用场景:当
.wim文件挂载后,用户可以通过此函数对映像中的文件进行操作。
- 功能:允许用户访问挂载的
-
ReadFile:从文件中读取数据。
- 功能:读取挂载映像文件中的内容。
- 使用场景:对挂载的
.wim文件进行数据读取,查看映像文件中的内容。
-
WriteFile:将数据写入文件。
- 功能:将更改写入挂载的
.wim文件中的文件。 - 使用场景:对挂载的映像进行更改,更新映像中的文件内容。
- 功能:将更改写入挂载的
-
DeleteFile:删除指定的文件。
- 功能:删除挂载
.wim文件中的某个文件。 - 使用场景:在挂载
.wim文件并进行修改时,可以删除不需要的文件。
- 功能:删除挂载
-
MoveFile:移动文件或重命名文件。
- 功能:修改挂载
.wim文件中的文件位置或名称。 - 使用场景:调整或更新映像中的文件位置。
- 功能:修改挂载
5. Windows Management Instrumentation (WMI) API
作用:WMI API 可用于访问和管理系统配置信息,并通过它可以监视挂载的映像中的信息。
常见函数:
-
IWbemServices::ExecQuery:查询并检索有关挂载映像的系统信息。
- 功能:可以获取关于挂载映像的详细系统状态信息。
- 使用场景:获取当前挂载的
.wim映像状态,查看映像中包含哪些文件或组件。
-
IWbemServices::PutInstance:更新或修改挂载映像中的系统组件。
- 功能:通过 WMI 更新挂载映像中的组件或配置项。
- 使用场景:更新映像中的系统设置或配置文件。
6. Mounting File System Drivers
作用:文件系统驱动程序(如 VHD 文件系统驱动)允许将虚拟磁盘(包括
.wim文件中的内容)挂载为本地驱动器。常见操作:
- MountVHDFileSystem:挂载 VHD 文件并使其成为文件系统。
- 功能:将
.wim文件映像转换为可直接访问的文件系统。 - 使用场景:挂载
.wim文件作为虚拟磁盘,便于操作和修改其中的文件。
- 功能:将
通过本机文件系统 API,DISM 工具可以将
.wim文件挂载到文件系统,使用户能够直接访问和修改映像文件中的内容。常见的 API 包括用于挂载和卸载映像的 WIM API、虚拟磁盘服务 API(VDS)、文件系统 API、以及用于访问和修改映像文件内容的 WMI API。这些 API 使得操作 Windows 映像文件变得更加高效和灵活。 -
- 挂载 VHD 文件:DISM 还能够使用 VHD API 来挂载虚拟硬盘文件,支持对虚拟环境中的操作系统进行管理和修复。
挂载 VHD(虚拟硬盘)和 VHDX(VHD 扩展格式)文件是管理虚拟磁盘和虚拟操作系统的重要任务。DISM 工具(部署映像服务和管理工具)可以利用 VHD API 来挂载和修复虚拟磁盘,这对于在虚拟环境中管理操作系统非常有用。以下是与挂载、管理和操作 VHD 和 VHDX 文件相关的本机文件系统 API 完整清单。
1. VHD 和 VHDX 文件挂载相关 API
虚拟硬盘(VHD 和 VHDX)文件可以使用 Windows 的 Virtual Disk Service (VDS) API 进行挂载。VHD 和 VHDX 文件可以包含操作系统、数据或备份文件等。DISM 工具使用这些 API 来操作虚拟磁盘并挂载它们。
常见 API 和函数:
-
VdsOpenVirtualDisk
- 功能:打开指定路径的虚拟磁盘文件(包括 VHD 和 VHDX)。这个函数返回一个虚拟磁盘句柄,可以用来进一步管理该磁盘。
- 使用场景:当需要挂载一个 VHD 或 VHDX 文件时,可以使用此函数打开该文件。
-
VdsAttachVirtualDisk
- 功能:将虚拟磁盘文件(例如 VHD 或 VHDX 文件)挂载到操作系统,使其可以像物理磁盘一样被访问和操作。
- 使用场景:将 VHD 或 VHDX 文件挂载到操作系统,通常用于虚拟环境中的操作系统管理。
-
VdsDetachVirtualDisk
- 功能:卸载已经挂载的虚拟磁盘文件。这将断开与磁盘的连接,释放系统资源。
- 使用场景:当对虚拟磁盘的操作完成后,使用此函数卸载虚拟磁盘。
-
VdsGetVirtualDiskProperties
- 功能:获取有关虚拟磁盘的详细属性,如大小、文件系统类型等。
- 使用场景:在挂载虚拟磁盘后,获取磁盘的相关信息。
-
VdsResizeVirtualDisk
- 功能:调整虚拟磁盘的大小(例如扩大或缩小 VHDX 文件的大小)。
- 使用场景:在需要调整虚拟硬盘大小时,使用此函数。
-
VdsCreateVirtualDisk
- 功能:创建一个新的虚拟磁盘文件(VHD 或 VHDX),可以在该虚拟磁盘中创建文件系统或存储数据。
- 使用场景:创建新的虚拟磁盘文件,作为新的虚拟机磁盘或备份文件。
-
VdsDeleteVirtualDisk
- 功能:删除虚拟磁盘文件(VHD 或 VHDX)。
- 使用场景:当不再需要某个虚拟磁盘文件时,使用此函数删除它。
2. 虚拟硬盘文件系统相关 API
虚拟硬盘(VHD 和 VHDX)文件可以通过文件系统 API 来读取、写入和修改。挂载虚拟硬盘后,文件系统可以像物理磁盘一样被访问。以下是一些文件系统 API:
常见文件系统 API:
-
CreateFile
- 功能:创建或打开一个文件。可以在挂载的 VHD 或 VHDX 文件系统中进行读取和写入操作。
- 使用场景:通过此函数打开挂载的虚拟磁盘中的文件并对其进行访问。
-
ReadFile
- 功能:从打开的文件中读取数据。
- 使用场景:读取挂载的虚拟磁盘中的文件内容,进行数据提取或备份。
-
WriteFile
- 功能:将数据写入打开的文件。
- 使用场景:向挂载的虚拟磁盘中的文件写入数据,进行更新或修改。
-
DeleteFile
- 功能:删除文件。
- 使用场景:删除挂载虚拟磁盘中的不需要的文件。
-
MoveFile
- 功能:移动或重命名文件。
- 使用场景:在挂载虚拟磁盘后,可以移动或重命名虚拟磁盘中的文件。
-
SetFileAttributes
- 功能:设置文件的属性,如只读、隐藏、归档等。
- 使用场景:修改虚拟磁盘中的文件属性,控制文件的行为。
-
GetFileInformationByHandle
- 功能:获取文件的基本信息,如文件大小、创建时间、修改时间等。
- 使用场景:获取挂载虚拟磁盘中文件的详细信息,进行系统分析或备份。
3. 虚拟硬盘文件磁盘驱动 API
当你挂载 VHD 或 VHDX 文件时,Windows 会创建一个虚拟磁盘驱动器,允许你在文件系统中访问和操作该虚拟磁盘。以下是一些常见的磁盘驱动相关 API:
磁盘管理相关 API:
-
DeviceIoControl
- 功能:发送控制代码给设备驱动程序,用于执行特定的设备操作。可以用于磁盘管理操作。
- 使用场景:用于管理挂载的 VHD 或 VHDX 驱动器,执行特定的磁盘操作,如格式化、分区操作等。
-
IOCTL_DISK_GET_DRIVE_GEOMETRY
- 功能:获取磁盘的几何信息,如磁盘的大小、扇区大小等。
- 使用场景:获取挂载的虚拟磁盘的几何信息,检查其容量和结构。
-
IOCTL_DISK_SET_PARTITION_INFO
- 功能:设置磁盘分区信息。
- 使用场景:对虚拟磁盘执行分区操作时使用该控制命令。
-
IOCTL_DISK_GET_PARTITION_INFO
- 功能:获取磁盘的分区信息。
- 使用场景:用于查看虚拟磁盘分区的状态,获取分区详情。
-
IOCTL_DISK_FORMAT_TRACKS
- 功能:格式化磁盘的特定扇区或轨道。
- 使用场景:格式化挂载的虚拟磁盘或 VHDX 文件。
4. 虚拟磁盘和系统管理相关的 WMI API
Windows Management Instrumentation (WMI) 提供了与虚拟磁盘文件相关的管理功能。通过 WMI API,可以监控虚拟磁盘的状态、获取磁盘信息等。
WMI 查询和操作相关 API:
-
IWbemServices::ExecQuery
- 功能:执行 WMI 查询,返回磁盘、虚拟磁盘和系统相关的管理信息。
- 使用场景:使用 WMI 查询虚拟磁盘的状态、属性等信息。
-
IWbemServices::PutInstance
- 功能:更新系统实例,例如修改虚拟磁盘的配置或属性。
- 使用场景:通过 WMI 更新挂载虚拟磁盘的设置或属性。
-
IWbemServices::CreateInstanceEnum
- 功能:枚举当前系统中的所有实例。
- 使用场景:列出所有虚拟磁盘和磁盘驱动器,帮助系统管理。
5. 其他相关的 API 和工具
DiskPart 工具 API(用于虚拟磁盘操作):
- DiskPart 是 Windows 的命令行磁盘管理工具,可以通过脚本与虚拟磁盘进行交互。虽然它本身不是编程 API,但可以通过脚本调用它,执行磁盘挂载、格式化等操作。
挂载和管理 VHD/VHDX 文件是虚拟化环境中常见的操作,DISM 工具利用上述本机文件系统 API 通过虚拟磁盘服务(VDS)来挂载、卸载、管理虚拟磁盘。通过文件系统 API 和 WMI API,可以对挂载的虚拟磁盘进行详细的管理和修复操作。
-
DISM 在 Windows 上通过本机 Windows API 来执行多个关键任务,包括:
- 映像文件的创建、挂载、更新和修复
- 驱动程序和更新包的集成
- 系统文件和功能的修复和管理
- 更新和自定义 Windows 映像
这些操作依赖于 Windows API 和驱动程序接口,使 DISM 成为一个功能强大的工具,广泛应用于 Windows 映像的管理和部署过程。通过使用本机 API,DISM 提供了高效且可靠的方式来处理系统镜像、驱动、更新以及其他重要的操作系统配置。

浙公网安备 33010602011771号