CAtlFileMappingBase クラス
このクラスは、メモリ マップ ファイルを表します。
重要
このクラスとそのメンバーは、Windows ランタイムで実行するアプリケーションで使用することはできません。
構文
class CAtlFileMappingBase
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
CAtlFileMappingBase::CAtlFileMappingBase | コンストラクター。 |
CAtlFileMappingBase::~CAtlFileMappingBase | デストラクター。 |
パブリック メソッド
名前 | 説明 |
---|---|
CAtlFileMappingBase::CopyFrom | ファイル マッピング オブジェクトからコピーするには、このメソッドを呼び出します。 |
CAtlFileMappingBase::GetData | ファイル マッピング オブジェクトからデータを取得するには、このメソッドを呼び出します。 |
CAtlFileMappingBase::GetHandle | このメソッドを呼び出すと、ファイル ハンドルが返されます。 |
CAtlFileMappingBase::GetMappingSize | ファイル マッピング オブジェクトからマッピング サイズを取得するには、このメソッドを呼び出します。 |
CAtlFileMappingBase::MapFile | ファイル マッピング オブジェクトを作成するには、このメソッドを呼び出します。 |
CAtlFileMappingBase::MapSharedMem | すべてのプロセスへのフル アクセスを許可するファイル マッピング オブジェクトを作成するには、このメソッドを呼び出します。 |
CAtlFileMappingBase::OpenMapping | このメソッドを呼び出すと、ファイル マッピング オブジェクトへのハンドルが返されます。 |
CAtlFileMappingBase::Unmap | ファイル マッピング オブジェクトをマップ解除するには、このメソッドを呼び出します。 |
パブリック演算子
名前 | 説明 |
---|---|
CAtlFileMappingBase::operator = | 現在のファイル マッピング オブジェクトを別のファイル マッピング オブジェクトに設定します。 |
解説
ファイル マッピングは、ファイルの内容と、プロセスの仮想アドレス空間の一部との関連付けです。 このクラスによって、プログラムで簡単にデータにアクセスして共有できるファイル マッピング オブジェクトを作成するためのメソッドが提供されます。
詳細については、Windows SDK の「ファイル マッピング」を参照してください。
要件
ヘッダー: atlfile.h
CAtlFileMappingBase::CAtlFileMappingBase
コンストラクター。
CAtlFileMappingBase(CAtlFileMappingBase& orig);
CAtlFileMappingBase() throw();
パラメーター
orig
新しいオブジェクトを作成するためにコピーする元のファイル マッピング オブジェクト。
解説
必要に応じて、既存のオブジェクトを使用して新しいファイル マッピング オブジェクトを作成します。 この場合でも、CAtlFileMappingBase::MapFile を使用して特定のファイルのファイル マッピング オブジェクトを開くか、作成する必要があります。
例
int OpenMyFileMap()
{
// Create the file-mapping object.
CAtlFileMappingBase myFileMap;
// Create a file.
CAtlFile myFile;
myFile.Create(_T("myMapTestFile"),
GENERIC_READ|GENERIC_WRITE|STANDARD_RIGHTS_ALL,
FILE_SHARE_READ|FILE_SHARE_WRITE,
OPEN_ALWAYS);
// The file handle.
HANDLE hFile = (HANDLE)myFile;
// Test the file has opened successfully.
ATLASSERT(hFile != INVALID_HANDLE_VALUE);
// Open the file for file-mapping.
// Must give a size as the file is zero by default.
if (myFileMap.MapFile(hFile,
1024,
0,
PAGE_READWRITE,
FILE_MAP_READ) != S_OK)
{
CloseHandle(hFile);
return 0;
}
// Confirm the size of the mapping file.
ATLASSERT(myFileMap.GetMappingSize() == 1024);
// Now the file-mapping object is open, a second
// process could access the filemap object to exchange
// data.
return 0;
}
CAtlFileMappingBase::~CAtlFileMappingBase
デストラクター。
~CAtlFileMappingBase() throw();
解説
クラスによって割り当てられたすべてのリソースを解放し、CAtlFileMappingBase::Unmap メソッドを呼び出します。
CAtlFileMappingBase::CopyFrom
ファイル マッピング オブジェクトからコピーするには、このメソッドを呼び出します。
HRESULT CopyFrom(CAtlFileMappingBase& orig) throw();
パラメーター
orig
コピー元の元のファイル マッピング オブジェクト。
戻り値
成功した場合は S_OK、失敗した場合はエラー HRESULT を返します。
CAtlFileMappingBase::GetData
ファイル マッピング オブジェクトからデータを取得するには、このメソッドを呼び出します。
void* GetData() const throw();
戻り値
データを指すポインターを返します。
CAtlFileMappingBase::GetHandle
このメソッドを呼び出すと、ファイル マッピング オブジェクトへのハンドルが返されます。
HANDLE GetHandle() throw ();
戻り値
ファイル マッピング オブジェクトへのハンドルを返します。
CAtlFileMappingBase::GetMappingSize
ファイル マッピング オブジェクトからマッピング サイズを取得するには、このメソッドを呼び出します。
SIZE_T GetMappingSize() throw();
戻り値
マッピング サイズを返します。
例
CAtlFileMappingBase::CAtlFileMappingBase の例を参照してください。
CAtlFileMappingBase::MapFile
指定したファイルのファイル マッピング オブジェクトを開くか、作成するには、このメソッドを呼び出します。
HRESULT MapFile(
HANDLE hFile,
SIZE_T nMappingSize = 0,
ULONGLONG nOffset = 0,
DWORD dwMappingProtection = PAGE_READONLY,
DWORD dwViewDesiredAccess = FILE_MAP_READ) throw();
パラメーター
hFile
マッピング オブジェクトの作成に使用するファイルへのハンドル。 hFile は、有効である必要があり、INVALID_HANDLE_VALUE に設定することはできません。
nMappingSize
マッピング サイズ。 0 の場合、ファイル マッピング オブジェクトの最大サイズは、hFile で識別されるファイルの現在のサイズと等しくなります。
nOffset
マッピングを開始するファイル オフセット。 オフセット値は、システムのメモリ割り当て精度の倍数である必要があります。
dwMappingProtection
ファイルがマッピングされる場合にファイル ビューに必要な保護。 Windows SDK の「CreateFileMapping」にある「flProtect」を参照してください。
dwViewDesiredAccess
ファイル ビューへのアクセスの種類、したがってファイルによってマッピングされるページの保護を指定します。 Windows SDK の「MapViewOfFileEx」にある「dwDesiredAccess」を参照してください。
戻り値
成功した場合は S_OK、失敗した場合はエラー HRESULT を返します。
解説
ファイル マッピング オブジェクトが作成された後、ファイルのサイズは、ファイル マッピング オブジェクトのサイズを超えることはできません。超える場合、必ずしもファイルのすべての内容を共有できるとは限りません。 詳細については、Windows SDK の「CreateFileMapping」および「MapViewOfFileEx」を参照してください。
例
CAtlFileMappingBase::CAtlFileMappingBase の例を参照してください。
CAtlFileMappingBase::MapSharedMem
すべてのプロセスへのフル アクセスを許可するファイル マッピング オブジェクトを作成するには、このメソッドを呼び出します。
HRESULT MapSharedMem(
SIZE_T nMappingSize,
LPCTSTR szName,
BOOL* pbAlreadyExisted = NULL,
LPSECURITY_ATTRIBUTES lpsa = NULL,
DWORD dwMappingProtection = PAGE_READWRITE,
DWORD dwViewDesiredAccess = FILE_MAP_ALL_ACCESS) throw();
パラメーター
nMappingSize
マッピング サイズ。 0 の場合、ファイル マッピング オブジェクトの最大サイズは、szName で識別されるファイルの現在のサイズと等しくなります。
szName
マッピング オブジェクトの名前。
pbAlreadyExisted
マッピング オブジェクトが既に存在する場合に TRUE に設定されるブール値を指します。
lpsa
返されたハンドルを子プロセスで継承できるかどうかを決定する SECURITY_ATTRIBUTES
構造体を指します。 Windows SDK の「CreateFileMapping」にある「lpAttributes」を参照してください。
dwMappingProtection
ファイルがマッピングされる場合にファイル ビューに必要な保護。 Windows SDK の「CreateFileMapping
」にある「flProtect」を参照してください。
dwViewDesiredAccess
ファイル ビューへのアクセスの種類、したがってファイルによってマッピングされるページの保護を指定します。 Windows SDK の「MapViewOfFileEx」にある「dwDesiredAccess」を参照してください。
戻り値
成功した場合は S_OK、失敗した場合はエラー HRESULT を返します。
解説
MapShareMem
を使用すると、CreateFileMappingで作成された既存のファイル マッピング オブジェクトをプロセス間で共有できます。
CAtlFileMappingBase::OpenMapping
指定したファイルの名前付きファイル マッピング オブジェクトを開くには、このメソッドを呼び出します。
HRESULT OpenMapping(
LPCTSTR szName,
SIZE_T nMappingSize,
ULONGLONG nOffset = 0,
DWORD dwViewDesiredAccess = FILE_MAP_ALL_ACCESS) throw();
パラメーター
szName
マッピング オブジェクトの名前。 この名前でファイル マッピング オブジェクトに対して開いているハンドルが存在し、マッピング オブジェクトのセキュリティ記述子が dwViewDesiredAccess パラメーターと競合しない場合、オープン操作は成功します。
nMappingSize
マッピング サイズ。 0 の場合、ファイル マッピング オブジェクトの最大サイズは、szName で識別されるファイルの現在のサイズと等しくなります。
nOffset
マッピングを開始するファイル オフセット。 オフセット値は、システムのメモリ割り当て精度の倍数である必要があります。
dwViewDesiredAccess
ファイル ビューへのアクセスの種類、したがってファイルによってマッピングされるページの保護を指定します。 Windows SDK の「MapViewOfFileEx」にある「dwDesiredAccess」を参照してください。
戻り値
成功した場合は S_OK、失敗した場合はエラー HRESULT を返します。
解説
入力パラメーターが無効な場合、デバッグ ビルドでは、アサーション エラーが発生します。
CAtlFileMappingBase::operator =
現在のファイル マッピング オブジェクトを別のファイル マッピング オブジェクトに設定します。
CAtlFileMappingBase& operator=(CAtlFileMappingBase& orig);
パラメーター
orig
現在のファイル マッピング オブジェクト。
戻り値
現在のオブジェクトへの参照を返します。
CAtlFileMappingBase::Unmap
ファイル マッピング オブジェクトをマップ解除するには、このメソッドを呼び出します。
HRESULT Unmap() throw();
戻り値
成功した場合は S_OK、失敗した場合はエラー HRESULT を返します。
解説
詳細については、Windows SDK の「UnmapViewOfFile」を参照してください。