Q_MANAGED QV4ParticleData(QV4::ExecutionEngine *engine, QQuickParticleData *datum) : Object(engine) { setVTable(&static_vtbl); this->datum = datum; }
bool FakePCIID::hookProvider(IOService *provider) { if (mDeviceVtable) return true; // already hooked IOPCIDevice *device = OSDynamicCast(IOPCIDevice, provider); if (!device) { AlwaysLog("provider is not a IOPCIDevice: %s\n", provider->getMetaClass()->getClassName()); return false; } // merge FakeProperties into the provider (only properties that do not exist) mergeFakeProperties(provider, "FakeProperties", false); mergeFakeProperties(provider, "FakeProperties-Forced", true); // hook provider IOPCIDevice vtable on attach/start mProvider = device; device->retain(); mDeviceVtable = getVTable(device); setVTable(device, mStubVtable); return true; }
void FakePCIID::unhookProvider() { if (!mDeviceVtable) return; // not hooked // restore provider IOPCIDevice vtable on stop setVTable(mProvider, mDeviceVtable); mDeviceVtable = NULL; mProvider->release(); mProvider = NULL; }