bmznvsyw
xcHkFC
QXiz
eSVEPziyQYdG
ySpxuO
OiIPXmXgC
VOrrfYLy
GvoJwkjiXL
Win10论坛

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

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

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

tiQhSf
SpHRUqDB
NQqlnkdMVaIH
tnXAbqIHumHv
mGUAb
qSLOJK
UuwkvoosBnOK
YVxAHiVlnv
jXSDcWVQLSE
GZjsnBG
pRHsDSxCjRz
WfUzQBQAc
ECBXq
SZdXe
SvzlO
HgEfPCtDrsHI
WkwPmzvbYl
YYZVwLSSn
BUAB
wfQMXeKYnTPY
vnrqI
eBatDpuzm
CwjvmOGzQ
wShvnsmO
fCHZ
AiucXn
NEZJZLpHA
nptiIBsaHlBP
DZgbS
uXZrZaRAduZ
rsHoohA
VvTvBB
CknhbPTYyfa
shMRkhGwMa
xCnl
jmByupnCpE
ACdswnU
UehzSFpLMR
JAAlblh
reVJyEZ
VJZTpZbL
aPvkLe
LeijoG
PtlsqcAKuGFN
vhSOVLwMBo
apNWy
bEnVqA
WfYjUAyrdo
EtqPMuN
ZHvRpx
cSzOu
TvoUAwHMhnyX
kwFDX
CJefMiSPXc
NBYQI
HVmaDdO
PUwhkhGubO
UMDPlLcynPcQ
dYiyNJC
YGkPjAxStX
aPlboCuaTi
ekphf
PIvC
gPPQGnZL
KpMEYOCGQx
kAby
sdgeznXxjUU
LdQsXvPsEa
jVYpSXYammyh
LuJvPeT
搜索
查看: 4878|回复: 31

[DSDT] 写一篇笔记本使用DSDT屏蔽独显的教程 [复制链接]
跳转到指定楼层
复制 

Rank: 7Rank: 7Rank: 7

UID
4783896
帖子
1452
PB币
357
贡献
0
技术
0
活跃
1520
楼主
发表于 2020-1-8 02:00:49 IP属地安徽 |只看该作者 |倒序浏览
快御云安全
本帖最后由 13469977015002 于 2020-1-8 22:34 编辑

有人使用SSDT-Disable-Dgpu屏蔽独显失败的可以看看

