驱动的一点体会

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
一.驱动程序介绍 
Windows 环境下,应用程序访问硬件设备需要通过设备驱动程序。 
在Windows 95/98下,驱动程序通常是一个Vxd文件;而在Windows NT下, 
驱动程序则是一个Sys文件。虽然这两个操作系统都是出自微软门下, 
但其使用的驱动程序结构是完全不同的,因此当一个硬件产品需要在以 
上两种操作系统下都能运行时,就需要分别编写其特定环境下的驱驱 
动程序。驱动程序的编写是一件相当复杂的工作。编程者首先要学习 
95/98/NT操作系统的内部工作机制,当对其内部工作机制有了相当了 
解后,接下来就要学习如何编写设备驱动程序,当真正要开始编驱动 
程序的时候,还要学会如何在Windows内核模式下调试程序,在这里有 
一点要说明的是Windows的内核模式可不比用户模式那么简单,在内核 
模式下调试程序需要借助SoftICE之类的调试工具。经过不懈努力编写 
好驱动程序后,就可以编写应用软件了,这些应用软件就是我们现在 
看得见摸得着的东西了,比如Windows 右下角的那个音量控制图标, 
它就是一个应用软件,在它下面其实还要经过声卡的驱动程序才能控 
制音量的大小。总地来说编写驱动程序是一件复杂的工作,需要编写 
者耐心;而学习编写驱动程序也会有一个曲折的过程,需要学习者有 
恒心和毅力,在此我也要鼓励那此刚开始学驱动程序编程的初学者。 
二.NT和WDM设备驱动程序开发书评 
1. The Windows NT Device Driver Book(Art Baker) 
- 中译本 :Windows NT设备驱动程序设计指南(机械工业出版社) 
这是所出版的第一本关于NT driver开发的书,它只讨论了NT4.0的设备驱动程序开发,Ba 
ker先生现在正从事此书第二版的写作.本书只覆盖了部份NT driver(如基本PIO和DMA)的 
开发,且叙述得不够深入.如果你想写PCI Drivers的话,你从本书得不到帮助. 
本书的最大缺点是技术错误太多!,寄希望于它的第二版吧! 
2.Windows NT Device Driver Development by Peter Viscarola and W.Anthony Maso 
n(Macmillan出版社) 
-中译本:无 
该书于1998年10月出版,它同样是只讨论了NT4.0的设备驱动程序开发,本书提供了许多N 
T OS和I/O子系统的系统结构细节.另外,本书的两位作者基于自己在实际开发过程中所积 
累的经验,在书中提出了很多开发drivers的技巧和建议.此书没有告诉读者"你为什么要 
这么作",而只是解释了如何作以及用什么工具去实现.该书相当深入地阐述了各种不同的 
drivers的开发,如DMA和PIO.本书从技术的角度讲,是写得比较精确的! 
3.Developing Windows NT Devices Drivers byEdwardN.Dekker and Joseph M.Newcom 
er(Addison出版社) 
-中译本:无 
本书是一本Drivers开发的百科全书,值得买!,主要还是讨论NT4.0的设备驱动程序开发. 
此书提供了大量硬件的技术细节,如PCI/ISA总线.本书在教你如何写drivers的同时,还提 
供了许多示范代码. 
本书比较精确.读本书可分享作者丰富的drivers开发经验,很明显,作者很精通drivers的 
开发,也知道如何解释这些问题.另外,本书的排版和写作风格也相当不错! 
4.Writng Windows WDM Decvice Drivers by Chris Cant(R&D Books) 
-中译本:WDM编程指南,刚出版. 
不明白为什么国内要选这本书来翻译出版?,本书主要讨论WDM的开发.如果你想看到设备 
/硬件信息或OS的系统结构,还是另找它书吧!我想本书的书名取为"WDM入门教程"也许更 
为合适.本书只花了两页的功夫来讨论DMA.有时用词也不是那么恰当和精确. 如果你是W 
in32程序员或技术经理,或许本书有点用.如果你想知道如何去写一个真正的drivers的话 
,不必买这本书. 
5.Programming The Microsoft Windows Driver Model by Walter Oney(微软出版社) 
本书主要讨论WDM的开发.它详细地讨论了WDM drivers的结构以及如何构造它们. 本书深 
入清晰地解释了PIO/DMA及其类型drivers的开发.本书"is clear written",它所提供的 
信息是精确和可靠的! 
结论 
如果你拥有Windows NT Device Driver Development(Peter Viscarola and W.Anthony 
Mason), Developing Windows NT Devices Drivers(EdwardN.Dekker and Joseph M.N 
ewcomer)和 Programming The Microsoft Windows DriverModel(Walter Oney)这三本书 
,你就会明白地知道如何写WDM和NT4的drivers了! 
三.怎样学习DDK 
学DDK的第一步准备功夫是把英文阅读能力练好,你别指望书商会出中译本.因这类书的 
卖相太差,比不上VB,Delphi,JAVA这类较大众化的书.再者要找到够格的译者很难.要译好 
是要花相当时间,那还到不如去写些轻松的书,稿费也赚得多. 
接下来就要练基础工夫,如同张无忌花了6年时间练好九阳真经,等到练乾昆大挪移时只花 
数个时辰就OK.要如何练底层基础呢?勤看书,勤coding及Trace别人写得sample code而已 
.即使是天才型的Programmer也是要看书,因Window不是他设计的,必须了解Window才有办 
法下手.而非像写Algorithm方面的论文般,自己定assumption, Lemma,导出Theme,下con 
clusion就完成.所以一些刚入社会的研究生最好先调整自己的心态. 
以往我是读一些大师级的书,如: 
"Window Programing"的CharlePetzold, 
"Undocument Window"系列的Andrew Scullman, 
"Win95 system Programming Secrets"的MattPietrek, 
"AdvancedWindows"的JefferyRichter. 
期刊的话是: 
Microsoft System Journal, 
Doctor Dobb's Journal, 
Window Developer Journal这本期刊是我认为学DDK的人必要订阅的!几乎过个1,2期就会 
刊登Window Device Driver相关的文章,而且里面有位Paula女士主持的NT专栏,写的很深 
入,不是市面一些标榜NT"大剖析"之类的书籍所能比拟.在Andrew Scrullman的"Undocum 
ent NT"尚未问世之前,它是我觉得最有深度的专栏. 
接下来就谈与Driver有直接关系的资料: 
Device Driver的书籍,我从Win31开始说起: 
"Writing Windows Device Driver and VxD",Karen Hazzen,第1,2版是最适合写Win31 
Driver的参考书籍.也有一本白皮的"Writing Window Device Driver",我认为它的参考 
性很低,因它光抄Win31 DDK Function Description就花了50~60几页,有A钱之嫌. 
Win95: 
那当然是首推"System Programing for Win95",Walter Oney. 
这本巨作.我曾因翻Chapter11~13翻到书页掉落,而重新再买一本.Walter Oney既出,谁与 
争锋.有这本就够了!也没有人有胆来挑战他. 
WinNT: 
唯一的一本:"The NT Device Driver Book",Art Baker.很有系统的一步一步介绍如何写 
NT Kernal mode driver.先看这本书然后再看MS的NT DDK on Help会让你较容易了解.当 
初没这本书时,我刚开始看DDK Help是看得满头雾水.最好搭配"Inside Windows NT",He 
len Custer一起看,因为NT底层已经导入Object Oriented观念(WDM是将NT Kernel mode 
driver 加装Plug&Play及Bus handle等新功能),与Win95的Virtual Machine观念相差甚 
远.这本书虽是1992年出版,但有对NT的核心运作加以介绍,也是一本难得的好书. 
NewGroup and WebSite: 
1.Win95是comp.os.ms-windows.programmer.vxd 
2.NT的话是comp.os.ms-windows.programmer.nt.kernel-mode 
3.Window Device Driver Web site: 
::URL:: http://www.albany.net/~danorton/ddk  
::URL:: http://www.vireo.com  
发展工具: 
1. 如何要让你日子好过,一定要有套SoftIce for Win95/NT.千万不要用MS的WinDebug, 
它根本是无山晓路用.SoftIce可让你用source code level debuging,对有assembly恐惧 
症的人是一大福音.(但我还是劝有心学DDK的人还是要摸assembly). 
2.VToolsD(for Win31/95),DriverWork(for NT/WDM) 
Vireo公司出的DDK Tool让你完全用C来写Driver,我只能说写Driver时,我已经不能没有 
它.由其它还免费附Class Library source code,让我Trace的很高兴. 
领域知识(Domain Knowledge) 
写Driver需了解你要控制的硬件,如Driver有用到DMA/Interrupt,建议你看一下8259,82 
37A的资料.在这方面,"微电脑接口技术与应用"是本不错的参考书. Programmer总有一天 
会coding不动的时候.但人老成精,只要你的Domain Knowledge够强的话, 还是会有许多 
公司请你去当技术经理, 而这也是你能克死年轻力壮Programmer最大的本钱. 多多看些 
其他杂志, 接触一些非Programming方面的知识来培养你的Domain Knowledge吧! 
四.DDK常用函数列表 
Support Function and Data Structure Reference 
ASSERT 
ASSERTMSG 
CM_FULL_RESOURCE_DESCRIPTOR 
CM_PARTIAL_RESOURCE_DESCRIPTOR 
CM_PARTIAL_RESOURCE_LIST 
CM_RESOURCE_LIST 
CONFIGURATION_INFORMATION 
CONTAINING_RECORD 
CONTROLLER_OBJECT 
DbgBreakPoint 
DbgPrint 
DEVICE_DESCRIPTION 
DEVICE_OBJECT 
DriverEntry 
DRIVER_OBJECT 
ExAcquireFastMutex 
ExAcquireFastMutexUnsafe 
ExAcquireResourceExclusiveLite 
ExAcquireResourceSharedLite 
ExAcquireSharedStarveExclusive 
ExAcquireSharedWaitForExclusive 
ExAllocateFromNPagedLookasideList 
ExAllocateFromPagedLookasideList 
ExAllocatePool 
ExAllocatePoolWithQuota 
ExAllocatePoolWithQuotaTag 
ExAllocatePoolWithTag 
ExConvertExclusiveToSharedLite 
ExDeleteNPagedLookasideList 
ExDeletePagedLookasideList 
ExDeleteResourceLite 
ExFreePool 
ExFreeToNPagedLookasideList 
ExFreeToPagedLookasideList 
ExGetCurrentResourceThread 
ExInitializeFastMutex 
ExInitializeNPagedLookasideList 
ExInitializePagedLookasideList 
ExInitializeResourceLite 
ExInitializeWorkItem 
ExInterlockedInsertHeadList 
ExInterlockedInsertTailList 
ExInterlockedRemoveHeadList 
ExIsResourceAcquiredExclusiveLite 
ExIsResourceAcquiredSharedLite 
ExQueueWorkItem 
ExReleaseFastMutex 
ExReleaseFastMutexUnsafe 
ExReleaseResourceForThreadLite 
ExTryToAcquireFastMutex 
ExTryToAcquireResourceExclusiveLite 
HalAssignSlotResources 
HalGetAdapter 
HalGetBusData 
HalGetBusDataByOffset 
HalGetInterruptVector 
HalSetBusData 
HalSetBusDataByOffset 
HalTranslateBusAddress 
HKEY_LOCAL_MACHINE 
InitializeListHead 
InitializeObjectAttributes 
InsertHeadList 
InsertTailList 
INTERFACE_TYPE 
InterlockedDecrement 
InterlockedExchange 
InterlockedExchangeAdd 
InterlockedIncrement 
IoAcquireCancelSpinLock 
IoAllocateAdapterChannel 
IoAllocateController 
IoAllocateErrorLogEntry 
IoAllocateIrp 
IoAllocateMdl 
IoAssignResources 
IoAttachDevice 
IoAttachDeviceToDeviceStack 
IoBuildAsynchronousFsdRequest 
IoBuildDeviceIoControlRequest 
IoBuildPartialMdl 
IoBuildSynchronousFSDRequest 
IoCallDriver 
IoCancelIrp 
IoCompleteRequest 
IoConnectInterrupt 
IoCopyCurrentIrpStackLocationToNext 
IoCreateController 
IoCreateDevice 
IoCreateNotificationEvent 
IoCreateSymbolicLink 
IoCreateSynchronizationEvent 
IoDeleteController 
IoDeleteDevice 
IoDeleteSymbolicLink 
IoDetachDevice 
IoDisconnectInterrupt 
IO_ERROR_LOG_PACKET 
IoFlushAdapterBuffers 
IoFreeAdapterChannel 
IoFreeController 
IoFreeIrp 
IoFreeMapRegisters 
IoFreeMdl 
IoGetConfiguationInformation 
IoGetCurrentIrpStackLocation 
IoGetCurrentProcess 
IoGetDeviceObjectPointer 
IoGetNextIrpStackLocation 
IoInitializeDpcRequest 
IoInitializeIrp 
IoInitializeTimer 
IoMakeAssociatedIrp 
IoMapTransfer 
IoMarkIrpPending 
IoRegisterShutdownNotification 
IoReleaseCancelSpinLock 
IoRequestDpc 
IO_RESOURCE_DESCRIPTOR 
IO_RESOURCE_LIST 
IO_RESOURCE_REQUIREMENTS_LIST 
IoSetCancelRoutine 
IoSetCompletionRoutine 
IoSetNextIrpStackLocation 
IoSizeOfIrp 
IoSkipCurrentIrpStackLocation 
IO_STACK_LOCATION 
IoStartNextPacket 
IoStartNextPacketByKey 
IoStartPacket 
IoStartTimer 
IO_STATUS_BLOCK 
IoStopTimer 
IoUnregisterShutdownNotification 
IoWriteErrorLogEntry 
IsListEmpty 
IRP 
KdPrint 
KeAcquireSpinLock 
KeAcquireSpinLockAtDpcLevel 
KeBugCheck 
KeBugCheckEx 
KeCancelTimer 
KeClearEvent 
KeDelayExecutionThread 
KeDeregisterBugCheckCallback 
KeFlushIoBuffers 
KeGetCurrentIrql 
KeGetCurrentProcessorNumber 
KeGetDcacheFillSize 
KeInitializeCallbackRecord 
KeInitializeDeviceQueue 
KeInitializeDpc 
KeInitializeEvent 
KeInitializeMutex 
KeInitializeSemaphore 
KeInitializeSpinLock 
KeInitializeTimer 
KeInitializeTimerEx 
KeInsertByKeyDeviceQueue 
KeInsertDeviceQueue 
KeInsertQueueDpc 
KeLowerIrql 
KeNumberProcessors 
KeQueryPerformanceCounter 
KeQuerySystemTime 
KeQueryTickCount 
KeQueryTimeIncrement 
KeRaiseIrql 
KeReadStateEvent 
KeReadStateMutex 
KeReadStateSemaphore 
KeReadStateTimer 
KeRegisterBugCheckCallback 
KeReleaseMutex 
KeReleaseSemaphore 
KeReleaseSpinLock 
KeReleaseSpinLockFromDpcLevel 
KeRemoveByKeyDeviceQueue 
KeRemoveDeviceQueue 
KeRemoveEntryDeviceQueue 
KeRemoveQueueDpc 
KeResetEvent 
KeSetEvent 
KeSetPriorityThread 
KeSetTimer 
KeSetTimerEx 
KeStallExecutionProcessor 
KeSynchronizeExecution 
KeWaitForMultipleObjects 
KeWaitForMutexObject 
KeWaitForSingleObject 
KEY_BASIC_INFORMATION 
KEY_FULL_INFORMATION 
KEY_NODE_INFORMATION 
KEY_VALUE_BASIC_INFORMATION 
KEY_VALUE_FULL_INFORMATION 
KEY_VALUE_PARTIAL_INFORMATION 
KIRQL 
KSYNCHRONIZE_ROUTINE 
LARGE_INTEGER 
MmAllocateContiguousMemory 
MmAllocateNonCachedMemory 
MmCreateMdl 
MmFreeContiguousMemory 
MmFreeNonCachedMemory 
MmGetMdlByteCount 
MmGetMdlByteOffset 
MmGetMdlVirtualAddress 
MmGetPhysicalAddress 
MmGetSystemAddressForMdl 
MmInitializeMdl 
MmIsAddressValid 
MmMapIoSpace 
MmMapLockedPages 
MmPrepareMdlForReuse 
MmProbeAndLockPages 
MmQuerySystemSize 
MmSizeOfMdl 
MmUnlockPages 
MmUnlockPagableImageSection 
MmUnmapIoSpace 
MmUnmapLockedPages 
NTSTATUS 
ObDereferenceObject 
ObReferenceObjectByHandle 
ObReferenceObjectByPointer 
PCI_COMMON_CONFIG 
PCI_SLOT_NUMBER 
PDRIVER_CONTROL 
PIO_DPC_ROUTINE 
PIO_TIMER_ROUTINE 
PKDEFERRED_ROUTINE 
PKSTART_ROUTINE 
PsCreateSystemThread 
PsGetCurrentProcess 
PsGetCurrentThread 
PsTerminateSystemThread 
READ_PORT_BUFFER_type 
READ_PORT_type 
READ_REGISTER_BUFFER_type 
READ_REGISTER_type 
RemoveEntryList 
RemoveHeadList 
RemoveTailList 
RtlInitUnicodeString 
RtlMoveMemory 
RTL_QUERY_REGISTRY_ROUTINE 
RTL_QUERY_REGISTRY_TABLE 
RtlQueryRegistryValues 
RtlUnicodeStringToAnsiString 
RtlZeroMemory 
UNICODE_STRING 
_URB_CONTROL_DESCRIPTOR_REQUEST 
_URB_HEADER 
UsbBuildGetDescriptorRequest 
WRITE_PORT_BUFFER_type 
WRITE_PORT_type 
WRITE_REGISTER_BUFFER_type 
WRITE_REGISTER_type 
ZwClose 
ZwCreateFile 
ZwCreateKey 
ZwDeleteKey 
ZwEnumerateKey 
ZwEnumerateValueKey 
ZwFlushKey 
ZwMapViewOfSection 
ZwOpenKey 
ZwOpenSection 
ZwQueryKey 
ZwQueryValueKey 
ZwSetInformationThread 
ZwSetValueKey 
ZwUnmapViewOfSection 
 
