mysql直接内存映射文件_windows内存映射文件

#include "stdafx.h"#include#includetypedefstruct__ListNode

{char data[10];struct __ListNode *pNext;

}ListNode,*pListNode;int main(int argc, char **argv)

{

LPCWSTR file= TEXT("test.txt");

HANDLE hFile= CreateFile( //创建或打开文件内核对象

file,

GENERIC_WRITE|GENERIC_READ,

FILE_SHARE_WRITE|FILE_SHARE_READ,

NULL,

OPEN_EXISTING,

FILE_ATTRIBUTE_NORMAL,

NULL

);if (hFile ==INVALID_HANDLE_VALUE)

{return false;

}/*DWORD dwWriteSize;

pListNode curr; //当前节点指针

pListNode head; //首节点

head = NULL;

char temp2[20] = { 0 };

for (int i = 0; i<10; i++)

{

curr = (pListNode)malloc(sizeof(ListNode));

sprintf(temp2, "%.1d\n", i);

strcpy(curr->data, temp2);

curr->pNext = head;

head = curr;

}

pListNode s;

s = head;

wchar_t buff[2] = L"";

while (s)

{

DWORD size = MultiByteToWideChar(CP_ACP, 0, s->data, -1, NULL, 0);

wchar_t *temp1 = (wchar_t *)malloc(size*sizeof(wchar_t));

memset(temp1, 0, size*sizeof(wchar_t));

MultiByteToWideChar(CP_ACP, 0, s->data, -1, temp1, size);

WriteFile(hFile, temp1, sizeof(temp1), &dwWriteSize, NULL);

s = s->pNext;

}

/**/DWORD filesize=GetFileSize(hFile, NULL);//创建一个文件映射内核对象

HANDLE hMap = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, filesize, NULL);if (hMap ==INVALID_HANDLE_VALUE)

{return false;

}//将文件数据映射到进程的地址空间

LPSTR lpMapAddress = (LPSTR)MapViewOfFile(hMap, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, filesize);if (lpMapAddress ==NULL)

{

printf("MapView error!\n");return -1;

}else{int m = 0;

printf("----%d\n", filesize);while (true)

{if (m >filesize)

{break;

}if(lpMapAddress[m])

{

printf("%c\n", lpMapAddress[m]);

lpMapAddress[m]= 97;//可以更改文件的值

}

m++;

}

}

UnmapViewOfFile(lpMapAddress);

CloseHandle(hMap);

CloseHandle(hFile);return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值