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

力為的技術博客

聯系 聚合 管理
  154 Posts :: 1 Stories :: 561 Comments :: 0 Trackbacks

???????????????????????????????????? 如何通過FILE*操作內存文件

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

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

**********************************************************************************
實現:
? 1.為了方便測試使用全局的文件HANDLE
? 2.模擬實現了WriteDataToFile函數
? 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//?模擬庫函數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//具體的實現
34
35//.
36return?NULL;
37}

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

43
44void?Test()
45{
46//?1?寫內存文件
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?//更新內存文件
59?UpdateMemFile(g_hMemFile);
60
61//?2?讀內存文件
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?關閉?
78?CloseHandle(g_hMemFile);
79}

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

評論

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

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

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

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


故用內存文件保存臨時數據
  回復  更多評論
  

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

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

# re: 如何通過FILE*操作內存文件? 2005-12-05 13:37 hehehe
一般來說,我比較喜歡這個函數。。。
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
);
那個lpBuffer就是指向緩沖區的指針,要在內存中操作文件,我就用這個。。。  回復  更多評論
  

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

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

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

  回復  更多評論
  

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

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲精品乱码久久久久久久久| 裸体歌舞表演一区二区| 欧美一区中文字幕| 亚洲视频在线免费观看| 亚洲免费激情| 亚洲国产高清一区二区三区| 狠狠干成人综合网| 亚洲成人在线网| 亚洲精选大片| 中文亚洲免费| 亚洲一区在线播放| 亚洲欧美在线aaa| 久久大香伊蕉在人线观看热2| 一区二区三区国产精华| 亚洲无线观看| 久久久久久久久综合| 久久夜色精品亚洲噜噜国产mv| 看片网站欧美日韩| 亚洲精品久久久久| 亚洲综合首页| 久久蜜桃精品| 国产精品国产三级欧美二区 | 久久本道综合色狠狠五月| 久久精品成人一区二区三区蜜臀 | 女主播福利一区| 亚洲美女黄网| 欧美与欧洲交xxxx免费观看| 欧美成人精品福利| 国产欧美日韩在线视频| 亚洲国产乱码最新视频| 亚洲欧美另类在线| 欧美黄色aaaa| 欧美在线三级| 欧美亚洲第一页| 亚洲欧洲精品成人久久奇米网| 一区二区三区三区在线| 久久九九电影| 亚洲日本一区二区三区| 久久久综合网| 国产精品视频一| aa级大片欧美三级| 免费成人你懂的| 亚洲欧美美女| 国产精品私拍pans大尺度在线| 亚洲久色影视| 欧美国产综合视频| 亚洲欧美在线观看| 欧美三级视频| 一区二区三区四区蜜桃| 欧美国产日韩在线观看| 亚洲主播在线观看| 欧美成人国产一区二区| 国产欧美精品日韩| 夜夜嗨一区二区三区| 欧美成人a∨高清免费观看| 亚洲欧美一区二区原创| 欧美午夜一区| 99精品国产高清一区二区| 在线综合亚洲欧美在线视频| 欧美精品在线网站| 亚洲精品一区在线| 亚洲国产高清在线| 另类成人小视频在线| 激情综合视频| 免费在线播放第一区高清av| 午夜精品成人在线| 国产精品永久免费观看| 先锋影音网一区二区| 国产精品99久久久久久久久久久久| 欧美日本韩国一区| 亚洲欧美成人在线| 久久av资源网站| 精品成人在线| 亚洲国产精品va在线看黑人动漫| 蜜臀va亚洲va欧美va天堂| 亚洲国产日韩综合一区| 一区二区三区四区蜜桃| 一区二区三区 在线观看视| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲国产岛国毛片在线| 久久精品国内一区二区三区| 亚洲国产精品成人精品| 午夜欧美大片免费观看| 亚洲在线观看| 国产性色一区二区| 久久久久一区二区三区四区| 久久久久久久综合狠狠综合| 亚洲欧洲日韩综合二区| 欧美激情一区在线| 欧美日韩国产小视频| 性色av香蕉一区二区| 欧美一区二区三区在线观看| 在线观看91精品国产入口| 欧美二区在线观看| 欧美精品一区二| 日韩午夜av| 亚洲图片欧洲图片日韩av| 国产视频欧美| 噜噜噜91成人网| 你懂的视频欧美| 欧美一区二区成人6969| 亚洲深夜福利视频| 欧美日本一区二区三区| 一本到12不卡视频在线dvd| 一区二区三区精品在线 | 久久久人人人| 亚洲精品一二三| 中国成人亚色综合网站| 亚洲第一精品在线| 亚洲一区二区少妇| 91久久国产自产拍夜夜嗨| 亚洲日本激情| 亚洲高清在线观看| 午夜精品福利在线| 中文网丁香综合网| 欧美成人午夜剧场免费观看| 久久国产精彩视频| 欧美成人免费大片| 亚洲日本精品国产第一区| 日韩视频中文字幕| 一区二区三区亚洲| 亚洲欧美在线看| 在线一区视频| 免费欧美网站| 欧美va天堂va视频va在线| 国产精品乱人伦一区二区| 亚洲第一级黄色片| 国产欧美一区二区三区沐欲| 99综合在线| 9色porny自拍视频一区二区| 欧美成人免费va影院高清| 美国成人毛片| 国产一区二区三区久久久| 在线综合亚洲| 亚洲最新在线| 欧美另类极品videosbest最新版本| 最近中文字幕mv在线一区二区三区四区| 久久夜色精品国产欧美乱极品| 一区二区三区久久| 久久欧美肥婆一二区| 久久久噜噜噜| 国产亚洲欧美日韩美女| 亚洲专区免费| 久久久久久亚洲精品杨幂换脸| 国产精品久久久免费| 亚洲主播在线播放| 久久久久国产精品麻豆ai换脸| 国产视频精品免费播放| 噜噜噜久久亚洲精品国产品小说| 亚洲一区亚洲二区| 欧美日本国产一区| 99精品视频免费观看视频| 在线中文字幕一区| 欧美美女日韩| 国产精品99久久久久久宅男| 久久九九国产精品| 亚洲国产精品尤物yw在线观看| 欧美一区二区三区四区高清| 欧美一区不卡| 亚洲高清123| 欧美电影在线免费观看网站| 一区二区三区四区五区精品视频 | 欧美高清视频一区二区三区在线观看| 亚洲黄色尤物视频| 亚洲自拍啪啪| 黄色成人av网| 欧美日韩三区四区| 亚洲一区在线播放| 久久亚洲精品网站| 亚洲国产91精品在线观看| 卡通动漫国产精品| 亚洲电影av| 亚洲视频在线观看一区| 国产欧美日韩另类一区| 久久国产精品一区二区| 蜜桃精品一区二区三区 | 久久亚洲精品视频| av成人免费观看| 国产最新精品精品你懂的| 久热综合在线亚洲精品| 亚洲国产清纯| 亚洲欧美bt| 日韩视频在线观看| 国产一区二区av| 久久国产精品72免费观看| 亚洲美女啪啪| 欧美高清在线| 久久蜜桃av一区精品变态类天堂| 日韩系列在线| 国内精品久久久久伊人av| 欧美成人a∨高清免费观看| 亚洲视频电影图片偷拍一区| 看片网站欧美日韩| 亚洲欧美激情视频在线观看一区二区三区 | 狼狼综合久久久久综合网| 亚洲一区二区三区四区在线观看| 1000部国产精品成人观看| 国产精品免费电影| 国产精品国产三级国产专区53| 欧美精品激情在线观看|