头一篇ENTRY,很惶恐.
总之吧,最近的作业是要写个data compressor.于是VM上历经千辛万苦装了VS2010 BETA2.不过果然还是Xcode长得好...
以下是大概会用到的,我之前基本一点儿不懂的东西.
1 I CAN RIDE MY BIKE WITH NO HANDLE BAR, NO HANDLE BAR~
老师扔给我们一个句柄,然后说,文件操作的话你们需要它.我们保持一脸"= =HANDLE?什么HANDLE?可以吃吗?".
拿光标指着它几次跳到定义之后,这个叫做HANDLE的东西最终被标明为void *,于是各种求助搜索引擎.
"<<WINDOWS编程短平快>>(南京大学出版社):
句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。 "
...还是不懂.不过现在状况:这玩意儿是个整数(16位无符号整数,at that),用处是标识对象.好的.不就一指针吗.
接下来继续引用:
"...句柄是 一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知这个内 存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。我们知道,Windows是一个以虚拟内存为基础的操作 系统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。如果 地址总是如此变化,我们该到哪里去找该对象呢?
为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统。
句柄地址(稳定)→记载着对象在内存中的地址────→对象在内存中的地址(不稳定)→实际对象"
(http://www.cnblogs.com/yellowyu/archive/2009/06/07/1497910.html)
也就是说,MDOLLAR不是因为纯粹蛋疼才特地搞了一个叫做HANDLE的东西.嗯.了解了.
总之,我们有了个叫HANDLE的东西,记下了某个对象住的地方,然后呢?
2 名字看了就烦的_WIN32_FIND_DATA
光有住址是不够的.为了对这个对象做这样那样的事,还需要去它家进一步收集情报.任务了解.
不过为了记住该对象的各种信息,总得有个笔记本儿吧.这个本儿的名字叫_WIN32_FIND_DATA.做为一个小白,我理解这种命名并没有什么特别值得批评的地方,但是我依然觉得它让人看了就烦.
搞毛啊全体capital letters,你以为自己是报纸上的连环画?
不过那些先暂且不管,来看下这本儿里都记些什么.
啊-首先需要说一下的是,这本儿是个struct.
typedef struct _WIN32_FIND_DATA {
DWORD dwFileAttributes; //
FILETIME ftCreationTime; //
FILETIME ftLastAccessTime; //
FILETIME ftLastWriteTime; //
DWORD nFileSizeHigh; //
DWORD nFileSizeLow; //
DWORD dwReserved0; //
DWORD dwReserved1; //
TCHAR cFileName[ MAX_PATH ]; //
TCHAR cAlternateFileName[ 14 ]; //
} WIN32_FIND_DATA, *PWIN32_FIND_DATA;
这些玩意儿都干嘛的,因为我困了,所以明天再说.
晚安,世界.