NT DDK的安装以及设备驱动程序的编译

RMI应用开发与调试指南 本文介绍了RMI应用的调试方法和开发规范。调试方面包括:通过JVM属性记录服务器调用日志、文件日志记录机制及安全权限配置,客户端可通过非标准属性获取调试信息。开发规范要求远程接口必须继承java.rmi.Remote,所有方法需声明抛出RemoteException,参数和返回值仅支持基本类型、远程对象引用或可序列化对象。实现类可选择继承UnicastRemoteObject或手动导出对象,需注意构造函数和异常处理的差异。文章还提供了完整的远程接口示例和类型系统约束建议。 阅读详情
作者:程序员客栈

提交者:eastvc 发布日期:2003-10-19 20:01:54
原文出处: http://www.driverdevelop.com/


经常有人问及如何安装DDK,如何编译第一个设备驱动程序以及如何消除掉编译驱动程序
时出现的大量错误信息.  其实, DDK的安装和驱动程序的编译是很简单的. 为了编译驱动程
序, 你必须首先打开一个DOS窗口, 并正确设置好所需的全部环境变量.    本文假定你将要
安装NT DDK 4.0, 并且在安装NT DDK之前,VC已经被安装在 C:/vcdev/vc/bin/目录下(尽量使
用短的VC路径名称,不要用长的路径命名格式).   

可按如下方法安装NT DDK( 其实就是进行一些环境变量的设置), NT DDK的安装并不需要
SDK--如果你已经安装好了VC的话.  

