EMONE DDI内部

EMONEのROM吸い出しに成功したので、nvddi.dllの中身を見てみました。定義されているAPIは以下の3種

DisplayInit()
DrvEnableDriver()
HALInit()

何か重大な発見をした気がするw

MSサイトのddiの説明には… http://msdn.microsoft.com/en-us/library/aa911948.aspx

>Ddi.dll exports only the DrvEnableDriver function, which returns a pointer to an array of 27 function pointers to the caller. When GWES requires a display driver, it calls one of these 27 functions.

とあります。DrvEnalbeDriverだけあれば良いのですか。ふむふむ。ん?

な〜んか2つほど多くないかい、あんちゃん?


そして驚愕の事実が…

またまたMSのDirectDrawドライバの説明には… http://msdn.microsoft.com/en-us/library/aa908378.aspx

>Modify the file used to export functions from your compiled binary.

It should export the HALInit function. To see how this is done, you can consult the sample driver source code file DDI.def. The HALInit function is part of the Ddgpe.lib. This should already be linked to your project.

ふむふむ HALInit をエクスポートしろと。ん?どっかで見たような?

え?

結果

DirectDrawでは既に、nvddiを使っているみたいですね。今まで調べていたレジストリは、ROMから抜いたレジストリで、それにはDirectDrawに関する記述にnvddiは登場してこなかったんですが、稼働中EMONEから抜いたレジストリだと、DirectDrawドライバにnvddiがしっかり設定されてました。
やっぱ、Windowsレジストリの編集では、2Dはこれが限界みたい。

ただ、nvddi.dllは、ディスプレイドライバとGDIドライバ、DirectDrawドライバの3点を兼ねていたということが解っただけでも。

っていうことは、これ以上やりたかったら、GFSDKのレジストリ周りってことになるんですよねぇ、やっぱり。