Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.15.143.207] |
|
Сообщ.
#1
,
|
|
|
Вот допустим можно с помощью проги Resource Hacker
загрузить туда какой-нибудь драйвер и увидеть,что он имеет ресурс Version Info и там перечислены имя компании и т.д.(можно поменять ). Как это сделать самому,пытался с помощью EnumResourceNames- так возвращается ошибка "Указанный файл не содержит секции ресурсов". ???? |
Сообщ.
#2
,
|
|
|
А зачем перебирать рессурсы, если есть GetFileVersionInfoSize/GetFileVersionInfo?
Далее просто выбираешь нужные тебе значения используя VerQueryValue... |
Сообщ.
#3
,
|
|
|
Дело в том,что я знаю только адрес(соответсвенно хэндл) памяти,куда
он загружен. А GetFileVersionInfoSize требует полный путь,а откуда он загрузился - хз. Может это и можно узнать как-то? |
Сообщ.
#4
,
|
|
|
Есть такая функция в psapi.dll -> GetDeviceDriverFileName. Это то, что те нужно...
Единственно, она выдаёт путь в формате девайсов. Если будут проблеммы с декодированием в нормальный путь - спрашивай. |
Сообщ.
#5
,
|
|
|
Цитата Ace @ Есть такая функция в psapi.dll -> GetDeviceDriverFileName. Это то, что те нужно... Единственно, она выдаёт путь в формате девайсов. Если будут проблеммы с декодированием в нормальный путь - спрашивай. Попробовал,выдаёт,но вот что интересно: 1.у некоторых девайсов выдаёт путь "\Windows\System32\Drivers\xxx.sys" - здесь всё нормально, инфу получить можно. 2.у некоторых девайсов выдаёт путь "\SystemRoot\System32\Drivers\xxx.sys" - естественно такого пути у меня нет - GetFileVersionInfoSize возвращает 0. 3.у некоторых девайсов выдаёт путь "xxx.sys" - хотя я точно знаю,что он загрузился с \Windows\System32\Drivers. Объясни в чём прикол? |
Сообщ.
#6
,
|
|
|
BOOL beginsi( const CString& s, const CString& strBegin ) { int len = strBegin.GetLength(); BOOL res = s.Left( len ).CompareNoCase( strBegin ) == 0; return res; } CString DecodeModuleName( const CString& strFullName ) { CString s; TCHAR szWinSysDir[MAX_PATH * 2] = _T(""); TCHAR szWinDir[MAX_PATH * 2] = _T(""); GetSystemDirectory( szWinSysDir, DIM(szWinSysDir) ); GetWindowsDirectory( szWinDir, DIM(szWinDir) ); const CString strBeginQuestion = _T("\\??\\"); const CString strBeginSystemRoot = _T("\\SystemRoot\\"); int iSlashPos = strFullName.Find( _T('\\') ); if( iSlashPos == -1 ) { s.Format( _T("%s\\drivers\\%s"), szWinSysDir, strFullName ); } else if( beginsi( strFullName, strBeginQuestion ) ) { s = strFullName.Mid( strBeginQuestion.GetLength() ); } else if( beginsi( strFullName, strBeginSystemRoot ) ) { s.Format( _T("%s\\%s"), szWinDir, strFullName.Mid( strBeginSystemRoot.GetLength() ) ); } else { if( iSlashPos == 0 ) s.Format( _T("%c:%s"), szWinDir[0], strFullName ); else s = strFullName; } CString tmp; tmp = szWinDir; if( beginsi( s, tmp ) ) s = tmp + s.Mid( tmp.GetLength() ); tmp = szWinSysDir; if( beginsi( s, tmp ) ) s = tmp + s.Mid( tmp.GetLength() ); tmp = szWinSysDir; tmp += _T("\\drivers"); if( beginsi( s, tmp ) ) s = tmp + s.Mid( tmp.GetLength() ); return s; } |
Сообщ.
#7
,
|
|
|
Спасибо - в понедельник попробую.
|