一个简单的串口过滤驱动一点体会 最近写一个简单的串口过滤驱动,代码如下:driver.h #ifdef __cplusplusextern "C"{#endif#include #ifdef __cplusplus}#endif#define PAGEDCODE code_seg("PAGE")#define LOCKEDCODE code_seg()#define INITCODE code_seg(" 阅读详情

相关推荐

Programming the Microsoft Windows Driver Model

This book explains how to write device drivers for the newest members of the MicrosoftWindows family of operating systems using the Windows Driver Model (WDM). In this Introduction, I'll explain who should be reading this book, the organization of the book, and how to use the book most effectively. You'll also find a note on errors and a section on other resources you can use to learn about driver programming. Looking ahead, Chapter 1 explains how the two main branches of the Windows family operate internally, what a WDM device driver is, and how it relates to the rest of Windows.<br>

Lookaside List 详解

使用 Lookaside List 分配内存 概述lookaside list 节点结构节点内存块 size初始化节点分配内存释放内存动态调整 lookaside list 节点深度 1. 概述 windows 提供了一种基于 lookaside list 的快速内存分配方案,区别于一般的使用 ExAllocatePoolWithTag() 系列函数的内存分配方式。每次从 loo

yangdazhi的专栏 2648

Windows NT Device Driver Book(中文,超星pdg格式)

