2017-03-08 43 views
0

我一直在与WDK 10和我已经加入rpcrt4.lib到链接。我的驱动程序已成功构建。当我尝试使用命令net start mydriver运行驱动程序。我收到系统错误2消息。我尝试使用依赖沃克,但我没有看到任何DLL文件丢失。当我从其他依赖项中删除rpcrt4.lib时,我能够毫无问题地运行驱动程序。但是,当我加rpcrt4.lib,它成功但写作NET START mydriver它给系统错误2.我为我使用的是功能UuidCreate需要rpcrt4.lib建设。WDK 10 - Rpcrt4.dll中 - 系统错误2

我一直在这个问题上的最后1周,但没有发现任何东西。

由于

回答

2

Rpcrt4.dll是用户模式DLL,并且不能在内核空间中使用。当然你的驱动失败,代码STATUS_OBJECT_NAME_NOT_FOUND(其映射到Win32错误ERROR_FILE_NOT_FOUND(2))的负载 - 的Rpcrt4.dll系统搜索注册HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下,并没有发现

用于创建在内核模式下的UUID,你需要使用ExUuidCreate

+0

灿你请告诉我你是如何知道Rpcrt4.dll是用户模式的dll的。因为我没有看到任何msdn中说Rpcrt4.dll是用户模式的DLL。 –

+1

@KaushalKumarSingh - 奇怪的问题..它在用户模式中使用 - 支持RPC的特殊设计 - 远程过程调用。 PE不能在用户模式和内核模式下工作。这是异或。再看看例如在其导入..你可以看到它从'ntdll.dll','kernel32.dll'导入或'API-MS-*','kernelbase.dll' - 所以,如果假定'rpcrt4'工作在内核中 - 所有依赖关系也必须在内核中工作。所以'ntdll'也是内核模式的DLL?并在约最后的读取[导出驱动程序](https://msdn.microsoft.com/en-us/library/windows/hardware/ff542891(V = vs.85)的.aspx) – RbMm

+0

'中导出驱动 导出驱动程序必须安装在%Windir%\ System32 \ Drivers目录中 - rpcrt4.dll - 此处未找到 – RbMm