note : ObReferenceObjectByName usage
2013-09-11 17:20
405 查看
得到驱动对象
.h/// 系统全局变量声明 extern POBJECT_TYPE *IoDriverObjectType;
/// 常量, 用WinObj.exe 可以看到 #define DRVOBJ_NAME_XX L"\\xx"
NTSTATUS GetDriverObject( WCHAR * pcDriverObjectName, PDRIVER_OBJECT * ppDrvObj);
.c
NTSTATUS GetDriverObject(WCHAR * pcDriverObjectName, PDRIVER_OBJECT * ppDrvObj) { NTSTATUS status = STATUS_UNSUCCESSFUL; UNICODE_STRING strDrvObjName; if (NULL == ppDrvObj) return status; /// 得到驱动对象 /// 参数2 参考 InitializeObjectAttributes.Attributes /// 内核句柄 |大小写不敏感 RtlInitUnicodeString(&strDrvObjName, pcDriverObjectName); status = ObReferenceObjectByName( &strDrvObjName, ///< IN PUNICODE_STRING ObjectName, OBJ_KERNEL_HANDLE | OBJ_CASE_INSENSITIVE, ///< IN ULONG Attributes, NULL, ///< IN PACCESS_STATE PassedAccessState OPTIONAL, 0, ///< IN ACCESS_MASK DesiredAccess OPTIONAL, *IoDriverObjectType, ///< IN POBJECT_TYPE ObjectType, KernelMode, ///< IN KPROCESSOR_MODE AccessMode, NULL, ///< IN OUT PVOID ParseContext OPTIONAL, ppDrvObj ///< OUT PVOID *Object ); return status; }
调用代码
NTSTATUS ProcessXX() { NTSTATUS status = STATUS_UNSUCCESSFUL; PDRIVER_OBJECT pDrvObj = NULL; DBGPRT((">> ProcessXX\n")); status = GetDriverObject(DRVOBJ_NAME_XX, &pDrvObj); if (!NT_SUCCESS(status)) goto _ProcessXX_END; DBGPRT((\ "pDrvObj->DriverName = %wZ\n" \ "pDrvObj->HardwareDatabase = %wZ\r\n", &pDrvObj->DriverName, pDrvObj->HardwareDatabase)); _ProcessXX_END: if (NULL != pDrvObj) ObDereferenceObject(pDrvObj); ///< ! DBGPRT(("<< ProcessXX\n")); return status; }
相关文章推荐
- ObReferenceObjectByName通过对象名得到对象指针_例如 设备 事件 互斥体
- ObReferenceObjectByName蓝屏问题
- 蛋疼的ObReferenceObjectByName调试
- ObReferenceObjectByName蓝屏问题
- 过滤/ObReferenceObjectByName/XT
- [转载]关于驱动中的ObReferenceObjectByName 和 IoGetDeviceObjectPointer
- IoGetDeviceObjectPointer和ObReferenceObjectByName得到设备对象指针
- ObReferenceObjectByName的使用
- 通过驱动名称得到(T雪工具)驱动对象名_ObReferenceObjectByName_函数的用法
- ObReferenceObjectByName
- [转载]关于驱动中的ObReferenceObjectByName 和 IoGetDeviceObjectPointer
- ObReferenceObjectByName 函数
- ObReferenceObjectByName vs IoGetDeviceObjectPointer
- ObReferenceObjectByName 函数解析
- ObReferenceObjectByName 函数解析
- ObReferenceObjectByName 函数
- ObReferenceObjectByName函数调用WIN7下的解决 - UnMovedMover
- Inline hook ObReferenceObjectByHandle,附加问题笔记做记录
- ObReferenceObjectByHandle内核函数
- ObReferenceObjectByHandle内核函数