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

这个系列的文章在网上到处都是 这里也不清楚谁才是原文作者 我这里做个整理,标注一下希望大家能看的更加舒服一点

目录

(一)驱动开发一个简单的显示驱动

(二)驱动开发一个简单的显示驱动

(三)驱动开发一个简单的显示驱动

(四)驱动开发一个简单的显示驱动

(五)驱动开发一个简单的显示驱动

(六)驱动开发一个简单的显示驱动

 

DrvDisableDriver

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


VOID GdiExample_DrvDisableDriver(VOID)

{

   

}

DrvGetModes

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

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

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;

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值