青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

力為的技術(shù)博客

聯(lián)系 聚合 管理
  154 Posts :: 1 Stories :: 561 Comments :: 0 Trackbacks

???????????????????????????????????? 如何通過FILE*操作內(nèi)存文件

/*
問題概述:
? 有這樣一個(gè)第三方的庫函數(shù)void WriteDataToFile(FILE* pFile),它是向一個(gè)文件寫入數(shù)據(jù)。
? 現(xiàn)在需要通過函數(shù)WriteDataToFile生成臨時(shí)數(shù)據(jù),但不能生成磁盤文件(需要在內(nèi)存中操作)。
? 然后通過某種方式讀取內(nèi)存中的數(shù)據(jù)。

流程設(shè)想:
1、
創(chuàng)建一個(gè)內(nèi)存文件
獲取該內(nèi)存文件的FILE*
寫入數(shù)據(jù)
2、
打開該內(nèi)存文件
獲取內(nèi)存文件的FILE*
讀取內(nèi)存文件的內(nèi)容
關(guān)閉
3、
關(guān)閉
*********************************************************************************
需要解決的問題:
1. 內(nèi)存文件的HANDLE是否可以轉(zhuǎn)換為FILE* (_open_osfhandle不可以)
2. 內(nèi)存文件的操作需要調(diào)用PVOID pView = MapViewOfFile(...); 通過pView才能更改內(nèi)存文件之內(nèi)容。
?? 通過FILE* 能否通過某種方式操作pView的內(nèi)容
3. 需要實(shí)現(xiàn)的函數(shù)(見下面的測試代碼)
?? FILE* GetFilePtrByMemFileHandle(HANDLE hMemFile)
?? void UpdateMemFile(HANDLE hMemFile)
4. 如果該方案有問題,可以更改

**********************************************************************************
實(shí)現(xiàn):
? 1.為了方便測試使用全局的文件HANDLE
? 2.模擬實(shí)現(xiàn)了WriteDataToFile函數(shù)
? 3.已有資料http://community.csdn.net/Expert/TopicView.asp?id=4317083

?1*/
?2#define?MF_NAME?TEXT("MF_FILE_NAME")
?3#define?MF_SIZE?4*1024
?4HANDLE?g_hMemFile?=?NULL;
?5//?模擬庫函數(shù)WriteDataToFile
?6void?WriteDataToFile(FILE*?pFile)
?7{
?8???ASSERT(pFile);
?9???fputs("Write?by?Lib?Function!\n",?pFile);
10}

11
12BOOL?CreateMemFile()
13{
14g_hMemFile?=?CreateFileMapping(INVALID_HANDLE_VALUE,?
15NULL,?PAGE_READWRITE,?0,?
16MF_SIZE,?MF_NAME);
17if(g_hMemFile?!=?NULL)
18{
19if(GetLastError()?==?ERROR_ALREADY_EXISTS)
20{
21TRACE("STL?MapFile?already?exists.");
22CloseHandle(g_hMemFile);
23return?FALSE;
24}

25return?TRUE;
26}

27return?FALSE;
28}

29
30FILE*?GetFilePtrByMemFileHandle(HANDLE?hMemFile)
31{
32//.
33//具體的實(shí)現(xiàn)
34
35//.
36return?NULL;
37}

38void?UpdateMemFile(HANDLE?hMemFile)
39{
40//..
41//需要實(shí)現(xiàn)
42}

