???????????????????????????????????? 如何通過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ù)(見下面的測(cè)試代碼)
?? FILE* GetFilePtrByMemFileHandle(HANDLE hMemFile)
?? void UpdateMemFile(HANDLE hMemFile)
4. 如果該方案有問題,可以更改
**********************************************************************************
實(shí)現(xiàn):
? 1.為了方便測(cè)試使用全局的文件HANDLE
? 2.模擬實(shí)現(xiàn)了WriteDataToFile函數(shù)
? 3.已有資料http://community.csdn.net/Expert/TopicView.asp?id=4317083

?2

?3

?4

?5

?6

?7



?8

?9

10

11

12

13



14

15

16

17

18



19

20



21

22

23

24

25

26

27

28

29

30

31



32


33

34

35


36

37

38

39



40


41

42

43

44

45



46

47

48

49

50

51

52



53

54

55

56

57

58

59

60

61

62

63

64



65

66

67



68

69

70

71



72

73

74

75

76

77

78

79

80

81
