阅读:1659回复:7
请问列位高手:如何在WIN2000驱动程序中显示(弹出)对话框?
请问:如何在WIN2000驱动程序中显示(弹出)对话框?
|
|
沙发#
发布于:2003-06-22 00:13
非正式对
|
|
板凳#
发布于:2003-07-09 23:43
不知道行不行,虽然,ring3可以采用某种机制跳到ring0去,但如果包含了ui操作,不知道还能不能正常运行
|
|
|
地板#
发布于:2003-07-10 03:30
int _cdecl _vsnprintf(PCHAR, LONG, PCHAR, PULONG);
#pragma warning(disable : 4212) // disable warning about non-standard extension void _cdecl PopupDrvMsgBox(PCHAR format,long args) { UNICODE_STRING uString; ANSI_STRING aString; UCHAR aBuffer[256]; // // sprintf format to an ASCII string for display. // _vsnprintf( aBuffer, 256, format, &args); // // Now convert from ASCII to Unicode. // RtlInitAnsiString( &aString, aBuffer); if (STATUS_SUCCESS!=RtlAnsiStringToUnicodeString( &uString, &aString, TRUE)) return; // Post a GUI pop-up message box with the string. // NOTE: STATUS_SERVICE_NOTIFICATION stopped working after Service Pack 3. IoRaiseInformationalHardError( STATUS_FATAL_APP_EXIT, &uString, NULL); // IoRaiseInformationalHardError( 1, &uString, NULL); RtlFreeUnicodeString( &uString); } 这样就可用了 PopupDrvMsgBox(\" KeSetEvent status is %X \\n\",status); |
|
地下室#
发布于:2003-07-10 14:59
楼上,那可是产生硬件错误,恐怕不是楼主想要的。 :D
|
|
5楼#
发布于:2003-07-17 21:49
根据msdn在线所述,IoRaiseInformationalHardError的行为不是程序员所想象的那样。
症状如下: IoRaiseInformationalHardError原型为: VOID IoRaiseInformationalHardError( IN NTSTATUS ErrorStatus, IN PUNICODE_STRING String, /* optional */ IN PKTHREAD Thread /* optional */ ); 此函数的作用是向用户弹出一个消息框,对设备i/o错误发出警告,表明用户i/o请求为何失败。 原因: 许多程序员企图传递一个由驱动程序定义的错误状态,同时/或者在一个弹出式消息框中显示一个程序员希望的字符串。但事实并非如此,该API的实际行为如下: (1)对任何在%DDK%\\inc\\ntstatus.h之外定义的ErrorStatus,弹出式消息框显示的文本为:\"Unknown Hard Error\",无论String参数如何; (2)对任何在ntstatus.h中定义的ErrorStatus,弹出式消息框显示的文本对应于ntstatus.h中的MessageText,无论String参数如何; (3)当Thread参数在某个应用程序的上下文中,弹出式消息框的标题为:\"ApplicationName.exe - System Error.\" (4)当Thread参数为NULL或者在任意system上下文中,弹出式消息框的标题为:\"System Process - System Error,\" 并且MessageText写入事件日志(Event Log)――如果ErrorStatus在ntstatus.h中有定义。 解决办法: 使用Event Log APIs 将驱动程序定义的事件字串通知用户。(参考 section 16.6, Error Logging and NTSTATUS Values, in the Kernel-mode Driver Design Guide, and the sample in %DDK%\\src\\general\\errorlog for more information on this technique. |
|
6楼#
发布于:2003-07-18 01:47
[quote]非正式对
|
|
7楼#
发布于:2003-08-06 20:23
I think so. IOCTL interface
|
|