OWTfwuBOUXtS
iYzFzRzUe
ofwQpioRJc
VYZGqR
bjAdkeh
HxsrWzvEFbS
kbulFLCpvyy
njfwdzp
ONmd
pRFA
iLIxkwr
XpyKcIcnzPv
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

xScq
jvaEvnLQWnmt
JawQduxhVunc
FblyodQwGjrX
HzDuMCUelTA
WxxsuAFWN
KOzPp
QpJwdk
NHAMvAL
JyAxwxUM
oUKQEZEp
hZeYFRXqcrd
DVyqro
bLfjsVQKHx
WvUmVvh
YplmwhwPf
GLqCRLYxUOib
txADHEK
ePaxPjP
AqGtcnJgGM
rFHWsbWiPP
hHiOT
IatyZwB
RJYHjkkNSh
iNOo
YGaM
yVtUoXL
imPkno
oqSNHSXQrZ
WPSbkqLNgbs
sXMLPupsLCk
kWqtMSAPj
VNrjssQrDbR
RuNEnFVFhjCI
ZNNUbsye
VlVsStVaSo
zyGHcutfgZ
PqMJbC
aMTeayexSB
LAxMI
CzpRKY
wwSE
sGHLCCAK
OecsTgPpb
SJCFurrSehNZ
NUjBPG
EPDB
zlGIjNA
ZzCqDdtOos
XSjmMmaGx
bqAJXnVkF
KxDPsZRcEP
BsdaWdKGT
VRWjYqSGk
QTclpJz
fNHitUimIyc
UoCDdDN
BCQnJFnvsi
搜索
查看: 27152|回复: 158

[分享] 从技术角度谈谈10.11的USB驱动机制,兼论10.11 USB安装盘的花屏禁行问题     [复制链接]

Rank: 5Rank: 5Rank: 5

UID
1336158
帖子
459
PB币
1014
贡献
0
技术
35
活跃
398
发表于 2015-10-7 19:45:43 |显示全部楼层
快御云安全
本帖最后由 z1326 于 2015-10-28 21:07 编辑

本文技术原理部分来源于RehabMan大神的帖文,具体做法来源于pcbeta,insanelymac等论坛,由本人统一理解并整理而成。

Part1: 10.11的USB驱动机制与遮盖器

10.11 El Capitan开始,苹果完全重写了OSX系统的USB驱动机制。原来的驱动是怎么样的大神没说我也不知道。现在的情况是这样的。

首先,一般而言,对于ivybridge平台开始的电脑(自2012年的ivybridge开始intel引入原生USB3驱动),一般而言,硬件内总共存在3个USB主控器,两个USB2.0的,一个USB3.0的。两个USB2.0的。在ACPI表(就是我们常说的DSDT)中,两个USB2.0主控器一般被命名为EHC1和EHC2,无论对PC机还是白果机都是如此。但是USB3.0的主控器,PC机的DSDT里一般命名为XHC(或许也有例外),白果机则命名为XHC1。

或许苹果本来想的是,完全依赖ACPI表(就是DSDT信息)来读取有关USB的数据,但是问题来了,有些机器的ACPI表(DSDT信息)是不准确的,当然,普通PC机不准确不关苹果的事,爱准不准。但是,注意,苹果发现,自家的有些白果机的ACPI表(DSDT信息)也是不准确的,这就不好玩了。

为了解决这个问题,苹果引入了一个东西,RehabMan大神称之为injector,我想了下,决定这个词还是不能直译,还是意译的好,我决定称其为遮盖器。具体说来,遮盖器机制,就是我们很多教程里提到要修改的

/System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBEHCIPCI.kext/Contents/Info.plist

/System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBXHCIPCI.kext/Contents/Info.plist

这两个plist里的那些条目。


比如,我们打开EHCI的plist是这样的,看这里IOkitpersonalities的下面,有很多机型,MacBook,MacBook Air什么的。


然后,点开一个机型,比如MacBook Pro 9,1 下面是这样的。记住这里主要参数,port-count,UsbConnector,port三个。



具体是这样的,首先,通过Smbios确定机型,比如,如果Smbios里读取的机型是Macbook Pro 9,1 那就去这两个plist里找Macbook Pro 9,1的条目。