这套其实非常棒,我也很想找这本书的英文版,可惜找遍了整个互联网,将这套书让什么译打高尔夫球,什么花艺的人来译真是整个IT业界,整个出版界的悲哀! 比起我上传的它的第二版,Windows 2000 Device Driver Book,其实这本要讲的更深入一些,而且没有说到pnp,wmi那些部分,所以说这本书更适合玩内核,玩"软驱动"的人看。 看这本书时建议对照英文第二版,如果你有英文第一版请一定与我联系,我可以考虑购买。

DriverStudio工具包介绍

DriverStudio工具包介绍    DriverStudio 是一套用来简化微软Windows 平台下设备驱动程序的开发,调试和测试的工具包。DriverStudio 当前的版本包括下列工具模块:DriverAgent    DriverAgent 为Win32 应用程序提供直接访问硬件的功能。即使你没有任何设备驱动程序开发的经验或经历,你也能编写出DriverAgent应用程序来直接访

luckysolar的专栏 1221

06-驱动中的内存管理

常规内存分配 WDK提供了一系列内存分配函数,其中最基本的是ExAllocatePoolWithTag,函数原型如下: PVOID ExAllocatePoolWithTag (POOL_TYPE PoolType, SIZE_T NumberOfBytes, ULONG Tag); PoolType表示需要申请何种类型的内存,PoolType为POOL_TYPE枚举类型,常用的值是NonPagedPool与PagedPool;其中NonPagedPool表示非分页内存,PagedPool表示分页内存;这里