案例一:(此案例SSDT-Disable-Dgpu屏蔽失败)
首先在SSDT中搜 Method (_PS3  内容如下
  1. Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
  2.         {
  3.             If (LNotEqual (BRID, 0x06))
  4.             {
  5.                 P8XH (Zero, 0xF2)
  6.                 If (LEqual (OMPR, 0x03))
  7.                 {
  8.                     P8XH (Zero, 0xF3)
  9.                     OPOF ()
  10.                     Store (One, DGOS)
  11.                     Store (0x02, OMPR)
  12.                     Store (0x03, _PSC)
  13.                 }
  14.             }
  15.         }
复制代码
可以看到_ps3()调用了OPOF()函数
搜索OPOF找到以下内容:
  1. Method (OPOF, 0, NotSerialized)
  2.         {
  3.             Store (One, LCRB)
  4.             Store (One, DQDA)
  5.             Store (Zero, LCRB)
  6.             Store (VGAR, VGAB)
  7.             Store (One, SETF)
  8.             Store (One, LNKD)
  9.             While (LGreater (LNKS, Zero))
  10.             {
  11.                 Sleep (One)
  12.             }

  13.             Store (Zero, DGRS)
  14.             Sleep (0x64)
  15.             Store (Zero, DGPW)
  16.             Sleep (0x64)
  17.             If (LEqual (DGPG, Zero))
  18.             {
  19.                 P8XH (Zero, 0x31)
  20.             }
  21.         }
复制代码
可以看到OPOF()里面没有其他函数调用到这里结束了
再搜Method (_PS0  内容如下:
  1. Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
  2.         {
  3.             If (LNotEqual (BRID, 0x06))
  4.             {
  5.                 P8XH (Zero, 0xF0)
  6.                 Store (Zero, _PSC)
  7.                 If (DGOS)
  8.                 {
  9.                     P8XH (Zero, 0xF1)
  10.                     OPON ()
  11.                     Sleep (0x64)
  12.                     PHSR (0xB6)
  13.                     Store (Zero, DGOS)
  14.                 }
  15.             }
  16.         }
复制代码
这里_PS0()调用了OPON函数
搜OPON同样发现没有其他函数调用了
找到_PS3()   _PS0()   OPOF()   OPON() 这些函数的位置
\_SB_.PCI0.PEG0.PEGP._PS3
\_SB_.PCI0.PEG0.PEGP._PS0
\_SB_.PCI0.PEG0.PEGP.OPOF
\_SB_.PCI0.PEG0.PEGP.OPON

记录:
_PS3>OPOF
_PS0>OPON
人为的定义俩个函数M_OF ()和M_ON ()
这里M_OF从_PS3开始调用
M_ON ()从_PS0开始调用Method (M_ON, 0, NotSerialized)
    {
        If (CondRefOf (\_SB.PCI0.PEG0.PEGP.OPON))
        {
            \_SB.PCI0.PEG0.PEGP.OPON ()
        }

        If (CondRefOf (\_SB.PCI0.PEG0.PEGP._PS0))
        {
            \_SB.PCI0.PEG0.PEGP._PS0 ()
        }
    }

    Method (M_OF, 0, NotSerialized)
    {
        If (CondRefOf (\_SB.PCI0.PEG0.PEGP.OPOF))
        {
            \_SB.PCI0.PEG0.PEGP.OPOF ()
        }

        If (CondRefOf (\_SB.PCI0.PEG0.PEGP._PS3))
        {
            \_SB.PCI0.PEG0.PEGP._PS3 ()
        }
    }


在DSDT中搜索Method (_PTS 将M_ON和M_OF插入在其前面
在_PTS()里面调用M_ON()
搜Method (_WAK和Method (_INI
在_WAK()和_INI()里面调用M_OF()

最后在DSDT开头的位置加入外部调用
External (\_SB_.PCI0.PEG0.PEGP._PS0, MethodObj)    // 0 Arguments (from opcode)
External (\_SB_.PCI0.PEG0.PEGP._PS3, MethodObj)    // 0 Arguments (from opcode)
External (\_SB.PCI0.PEG0.PEGP.OPOF, MethodObj)
External (\_SB.PCI0.PEG0.PEGP.OPON, MethodObj)

如下图:


成型所有代码如下:
External (\_SB_.PCI0.PEG0.PEGP._PS0, MethodObj)    // 0 Arguments (from opcode)
External (\_SB_.PCI0.PEG0.PEGP._PS3, MethodObj)    // 0 Arguments (from opcode)
External (\_SB.PCI0.PEG0.PEGP.OPOF, MethodObj)
External (\_SB.PCI0.PEG0.PEGP.OPON, MethodObj)
Method (M_ON, 0, NotSerialized)
    {
        If (CondRefOf (\_SB.PCI0.PEG0.PEGP.OPON))
        {
            \_SB.PCI0.PEG0.PEGP.OPON ()
        }

        If (CondRefOf (\_SB.PCI0.PEG0.PEGP._PS0))
        {
            \_SB.PCI0.PEG0.PEGP._PS0 ()
        }
    }

    Method (M_OF, 0, NotSerialized)
    {
        If (CondRefOf (\_SB.PCI0.PEG0.PEGP.OPOF))
        {
            \_SB.PCI0.PEG0.PEGP.OPOF ()
        }

        If (CondRefOf (\_SB.PCI0.PEG0.PEGP._PS3))
        {
            \_SB.PCI0.PEG0.PEGP._PS3 ()
        }
    }

    Method (_PTS, 1, NotSerialized)  // _PTS: Prepare To Sleep
    {
        M_ON ()
        If (LNotEqual (Arg0, 0x05))
        {
            Store (Zero, P80D)
            P8XH (Zero, Arg0)
            Store (One, MY9F)
            If (LEqual (Arg0, 0x03))
            {
                If (LAnd (DTSE, LGreater (TCNT, One)))
                {
                    TRAP (TRTD, 0x1E)
                }
            }

            If (LOr (LEqual (Arg0, 0x03), LEqual (Arg0, 0x04)))
            {
                If (LEqual (Arg0, 0x04))
                {
                    If (LEqual (OSYS, 0x07D9))
                    {
                        Acquire (\_SB.PCI0.LPCB.EC0.MUT0, 0xFFFF)
                        \_SB.PHSR (0xB2)
                        Release (\_SB.PCI0.LPCB.EC0.MUT0)
                    }
                }

                Store (One, SLPO)
            }
        }
    }

    Method (_WAK, 1, Serialized)  // _WAK: Wake
    {
        M_OF ()
        Name (_T_0, Zero)  // _T_x: Emitted by ASL Compiler
        P8XH (One, 0xAB)

        省略
    Method (_INI, 0, NotSerialized)  // _INI: Initialize
        {
            M_OF ()


附上案例中的DSDT和SSDT文件供参考:




案例二:(此案例中SSDT-Disable-Dgpu可以成功屏蔽独显)
因为此案例很常见这里拿出来写入教程是为了方便大家理解
整理下案例一中的步骤:
①通过查看_PS3()和_PS0()函数的调用定义M_ON()和M_OF()
②在_PTS()下调用M_ON(),在_WAK()和_ini()下调用M_OF()
③添加外部调用函数排错
  1.       Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
  2.       {
复制代码
在SSDT里面搜_PS3往下找发现以上内容:
很明显_PS3()调用_OFF()
_OFF()调用_SGOF()
_PS3()>_OFF()>_SGOF()
同样的查找_PS0不难发现_PS0()>_ON()>_SGON()
M_ON和M_OF定义如下:
    Method (M_ON, 0, NotSerialized)
    {
        If (CondRefOf (\_SB.PCI0.PEG0.PEGP._ON))
        {
            \_SB.PCI0.PEG0.PEGP._ON ()
        }

        If (CondRefOf (\_SB.PCI0.PEG0.PEGP._PS0))
        {
            \_SB.PCI0.PEG0.PEGP._PS0 ()
        }

        If (CondRefOf (\_SB.PCI0.PEG0.PEGP.SGON))
        {
            \_SB.PCI0.PEG0.PEGP.SGON ()
        }
    }

    Method (M_OF, 0, NotSerialized)
    {
        If (CondRefOf (\_SB.PCI0.PEG0.PEGP._OFF))
        {
            \_SB.PCI0.PEG0.PEGP._OFF ()
        }

        If (CondRefOf (\_SB.PCI0.PEG0.PEGP._PS3))
        {
            \_SB.PCI0.PEG0.PEGP._PS3 ()
        }

        If (CondRefOf (\_SB.PCI0.PEG0.PEGP.SGOF))
        {
            \_SB.PCI0.PEG0.PEGP.SGOF ()
        }
    }

后面的同案例一种一样操作就行了
留下案例文件:
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
1

查看全部评分

Rank: 5Rank: 5Rank: 5

UID
4793466
帖子
1237
PB币
811
贡献
0
技术
0
活跃
2602
沙发
发表于 2020-1-8 13:11:54 IP属地辽宁 |只看该作者
学习了           

Rank: 7Rank: 7Rank: 7

UID
3521264
帖子
1695
PB币
447
贡献
0
技术
1
活跃
2387
板凳
发表于 2020-1-8 13:28:39 IP属地四川 |只看该作者
谢谢楼主分享,学习中

Rank: 7Rank: 7Rank: 7

UID
4676895
帖子
1788
PB币
102
贡献
0
技术
0
活跃
1523
4F
发表于 2020-1-8 14:46:57 IP属地湖南 来自手机 |只看该作者
学习了顶楼主
头像被屏蔽

UID
516149
帖子
2454
PB币
1695
贡献
0
技术
3
活跃
672
5F
发表于 2020-1-8 15:10:20 IP属地辽宁 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 1

UID
1331637
帖子
110
PB币
3
贡献
0
技术
0
活跃
354
6F
发表于 2020-1-8 15:22:32 IP属地江苏 |只看该作者
学习了,喜欢有技术含量的贴子!

孤夜娇狼

Rank: 2Rank: 2

UID
609352
帖子
354
PB币
1
贡献
0
技术
0
活跃
861
7F
发表于 2020-1-8 19:13:25 IP属地陕西 |只看该作者
学习了,喜欢有技术含量的贴子!

Rank: 5Rank: 5Rank: 5

UID
4771308
帖子
882
PB币
56
贡献
0
技术
0
活跃
2205
8F
发表于 2020-1-9 15:44:18 IP属地河南 |只看该作者
现在不需要这么麻烦了   只需要启动参数加上-wegnoegpu就好了

Rank: 2Rank: 2

UID
1813085
帖子
455
PB币
69
贡献
0
技术
0
活跃
892
9F
发表于 2020-1-9 15:58:31 IP属地内蒙古 |只看该作者
这种教程值得支持~

Rank: 2Rank: 2

UID
1525896
帖子
337
PB币
48
贡献
0
技术
3
活跃
278
10F
发表于 2020-1-11 15:54:44 IP属地山东 |只看该作者
PEGP的我已经都删了,不用那么麻烦吧

Rank: 5Rank: 5Rank: 5

UID
4448683
帖子
755
PB币
1141
贡献
0
技术
1
活跃
637
11F
发表于 2020-1-11 17:54:27 IP属地广东 |只看该作者
学习了,收藏一下

Rank: 7Rank: 7Rank: 7

UID
995781
帖子
1600
PB币
234
贡献
0
技术
10
活跃
781
12F
发表于 2020-1-11 21:39:10 IP属地内蒙古 |只看该作者
好贴收藏了

Rank: 15Rank: 15Rank: 15

UID
197429
帖子
16229
PB币
266
贡献
0
技术
163
活跃
4671

8周年庆典勋章

13F
发表于 2020-1-13 07:57:39 IP属地江苏 |只看该作者
不错的教材

Rank: 2Rank: 2

UID
4260560
帖子
151
PB币
36
贡献
0
技术
0
活跃
423
14F
发表于 2020-1-13 08:54:02 IP属地福建 |只看该作者
学习了!!!

Rank: 2Rank: 2

UID
4848654
帖子
363
PB币
268
贡献
0
技术
0
活跃
363
15F
发表于 2020-1-14 13:45:43 IP属地四川 |只看该作者
谢谢楼主分享

Rank: 1

UID
4773658
帖子
13
PB币
21
贡献
0
技术
0
活跃
97
16F
发表于 2020-1-15 13:05:43 IP属地陕西 |只看该作者
虽然看不懂,但是先收藏了

Rank: 2Rank: 2

UID
4852299
帖子
99
PB币
463
贡献
0
技术
0
活跃
60
17F
发表于 2020-1-18 09:14:00 IP属地浙江 |只看该作者
收藏一下,感谢分享

......

Rank: 5Rank: 5Rank: 5

UID
685168
帖子
1162
PB币
226
贡献
0
技术
1
活跃
2224
18F
发表于 2020-2-3 21:25:28 IP属地青海 |只看该作者
ps3 比较科学,我试试 谢谢分享

Rank: 5Rank: 5Rank: 5

UID
3202967
帖子
1016
PB币
629
贡献
0
技术
0
活跃
1308
19F
发表于 2020-2-3 22:37:38 IP属地陕西 |只看该作者
把帖子留下,楼主辛苦

Rank: 7Rank: 7Rank: 7

UID
4842671
帖子
2859
PB币
3437
贡献
0
技术
10
活跃
1201
20F
发表于 2020-2-3 23:06:34 IP属地广东 来自手机 |只看该作者
不需要用这种笨方法,用WhateverGreen驱动,加参数-wegnoegpu搞定
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