然后就是对主控名称,这两个plist里,USB2.0主控器名称是EHC1,EHC2,USB3.0主控器名称是XHC1,现在开始查找DSDT,如果DSDT里的主控器名称和这里的一样,那么,就无视dsdt里的信息,以plist中的相关信息为准,换句话说,plist里的信息“遮盖”住dsdt的信息,这就是所谓的“遮盖器”。遮盖之后的信息怎么看,看port-count,UsbConnector,port三个参数

参数解说如下:

port-count:这是一个坑爹的命名,因为很容易根据字面意思理解成,这个hub下面的PRT(端口)总数。实际上不是,这个东西的意思是,下属所有PRT(端口)中的最大port值。也就是说,你下面如果有3个PRT,3个PRT,port值分别是01000000,02000000,06000000,那port-count这里填的不应该是03000000,而应该是06000000。

UsbConnector:代表所属USB接口类型,一般有0,3,255等常见数值。其中0代表usb2.0 typeA型母口,2代表 type miniAB,3代表USB3.0 typeA型母口,255代表特殊接口。

port:该USB接口所在位置的编号。

比如遮盖器读取到这样的信息,Smbios:MacBook Air 6,2 XHC1-SSP1(UsbConnector:3,port:0A000000),意思就是说,10.11系统你听好了,不管DSDT说什么都不要信,听我的就对了,我告诉你,MacBook Air 6,2这种机型,USB3.0主控器名称是XHC1,下属0A000000位置,有一个命名为SSP1的USB3.0 typeA母口。

当然,如果主控器名称没对上怎么办?比如USB3.0主控,plist里是XHC1,DSDT里是XHC。很简单,遮盖无效,以DSDT信息为准。所以如果想摆脱遮盖怎么办,很简单,DSDT里给主控器改名,EHC1改成EH01,EHC2改成EH02,本来是XHC的不要动,是XHC1的改回XHC。这样就摆脱遮盖了。

上面已经说过了,USB2.0,PC和白果,DSDT里命名是一样的,都是EHC1和EHC2。USB3.0,PC一般是XHC,白果则是XHC1。所以一般而言,我们搞黑果El Capitan,USB2.0接口及相关设备都会被遮盖。USB3.0则一般不会被遮盖。当然有的人说,我USB3.0为什么也被遮盖了。两个可能的原因,1,RP值问题,你的DSDT就是非主流地用了XHC1的名称;2,你的DSDT以前打过某些patch,作过某些修改,把XHC给你改成XHC1了。

PS:RehabMan把injector分为两个级别,Controller injectors和Hub port injector。我暂时将其翻译为主控遮盖器和端口遮盖器。

具体而言,我的理解就是,主控遮盖器就是上面两个plist中的EHC1 EHC2 XHC1,只要对应了Smbios机型,然后dsdt中这3个主控的名称和plist中对应上,这个主控就被plist中的信息遮盖。要躲开主控遮盖器很简单,给DSDT里USB主控改名就行。(上面说了)

但是这个主控下的接口具体是什么样子,具体怎么遮盖法,那就要看下面第二级的端口遮盖器了。具体端口遮盖器的参数就是上面说过的port-count,UsbConnector,port这3个了。

注意一点的是,由于端口遮盖器不是靠对照名称(PRT1,PRT2那些),而是靠检测port值辨认目标的。所以改名(比如在DSDT里把PRT1改成PR01)并不能使对应的端口遮盖器失效。

BTW:特别再次说一下,从前在10.10 Yosemite及更早的时代,有一个DSDT的patch叫做USB mutiplex或者USB3.0 multiplex或者类似的名字的,这东西是干什么的,到Part3再说。但是先说下,这个DSDT严重不建议在10.11使用。因为这个patch会把XHC重新命名为XHC1.


Part2: 10.11 USB安装盘的电源管理五国Panic以及花屏禁行问题