43
44void?Test()
45{
46//?1?寫內(nèi)存文件
47if(CreateMemFile()?==?FALSE)
48return;
49
50?????FILE*?pFile?=?GetFilePtrByMemFileHandle(g_hMemFile);
51?if(NULL?==?pFile)
52?{
53?CloseHandle(g_hMemFile);
54?return;
55?}

56
57?WriteDataToFile(pFile);
58?//更新內(nèi)存文件
59?UpdateMemFile(g_hMemFile);
60
61//?2?讀內(nèi)存文件
62?HANDLE?hFile?=?OpenFileMapping(FILE_MAP_READ?|?FILE_MAP_WRITE,?FALSE,?MF_NAME);
63?if(hFile?!=?NULL)
64?{
65?FILE*?pReadFile?=?GetFilePtrByMemFileHandle(hFile);
66?if(pReadFile)
67?{
68?char?strBuffer[BUFSIZ];
69????????????int?nPtCount?=?0;
70????????????while(fgets(strBuffer,?BUFSIZ,?pReadFile)?!=?NULL)
71{
72TRACE(strBuffer);
73}

74?}

75?CloseHandle(hFile);
76?}

77//?3?關(guān)閉?
78?CloseHandle(g_hMemFile);
79}

80
81
posted on 2005-10-14 17:30 力為 閱讀(7736) 評論(11)  編輯 收藏 引用 所屬分類: 4. C++ FAQ

評論

# re: 如何通過FILE*操作內(nèi)存文件? 2005-10-15 14:01 任我行
關(guān)注,等你寫全了,我就來用,哈哈。
  回復(fù)  更多評論
  

# re: 如何通過FILE*操作內(nèi)存文件? 2005-10-15 21:11 力為
這個(gè)在CSDN上放了幾天也沒有人回答
是不是太難了呢?  回復(fù)  更多評論
  

# re: 如何通過FILE*操作內(nèi)存文件? 2005-10-17 15:50 moonriver
不理解為什么要這樣干? 能否把BACKGROUND將清楚些!  回復(fù)  更多評論
  

# re: 如何通過FILE*操作內(nèi)存文件? 2005-10-19 15:02 力為
background:
1. 使用第三方的接口生成某種格式的文件
2. 自己從該文件中分析需要的數(shù)據(jù)
3. 該文件為中間文件并不需要放在磁盤之上


故用內(nèi)存文件保存臨時(shí)數(shù)據(jù)
  回復(fù)  更多評論
  

# re: 如何通過FILE*操作內(nèi)存文件? 2005-12-04 14:43 hehehe
不理解啊!把文件讀入緩沖區(qū),再處理緩沖區(qū)中的文件,是這個(gè)意思嗎?  回復(fù)  更多評論
  

# re: 如何通過FILE*操作內(nèi)存文件? 2005-12-05 09:14 力為
也可以這樣認(rèn)為。
只不過通過FILE如何把內(nèi)容寫入緩沖區(qū)?  回復(fù)  更多評論
  

# re: 如何通過FILE*操作內(nèi)存文件? 2005-12-05 13:37 hehehe
一般來說,我比較喜歡這個(gè)函數(shù)。。。
BOOL ReadFile(
HANDLE hFile, // handle of file to read
LPVOID lpBuffer, // pointer to buffer that receives data
DWORD nNumberOfBytesToRead, // number of bytes to read
LPDWORD lpNumberOfBytesRead, // pointer to number of bytes read
LPOVERLAPPED lpOverlapped // pointer to structure for data
);
那個(gè)lpBuffer就是指向緩沖區(qū)的指針,要在內(nèi)存中操作文件,我就用這個(gè)。。。  回復(fù)  更多評論
  

# re: 如何通過FILE*操作內(nèi)存文件? 2005-12-05 13:50 力為
但C語言的FILE*如何往緩沖區(qū)寫內(nèi)容呢?  回復(fù)  更多評論
  

