在Delphi中CreateFile不能返回一个合适的Handle – 设备

希望能find一些在windows中有服务经验的人。

我想在Delphi中使用NdisProt驱动程序用于以太网适配器

 my_Handle:= CreateFile(PChar('\\。\ NdisProt'),
     GENERIC_WRITE或GENERIC_READ,0,nil,
     OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);

(也曾用\\.\\NdisProt

执行后, my_Handle的值始终为“4008”,GetLastError总是返回0

如果我试图读取或写入文件,我得到违反,有人知道为什么我得到这种不需要的行为?

Solutions Collecting From Web of "在Delphi中CreateFile不能返回一个合适的Handle – 设备"

如果CreateFile没有返回Invalid_Handle_Value ,那么它给了你一个有效的句柄,否则该设备的驱动程序是严重的错误。 假设前者。

访问违规与您的处理值无关。 这意味着你正在访问不属于你的进程的内存(例如,通过解引用空指针,未初始化的指针,非指针或已经释放的指针)。 你的问题在别处,也许在你忽略在这里显示的阅读或编写代码。

你问题中的代码不是一个赋值语句。 这是一个比较表达。 你应该从编译器得到一个警告:变量的值是未定义的。 如果在执行该代码后总是具有值4008,则应该执行该代码之前检查它是否也具有该值。 可能只是CreateFile返回一个有效的句柄值,但是你没有使用它返回的值。

如果4008不是CreateFile返回的值,那么4008可能不是一个有效的句柄值。 如果操作系统把句柄看作是指针(或者如果它在句柄上执行某种类型的转换来生成指针),那么可能是这个“句柄”对应的指针在你的进程中不是有效的地址; 这将解释访问冲突。