ahaozi01的博客 897

VtoolsD编译问题

为什么80%的码农都做不了架构师?>>> ...

weixin_33860147的博客 156

windows驱动开发的一点体会

初步开始开发驱动,而且都是自己一步一步自己走过来的,难免磕磕碰碰,走了不少弯路,做的是一个windows过滤驱动,过滤驱动应该算是驱动开发里最好开发的,只是对经过的IRP进行一个处理(具体什么处理,看你自己的需求)。 开发环境: Windows XP, 开发包: Windows DDK 2600。这里重点介绍一下调试环境,安装虚拟机,使用虚拟机作为目标PC(主要是蓝屏电脑就会重启),把IP

hjzwl1018的专栏 1144

用eclipse连接MySQL的一点心得体会,如何加载数据库驱动

eclipse加载MySQL的数据库连接驱动

vamper_girl的专栏 9498

对信息化建设的一点体会 - 功能和模型驱动

对信息化建设的一点体会 - 功能和模型驱动 公司是做信息化的,主打产品是项目管理软件,基本遵照PMBOK的思想设计的软件功能。客观得说,功能是很强大的,能在要求很高,管理相对严格的军工企业实施就可以证明这一点。但是无乱是售前打单,还是项目实施时,仍然会碰到客户提出各种各样的需求,似乎是我们的软件所不能满足的。 公司坚持走产品化道路,绝不想只做做项目。但是又如何解决当前的问题呢? 我以前并...

