今天,第一次应用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) ;
先这么做,后面在调整。