Windows 设备驱动程序&x27;图像路径

Windows 设备驱动程序&x27;图像路径,windows,windows-services,device-driver,smb,Windows,Windows Services,Device Driver,Smb,我总是直接设置我的驱动程序映像路径。(C:\Windows\System32\drivers\abc.sys) 但我只知道许多设备驱动程序将其ImagePath设置为%SystemRoot%\system32\svchost.exe-k netsvcs 这是Lanmanworkstation驱动程序的注册表配置单元。 我猜Lanmanworkstation驱动程序的映像文件是mrxsmb.sys 但是他们没有放“System32\drivers\mrxsmb.sys”。为什么 svchost.

我总是直接设置我的驱动程序映像路径。(C:\Windows\System32\drivers\abc.sys)

但我只知道许多设备驱动程序将其ImagePath设置为%SystemRoot%\system32\svchost.exe-k netsvcs

这是Lanmanworkstation驱动程序的注册表配置单元。
我猜Lanmanworkstation驱动程序的映像文件是mrxsmb.sys
但是他们没有放“System32\drivers\mrxsmb.sys”。为什么

svchost.exe-k netsvcs是什么意思?
即使没有特定的路径,StartService功能也能正常工作。
服务经理(?我不确定)如何找到驾驶员的图像路径

使用此功能有好处吗?
如果我决定使用这种方式,我的驱动程序代码应该修改吗?

svchost.exe是一种“多用途”服务。它将多个服务合并到一个exe文件中,每个exe文件都可以使用服务管理控制台等单独控制。svchost.exe的参数表示exe文件中的“子服务”

由于startService()不是服务本身的控制消息,而只是启动某个可执行文件的请求(该文件本身必须“知道”它是一个服务(以及wich服务),然后将向服务控制管理器注册),windows将只执行
ImagePath
指向的二进制文件

在本例中(LanManWorkstation),该二进制文件是
svchost.exe
,给它的参数是
-k netsvc
。这让svchost.exe知道应该启动它提供的众多服务中的哪一个

通常,二进制文件本身不需要包含所有函数,但也可以加载其他库
mrxsmb.sys
很可能就是这样一个库,尽管我不确定这一点

因此,这个答案更多的是“它通常是如何工作的”,而不是“是的,netsvc和mrxsmb.sys是LanManWorkstation”。

svchost.exe是一个“多用途”服务。它将多个服务合并到一个exe文件中,每个exe文件都可以使用服务管理控制台等单独控制。svchost.exe的参数表示exe文件中的“子服务”

由于startService()不是服务本身的控制消息,而只是启动某个可执行文件的请求(该文件本身必须“知道”它是一个服务(以及wich服务),然后将向服务控制管理器注册),windows将只执行
ImagePath
指向的二进制文件

在本例中(LanManWorkstation),该二进制文件是
svchost.exe
,给它的参数是
-k netsvc
。这让svchost.exe知道应该启动它提供的众多服务中的哪一个

通常,二进制文件本身不需要包含所有函数,但也可以加载其他库
mrxsmb.sys
很可能就是这样一个库,尽管我不确定这一点


因此,这个答案更多的是“它通常是如何工作的”,而不是“是的,netsvc和mrxsmb.sys是LanManWorkstation”。

svchost是DLL中包含的其他服务的主机进程。“-k”后面的部分表示服务组。您可以在
ServiceDll
值的
HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters
中找到服务DLL路径。我猜,如果删除映像路径,它仍能正确启动的原因是,服务类型设置为
服务\u WIN32\u共享\u进程
,SCM可能会忽略映像路径(对此不确定)。

svchost是DLL中包含的其他服务的主机进程。“-k”后面的部分表示服务组。您可以在
ServiceDll
值的
HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters
中找到服务DLL路径。我猜,如果删除映像路径,它仍能正确启动的原因是,服务类型设置为
服务\u WIN32\u共享\u进程
,SCM可能会忽略映像路径(对此不确定)。

您混淆了设备驱动程序和服务。
svchost.exe用于在多个服务之间共享同一进程。该实现是Windows内部的,因此不支持在Windows之外使用

如果您编写设备驱动程序(用于硬件或筛选器驱动程序)或不适用于Microsoft,则无法使用svchost


造成混淆的原因是,可以使用服务控制管理器API启动旧式(NT4)非即插即用驱动程序。

您混淆了设备驱动程序和服务。
svchost.exe用于在多个服务之间共享同一进程。该实现是Windows内部的,因此不支持在Windows之外使用

如果您编写设备驱动程序(用于硬件或筛选器驱动程序)或不适用于Microsoft,则无法使用svchost


造成混淆的原因是,可以使用服务控制管理器API启动旧式(NT4)非即插即用驱动程序。

我正在编写一个类似Lanmanager(网络重定向器)的设备驱动程序。我以为Lanmanworkstation是SMB重定向器的注册表项。我现在不确定。我错了吗?lanmanworkstation是工作站服务,驱动程序名为Mrxsmb.sys。请参阅注意,您不能使用svchost在多个服务之间共享同一进程(除非您在Microsoft的Windows部门工作(即使这样,也必须遵守非常严格的规则))。svchost的体系结构是Windows的100%内部结构,svchost与其托管服务之间的接口可能会在没有任何警告的情况下随时更改。啊哈,我想现在,工作站服务使用StartService()启动Mrxsmb.sys。我正在编写一个设备驱动程序,如Lanmanager(网络重定向器)。我以为Lanmanworkstation是SMB重定向器的注册表项。我现在不确定。我错了吗?lanmanworkstation是工作站服务,驱动程序名为Mrxsmb.sys。请参见注意,您不能使用svchost