Показать полную графическую версию : Зависимость модулей Windows, приучение старой ОС к работе в тандеме с новыми модулями
Svyatpro
14-02-2009, 03:49
Меня интересует один уже столь неразрешимый вопрос:
Я хочу ради "идеи", заставить работать ntdll.dll от Windows Vista/7 на Windows XP/2003.
ntdll.dll не зависит от каких-либо модулей, он явьляется как-бы мостом, свыязывающий остальные модули.
Но при обычной замене ntdll.dll(Windows Server 2003) на ntdll.dll(Windows Vista/7) при загрузке, сразу после HAL, выскакивает BSOD.
Что не дает винде запуститься, я так понял какае-то проверка подлиности библиотеки?! Как с этим справиться?
Заранее спасибо!
Я хочу ради "идеи", заставить работать ntdll.dll от Windows Vista/7 на Windows XP/2003. »
Зачем? Ведь с прикладным уровнем ntdll.dll не работает, были попытки "прикрутить" explorer.exe, но тот отвечает за GUI (интерфейс), а ntdll.dll фактически определяет лишь набор API-функций (если не ошибаюсь).
ntdll.dll загружается на раннем этапе загрузки Windows, еще программой smss.exe и это важная часть Windows.
Svyatpro
14-02-2009, 18:12
так, все же меня интересуют только предложения по приучению этой библиотеки к Windows XP/2003 и ничего другого.
Еще интересует приучение "новых" - kernel32.dll, msvcrt.dll.....
Svyatpro, не смущает тот факт, что вызовы могут быть разными? И реакция на ответ тоже разная. XP имеет почти такое же ядро, как Win2k. А Vista - это другое дело. Неплохо бы почитать ссылки по архитектуре системы, с точки зрения программирования. (Если найдете, скиньте, тоже почитаю)
Svyatpro, зачем?! :shocked:
Svyatpro
14-02-2009, 21:19
Svyatpro, не смущает тот факт, что вызовы могут быть разными? »
Как раз у ntdll.dll от Vista, функции все совпадают с ntdll.dll от XP.
Svyatpro, я повторю: Зачем Вы это хотите делать?!
Svyatpro
15-02-2009, 20:24
Svyatpro, я повторю: Зачем Вы это хотите делать?! »
Доказать себе, что это получилось! Ибо такая библиотека у Vista/7 схожая c XP/2003 но работать никак не хочет на XP/2003!
Поэтому, я хочу знать больше о Windows, поэтому и ветка так называется "Хочу знать больше"
Svyatpro, Windows - это система с закрытым исходным кодом, и такой эксперимент чреват множеством вариантов. Идея ясна, но вот что б проверить все зависимости необходимо будет перебрать не один системный файл.
Подобное я уже наблюдал, при попытки добавить быструю смену пользователей в 2003 с ХР. В результате после множества BSOD на которых уже не выводилось сообщение про то какой системный файл сбоит - эксперимент был остановлен.
А тут версии разных поколений.
msvcrt.dll это библиотека из MSVC6
http://msdn.microsoft.com/en-us/library/abx4dbyh.aspx
http://www.wireshark.org/docs/wsdg_html_chunked/ChToolsMSChain.html
Svyatpro
16-02-2009, 15:38
Значит, моя идея без шансов, наверное?!
Просто должен сказать, что мне удалось запустить вистовский gdi32.dll (правда BETA 5219) на Windows XP/2003, значит не все потеряно?!
Svyatpro, всё зависит от того на сколько хватит терпения, найдётся времени и аргументации хотя бы для себя в необходимости данной процедуры. Для начала изучить теорию - почитать про внутренние устройство ОС Виндовс (http://lib.rus.ec/s/4937).
Значит данная Бета не сильно отличалась в части данной библиотеки, вот система и восприняла её нормально.
Svyatpro
17-02-2009, 16:39
Для начала изучить теорию - почитать про внутренние устройство ОС Виндовс. »
Спасибо вам огромное, я такое всегда мечтал найти!!!
Значит данная Бета не сильно отличалась в части данной библиотеки, вот система и восприняла её нормально. »
Да, в билде Vista 5219 строение библиотеки gdi32.dll очень схоже со строением gdi32.dll от 2003 (смотрел в Dependency Walker) и все функции соводают, кроме, того что user32.dll в W2K3 ищет функцию в gdi32.dll(GdiGetBitmapBits), которой нет в gdi32.dll от Vista 5219, но зато там есть GetBitmapBits, поэтому мне пришлось модифицировать и стандартный user32.dll от W2K3.
В результате Windows запустилась, работала вроде безотказно, но только на классическом виде, ибо стиль Windows XP отображался неправильно (все элементы меню, например, панель задач, заливались черным цветом без текстур), но зато и вроде залагивания окон стали не такие ощутимые, и, возможно, появилась возможность реализации WDDM на XP ибо появились такие функции в gdi32.dll как:
D3DKMTChangeSurfacePointer
D3DKMTCloseAdapter
D3DKMTCreateAllocation
D3DKMTCreateDCFromMemory
D3DKMTCreateDevice
D3DKMTCreateOverlay
D3DKMTDestroyAllocation
D3DKMTDestroyDCFromMemory
D3DKMTDestroyDevice
D3DKMTDestroyOverlay
D3DKMTEscape
D3DKMTFlipOverlay
D3DKMTGetDeviceSchedulingPriority
D3DKMTGetDeviceState
D3DKMTGetDisplayModeList
D3DKMTGetMultisampleMethodList
D3DKMTGetPresentHistory
D3DKMTGetProcessSchedulingPriorityClass
D3DKMTGetRuntimeData
D3DKMTGetScanLine
D3DKMTGetSharedPrimaryHandle
D3DKMTLock
D3DKMTOpenAdapterFromHdc
D3DKMTOpenResource
D3DKMTPresent
D3DKMTQueryAdapterInfo
D3DKMTQueryAllocationResidency
D3DKMTQueryResourceInfo
D3DKMTReleaseProcessVidPnSourceOwners
D3DKMTRender
D3DKMTSetAllocationPriority
D3DKMTSetDeviceSchedulingPriority
D3DKMTSetDisplayMode
D3DKMTSetGammaRamp
D3DKMTSetProcessSchedulingPriorityClass
D3DKMTSetVidPnSourceOwner
D3DKMTUnlock
D3DKMTUpdateOverlay
D3DKMTWaitForVerticalBlankEvent
Это все функции D3DKMT* которые доступны у меня в gdi32.dll на Windows 2003.
А вот уже в Vista build 5231 строение gdi32.dll кардинально поменялось, очередность USES стала другая и Windows 2003 напрочь перестал загружаться (BSOD)...
Svyatpro
17-02-2009, 23:15
Еще дополню, opengl32.dll, GLU32.DLL, GLMF32.DLL из Windows 7 build 7000 после небольшего переименования функций прекрасно работают на W2003 и все OpenGL приложения без проблем запускаются с нормальным, полноценным отображением, но заметно медленее чем на стандартном OpenGL'е....
Svyatpro, OpenGL от MS версии 1.1, когда последняя входила в сообщество разработчиков библиотеки. В последний на сегодня SDK - Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1: BETA (http://forum.oszone.net/thread-128586.html) входят хорошо знакомые /*++ BUILD Version: 0004 // Increment this if a change has global effects
Copyright (c) 1985-96, Microsoft Corporation
Module Name:
gl.h
Abstract:
Procedure declarations, constant definitions and macros for the OpenGL
component.
--*/
/*...*/
/* Version */
#define GL_VERSION_1_1 1 и /*++ BUILD Version: 0004 // Increment this if a change has global effects
Copyright (c) 1985-95, Microsoft Corporation
Module Name:
glu.h
Abstract:
Procedure declarations, constant definitions and macros for the OpenGL
Utility Library.
--*/
/*...*/
/* Version */
#define GLU_VERSION_1_1 1
#define GLU_VERSION_1_2 1
Новые библиотеки поддерживают и выпускают разработчик железа и софта входящие в OpenGL ARB "Architecture Review Board" (http://www.opengl.org/about/arb/) ныне Khronos (http://www.khronos.org/about/)
Из последних новостей от их представителей - Linux, FreeBSD и Solaris получат полную поддержку OpenGL 3.0 с новыми драйверами от nVidia (http://forum.oszone.net/thread-132208.html)
А так на Вин платформе - OpenGL 3 против DirectX 11: война закончена (http://www.thg.ru/graphic/open_gl_3_directx_11/index.html)
Насколько знаю, начиная с Висты данная библиотека вызывается не напрямую приложениям. На практике это означает что такие приложения под ХР - 85 fps, а под Вистой\Севен увы 1-2fps :( »
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.