예제 #1
0
 Q_MANAGED
 QV4ParticleData(QV4::ExecutionEngine *engine, QQuickParticleData *datum)
     : Object(engine)
 {
     setVTable(&static_vtbl);
     this->datum = datum;
 }
예제 #2
0
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;
}
예제 #3
0
void FakePCIID::unhookProvider()
{
    if (!mDeviceVtable)
        return; // not hooked

    // restore provider IOPCIDevice vtable on stop
    setVTable(mProvider, mDeviceVtable);
    mDeviceVtable = NULL;

    mProvider->release();
    mProvider = NULL;
}