高级I/O操作:文件加密和压缩

高级I/O操作:文件加密和压缩

1. 文件加密
   - 文件加密是通过对文件内容进行加密算法处理,以保护文件的安全性和隐私性。
   - 下面是一个简单的文件加密的示例代码:

   ```c
   #include <stdio.h>

   void encryptFile(const char* inputFile, const char* outputFile, int key) {
       FILE* input = fopen(inputFile, "rb");
       FILE* output = fopen(outputFile, "wb");
       int ch;

       while ((ch = fgetc(input)) != EOF) {
           ch = ch ^ key;  // 使用异或运算进行加密
           fputc(ch, output);
       }

       fclose(input);
       fclose(output);
   }

   int main() {
       const char* inputFile = "input.txt";
       const char* outputFile = "output.txt";
       int key = 10;

       encryptFile(inputFile, outputFile, key);

       printf("File encrypted successfully.\n");

       return 0;
   }
   ```

   在上面的示例中,`encryptFile`函数打开输入文件和输出文件,然后逐个字节读取输入文件中的字符,使用异或运算对字符进行加密,然后将加密后的字符写入输出文件。

2. 文件压缩
   - 文件压缩是通过使用压缩算法减少文件的大小,以便更有效地存储和传输文件。
   - 常见的文件压缩算法包括gzip、zip和zlib等。
   - 下面是一个使用zlib库进行文件压缩的示例代码:

   ```c
   #include <stdio.h>
   #include <stdlib.h>
   #include <string.h>
   #include <zlib.h>

   void compressFile(const char* inputFile, const char* outputFile) {
       FILE* input = fopen(inputFile, "rb");
       FILE* output = fopen(outputFile, "wb");
       int ret;
       const int CHUNK_SIZE = 16384;
       unsigned char inputBuffer[CHUNK_SIZE];
       unsigned char outputBuffer[CHUNK_SIZE];
       z_stream strm;
       strm.zalloc = Z_NULL;
       strm.zfree = Z_NULL;
       strm.opaque = Z_NULL;
       strm.avail_in = 0;
       strm.next_in = Z_NULL;
       ret = deflateInit(&strm, Z_DEFAULT_COMPRESSION);
       if (ret != Z_OK) {
           fclose(input);
           fclose(output);
           fprintf(stderr, "Failed to initialize zlib\n");
           exit(EXIT_FAILURE);
       }

       do {
           strm.avail_in = fread(inputBuffer, 1, CHUNK_SIZE, input);
           if (ferror(input)) {
               deflateEnd(&strm);
               fclose(input);
               fclose(output);
               fprintf(stderr, "Failed to read input file\n");
               exit(EXIT_FAILURE);
           }

           strm.next_in = inputBuffer;

           do {
               strm.avail_out = CHUNK_SIZE;
               strm.next_out = outputBuffer;
               ret = deflate(&strm, Z_FINISH);
               if (ret == Z_STREAM_ERROR) {
                   deflateEnd(&strm);
                   fclose(input);
                   fclose(output);
                   fprintf(stderr, "Failed to compress file\n");
                   exit(EXIT_FAILURE);
               }

               int compressedSize = CHUNK_SIZE - strm.avail_out;
               fwrite(outputBuffer, 1, compressedSize, output);
               i

当涉及到文件加密时,C语言也提供了许多常用的加密算法和库。下面是一个示例,展示了如何使用OpenSSL库进行文件加密和解密。

首先,你需要确保已经安装了OpenSSL库,并且在编译时链接了正确的库文件。接下来,我们将使用AES对称加密算法进行文件加密和解密。

```c
#include <stdio.h>
#include <stdlib.h>
#include <openssl/aes.h>

