社区
工具平台和程序库
帖子详情
内存映射或者内存管理
lovewith
2003-11-20 12:27:55
这个程序怎么写
1。把缓冲的信息准实时写到内存中,然后写到磁盘文件中。
2 磁盘文件中的数据恢复到内存中
...全文
106
16
打赏
收藏
内存映射或者内存管理
这个程序怎么写 1。把缓冲的信息准实时写到内存中,然后写到磁盘文件中。 2 磁盘文件中的数据恢复到内存中
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ahao
2003-12-03
打赏
举报
回复
1 setfilepointer针对2的64次方字节,这个足够了吧:)
2 那个文件一定已经在了,否则createfile中用open_exist参数,
如果文件不在,这个函数就会失败。
ahao
2003-12-03
打赏
举报
回复
把数据放入内存的同时写磁盘就可以了,但最好想其他的设计吧,你这样做不一定是好方法。
lovewith
2003-11-29
打赏
举报
回复
#include "list"
#include "string"
#include "windows.h"
#include "iostream"
using namespace std;
typedef struct SM
{
SM(int i){
accout[0]='\0';
sprintf(accout,"A%d",i);
num = i;
}
char accout[20];
int num;
}A;
list<A *> aList;
list<A *>::iterator j;
int main()
{
int i=0;
A a[8] = {A(1),A(2),A(3),A(4),A(5),A(6),A(7),A(8)};
memset(a,0,sizeof(A)*8);
for(i=0;i<8;i++)
{
aList.push_back(&a[i]);
}
HANDLE hFile=CreateFile("Recv1.zip",GENERIC_WRITE|GENERIC_READ,FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_FLAG_SEQUENTIAL_SCAN,NULL);
HANDLE hFileMapping = CreateFileMapping(hFile,NULL,PAGE_READWRITE,
0, 0x4000000, NULL);
//CloseHandle(hFile);
// É趨´óС¡¢Æ«ÒÆÁ¿µÈ²ÎÊý
//__int64 qwFileSize = 0x4000000;
__int64 qwFileOffset = 0;
//__int64 T = 600 ;
DWORD dwBytesInBlock = 1000;
// ½«ÎļþÊý¾ÝÓ³Éäµ½½ø³ÌµÄµØÖ·¿Õ¼ä
PBYTE pbFile = (PBYTE)MapViewOfFile(hFileMapping,
FILE_MAP_ALL_ACCESS,
(DWORD)(qwFileOffset>>32), (DWORD)(qwFileOffset&0xFFFFFFFF), dwBytesInBlock);
//nReadLen=syio_Read(port[1], pbFile + qwFileOffset, QueueLen);
//qwFileOffset += nReadLen;
unsigned long nWritten = -1;
for(j=aList.begin();j!=aList.end();++j)
{
WriteFile(hFileMapping,&(*j),sizeof(*j),&nWritten,NULL);
}
UnmapViewOfFile(pbFile);
CloseHandle(hFileMapping);
CloseHandle(hFile);
//DeleteFile("Recv1.zip");
return 0;
}
我的程序写不进去
lovewith
2003-11-29
打赏
举报
回复
不要用MFC,比如不断写一些字符串到内存中去.再写到磁盘中去.
lovewith
2003-11-29
打赏
举报
回复
_strlwr( (char*)(pbFile+qwFileOffset));此句话是什么意思
flyccloud
2003-11-29
打赏
举报
回复
up
bluebohe
2003-11-29
打赏
举报
回复
#include "stdafx.h"
#include "windows.h"
int main(int argc, char* argv[])
{
HANDLE hFile = CreateFile("J:\\a.txt",
GENERIC_WRITE | GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_ALWAYS,
FILE_FLAG_SEQUENTIAL_SCAN,
NULL);
int iLen=GetFileSize(hFile,NULL)+1;
HANDLE hFileMapping = CreateFileMapping(hFile,NULL,PAGE_READWRITE, 0, iLen, NULL);
// 释放文件内核对象
CloseHandle(hFile);
__int64 qwFileOffset = 0;
PBYTE pbFile = (PBYTE)MapViewOfFile(hFileMapping,FILE_MAP_ALL_ACCESS,
(DWORD)(qwFileOffset>>32), (DWORD)(qwFileOffset&0xFFFFFFFF), iLen);
_strlwr( (char*)(pbFile+qwFileOffset));
UnmapViewOfFile(pbFile);
CloseHandle(hFileMapping);
return 0;
}
lovewith
2003-11-29
打赏
举报
回复
有但不能写进去啊我试了不行,不知你试了没有。
mechgoukiteng
2003-11-25
打赏
举报
回复
这个问题
《windows核心编程>关于内存映射那一部分说的非常清楚
xujunfeng008
2003-11-25
打赏
举报
回复
把数据用字节传入传去不就行了??
fierygnu
2003-11-20
打赏
举报
回复
问题不清楚,是不是要类似swap的功能?
1、用定时器
2、读入不行?
lovewith
2003-11-20
打赏
举报
回复
问题不清楚,是不是要类似swap的功能?
1、用定时器
2、读入不行?
1。把缓冲(一个窗口大小比如5条)的信息准实时写到内存中,然后写到磁盘文件中。
2。当出现问题时。磁盘文件中的数据恢复到内存中
以上做法是为了防止
当把缓冲中的数据发送到消息队列中。但是当出现故障时,防止未发送的数据丢失。这样定义一个定时器,定时地往内存写再写到磁盘文件中。这样不会出现数据丢失或者很少。因为可以从磁盘中读取到缓冲中
不知那位有相关的程序
zhouqingyuan
2003-11-20
打赏
举报
回复
什么意思?
goodboyyxh
2003-11-20
打赏
举报
回复
char szPathName[500];
memset(szPathName, 0, 500);
GetCurrentDirectory(500, szPathName);
strcat(szPathName, "\\MonitorLogFile\\SS7RunInfo.log");
if(pRunInfoFile == NULL)
{
pRunInfoFile = fopen(szPathName, "a+t");
if(pRunInfoFile == NULL)
return FALSE;
}
fseek(pRunInfoFile, 0, SEEK_END);
fprintf(pRunInfoFile, "%s\n", lpStr);
if(fflush(pRunInfoFile) == EOF)
return FALSE;
return TRUE;
双杯献酒
2003-11-20
打赏
举报
回复
不清楚您要什么。
goodboyyxh
2003-11-20
打赏
举报
回复
OnTimer()
{
}
s:iterator 用法
s:iterator 用法 - 百度文库
Iterator的用法
Iterator的简单使用
java中Iterator用法总结
Java中Iterator用法 迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。 Collection集合元素的通用获取方式:在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,如果还有就再取出出来。一直把集合中的所...
C++中istream_iterator和ostream_iterator的用法
写在前面 今天在看《STL源码剖析》的时候,看到了配接器中的ostream iterator,其中包含istream_iterator以及ostream_iterator以及更多,感觉这两个都十分重要,所以在这里介绍一下 istream_iterator 源码: template <class T, class Distance = ptrdiff_t> class ist...
iterator的基本用法
1.iterator输出 package com.iterator.demo; import java.util.Iterator; import java.util.Set; public class IteratorDemo { public static void main(String[] args) { Set<String>...
工具平台和程序库
24,851
社区成员
27,330
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章