5
次のスニペットをC#.NETに変換できますか?C++からC#への関数の変換
template <class cData>
cData Read(DWORD dwAddress)
{
cData cRead; //Generic Variable To Store Data
ReadProcessMemory(hProcess, (LPVOID)dwAddress, &cRead, sizeof(cData), NULL); //Win API - Reads Data At Specified Location
return cRead; //Returns Value At Specified dwAddress
}
あなたがC++でメモリからデータを読みたいとき、それはジェネリックですので、これは本当に便利です:あなたはRead<"int">(0x00)"
やRead<"vector">(0x00)
を使用し、1つの関数にそれをすべて持っていることができます。
C#.NETでは、メモリを読み込むために、あらかじめ定義されたパラメータを持つDLLImport ReadProcessMemoryが必要です(もちろんこれは一般的ではありません)。
おそらく、あなたはここで提案の戦略を使用することができます:http://stackoverflow.com/a/6336196/3150802を。しかし、確かに私はきちんとしたワンショットジェネリック関数でそれをパッケージ化する方法がわかりません。おそらく、ある種のシリアライズ可能なインターフェイスを実装するために読み込みに使用されたクラスを強制します。 –
値型(構造体には管理されていないデータのみが含まれています)では、おそらくメモリアドレスを構造体へのポインタとして使用し、そのインスタンスのコピーを完全に一般的に 'where T:struct'制約でtype引数に返します。 –
あなたの新しい「答え」では、あなたがベクトルを返すことを控えめに言っています。あなたは(もちろん、このオリジナルのポストで)明確にすることができますか?問題は面白いですが、なぜ特定のアドレスにintがある場合にベクトルを生成したいのか分かりません。 –