2

ポインタと参照(&)を試しましたが、情報を取得しようとすると(メモリからのみ読み取っています)、コンピュータが「ビープ音」を鳴らしてプログラムが終了します。バイト(char *)にポインタを割り当てる場合は問題ありません。しかし、私がそのコンピューターを読むと、ビープ音が鳴ります。(x = * p;)

Windows XP、1GB +128MBRAM。私のeproom+eepromについてはわかりません。

System()関数を使用してOSコマンドを使用してメモリに到達できますか?誰か知っていますか?

4

3 に答える 3

19

できません。最近のOSは、これを許可しない仮想モードとメモリ保護を使用しています。すべての物理RAMにアクセスするには、ほとんどの場合、独自のOSまたは既存のOS用のカーネルドライバーを作成する必要があります。

于 2012-07-13T09:04:49.067 に答える
4

これを行うことはできません。実行する特権がないため、コードを実行すると、プログラムを実行するプロセスが作成され、各プロセスはそのアドレススペースにのみアクセスでき、他のプロセスのアドレススペースにアクセスするとトラップが作成されます。 os、そしてあなたのカーネルは仕事を中断し、あなたのスタックとあなたのプロセスをチェックします、そしてそれはあなたが非特権的なタスクをしたことを見つけます、そしてそれはあなたのプロセスを殺します

于 2012-07-13T09:07:33.863 に答える
0

これは私を助けるはずです:

typedef struct _MEMORY_BASIC_INFORMATION {
PVOID BaseAddress;
PVOID AllocationBase;
DWORD AllocationProtect;
DWORD RegionSize;
DWORD State;
DWORD Protect;
DWORD Type;
} MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION;

この:

VirtualQueryEx(
HANDLE hProcess,
LPCVOID lpAddress,
PMEMORY_BASIC_INFORMATION lpBuffer,
DWORD dwLength
);

少なくとも私のOSでは、BoPerssonとJerryCoffinまたはMysticialに感謝します

于 2012-07-13T09:50:16.213 に答える