[英]Memory mapped file C++
請幫助我閱讀內存映射文件。 我在下面的代碼中打開文件。 然后我想從8到16讀取字節。我該怎么做?
// 0. Handle or create and handle file
m_hFile = CreateFile(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (m_hFile == INVALID_HANDLE_VALUE)
{
if (GetLastError() == ERROR_FILE_NOT_FOUND)
{
m_hFile = createNewFile(file_path.c_str());
}
else throw GetLastError();
}
// 1. Create a file mapping object for the file
m_hMapFile = CreateFileMapping(m_hFile, NULL, PAGE_READWRITE, 0, 0, NULL);
if (m_hMapFile == NULL) throw GetLastError();
// 2. Map the view.
m_lpMapAddress = MapViewOfFile(m_hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 0);
// to map
if (m_lpMapAddress == NULL) throw GetLastError();
您可以像訪問其他任何內存塊一樣訪問它。 這是一個示例,其中輸出解釋為unsigned char
的那些字節:
unsigned char *mappedDataAsUChars = (unsigned char*)m_lpMapAddress;
for(int k = 8; k < 16; k++)
std::cout << "Byte at " << k << " is " << mappedDataAsUChars[k] << std::endl;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.