<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[HotIce0]]></title><description><![CDATA[0618]]></description><link>https://blog.youkuaiyun.com/u011580175</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u011580175]]></copyright><item><title><![CDATA[02-NT驱动加载]]></title><link>https://blog.youkuaiyun.com/u011580175/article/details/122075678</link><guid>https://blog.youkuaiyun.com/u011580175/article/details/122075678</guid><author>u011580175</author><pubDate>Tue, 21 Dec 2021 23:25:19 +0800</pubDate><description><![CDATA[记录《Windows驱动开发技术详解》学习

一、如何加载编译好的NT驱动
1.1环境

系统版本：win10 1909 64位虚拟机
用到的工具为DriverMonitor（书中建议的工具）
查看已经加载的驱动程的工具：winobj.exe


1.2 加载驱动

关闭windows驱动强制签名验证（如果是win10必须做这一步）


具体方法可以百度


按照书里面的打开DriverMonitor. 
打开驱动文件

运行驱动程序



1.3 使用winobj.exe查看已经加载的驱动程序

原书中.]]></description><category></category></item><item><title><![CDATA[ubuntu stm32 vscode环境配置]]></title><link>https://blog.youkuaiyun.com/u011580175/article/details/115652055</link><guid>https://blog.youkuaiyun.com/u011580175/article/details/115652055</guid><author>u011580175</author><pubDate>Tue, 13 Apr 2021 02:06:11 +0800</pubDate><description><![CDATA[文章目录一、环境二、需要安装三、安装步骤3.1 安装STM32CubeMX（工程代码生成）3.2 安装openocd（调试和烧写固件）3.3 安装gcc-arm-none-eabi（编译和gdb调试）3.4 安装vscode四、工程创建五、VSCODE工程配置5.1 VSCODE打开工程5.2 打开terminal(Ctrl+~)，直接make编译生成elf5.3 配置Debug，创建launch.json六、烧写固件
一、环境

PC: Ubuntu20.04 x64
开发板: stm32f407disc]]></description><category></category></item><item><title><![CDATA[Linux fopen/freopen/fdopen 函数]]></title><link>https://blog.youkuaiyun.com/u011580175/article/details/107901527</link><guid>https://blog.youkuaiyun.com/u011580175/article/details/107901527</guid><author>u011580175</author><pubDate>Sun, 09 Aug 2020 22:38:06 +0800</pubDate><description><![CDATA[文章目录一、函数声明二、实例2.1 fopen2.2 fopen运行结果2.3 fdopen2.4 运行结果2.5 fclose会关闭文件句柄？2.6 运行结果
一、函数声明
#include &lt;stdio.h&gt;

FILE *fopen(const char *pathname, const char *mode);
// 从文件描述符创建并关联一个FILE.
FILE *fdopen(int fd, const char *mode);
// freopen，重新打开文件，并清除原来的定向（]]></description><category></category></item><item><title><![CDATA[Linux fflush 函数]]></title><link>https://blog.youkuaiyun.com/u011580175/article/details/107901404</link><guid>https://blog.youkuaiyun.com/u011580175/article/details/107901404</guid><author>u011580175</author><pubDate>Sun, 09 Aug 2020 22:13:44 +0800</pubDate><description><![CDATA[一、函数声明
#include &lt;stdio.h&gt;
int fflush(FILE *stream);


冲洗该缓冲区，即进行同步

二、实例
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;unistd.h&gt;

int main(int argc, char **args)
{
    printf("hotice0");
    sleep(3);
    
    printf("hotice0");
]]></description><category></category></item><item><title><![CDATA[Linux setbuf/setvbuf 函数]]></title><link>https://blog.youkuaiyun.com/u011580175/article/details/107901009</link><guid>https://blog.youkuaiyun.com/u011580175/article/details/107901009</guid><author>u011580175</author><pubDate>Sun, 09 Aug 2020 22:06:02 +0800</pubDate><description><![CDATA[一、函数声明
#include &lt;stdio.h&gt;
void setbuf(FILE *stream, char *buf);
void setbuffer(FILE *stream, char *buf, size_t size);
void setlinebuf(FILE *stream);
int setvbuf(FILE *stream, char *buf, int mode, size_t size);

// mode 可选值：_IOFBF 全缓冲, _IOLBF 行缓冲, _IO]]></description><category></category></item><item><title><![CDATA[Linux fwide 函数 TODO]]></title><link>https://blog.youkuaiyun.com/u011580175/article/details/107897779</link><guid>https://blog.youkuaiyun.com/u011580175/article/details/107897779</guid><author>u011580175</author><pubDate>Sun, 09 Aug 2020 18:23:26 +0800</pubDate><description><![CDATA[一、函数定义
// fwide - set and determine the orientation of a FILE stream
#include &lt;wchar.h&gt;
int fwide(FILE *stream, int mode);

二、实例

