我们有一个传统的WinCE设备,当它在封闭的以太网上运行多年时,它一直工作得很好。但现在我们试图让它与其他设备很好地工作,但当网络上有DHCP服务器时,它就失败了。
问题是,为了加快启动速度,最初的工程师在注册表中设置了"DhcpEnableImmediateAutoIP“。这有效地关闭了超时时间,在超时时间内,WinCE会等待一段时间,然后确定没有DHCP服务器并执行零配置。但是,因为它实际上没有关闭DHCP请求,所以它使用zeroconfig分配IP地址,然后在几秒钟后从DHCP服务器获得第二个IP地址时出错。
我可以看到“DHCP”是控制DhcpEnableImmediateAutoIP的几个键之一,所以我想知道如果我只将"EnableDHCP“设置为0会发生什么?这是关闭DHCP请求,使其只执行zeroconfig,还是同时关闭zeroconfig,使其永远不会获得IP地址?
发布于 2012-06-29 02:46:07
我最终发现EnableDHCP会关闭DHCP,然后采用静态IP设置(因此您需要提供ip地址、子网掩码和可选的网关/dns)。
下面是您可以设置的所有选项:http://msdn.microsoft.com/en-us/library/ms884977.aspx
保持DhcpEnableImmediateAutoIP,为AutoInterval : REG_DWORD注册表项设置可能的最高值,该注册表项指定用于验证REG_DWORD服务器是否可用的时间间隔(以秒为单位)。该值在内部乘以* 1000,以毫秒为单位,因此您可以设置的最大值对应于~49天。如果设备一直开着,那么过了那段时间,你就会把一切都搞砸了……
一个明确的解决方案可以是克隆DHCP客户端(D:\WINCE600\PRIVATE\WINCEOS\COMM\DHCP)并修改它,以便不发送discover分组,例如以某种方式截断当AutoInterval定时器到期时周期性调用的函数。
https://stackoverflow.com/questions/10798154
复制相似问题