2020-11-17--04--api_数据结构---需要敲代码

2020-11-18  本文已影响0人  heiqimingren

这个案例设计到非常底层的windows系统api函数,市面上找不到类似的教程,非常舒服。
我想学习的就是这一类api函数!
得敲代码保存一下。

===================


image.png

最下方的2个字段,用来保护文件的长度!

由于windows系统是c语言开发的,然后微软也用c语言的结构体设计了很多windows专用的新的数据结构。
上图里的数据结构是 文件属性数据!

下图中的文件,其一堆属性,这些属性就是一个结构体!都在一个结构体当中!

image.png

文件属性,今天就练习一下。主要目的是,如何在windows里存在着大量的数据结构


image.png
image.png
image.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;
}

=====================


image.png image.png
上一篇 下一篇

猜你喜欢

热点阅读