我总是直接设置驱动程序图像路径。(c: windows system32 drivers abc.sys)

但是我只是知道许多设备驱动程序将其图像路径设置为 %SystemRoot% System32 SVChost.exe -K NetSVCS
enter image description here
这是Lanmanworkstation驾驶员注册表Hive。
我猜lanmanworkstation驱动程序的图像文件是mrxsmb.sys
但是他们没有将“ System32 drivers mrxsmb.sys”放置。为什么。

有什么 svchost.exe -k netsvcs 意思是?
即使没有某些路径,StarterVice功能也可以很好地工作。
服务管理器(?我不确定)如何找到驾驶员的图像路径?

使用这个有优势吗?
如果我决定使用这种方式,是否应该修改我的驱动程序代码怎么办?

有帮助吗?

解决方案

您在设备驱动程序和服务之间感到困惑。
svchost.exe用于在多个服务之间共享相同的过程。该实现是Windows内部的,因此不支持Windows之外的使用。

如果您编写设备驱动程序(用于硬件或过滤器驱动程序)或不适用于Microsoft,则不能使用SVChost。

混乱的原因是因为旧样式(NT4),可以使用服务控制管理器API开始非插电和播放驱动程序。

其他提示

SVChost是DLL中包含的其他服务的主机过程。 “ -K”之后的部分表示服务组。您可以在 HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters 在里面 ServiceDll 价值。我猜想如果删除映像路径是因为服务类型设置为 SERVICE_WIN32_SHARE_PROCESS, ,SCM可能会忽略图像路径(对此不确定)。

svchost.exe 是“多功能”服务。它将多个服务纳入一个单个EXE文件中,每个文件都可以使用EG服务管理控制台进行单独控制。 svchost.exe的参数陈述了EXE文件中的“子服务”。

因为starterVice()不是对服务本身的控制消息,而是仅启动某个可执行文件的请求(本身必须“知道”它是服务(和Wich Service),然后将向服务控制管理器注册), Windows将简单地执行二进制 ImagePath 指着。

在这种情况下(lanmanworkstation)这个二进制是 svchost.exe, ,给出的参数是 -k netsvc. 。这使得SVCHOST.EXE知道应该启动哪些服务中的哪一项。

像往常一样,二进制文件本身不需要包含所有功能,还可以加载其他库。 mrxsmb.sys 尽管我不确定这一点,但很可能是这样的图书馆。

因此,此答案更多地比“是的,NetSVC和Mrxsmb.sys是LanmanWorkstation”。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top