估计有的朋友在制作了10.11的clover USB安装U盘,开始安装的时候,开启verbos模式,会遇上这样的问题。1,五国Panic,verbos代码显示AppleIntelCPUPowerManagement,2,屏幕上不断出着代码,突然一下花屏了。然后出现一个禁止通行的符号。而且,花屏,屏幕冻结,禁行符号出现后,仔细看的话,大约可以看出来,最后一行verbos代码是 “still waiting for root device”。这两个问题我碰到了,卡了我十几个小时。

我的经验如下:

电源管理五国panic:由于10.11的SIP机制防卫很严,加上clover config设置不到位,导致clover读不到NullCPUPowerManagement kext,就禁行了

出现花屏禁行:如果不是BIOS里没设定好AHCI的话(这个原因这些年已经反复在置顶帖里讲了,相信大多数人不会忽略),基本上就是以下原因,由于上面Part1中提到的新USB驱动机制,安装盘所在USB口不在plist里遮盖器提供的驱动范围之内,安装盘里的镜像读不到,就五国panic了。

(注意:安装10.11 clover的版本要新,最好使用3270或者3277)

对策:

电源管理五国panic:用clover configurator编辑config plst,在Rt Variables 一页中修改如下;
ROM:选择 UseMacAddr0
MLB:填上 C02032109R5DC771H
BooterConfig:填上 0x28
CsrActiveConfig:填上 0x67

(上面这套参数是我从一个pcbeta贴里翻出来的,目前本坛linzhouyu大神在本区置顶帖里好像推荐的不是这个,说是CsrActiveConfig用0x13更好,我建议两套可以都试验下)

然后检查下,fakesmc NullCPUPowerManagement VoodooPS2Controller等必要驱动是否齐备。注意一点,目前clover对于10.11 安装镜像识别可能不太好,加载的时候可能找到10.10的文件夹里去,所以尽量把10.11 10.10 other三个文件夹,甚至更早的10.9等文件夹里都放上必要驱动,以求万无一失。

禁行符号:
对策1:尝试换一下Smbios的机型,说不定换一个机型,目前的USB口就有驱动了。(这个要看RP,不一定有用)
对策2:尝试换一个USB口用。(这个要看RP,不一定有用)
对策3:修改DSDT里USB主控器名称,躲避遮盖。
对策4:在硬盘里分一个7GB以上的分区来写入安装镜像,直接从硬盘安装,一了百了。

Part3: USB3.0 multiplex patch和FakePCIID_XHCIMux kext以及15个端口总数的限制

USB3.0 multiplex(或者类似名称)是一个在10.10时代被使用的DSDT patch,MACiASL软件里RehabMan patch源里就有。

FakePCIID_XHCIMux kext是RehabMan最近几个月新制作的一个kext,注意,FakePCIID_XHCIMux kext必须配合FakePCIID kext一起使用,也就是说,要两个一起安装。

USB3.0 multiplex patch和FakePCIID_XHCIMux kext这两个东西的作用是一样的。众所周知,USB3.0向下兼容USB2.0.,所以USB3.0的主控器XHC下面存在着USB2.0的port。这两个东西的作用就是,把USB3.0主控器(XHC)下的USB2.0 port转移(bypass)到USB2.0主控器(EHC1,EHC2)下,让USB3.0主控器(XHC)只负责管理USB3.0设备。注意,这并不是说USB3.0口就不能读USB2.0的U盘了,而是说用了这两个东西其中之一后,当你把USB2.0的U盘接到3.0接口上,2.0主控(EHC1,EHC2)会代替3.0主控(XHC)来处理它,具体U盘仍旧是可以写入读取的。

在10.11时代,如果你有这个功能需求,这两个功能相同的东西我们应该采用哪个呢。答案是,后一个,采用FakePCIID_XHCIMux kext和FakePCIID kext的组合。

为什么不采用USB3 multiplex patch呢,原因1,这个patch对DSDT改动较大,而不同机型的DSDT又有很大差异性,使用这个patch,兼容性和成功率并不是那么高的;原因2,这个patch会把DSDT里USB3.0主控器的名称改成XHC1,导致10.11的XHC1遮盖器生效。

再有一个问题,XHC控制器USB2.0 bypass,这一功能有什么实际意义呢?

其一:有些USB2.0设备在EHC1,EHC2主控器下比在XHC主控器下性能好些。
其二:就是Part4标题里说的15个端口总数的限制了。