# re: 如何通過FILE*操作內(nèi)存文件? 2006-01-07 10:27 力為
在懸掛了N月之后,我為此題下了結(jié)論:此題無解!:(  回復(fù)  更多評論
  

# re: 如何通過FILE*操作內(nèi)存文件? 2006-01-22 15:20 stronger
https://sourceforge.net/project/shownotes.php?release_id=340318

  回復(fù)  更多評論
  

# re: 如何通過FILE*操作內(nèi)存文件? 2010-10-08 01:44 macostar_wzy
內(nèi)存映射API函數(shù)CreateFileMapping創(chuàng)建一個(gè)有名的共享內(nèi)存:
HANDLE CreateFileMapping(
HANDLE hFile, // 映射文件的句柄,
//設(shè)為0xFFFFFFFF以創(chuàng)建一個(gè)進(jìn)程間共享的對象
LPSECURITY_ATTRIBUTES lpFileMappingAttributes, // 安全屬性
DWORD flProtect, // 保護(hù)方式
DWORD dwMaximumSizeHigh, //對象的大小
DWORD dwMaximumSizeLow,
LPCTSTR lpName // 必須為映射文件命名
);
要把文件映像到內(nèi)存,首先必須調(diào)用CreateFileMapping()函數(shù),它需要用一個(gè)由CreateFile()函數(shù)打開并返回的文件句柄,對大多數(shù)共享內(nèi)存的應(yīng)用程序,必須把此句柄設(shè)置為0xFFFFFFFF,用來指定系統(tǒng)頁面文件。通過使用上面的特殊句柄,0XFFFFFFFF是INVALID_HANDLE_VALUE,表示不指定文件,在系統(tǒng)分頁文件(pagefile.sys)中分配映射的磁盤空間,可以不調(diào)用CreateFile函數(shù),當(dāng)然在完成時(shí),也不必有一個(gè)內(nèi)存的磁盤文件拷貝。
  回復(fù)  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            午夜欧美不卡精品aaaaa| 国产精品一区二区在线| 一区二区视频免费在线观看| 先锋影音国产精品| 久久阴道视频| 亚洲美女中出| 欧美成人一区二区三区| 亚洲毛片在线免费观看| 欧美一区二区免费观在线| 一区二区在线视频| 影音先锋久久精品| 欧美日韩国产丝袜另类| 亚洲综合999| 欧美国产精品专区| 欧美一区观看| 久久久亚洲精品一区二区三区| 在线免费不卡视频| 欧美视频在线观看免费| 久久精品女人的天堂av| 日韩视频在线观看| 欧美3dxxxxhd| 欧美在线91| 麻豆成人综合网| 性欧美大战久久久久久久免费观看 | 亚洲伊人久久综合| 亚洲经典在线看| 欧美日精品一区视频| 国产精品a久久久久| 久久性天堂网| 午夜精品久久久久久| 日韩一区二区福利| 久久av一区二区| 欧美在线视频二区| 欧美精品一区二区蜜臀亚洲| 亚洲激情成人| 欧美与黑人午夜性猛交久久久| 欧美91福利在线观看| 麻豆精品精华液| 久久大逼视频| 久久国产精品一区二区三区| 欧美猛交免费看| 亚洲国产日韩欧美在线99| 亚洲盗摄视频| 欧美一区二区成人| 亚洲黄色在线看| 久久久久在线| 国产精品h在线观看| 亚洲日本va午夜在线电影| 亚洲精品少妇| 99精品99| 欧美一级网站| 夜夜嗨av一区二区三区网页| 一区二区三区蜜桃网| 一区二区欧美日韩视频| 欧美11—12娇小xxxx| 在线观看欧美成人| 久久天天综合| 欧美在线观看网址综合| 国产精品一区二区你懂得| 亚洲一区日本| 久久精品国产亚洲5555| 久久久久久9999| 欧美激情第10页| 亚洲风情在线资源站| 亚洲欧洲精品一区二区精品久久久| 亚洲男同1069视频| 老司机aⅴ在线精品导航| 亚洲欧美一区二区精品久久久| 国产精品久久7| 国产在线拍偷自揄拍精品| 国模私拍视频一区| 久久婷婷国产麻豆91天堂| 欧美一区二区三区免费大片| 免费在线观看精品| 亚洲精品久久久久久下一站| 亚洲国产综合视频在线观看| 先锋影音网一区二区| 国产欧亚日韩视频| 亚洲国产精品美女| 午夜在线一区| 香蕉精品999视频一区二区| 国产精品实拍| 一区二区免费在线播放| 欧美一区二区三区另类 | 亚洲综合丁香| 欧美亚洲视频在线观看| 亚洲国产成人久久综合一区| 亚洲人成在线观看一区二区| 久久大逼视频| 亚洲精品一区二区三区婷婷月| 日韩视频在线免费| 国产日韩欧美一区在线| 国产精品99久久不卡二区 | 久久久精品动漫| 开心色5月久久精品| 国产噜噜噜噜噜久久久久久久久| 久久久精品午夜少妇| 欧美激情aⅴ一区二区三区| 韩日精品中文字幕| 久久久av毛片精品| 欧美国产精品中文字幕| 欧美一乱一性一交一视频| 欧美成人免费视频| 欧美一区二区视频在线观看2020 | 一区二区三区久久网| 伊人久久男人天堂| 亚洲一级在线| 国产精品一区二区在线观看不卡| 美女视频网站黄色亚洲| 欧美专区中文字幕| 中文在线不卡视频| 卡一卡二国产精品| 欧美在线你懂的| 午夜视频在线观看一区| 亚洲精品乱码久久久久久蜜桃麻豆 | 老牛影视一区二区三区| 欧美日韩国产色视频| 精品成人久久| 亚洲影视在线播放| 9久re热视频在线精品| 亚洲国产免费| 国产午夜精品视频| 一区二区国产在线观看| 亚洲人成网站色ww在线| 久久久一区二区| 久久久久久久波多野高潮日日| 欧美日韩亚洲高清| 亚洲欧美另类国产| 欧美精品三级| 亚洲国产婷婷香蕉久久久久久99| 韩国av一区二区三区在线观看| 亚洲午夜精品在线| 亚洲男同1069视频| 国产精品一区一区三区| 亚洲视频一区在线观看| 亚洲在线成人精品| 国产精品福利片| 99视频一区二区| 国产精品99久久久久久久女警 | 久久成人精品| 久久久久久久网| 国产午夜精品理论片a级大结局 | 亚洲欧美日韩国产一区二区| 亚洲欧美激情诱惑| 国产精品一区二区黑丝| 亚洲一区3d动漫同人无遮挡| 午夜在线精品偷拍| 国产午夜精品在线观看| 欧美一区二区日韩一区二区| 久久久欧美一区二区| 欧美激情导航| 亚洲三级影院| 亚洲欧美国产日韩中文字幕| 国产伦精品免费视频| 欧美一区二区国产| 欧美电影免费观看高清| 一本久久综合亚洲鲁鲁五月天| 欧美日韩综合另类| 欧美亚洲专区| 欧美国产精品久久| 在线视频一区观看| 国产日韩在线亚洲字幕中文| 久久亚洲春色中文字幕| 亚洲日本欧美日韩高观看| 欧美一级黄色录像| 经典三级久久| 欧美日韩在线电影| 久久国产日本精品| 最新日韩欧美| 久久久久久久久久久一区| 亚洲三级电影在线观看| 国产精品毛片在线看| 亚洲精品黄网在线观看| 亚洲一区在线免费| 黄色成人av| 国产精品久线观看视频| 久热精品在线| 一片黄亚洲嫩模| 欧美成人国产一区二区| 一本色道久久综合亚洲精品婷婷 | 欧美一区二区三区免费在线看| 欧美伊久线香蕉线新在线| 91久久精品国产91久久性色tv| 亚洲欧美日韩直播| 亚洲福利视频网| 国产精品成人一区二区三区夜夜夜| 欧美一区国产在线| 99精品国产在热久久下载| 快播亚洲色图| 亚洲欧美中文另类| av不卡在线看| 亚洲国产毛片完整版| 国内成人精品视频| 国产精品尤物| 欧美午夜久久| 欧美精品一区视频| 免费h精品视频在线播放| 久久电影一区| 小处雏高清一区二区三区| 一本在线高清不卡dvd |