获取文件初始的文件流方向

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;wchar.h&gt;
#include &lt;fcntl.h&gt;
#incl]]></description><category></category></item><item><title><![CDATA[Linux major/minor 函数 以及 st_dev和st_rdev区别]]></title><link>https://blog.youkuaiyun.com/u011580175/article/details/107896436</link><guid>https://blog.youkuaiyun.com/u011580175/article/details/107896436</guid><author>u011580175</author><pubDate>Sun, 09 Aug 2020 17:15:01 +0800</pubDate><description><![CDATA[一、函数声明
#include &lt;sys/sysmacros.h&gt;

dev_t makedev(unsigned int maj, unsigned int min);

unsigned int major(dev_t dev);
unsigned int minor(dev_t dev);


A device ID consists of two parts: a major ID, identifying the class of the device, and a minor ID,]]></description><category></category></item><item><title><![CDATA[Linux chdir/fchdir/getcwd函数]]></title><link>https://blog.youkuaiyun.com/u011580175/article/details/107895556</link><guid>https://blog.youkuaiyun.com/u011580175/article/details/107895556</guid><author>u011580175</author><pubDate>Sun, 09 Aug 2020 16:16:35 +0800</pubDate><description><![CDATA[文章目录一、函数声明二、实例2.1 运行结果
一、函数声明
// 获取当前的工作目录
#include &lt;unistd.h&gt;
char *getcwd(char *buf, size_t size);
char *getwd(char *buf);
char *get_current_dir_name(void);

// 设置当前工作目录
#include &lt;unistd.h&gt;
int chdir(const char *path);
int fchdir(int fd);

二、]]></description><category></category></item><item><title><![CDATA[Linux opendir/opendirat/readdir/rewinddir/closedir 函数]]></title><link>https://blog.youkuaiyun.com/u011580175/article/details/107895072</link><guid>https://blog.youkuaiyun.com/u011580175/article/details/107895072</guid><author>u011580175</author><pubDate>Sun, 09 Aug 2020 15:54:13 +0800</pubDate><description><![CDATA[文章目录一、函数声明二、实例2.1 运行结果
一、函数声明
//opendir
#include &lt;sys/types.h&gt;
#include &lt;dirent.h&gt;
DIR *opendir(const char *name); // 打开文件夹。
DIR *fdopendir(int fd);
//readdir
#include &lt;dirent.h&gt;
struct dirent *readdir(DIR *dirp); //读取文件夹内文件信息，并且移动到文件夹内的下]]></description><category></category></item><item><title><![CDATA[Linux mkdir/mkdirat/rmdir 函数]]></title><link>https://blog.youkuaiyun.com/u011580175/article/details/107894453</link><guid>https://blog.youkuaiyun.com/u011580175/article/details/107894453</guid><author>u011580175</author><pubDate>Sun, 09 Aug 2020 15:19:53 +0800</pubDate><description><![CDATA[文章目录一、函数声明二、实例2.1 运行结果
一、函数声明
#include &lt;sys/stat.h&gt;
#include &lt;sys/types.h&gt;
int mkdir(const char *pathname, mode_t mode);

#include &lt;fcntl.h&gt;           /* Definition of AT_* constants */
#include &lt;sys/stat.h&gt;
int mkdirat(int dirfd, c]]></description><category></category></item><item><title><![CDATA[Linux utimensat/futimens/utime/utimes等等 函数（修改文件时间）]]></title><link>https://blog.youkuaiyun.com/u011580175/article/details/107888534</link><guid>https://blog.youkuaiyun.com/u011580175/article/details/107888534</guid><author>u011580175</author><pubDate>Sun, 09 Aug 2020 00:42:14 +0800</pubDate><description><![CDATA[一、函数声明
// utimensat, futimens - change file timestamps with nanosecond precision(即都支持纳秒级)
#include &lt;fcntl.h&gt; /* Definition of AT_* constants */
#include &lt;sys/stat.h&gt;
int utimensat(int dirfd, const char *pathname,
              const struct time]]></description><category></category></item><item><title><![CDATA[Linux change time和modify time的区别]]></title><link>https://blog.youkuaiyun.com/u011580175/article/details/107888002</link><guid>https://blog.youkuaiyun.com/u011580175/article/details/107888002</guid><author>u011580175</author><pubDate>Sat, 08 Aug 2020 23:50:41 +0800</pubDate><description><![CDATA[一、声明
struct stat {
...
/* Since Linux 2.6, the kernel supports nanosecond
                  precision for the following timestamp fields.
                  For the details before Linux 2.6, see NOTES. */

struct timespec st_atim;  /* Time of last access */]]></description><category></category></item><item><title><![CDATA[Linux symlink/symlinkat/readlink/readlinkat 函数]]></title><link>https://blog.youkuaiyun.com/u011580175/article/details/107887933</link><guid>https://blog.youkuaiyun.com/u011580175/article/details/107887933</guid><author>u011580175</author><pubDate>Sat, 08 Aug 2020 23:41:10 +0800</pubDate><description><![CDATA[文章目录一、函数声明二、实例2.1 运行结果
一、函数声明
// symlink
#include &lt;unistd.h&gt;

int symlink(const char *target, const char *linkpath);

#include &lt;fcntl.h&gt;           /* Definition of AT_* constants */
#include &lt;unistd.h&gt;

