//
// 名称: GetDriverBaseInfo
// 说明: 根据驱动名称获取驱动对象信息: 驱动基址,驱动的大小
// 备注:
// email: cppcoffee@gmail.com
//
BOOLEAN GetDriverBaseInfo( IN PWCHAR pszName, OUT DWORD* pnBasePtr, OUT DWORD* pnSize )
{
UNICODE_STRING uniName;
RtlInitUnicodeString( &uniName, pszName );
PFILE_OBJECT pFileObject;
PDEVICE_OBJECT pDeviceObject;
// 获取设备指针
NTSTATUS status = IoGetDeviceObjectPointer( &uniName, FILE_READ_DATA, &pFileObject, &pDeviceObject );
if ( !NT_SUCCESS(status) )
return FALSE;
PDRIVER_OBJECT pDriverObj = pDeviceObject->DriverObject;
// 返回设备基址和设备大小
*pnBasePtr = (ULONG)pDriverObj->DriverStart;
*pnSize = pDriverObj->DriverSize;
ObDereferenceObject( pFileObject );
return TRUE;
}
通过驱动名字获取驱动基址和大小
最新推荐文章于 2021-10-28 10:55:24 发布