【发布时间】:2017-08-17 19:47:54
【问题描述】:
我是 Windows 内核编程的新手。我想知道如何转换给定的 NT 内核命名空间(如 \Device\HarddiskVolume1)中的路径到内核对象以供进一步使用,如果可能的话。如果不同对象类型有单独的函数,我只需要硬盘卷的函数。
换句话说,有没有类似的东西:
ObGetObjectByName(wchar_t *name)
我听说有(未记录的)方法可以从用户空间浏览 NT 内核命名空间,例如 WinObj 实用程序使用的方法。我需要的是从内核驱动程序中访问硬盘对象。
【问题讨论】:
-
对于设备上的打开文件对象,您可以使用
IoCreateFile[Ex]、NtOpenFile或ZwOpenFile、ZwCreateFile或NtCreateFile -
对于更一般的(不仅是设备),您可以使用
ObOpenObjectByName -
或
ObReferenceObjectByName如果您需要指向对象的指针,但不需要句柄
标签: c windows windows-kernel