热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

WindowsViaC/C++

这个是windows核心编程的第五版,作者JeffreyRichter.非常著名的一本书。写的比较底层。听说windows下编程要先看ptzold,再看
这个是windows核心编程的第五版,作者Jeffrey Richter.非常著名的一本书。写的比较底层。

听说windows下编程要先看ptzold,再看win32多线程程序设计,最后看这本书。匆匆的扫了几眼,这本书为什么放在最后呢? 感觉不是那么深呀!而且内容感觉乱乱的!

哈哈,还没看呢,这就下结论了,卑鄙呀!

我想windows下的编程基础还有2本书要看:Windows internals(5th),潘爱民的windows内核原理与实现。老潘的书最后看,源码分析呀!比较难啃。

windows核心编程,不准备很快的看完,慢慢看就好了。

2012.8.22

Introduction

        Here is a quick look at what you need to know about 64-bit Windows:

  • The 64-bit Windows kernel is a port of the 32-bit Windows kernel. This means that all the details and intricacies that you've learned about 32-bit Windows still apply in the 64-bit world. In fact, Microsoft has modified the 32-bit Windows source code so that it can be compiled to produce a 32-bit or a 64-bit system. They have just one source-code base, so new features and bug fixes are simultaneously applied to both systems.

  • Because the kernels use the same code and underlying concepts, the Windows API is identical on both platforms. This means that you do not have to redesign or reimplement your application to work on 64-bit Windows. You can simply make slight modifications to your source code and then rebuild.

  • For backward compatibility, 64-bit Windows can execute 32-bit applications. However, your application's performance will improve if the application is built as a true 64-bit application.

  • Because it is so easy to port 32-bit code, there are already device drivers, tools, and applications available for 64-bit Windows. Unfortunately, Visual Studio is a native 32-bit application and Microsoft seems to be in no hurry to port it to be a native 64-bit application. However, the good news is that 32-bit Visual Studio does run quite well on 64-bit Windows; it just has a limited address space for its own data structures. And Visual Studio does allow you to debug a 64-bit application.

  • There is little new for you to learn. You'll be happy to know that most data types remain 32 bits wide. These includeints,DWORDs,LONGs,BOOLs, and so on. In fact, you mostly just need to worry about pointers and handles, since they are now 64-bit values.




第一章 介绍一些Error返回号

第2章

这章主要介绍字符串的处理和unicode的使用

1. UTF-16虽然不能代表所有字符,但是可以把常用字符包括了,基本够用了,可以节省空间。而且UTF-16 supports surrogates, which are a way of using 32 bits (or 4 bytes) to represent a single character。

2.  If you call any Windows function passing it an ANSI string (a string of 1-byte characters), the function first converts the string to Unicode and then passes the Unicode string to the operating system.

3. StrSafe.h中定义安全处理字符串的函数

4. 字符串和字符才考虑Unicode处理

第3章 kernel object

1. kernel objects包括:access token objects, event objects, file objects, file-mapping objects, I/O completion port objects, job objects, mailslot objects, mutex objects, pipe        objects, process objects, semaphore objects, thread objects, waitable timer objects, and thread pool worker factory objects

2. 使用Windows核心对象要注意安全

3. kernel object继承是什么东西呀?

4. 进程通信的Mutex等,名字是唯一的,也是是AB使用MutexA通信,则C不能再创建一个MutexA.

    有个问题,linux中如何保证这样的变量不重名呢?万一重名了,不就挂掉了?

5. Terminal Services Namespaces

6. If you want to ensure that the kernel object names created by your own applications never conflict with any other application's names or are the subject of hijack attacks, you can define a custom prefix and use it as a private namespace as you do with
Global and
Local. The server process responsible for creating the kernel object defines a
boundary descriptor that protects the namespace name itself.

