1

我正在使用 Apple 的DriverKitUserClientSample代码作为基础,但我正在尝试使用PCIDriverKit. 在我的MyClass::Start方法中,我成功地从提供者那里获得,并IOPCIDevice调用它,获得正确的值。当我使用. 我将指向 this 的指针保存为结构中的成员。Open()GetBusDeviceFunction()MyClass::StartDriverKitSampleAppIOPCIDeviceMyClass::IVars

安装 DEXT 后,我想使用我正在编写的用户程序访问同一设备,该程序调用不同的方法MyClass::Foo。但是当我尝试运行相同的两个函数Open()和/或GetBusDeviceFunction()从我的方法运行时,MyClass::Foo我会遇到内核崩溃。使用 LLDB,我看到在访问对象时我得到了 GPF IOPCIDevice,即使我仍然可以MyClass::IVars毫无问题地访问结构的其他成员(整数、字符等)。

我究竟做错了什么?有什么提示吗?

4

1 回答 1

1

问题已解决:Start(provider, SUPERDISPATCH)Start()将提供程序转换为IOPCIDevice. 将此添加到代码后,崩溃停止发生。

于 2021-08-12T08:43:32.010 回答