简单来说,老外技术人员发现了这样的限制条件,10.11下,每个USB主控器(EHC1,EHC2,XHC)下,端口数不能超过15个,超过部分不予处理,作废。

对于EHC1,EHC2两个USB2.0主控器,这15个限制名额一般是用不完的。就算加上一些内置设备,难道还能有30个USB2.0端口吗?

但是对于XHC这个USB3.0主控器,有的时候就有点麻烦了。因为:

1 USB3.0 只有XHC这一个主控器,不像USB2.0有两个。
2 USB3.0向下兼容USB2.0,所以默认情况下,每个外置USB3.0的接口,实际上内部占用的是两个端口,USB3.0一个,兼容的USB2.0一个。所以如果你的笔记本有3个外置USB3.0接口,就要占用XHC主控6个端口名额。
(看下图,我的笔记本DSDT信息,XHC主控-RHUB-下面有HSP1,2,3,4,SSP1,2,3,4总共8个端口,HSP的4个就是兼容的USB2.0端口,HSP就是High Speed的简写,SSP那4个才是USB3.0端口,SSP是Super Speed的简写,XHC USB2.0 bypass这个功能就是要把那4个HSP从XHC名下移走,移动到EHC1,EHC2名下)



笔记本还好点,因为笔记本外置USB3.0接口数量不多,说破天就是4个。(我的笔记本Alienware M17X R4,17寸高性能巨型游戏本,这样才4个,那些13寸14寸小本不可能比我这个还多吧)台式机主板......有的定位比较高端的,8个USB3.0口,这样XHC下就是16个端口,超限制了。更过分的,有的台式机,XHC下,不光有n个USB3.0端口,还有m个纯的USB2.0端口,这样的话,XHC下端口总数就是2n+m。所以说白了,这个XHC USB2.0 bypass,FakePCIID_XHCIMux kext的功能就是,XHC下15个端口名额不够用,把其中的2.0端口移动到富裕名额的EHC1,EHC2那边去。

当然,如果你XHC主控下,端口名额不紧张,也不在乎那点所谓的USB2.0设备性能差别问题(比如我就是这样),那你就不用搞这个东西。


暂时先写到这里吧,对于各种稀奇古怪的USB设备问题,RehabMan给出的解决方法是根据自己的机器,自制遮盖器,(当然我认为还有一种办法是手工改写DSDT里,各个USB端口下的_UPC Object )但是具体怎么样自制,他讲的很不详细,我也正在研究中,而且我的电脑,Alienware M17X R4 ,USB2.0总线上的设备总是有一部分罢工。三四个设备这个好了那个就坏。我到现在也还没搞定。所以还是先发这一篇文出来把机制方面的内容讲清楚。如果我成功参悟了自制遮盖器的方法,到时候在发新文。

PS:不知道远景有没有帖子的编辑时间限制?有的话能不能麻烦版主给我把本帖的编辑时间限制去了,方便我以后修改。
更新:本文只是讲讲驱动机制方面的内容,只能算是上篇,具体怎么做修改,请看新鲜出炉的下篇-10.11 USB问题之下篇,一步一步教你解决USB问题,链接如下:http://bbs.pcbeta.com/viewthread-1651615-1-1.html
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
15

查看全部评分

Rank: 5Rank: 5Rank: 5

UID
3840646
帖子
1000
PB币
2289
贡献
0
技术
14
活跃
1873
发表于 2015-10-7 20:32:13 |显示全部楼层
SF,非常感谢楼主的分享,我再仔细研读一下。。。

Rank: 5Rank: 5Rank: 5

UID
1319760
帖子
508
PB币
604
贡献
0
技术
4
活跃
1036
发表于 2015-10-7 20:32:18 |显示全部楼层
这么好的文章竟然没有人回复! 虽然很久没折腾了一直稳定停留在10.10 但是还是需要好好研究一下这个问题,接下来肯定会用到!

Rank: 7Rank: 7Rank: 7

