拡張 Kernel v17lと GetTcpExTable2FromStackが機能しなかった理由
GetExtendedTcpTable を実装したiphlpapiで CurrPort の最新版が機能しなくなる件ですが、ようやく理由がわかりました
GetExtendedTcpTable は内部で GetTcpExTable2FromStack をコールしているのですが、この時の TCP_TABLE_CLASS が深くかかわっていました。
TCP_TABLE_BASIC やTCP_TABLE_OWNER_PIDのときは問題ないのですが、TCP_TABLE_OWNER_MODULEを使うと、NtDeviceIoControlFileしたときに エラー 0x57(パラメータが間違っています)が返ってくるので、調べてみたところ、 NtDeviceIoControlFile をコールするときの InputBuffer のデータ並び
0: 0x400
4: 0x100
8: 0x200
0xc: 0x1
0x10: 関数番号(0x101/0x102/0x103/0x104/0x105/0x106/0x107/0x108/0x110)
0x14: 0
0x18: 0
0x1c: 0
0x20: 0
の様になってるんですが、Windows 2000の場合、0x106までにしか関数番号が対応してなかったのでした。(数字の詳しい意味まで分かりませんが)
とりあえず自前で処理したら動くようになったので組み込んだ v17l公開しました。
変更点は以下の通り。
ntdllに以下の関数追加。
vDbgPrintExWithPrefix
vDbgPrintEx
DbgPrintEx
advapi32 に以下の関数追加。
FlushTraceA
UpdateTraceW
UpdateTraceA
StopTraceW
StopTraceA
QueryTraceW
QueryTraceA
IsTokenUntrusted
EnumerateTraceGuids
GetInheritanceSourceA
TreeResetNamedSecurityInfoW
FreeInheritedFromArray
GetInheritanceSourceW
iphlpapiに以下の関数を追加
GetUdpExTable2FromStack
GetTcpExTable2FromStack
GetBestInterfaceEx
GetExtendedTcpTable
GetExtendedUdpTable
の処理内容を変更
2012-07-29 14:45現在のv17lですが
setupしようとするとhttpapi.dllが無いのでsetup終了しますってなります
16:25現在v17m落ちない ○乙
ファイル名間違えた?
反映されるのに多少時間掛かるならスマナイ
v17mやばいっすよ
BsoD食います
STOP:c0000139
うーん、ntoskrnl.exe は カーネルコアv10なので別パッケージなので、
拡張カーネルと関係ないのですが。
念のためリパックした17m2をアップしておきました。
こっちの環境のマルチコアだと問題ないので、これからHAL入れ替えて試してみます
#17:25 追記、シングルコア環境で v17m2で問題なしでした。これから拡張コアv10a入れてみます
m2まだやっていません、instしたPCやっと復帰させました
ntoskrnl.exe関係なかったです、ごめんなさい
ntdll.dll
user32.dll
kernel32.dll
戻したらBsoD出なくなったので、この辺りかな
リパックのm2問題ないです
何が原因だったかわかるのでした
差し支えなければ教えて貰えるとありがたいです
複数の言語版を同時に圧縮したので、うまく更新されていなくて
古いバイナリがパッケージングされていたのかもしれません。
レスすいません
そう言う感じですか
てっきり、私はおっちょこちょいなので、何かやらかしたのかと思ったのですけど
違ったみたいですね
それと、拡張コアじゃ無くカーネルの方なので
HAL関連は関係ないの、少し考えれば分かりそうな物でしたね
申し訳ない
セーフでHAL関連の読み込みで固まっていたので
頭の中で’HALかよ’って考え固まってしまってた
拡張カーネルv17m 英語版ですが、起動途中でprocedure entry point RtlPrefixUnicodeString が ntdll.dllに無いというエラーメッセージを表示してブルースクリーンで停止してしまいます。ここのところこうしたことがなかったので、起動しなかった場合の対処に欠けておりまして、もし、ntdll.dllの修正版が出ましたら、リカバリーコンソールから手動差し替えできるようしていただけますと助かります。
先ほどのエラーの件ですが、リカバリーコンソールから、手動で、v17k 英語版の ntdll.dll に差し替えたところ、とりあえず起動はするようになりました。v17m 英語版の修正版を待っております。
海外サイトの方でも指摘があって、悩んでいたのですが、パッケージミスでした。
どうやらアップロードしてたフォルダにあるバイナリが古かったみたいで、
自分のPCに入れていた正式版がアップできてなかったようです。
差し替えたのでお試しください。
たびたびすみません。再ダウンロードして試してみたのですが、状況は改善していません。どうも以前のv17m英語版がダウンロードされているように思えるのですが。
確認してダウンロードしてみたら、確かに古いですね。
再度アップロードしなおしたので確認してみてください。
解凍のとき v17m2と表示されていれば最新です