訫誶 246

51单片机c语言学习感想,学习51单片机心得体会

在这里给大家分享一下学习51单片机心得体会:1、我从不说51是基础,如果我这么说,也请把这句话理解为微机原理是基础。2、对51单片机的操作本质上就是对寄存器的操作,对其他单片机也是如此。库只是一个接口,方便使用者使用而已。3、汇编语言在工作中很少用到,了解就好。4、51单片机的P0口很特别。5、C语言就是C语言,51单片机就是51单片机,算法就是算法,外围电路就是外围电路,传感器就是传感器,通信器...

weixin_36213943的博客 1476

Programming the Microsoft Windows Driver Model(2nd)-Walter Oney

Programming the Microsoft Windows Driver Model(2nd) by Walter Oney.英文版!

学习中的一点体会(一)

我是个不怎么写博客的人。这种人一般不是自卑就是缺乏思考,而我有幸两者兼备。如果两者都不是,又知道有博客这么个东西,那么这个人一定懒到不可被原谅。博客多好,与他人交流思想,引导自己思考。所以,我算是豁出去了,我的想法幼稚又怎么样,如果我把它公开的陈列出来,一方面让自己羞愧到发誓去改正它,又会博他人会心一笑,岂不是两全其美?所以,我准备反思一下自己这些年在学习上走过的弯路、思维上的缺陷