// 加密文件
void encryptFile(const char* inputFile, const char* outputFile, const char* key) {
    FILE* input = fopen(inputFile, "rb");
    FILE* output = fopen(outputFile, "wb");
    if (!input || !output) {
        fprintf(stderr, "Failed to open file\n");
        exit(EXIT_FAILURE);
    }

    // 设置加密密钥
    AES_KEY aesKey;
    if (AES_set_encrypt_key((const unsigned char*)key, 128, &aesKey) < 0) {
        fclose(input);
        fclose(output);
        fprintf(stderr, "Failed to set encryption key\n");
        exit(EXIT_FAILURE);
    }

    unsigned char inputBuffer[AES_BLOCK_SIZE];
    unsigned char outputBuffer[AES_BLOCK_SIZE];
    int bytesRead = 0;
    int bytesWritten = 0;

    // 逐块读取输入文件,并进行加密
    while ((bytesRead = fread(inputBuffer, 1, AES_BLOCK_SIZE, input)) > 0) {
        AES_encrypt(inputBuffer, outputBuffer, &aesKey);
        bytesWritten = fwrite(outputBuffer, 1, bytesRead, output);
        if (bytesWritten != bytesRead) {
            fclose(input);
            fclose(output);
            fprintf(stderr, "Failed to write encrypted data\n");
            exit(EXIT_FAILURE);
        }
    }

    fclose(input);
    fclose(output);
}

// 解密文件
void decryptFile(const char* inputFile, const char* outputFile, const char* key) {
    FILE* input = fopen(inputFile, "rb");
    FILE* output = fopen(outputFile, "wb");
    if (!input || !output) {
        fprintf(stderr, "Failed to open file\n");
        exit(EXIT_FAILURE);
    }

    // 设置解密密钥
    AES_KEY aesKey;
    if (AES_set_decrypt_key((const unsigned char*)key, 128, &aesKey) < 0) {
        fclose(input);
        fclose(output);
        fprintf(stderr, "Failed to set decryption key\n");
        exit(EXIT_FAILURE);
    }

    unsigned char inputBuffer[AES_BLOCK_SIZE];
    unsigned char outputBuffer[AES_BLOCK_SIZE];
    int bytesRead = 0;
    int bytesWritten = 0;

    // 逐块读取输入文件,并进行解密
    while ((bytesRead = fread(inputBuffer, 1, AES_BLOCK_SIZE, input)) > 0) {
        AES_decrypt(inputBuffer, outputBuffer, &aesKey);
        bytesWritten = fwrite(outputBuffer, 1, bytesRead, output);
        if (bytesWritten != bytesRead) {
            fclose(input);
            fclose(output);
            fprintf(stderr, "Failed to write decrypted data\n");
            exit(EXIT_FAILURE);
        }
    }

    fclose(input);
    fclose(output);
}