7. 为什么进程间要共享内核对象呢?

   进程之间有时候需要共享某个内核对象,比如两个进程之间可以通过共享同一个文件映射对象来传递数据,或者共享管道内核对象记性进程间通讯,也可能需要共享互斥对象、信标和事件对象进行进程间同步。 先说说什么是内核对象,内核对象是一种特殊的数据结构,进程在使用Create***函数创建内核对象的时候,操作系统以这个内核对象对应的数据结     构在内核中开辟一块内存,这块内存就是内核对象。没一个内核对象都对应着一个唯一的在内核中的内核地址,但是为了安全,这个地址不能直接      给进程使用,因此每一个进程都维护一个独立的内核对象地址和一个代表这个内核地址的句柄的进程句柄表

第一部分完结



2012.9.5




推荐阅读
  • A题简单判断#includeusingnamespacestd;typedeflonglongll;intt;intmain(){cint;whil ... [详细]
  • OpenWrt 是一款高度可定制的嵌入式 Linux 发行版,广泛应用于无线路由器等领域,拥有超过百个预装软件包。本文详细探讨如何在 OpenWrt 上通过 Luci 构建自定义模块,以扩展其功能。 ... [详细]
  • 本文档详细介绍了Robot Framework的基础知识、安装配置方法及其实用技巧。从环境搭建到编写第一个测试用例,涵盖了一系列实用的操作指南和最佳实践。 ... [详细]
  • 本文深入探讨了Java注解的基本概念及其在现代Java开发中的应用。文章不仅介绍了如何创建和使用自定义注解,还详细讲解了如何利用反射机制解析注解,以及Java内建注解的使用场景。 ... [详细]
  • 导读上一篇讲了zsh的常用字符串操作,这篇开始讲更为琐碎的转义字符和格式化输出相关内容。包括转义字符、引号、print、printf的使用等等。其中很多内容没有必要记忆,作为手册参 ... [详细]
  • 本文介绍了一种利用迭代法解决特定方程问题的方法,特别是当给定函数f(x)在区间[x1, x2]内连续且f(x1)0时,存在一个x~使得f(x~)=0。通过逐步细化搜索范围,可以高效地找到方程的根。 ... [详细]
  • 本文探讨了在Java应用中,由于对象间循环引用导致重写toString方法时出现StackOverflowError的具体情况,并提供了有效的解决方案。 ... [详细]
  • Flutter入门指南:实现自动关闭的对话框与提示
    本文为Flutter系列教程的一部分,专注于讲解如何在Flutter应用中实现自动关闭的对话框和提示。通过具体的代码示例,帮助开发者掌握SnackBar、BottomSheet和Dialog的使用方法。 ... [详细]
  • 本文探讨了在以管理员权限运行应用程序时无法访问网络驱动器的问题,并提供了解决方案。 ... [详细]
  • Python作为一种广泛使用的高级编程语言,以其简洁的语法、强大的功能和丰富的库支持著称。本文将详细介绍Python的主要特点及其在现代软件开发中的应用。 ... [详细]
  • 本文详细介绍了 C# 编程语言中 Main 方法的作用、不同形式及其使用场景,帮助开发者更好地理解和应用这一重要概念。 ... [详细]
  • 探索PWA H5 Web App优化之路(Service Worker与Lighthouse的应用)
    本文探讨了如何通过Service Worker和Lighthouse工具来优化PWA H5 Web App,旨在提升用户体验,包括提高加载速度、增强离线访问能力等方面。 ... [详细]
  • Redis 教程01 —— 如何安装 Redis
    本文介绍了 Redis,这是一个由 Salvatore Sanfilippo 开发的键值存储系统。Redis 是一款开源且高性能的数据库,支持多种数据结构存储,并提供了丰富的功能和特性。 ... [详细]
  • 为了提升学习效率和游戏体验,计划购买一台约5000元的笔记本电脑,主要运行Windows XP系统,外观设计不是重点,但希望配备能够流畅运行《魔兽世界》的显卡,如NVIDIA GeForce 3470或9300系列。处理器方面,希望能选择45纳米工艺的产品。 ... [详细]
  • 本文探讨了在一个UIViewController中同时存在两个或更多tableView时,若它们的初始Y坐标相同,则可能出现布局异常的问题,并深入解析了automaticallyAdjustsScrollViewInsets属性的作用及其设置方法。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有