<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Akin的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_40409012</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_40409012]]></copyright><item><title><![CDATA[[存储]NVMe-4-数据结构]]></title><link>https://blog.youkuaiyun.com/qq_40409012/article/details/119563706</link><guid>https://blog.youkuaiyun.com/qq_40409012/article/details/119563706</guid><author>qq_40409012</author><pubDate>Tue, 10 Aug 2021 10:19:05 +0800</pubDate><description><![CDATA[4 数据结构

这个这个章节讲NVM Express中的数据结构。

4.1 提交队列和完成队列定义

一个entry的提交者使用当前项的尾指针指向下一个空闲的队列槽位。在放置新entry后，提交者将尾指针向后移动，如果尾指针超过了队列大小，则将尾部entry滚动至0。提交者放置新entry直至队列满为止。

entry的消费者使用当前头entry指针表示下一个准备消耗的entry。在消耗一个entry后，头指针向下一个entry移动。同提交者…

提交队列和关联的完成队列的创建和销毁要求是有序执行的。主机]]></description><category></category></item><item><title><![CDATA[windows的磁盘操作之十——获取磁盘型号]]></title><link>https://blog.youkuaiyun.com/qq_40409012/article/details/119455391</link><guid>https://blog.youkuaiyun.com/qq_40409012/article/details/119455391</guid><author>qq_40409012</author><pubDate>Fri, 06 Aug 2021 15:05:06 +0800</pubDate><description><![CDATA[转载自：windows的磁盘操作之十——获取磁盘型号_bunny技术坊的技术博客_51CTO博客

原文如下：

我们在第七节http://cutebunny.blog.51cto.com/301216/625577中探讨了如何获取系统中所有磁盘的磁盘号。但是在很多情况下，仅仅是磁盘号并不能满足我们的需求，我们希望在应用程序界面上显示更详细的磁盘信息。通过前面几节的方法，我们已经可以获得许多磁盘信息，例如磁盘大小，柱面，扇区，分区等等。但是如下图所示，我们在设备管理器中看到的“WDC WD1600AAJS.]]></description><category></category></item><item><title><![CDATA[windows的磁盘操作之九——区分本地磁盘与移动硬盘]]></title><link>https://blog.youkuaiyun.com/qq_40409012/article/details/119455326</link><guid>https://blog.youkuaiyun.com/qq_40409012/article/details/119455326</guid><author>qq_40409012</author><pubDate>Fri, 06 Aug 2021 15:02:51 +0800</pubDate><description><![CDATA[转载自：windows的磁盘操作之九——区分本地磁盘与移动硬盘_bunny技术坊的技术博客_51CTO博客

原文如下：

最近碰到了个新问题，记录下来作为windows的磁盘操作那个系列的续篇吧。

一些时候我们的程序需要区分本地存储设备和USB存储设备。在网上搜一搜一般会找到一个最直接的API，GetDriveType，其原型为

UINT GetDriveType(LPCTSTR lpRootPathName)

参数lpRootPathName是存储设备的根目录，例如C:\，返回值即为设备类型。

]]></description><category></category></item><item><title><![CDATA[windows的磁盘操作之八——格式化分区的思考]]></title><link>https://blog.youkuaiyun.com/qq_40409012/article/details/119455272</link><guid>https://blog.youkuaiyun.com/qq_40409012/article/details/119455272</guid><author>qq_40409012</author><pubDate>Fri, 06 Aug 2021 15:01:29 +0800</pubDate><description><![CDATA[转载自：windows的磁盘操作之八——格式化分区的思考_bunny技术坊的技术博客_51CTO博客

原文如下：

格式化分区平常在我们看来是再普通不过的操作了，点两下鼠标就可以搞定的事情，但是在程序中实现的的确确不太容易。可能有人说直接调个format命令不就好了，没错，但系统命令存在我们第一节http://cutebunny.blog.51cto.com/301216/624027中阐述的种种问题。

算上format命令，目前我发现有三种方法，

1．Windows APISHFormatDri..]]></description><category></category></item><item><title><![CDATA[windows的磁盘操作之七——获取当前所有的物理磁盘号]]></title><link>https://blog.youkuaiyun.com/qq_40409012/article/details/119455194</link><guid>https://blog.youkuaiyun.com/qq_40409012/article/details/119455194</guid><author>qq_40409012</author><pubDate>Fri, 06 Aug 2021 14:58:44 +0800</pubDate><description><![CDATA[转载自：windows的磁盘操作之七——获取当前所有的物理磁盘号_bunny技术坊的技术博客_51CTO博客

原文如下：

有了前几节的基础后，本节给出一个更复杂但却非常实用的例子。

很多情况下，我们想知道当前系统下安装了多少块磁盘，他们的物理驱动器号都是多少，每一块磁盘上有多少个分区，分区号怎么分布，每个分区大小是多少。这就类似于我们打开windows的磁盘管理看到的那种非常清晰的列表。对于后几个问题，我们根据物理驱动器号调用第五节http://cutebunny.blog.51cto.com/30.]]></description><category></category></item><item><title><![CDATA[windows的磁盘操作之六——获取系统所在物理磁盘号]]></title><link>https://blog.youkuaiyun.com/qq_40409012/article/details/119455150</link><guid>https://blog.youkuaiyun.com/qq_40409012/article/details/119455150</guid><author>qq_40409012</author><pubDate>Fri, 06 Aug 2021 14:57:13 +0800</pubDate><description><![CDATA[转载自：windows的磁盘操作之六——获取系统所在物理磁盘号_bunny技术坊的技术博客_51CTO博客

