自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (19)
  • 收藏
  • 关注

原创 IDispatch接口 - 跨语言调用

当一个COM接口支持IDispatch的时候(Dual接口),它就可以被其他语言调用。这里我用perl试了一下。perl测试代码use warnings;use strict;use Win32::OLE;use constant ADS_UF_ACCOUNTDISABLE => 2;use constant ADS_SCOPE_SUBTREE => 2;my $MyCo

2014-09-24 12:08:10 1626

原创 IDispatch接口 - Dual和Custom

当用ATL向导来创建一个接口的时候,向导会让我们选择Dual或者Custom.那么它们到底有什么分别呢?Dual鼠标移上去,其实是有个说明的。下面的截图没有显示后面的一些文字,实际意思是说这个接口同时支持IDispatch方式和vtable方式,这大概也就是双接口(Dual)名字的来源。vtable调用方式,指的是直接通过接口指针的虚函数表。比如CComPtr spCar;

2014-09-24 11:59:35 2073 1

原创 IDispatch接口 - CComDispatchDriver智能指针

前面一篇文章讲述了怎么样通过GetIDsOfNames和Invoke来调用一个支持Idispach的COM组件。

2014-09-23 17:04:57 2929

转载 有趣的阿里巴巴软件

这个问题曾经也http://www.csdn.net/article/2014-09-16/2821705

2014-09-23 12:37:44 885 1

原创 IDispatch接口 - GetIDsOfNames和Invoke

IDispatch接口是COM自动化的核心。其实,IDispatch这个接口本身也很简单,只有4个方法: IDispatch : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount( /* [out] */ __RPC__out

2014-09-23 10:58:15 15214

原创 Windows Minifilter驱动 - 获取进程ID, 进程名字和线程ID (5)

在minifilter里面可能有好几种获取调用进程id,名字和线程的办法。我这里有一种:使用PsSetCreateProcessNotifyRoutine 和PsSetLoadImageNotifyRoutine这是两个API,我们可以借助它们获取进程信息。具体看:http://msdn.microsoft.com/en-us/library/windows/hardware/

2014-09-22 14:43:20 8434 3

原创 虚拟内存(VirtualAlloc),堆(HeapAlloc/malloc/new)和Memory Mapped File

内存管理有三种方式:1. 虚拟内存,VirtualAlloc之类的函数2. 堆,Heapxxx函数,malloc,new等3. 内存映射文件,Memory Mapped File很多人都会困惑,但是看下面的图片就会比较明白了。这个图片从MSDN上拷来。堆和虚拟内存,从上面的图片就可以看出,其实所谓的堆,也就是在虚拟内存上抽象出来的。如果直接用Virtualxxx系列函数,是

2014-09-19 16:44:38 8071 6

转载 虚拟内存官方资料MSDN

仔细阅读,http://msdn.microsoft.com/en-us/library/ms810627.aspx

2014-09-19 16:17:49 1059

转载 IRP_PAGING_IO的一些说明

http://laokaddk.blog.51cto.com/368606/73746

2014-09-19 15:21:45 2369

转载 TCP/IP 协议图解

TCP/IP 协议图解,这个文章不错http://www.cricode.com/3568.html

2014-09-19 10:08:37 1444

原创 Windows Minifilter驱动 - 调式 (4)

写任何程序动态调试是非常重要的。驱动开发也不例外。通常现在写驱动的时候,都是在VM上跑的,调试手段基本也是本地windbg + 虚拟机。虚拟机配置我用的是win7,第一步,看下面。成功执行后,会提示:The entry was successfully copied to {xxxxxxxxxxxxxxxxxxx}第二步:输入bcdedit /dbgsettin

2014-09-18 18:25:52 2794

原创 Windows Minifilter驱动 - DriverEntry (3)

驱动里面的DriverEntry就相当于main()或者DllMain()函数,这是个入口点。当驱动被加载的时候,

2014-09-18 11:26:50 3220

原创 Windows Minifilter驱动 - 加载顺序 (2)

安装minifilter后,可以在注册表看到一些

2014-09-17 18:18:22 6934

原创 Windows MiniFilter驱动 - Sample(1)

VS2013里面有向导可以直接创建一个

2014-09-17 17:12:26 9784 7

原创 再议访问者模式 - Visitor vs Acyclic Visitor

传统访问者模式 VS 无环访问者模式 (ACyclic Visitor)

2014-09-16 15:23:43 2721

原创 再议工厂模式(Abstract Factory)和DIP的关系

大多数人说的工厂模式,应该是指GOF设计模式里面的Abstract Factory模式。这是一种hen

2014-09-16 12:09:55 1800 2

原创 COM 初始化

COM 初始化,说简单很简单,说复杂,有些时候还真不简单。首先,CoInitialize(NULL)和CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);是一样的。我们尽可能使用CoInitializeEx来初始化COM比较好。STA套间调用CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);,

2014-09-15 17:23:54 5218

原创 Active Object模式

ActiveObject模式,很古老,但是在某些场合又很有威力。可以用一个单线程来控制多任务。通常配合Command模式使用。

2014-09-15 14:32:33 4287 1

原创 COM线程模型 - COM服务端(STA组件)创建线程

当我们在COM组件内部创建线程的时候,又是怎么样的一种情况呢?这里,我们需要分