int symlinkat(const char *target, i]]></description><category></category></item><item><title><![CDATA[Linux 各文件操作函数是否跟随符号链接表]]></title><link>https://blog.youkuaiyun.com/u011580175/article/details/107884412</link><guid>https://blog.youkuaiyun.com/u011580175/article/details/107884412</guid><author>u011580175</author><pubDate>Sat, 08 Aug 2020 19:22:26 +0800</pubDate><description><![CDATA[参考自：Unix环境高级编程



]]></description><category></category></item><item><title><![CDATA[Linux rename/renameat 函数]]></title><link>https://blog.youkuaiyun.com/u011580175/article/details/107884103</link><guid>https://blog.youkuaiyun.com/u011580175/article/details/107884103</guid><author>u011580175</author><pubDate>Sat, 08 Aug 2020 19:07:58 +0800</pubDate><description><![CDATA[文章目录一、函数定义1.1 函数的简单说明二、实例2.1 文件重命名2.2 （文件重命名）运行结果2.3 文件移动并重命名（验证)2.4 (文件移动并重命名)运行结果
一、函数定义
#include &lt;stdio.h&gt;

int rename(const char *oldpath, const char *newpath);

#include &lt;fcntl.h&gt;           /* Definition of AT_* constants */
#include &lt;s]]></description><category></category></item><item><title><![CDATA[Linux unlink/unlinkat/remove 函数]]></title><link>https://blog.youkuaiyun.com/u011580175/article/details/107879861</link><guid>https://blog.youkuaiyun.com/u011580175/article/details/107879861</guid><author>u011580175</author><pubDate>Sat, 08 Aug 2020 15:15:40 +0800</pubDate><description><![CDATA[一、函数声明
#include &lt;unistd.h&gt;

int unlink(const char *pathname);

#include &lt;fcntl.h&gt;           /* Definition of AT_* constants */
#include &lt;unistd.h&gt;

int unlinkat(int dirfd, const char *pathname, int flags);

二、实例
2.1 基本使用（删除文件，与目录）
2.1.1 u]]></description><category></category></item><item><title><![CDATA[Linux link/linkat 函数]]></title><link>https://blog.youkuaiyun.com/u011580175/article/details/107852429</link><guid>https://blog.youkuaiyun.com/u011580175/article/details/107852429</guid><author>u011580175</author><pubDate>Fri, 07 Aug 2020 00:16:11 +0800</pubDate><description><![CDATA[文章目录一、函数定义二、实例2.1 运行结果
一、函数定义
#include &lt;unistd.h&gt;

int link(const char *oldpath, const char *newpath);

#include &lt;fcntl.h&gt;           /* Definition of AT_* constants */
#include &lt;unistd.h&gt;

int linkat(int olddirfd, const char *oldpath,
   ]]></description><category></category></item><item><title><![CDATA[Linux 限制shell脚本并发执行（通过flock对文件加锁）]]></title><link>https://blog.youkuaiyun.com/u011580175/article/details/107851689</link><guid>https://blog.youkuaiyun.com/u011580175/article/details/107851689</guid><author>u011580175</author><pubDate>Thu, 06 Aug 2020 23:09:58 +0800</pubDate><description><![CDATA[一、flock声明
Usage:
 flock [options] &lt;file&gt;|&lt;directory&gt; &lt;command&gt; [&lt;argument&gt;...]
 flock [options] &lt;file&gt;|&lt;directory&gt; -c &lt;command&gt;
 flock [options] &lt;file descriptor number&gt;

Manage file locks from shell scripts.]]></description><category></category></item><item><title><![CDATA[Linux truncate/ftruncate 函数]]></title><link>https://blog.youkuaiyun.com/u011580175/article/details/107825072</link><guid>https://blog.youkuaiyun.com/u011580175/article/details/107825072</guid><author>u011580175</author><pubDate>Wed, 05 Aug 2020 21:11:55 +0800</pubDate><description><![CDATA[一、函数声明
#include &lt;unistd.h&gt;
#include &lt;sys/types.h&gt;

int truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length);


功能：直接截短文件的大小，将文件的长度缩小为length指定的长度。

二、实例
#define __USE_XOPEN_EXTENDED
#define __USE_FILE_OFFSET64

#include ]]></description><category></category></item><item><title><![CDATA[Linux S_ISVTX 黏着位的作用]]></title><link>https://blog.youkuaiyun.com/u011580175/article/details/107778026</link><guid>https://blog.youkuaiyun.com/u011580175/article/details/107778026</guid><author>u011580175</author><pubDate>Tue, 04 Aug 2020 08:18:52 +0800</pubDate><description><![CDATA[一、声明
#if defined __USE_MISC || defined __USE_XOPEN
/* Save swapped text after use (sticky bit).  This is pretty well obsolete（已经过时了）.  */
# define S_ISVTX	__S_ISVTX
#endif

S_ISVTX是文件（文件夹）权限位（mode_t）中的一位。也称保存正文位。正文，即text段，代码段。
对于可执行文件：如果，可执行文件设置了该位，则程序运行完，]]></description><category></category></item></channel></rss>