Windows 中未显示驱动程序“策略”选项卡

Dar*_*ter 4 windows drivers dll safely-remove-hardware windows-8

我有一个 Marvell 驱动程序,在早期版本的 Windows 中,它在设备管理器的属性中显示了一个“策略”选项卡,但在 Windows 8/8.1 中不再显示。

它是这样的:

虽然它在 Windows 7 和 Vista 中呈现良好,但在 Windows 8 中不存在此新选项卡。我挖了出来,主要的罪魁祸首(?)是mv91xxm.dll,它处理对话框。一个反编译器 (NikPEViewer) 向我展示了一个MFC 图标,一个名为的导出ESATAPortPropPageProvider,并且它的原始名称是hotplug.exe曾经。Marvell 的那些懒惰程序员从 2009 年开始就忘记更新这个文件了。

此对话框的主要用途是在 Marvell 控制器中启用驱动程序缓存模式并禁用 Windows 中的“安全删除”行为(对于连接到控制器的驱动器)。

我不知道如何解决该问题,也不知道是否更新或创建注册表项(我猜是 中的某些内容HKLM\System\CurrentControlSet\Services\mvs91xx)或编辑某些文件。

任何形式的帮助表示赞赏。

注意: 我将驱动程序上传到 Mega,以防您想挖掘。

[更新 01-05-2014]

通过官方网站给 Marvell 发了电子邮件,虽然他们是驱动程序的制造商,但他们不为无法在其网站上下载的驱动程序提供支持

尊敬的客户, Marvell 向最终用户发布的唯一经批准的驱动程序位于我们的网站上:

http://www.marvell.com/support/downloads/search.do

如果您要找的司机不在这里,那么我们不提供。

我们网站上的驱动程序是我们向最终用户提供的唯一支持 >(未与 Marvell 签订保密协议的客户)。

如果您有任何其他支持需求,请联系您的计算机制造商。谢谢你

使用该技巧添加TreatAsInternalPort注册表项不起作用,主要是因为端口不是由 AHCI 的默认 Microsoft 驱动程序管理的。我的直觉说这也是因为微软在 Windows 8 中更改了这些驱动程序的配置值。

and*_*415 5

分析

我没有相同的硬件,也没有使用 Windows 8.x,所以我要提供的是一些静态分析

字符串

起初,我mvs91xx.dll使用 Strings 实用程序扫描了 64 位库文件。

字符串只是扫描您传递给它的文件,以查找默认长度为 3 个或更多 UNICODE(或 ASCII)字符的 UNICODE(或 ASCII)字符串。

来源:字符串

这是完整的输出:

!This program cannot be run in DOS mode.
Rich
.text
`.data
.pdata
@.rsrc
@.reloc
EEE
('8PW
700PP
```hhh
xppwpp
SeShutdownPrivilege
Change Cahce Module Policy
You must restart your computer before the new settings will take effect.
 Do you want to restart your computer now?
