windows编程
文章平均质量分 73
我是NeroZhang
容灾备份/二层转发/对象存储,就叫我老张吧
展开
-
Markup.h和Markup.cpp Release 11.5
// Markup.h: interface for the CMarkup class.//// Markup Release 11.5// Copyright (C) 2011 First Objective Software, Inc. All rights reserved// Go to www.firstobject.com for the latest CMarkup and转载 2017-10-19 09:19:28 · 1507 阅读 · 1 评论 -
NTFS文件系统详解 之 文件定位
一如既往的叨叨 首先要对硬盘分区(MBR、GPT)和文件系统(NTFS、FAT32等)有一定的认识,要知道MBR扇区以及DBR扇区的基本结构,如果后面遇到不清楚的地方可以参考上一篇文章https://blog.csdn.net/hilavergil/article/details/79270379,如果觉得这个文章不行的话,Emmm...还有Google呢。 接下来的代码目前只...原创 2018-09-11 11:54:09 · 14120 阅读 · 26 评论 -
MBR、EBR与DBR详解
demo:https://github.com/Hilaver/NtfsResolution/先看一张硬盘图片(一个盘面):MBR主引导记录(MBR,Main Boot Record)是位于磁盘最前边的一段引导(Loader)代码。它负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位,它由磁盘操作系统(DOS)在对硬盘进行初始化时产生的。...原创 2018-02-06 14:54:48 · 44508 阅读 · 14 评论 -
GetLastError()错误码转中文提示
void GetErrorMessage(DWORD dwErrCode, DWORD dwLanguageId) {//dwLanguageId=0 DWORD dwRet = 0; LPTSTR szResult = NULL; setlocale(LC_ALL, "chs"); dwRet = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER原创 2018-01-23 10:26:30 · 1099 阅读 · 0 评论 -
动态链接库基础-隐式链接与显式链接
静态链接库(*.lib)如果在程序中使用静态链接库,那么链接器在链接的过程中会将*.obj文件和*.lib文件组织成可执行exe文件,也就是将.lib中的代码链接到可执行文件中,因此生成的exe文件比较大。程序运行时会将其所需数据一次性全部加载到内存,其缺点也比较明显:加载时间比较长。程序在发行时不需要提供库文件。动态链接库(*.dll)动态链接库又分为两种加载方式:隐式加载和显式加载...原创 2017-11-15 20:53:00 · 3392 阅读 · 0 评论 -
CHAR与WCHAR字符串的转化
记得用完之后free掉CHAR转WCHAR:WCHAR * charToWCHAR(char *s) { int w_nlen = MultiByteToWideChar(CP_ACP, 0, s, -1, NULL, 0); WCHAR *ret; ret = (WCHAR*)malloc(sizeof(WCHAR)*w_nlen); memset(ret, 0, sizeof(原创 2017-11-05 14:22:33 · 1916 阅读 · 0 评论 -
进程共享内核对象之 复制内核对象句柄
进程共享内核对象的三种方式:1. 内核对象句柄继承2. 为内核对象命名3. 复制内核对象句柄今天写一下第三种方式。跨进程边界共享内核对象可以使用DuplicateHandle函数来实现,这个函数会获取某一进程的句柄表中的一个记录项,然后在另一个进程的句柄表中创建这个记录项的一个副本,于是该进程也拥有了该内核对象的访问权。函数原型如下:Dupl原创 2017-11-04 17:35:36 · 762 阅读 · 0 评论 -
DeviceIoControl获取文件LCN
在灾备项目组做CDP(Continual Data Protection),刚刚入门,最近看了下关于磁盘的操作,记录一下DeviceIoControl()。NTFS中的文件结构NTFS文件系统中,磁盘文件存储管理的最小单位是簇(Cluster)。一个簇由连续的若干个扇区构成。对于一个文件来说,我们将其在磁盘上占用的连续的簇称为簇流(Cluster Runs,不知道怎么翻译,有人称之为簇流,原创 2017-10-15 16:46:25 · 653 阅读 · 1 评论 -
C语言变参函数的实现
VS2015#include #includevoid test(UINT para, ...) {//变参函数的实现方式 调用方式:test(7, 1, 2, 3, 4, 5, 6, 7); 我用第一个参数表示剩余参数个数了 va_list vl;//声明一个指向各参数的指针 //typedef char* va_list; va_start(vl, para);//初始化该原创 2017-11-01 20:57:14 · 1224 阅读 · 0 评论 -
获取Windows系统版本号
GetVersionEx function最好不要用这个API因为微软已经抛弃掉了,原话是这么说的:[GetVersionEx may be altered or unavailable for releases after Windows 8.1. Instead, use the Version Helper functions]也就是从Win8.1开始不支持了,无论是Win8原创 2017-11-08 15:32:43 · 1469 阅读 · 0 评论 -
内存映射文件
内存映射文件主要能解决两个问题:应用程序对大文件的高速访问和进程间的文件共享(作为一种通信方式)。下面是摘自百度百科的解释:内存映射文件,是由一个文件到一块内存的映射。Win32提供了允许应用程序把文件映射到一个进程的函数 (CreateFileMapping)。内存映射文件与虚拟内存有些类似,通过内存映射文件可以保留一个地址空间的区域,同时将物理存储器提交给此区域,内存文件映射的物理存储原创 2017-10-27 15:48:36 · 464 阅读 · 0 评论 -
在资源管理器中隐藏指定分区
好久没写东西了,忙了好久的小论文。涉及到一个小需求:想隐藏某一个分区,尽量不被用户看到,但是为了方便编程、维护,又希望可以通过盘符地址访问,怎么办呢?这个问题可以通过修改注册表的方式解决:1. 注册表HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer下新建键值对NoDrives,类型...原创 2019-03-04 21:56:54 · 836 阅读 · 2 评论