拡張カーネルv2.3bでFFDShowが停止する問題を調べてみた
拡張カーネル v2.3cを入れると FFDShow を入れた環境で Media Player Classic が停止するという報告があったので、いろいろ調べてみました。
…正しいバージョンが分からず、なかなか再現できなかったのですが。
FFDShowの新しいものを入れたところ、それっぽい処理に行きついたのでした ・ω・
問題になってたのは ffmpeg.dllの処理
SUB_L6D16BE50: sub esp,0000003Ch mov ecx,[L6D701D08] mov [esp+2Ch],ebx mov ebx,[eax] mov [esp+30h],esi mov [esp+34h],edi test ecx,ecx mov [esp+38h],ebp jz L6D16BEA0 mov dword ptr [esp+08h],FFFFFFFFh mov [esp+04h],edx mov [esp],eax call ecx sub esp,0000000Ch L6D16BE83: xor eax,eax mov ebx,[esp+2Ch] mov esi,[esp+30h] mov edi,[esp+34h] mov ebp,[esp+38h] add esp,0000003Ch retn |
どうやらここでぐるぐる回ってる。
で、処理をスキップさせると、例外で落ちる ・ω・
6D701D08 には、SleepConditionVariableCS (Vista専用)関数のアドレスが入っています。
Vista 専用関数で 参照してるのは
InitializeConditionVariable
WakeAllConditionVariable
WakeConditionVariable
SleepConditionVariableCS
の4つなんですが、拡張カーネル v2.3b/cには WakeAllConditionVariable が入ってなくて、
どうやら、InitializeConditionVariableがあるときの処理と、WakeAllConditionVariableが無い時の処理でクリティカルセクションの処理がちがうので、整合性が取れなくておちてるらしい
というのが分かったので修正しました。
Windows 2000 Kernel32 改造計画【BM】
v2.3dのゲーム対応版はありませんが、元々この関数群を実装してなかったので変わらないという事でご安心を・ω・
what about extended kernel for Windows XP/2003?
what about extended kernel for Windows XP/2003?
When end of support,
I will support only for Not a valid Win32 application on XP and 2003 🙂
When end of support,
I will support only for Not a valid Win32 application on XP and 2003 🙂
これと似ている事かも知れませんが、smplayer0.8.5を起動させてもFileを読まず、再生出来なくなってます。
ReInstallしてもダメでした。
これと似ている事かも知れませんが、smplayer0.8.5を起動させてもFileを読まず、再生出来なくなってます。
ReInstallしてもダメでした。
2.3d でNGっていう事でしょうか?
ゲーム対応版2.3cだとどうでしょうか?
2.3d でNGっていう事でしょうか?
ゲーム対応版2.3cだとどうでしょうか?
smplayですが、2.3dまではOKでした。
2.3e(現行バージョン)では再生出来ません。
game対応版は試してません。
こちらの環境かも知れないので、もう少し試してみます。
smplayですが、2.3dまではOKでした。
2.3e(現行バージョン)では再生出来ません。
game対応版は試してません。
こちらの環境かも知れないので、もう少し試してみます。
smplayの件ですが、こちらの設定ミスだったようです。
大変お騒がせしました。
smplayの件ですが、こちらの設定ミスだったようです。
大変お騒がせしました。