2014-09-15 11:54:35 1885

原创 Singleton VS Monostate

singleton,单例模式,这是非常常用的一种模式,相信大多数人都知道。

2014-09-11 22:55:09 1090

原创 NULL Object模式

NULL Object,这是个很简单又很有趣的模式。

2014-09-11 10:20:41 1187

原创 Abstract Server模式

Abstract Server是一个很简单的模式,很多时候大家都在用,只是没有去总结。Uncle Bob提出了这个概念(见Agile Software Development)。Abstract Server相关的一些概念还是很重要的,也很有启发。通常,Abstract Server就直接体现了DIP(依赖倒置)。DIP是一个很重要的概念。往往遵守DIP原则的代码灵活性会更好。

2014-09-10 18:46:10 1766

原创 COM连接点 - CComDynamicUnkArray::Add问题(5)

无意中,发现一个有趣的问题

2014-09-10 11:26:55 1560

原创 COM连接点 - IDL里面一定需要增加新的事件吗? (4)

当我们想要给连接点增加一个新的

2014-09-05 14:39:24 1510

原创 COM连接点 - 一个COM接口实现多个连接点(3)

之前讲到一个COM接口可以实现多个连接点。我们就来写个例子。其实,我还真不知道怎么用ATL

2014-09-05 14:26:33 2465

原创 COM连接点 - 基本原理(2)

这次我们来看一下连接点的基本工作y

2014-09-05 13:53:53 4020

原创 COM连接点 - 最简单的例子 (1)

先创建一个COM接口,IMyCar

2014-09-04 22:11:27 10438 5

原创 COM线程模型 - MTA接口 (运行线程)

一个STA对象只能属于一个STA套间,那么一个STA对象一定是在一个线程里面运行的。

2014-09-04 15:55:26 1869 2

原创 COM线程模型 - MTA接口 (STA套间调用MTA对象)

http://support.microsoft.com/kb/150777

2014-09-04 15:42:38 3394

COM 连接点简单例子

一个简单的连接点例子,包括一个客户程序和一个COM组件。

2014-09-05

MTA客户跨线程调用STA对象

一个简单例子,MTA客户跨线程调用STA对象,直接传递COM对象。

2014-08-26

STA客户跨线程调用STA对象

STA客户跨线程调用STA对象,使用了marshal,消息循环。

2014-08-25

STA组件简单调用(MTA客户,STA客户)

实现了一个STA组件, 然后里面有STA客户调用和MTA客户调用。

2014-08-25

OSX服务端+iphone客户端 网络通信小程序

基于OS X的一个CFNETWORK写的服务端 iphone上的一个客户端,NSStream写的。 实现了基本通信和客户端切到后台后继续保持连接。

2013-05-16

OS X网络程序简单例子

用CFNETWORK和NSStream写的一个简单通信例子,包括服务端和客户端。 用的xcode。

2013-05-16

C# 处理xml

写了几行C#处理xml的代码。非常简单的几行代码。

2013-03-01

封装了一个带上下刷新功能的table(UITableView子类)

封装了一个带上下刷新功能的table(UITableView子类)。 这样在想使用刷新功能的地方,只要使用这个类替换标准UITableView就可以了。

2012-12-28

IOS开发 Table上下拉动刷新(表头下拉,表尾上拉)

在别人的基础上修改的,在一个class里面支持表头下拉刷新,表尾上拉刷新。

2012-12-28

ios自定义table例子

一个简单的自定义table例子。自定义cell,里面可以随意画自己想要的东西。

2012-12-27

WDM驱动-完成例程

wdm驱动,完成例程的一个例子。包含3部分: 1. 目录1是一个功能驱动, 2. 目录2是一个过滤驱动,附在#1上面, 3. 另外还有一个测试代码。 直接跑测试代码,就可以看到完成例程的效果。

2012-12-21

wdm驱动-过滤驱动

wdm驱动,包括功能驱动和附在它上面的过滤驱动(上层过滤驱动)。一个很简单的例子。

2012-12-19

WDM驱动多个设备对象

WDM驱动,AddDevice里面多次调用IoCreateDevice创建多个设备对象。遍历整个设备链。

2012-12-14

WDM驱动取消例程

StartIo例程的基本例子,包括如何取消irp

2012-12-13

WDM驱动StartIo例程

用WDM实现的StartIo例子。将多个线程创建的IRP串行化处理。

2012-12-12

异步IRP例子

一个WDM驱动,使用异步IRP。caller通过异步方式打开驱动设备,然后使用WaitForSingleObject查看驱动是否已经完成请求。

2012-11-26

使用DeviceIoControl进行通信(直接方式)

一个WDM驱动,然后caller使用DeviceIoControl进行和驱动的通信。输出buffer使用METHOD_IN_DIRECT进行数据传输。

2012-11-23

缓冲区方式WDM驱动例子

使用缓冲区方式(DO_BUFFERED_IO)进行用户模式和内核模式地址的数据交互。包括驱动程序和用户模式的测试程序。用DDK编译驱动,VS2008编译测试程序。

2012-11-22

一个简单的WDM驱动例子

一个简单的WDM驱动例子,包括驱动和用户模式的调用测试。(例子来自于《windows驱动开发技术详解》,只是稍微做了一些改变)

2012-11-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除