- 博客(17)
- 资源 (1)
- 收藏
- 关注
原创 cimagelist 设置 没有艺术细胞
m_imglist.Create(15, 21, ILC_MASK|ILC_COLOR32,1,5);//创建位图链 每个位图15像素 CBitmap bm; bm.LoadBitmap(IDB_NUM); m_imglist.Add(&bm,RGB(0,0,0)); CDC * pDC = m_bmp.GetDC(); /* m_im
2007-12-18 19:45:00 712
原创 app-drive传递字符串
outc=(CHAR *)pIrp->AssociatedIrp.SystemBuffer; strncpy(outc,"我爱你",sizeof("我爱你")); pIrp->IoStatus.Information=sizeof(
2007-12-17 20:50:00 668
转载 BDA驱动学习笔记(6):错误处理,内存管理以及字符串
错误处理:错误处理分为状态代码返回,异常处理和bug check三种,第三种(bug check)也就是我们在98系统里经常见到的蓝屏,nt系统里不常见但也会发生,真是很让人讨厌。不过万一驱动代码执行过程中发现了及其严重的错误,那么给个蓝屏应该是最好的选择,因为既然是“及其严重”的错误,继续执行下去操作系统会被搞坏。状态代码NTSTATUS是一个32位的整数,表征代码执行成功与否,它的结构如下
2007-12-17 13:50:00 1029
原创 App- drive通讯
上层和驱动通信用DeviceIoControl函数,这是一个Win32 API,在SDK中定义。这个函数都会产生一个IRP_MJ_DEVICE_CONTROL包,如果驱动中注册过相应的例程,那么这个包就会引发该例程的工作。如果是驱动和驱动间的通信,那么用IoBuildDeviceControlRequest函数,该函数在DDK中定义,会产生一个IRP_INTERNAL_DEVICE_CONTROL
2007-12-17 13:17:00 1046
原创 解决Windows 程序界面闪烁问题的一些经验
解决Windows 程序界面闪烁问题的一些经验一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁。先来谈谈闪烁产生的原因原因一:如果熟悉显卡原理的话,调用GDI函数向屏幕输出的时候并不是立刻就显示在屏幕上只是写到了显存里,而显卡每隔一段时间把显存的内容输出到屏幕上,这就是刷新周期。一般显卡的刷新周期是 1/80秒左右,具体数字可以自
2007-12-11 13:18:00 683
原创 同步 线程 事件
1. VOID KeInitializeEvent(IN PRKEVENT Event, IN EVENT_TYPE Type, IN BOOLEAN State);Type : 事件类型,可以是 NotificationEvent 和 而SynchronizationEvent. NotificationEvent 等待一个IO操作完成.当一个NotificationEvent
2007-12-10 08:40:00 2933
原创 函数......ObReferenceObjectByHandle
ObReferenceObjectByHandle函数来获得这个Handle对应的FileObject。我们只能给FileObject发送IRP。 stat=ObReferenceObjectByHandle(handle,GENERIC_READ,*IoFileObjectType,KernelMode,(PVOID*)&fileob,0);ObReferenceObjectByHandle(
2007-12-10 08:33:00 6174 1
原创 驱动的一些基本函数
RtlInitUnicodeString函数的作用是计算Unicode字符串的大小并且填充UNICODE_STRING结构,一般来说, Unicode字符串都是在代码中静态定义的,并且在运行中保持不变,所以在链接的时候就把UNICODE_STRING结构给填好是完全可能的并且是很 容易的,这样更容易理解、 更节省空间(省去8字节的UNICODE_STRING结构、最多3字节的对齐空间以及至少14字
2007-12-10 08:06:00 2390
原创 select深入一点了
WSAEWOULDBLOCK 操作没有完成 正在执行中。。。。。。。。待FD_CONNECT消息nRead == SOCKET_ERROR || nRead == 0 getlasterr ==WSAEWOULDBLOCK 否则都是为断开异步recv每次 接受的 字符不一定。 有可能比较少。。。没接受全 FD_ZERO(wfds);清除状态 FD_SET(sock, wfds);设置关联FD
2007-12-08 22:02:00 699
转载 套接字模式:锁定、非锁定2
套接字模式:锁定、非锁定套接字I/O模型: select(选择)WSAAsyncSelect(异步选择)WSAEventSelect(事件选择)Overlapped I/O(重叠式I / O)Completion port(完成端口) 一、 简介 套接字模型的出现,是为了解决套接字模式存在的某些限制。所有Wi n d o w s平台都支持套接字以锁定或非锁定方式工作。然而,并非每种平
2007-12-08 01:11:00 2020
转载 Winsock异步模型之二(WSAEventSelect)
目录: 一、WinSock I/O模型分析 1.WSAAsuncSelect模型 2.WSAEventSelect模型 3.重叠(Overlapped)I/O模型 二、聊天软件的设计与分析 1.程序功能 2.程序设计 3.实现是的关键点 三、体会 四、源代码一、WinSock I/O模型分析Winsock提供了五种套接字I/O模型来解决这些问题.他们分别是select(选择),WSAAsy
2007-12-08 00:30:00 4520
原创 套接字模式:锁定、非锁定a
套接字模式:锁定、非锁定套接字I/O模型: select(选择)WSAAsyncSelect(异步选择)WSAEventSelect(事件选择)Overlapped I/O(重叠式I / O)Completion port(完成端口) 一、 简介 套接字模型的出现,是为了解决套接字模式存在的某些限制。所有Wi n d o w s平台都支持套接字以锁定或非锁定方式工作。然而,并非
2007-12-08 00:19:00 1335
原创 释放资源
HRSRC res = FindResource(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_JIF1),_T("jif")); HGLOBAL gl=LoadResource(NULL,res); LPVOID lp=LockResource(gl); CString strFileName(_T("d:/
2007-12-05 17:14:00 919 1
原创 立即退出当前进程
PostQuitMessage(0); AfxGetMainWnd()->SendMessage(WM_CLOSE);::DestroyWindow(hwnd)//hwnd就是你所想要关闭的项目的主窗体的句柄_exit(1); is also ok!
2007-12-05 11:47:00 861
原创 socket的延时技巧
TCP/IP Winsock编程要点 蒋勇 2002.5.23 利用Winsock编程由同步和异步方式,同步方式逻辑清晰,编程专注于应用,在抢先式的多任务操作系统中(WinNt、Win2K)采用多线程方式效率基本达到异步方式的水平,应此以下为同步方式编程要点。
2007-12-05 11:41:00 9022
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人