forrest_gangp 1024

linux驱动架构体会

刚开始学习ldd3时,驱动架构以为是围绕这device,device_driver,bus,等等建立起来的。确实是这样,通过这样在内核建立了一个驱动框架去管理它们。然而却错误的理解为实际的驱动硬件的工作也是在那几个结构上,大错特错。举个例子,像块设备驱动,操作硬件工作是在gendisk结构里面实现的,通过register_disk,则可以根据disk里面的设备号在内核建立起device,sysfs

2434

首次尝试测试驱动开发的体会

测试驱动开发的定义最近在学习《重构》,里面强调,实施重构的一个前提是,必须建立一个可靠的测试环境。里面还提到了测试驱动开发,以及测试驱动开发的好处。正好最近在开发一个小的项目,所以便在这个项目中尝试了一下测试驱动开发,感觉不错,这里分享一下我的体会。我开发使用的是C++,我使用的测试框架是Google的c++开源测试框架gtest。另外Google也有一个mock的开源框架gmock,

常高伟的专栏 2494

关于赛车游戏的一点体会

当初在做那款不成功的赛车游戏的时候,其实并不懂车。开始懂一点车之后,才猛然醒悟,原来想做好赛车游戏,哪怕是很卡通的赛车,都需要对车很了解啊。现在只是稍微了解了一点车。我相信随着今后对车更了解,认识也会更深入的。 我把发在微博的片段整理到下面吧。 电子游戏为什么好玩呢?游戏的好玩就是有趣的交互。有趣的定义很多。每种类型游戏都不一样。比如赛车游戏的好玩在于简单操作左右转加...

