- 积分
- 55
- 最后登录
- 2021-7-5
- 精华
- 0
- 阅读权限
- 20
- 主题
- 5
- UID
- 4810777
- 帖子
- 137
- PB币
- 0
- 威望
- 0
- 贡献
- 0
- 技术
- 0
- 活跃
- 203
- UID
- 4810777
- 帖子
- 137
- PB币
- 0
- 贡献
- 0
- 技术
- 0
- 活跃
- 203
|
发表于 2016-11-13 23:10:08
IP属地日本
|显示全部楼层
搞不清楚如何区分参数是MethodObj还是IntObj?请大神解解惑!感谢!
如下面代码:- External (EBAS, MethodObj) // 1 Arguments
复制代码
- OperationRegion (MSID, SystemMemory, EBAS(0x50))
- Field (MSID, DWordAcc, Lock, Preserve)
- {
- VEID, 16,
- Offset (0x40),
- NVID, 32,
- Offset (0x4C),
- ATID, 32
- }
复制代码
如果EBAS是MethodObj,这样是可以通过编译的。但是,如果这个方法的EBAS参数类型是IntObj:
- External (EBAS, IntObj) // 1 Arguments
复制代码
- OperationRegion (MSID, SystemMemory, EBAS, 0x50)
- Field (MSID, DWordAcc, Lock, Preserve)
- {
- VEID, 16,
- Offset (0x40),
- NVID, 32,
- Offset (0x4C),
- ATID, 32
- }
复制代码
如上,这样也能通过编译,假设第一种提取的时候本来就是错误的,给你的假象,正确的调用方式应该是第二种,那么如何区别这种是MethodObj还是IntObj不明的参数?
补充内容 (2016-11-14 08:22):
如果编译校验了相应的函数那就没啥问题了,只要编译通过就行了 |
|