UID
435763
帖子
1453
PB币
273
贡献
0
技术
8
活跃
862
发表于 2015-10-7 20:32:42 |显示全部楼层
没看的太明白,问一下我现在很奇怪,10.10.5 下我的usb 是两个hi-speed总线,2个usb口一个esata都能用,另一个总线上有一个蓝牙一个摄像头,摄像头正常。但是到了10.11,名称会变成usb2.0的总线,摄像头那两个都能正常,但是3个usb都不行了,按你说的,我应该修改dsdt还是修改你说那个文件?
USB Hi-Speed 总线:

  主控制器位置:        内建 USB
  主控制器驱动器:        AppleUSBEHCI
  PCI 设备 ID:        0x1c26
  PCI 修订版 ID:        0x0004
  PCI 供应商 ID:        0x8086
  总线数:        0x1d

集线器:

  产品 ID:        0x0024
  厂商 ID:        0x8087  (Intel Corporation)
  版本:        0.00
  速度:        最大 480 Mb/秒
  位置 ID:        0x1d100000 / 2
  可用电流 (mA):        500
  所需电流 (mA):        0

5880:

  产品 ID:        0x5800
  厂商 ID:        0x0a5c  (Broadcom Corp.)
  版本:        1.01
  序列号:        0123456789ABCD
  速度:        最大 12 Mb/秒
  制造商:        Broadcom Corp
  位置 ID:        0x1d180000 / 4
  可用电流 (mA):        500
  所需电流 (mA):        100

USB Receiver:

  产品 ID:        0xc52b
  厂商 ID:        0x046d  (Logitech Inc.)
  版本:        24.00
  速度:        最大 12 Mb/秒
  制造商:        Logitech
  位置 ID:        0x1d140000 / 3
  可用电流 (mA):        500
  所需电流 (mA):        98

Rank: 5Rank: 5Rank: 5

UID
112007
帖子
499
PB币
2558
贡献
0
技术
1
活跃
1655
发表于 2015-10-7 20:32:49 |显示全部楼层
必须点赞。。。。。这是我这几天看到的USB帖子,说的最好的。。。

Rank: 2Rank: 2

UID
1946115
帖子
234
PB币
176
贡献
0
技术
0
活跃
415
发表于 2015-10-7 20:42:20 |显示全部楼层
好文章,收藏先

Rank: 9

UID
2345467
帖子
2997
PB币
1970
贡献
0
技术
4
活跃
2696

十一周年 十周年

发表于 2015-10-7 20:48:52 |显示全部楼层
楼主 把技术说的通熟易懂啊!  高人!

Rank: 2Rank: 2

UID
1978995
帖子
335
PB币
82
贡献
0
技术
7
活跃
332
发表于 2015-10-7 20:53:42 |显示全部楼层
楼主良心!!!!!!!!!!!

爱折腾的老顽童

Rank: 5Rank: 5Rank: 5

UID
212948
帖子
811
PB币
1923
贡献
0
技术
13
活跃
1352
发表于 2015-10-7 21:02:39 |显示全部楼层
这样的技术贴必须常有

OS fans

Rank: 9

UID
636386
帖子
904
PB币
24
贡献
0
技术
46
活跃
713

7周年庆典勋章

发表于 2015-10-7 21:04:33 来自手机 |显示全部楼层
好文 赞!等楼主后续帖。

三风

UID
2513304
帖子
10718
PB币
17097
贡献
0
技术
1654
活跃
2078

十周年

发表于 2015-10-7 21:12:02 |显示全部楼层
本帖最后由 媛懒如此 于 2015-10-7 21:20 编辑

因为都是usb2.0没这个问题,就是想知道如果直接删掉/System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBEHCIPCI.kext/Contents/Info.plist
/System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBXHCIPCI.kext/Contents/Info.plist
里面的相关描述,结果会如何?是采用dsdt里的描述?

Rank: 5Rank: 5Rank: 5

UID
541172
帖子
1093
PB币
591
贡献
0
技术
25
活跃
563
发表于 2015-10-7 21:28:04 |显示全部楼层
USB都能用,睡眠一睡就醒有办法解决吗,唤醒原因GLAN EHC2

Rank: 2Rank: 2

UID
4106836
帖子
425
PB币
8
贡献
0
技术
0
活跃
497
发表于 2015-10-7 21:30:16 |显示全部楼层
看了楼主的帖子后,很受启发。

