您的位置:首页 > 其它

驱动开发之六 --- 一个简单的显示驱动之三 【译文】

2012-06-23 00:19 447 查看


驱动开发之六 --- 一个简单的显示驱动之三 【译文】

DrvDisableDriver

当显示驱动卸载时调用这个函数。在这个函数中,你可以执行一些必要的清理工作,清理你在DrvEnableDriver调用中创建的东西。下面的代码来自于例子。

/*********************************************************************

* GdiExample_DrvDisableDriver

*

* This function is used to notify the driver when the driver is

* getting ready to be unloaded.

*

*********************************************************************/

VOID GdiExample_DrvDisableDriver(VOID)

{

/*

* No Clean up To Do

*/

}

DrvGetModes
这个API在驱动被加载和使能后调用。他用来查询设备支持的显示模式。这些显示模式式就是在显示属性对话框的设置栏中的使用的。这些显示模式可以被缓存,所以操作系统不需要考虑它们的变化和改变。操作系统相信它是个静态的列表。尽管这个api可能被以不同方式和不同次数来调用。但在极大程度上,他不应该被认为是动态的。

通常这个api被调用两次,第一次是询问需要多大的空间来存储这些显示模式。第二次是使用正确的尺寸调用。下面的代码片段来自于驱动示例,这个驱动只支持640 * 480 * 32。

/*********************************************************************

* GdiExample_DrvGetModes

*

* This API is used to enumerate display modes.

*

* This driver only supports 640x480x32

*

*********************************************************************/

ULONG GdiExample_DrvGetModes(HANDLE hDriver,

ULONG cjSize, DEVMODEW *pdm)

{

ULONG ulBytesWritten = 0, ulBytesNeeded = sizeof(DEVMODEW);

ULONG ulReturnValue;

ENGDEBUGPRINT(0, "GdiExample_DrvGetModes\r\n", NULL);

if(pdm == NULL)

{

ulReturnValue = ulBytesNeeded;

}

else

{



ulBytesWritten = sizeof(DEVMODEW);

memset(pdm, 0, sizeof(DEVMODEW));

memcpy(pdm->dmDeviceName, DLL_NAME, sizeof(DLL_NAME));

pdm->dmSpecVersion = DM_SPECVERSION;

pdm->dmDriverVersion = DM_SPECVERSION;

pdm->dmDriverExtra = 0;

pdm->dmSize = sizeof(DEVMODEW);

pdm->dmBitsPerPel = 32;

pdm->dmPelsWidth = 640;

pdm->dmPelsHeight = 480;

pdm->dmDisplayFrequency = 75;

pdm->dmDisplayFlags = 0;



pdm->dmPanningWidth = pdm->dmPelsWidth;

pdm->dmPanningHeight = pdm->dmPelsHeight;

pdm->dmFields = DM_BITSPERPEL | DM_PELSWIDTH |

DM_PELSHEIGHT | DM_DISPLAYFLAGS |

DM_DISPLAYFREQUENCY;

ulReturnValue = ulBytesWritten;

}

return ulReturnValue;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: