初次接触WinDriver

来源:互联网 发布:和平高清网络电视 编辑:程序博客网 时间:2024/06/05 00:31

今天,第一次应用WinDriver,用来写PCIE驱动。

为了以后对PCIE测试和调试方便,需要对WinDriver生成的源程序进行改动。

主要是生成一个调试窗口。而WinDriver用的是的C语言printf语句来提示后续操作。是个CMD下出现的窗口。


查看资料,了解C语言不能直接使用DLG。我使用WinApi,来完成驱动测试的界面化工程。


碰到以下几个问题:

1.WinDriver的C语言入口函数:main()

我将其改为int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)

出现无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用错误

我的平台:VS2005需要对工程属性改动。

a.C/C++下的预处理中的预处理定义中的_CONSOLE改为_WINDOWS


b.链接器下的系统中的子系统:将CONSOLE改为WINDOWS


编译通过。OK

2.生成窗口

加入的代码

static char szAppName[] = "Bezier" ;
     HWND        hwnd ;
     MSG         msg ;
     WNDCLASSEX  wndclass ;


     wndclass.cbSize        = sizeof (wndclass) ;
     wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
     wndclass.lpfnWndProc   = WndProc ;
     wndclass.cbClsExtra    = 0 ;
     wndclass.cbWndExtra    = 0 ;
     wndclass.hInstance     = hInstance ;
     wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
     wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
     wndclass.lpszMenuName  = NULL ;
     wndclass.lpszClassName = szAppName ;
     wndclass.hIconSm       = LoadIcon (NULL, IDI_APPLICATION) ;


     RegisterClassEx (&wndclass) ;


     hwnd = CreateWindow (szAppName, "Bezier Splines",
                          WS_OVERLAPPEDWINDOW,
                          CW_USEDEFAULT, CW_USEDEFAULT,
                          CW_USEDEFAULT, CW_USEDEFAULT,
                          NULL, NULL, hInstance, NULL) ;


     ShowWindow (hwnd, SW_SHOWNORMAL) ;
     UpdateWindow (hwnd) ;

先这么做,后面在调整。

原创粉丝点击