知识如海:

© / Posted in 知识如海 / August 19, 2007

——————
IBM公司Dr. Edward G. Bradford的一篇文章。
在开始之前,请注意我们对于市场上两种版本的 Windows 称呼将稍有区别。当不需要区分 Windows 2000 和 Windows XP 时将使用“Windows”。当需要区分时,使用“Windows 2000”或“Windows XP”。
管道
管道是一种进程间的通信机制,Windows 和 Linux(以及 UNIX)上都使用的这种机制。 管道源自“贝尔实验室”开发的 UNIX ,并且所有的 UNIX 和 Linux 都继承了这项技术。 管道是通过通常的 IO 接口存取的字节流。 创建管道后,通过使用操作系统的任何读或写 IO 系统调用来读或者写它。在 UNIX 和 Linux 环境中,IO 调用是 read() 和 write() 。 在 Windows 环境中,API 是 ReadFile() 和 WriteFile() 。Windows 管道与 Linux 管道的区别在于 Windows 使用单一句柄(类似于 Linux 文件描述符)支持双向 IO。Linux 管道返回两个文件描述符来实现双向 IO。
[我是一个图片]
[我是一个图片]
Windows 管道
Windows 管道比 Linux 管道复杂得多。Windows 支持命名的和未命名的管道。未命名管道就是接口没有公布其名称的命名管道。Windows 支持管道上的异步 IO,因此单个线程不会阻塞在对管道的 IO 调用。使用异步 IO 这种功能需要不同的 IO 接口。Windows 管道有两种类型:字节型和消息型。字节型管道与 UNIX 管道类似并支持字节流。 在本文中,我不打算研究消息型管道,尽管对于一个完全的比较应该包含它们。Windows 管道用 CreateNamedPipe() API 来创建。一旦创建, OpenFile() API 将被用来存取新创建的命名管道的另一端。 管道名位于平面的名称空间。例如, \\.\pipe\anyname 是一个合法的 Windows 命名管道名称。在 C 或 C++ 里名称表示为:

继续阅读 »

© / Posted in 知识如海 / August 19, 2007

——————
这是一篇简介IP-Spoofing(IP欺骗)原理的文章.想当年著名Hacker,Kevin与安全专家
下村勤之间的较量就是以IP-Spoofing开始的.这篇文章需要你具有一定的unix基础和tcpip概念,
IP-Spoofing 是一种比较复杂的攻击手段.但准确的说它是一次攻击的一个步骤.文章
中使用的一些标记:
A:目标主机
B:被信任主机
C:不可达主机
Z:发起攻击的主机

继续阅读 »

© / Posted in 知识如海 / August 18, 2007

——————
作者: 黄浩文
1 Interprocess Communication (IPC)和管道Pipes
   在UNIX的内核环境中,要解决的一个首要问题是:如何控制和处理不同进程之间的通信和数据交换。
本章中我们将通过研究一个简单的实例,看看在同一台机器的UNIX环境下多个进程是如何运行和被我们控制的
(使用fork()方法)。
   能够实现进程间通信的方法有:
   Pipes
   Signals

继续阅读 »

© / Posted in 知识如海 / August 16, 2007

——————
用MFC制作的工程由很多文件构成,它不能象一般C++程序那样随意在类外定义全局变量,在这里要想定义能被工程内多个文件共享的全局变量和函数必须用一些特殊方法才行。实际上有多种方法可以实现,这里只介绍两种方法。
一、在应用程序类中定义
用MFC生成的工程中都有一个名为CxxxApp的类,它派生于CWinApp类。这个类主要进行程序的初始化,生成文档、视图对象等工作。我们可以把需要全局访问的变量和函数定义为这个类的成员变量和成员函数,就可以实现全局访问了。
从严格意义上讲,这种变量和函数并不是全局的,因为它仍然只是类中的成员,只是由于我们很容易获得CxxxApp类的指针,所以我们可以在文档、视图、对话框以及各种自定义类中访问到它们,达到与全局变量类似的效果。访问时用函数“AfxGetApp()”获得CxxxApp类的指针,用“AfxGetApp()->成员”访问变量或函数。
例:
Test.h:(应用程序类头文件)
class CTestApp : public CWinApp
{

继续阅读 »

© / Posted in 知识如海 / August 15, 2007

——————
系统托盘编程完全指南
导读:
自从Windows 95面市以来,系统托盘应用作为一种极具吸引力的UI深受广大用户的喜爱。使用系统托盘UI的Windows应用程序数不胜数,比如”金山词霸”、”Winamp”、”RealPlayer”等等。那么如何编写自己的托盘应用呢?本文是系列文章中的第一篇,这些文章将比较系统地描述托盘应用的编程。并创建自己的C++类来增强系统托盘应用的特性。读完这些文章,再参照例子,相信读者能轻松自如地在自己的程序中应用系统托盘。
大家知道,MFC框架没有提供任何现成的类应用于系统托盘UI,那么如何将表示应用程序的图标添加到任务栏中呢?方法很简单,只用到一个API函数,它就是Shell_NotifyIcon。这个函数本身也相当容易理解和使用。看看它的原型就知道了: BOOL Shell_NotifyIcon(
DWORD dwMessage,
PNOTIFYICONDATA pnid
); 第一个参数dwMessage类型为DWORD,表示要进行的动作,它可以是下面的值之一:NIM_ADD: 添加一个图标到任务栏。
NIM_MODIFY: 修改状态栏区域的图标。

继续阅读 »