|
本帖最后由 apple_03 于 2012-9-24 00:38 编辑
近日,由于需要翻看了WINCE的驱动源代码,不看则已,一看惊人!
请看以下一段:- PHYSICAL_ADDRESS ioPhysicalBase = { dwi.ioWindows[0].dwBase, 0};
- ULONG inIoSpace = 1;
- if (TranslateBusAddr(m_hParent,(INTERFACE_TYPE)dwi.dwInterfaceType,dwi.dwBusNumber, ioPhysicalBase,&inIoSpace,&ioPhysicalBase)) {
- if (inIoSpace) {
- m_bIsIo = TRUE;;
- m_pRegVirtualAddr = (PVOID)ioPhysicalBase.LowPart;
- }
- else {
- // Map it if it is Memeory Mapped IO.
- m_pRegVirtualAddr = MmMapIoSpace(ioPhysicalBase, dwi.ioWindows[0].dwLen,FALSE);
- m_bIsIo = FALSE;
- }
- }
- return (m_pRegVirtualAddr!=NULL);
复制代码 注意第3行的末尾,这个“{”竟然是第133列的位置上!如此遥远的位置,很容易让人漏看了。
M$怎么也是大公司,代码的书写方式居然如此丑陋。
写成:- PHYSICAL_ADDRESS ioPhysicalBase = { dwi.ioWindows[0].dwBase, 0};
- ULONG inIoSpace = 1;
- if (TranslateBusAddr(m_hParent,(INTERFACE_TYPE)dwi.dwInterfaceType,dwi.dwBusNumber, ioPhysicalBase,&inIoSpace,&ioPhysicalBase))
- {
- if (inIoSpace)
- {
- m_bIsIo = TRUE;;
- m_pRegVirtualAddr = (PVOID)ioPhysicalBase.LowPart;
- }
- else
- {
- // Map it if it is Memeory Mapped IO.
- m_pRegVirtualAddr = MmMapIoSpace(ioPhysicalBase, dwi.ioWindows[0].dwLen,FALSE);
- m_bIsIo = FALSE;
- }
- }
- return (m_pRegVirtualAddr!=NULL);
复制代码 不是很清晰吗?功能段的起始和结束在何处一目了然,头绪也厘得很清楚。
|
|