2020-11-17--04--api_数据结构---需要敲代码
2020-11-18 本文已影响0人
heiqimingren
这个案例设计到非常底层的windows系统api函数,市面上找不到类似的教程,非常舒服。
我想学习的就是这一类api函数!
得敲代码保存一下。
===================
![](https://img.haomeiwen.com/i2731375/0eb561402d9e9cfa.png)
最下方的2个字段,用来保护文件的长度!
由于windows系统是c语言开发的,然后微软也用c语言的结构体设计了很多windows专用的新的数据结构。
上图里的数据结构是 文件属性数据!
下图中的文件,其一堆属性,这些属性就是一个结构体!都在一个结构体当中!
![](https://img.haomeiwen.com/i2731375/e299e93cc3d41676.png)
文件属性,今天就练习一下。主要目的是,如何在windows里存在着大量的数据结构
![](https://img.haomeiwen.com/i2731375/f0f124c6479e955a.png)
![](https://img.haomeiwen.com/i2731375/182afc60c0a6c7fa.png)
![](https://img.haomeiwen.com/i2731375/e0c03ffda1bbe846.png)
定义了别名:win32_file_attribute_data,
最终形式的代码,C语言源文件。
#include <Windows.h>
#include <stdio.h>
DWORD ShowFileTime(PFILETIME lptime) //PFILETIME,这里是一个指针,很奇怪,这里必须得有一个PFILETIME,而不是FILETIME,我在这里犯了一个失误。
{
FILETIME ftlocal;
SYSTEMTIME st; //数据结构,st,系统时间
FileTimeToLocalFileTime(lptime,&ftlocal); //文件时间转为本地时间,因为微软系统全世界都有,本地时间有区别的
FileTimeToSystemTime(&ftlocal, &st); //再将本地时间,转换为系统时间
printf("%d年%#02d月%#02d日,%#02d:%#02d:%#02d\n", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
return 0;
}
int main()
{
//直接调用这个结构体
WIN32_FILE_ATTRIBUTE_DATA wfad;
//配置属性为多字节字符集,使用方法举例子:https://blog.csdn.net/x_y_q_/article/details/52396829,,
//https://blog.csdn.net/P40614021/article/details/7287242
//GetFileAttributes只能够得到文件的一般属性,即是普通文件,隐藏文件,系统文件,目录,归档文件等。
//GetFileAttributesEx除了可以得到以上的内容,还能够得到文件的创建日期,最后读写日期以及文件大小。
//
if (!GetFileAttributesEx("demo.c", GetFileExInfoStandard, &wfad))
{
printf("获取文件属性失败:%d\n ", GetLastError());
return 1;
}
printf("创建时间:\t");
ShowFileTime(&wfad.ftCreationTime); //文件时间
printf("访问时间:\t");
ShowFileTime(&wfad.ftLastAccessTime); //文件时间
printf("hello \n");
system("pause");
return 0;
}
=====================
![](https://img.haomeiwen.com/i2731375/17722cb5cf3dc67b.png)
![](https://img.haomeiwen.com/i2731375/c7500891a9ec6ed6.png)