re驱动精灵单文件文件

更新驱动程序和程序包:脱机服务简介
Windows 硬件
更新驱动程序和程序包:脱机服务简介
更新时间: 2014年5月应用到: Windows 8, Windows 8.1, Windows Server 2012, Windows Server 2012 R2
在 的这一部分中,你使用脱机服务将驱动程序(例如对硬件驱动程序的更新)和程序包(例如 Windows 更新)添加到 Windows 映像文件。你还可以根据需要升级 Windows 版本。这通常是更新映像和引入新设计时创建新映像的最快捷方法。
在技术人员电脑上,连接外部 USB 硬盘驱动器。
单击"开始",输入“部署”。右键单击“部署和映像工具环境”,然后选择“以管理员身份运行”。
将瘦映像从外部 USB 硬盘驱动器复制到技术人员电脑,使用新文件名:ModelSpecificImage.wim。此文件代表一个新的电脑设计,并且是基于你在中捕获的映像。
md C:\images\
copy E:\Images\ThinImage.wim C:\images\ModelSpecificImage.wim
其中 E: 是外部 USB 硬盘驱动器的驱动器号。
这可能需要几分钟。
装载 Windows 映像。装载过程会将映像文件的内容映射到可以查看和修改装载的映像的位置。
md C:\mount\windows
Dism /Mount-Image /ImageFile:"C:\Images\ModelSpecificImage.wim" /Name:"Fabrikam" /MountDir:"C:\mount\windows" /Optimize
其中 C 是包含该映像的驱动器的驱动器号,Fabrikam 是该映像的名称。
此步骤可能需要几分钟。
要处理 Windows 8.1 的映像,你必须使用适用于 Windows 8.1 的 DISM 版本。有关详细信息,请参阅。
Dism /Mount-Image: /Optimize 选项使你可以立即在映像文件上开始工作。使用 /Optimize 选项时,单个子文件夹仅在 DISM 需要时添加。如果使用了 /Optimize,单个命令可能需要比通常更长的时间。
疑难解答:如果本部分的 DISM 命令失败,请尝试以下步骤:
如果此命令失败,确保使用的是安装 Windows ADK 的 DISM 的 Windows 8.1 版本。
如果你正在使用 Windows 8 或 Windows 7 电脑,则使用“部署和映像工具环境”来访问与 Windows ADK 的 Windows 8.1 版本一起安装的工具。
不要将映像装入受保护的文件夹,例如 User\Documents 文件夹。
如果 DISM 过程中断,可以考虑临时断开公共网络并禁用病毒防护。
如果 DISM 过程终端,可以考虑从 Windows PE 环境中运行命令。
装载 Windows RE 映像文件。Windows RE 映像文件是 Windows 映像的一部分。
md C:\mount\winre
Dism /Mount-Image /ImageFile:"C:\mount\windows\Windows\System32\Recovery\winre.wim" /index:1 /MountDir:"C:\mount\winre"
其中 C 是包含该映像的驱动器的驱动器号。
此步骤可能需要几分钟。
我们建议同时更新 Windows 和 Windows RE 映像,这有助于确保任何必要的文件均包括在两个映像之中。
添加驱动程序包。驱动程序包一般包括一个含有多个文件的文件夹。这些文件包括扩展名为 .inf 的文件。该文件会管理驱动程序包中的其他文件。许多启动关键驱动程序包在 Windows 映像和 Windows RE 映像中均可使用:
Dism /Add-Driver /Image:"C:\mount\windows" /Driver:"C:\SampleDriver\driver.inf"
Dism /Add-Driver /Image:"C:\mount\winre" /Driver:"C:\SampleDriver\driver.inf"
其中 C 是包含该映像的驱动器的驱动器号,“C:\SampleDriver\driver.inf”是指向特定于电脑型号的驱动程序包的路径。
虽然可以通过使用一个命令,将多个驱动程序添加到一个映像,但是逐个添加各个驱动程序包,通常更容易解决疑难问题。
验证驱动程序包是否为映像的一部分:
Dism /Get-Drivers /Image:"C:\mount\windows"
Dism /Get-Drivers /Image:"C:\mount\winre"
其中 C 是包含该映像的驱动器的驱动器号。
查看驱动程序结果列表,验证该列表是否包含你添加的驱动程序包。例如:
Published Name : oem0.inf
Original File Name : prnms001.inf
Inbox : No
Class Name : Printer
Provider Name : Microsoft
Date : 6/21/2006
Version : 6.3.
将程序包添加到 Windows 映像Service Pack 和语言包通常是文件扩展名为 .cab 的压缩文件。
Dism /Add-Package /Image:"C:\mount\windows" /PackagePath:"C:\SamplePackage\package.cab"
其中 C 是包含该映像的驱动器的驱动器号,“C:\SamplePackage\package.cab”是指向 Windows 程序包的路径。
虽然可以通过使用一个命令,将多个程序包添加到一个映像,但是如果逐个添加各个程序包,故障排除通常更容易。
验证程序包是否为映像的一部分:
Dism /Get-Packages /Image:"C:\mount\windows"
其中 C 是包含该映像的驱动器的驱动器号。
查看程序包结果列表,验证该列表是否包含该程序包。例如:
Package Identity : Microsoft-Windows-CameraCodec-Package~31bf~amd64~
State : Installed
Release Type : Update
Install Time : 1/2/ PM
查找可将映像更改到的 Windows 版本。
Dism /Image:C:\test\offline /Get-TargetEditions
注意要更改到的版本的版本 ID。
指定版本 ID 可将 Windows 映像更改为较高版本,例如,Windows 8.1 企业版。有关详细信息,请参阅 。
Dism /Image:C:\test\offline /Set-Edition:Enterprise
关闭所有可能从此映像访问文件的应用程序,如 Windows SIM。
提交更改并卸载 Windows RE 映像:
Dism /Unmount-Image /MountDir:"C:\mount\winre" /Commit
其中 C 是包含该映像的驱动器的驱动器号。
这个过程可能需要几分钟。
制作更新的 Windows RE 映像的备份拷贝:
xcopy C:\mount\windows\Windows\System32\Recovery\winre.wim E:\Images\WinRE-ModelSpecific-Backup.wim /ah
其中 C 是包含该映像的驱动器的驱动器号,E 是备份设备或卷的驱动器号。
提交更改并卸载 Windows 映像:
Dism /Unmount-Image /MountDir:"C:\mount\windows" /Commit
其中 C 是包含该映像的驱动器的驱动器号。
这个过程可能需要几分钟。
将特定于型号的映像复制到外部 USB 硬盘驱动器:
copy C:\Images\ModelSpecificImage.wim E:\Images\
其中 C 是包含该映像的驱动器的驱动器号,E 是外部 USB 硬盘驱动器的驱动器号。
使用你在中使用的相同过程和脚本来将测试电脑启动到 Windows PE 并部署新映像:
diskpart /s E:\Deployment\CreatePartitions-&Firmware&.txt
E:\Deployment\ApplyImage-&Firmware& E:\Images\ModelSpecificImage.wim
其中 E 是外部 USB 硬盘驱动器的驱动器号。
完成安装后,键入 exit 以重新启动电脑。
完成 OOBE,然后单击“桌面”。
单击“开始”,然后键入“命令提示”。右键单击“命令提示”,然后选择“作为管理员运行”。
验证驱动程序是否正确出现:
C:\Windows\System32\Dism /Get-Drivers /Online
验证程序包是否正确出现:
C:\Windows\System32\Dism /Get-Packages /Online
查看你的新驱动程序、程序包和应用如何使用 Windows 评估工具影响系统性能。有关详细信息,请参阅 。
此页面有帮助吗?
更多反馈?
1500 个剩余字符
我们非常感谢您的反馈。
(C) Microsoft 2017在硬盘驱动器上部署 Windows RE 映像_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
在硬盘驱动器上部署 Windows RE 映像
上传于|0|0|暂无简介
你可能喜欢当前位置: &
> re管理器电脑版下载
re管理器电脑版(re文件管理器PC版) v3.3.5 中文绿色版
re管理器都出电脑版了?这是真的哦,但是您需要通过才能把re管理器电脑版在电脑上运行,re管理器电脑版和一样,具有强大的文件管理功能,re文件管理器PC版已经全中文汉化,方便中国用户更好的管理手机软件和游戏。
re管理器电脑版功能介绍:
常用文件管理功能
可删除系统自带程序
查看、解压、创建Zip/Tar/Gzip文件
获取ROOT权限后可对系统文件进行操作
获取ROOT权限后通过该软件打开安装的程序可以ROOT权限运行
re管理器电脑版更新说明:
安卓3.2系统以上崩溃显示对话框。
正确显示SD卡使用和剩余空间;
re管理器电脑版使用说明:
1.下载安装完毕后。另有。
2.此时apk文件与安卓模拟器已经关联,直接双击会自动安装,如为关联可参考下一步方法,
注意:右键点击游戏apk图标,选择打开方式-&BlueStacks APK handler 即可安装。
3.安装完成之后模拟器界面就会出现游戏的图标。
4.点击BlueStacks右下角的扳手图标,选择应用显示大小。
5.在相应的应用后面,选中Tablet,点击下面的&Done&按钮。
6.然后返回主界面,点击图标,就可以开始使用了.
[download]280[/download]
re管理器电脑版下载
高速下载器通道
其他下载地址
下载不了?
2.6 MB | 简体中文 | 0分
有人问为什么Clover电脑版的图标是一个四叶草标志?因为它会给你带...
118 K | 简体中文 | 0分
DLL不是可执行文件,在电脑中是非常常见的程序,不过经常因为各种原...
36 K | 英文 | 0分
相信来到这个页面的朋友都是需要一款优秀的dns修改工具,正巧,小编...
11 K | 英文 | 0分
众所周知电脑系统的时间如果不是主板电池出现问题的话都是很准确的...
下载排行榜Linux的PCI驱动分析
1. 关键数据结构
PCI设备上有三种地址空间:PCI的I/O空间、PCI的存储空间和PCI的配置空间。CPU可以访问PCI设备上的所有地址空间,其中I/O空间和存储空间提供给设备驱动程序使用,而配置空间则由Linux内核中的PCI初始化代码使用。内核在启动时负责对所有PCI设备进行初始化,配置好所有的PCI设备,包括中断号以及I/O基址,并在文件/proc/pci中列出所有找到的PCI设备,以及这些设备的参数和属性。
Linux驱动程序通常使用结构(struct)来表示一种设备,而结构体中的变量则代表某一具体设备,该变量存放了与该设备相关的所有信息。好的驱动程序都应该能驱动多个同种设备,每个设备之间用次设备号进行区分,如果采用结构数据来代表所有能由该驱动程序驱动的设备,那么就可以简单地使用数组下标来表示次设备号。
在PCI驱动程序中,下面几个关键数据结构起着非常核心的作用:&
& pci_driver&
这个数据结构在文件include/linux/pci.h里,这是Linux内核版本2.4之后为新型的PCI设备驱动程序所添加的,其中最主要的是用于识别设备的id_table结构,以及用于检测设备的函数probe(
)和卸载设备的函数remove( ):
struct pci_driver {
& & struct list_head
& & char *
& & const struct
pci_device_id *id_
&(*probe) &(struct pci_dev *dev,
const struct pci_device_id *id);
& & void (*remove) (struct
pci_dev *dev);
&(*save_state) (struct pci_dev *dev, u32
&(*suspend)(struct pci_dev *dev, u32 state);
&(*resume) (struct pci_dev *dev);
&(*enable_wake) (struct pci_dev *dev, u32 state,
int enable);
& pci_dev&
这个数据结构也在文件include/linux/pci.h里,它详细描述了一个PCI设备几乎所有的硬件信息,包括厂商ID、设备ID、各种资源等:&
struct pci_dev {
& & struct list_head
& & struct list_head
& & struct pci_bus
& & struct pci_bus
& & void &
& & struct proc_dir_entry
& & unsigned int
& & unsigned short
& & unsigned short
& & unsigned short
&subsystem_
& & unsigned short
&subsystem_
& & unsigned int
& &rom_base_
& & struct pci_driver
& & void &
& & current_
& & unsigned short
vendor_compatible[DEVICE_COUNT_COMPATIBLE];
& & unsigned short
device_compatible[DEVICE_COUNT_COMPATIBLE];
& & unsigned int
& & struct resource
resource[DEVICE_COUNT_RESOURCE];
& & struct resource
dma_resource[DEVICE_COUNT_DMA];
& & struct resource
irq_resource[DEVICE_COUNT_IRQ];
& & char &
&name[80];
& & char &
&slot_name[8];
& & unsigned short
& & int (*prepare)(struct
pci_dev *dev);
& & int (*activate)(struct
pci_dev *dev);
& & int (*deactivate)(struct
pci_dev *dev);
2. 基本框架
在用模块方式实现PCI设备驱动程序时,通常至少要实现以下几个部分:初始化设备模块、设备打开模块、数据读写和控制模块、中断处理模块、设备释放模块、设备卸载模块。下面给出一个典型的PCI设备驱动程序的基本框架,从中不难体会到这几个关键模块是如何组织起来的。
static struct pci_device_id demo_pci_tbl [] __initdata =
& & {PCI_VENDOR_ID_DEMO,
PCI_DEVICE_ID_DEMO,
&PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEMO},
struct demo_card {
& & unsigned int
& & struct demo_card *
static void demo_interrupt(int irq, void *dev_id, struct
pt_regs *regs)
static struct file_operations demo_fops = {
& & owner:
&THIS_MODULE, &
& & read: &
& & demo_read, &
& & write:
& & &demo_write,
& & ioctl:
& & &demo_ioctl,
& & mmap: &
& & demo_mmap, &
& & open: &
& & demo_open, &
& & release:
& &demo_release
static struct pci_driver demo_pci_driver = {
& & name: &
& & demo_MODULE_NAME,
& & id_table:
& demo_pci_tbl, &
& & probe:
& & &demo_probe,
& & remove:
& & demo_remove
static int __init demo_init_module (void)
static void __exit demo_cleanup_module (void)
pci_unregister_driver(&demo_pci_driver);
module_init(demo_init_module);
module_exit(demo_cleanup_module);
上面这段代码给出了一个典型的PCI设备驱动程序的框架,是一种相对固定的模式。需要注意的是,同加载和卸载模块相关的函数或数据结构都要在前面加上__init、__exit等标志符,以使同普通函数区分开来。构造出这样一个框架之后,接下去的工作就是如何完成框架内的各个功能模块了。
3. 初始化设备模块
在Linux系统下,想要完成对一个PCI设备的初始化,需要完成以下工作:
& 检查PCI总线是否被Linux内核支持;&
& 检查设备是否插在总线插槽上,如果在的话则保存它所占用的插槽的位置等信息。&
& 读出配置头中的信息提供给驱动程序使用。&
当Linux内核启动并完成对所有PCI设备进行扫描、登录和分配资源等初始化操作的同时,会建立起系统中所有PCI设备的拓扑结构,此后当PCI驱动程序需要对设备进行初始化时,一般都会调用如下的代码:
static int __init demo_init_module (void)
(!pci_present())
& return -ENODEV;
(!pci_register_driver(&demo_pci_driver)) {
pci_unregister_driver(&demo_pci_driver);
& & return -ENODEV;
& & return 0;
驱动程序首先调用函数pci_present(
)检查PCI总线是否已经被Linux内核支持,如果系统支持PCI总线结构,这个函数的返回值为0,如果驱动程序在调用这个函数时得到了一个非0的返回值,那么驱动程序就必须得中止自己的任务了。在2.4以前的内核中,需要手工调用pci_find_device(
)函数来查找PCI设备,但在2.4以后更好的办法是调用pci_register_driver(
)函数来注册PCI设备的驱动程序,此时需要提供一个pci_driver结构,在该结构中给出的probe探测例程将负责完成对硬件的检测工作。&
static int __init demo_probe(struct pci_dev *pci_dev, const
struct pci_device_id *pci_id)
& & struct demo_card
(pci_enable_device(pci_dev))
& return -EIO;
(pci_set_dma_mask(pci_dev, DEMO_DMA_MASK)) {
& return -ENODEV;
& & if ((card =
kmalloc(sizeof(struct demo_card), GFP_KERNEL)) == NULL) {
& printk(KERN_ERR "pci_demo: out of
memory\n");
& return -ENOMEM;
& & memset(card, 0,
sizeof(*card));
& & card-&iobase =
pci_resource_start (pci_dev, 1);
& & card-&pci_dev =
& & card-&pci_id =
& & card-&irq =
& & card-&next =
& & card-&magic =
DEMO_CARD_MAGIC;
pci_set_master(pci_dev);
request_region(card-&iobase, 64,
card_names[pci_id-&driver_data]);
& & return 0;
4. 打开设备模块
在这个模块里主要实现申请中断、检查读写模式以及申请对设备的控制权等。在申请控制权的时候,非阻塞方式遇忙返回,否则进程主动接受调度,进入睡眠状态,等待其它进程释放对设备的控制权。
static int demo_open(struct inode *inode, struct file
request_irq(card-&irq, &demo_interrupt, SA_SHIRQ,
& card_names[pci_id-&driver_data], card))
& & if(file-&f_mode &
FMODE_READ) {
& & if(file-&f_mode &
FMODE_WRITE) {
down(&card-&open_sem);
& & while(card-&open_mode
& file-&f_mode) {
& if (file-&f_flags & O_NONBLOCK) {
up(&card-&open_sem);
& & & return
& } else {
card-&open_mode |= f_mode & (FMODE_READ |
FMODE_WRITE);
up(&card-&open_sem);
MOD_INC_USE_COUNT;
5. 数据读写和控制信息模块
PCI设备驱动程序可以通过demo_fops 结构中的函数demo_ioctl(
),向应用程序提供对硬件进行控制的接口。例如,通过它可以从I/O寄存器里读取一个数据,并传送到用户空间里:
static int demo_ioctl(struct inode *inode, struct file
unsigned int cmd, unsigned long arg)
& & switch(cmd) {
& case DEMO_RDATA:
& & & val =
inl(card-&iobae + 0x10); & &
& & & return
事实上,在demo_fops里还可以实现诸如demo_read( )、demo_mmap(
)等操作,Linux内核源码中的driver目录里提供了许多设备驱动程序的源代码,找那里可以找到类似的例子。在对资源的访问方式上,除了有I/O指令以外,还有对外设I/O内存的访问。对这些内存的操作一方面可以通过把I/O内存重新映射后作为普通内存进行操作,另一方面也可以通过总线主DMA(Bus
Master DMA)的方式让设备把数据通过DMA传送到系统内存中。
6. 中断处理模块
PC的中断资源比较有限,只有0~15的中断号,因此大部分外部设备都是以共享的形式申请中断号的。当中断发生的时候,中断处理程序首先负责对中断进行识别,然后再做进一步的处理。
static void demo_interrupt(int irq, void *dev_id, struct
pt_regs *regs)
& & struct demo_card *card =
(struct demo_card *)dev_
spin_lock(&card-&lock);
& & status =
inl(card-&iobase + GLOB_STA);
& & if(!(status &
INT_MASK))&
& spin_unlock(&card-&lock);
& & outl(status &
INT_MASK, card-&iobase + GLOB_STA);
spin_unlock(&card-&lock); &
7. 释放设备模块
释放设备模块主要负责释放对设备的控制权,释放占用的内存和中断等,所做的事情正好与打开设备模块相反:
static int demo_release(struct inode *inode, struct file
& & card-&open_mode
&= (FMODE_READ | FMODE_WRITE); &
wake_up(&card-&open_wait);
up(&card-&open_sem); &
& & free_irq(card-&irq,
card); & &
& & MOD_DEC_USE_COUNT;
8. 卸载设备模块
卸载设备模块与初始化设备模块是相对应的,实现起来相对比较简单,主要是调用函数pci_unregister_driver(
)从Linux内核中注销设备驱动程序:&
static void __exit demo_cleanup_module (void)
pci_unregister_driver(&demo_pci_driver);
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 sys驱动文件怎么安装 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信