Dll 如何显式链接.sys文件

Dll 如何显式链接.sys文件,dll,wdm,Dll,Wdm,如何在windows上显式链接到.sys文件?MSDN说您可以使用LoadLibrary和GetProcAddress函数来显式链接和访问dll的成员。我可以成功地使用它至少获得关联dll的句柄,但是当我使用.lib或.sys尝试它们时,它们不起作用或返回null。我可以理解它不能与.lib一起工作,尽管它的名称中有library,但我已经读到.sys文件通常是DLL if (0 == LoadLibraryA("videoprt.sys")) { printf("goodbye");

如何在windows上显式链接到.sys文件?MSDN说您可以使用LoadLibrary和GetProcAddress函数来显式链接和访问dll的成员。我可以成功地使用它至少获得关联dll的句柄,但是当我使用.lib或.sys尝试它们时,它们不起作用或返回null。我可以理解它不能与.lib一起工作,尽管它的名称中有library,但我已经读到.sys文件通常是DLL

if (0 == LoadLibraryA("videoprt.sys"))
{
    printf("goodbye");
} 

这将进行编译,但返回的.sys文件地址将为零,如果使用更典型的windows dll,则不会返回零。如何链接.sys文件以便访问导出的函数

sys文件的用途是保存一些预定义的例程,用于控制硬件设备。它将由Windows操作系统加载/卸载,而不是由任何用户程序加载/卸载。谢谢。因此,基本上sys文件是密封的,即使msdn说它可能导出某些函数,这是export一词的不同用法,与dll不同。基本上,当一个驱动程序导出一个函数时,它是由irp或其他什么东西导出的,而不是由简单的dll导出的,除非另有说明?这就是它的工作原理还是我还是离开了?我知道驱动程序必须能够相互通信和导出功能,所以我需要使用驱动程序或用户界面(如果可用)?我知道即插即用,我认为操作系统负责最初启动显示器微型端口和视频端口对,但我应该…能够与硬件进行交互,如何?Microsoft Windows是否删除与硬件的所有交互?如果所有这些都被操作系统锁定,人们如何开发额外的硬件和软件?理论上,我可以编写一个驱动程序来与相应的驱动程序交互并从用户api或驱动程序获取请求吗?我想我需要一个driver_对象,它是一个包含指向驱动程序函数的指针的结构,irp通过操作系统的I/o管理器访问这些驱动程序函数?知道如何获取驱动程序的名称或指向其驱动程序的指针吗对象结构?