Analysis
I don't have the same hardware nor I use Windows 8.x, so what I'm going to provide is some static analysis.
Strings
At first I scanned the 64-bit mvs91xx.dll
library file using the Strings utility.
Strings just scans the file you pass it for UNICODE (or ASCII) strings of a default length of 3 or more UNICODE (or ASCII) characters.
Source: Strings
Here's the full output:
!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
Unsurprisingly, the result isn't garbage free. I'm going to highlight just the most significant bits.
Library information
While the copyright information wasn't updated since 2009, the file was last modified in October 2013 according to its time stamp. This seems to be confirmed by the build directory embedded in the file:
d:\project\2013_10\magni_svn\windows\win\sys\amd64\mv91xxm.pdb
The .pdb
file extension stands for Program Database, a proprietary Microsoft format which stores debugging information. In fact there's also a msvcrt.dll
string, meaning the the library was compiled using some version of Microsoft Visual C++.
As a side note, they use(d) Apache Subversion as their software versioning and revision control system.
Windows 8.x compatibility
As the library was updated in October 2013, it's reasonable to think they would provide compatibility with Windows 8, and possibly Windows 8.1 too. Checking the mvs91xx.cat
catalog file, here are the details related to the mvs91xx.dll
library file:
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
OSAttr:2:6.0
The OSAttr
attribute specifies the target Windows version whose signing requirements are compatible with the driver package. The attribute's value specifies the following:
- The value
2
specifies the catalog file is compatible with NT-based versions of the Windows operating system.
- The value
6.0
specifies the catalog file is compatible with Windows Vista.
Note If the driver package is compatible with multiple Windows versions, you must use separate CATATTR
options to specify the OSAttr
attribute for each Windows version.
Source: Creating a Catalog File for a Non-PnP Driver Package
In this case the OSAttr
value includes three NT-based Windows versions: Windows 7 (6.1
), Windows 8 (6.2
), and Windows 8.1 (6.3
). This means the driver package is compatible with Windows 8/8.1, at least on paper; still the Policies pane isn't available in Windows 8.x. Whether the operating system or the library file is to blame, I wouldn't know.
Registry functions
Driver settings are usually stored in the registry, and the library does include some Windows registry functions:
RegSetValueExA
RegQueryValueExA
RegCloseKey
Looking for policy-related strings, I came across DriverPolicySet
. By reverse engineering the library I confirmed that the registry functions were indeed used, and that the string mentioned above was part of a registry path being either read or written.
Manual policy tweaking
Searching for "DriverPolicySet"
on the web returned few, yet interesting results. In particular a post on a Japanese board and a reply on a Russian forum. By translating and putting together the bits of information, I was able to get a clearer picture - literally.

The DriverPolicySet
value is a string (REG_SZ
) which can be set to:
0
- Disable all policies.
1
- Enable driver caching only.
2
- Enable safe removal only.
3
- Enable both driver caching and safe removal.
It's usually stored in the following registry key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E97B-E325-11CE-BFC1-08002BE10318}\0001
Remarks
In case the registry value isn't there you'll need to create it yourself.
You have to restart the system in order to apply the changes.
{4D36E97B-E325-11CE-BFC1-08002BE10318}
is the device class GUID assigned to SCSI and RAID controllers. It is defined in the mvs91xx.inf
file.
The 0001
ending part might be slightly different depending on the number of available controllers. For example, it might be 0000
, or 0002
, etc. instead.