Win32 API功能封装
+ -

Windows监则目录文件变化事件响应

2022-10-13 46 0
//
//unsigned long __stdcall notificationThread(void* parameter)
//{
//    char buff[100] = { 0 };
//    HANDLE notificationHandle = FindFirstChangeNotificationW(
//        L"C:\\XX\DD\\", true, FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_LAST_WRITE);
//
//    hShutDownEvent = CreateEventW(NULL, true, false, NULL);;
//    sprintf_s(buff, sizeof(buff), "hShutDownEvent=0x%p\n", hShutDownEvent);
//    OutputDebugStringA(buff);
//
//    HANDLE handles[2] = { hShutDownEvent, notificationHandle };
//    while (true)
//    {
//        DWORD which = WaitForMultipleObjects(2, handles, false, INFINITE);
//        OutputDebugStringA("Device Change\n");
//        DWORD e = GetLastError();
//        if (which == WAIT_OBJECT_0)//hShutDownEvent
//        {
//            OutputDebugStringA("break out\n");
//            break;
//        }
//        else if (which == WAIT_OBJECT_0 + 1) //notificationHandle
//        {
//            OutputDebugStringA("begin open file\n");
//            std::string str;    
//            GetBufferFromFile(L"\\??\\C:\\XX\\DD\\config.txt", str);
//            OutputDebugStringA("end open file\n");
//
//            memset(buff, 0, sizeof(buff));
//            if (str.size())
//            {
//                memcpy(buff, &str.at(0), str.size());
//                nDelay = atoi(buff);
//                sprintf_s(buff, sizeof(buff), "nDealay=%d\n", nDelay);
//                OutputDebugStringA(buff);
//            }
//
//            FindNextChangeNotification(notificationHandle);
//        }
//        else
//        {
//            sprintf_s(buff, sizeof(buff), "which=%0x err=0x%x\n", which,e);
//            OutputDebugStringA(buff);
//        }
//    }
//    FindCloseChangeNotification(notificationHandle);
//
//    OutputDebugStringA("notificationThread thread exit\n");
//    return 0;
//}

0 篇笔记 写笔记

Windbg 符号库及源文件设置
Windbg设置一般分为符号库路径设置和源文件路径设置符号库路径设置打开菜单栏,选择“Symbol File Path …”,在弹出的对话框栏中填入可载的入符号库,多个路径以分号“;”分隔。微软提供了操作系统的全部符号库,所以如果要进行windows系统自带的内核模块或应用模块进行调试,也可以只需......
Windows Inf文件设备GUID分类(设备安装程序类)
Class=SystemClassGuid={4d36e97d-e325-11ce-bfc1-08002be10318}Class=USBClassGuid={36FC9E60-C465-11CF-8056-444553540000}Class=AudioClassGuid={4d36e96c-......
NTFS文件系统$AttrDef文件
NTFS $AttrDef文件即属性定义表(Atrribute Definition Table),它使用4号MFT项,用来定义文件系统的属性名和标识。 $AttrDef文件存放了文件系统所支持的所有文件属性类型,并说明它们是否可以被索引和恢复。$AttrDef项数据结构:字节偏移字节......
INI文件的读封装
INI文件的读写类封装,可以自动创建INF文件。简单地封装了获取inf文件相关节的内容。ini.hclass CIni {public: char m_fileName[512];public: CIni::CIni(); CIni(const char* fi......
NTFS文件系统布局
NTFS文件系统大致可以分为引导区,MFT区,MFT备份区,数据区和DBR备份区。引导扇区和FAT32的引导区类似,是文件系统的保留区,第一扇区为DBR。一般包括文件系统的引导代码和数据。MFT区一般占文件系统大小的12.5%,一般当其它数据区写满后才会暂时使用这个空间。MFT备份区,说是备份......
NTFS文件系统$LogFile
$LogFile文件即事务型日志文件,使用2号MFT项。$LogFile项具有标准文件属性,使用数据属性存储日志数据。$LogFile是为实现可恢复性和安全性而设计的。当系统运行时,NTFS就会在日志文件中记录所有影响NTFS卷结构的操作,如文件的创建,目构结构的改变等,从而使其能够在系统失败时恢......
FAT文件系统数据格式
FAT12、FAT16的DBR相同(以下称为FAT)。FAT12/16格式:偏移 意义      大小 解释                     0x00: JMP指令    3字节 SHORT跳转的话,是一个JMP一个NOP。       0x03: OE......
FAT文件系统 FAT表
FAT表的位置FAT表一般有2个,紧跟在保留扇区之后。FAT1表的位置可以通过引导记录偏移0x0E~0x0F字节处的保留扇区数计算得到。FAT表的大小FAT表的大小可能通过引导记录偏移0x16~0x17字节处的每FAT表FAT占用的扇区数计算得到。FAT表的功能FAT表用来描述数据区中存储单元的......
NTFS $UsnJrnl文件
NTFS $UsnJrnl文件即变更日志文件,用于记录文件的改变。当文件发生改变时,这种变化将被记录进”$Extend$UsnJrnl”文件的一个名字为$J的数据属性中。$J数据属性具有稀疏属性,它由变更日志项组成,每个变更日志项的大小有可能不同,还有一个称为$Max的数据属笥,其中记录着有关用户日......
NTFS文件系统位图属性
NTF 位图属性($BITMAP)类型值为 0xB0位图属性用于描述索引或$MFT的分配性况。对于索引,它用一个bit位描述索引的一个VCN ;对于$MFT,用一个bit位描述一个MFT项的分配情况。如:从0x150001F0处,前20个字节为一个标准的属性头结构,最后8个宽限 的十六进制为”......
NTFS 创建文件
假如我们要建立一个文件 “子目录1file.txt”,假设”子目录1”已经存在于根目录,是建立的file文件大小为7000个字节,每个簇大小为4096字节。读取文件第一个扇区的引导扇区,获取簇大小,MFT的起始位置以及每个MFT项的大小。读取第一个MFT项,即$MFT文件的MFT项,由它的$DA......
文件的读写操作
打开文件之后,最重要的操作是对文件的读写。读与写的方法是对称的。只是参数输入与输出的方向不同。读取文件内容一般用ZwReadFile,写文件一般使用ZwWriteFile。NTSTATUS ZwReadFile( IN HANDLE FileHandle, IN HANDLE ......
NTFS文件系统$MFT元文件
$MFT元文件就是整个MFT表。由于NTFS是以文件为单位进行管理的,故整个MFT区的名称可称为”$MFT”。在$MFT文件中,使用0号MFT项,用来描述整个$MFT文件,其内容如下:在NTFS文件系统建立时,$MFT的实际大小一般为32K,随着文件目录的增加而增大,其中就是包含前16个元文件......
NTFS $ObjId文件
NTFS $ObjId文件 即对象ID文件,位于$Extend目录下。我们知道,可以使用对象ID代替文件名对文件进行定位。这样即使文件被重命名也不影响对其进行定位和访问。$Extend$ObjId文件中有个$O索引,将文件的对象ID关联到MFT项。$OjbId索引包含索引根属性和索引分配属......
NTFS文件系统索引根属性
NTFS 索引根属性($INDEX_ROOT)的类型值为0X90.每个文件都有索引根属性,它是为实现索引而设置的B+树的根节点,包含存储在其中的文件或子目录的相关信息。如果一个目录比较大,还需要用到$INDEX_ALLOCATION属性(索引分配属性)和$BITMAP属性(位图属性)目录除了具......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!