1.  从微软或其他站点下载NT  
DDK(http://download.microsoft.com/download/winntwks40/Install/1998/NT4/EN-US/nt4ddk.zip),  
将其安装在硬盘上(本文假定DDK安装目录为c:/ddk).

2.   用任何文本编辑器打开c:/ddk/bin/目录下的setenv.bat文件, 在此文件的第三行(不含空白
行)之后加入如下一行并保存:  call  C:/vcdev/vc/bin/vcvars32.bat,  具体示例:

@echo off
if "%1"=="" goto usage
rem This will put the SDK headers & libs first in the search path.

call  C:/vcdev/vc/bin/vcvars32.bat   

if "%BASEDIR%"=="" goto setbasedir
if NOT "%BASEDIR%"=="%1" goto setbasedir
...

3. 完成步骤1和2之后, 你就可以开始编译第一个设备驱动程序了(本文假定驱动程序选为
checked类型):  顺次进入Programs->Windows NT DDK(Common)->Checked Build  
Enviroment,  出现一个 DOS窗口.  使用cd命令进入c:/ddk/src/general/simple/sys目录, 键入
build -c命令即可编译, 然后编译器提示已经成功编译好 ldunld.sys文件并已将此文件拷到  
c:/ddk/lib/i386/checked目录中. 运行build命令只编译需要重新编译的文件, 而build -c命令则
强迫编译器重新编译所有的文件.   

4.使用cd命令进入c:/ddk/src/general/simple/exe目录, 在DOS提示符下键入NMAKE -f  
GETHNDL.MAK 即可在当前目录下生成Win32 控制台程序gethndl.exe,此程序用于调用并测
试在第3步中所生成的ldunld.sys设备驱动程序.

5. 从OSR下载OSR driver load(V2.2), 地址如下: http://www.osr.com/files/osrloaderv22.zip, 然
后进行解压缩, 并将osrloader.exe文件拷贝到c:/ddk/bin 目录中. 运行osrloader, 在 driver  
path中敲入C:/DDK/lib/i386/checked/ldunld.sys (或用Browse选取), 点击Register Service按钮,
然后点击Start service按钮, 如能顺利完成这些步骤, 就意味着 ldunld.sys已经被成功注册及
加载了.


6. 从OSR下载OSR debug monitor, 地址如下: http://www.osr.com/files/dbgmon_v3.zip, 然后进
行解压缩, 并将dbggui.exe文件拷贝到c:/ddk/bin 目录中. 运行dbggui,  选中local mode选项.

7. 切换到DOS 窗口, 转入到 c:/ddk/src/general/simple/exe目录, 运行gethndl,  显示:
Wow - it really worked!!!. 祝贺你,你已经成功地编译并运行第一个设备驱动程序了. 此时在
dbggui中也会出现一些KdPrint()提示信息!

8.   在osrloader中先点击Stop service, 然后再点击Unregister service即可卸载ldunld.sys.

一些注意事项;
1.  如编译DDK中的示范程序时编译器提示缺少哪个文件, 可用Windows或VC的搜索工具先
找到这个文件, 然后将此文件拷入示范程序所在目录再行编译. 也可对示范程序目录中的
Sources文件进行修改以便使所缺失的路径被包括进来.  
2 . 用build命令时出现的一些错误或警告信息, 有时可用build -c命令消除掉.
3.  如遇到last line incomplete错误,可下载一个叫lastline.exe的工具来解决
(http://grwy.online.ha.cn/dzhang/lastline.exe).
4. 为了使build能正确运行, 在需被编译的源文件目录下面必须有两个文件: SOURCES和
DIRS, 注意这两个文件没有后缀名.

SOURCES的文件格式:

TARGETNAME=drivername , 本参数用于指定生成的设备驱动程序名称(不需后缀名),所产
生的文件为drivername.sys.

TARGETPATH=./lib,  本参数用于指定生成的设备驱动程序所存放的路径. 一般采用./lib.
TARGETTYPE=DRIVER, build能够生成许多不同的目标对象,设备驱动程序一般选用
DRIVER.
INCLUDES=path1;path2;..., 本参数是可选的, 用于指定其他的#include文件的搜索路径.    
TARGETLIBS=lib1;lib2;..., 本参数是可选的, 用于指定其他的lib库文件的搜索路径.    
SOURCES=file1.c  file2.c ...,   本参数用于指定需被编译的全部源文件名称, 后缀名不能省
略,文件名之间用空格分开.  

DIRS文件格式:
DIRS文件用于指定在当前目录下必须创建的子目录。DIRS文件的内容由一系列用空格分
开的目录名组成,  /可用于表示对上一行的继续.
DIRS = /
             subdir1 /
             subdir2 /
             subdir3

当前目录下如果只有DIRS文件而没有SOURCES, 则表示没有任何源文件需要编译,但需在
当前目录下创建子目录, 只有SOURCES文件而没有DIRS则表示有源文件需要编译但不需
创建子目录. 二者都有则表示有源文件需要编译且需创建子目录.

5.  BUILD在编译时将会在TARGETPATH和当前目录下创建子目录或文件. 对于一般的
Intel平台, 以c:/ddk/src/general/simple/sys为例说明, 编译完后Build在sys目录下创建子目录
obj/i386/用于存放ldunld.obj. 在c:/ddk/lib/i386/checked保存编译好的ldunld.sys文件.

6. 如果你将设备驱动程序的类型从checked转到free, 则第一次编译源文件的free类型驱动
程序时你必须使用build 的-c选项来编译.
7. 可以使用regedit或regedit32来在注册表中加入驱动程序的表项, ldunld.ini的内容:

/registry/machine/system/currentcontrolset/services/Ldunld
    Type = REG_DWORD 0x00000001
    Start = REG_DWORD 0x00000003
    Group = Extended base
    ErrorControl = REG_DWORD 0x00000001

运行regini ldunld.ini即可加入相应的注册表项.

7. 在ddk的src目录下有许多示范程序可供参考.

8.  经过一些繁琐的设置,也可以在VC中直接编译驱动程序
(http://grwy.online.ha.cn/dzhang/insider17.pdf和
http://www.computerworld.com.cn/99/tips/9904/040601_03.asp).

15、WebLogic RMI 架构与应用指南 本文详细介绍了 WebLogic RMI 的架构和实现原理,包括存根与骨架、序列化与编组、命名服务等核心概念。同时,对比了 WebLogic RMI 与 JavaSoft RMI 的差异,突出了 WebLogic 在易用性、性能和可扩展性方面的优势。文章还通过示例演示了如何编写和部署一个 WebLogic RMI 应用,并深入解析了其网络优化机制、调用模式及安全配置策略,帮助开发者构建高效稳定的分布式系统。 阅读详情

相关推荐

NT4-DDK:在2K环境下构建操作系统内核开发详解.zip

Windows NT 4.0 Device Driver Kit (DDK) 是为开发者提供的工具套件,它允许开发者创建与Windows NT 4.0操作系统兼容的驱动程序。DDK包含了一系列的头文件、库文件、工具以及文档资料,这些组件共同工作,以简化开发过程,并确保驱动程序的性能和稳定性。在驱动程序开发过程中,编译器、链接器与调试器是最基本的开发工具,每一个都有其独特的功能和作用。编译器:编译器的主要作用是将高级语言代码转换成机器可以理解的机器代码。

weixin_42356162的博客 494

visual studio 2019 + WinDDK 7600.16385.0编写驱动

驱动版本WinDDK 7600.16385.0 IDE:visual studio 2019 新建空白项目 配置类型从exe改为生成文件 配置完后,配置属性中就只剩基础配置了,没有C/C++、链接器等配置,因为驱动程序需要通过ddk编译,所以其他配置也是没用,自己配置编译程序的命令行即可 添加makefile和source文件 makefile是默认的,不需要修改的 # # DO NOT EDIT THIS FILE!!! Edit .\sources. if you want .

youyudexiaowangzi的专栏 2864

Osr Driver Loader 3.0驱动加载卸载工具.rar

软件介绍: 从osr官网获得的最新3.0版本的驱动加载卸载工具Osr Driver Loader,OsrLoader支持xp/win7系统,非常简单易用的驱动工具。填写驱动路径,驱动启动参数,注册服务开始服务即可。

NTDDK 从两个最简单的驱动谈起

第 1 章 从两个最简单的驱动谈起 Windows 驱动程序的编写,往往需要开发人员对 Windows 内核有深入了解和大量的内 核调试技巧,稍有不慎,就会造成系统的崩溃。因此,初次涉及 Windows 驱动程序开发的 程序员,即使拥有大量 Win32 程序的开发技巧,往往也很难入门。 本章向读者呈现两个最简单的 Windows 驱动程序,一个是 NT 式的驱动程序,另一个 是 WDM 式的...

墨鱼菜鸡 770

OsrLoader3.0驱动加载卸载工具

去osr官网注册、下载的最新3.0版本,能支持xp,win7系统,非常简单易用的驱动工具。

nt4-ddk,压缩包,2k环境下安装的编译nt4的

nt4-ddk,压缩包,2k环境下安装的编译nt4的

RMI应用的几点注意事项

1.从JDK1.5开始,RMI应用server端与client端均不需要事先编译skeleton和stub,该工作由动态代理自动完成。   2.运行server端进程注册服务前需启动JDK的(如果安装了ORACLE,检查一下JAVA_HOME的bin路径是不是被"挤"到了后面)rmiregistry,否则会出现拒绝连接的异常   3.server端在注册服务时,rmiregistry是从-...

从匠到艺 182

NTDDK开发包(usb驱动开发相关)

先前优快云上面那个开发包里面没有setupapi.h这个文件,我这个是添加了以后的,包含那个.h文件。

Java RMI详解

java远程方法调用

怀揣梦想,努力前行 10万+

微软Windows NT4的DDK开发包

微软Windows NT4的DDK开发包,欢迎下载!

深度排查:网讯网卡WX1860AL4千兆网口降速百兆的硬件陷阱

本文详细剖析了网讯网卡WX1860AL4千兆网口降速至百兆的硬件故障排查过程。通过分析千兆以太网硬件原理,提供从网线、供电到PCB走线、焊接残留的标准化检修流程,并分享两种典型硬件陷阱(线序错误与焊锡短路)的实战修复案例,为硬件工程师解决类似传输速率问题提供系统性的诊断思路与方法。

a3b4c5的博客 1113

RMI简介、实现与注意事项

一 .RMI概述RMI(Remote Method Invocation)    RMI是分布式对象软件包,它简化了在多台计算机上的JAVA应用之间的通信。必须在jdk1.1以上 RMI用到的类     java.rmi.Remote                   所有可以被远程调用的对象都必须实现该接口     java.rmi.server.UnicastRemoteObject 

userly的专栏 1193

Jaspersoft Studio 6.20.0 免注册安装指南(附下载链接)

本文提供了Jaspersoft Studio 6.20.0社区版的免注册安装详细指南。文章介绍了绕过官网注册获取安装包的多种可靠途径,并逐步详解了从启动安装器到首次运行的全过程,帮助用户快速完成安装与基础配置,高效开启报表设计工作。

mars5的博客 1697

什么是rmi?为什么要使用rmi框架?

大家好,我是IT修真院武汉分院第13期的学员石奥林,一枚正直纯洁善良的JAVA程序员。今天给大家分享一下,修真院官网JAVA任务8的知识点——Spring RMI   Java小课堂 1.背景介绍 2.知识剖析 3.常见问题 4.解决方案 5.编码实战 6.扩展思考 7.参考文献 8.更多讨论 1.背景介绍 RMI全称是Remote Method Invocation-远程...

qq_26892215的博客 1592

MATLAB仿真耗散孤子共振与金兹堡-朗道方程解析

耗散孤子共振(DSR)是非线性光学中的特殊脉冲现象,通过平衡非线性效应、色散与能量耗散实现稳定传输。其核心数学模型金兹堡-朗道方程(GLE)描述了光脉冲在增益介质中的演化规律,采用分步傅里叶方法(SSFM)可高效求解这类非线性偏微分方程。该技术在光纤激光器设计、高速光通信系统优化等领域具有重要价值,特别是在需要高能量脉冲保持稳定传输的场景。MATLAB数值仿真为理解DSR物理机制提供了直观工具,通过参数扫描可验证脉冲能量与宽度的线性关系特征,并为实际器件设计提供预测依据。

weixin_31240035的博客 259

基于IMU的纯惯性导航轨迹绘制实践与优化

本文深入探讨了基于IMU的纯惯性导航轨迹绘制实践。通过修改开源组合导航算法KF-GINS,屏蔽GPS更新并简化地球参数,实现了仅依赖IMU数据的轨迹解算。文章详细介绍了代码改造、轨迹可视化方法,并分析了误差累积的根本原因,为深入理解惯性导航原理与传感器融合的必要性提供了宝贵的实践经验。

ff678的博客 398

rmi的执行流程

定义并实现远程接口。服务器创建远程对象并注册到RMI注册表。客户端通过注册表查找远程对象。客户端调用方法,通过Stub和网络传输到服务器。服务器执行方法并返回结果给客户端。RMI虽然简单易用,但由于性能和复杂性问题,现代分布式系统更多使用RPC框架(如gRPC)或RESTful API。如果你有具体问题或想深入某部分,可以告诉我!

qq_63553317的博客 940

学生党投稿Applied Soft Computing:从导师账号登录到通讯作者设置的全流程解惑

本文详细解析了学生投稿Applied Soft Computing期刊的全流程,重点介绍了导师账号登录、通讯作者设置、作者排序调整以及开放获取费用等关键环节的避坑技巧。针对LaTeX稿件处理和财务选项选择提供了实用建议,帮助学生顺利完成SCI期刊投稿。

weixin_30352191的博客 211

RMI的几点补充

1.localhost不能用于RMI,如果想在单一机器上测试RMI,得指定机器名称。2.除非你的电脑有一个活动的TCP/IP连线,否则RMI机制不会运作。即使所有的组件都只和本机进行通信,也不例外。3.eclipse下有一些插件,比如rmiplugin,可以便于rmi的开发。http://sourceforge.net/project/showfiles.php?group_id=1636

wonder的地下室 1446

S32K144 LPI2C Master/Slave模式配置与多设备通信实战

本文详细介绍了NXP S32K144微控制器中LPI2C模块的主从模式配置与多设备通信实战。内容涵盖硬件连接、引脚配置、主从模式深度设置、中断/DMA应用,并通过AT24C16 EEPROM、SHT30传感器等实例,解析了多设备通信中的地址切换、时序控制及常见问题排查技巧,帮助开发者高效实现基于LPI2C的稳定通信。

weixin_29158047的博客 269

#systemverilog# 之 event region 和 timeslot 仿真调度(二)例子

由于疫情的关系,一时半会回不了学校了。今天开始,哪怕在家也要克服惰性开始学习了。今天来个的想了很久但都犯懒而没动手的内容,就是关于仿真软件在跑systemverilog的时候,是如果通过将HDL代码分成5个区域来编译,从而实现用软件模拟硬件的运行结果的思想。 首先,是基础概念,systemverilog标准划分了仿真软件的5个跑仿真所要执行的区域,说白了就是规定了软件在跑代码的时候要把代码分成5类,放到5个堆栈里面分别跑,这样才能:明明在软件上是以顺序方式来执行代码的,却能“看似”像在硬件中那样的实现并行

那么菜的博客 1765

RMI

RMI RMI(Remote Method Invocation,远程方法调用)是用Java在JDK1.2中实现的,它大大增强了Java开发分布式应用的能力。Java作为一种风靡一时的网络开发语言,其巨大的威力就体现在它强大的开发分布式网络应用的能力上,而RMI就是开发百分之百纯Java的网络分布式应用系统的核心解决方案之一。其实它可以被看作是RPC的Java版本。但是传统RPC并不能很好地应用于...

weixin_41924879的博客 868

PCL 基于法线微分(DoN)的点云分割【2026最新版】

基于法线微分的分割。博客长期更新,本文最新更新时间为:2026年5月10日。

点云侠的博客 39万+

RMI基础教程及构建一个最简单的RMI系统

      RMI是Java对象进行远程访问的一种规范——也就是说,从Java虚拟机(Java Virtual Machine,JVM)而不是特定对象的主机访问。这些对象可能位于拥有JVM的同一个物理主机上,或者位于其他计算机上,并通过某个网络连接到宿主主机(服务器)。规范包括这些对象进行编码的规则,如何定位对象,如何远程调用,方法的参数和计算结果如何在JVM之间传递。RMI的缺省实现是 JRMP

1114

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Fanuc 机器人rmi 功能

Fanuc 机器人的是一种强大的通信功能,允许外部设备(如 PLC、PC、HMI 或 ROS 系统)通过与机器人控制器进行和。读取/写入机器人寄存器(R, I/O, 位置寄存器, 系统变量等)。监控机器人状态(运行/停止、报警、程序行号)。启动/停止程序。选择并执行指定宏程序。触发特定动作(如工具开关)。基于 TCP/IP 协议,响应速度通常在毫秒级。

ZPC8210的博客 1336

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

rmi远程调用被拒绝_简单的RMI实现

1.分布式计算机基本理解什么是分布式计算?简单来说,就是“由于任务量巨大,一台计算机无法短时间内完成,所以把一个任务分给其他一台甚至多台计算机来完成”2.分布式计算与通信的区别很好理解,通信是client和server之间互相发送信息;而分布式计算是一台计算机调用其他计算机的方法或者发布任务,然后接收返回结果。分布式计算肯定是要通信的,但通信只是手段不是目的。3.分布式体系结构模型最简单的分布式是...

weixin_39631953的博客 355

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: 自己构造 Create IRP
下一篇: 在VC中编译驱动
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值