次の方法で共有


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」を参照してください。

関連項目

CAtlFileMapping クラス
クラスの概要