Visual Studio 2012 でコンパイルしたアプリをWindows 2000で動かす!

Windows 2000 Kernel32 改造計画【BM】

バージョン v2.2の英語版と日本語公開しました。
今回は、 Visual Studio 2012 (VC++2012)で作ったアプリを動かす実験です

サンプルはこれ
WIn32 アプリと MFCアプリの2本を /MT /MTd でコンパイルしたプログラムです。
(つまり、ランタイムを使わないアプリケーション)

vs2012a
まず、Win32アプリは少しの関数の実装で行けました。

vs2012
MFC32 アプリはかなりてこずりましたが、何とか起動できるようになりました・ω・

実装した関数は以下の通り

User32
ChangeWindowMessageFilter (Vista)
IsThreadDesktopComposited (Vista)
SetProcessDPIAware (Vista)
DwmHintDxUpdate (Vista)

ADVAPI32
RegGetValueW(2003)

NTDLL
RtlRunOnceBeginInitialize(Vista)
RtlRunOnceComplete(Vista)
RtlRunOnceExecuteOnce(Vista)

uxtheme
BeginBufferedAnimation(Vista)
BeginBufferedPaint(Vista)
EndBufferedAnimation(Vista)
EndBufferedPaint(Vista)
BufferedPaintInit(Vista)
BufferedPaintUnInit(Vista)
DrawThemeTextEx(Vista)

imm32
ImmDisableTextFrameService(XP)

shell32
SHCreateItemFromIDList(Vista)
SHCreateItemFromParsingName(Vista)
SHGetKnownFolderPath(Vista)
InitNetworkAddressControl(Vista)

kernel32
GetTickCount64(Vista)
LCMapStringEx(Vista)
InitOnceExecuteOnce(Vista)
RegisterApplicationRecoveryCallback(Vista)
ApplicationRecoveryInProgress(Vista)
RegisterApplicationRestart(Vista)
ApplicationRecoveryFinished(Vista)
GetLocaleInfoEx(Vista)
CompareStringEx(Vista)
GetNLSVersion(2003)
GetNLSVersionEx(Vista)
GetTimeFormatEx(Vista)
GetDateFormatEx(Vista)
IsValidLocaleName(Vista)
EnumSystemLocalesEx(Vista)
CreateSemaphoreExW(Vista)
CreateSemaphoreExA(Vista)
GetThreadPreferredUILanguages(Vista)
SetThreadPreferredUILanguages(Vista)

まぁ、実装したといっても、ダミー関数が殆どですが・ω・;意外と動くものですね

ランタイム別バージョンはちょっときつそうです。

msvcr110

FlushProcessWriteBuffers
GetNumaHighestNodeNumber
GetLogicalProcessorInformation
GetCurrentProcessorNumber
CreateThreadpoolWait
SetThreadpoolWait
CloseThreadpoolTimer
WaitForThreadpoolTimerCallbacks
CloseThreadpoolWait
SetThreadpoolTimer
FreeLibraryWhenCallbackReturns
CreateThreadpoolTimer
GetUserDefaultLocaleName

msvcr110_clr400

FlushProcessWriteBuffers
GetNumaHighestNodeNumber
GetCurrentProcessorNumber
GetLogicalProcessorInformation
GetUserDefaultLocaleName

mfcm110/u, mfc110/u (msvcr110に依存)

msvcp110/msvcp110_clr0400 (msvcr110に依存)
CreateSymbolicLinkW

vcamp110.dll (DX11、msvcr110依存)
K32GetPerformanceInfo
InitOnceInitialize
EventUnregister
EventWrite
EventRegister

vcomp110/atl110 利用可能

vccorlib110.dll  (WinRT用)
api-ms-win-core-winrt-l1-1-0.dll などを使っている・・・Win8専用?

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です