異なるアプリケーション間でメモリを共有するDLLを作成しています。CreateFileMapping()name
#define NAME_SIZE 4
HANDLE hSharedFile;
create(char[NAME_SIZE] name)
{
hSharedFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 1024, (LPCSTR)name);
(...) //Other stuff that maps the view of the file etc.
}
それは動作しません:
共有メモリを作成するコードは次のようになります。私はそれが動作する文字列でname
を交換する場合は:
SharedFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 1024, (LPCSTR)"MY_TEST_NAME");
は、どのように私は、これはchar型の配列で動作するように入手できますか?
私はいつも文字列を使用するjavaバックグラウンドを持っていますが、LPCSTRは何ですか?そして、これは私のMS VC++プロジェクトがUnicode
を使用しているかどうかに関係またはMulti-Byte
文字を使用すると、ドキュメントを見れば、あなたはほとんどのWin32関数はTCHAR
の文字列を表しLPCTSTR
を取ることがわかります
のように末尾に「\ 0」を追加しなければなりませんか?失敗したときに 'CreateFileMapping'の戻り値とエラーコード(' GetLastError'で取得できます)は何ですか? –
関数を作成するパラメータとして何を渡していますか? – Elalfer
私は{'T'、 'E'、 'S'、 'T'}を渡していますが、それは失敗しませんが、後で別のアプリケーションで共有メモリ空間を開くことができません。 – sigvardsen