Windows
文章平均质量分 53
someonea
路人客燕北,无人知其名。
展开
-
尽量不要使用文本模式
尽量不要使用文本模式读取文件 当我们使用C的库函数读取文件时,会有文本模式和二进制模式两种读取模式。一些传输数据的协议比如TFTP、FTP也有文本和二进制模式的区分。既可以使用文本模式也可以使用二进制模式时,尽量使用二进制模式。 文本模式和二进制模式读取文件时,差别主要是在回车换行的处理上,不同系统对回车换行的处理不一致。 CR: Carri原创 2008-03-09 21:36:00 · 1625 阅读 · 0 评论 -
VC2008开发的程序的部署
VC2008程序部署:使用私有的CRT库使用私有CRT库是指不使用%windir%/WinSxS目录下面的共享CRT库,使用程序所在目录的CRT库文件。 从%VSINSTALLDIR%/VC/redist/x86/Microsoft.VC90.CRT/(%VSINSTALLDIR%是VC2008的安装目录)目录下面拷贝msvcr90.dll、msvcp90.dll、msvcm90.dl原创 2010-03-07 19:49:00 · 1229 阅读 · 1 评论 -
关于代码优化
Optimizing == important. But often: Readable code == more important Learn what your compiler does,Then let the compiler do it. If you do an optimization, test it on real world data.If原创 2010-03-13 16:30:00 · 699 阅读 · 0 评论 -
Windows驱动中判断Session是否是远程Session
Windows驱动中判断Session是否是远程Session 用户态调用GetSystemMetrics(SM_REMOTESESSION)就可以知道当前是否处于远程桌面环境。 内核态没有类似的函数,就需要通过其它的方法判断了。 首先使用PsGetThreadSessionId,或者PsGetProcessSessionId,或者SeQuerySessi原创 2010-05-15 15:08:00 · 3358 阅读 · 0 评论 -
RDP and ICA ppt
<br />两个不错的文档,介绍RDP和ICA的。<br />User Mode Internals of ICA Session Initialization<br />http://www.pubforum.info/welcome/Portals/0/PubForums/DUB08/PPT/Citrix_Session_Init_PubForum_Latest.ppt<br /> <br /> <br />WS2008 Terminal Services and XenApp Internals<br原创 2010-05-31 20:35:00 · 1250 阅读 · 0 评论 -
IOCP和SetFileCompletionNotificationModes
<br /> <br />在WinSock的IOCP模式中,调用WSASend/WSARecv/WSASendTo/WSARecvFrom等函数发送接受数据。调用WSAxxx函数发送或者接受数据时,如果函数返回了0,表示操作已经立即完成了。但是一般不会在这时进行完成操作的处理,因为Socket已经和完成端口绑定,某个调用GetQueuedCompletionStatus/GetQueuedCompletionStatusEx函数的线程一定会得到这个完成通知;此时处理了,下次得到通知时还需要把它和其它正常的通原创 2010-07-25 15:40:00 · 2498 阅读 · 0 评论 -
是时候停止使用MSJVM了
<br /> <br />最近遇到一个客户问题,某些使用Windows XP用户使用Java Apple插件时IE8会崩溃。分析了一下堆栈,原来是msjava.dll导致的。Msjava.dll是微软的Java虚拟机,一个古老的东西,在新的系统(Windows 7、Vista)上已经见不到了。在IE中禁用微软的Java虚拟机,使用Sun的虚拟机,问题解决。<br /> <br />微软主页介绍了微软Java虚拟机的支持情况:<br />中文URL:http://www.microsoft.com/china原创 2010-06-16 16:00:00 · 1880 阅读 · 1 评论 -
把Windows XP打造成终端服务器
<br /> Windows2008用作终端服务器非常不错,不但远程管理起来方便,还支持RemoteApp。有了RemoteApp,可以减少Windows用户Session的消耗,提高服务器的性能,不必像Windows2003那样一个启动一个远程程序就耗费一个Session。可惜某些老旧的程序或者写的不好的程序不能在Windows2008上运行,如果把这些程序部署到Windows2003上,就不能使用RemoteApp。<br /> <br /> Windows2003不支持Re原创 2010-06-19 12:17:00 · 9014 阅读 · 13 评论 -
本地透明代理的实现
本地透明代理的实现 Windows下实现本地透明代理可以通过一个过滤驱动和代理进程实现。 过滤驱动Attach到“//Device//Tcp”和"//Device//Udp",然后在Dispatch函数中修改 连接的目的地址并保存原始目的地址和源地址。 上层的代理进程在accept到连接时,向过滤驱动查询连接的原始目的地址, 然后向原始目的地址发起连接。 Linux下面使用netfilter(iptables)可以很容易的实现一个TCP透明代理, 使用iptables的REDIRECT选项无需编写内核模块原创 2010-09-05 19:56:00 · 7992 阅读 · 2 评论 -
How WinSock works
How WinSock works (from osronline)WinSock is the flexible polymorphic implementation of Berkeley sockets API,which is implemented in both user and kernel mode, and which has the additionof MS-spe转载 2010-03-07 17:35:00 · 814 阅读 · 0 评论 -
微软的内核态/用户态API监控工具KAPIMON
KAPIMON kernel & user mode APIs monitoring tool, 有空可以试试。原创 2010-02-27 16:52:00 · 1303 阅读 · 0 评论 -
Citrix and Microsoft (1989-1998)
Citrix 和MS一段历史(转自http://citrixblogger.org/2006/10/15/citrix-and-microsoft-1989-1998/)。Citrix and Microsoft (1989-1998)There is a long term relationship between Citrix and Microsoft. It started in转载 2010-02-27 14:40:00 · 741 阅读 · 0 评论 -
VC6的一个bug???
前几天测试程序的时候发现程序莫名奇妙的死掉,仔细一看原来是指针越界导致的内存访问错误,但是从程序来看并没有越界。 程序代码类似下面的代码:int i=0;for (i=0; i{//访问Array[i]} //注释for (i=0; i{//访问Array[i]} 于是F5调试模式下运行,发现原来是第一个循环结束后,没有原创 2008-03-15 22:04:00 · 1474 阅读 · 2 评论 -
VC6调试版本C运行库内存申请的一个bug
VC调试版本C运行库内存申请的一个bug 遇到过一个通信方面的软件,需要长期运行,做压力测试时,高负荷连续运行一定天数时必定崩溃,而且都是在msvcrtd.dll中崩溃。负责维护的人百思不得其解,就去问微软的人,结果微软的人说这是VC6带的msvcrtd.dll的一个问题,VC2005已经没有这个问题了,请升级到新的版本。这个软件规模比较大,依赖于很多库,后台都是用VC6编译的调试版原创 2008-03-29 21:06:00 · 4650 阅读 · 11 评论 -
使用lua编写Wireshark(Ethereal)的dissector插件
使用lua编写Wireshark(Ethereal)的dissector插件 dissector插件可以用来对特定的协议内容进行分析展示,在分析自己实现的应用层协议时还是很有用的。dissector插件一般用C来实现,具体如何实现可以参考Wireshark代码目录下面的/epan/dissectors中的源代码和plugins目录下面的源代码。 一些简单的对性能要求不高的dissect原创 2008-04-27 22:30:00 · 3866 阅读 · 0 评论 -
Windows下对本地网络通信进行抓包
Windows下对本地网络通信进行抓包 Windows下传统的抓包工具如Wireshark/Ethereal不能对本地程序之间的网络通信抓包,一些商业抓包工具使用Winsock LSP (Layered Service Provider)技术实现了本地程序之间的网络通信抓包。如果即想要对本地通信进行抓包又要使用Wireshark/Ethereal就要费一番周折了。http://wiki原创 2008-05-05 19:49:00 · 19642 阅读 · 2 评论 -
一个非常有用的windbg命令.cmdtree
Roberto Farah 介绍了一个非常有用的windbg命令.cmdtree,请参考他的原文Special Command—Execute Commands from a Customized User Interface with .cmdtree。我们可以把一些常用的命令以特定的格式写到一个文本文件中,比如cmds.txt,然后通过.cmdtree cmds.txt命令加载,一原创 2008-09-24 20:59:00 · 2481 阅读 · 0 评论 -
程序同时使用微软的多个C运行库的风险
同时使用微软的多个C运行库的风险 Microsoft的Visual C++是Windows下使用最广的编译器,历史悠久,目前的最新版本是VC2008。VC有多个版本,每个版本都附带一个C运行库。从VC6开始附带的运行库如下: VC6 msvcrt.dll VC7(VC 2002)原创 2008-10-25 16:39:00 · 2901 阅读 · 0 评论 -
Switch to Session 0 in Vista/windows 2008
Vista下切换到Session 0的方法:启动ui0detect服务: net start ui0detect然后可以通过ui0detect提供的界面切换到session 0,也可以通过下面的命令在session 0和当前session之间切换。切换到session 0: rundll32 winsta.dll WinStationSwitchToServicesSession切换原创 2009-04-30 09:31:00 · 2480 阅读 · 0 评论 -
CreateIpForwardEntry函数在VIsta/win2008下需要注意的一个地方
On Windows Vista and Windows Server 2008, the route metric specified in the dwForwardMetric1 member of the MIB_IPFORWARDROW structure pointed to by pRoute parameter represents a combination of the rou原创 2009-04-30 22:42:00 · 2341 阅读 · 0 评论 -
通过批处理实现自删除程序的小改进
通过批处理实现自删除程序的小改进 网上关于如何实现自删除程序的文章很多。有通过汇编实现的,有通过脚本实现的,有通过批处理实现的,有通过文件的FILE_FLAG_DELETE_ON_CLOSE标志实现的,还有通过远程线程实现的,总之方法很多。 脚本实现的方法,由于某些机器的Windows Script Host有问题,并不可靠。汇编实现的方法,某些时候不能删除程序。通过FILE_原创 2009-05-23 16:59:00 · 1234 阅读 · 0 评论 -
DllMain, 实现之前先看清楚文档
<br />DllMain, 实现之前先看清楚文档<br /> <br />微软文档的质量是很不错的,需要强调的地方基本上都写的很清楚。可是总有一些人写代码不仔细看文档,埋了许多地雷自己都不知道。<br /> <br /> DllMain函数和其他函数实现起来相比,有许多需要注意的地方,MSDN中说的很清楚。<br /> DllMain Callback Function介绍的Remarks部分:<br /> http://msdn.microsoft.com原创 2010-11-10 21:14:00 · 1268 阅读 · 0 评论