Windows system >> Windowsの知識 >  >> Windowsチュートリアル合成 >> システムFAQ >> 共有メモリマップドファイルの使用下に窓

共有メモリマップドファイルの使用下に窓

  
        共有メモリマップされたファイルのアプローチの使用下のウィンドウには、次の実装コード、注釈付きの詳細である、比較的簡単です。通話操作がSHM下のlinuxに似ています。このクラスは、あまりにも多くのテストをする質問をすることを歓迎し、バグ~~ :)
の#include<はありません。WINDOWS.H>の#include<文字列>の#include<のiostream>の#include< assert.h>使用しますstd ::文字列;のstd :: coutのを使用して、STDを使用して::てendl;の#pragma警告(無効:4311)クラスshareMemory {プライベート:LPWSTRのshm_name_u; BOOL is_create_file; void *型sh_base;セマフォHANDLE; FILE_MAPPING HANDLE; int型addr_len、公衆:/* CREATE_FILEマップは、ファイルの名前で、ディスクファイルとのマッピングは、共有メモリが解放メモリアクセス違反の問題の後に表示されない場合は、ディスクファイルやページファイルマッピングの使用を説明するために使用されますが、ディスク上のファイルを作成します。指定されたパラメータをshm_name。ページファイルのマッピングは、ディスク・ファイル* /shareMemoryに確立されていない場合(定数文字列&#038;偽shm_name、ブールCREATE_FILE =):is_create_file(CREATE_FILE){constのchar型* _c_shm_name = shm_name.c_str(); int型_size =( INT)shm_name.length()+ 1; shm_name_u =(LPWSTR)はmalloc(_size * 2); MultiByteToWideCharの(CP_ACP、0、_c_shm_name、_size、shm_name_u、_size);セマフォ=たCreateSemaphore(NULL、1,1、NULL); sh_base = NULL; FILE_MAPPING = INVALID_HANDLE_VALUE;}ボイド*場合、shm_open(ボイド*のADDR、CONST int型の長さ、DWORD保護){addr_len =長さ; _file_handle = INVALID_HANDLE_VALUEをハンドルと、(is_create_file){_file_handle =のCreateFile(shm_name_u、GENERIC_READ場合
						
Copyright © Windowsの知識 All Rights Reserved