NTFS SCB 结构(2009-09-02 17:21)
typedef struct _EX_PUSH_LOCK
{
union
{
ULONG
Locked: 1;
ULONG
Waiting: 1;
ULONG
Waking: 1;
ULONG
MultipleShared: 1;
ULONG
Shared: 28;
ULONG
Value;
PVOID
Ptr;
};
} EX_PUSH_LOCK, *PEX_PUSH_LOCK;
typedef struct _FSRTL_COMMON_FCB_HEADER {
CSHORT
NodeTypeCode;
0
CSHORT NodeByteSize;&nbs
WriteBuff =
FltAllocatePoolAlignedWithTag(Data->Iopb->TargetInstance,
PagedPool, PAGE_SIZE, 'abcd');
if (WriteBuff != NULL)
{
RtlFillMemory(WriteBuff,
PAGE_SIZE, 0xFF);
ByteOffset.QuadPart =
0;
while
(ByteOffset.QuadPart < FileSize.QuadPart)
{
Size.QuadPart = (FileSize.QuadPart - ByteOffset.QuadPart) >
PAGE_SIZE ?
PAGE_SIZE : (FileSize.QuadPart - ByteOffset.QuadPart);
&
S3C44B0时钟频率计算公式(2008-12-16 15:27)
S3C44B0的系统时钟设置公式
Fpllo 为系统的主频,此处为60MHz
Fin 为晶振的频率,此处为10MHz 一. 通过PLL输出时钟脉冲频率的计算:
a) Fpllo = (m ×
Fin)/ (p × 2^s)
b) m = (MDIV + 8) , p = (PDIV + 2), s = SDIV
c) 20MHz < Fpllo < 66MHz
d) Fpllo * 2^s < 170MHz (s应该尽可能的大)
e) 1MHz <= Fin/p < 2MHz (最好是Fin/p = 1MHz)
f) 如果
|
我用C语言描述女人(2008-12-08 00:31)
有的女人就像Windows 虽然很优秀,但是安全隐患太大
有的女人就像UNIX 她条件很好,然而不是谁都能玩的起
有的女人就像C# 长的很漂亮,但是家务活不行。
有的女人就像C++,她会默默的为你做很多的事情。
有的女人就像JAVA,只需一点付出她就会为你到处服务。
有的女人就像JAVA script,虽然对她处处小心但最终还是没有结果。
有的女人就像汇编 虽然很麻烦,但是有的时候还得求它。
有的女人就像 SQL,她会为你的发展带来莫大的帮助。
爱情就是死循环,一旦执行就陷进去了。
爱上一个人,就是内存泄露,你永远释放不了。
真正爱上一个人的时候,那就是常量限定,永远不会改变
女朋友就是私有变量,只有我这个类才能调用。
情人就是指针用的时候一定要注意,要不然就带来巨大灾难
请不要做浮躁的嵌入式工程师(2008-12-08 00:30)
1.
不要看到别人的回复,第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。
2.
初学者请不要看太多的书那会误人子弟的。先找一本好书系统的学习。很多人用了很久都是只对部分功能熟悉而已,不系统还是不够的。
3.
看帮助。不要因为很难,而自己又是初学者所以就不看;帮助永远是最好的参考手册,虽然帮助的文字有时候很难看懂,或不够直观。
4. 不要被一些专用词汇所迷惑;最根本的是先了解最基础知识。
5. 不要放过任何一个看上去很简单的小问题--他们往往并不那么简单,或者可以引伸出很多知识点;不会举一反三你就永远学不会。
6. 知道一点东西,并不能说明你会用,会用是需要实践经验和时间积累的。
7. 入门并不难,难的是长期坚持实践和不遗余力的学习和实践。
8. 看再多的书是学不会用的,要多实践,多动手。
9. 把时髦的技术挂在嘴边,还不如把基本的技术记在心里。
10.在任何时刻都不要认为自己手中的书已经足够了。
11.看得懂的书,请仔
请不要做浮躁的人(2008-12-05 19:39)
现在大多数计算机专业的学生对本专业的发展及前景一无所知,每天都是看小说、玩游戏、看电影、打牌、喝酒、睡觉等等很有'前途'的事情。偶尔看见一两个同学看看与计算机专业有关的书,跑去拿来一看,全是什么'游戏攻略'、'黑客秘技'等此类书籍。还有的人连C语言和C++谁是谁都还没搞清楚,就拿本VC的书'刻苦钻研',真不知他们看懂了没有。好多学生都买了电脑,但用处都是游戏机+碟机+音响,每天都在用电脑玩着各种流行的游戏、看着最新的大片、听着时尚的音乐,就是不用电脑学习。有的学生甚至问我电脑除了玩游戏还能干什么,我问他你为什么这么问,他告诉我他觉得电脑只能用来玩游戏,不知道还能不能干干别的什么。据我了解,近几年在国内好几所高校的计算机专业的毕业生的毕业设计竟然是做网页,在大学了几年,学完了《数据结构》、《软件工程》、《C语言》等专业课后,竟然交了一个没有学过计算机的人自学一两天就能做好的东西!
如果你是那种受父母之命来学计算机的学生,如果你看了《计算机应用文摘》第15期的《写给想当程序员的朋友》一文后,
什么是socket(2008-12-05 18:44)
本文所谈到的Socket函数如果没有特别说明,都是指的Windows Socket API。
一、WSAStartup函数
int WSAStartup(
WORD wVersionRequested,
LPWSADATA lpWSAData
);
使用Socket的程序在使用Socket之前必须调用WSAStartup函数。该函数的第一个参数指明程序请求使用的Socket版本,其中高位字节指明副版本、低位字节指明主版本;操作系统利用第二个参数返回请求的Socket的版本信息。当一个应用程序调用WSAStartup函数时,操作系统根据请求的Socket版本来搜索相应的Socket库,然后绑定找到的Socket库到该应用程序中。以后应用程序就可以调用所请求的Socket库中的其它Socket函数了。该函数执行成功后返回0。
例:假如一个程序要使用2.1版本的Socket,那么程序代码如下
wVersionRequested = MAKEWORD( 2, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
二、WSACleanup函数
int WSACleanup (void);
应用程序在完成对请求的Socket库的使用后,要调用WSACleanup函数来解除与Socket库的绑定并且释放Socket库所占用的系统资源。
三、socket函数
SOCKET sock
进制转换方法汇总(2008-08-27 17:31)
计算机中常用的数的进制主要有:二进制、八进制、十六进制,学习计算机要对其有所了解。 2进制,用两个阿拉伯数字:0、1;
8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7; 10进制,用十个阿拉伯数字:0到9;
16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。字母不区分大小写。
以下简介各种进制之间的转换方法: 一、二进制转换十进制 例:二进制 “1101100” 1101100 ←二进制数 6543210
←排位方法 例如二进制换算十进制的算法: 1*26 + 1*25 + 0*24 + 1*23 + 1* 22 + 0*21 +
0*20 ↑ ↑ 说明:2代表进制,后面的数是次方(从右往左数,以0开始) =64+32+0+8+4+0+0 =108
二、二进制换算八进制 例:二进制的“10110111011” 换八进制时,从右到左,三位一组,不够补0,即成了: 010 110
111 011 然后每组中的3个数分别对应4、2、1的状态,然后将为状态为1的相加,如: 010 = 2 110 = 4+2 = 6
111 = 4+2+1 = 7 011 = 2+1 = 3 结果为:2673 三、二进制转换十六进制
十六进制换二进制的方法也类似,只要每组4位,分别对应8、4、2、1就行了,如分解为: 0101 1011 1011 运算为: 0101
= 4+1 = 5 1011
利用Winsock控件实现FTP编程(2008-08-22 15:00)
郭金兴
(广梅汕铁路有限责任公司信息中心梅州电算站)
发表于《铁路计算机应用》2004年
第03期
摘要:阐述了FTP基本原理,以VB和MS
Winsock控件为工具,举例说明了FTP客户端编程的一般方法。
关键词: FTP;MS Winsock控件;客户端;编程
Implement FTP Programming With Winsock Control
GUO Jinxing
(Information Center of Guang Mei
Shan Railway Company Limited)
通用循环缓冲区类(c++版)(2008-07-16 21:12)
// 声明
class CCycleBuffer
{
public:
BOOL isFull();
BOOL isEmpty();
void Empty();
int GetLength();
CCycleBuffer(int size);
virtual ~CCycleBuffer();
int Write(char* buf, int count);
int Read(char* buf, int count);
private:
BOOL m_bEmpty, m_bFull;
char * m_pBuf;
int m_nBufSize;
int m_nReadPos;
int m_nWritePos;
};
// 定义
CCycleBuffer::CCycleBuffer(int size)
{
m_nBufSize = size;
m_nReadPos = 0;
m_nWritePos = 0;
m_pBuf = new char[m_nBufSize];
m_bEmpty = TRUE;
m_bFull = FALSE;
}
CCycleBuffer::~CCycleBuffer()
{
delete[] m_pBuf;
}
int CCycleBuffer::Write(char* buf, int count)
{
if(count <= 0) return 0;
m_bEm