RSDS
d:\project\2013_10\magni_svn\windows\win\sys\amd64\mv91xxm.pdb
%f&
B@H
L$ H
D$ `
D$(H
D$$
D$HH
D$0f
D$XH
\$P
s I
NtH
(tL
t?3
\$0H
t$8H
D$PD
D$1
D$3A
T$0A
8M;
t.H
|$8H+
T$0H
tJH
0t4H
|$8H
L$0
D$(
D$ 
|$0H
D$0D
L$(H
D$ 
L$PH3
\$`I
s I
d$X
d$P
!D$0
D$T
D$4
D$8
D$<
D$X
D$PH
D$PH
L$XH
d$(
d$ 
D$0A
D$4
D$0
D$<
L$X
D$0
d$ 
%L!
u'H
d$ 
d$ 
tUH
D$(
D$ 
L$0H3
\$XH
D$(
D$ 
D$4H
D$(H
D$@E3
D$4P
D$ 
D$4H
D$(H
D$0E3
D$4
D$ 
L$0
L$0
L$@
L$@
ATH
d$ 
t2M
d$ 
t$@H
0A\
VWATAUAVH
t7H
t!H
\$PH
l$XH
 A^A]A\_^
SVWH
\$ 
\$ 
uxH
D$ 
\$ 
t/L
D$ 
\$ 
D$ 
\$ 
uoE3
\$ E3
\$ H
\$ 
uaL
D$ 
\$ 
D$ 
\$ 
_^[
\$0H
t$8H
@SH
McP
A8H
HcH<H
9PE
f9Q
LcA<E3
(E;
t"M+
d$0
L$0
\$0
L$8D
\$8L3
\$@H
\$XE3
T$`H
L$X
D$PH
|$P
tAH
D$8
D$HH
D$0H
D$@H
D$(H
D$ L
L$PL
D$XH
T$`3
D$hH
D$p3
@UH
EP=csm
E0H
@UH
Ep=csm
E8H
@UH
E`=csm
EHH
@UH
=csm
E$H
@UH
E(=csm
E4H
@UH
E@=csm
ELH
@UH
EX=csm
EhH
@UH
Ex=csm
@UH
@UH
pd 
pd 
strchr
atol
_XcptFilter
malloc
_initterm
free
_amsg_exit
__C_specific_handler
msvcrt.dll
SetupDiOpenDevRegKey
SETUPAPI.dll
HeapAlloc
GetCurrentProcess
HeapFree
GetProcessHeap
GetLastError
DisableThreadLibraryCalls
OutputDebugStringA
CloseHandle
LocalFree
Sleep
RtlVirtualUnwind
RtlLookupFunctionEntry
RtlCaptureContext
QueryPerformanceCounter
GetTickCount
GetCurrentThreadId
GetCurrentProcessId
GetSystemTimeAsFileTime
TerminateProcess
UnhandledExceptionFilter
SetUnhandledExceptionFilter
KERNEL32.dll
OpenProcessToken
RegSetValueExA
RegQueryValueExA
LookupPrivilegeValueA
AdjustTokenPrivileges
RegCloseKey
InitiateSystemShutdownExA
ADVAPI32.dll
EnableWindow
SetWindowLongPtrA
GetDlgItem
MessageBoxA
GetFocus
SendDlgItemMessageA
GetWindowLongPtrA
USER32.dll
DestroyPropertySheetPage
CreatePropertySheetPageA
COMCTL32.dll
MVCOINST.dll
ESATAPortPropPageProvider
N@ 
kU'9
&D(
HMXB
9;5
?q=
?Zd;
?3=
?/L[
S;uD
?$#
;1a
z?aUY
D?$?
*?}
d|F
U>c{
#Tw
zc%C1
.:3q
,%I
-64OS
NKeb
eSATAport
MatchingDeviceId
eSATAportCount
DriverPolicySet
0123
wwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwww
www
wwww
wwwwwwwwwww}
wwwwwwww
wwwwwwwwwwwwww
wwwwwwwwwwwwww
wwwwwww}
wwww
wwwwwww}x
}wwwwwww}
wwww
wXk
qN]
tno
<sa
_`__``_``a`_`_aaaa`
     !        !     
i\\\\\\\\[\\\\\\\[\\a///2/////////2/22///
i\^
da2/
BB<<<<777111,,,*/
i\^
na2/
RFGHJCDKLL=>>88+/
h\^
}qq
[`//"QRT$
1=>>8+2
j\^
sccy
\`2/"OQ
$%=>>*2
i\^
sccy
\a//"NO
66**
L=>(2
i\]~
rccy
\a//"WN
FTHI*++LL=(/
h\^|~
rccs
\`//'VW
RFTHJCDKLL)2
j\]x|~
rccp~
\_//'VV
QRFTHJCDKL(/
i\^wx|~pcccccb
\`//'UV
OQRFGHJCDK(/
i\]wwx|pcckrss
\a//0UU
NOQRSGHIJD(2
i\^vwwxpccr
\`///YU
WNOQRFTHIJ)/
j\]uvwwmccp
\`//9YY
VWNO5;*THI)2
j\]uuvwmccp
\a//9XY
VVWN
STH)2
i\]ouuvmccbbbbbs
\a//@XX0
RST)/
i\]oouulefffggkt
\`/2@ZXX:
;NPRF(/
h\]loouuvwwx|~
\_2/@ZZXXYYUUUVWNOPQ(/
i\]ffggkkqqqzzz{{{
\_//?MMMMEEEAAAA3345
i\\\\\\\\\\\\\\\\\\\`//&&&&&--&&&&-&&&&./
illlllllll
##"
nPh
_s-
>w+
3Zz
]ZZZZZZZZZZZWV-1---------1-
mV2.AHBC5D;<<(-
kV2.P:#
!!+=>(-
kV239
$=(-
{co
kV73@
GJ'
0<(-
^e~
xco
kV78@
OGJKD;*1
]d}~wca``
kV78F
OOGJKD*1
\dy}rch{
kV7EF
MNOGIK/1
\buyrcj
kV?EE
RR.#:I/-
[btuncfssv
kV?LE
&%"
9G41
]_ptqhhhjj
kV?LTE
@NO41
]_mptuy}~
lV6SUTTQQQRRN91
[WXXXYXXYXYYWV-)))))))))),,
uVh
_s-
F5><<==.
ECK2LPV.
E@J3MOU.
D?H31IT.
-,%
B;G1JKS.(
E9A011R.&#
E/4678:."&' 
NQWhX^XXXe
rpq
t}~]
djklnoc
sgba`_f|
ux||||
#  #  # 
#! # 
#! #! # 
#  # 
#gdc 
#  #! # 
#  #  # 
#  # 
#  # 
#  #  #  #
! #
t5! #! #
lR! #
.Bu
mS! #
<Bv
lR! #
lR! #
d0_
lR! #
b0`
lR! #
`0_
lR! #
]1`
lR! #
[0_
lR! #
V0_
lR! #
U0_
lR! #
O0_
lR! #
M0_
lR! #
K0_
lR! #
F0_
lR! #
lR! #
lS! #
lR! #
lR! #
b;wi=ua=ua=ua=ua<u`=ua=ua<u`9d[qikunntnntnnunntnnunnunntpwyr
cVgdc
y]q
nkgdc
wYl
gdc
rP`
gdc
oJY
gdc
y|~$s
hJ[
rcgdc
4@egdc
5@fgdc
5@fgdc
4@egdc
5Afgdc
4@egdc
5@fgdc
5@fgdc
4@egdc
4@egdc
5@fgdc
5Afgdc
5@egdc
5@fgdc
BL@BM@BM@BL@BL@BL@BL@BM@CMABM@BL@BL@ 
#w\Rv\Rw]Sw\Rw\Rw\Sv\Rv\Rw\Rw]Sw]Sw]StYQ1-/ 
_s-
t6REE 
F_s-
t6RDD 
<_s-
t5REE 
=^s,
t5RDE 
=_s-
u6RDD 
y0_
=_s-
=REE 
t0_
=^s,
=REE 
j0_
=_s-
=SEE 
f0_
=_s-
=REE 
[0_
>w+^
=^s,
=REE 
=_s-
=SEE 
<^s,
=SEE 
_s-
;tcc 
3ZzWo
vWj
pM\
XBe
4@e
?Ru
CXz
CXz
CYz
CXz
BXz
CXz
CY{
=_s-
|Xfdc
_s-
Zgec
_s-
Zfdc
_s-
Zfdc
y=z
^s-
Zfdc
^<y
_s-
Yfdc
>_s-
vVh
7<K
8<K
7<K
8<K
Policies
MS Shell Dlg
This setting enables driver caching to improve disk performance. This setting will be ignored and un-checked if enabled safely remove disk
Enable driver cache mode.
Note:
The setting will not take effect until you restart system
This setting enables remove disk safely. To disconnect disk from controller, click the Safely Remove Hardware icon in the taskbar notification area.
Enable safely remove disk.
VS_VERSION_INFO
StringFileInfo
040904e4
CompanyName
<Marvell>
FileDescription
Coinstaller
FileVersion
1.0.0.2
InternalName
hotplug.exe
LegalCopyright
2009 (c) <Marvell>.  All rights reserved.
OriginalFilename
hotplug.exe
ProductName
driver feature policy
ProductVersion
1.0.0.2
VarFileInfo
Translation
Run Code Online (Sandbox Code Playgroud)

不出所料,结果并非没有垃圾。我将只强调最重要的部分。

图书馆信息

虽然版权信息自 2009 年以来没有更新,但根据其时间戳,该文件最后一次修改是在 2013 年 10 月。文件中嵌入的构建目录似乎证实了这一点:

d:\project\2013_10\magni_svn\windows\win\sys\amd64\mv91xxm.pdb
Run Code Online (Sandbox Code Playgroud)

.pdb文件扩展名代表程序数据库,专有的微软格式保存调试信息。实际上还有一个msvcrt.dll字符串,这意味着该库是使用某些版本的Microsoft Visual C++ 编译的

作为旁注,他们使用(d) Apache Subversion作为他们的软件版本控制和修订控制系统。

Windows 8.x 兼容性

由于该库于 2013 年 10 月更新,因此可以合理地认为它们将提供与 Windows 8 的兼容性,也可能与 Windows 8.1 兼容。检查mvs91xx.cat 目录文件,这里是与mvs91xx.dll库文件相关的详细信息:

Tag                     9B1349794EE18ECCCBBD7F38FEEA9D44CC42746E
Thumbprint algorithm    sha1
Thumbprint              9b 13 49 79 4e e1 8e cc cb bd 7f 38 fe ea 9d 44 cc 42 74 6e
OSAttr                  2:6.1,2:6.2,2:6.3
File                    mvs91xx.dll
Run Code Online (Sandbox Code Playgroud)

OSAttr:2:6.0

OSAttr属性指定签名要求与驱动程序包兼容的目标 Windows 版本。该属性的值指定以下内容:

  • 该值2指定目录文件与基于 NT 的 Windows 操作系统版本兼容。
  • 该值6.0指定目录文件与 Windows Vista 兼容。

注意如果驱动程序包与多个 Windows 版本兼容,则必须使用单独的CATATTR选项OSAttr为每个 Windows 版本指定属性。

来源:为非 PnP 驱动程序包创建目录文件

在这种情况下,该OSAttr值包括三个基于 NT 的 Windows 版本:Windows 7 ( 6.1)、Windows 8 ( 6.2) 和 Windows 8.1 ( 6.3)。这意味着驱动程序包与 Windows 8/8.1 兼容,至少在纸面上是这样;策略窗格在 Windows 8.x 中仍然不可用。是操作系统还是库文件是罪魁祸首,我不知道。

注册表功能

驱动程序设置通常存储在注册表中,该库确实包含一些 Windows注册表功能

RegSetValueExA
RegQueryValueExA
RegCloseKey
Run Code Online (Sandbox Code Playgroud)

在寻找与政策相关的字符串时,我遇到了DriverPolicySet. 通过对库进行逆向工程,我确认确实使用了注册表函数,并且上面提到的字符串是被读取或写入的注册表路径的一部分。


手动策略调整

"DriverPolicySet"在网络上搜索返回的结果很少,但很有趣。特别是在日本版块上的帖子在俄罗斯论坛上的回复。通过翻译和整理这些信息,我能够获得更清晰的图片——字面意思。

驱动程序策略集

DriverPolicySet值是一个字符串 ( REG_SZ),可以设置为:

  • 0 - 禁用所有策略。
  • 1 - 仅启用驱动程序缓存。
  • 2 - 仅启用安全删除。
  • 3 - 启用驱动程序缓存和安全删除。

它通常存储在以下注册表项中:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E97B-E325-11CE-BFC1-08002BE10318}\0001
Run Code Online (Sandbox Code Playgroud)

评论

  • 如果注册表值不存在,您需要自己创建它。

  • 您必须重新启动系统才能应用更改。

  • {4D36E97B-E325-11CE-BFC1-08002BE10318}是分配给 SCSI 和 RAID 控制器的设备类 GUID。它在mvs91xx.inf文件中定义。

  • 0001结尾部分可能会因可用控制器的数量会略有不同。例如,它可能是0000, 或0002等。