Вкладка «Политики» драйвера не отображается в Windows

4194
DarkGhostHunter

У меня есть драйвер 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

Если нужного вам водителя здесь нет, мы его не предоставляем.

Драйверы, которые находятся на нашем веб-сайте, являются единственной поддержкой, которую мы предоставляем конечным пользователям> (клиентам, не имеющим NDA с ​​Marvell).

Если у вас есть какие-либо другие потребности в поддержке, пожалуйста, свяжитесь с производителем вашего компьютера. Благодарю вас

Использование хитрости для добавления TreatAsInternalPortключа реестра не работает, в основном потому, что порты не управляются драйвером Microsoft по умолчанию для AHCI. Моя интуиция говорит, что это также потому, что Microsoft изменила значения конфигурации этих драйверов в Windows 8.

2

2 ответа на вопрос

3
and31415

Анализ

У меня нет такого же оборудования и я не использую Windows 8.x, так что я собираюсь предоставить некоторый статический анализ .

Струны

Сначала я сканировал mvs91xx.dllфайл 64-битной библиотеки с помощью утилиты Strings.

Строки просто сканируют файл, который вы передаете, на наличие строк UNICODE (или ASCII) по умолчанию длиной 3 или более символов 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 $=(- ~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 

Неудивительно, что результат не лишен мусора. Я собираюсь выделить только самые важные моменты.

Библиотека информации

Хотя информация об авторских правах не обновлялась с 2009 года, последний раз файл был изменен в октябре 2013 года в соответствии с его отметкой времени. Это подтверждается каталогом сборки, встроенным в файл:

d:\project\2013_10\magni_svn\windows\win\sys\amd64\mv91xxm.pdb 

Расширение .pdbфайла расшифровывается как Program Database, собственный формат Microsoft, в котором хранится информация об отладке. На самом деле есть также msvcrt.dllстрока, означающая, что библиотека была скомпилирована с использованием некоторой версии Microsoft Visual C ++ .

В качестве примечания, они используют (d) Apache Subversion в качестве системы контроля версий программного обеспечения и версий.

Совместимость с Windows 8.x

Поскольку библиотека была обновлена ​​в октябре 2013 года, разумно предположить, что она обеспечит совместимость с 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 

OSAttr:2:6.0

OSAttrАтрибут определяет целевую Windows, версию которой подписание требования совместимы с пакетом драйверов . Значение атрибута указывает следующее:

  • Значение 2указывает, что файл каталога совместим с версиями операционной системы Windows на базе NT.
  • Значение 6.0указывает, что файл каталога совместим с Windows Vista.

Примечание. Если пакет драйверов совместим с несколькими версиями Windows, необходимо CATATTRуказать отдельные параметры для указания OSAttrатрибута для каждой версии Windows.

Источник: создание файла каталога для пакета драйвера не PnP

В этом случае OSAttrзначение включает три версии Windows для 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 

В поисках связанных с политикой строк я наткнулся DriverPolicySet. Проведя обратный инжиниринг библиотеки, я подтвердил, что функции реестра действительно использовались, и что упомянутая выше строка была частью пути реестра, который либо читался, либо записывался.


Ручная настройка политики

Поиск "DriverPolicySet"в Интернете дал мало, но интересных результатов. В частности, пост на японской доске и ответ на русском форуме . Переведя и собрав кусочки информации, я смог получить более четкую картину - буквально.

DriverPolicySet

DriverPolicySetЗначение является строкой ( REG_SZ), который может быть установлен на:

  • 0 - Отключить все политики.
  • 1 - Включить только кэширование драйверов.
  • 2 - Включить только безопасное удаление.
  • 3 - Включите как кэширование драйверов, так и безопасное удаление.

Обычно он хранится в следующем разделе реестра:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\\0001 

замечания

  • Если значение реестра отсутствует, вам необходимо создать его самостоятельно.

  • Вы должны перезапустить систему, чтобы применить изменения.

  • это устройство класса GUID назначены контроллеры SCSI и RAID. Это определено в mvs91xx.infфайле.

  • 0001Завершающая часть может немного отличаться в зависимости от количества доступных контроллеров. Например, это может быть 0000, или 0002, и т. Д. Вместо.

ЭТО СРАБОТАЛО. Я ПОВТОРЯЮ, ЭТО РАБОТАЛО. DarkGhostHunter 9 лет назад 0
@DarkGhostHunter Я рад это слышать. Не могли бы вы указать, где именно хранится значение реестра? and31415 9 лет назад 0
По сути, добавление «DriverPolicySet» и установка его в «1» заставили драйвер обрабатывать диск с внутренними портами - таким образом, изменение его на другие значения должно включать или отключать запрошенные функции. Я уже пользовался этим ключом, но мне это было не важно. Я думаю, что видел некоторые русские и японские форумы, но я не копался так далеко. Поздравляю, вы получили награду. И исправил очень хорошо известную проблему для пользователей Marvell. Ура! DarkGhostHunter 9 лет назад 0
@DarkGhostHunter Итак, вам пришлось вручную добавить значение `DriverPolicySet`, т. Е. Его там еще не было? Кроме того, какой путь реестра? Похоже, что пакет драйверов действительно совместим с Windows 8.x, несмотря на то, что вам нужно редактировать значение реестра вручную. and31415 9 лет назад 0
Это не было там с самого начала, так что, вероятно, Марвелл не попал туда. Путь к реестру был таким же, но окончание было `0002` (у меня есть контроллеры дерева). Действительно, пакет драйверов совместим, поэтому вкладка «Политики» является единственной функцией, которая нарушает всю цель `mvx91xx.dll`. DarkGhostHunter 9 лет назад 0
2
Synetech

Explanations

Like you said, they did not update it when they ported the drivers to Windows 8. That said, it’s also possible (possibly even likely) that they chose to remove it from the Windows 8 driver because of a bug and/or incompatibility with Windows 8 and/or due to Windows 8’s different interface design (you normally don’t see the notification-area icon by default).

Solution

Your best bet is to simply contact Marvell and let them know that the tab is missing and request that they update the driver to fix it. Either they will do so, or they will explain specifically why they removed it.

Work-around

In the meantime, if you need the functionality of the page, you can determine exactly which registry entries are set if you have access to a system where it is available (e.g., in Windows 7):

  1. Run Process Monitor
  2. Set it to filter out everything but the registry
  3. Stop the capture and clear the results
  4. Open the Policies tab
  5. Toggle the checkbox
  6. Switch to ProcMon and start the capture
  7. Quickly switch back to the tab
  8. Click [Apply]
  9. Quickly switch back to ProcMon and stop the capture
  10. Look through the registry changes to find the relevant

Alternate Workaround

If you no longer have access to a compatible system (i.e., you cannot install a temporary copy of Windows 7 on your system), then you can try an alternate (and vendor-independent) solution that was mentioned on the page where you found the screenshot you posted in your question (the person who posted has not tested it in Windows 8, but it’s worth a shot if you can’t wait for a response from Marvell):

  1. Navigate to HKLM\SYSTEM\CurrentControlSet\services\msahci
  2. Create a key named Controller0
  3. Create a subkey named Channel0
  4. Create a DWORD named TreatAsInternalPort and set it to 1
  5. Repeat for Channel1, Channel2, etc., and if necessary for Controller1, etc.
  6. Reboot

Here’s a registry script with the default settings that the people in that thread said worked for them:

REGEDIT4 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\msahci\Controller0\Channel0] "TreatAsInternalPort"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\msahci\Controller0\Channel1] "TreatAsInternalPort"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\msahci\Controller0\Channel2] "TreatAsInternalPort"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\msahci\Controller0\Channel3] "TreatAsInternalPort"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\msahci\Controller0\Channel4] "TreatAsInternalPort"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\msahci\Controller0\Channel5] "TreatAsInternalPort"=dword:00000001 
Я попробую альтернативное решение. Тем временем туда отправляется почта к Марвеллу. DarkGhostHunter 10 лет назад 0