//时间:2010年2月28日9:08:16 //平台:WindowsXP SP3 + VC6 //作者:冷却 #include <stdio.h> #include <conio.h> #include <windows.h> int main(void) { IStream *I=NULL; LARGE_INTEGER liTemp = {0}; ULARGE_INTEGER uiPos = {0}; DWORD dwSize=0; STATSTG stats={0}; char buf[]="Hello,IStream!"; char str[sizeof(buf)]={0}; //创建一个保存在全局内存的流对象 CreateStreamOnHGlobal(NULL, true, &I); //从流对象的开始处写入相应的内容 I->Seek(liTemp, STREAM_SEEK_SET, NULL); I->Write(buf, sizeof(buf), NULL); //获取流对象里内容的大小 I->Seek(liTemp, STREAM_SEEK_CUR, &uiPos); dwSize = (DWORD)uiPos.QuadPart; printf("已写入%d字节的内容/n", dwSize); //从流对象开始处读取其所有内容 I->Seek(liTemp, STREAM_SEEK_SET, NULL); I->Read(str, sizeof(buf), NULL); printf("%s/n", str); //获取流对象里内容的状态(提取其中的流对象里的内容的大小信息) I->Stat(&stats, 0); dwSize = (DWORD)stats.cbSize.QuadPart; printf("已读取到%d字节的内容/n", dwSize); //释放流对象 I->Release(); getch(); return 0; }