Directx11IDXGISwapChainをフックしようとしています。Direct3DHookライブラリとEasyHookを使用してスクリーンショットを取得するために提示します。Direct3DHookはシングルスクリーンショット用に作成されていると思いますが、スクリーンショットのストリームを取得するために拡張しようとしています。最初の数枚のスクリーンショットの後、ホストアプリケーションはランダムレンダリングスタックで例外を受け取ります。
DXHookD3D11.csファイル内の次のコードにエラーを切り分けることができます。
using (MemoryStream ms = new MemoryStream())
{
// This line crashes the main program, removing this makes the program not crash
res = Texture2D.ToStream(textureDest.Device.ImmediateContext, textureDest, ImageFileFormat.Bmp, ms).Code;
if (res != 0)
{
// this debugmessage never gets printed
this.DebugMessage("PresentHook: ERror in Tostream " + res.ToString());
}
.......
}