原文如下：

很多情况下，我们在程序中需要获知操作系统安装在哪个分区上或者哪个物理磁盘上，进而对其进行一些操作或避免一些操作。例如要避免对系统磁盘分区表的删除操作。本节讨论如何获取操作系统所在的逻辑分区号和物理驱动器号。

还是先上代码。

/******************************************************************************
]]></description><category></category></item><item><title><![CDATA[windows的磁盘操作之五——获取物理磁盘上的所有逻辑分区号]]></title><link>https://blog.youkuaiyun.com/qq_40409012/article/details/119454980</link><guid>https://blog.youkuaiyun.com/qq_40409012/article/details/119454980</guid><author>qq_40409012</author><pubDate>Fri, 06 Aug 2021 14:51:30 +0800</pubDate><description><![CDATA[转载自：windows的磁盘操作之五——获取物理磁盘上的所有逻辑分区号_bunny技术坊的技术博客_51CTO博客

原文如下：

本节讨论与上一节相反的操作，根据物理驱动器号获取该磁盘上的所有分区号。DeviceIoControl函数并没有提供操作码来直接完成此操作，所以需要稍微绕个圈子来实现这项功能。

大体思路为，先通过GetLogicalDrives函数获得系统中所有分区号，然后过滤掉非硬盘分区（例如软驱、光驱），再过滤掉不属于指定物理磁盘的分区，最后剩下的就是我们所需要的分区号了。



代码如.]]></description><category></category></item><item><title><![CDATA[windows的磁盘操作之四——根据逻辑分区号获得物理磁盘号]]></title><link>https://blog.youkuaiyun.com/qq_40409012/article/details/119454884</link><guid>https://blog.youkuaiyun.com/qq_40409012/article/details/119454884</guid><author>qq_40409012</author><pubDate>Fri, 06 Aug 2021 14:49:01 +0800</pubDate><description><![CDATA[转载自：windows的磁盘操作之四——根据逻辑分区号获得物理磁盘号_bunny技术坊的技术博客_51CTO博客

原文如下：

第一节中http://cutebunny.blog.51cto.com/301216/624027我们谈到了磁盘设备名称的两种形式：

对于物理驱动器x，形式为\\.\PhysicalDriveX，编号从0开始，例如




			名称
			
			
			含义
			
		
			\\.\PhysicalDrive0
			
			
			打开第一个物理驱动器
			
	..]]></description><category></category></item><item><title><![CDATA[windows的磁盘操作之三——获取和删除磁盘分区信息]]></title><link>https://blog.youkuaiyun.com/qq_40409012/article/details/119454580</link><guid>https://blog.youkuaiyun.com/qq_40409012/article/details/119454580</guid><author>qq_40409012</author><pubDate>Fri, 06 Aug 2021 14:40:13 +0800</pubDate><description><![CDATA[转载自：windows的磁盘操作之三——获取和删除磁盘分区信息_bunny技术坊的技术博客_51CTO博客

原文如下：

上一节中介绍了如何初始化一块空白的磁盘，并创建分区。那么对于一块已存在分区的磁盘，我们如何获得其分区信息，如何删除其分区信息呢？本节对这两类操作进行讨论。



获得磁盘分区信息的代码如下。

/******************************************************************************

* Function: get.]]></description><category></category></item><item><title><![CDATA[windows的磁盘操作之二——初始化磁盘]]></title><link>https://blog.youkuaiyun.com/qq_40409012/article/details/119454429</link><guid>https://blog.youkuaiyun.com/qq_40409012/article/details/119454429</guid><author>qq_40409012</author><pubDate>Fri, 06 Aug 2021 14:33:19 +0800</pubDate><description><![CDATA[转载自：windows的磁盘操作之二——初始化磁盘_bunny技术坊的技术博客_51CTO博客

原文如下：

上一节中我们介绍了一些基本概念和主要的API，本节开始我们将列举并分析一些实例。本文中的所有代码我都在vs2008下测试过，读者只需要替换少量的宏定义即可编译执行。



面对一块新的磁盘，我们首先要做的就是对其初始化。在系统中通过windows的磁盘管理完成这一点非常容易，但在程序中实现略微复杂。本节的示例代码对一块新硬盘初始化，并在上面创建分区。

代码如下：



/**********..]]></description><category></category></item><item><title><![CDATA[windows的磁盘操作之一——基本概念]]></title><link>https://blog.youkuaiyun.com/qq_40409012/article/details/119454191</link><guid>https://blog.youkuaiyun.com/qq_40409012/article/details/119454191</guid><author>qq_40409012</author><pubDate>Fri, 06 Aug 2021 14:29:35 +0800</pubDate><description><![CDATA[转载自：windows的磁盘操作之一——基本概念_bunny技术坊的技术博客_51CTO博客

原文如下：

最近项目中需要在windows系统下与磁盘打交道，用了一个礼拜时间，弄懂了一些基本的概念，记录于此，并以项目中的部分代码作为范例。

首先说明一点，本文中使用的不是cmd命令行，基于以下几点原因：

1．在C/C++中调用系统命令会存在处理的种种不方便，需要大量额外的代码去分析命令执行结果。

2．windows命令行远不如linux的shell来的强大。

3．效率。

当然，如果不考虑编码，仅.]]></description><category></category></item></channel></rss>