alo3690的博客 494

看SOPC的一点体会

今天把《疯狂的程序员》给看完了,很久以前看了一半。记得是从晚上八点看到了早上八点,不过我看得还是没看完,后来就再没看过,今天接着把它给看完了。看的后半段,当技术到一定层次后,注重的就不仅是技术了。现在每天都在做梦将来有一天自己的技术有多么多么牛B 把话说回正题。这两天都在看SOPC,感慨一下,那不是几天就能看下来的,需要以前的积累。就像张无忌学九阳神功用了几年,而在学乾坤大挪移

conquerwave的专栏 737

如何做好SOC的一点体会

国庆节之前的9月27日,本人有幸与业内人士一同探讨了SOC这个有趣的话题。经过这次交流,我有一点点关于如何做好SOC的体会: 要做出一个SOC类项目,光有SOC技术平台还是不够的,现在很重要并且很急迫的工作是要抓紧补强在SOC领域知识方面的不足,以及建立一套对客户适用的SOC使用流程。 这里,SOC领域知识至少应包括关联分析规则,知识库,安全事件处理建议等等。这些领域知识需要由真正的安全专家来...

weixin_34097242的博客 266

关于赛车游戏制作的一点体会

当初在做那款不成功的赛车游戏的时候,其实并不懂车。开始懂一点车之后,才猛然醒悟,原来想做好赛车游戏,哪怕是很卡通的赛车,都需要对车很了解啊。现在只是稍微了解了一点车。我相信随着今后对车更了解,认识也会更深入的。     我把发在微博的片段整理到下面吧。     电子游戏为什么好玩呢?游戏的好玩就是有趣的交互。有趣的定义很多。每种类型游戏都不一样。比如赛车游戏的好玩在于简单操作左右转加减速度。改

H3D GameTech Log 7759

Linux 中的驱动开发的初学者体会

Linux 中的驱动开发的初学者体会 很多年前,心里就存下这样一个愿望。就是把Linux 的驱动开发搞清楚。 但是一开始上上这样的开发难度天大了,对着一堆的寄存器发愁。 于是就从简单的STM8,PIC16FXXX ,51 等板子入手开发一些单片机例程。一路上上做做小家电,而后从开发STM32下的开发。如今终于可以大阔步的学习Linux的驱动开发了。 其实Linux的驱动开发并没有想象的那么难,就是要耐心,耐心,再耐心。 51 或者 STM32 等。单片机开发很难接触到 更高层次的系统方面的知识,单片机开发由

qq_21291397的博客 2880
上一篇: 驱动知识
下一篇: WDM驱动程序设计
stretch
博客等级 码龄22年 22粉丝 22原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值