int main() {
    const char* inputFile = "input.txt";
    const char* encryptedFile = "encrypted.bin";
    const char* decryptedFile = "decrypted.txt";
    const char* key = "0123456789abcdef"; // 128位密

当涉及到文件加密时,C语言也提供了许多常用的加密算法和库。下面是一个示例,展示了如何使用OpenSSL库进行文件加密和解密。

首先,你需要确保已经安装了OpenSSL库,并且在编译时链接了正确的库文件。接下来,我们将使用AES对称加密算法进行文件加密和解密。

```c
#include <stdio.h>
#include <stdlib.h>
#include <openssl/aes.h>

// 加密文件
void encryptFile(const char* inputFile, const char* outputFile, const char* key) {
    FILE* input = fopen(inputFile, "rb");
    FILE* output = fopen(outputFile, "wb");
    if (!input || !output) {
        fprintf(stderr, "Failed to open file\n");
        exit(EXIT_FAILURE);
    }

    // 设置加密密钥
    AES_KEY aesKey;
    if (AES_set_encrypt_key((const unsigned char*)key, 128, &aesKey) < 0) {
        fclose(input);
        fclose(output);
        fprintf(stderr, "Failed to set encryption key\n");
        exit(EXIT_FAILURE);
    }

    unsigned char inputBuffer[AES_BLOCK_SIZE];
    unsigned char outputBuffer[AES_BLOCK_SIZE];
    int bytesRead = 0;
    int bytesWritten = 0;

    // 逐块读取输入文件,并进行加密
    while ((bytesRead = fread(inputBuffer, 1, AES_BLOCK_SIZE, input)) > 0) {
        AES_encrypt(inputBuffer, outputBuffer, &aesKey);
        bytesWritten = fwrite(outputBuffer, 1, bytesRead, output);
        if (bytesWritten != bytesRead) {
            fclose(input);
            fclose(output);
            fprintf(stderr, "Failed to write encrypted data\n");
            exit(EXIT_FAILURE);
        }
    }

    fclose(input);
    fclose(output);
}

// 解密文件
void decryptFile(const char* inputFile, const char* outputFile, const char* key) {
    FILE* input = fopen(inputFile, "rb");
    FILE* output = fopen(outputFile, "wb");
    if (!input || !output) {
        fprintf(stderr, "Failed to open file\n");
        exit(EXIT_FAILURE);
    }

    // 设置解密密钥
    AES_KEY aesKey;
    if (AES_set_decrypt_key((const unsigned char*)key, 128, &aesKey) < 0) {
        fclose(input);
        fclose(output);
        fprintf(stderr, "Failed to set decryption key\n");
        exit(EXIT_FAILURE);
    }

    unsigned char inputBuffer[AES_BLOCK_SIZE];
    unsigned char outputBuffer[AES_BLOCK_SIZE];
    int bytesRead = 0;
    int bytesWritten = 0;

    // 逐块读取输入文件,并进行解密
    while ((bytesRead = fread(inputBuffer, 1, AES_BLOCK_SIZE, input)) > 0) {
        AES_decrypt(inputBuffer, outputBuffer, &aesKey);
        bytesWritten = fwrite(outputBuffer, 1, bytesRead, output);
        if (bytesWritten != bytesRead) {
            fclose(input);
            fclose(output);
            fprintf(stderr, "Failed to write decrypted data\n");
            exit(EXIT_FAILURE);
        }
    }

    fclose(input);
    fclose(output);
}

int main() {
    const char* inputFile = "input.txt";
    const char* encryptedFile = "encrypted.bin";
    const char* decryptedFile = "decrypted.txt";
    const char* key = "0123456789abcdef"; // 128位密钥

    // 加密文件
    encryptFile(inputFile, encryptedFile, key);

    // 解密文件
    decryptFile(encryptedFile, decryptedFile, key);

    printf("File encryption and decryption completed successfully\n");

    return 0;
}
```

在上述示例中,我们使用了OpenSSL提供的AES_set_encrypt_key和AES_set_decrypt_key函数来设置加密和解密的密钥。然后,我们使用AES_encrypt和AES_decrypt函数对输入文件进行逐块的加密和解密操作。

在实际应用中,你可以根据需要调整文件路径、密钥和加密算法等参数。此外,你还可以进一步优化代码,添加错误处理和异常情况处理,以确保文件加密和解密的安全性和稳定性。

请注意,文件加密只是数据保护的一种手段,对于敏感数据的保护还需要综合考虑其他因素,如密钥管理、访问控制等。在实际开发中,请遵循相关的安全最佳实践,并使用适当的加密算法和工具来保护数据的安全性。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
RAR 是一个让你在命令行模式中管理压缩文件的控制台应用。RAR 提供压缩、加 密、数据恢复和许多其它此手册中描述的其它功能。 RAR 只支持 RAR 格式压缩文件,它默认有 .rar 扩展名。不支持ZIP 和其他格 式。即使创建压缩文件时指定了 .zip 扩展名,它仍然是 RAR 格式的。Windows 用户 可以 WinRAR,它支持更多的压缩文件类型,包括 RAR 和 ZIP 格式。 WinRAR 提供了图形用户界面和命令行模式。虽然控制台 RAR 和图形界面 WinRAR 有相似的命令行语法,但是它们还有有一些不同。所以推荐使用此 rar.txt 手册用于 控制台 RAR(rar.exe 在 Windows 版本的情况下),winrar.chm 是图形界面 WinRAR (winrar.exe) 的帮助文件。 配置文件 ~~~~~~~~ Unix 版本的 RAR 从用户的 home 或 /etc 目录中的 .rarrc 文件读取配置文件信息 (存储在 HOME 环境变量中) Windows 的版本 RAR 从 rar.ini 文件读取配置文件信息,它放在 rar.exe 文件相 同的目录中。 这个文件包含下列字符串: switches=任何 RAR 开关,用空格分开 例如: switches=-m5 -s 环境变量 ~~~~~~~~ 可以通过建立"RAR"环境变量来添加默认参数到命令行中. 例如,在 Unix 中,下列命令行可以被添加到你的配置中: RAR='-s -md1024' export RAR RAR 将使用这个字符串作为命令行的默认参数,并将使用 1024KB 字典大小来创建 “固实”压缩文件。 RAR 控制选项使用下列优先级: 命名行开关 最高优先级 在 RAR 变量中的开关 低优先级 保存在配置文件中的开关 最低优先级 日志文件 ~~~~~~~~ 如果在命令行或配置文件中指定开关 -ilog ,RAR 将会把处理压缩文件中遇到的错误 等写到日志文件中。读取开关 -ilog 描述获得更多信息。 固实压缩文件列表 - rarfiles.lst ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ rarfiles.lst 包含一个用户定义的文件列表,告诉 RAR 添加文件到固实压缩文件时的顺 序。它可以包含文件名通配符和指定项目 -$default。默认项目定义了这个文件中与 其他项目不相符时的顺序清单位置。 注释字符是 ';'. 在 Windows 中,这个文件应该放在 RAR 所在的或 %APPDATA%\WinRAR 目录中, 在 Unix 中- 放在用户的 home 目录或在 /etc 中。 提高压缩率和操作速度的提示: - 在压缩文件中,小文件应该被组织在一起; - 频繁被处理的文件应该放在开始的位置。 普通的掩码越靠近顶端优先权就越高,但是这个规则存在例外。如果 rarfiles.lst 包含两个掩码,并且所有文件既匹配第一个掩码,也匹配第二个掩码, 较小的子集 或者更精确的匹配拥有更高的优先权。例如,如果你用 *.cpp 和 f*.cpp 掩码, f*.cpp 拥有更高的优先权。 RAR 命令行语法 ~~~~~~~~~~~~~~ 语法 RAR [ - ] [ ] [ ] [ ] 描述 命令行选项 (命令和开关) 提供了使用 RAR 创建和管理压缩文件的控制方法。命 令是一个字符串(或单个的字母),命令 RAR 去执行一个相应的操作。开关被用来 改变 RAR 执行操作的方法。其它参数是压缩文件名和被压缩文件或要从压缩文件 中被解压文件。 列表文件是一个包括处理的文件名的纯文本文件。第一列应该以文件名开始。可以 在//字符后添加注释。例如,你可以创建包含下列字符串的 backup.lst: c:\work\doc\*.txt //备份文本文档 c:\work\image\*.bmp //备份图片 c:\
深入解析WINDOWS操作系统(第4版) ISBN:9787121039690 本书是著名的操作系统内核专家Mark Russinovich和David Solomon撰写的Windows操作系统原理的最新版著作,全面和深入地阐述了Windows操作系统的整体结构以及内部工作细节。本书针对Windows Server 2003、Windows XP和Windows 2000做了全面更新,通过许多练习实验让你直接感受到Windows的内部行为。另外,本书还介绍了一些高级诊断技术,以便使你的系统运行得更加平稳和高效。无论你是开发人员还是系统管理员,你都可以在本书中找到一些关键的、有关体系结构方面的知识,通过这些知识你可以更好地做系统设计、调试,以及性能优化。 全书内容丰富、信息全面,主要包括的Windows操作系统深度知识有:理解Windows的关键机制,包括系统服务分发和调度机制、启动和停机,以及注册表;挖掘Windows的安全模型,包括访问控制、特权和审计;利用内核调试器和其他的工具来检查内部系统结构;检查与进程、线程和作业相关的数据结构和算法;观察Windows如何管理虚拟内存和物理内存;理解NTFS的操作和格式,诊断文件系统访问问题;从上往下查看Windows的网络栈,包括映射、API、名称解析和协议驱动程序;诊断引导问题,执行崩溃分析。 本书适合广大Windows平台开发人员、IT专业从业人员等参考使用。 编辑推荐 ■ 国内知名译者潘爱民先生译作 ■ Windows系统之父Jim Allchin亲自撰文推荐! ■ Windows NT首席设计师David N. Cutler亲自撰文推荐! ■ 深入解析Windows操作系统!彻底揭开Windows技术内幕! ■ Csdn、博客堂、博客园、《程序员》杂志鼎力推荐! 目录第1章 概念和工具 1 1.1 Windows操作系统的版本 1 1.2 基础概念和术语 3 Windows API 3 服务、函数和例程 5 进程、线程和作业 6 虚拟内存 14 内核模式和用户模式 16 终端服务及多个会话 21 对象和句柄 22 安全性 23 注册表 24 Unicode 25 1.3 挖掘Windows内部机理 25 性能工具 27 Windows支持工具箱 27 Windows资源工具箱 27 内核调试 28 Platform SDK 33 DDK(设备驱动程序开发工具) 34 Sysinternals工具 34 1.4 本章总结 34 第2章 系统结构 35 2.1 需求和设计目标 35 2.2 操作系统模型 36 2.3 总体结构 37 可移植性 40 对称多处理 41 可伸缩性 46 客户和服务器版本之间的差异 47 检查版本 49 2.4 关键的系统组件 51 环境子系统和子系统DLL 53 硬件抽象层(HAL) 67 设备驱动程序 69 系统进程 75 2.5 本章总结 84 第3章 系统机制 85 3.1 陷阱分发 85 中断分发 87 异常分发 109 系统服务分发 119 3.2 对象管理器 124 执行体对象 126 对象结构 128 3.3 同步 149 高IRQL的同步 151 低IRQL的同步 155 3.4 系统辅助线程 166 3.5 Windows全局标志 168 3.6 本地过程调用(LPC) 171 3.7 内核事件追踪 175 3.8 Wow64 178 Wow64进程地址空间布局结构 179 系统调用 179 异常分发 179 用户回调 179 文件系统重定向 180 注册表的重定向和反射 180 I/O控制请求 181 16位安装器应用程序 182 打印 182 一些限制 182 3.9 本章总结 182 第4章 管理机制 183 4.1 注册表 183 查看和修改注册表 183 注册表用法 184 注册表数据类型 185 注册表逻辑结构 186 注册表问题的诊断 192 注册表的内部机理 197 4.2 服务 211 服务应用 212 服务账户 217 服务控制管理器 223 服务启动 225 启动错误 229 接受当前引导和“最后已知的好控制集” 230 服务失败 231 服务停机 232 共享的服务进程 233 服务控制程序 236 4.3 Windows管理规范 237 WMI体系结构 237 提供者 239 公共信息模型(CIM)和可管理对象的格式语言 240 WMI名字空间 243 类关联 244 WMI实现 247 WMI安全性 248 4.4 本章总结 249 第5章 启动和停机 251 5.1 引导过程 251 x86和x64引导准备 251 x86/x64引导扇区和Ntldr 255 IA64引导过程 264 初始化内核和执行体子系统 266 Smss、Csrss和Winlogon 269 自动启动的映像文件 273 5.2 引导和启动问题的故障检查 274 最后已知的好配置 274 安全模式 274 安全模式下的驱动程序加载 275 恢复控制台(Recovery Console) 279 解决常见的引导问题 281 5.3 停机 286 5.4 本章总结 288 第6章 进程、线程和作业 289 6.1 进程的内部机理 289 数据结构 289 内核变量 297 性能计数器 297 有关的函数 298 6.2 CreateProcess的流程 300 阶段1:打开将要被执行的映像 302 阶段2:创建Windows执行体进程对象 304 阶段3:创建初始线程,以及它的栈和执行环境 308 阶段4:将新进程通知Windows子系统 309 阶段5:启动初始线程的执行 310 阶段6:在新进程环境下执行进程初始化 310 6.3 线程的内部机理 313 数据结构 313 内核变量 320 性能计数器 321 有关的函数 322 一个线程的产生 322 6.4 检查线程活动 323 6.5 线程调度 325 Windows调度的概述 326 优先级别 327 Windows调度API 330 有关的工具 331 实时优先级 333 线程状态 334 分发器数据库 338 时限 340 调度情形 345 环境切换 347 空闲(Idle)线程 348 优先级提升 348 多处理器系统 357 多处理器的线程调度算法 366 6.6 作业对象 369 6.7 本章总结 374 第7章 内存管理 375 7.1 内存管理器简介 375 内存管理器组件 376 内部同步 377 配置内存管理器 378 检查内存的使用情况 378 7.2 内存管理器提供的服务 382 大页面和小页面 382 保留的和提交的页面 384 锁住内存 385 分配粒度 385 共享内存和映射文件 386 保护内存 388 “不可执行”页面保护 390 写时复制 392 堆管理器 394 地址窗口扩展 399 7.3 系统内存池 401 配置内存池的大小 401 监视内存池的使用 404 预读列表(Look-Aside List) 408 驱动程序检验器(Driver Verifier) 409 7.4 虚拟地址空间的布局结构 413 x86用户地址空间的布局结构 415 x86系统地址空间的布局结构 417 x86会话空间 418 系统页表项(PTE,Page Table Entry) 421 64位地址空间布局结构 422 7.5 地址转译 425 x86虚拟地址转译 425 地址转译快查缓冲区 434 物理地址扩展(PAE) 435 IA-64虚拟地址转译 437 x64虚拟地址转译 438 7.6 页面错误处理 439 无效PTE 440 原型PTE 441 页面换入I/O 443 冲突的页面错误 444 页面文件 444 7.7 虚拟地址描述符 448 7.8 内存区对象 450 7.9 工作集 457 按需换页 458 7.10 逻辑预取器 458 放置策略 462 工作集管理 463 平衡集管理器和交换器 466 系统工作集 467 7.11 页面帧编号数据库 469 页面列表的动态变化 472 已修改页面写出器 475 PFN数据结构 476 低内存通知和高内存通知 479 7.12 本章总结 483 第8章 安全性 485 8.1 安全系统组件 488 8.2 保护对象 492 访问检查 493 安全描述符和访问控制 506 8.3 账户权限和特权 516 账户权限 517 特权 518 超级特权 523 8.4 安全审计 524 8.5 登录(Logon) 526 Winlogon初始化 528 用户登录步骤 529 8.6 软件限制策略 533 8.7 本章总结 535 第9章 I/O系统 537 9.1 I/O系统组件 537 I/O管理器 539 典型的I/O处理过程 540 9.2 设备驱动程序 541 设备驱动程序的类型 541 驱动程序的结构 548 驱动程序对象和设备对象 550 打开设备 555 9.3 I/O处理 561 I/O类型 561 映射文件I/O和文件缓存 564 I/O请求包 564 针对单层驱动程序的I/O请求 569 针对分层的驱动程序的I/O请求 577 I/O完成端口 585 驱动程序检验器(Driver Verifier) 589 9.4 即插即用(PnP)管理器 590 即插即用支持的级别 591 驱动程序对于即插即用的支持 592 驱动程序加载、初始化和安装 594 驱动程序安装 603 9.5 电源管理器 607 电源管理器的操作 609 驱动程序的电源操作 610 驱动程序对于设备电源的控制 613 9.6 本章总结 613 第10章 存储管理 615 10.1 有关存储的术语 615 10.2 磁盘驱动程序 616 Ntldr 616 磁盘类、端口和小端口驱动程序 617 磁盘设备对象 620 分区管理器 622 10.3 卷的管理 622 基本磁盘 624 动态磁盘 626 多分区卷的管理 632 卷名字空间 638 卷的I/O操作 646 虚拟磁盘服务 648 卷影像(shadow)拷贝服务 649 10.4 本章总结 654 第11章 缓存管理器 655 11.1 缓存管理器的关键特性 655 单个中心化的系统缓存 656 内存管理器 656 缓存一致性 656 虚拟块缓存 658 流式缓存机制 658 对可恢复文件系统的支持 658 11.2 缓存的虚拟内存管理 660 11.3 缓存的大小 662 LargeSystemCache 662 缓存的虚拟大小 663 缓存的工作集大小 665 缓存的物理大小 667 11.4 缓存的数据结构 668 系统范围的缓存数据结构 669 针对每个文件的缓存数据结构 670 11.5 文件系统接口 674 从缓存中来回拷贝数据 676 通过映射和锁定接口进行缓存 677 通过直接内存访问接口进行缓存 678 11.6 快速I/O 679 11.7 预读(Read Ahead)和滞后写(Write Behind) 682 智能预读 682 回写缓存(Write-Back Caching)和延迟写(Lazy Writing) 683 写节流(Write Throttling) 686 系统线程 687 11.8 本章总结 688 第12章 文件系统 689 12.1 Windows文件系统格式 690 CDFS 690 UDF 691 FAT12、FAT16和FAT32 691 NTFS 694 12.2 文件系统驱动程序总体结构 694 本地FSD 695 远程FSD 696 文件系统操作 700 文件系统过滤型驱动程序 705 12.3 诊断文件系统的问题 711 Filemon的基本和高级模式 711 Filemon诊断技巧 712 12.4 NTFS设计目标和特性 717 高端(High-End)文件系统的需求 717 NTFS的高级特性 719 12.5 NTFS文件系统驱动程序 729 12.6 NTFS在磁盘上的结构 732 卷(volume) 732 簇(cluster) 732 主文件表(MFT) 733 文件引用号 739 文件纪录 740 文件名 742 驻留的和非驻留的属性 744 数据压缩和稀疏文件 747 变化日志文件 752 索引 753 对象ID 754 配额跟踪 755 统一的安全性 756 重解析点 758 12.7 NTFS的恢复支持 758 文件系统设计的演变 759 日志记录 761 恢复 767 NTFS的坏簇恢复 771 12.8 加密文件系统(EFS)安全性 775 第一次加密一个文件 778 解密过程 783 加密文件的备份 784 12.9 本章总结 785 第13章 网络 787 13.1 Windows的网络总体结构 787 OSI参考模型 787 Windows网络组件 789 13.2 网络API 791 Windows套接字(Windows Sockets) 791 远过程调用 798 Web访问API 803 命名管道和邮件槽 804 NetBIOS 811 NetBIOS的操作 812 其他的网络API 813 13.3 多重定向器支持 815 多提供者转发器 816 多UNC提供者 818 13.4 名称解析 820 域名系统 820 Windows Internet名称服务 820 13.5 协议驱动程序 821 TCP/IP的扩展 824 13.6 NDIS驱动程序 828 NDIS小端口的变化形式 832 面向连接的NDIS 832 外接NDIS(Remote NDIS) 835 QOS 836 13.7 绑定 838 13.8 分层的网络服务 839 远程访问(Remote Access) 839 活动目录 840 网络负载平衡 841 文件复制服务 843 分布式文件系统 843 13.9 本章总结 844 第14章 崩溃转储分析 845 14.1 Windows为什么会崩溃 845 14.2 蓝屏 846 14.3 崩溃转储文件 849 崩溃转储的生成 852 14.4 Windows错误报告 853 14.5 在线崩溃分析 854 14.6 基本的崩溃转储分析 855 Notmyfault 855 基本的崩溃转储分析 856 详细的分析 858 14.7 使用崩溃诊断工具 860 缓冲区溢出和特殊内存池 861 代码改写和系统代码写保护 863 14.8 高级的崩溃转储分析 864 栈破坏 865 挂起的系统或无响应的系统 866 当没有崩溃转储时 869 术语表 871 术语对照表 895 索引 901

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图灵软件技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值