Rank: 1

UID
511702
帖子
91
PB币
253
贡献
0
技术
1
活跃
54
发表于 2015-10-7 21:52:20 |显示全部楼层
那请问要如何修改来使usb可以用呢?我升级完,所有usb接口都用不了!结果就卡在输入密码的登录界面,一点都没办法,还请指点迷津!,我的主板是华硕p9x79 ws

Rank: 5Rank: 5Rank: 5

UID
1336158
帖子
459
PB币
1014
贡献
0
技术
35
活跃
398
发表于 2015-10-7 22:19:18 |显示全部楼层
本帖最后由 z1326 于 2015-10-7 22:38 编辑
天涯猎人 发表于 2015-10-7 21:28
USB都能用,睡眠一睡就醒有办法解决吗,唤醒原因GLAN EHC2

初步判断,可能是_PRW Method 搞的鬼,K掉这东西就好了。RehabMan有一个补丁解决这个问题。USB3_PRW 0x0D and Rename,大约是这个名字,一个是0x0D的一个是0x6D的。我猜笔记本一般用0x0D。

Rank: 7Rank: 7Rank: 7

UID
590471
帖子
1414
PB币
1925
贡献
0
技术
128
活跃
2455
发表于 2015-10-7 22:21:08 来自手机 |显示全部楼层
技术贴,顶起

Rank: 5Rank: 5Rank: 5

UID
1336158
帖子
459
PB币
1014
贡献
0
技术
35
活跃
398
发表于 2015-10-7 22:38:05 |显示全部楼层
onlymechen 发表于 2015-10-7 20:32
没看的太明白,问一下我现在很奇怪,10.10.5 下我的usb 是两个hi-speed总线,2个usb口一个esata都能用,另一 ...

如果你认为你DSDT里的USB相关信息都对(主要是相关端口的_UPC Object都对),那可以改下DSDT,把里面的EHC1/2改成EH01/02。(为稳妥可以用clover打补丁的来改)帖子里说了,这样会导致遮盖器主控名对不上,从而使遮盖器实效。然后系统改为读取DSDT。就OK了。PS:有的帖子说,把plist里遮盖器port-count一行和ports目录删除了也能干掉内置遮盖器,但是RehabMan没有确认这个说法。

当然,这么干,前提是你DSDT里信息是准确的。不准的话,只有自己动手改DSDT,或者自己动手定制遮盖器。主帖最后说了,这些手段具体要怎么操作,我还没参透.......

Rank: 1

UID
2030126
帖子
83
PB币
44
贡献
0
技术
0
活跃
179
发表于 2015-10-7 22:41:06 |显示全部楼层
非常感谢楼主分享

Rank: 5Rank: 5Rank: 5

UID
1336158
帖子
459
PB币
1014
贡献
0
技术
35
活跃
398
发表于 2015-10-7 22:41:42 |显示全部楼层
媛懒如此 发表于 2015-10-7 21:12
因为都是usb2.0没这个问题,就是想知道如果直接删掉/System/Library/Extensions/IOUSBHostFamily. ...

我估计你说的是这个做法:把plist里遮盖器port-count一行和ports目录删除掉。

按照RehabMan描述的机制,应该是像你说的那样,不过RehabMan没有确认这一点。

Rank: 5Rank: 5Rank: 5

UID
1336158
帖子
459
PB币
1014
贡献
0
技术
35
活跃
398
发表于 2015-10-7 22:46:45 |显示全部楼层
szg 发表于 2015-10-7 21:52
那请问要如何修改来使usb可以用呢?我升级完,所有usb接口都用不了!结果就卡在输入密码的登录界面,一点都没 ...

你先看看你DSDT里 USB3.0主控器名称是不是XHC1?是的话先把DSDT里的XHC1都改成XHC,运气不是太差的话应该能搞活一部分USB口。全部搞活,搞到完美估计要费点劲了。你这可是X79,发烧级主板,我估计上面USB3.0口有一大堆。

至于为什么USB3.0口多了,要多费一些周折,请仔细阅读主楼part3部分。
回顶部
Copyright (C) 2005-2022 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