Beispiel #1
0
void initialize_hidden_class_method_of_anonymous(sCLClass* klass)
{
    klass->mFreeFun = NULL;
    klass->mShowFun = NULL;
    klass->mMarkFun = NULL;
    klass->mCreateFun = NULL;

    if(klass->mFlags & CLASS_FLAGS_NATIVE_BOSS) {
        gAnonymousClass = klass;
        gAnonymousTypeObject = create_type_object(gAnonymousClass);
    }
}
Beispiel #2
0
void initialize_hidden_class_method_of_range(sCLClass* klass)
{
    klass->mFreeFun = NULL;
    klass->mShowFun = NULL;
    klass->mMarkFun = mark_range_object;
    klass->mCreateFun = create_range_object_for_new;

    if(klass->mFlags & CLASS_FLAGS_NATIVE_BOSS) {
        gRangeClass = klass;
        gRangeTypeObject = create_type_object(gRangeClass);
    }
}
Beispiel #3
0
VOID 
init_symbol_link(VOID)
{
	UNICODE_STRING Name;
	OBJECT_TYPE_INITIALIZER ObjectTypeInitializer;

	/* Create the object type for the "SymbolicLink" object. */
	memset(&ObjectTypeInitializer, 0, sizeof(OBJECT_TYPE_INITIALIZER));
	init_unistr(&Name, (PWSTR)LinkName);
	ObjectTypeInitializer.DefaultPagedPoolCharge = sizeof(OBJECT_SYMBOLIC_LINK);
	ObjectTypeInitializer.ValidAccessMask = SYMBOLIC_LINK_ALL_ACCESS;
	ObjectTypeInitializer.GenericMapping = symbol_link_mapping;
	ObjectTypeInitializer.DeleteProcedure = delete_symbol_link;
	ObjectTypeInitializer.ParseProcedure = parse_symbol_link;
	create_type_object(&ObjectTypeInitializer, &Name, &symbol_link_type);
} /* end init_symbol_link */
Beispiel #4
0
VOID
init_completion_implement(VOID)
{
	OBJECT_TYPE_INITIALIZER ObjectTypeInitializer;
	UNICODE_STRING Name;

	memset(&ObjectTypeInitializer, 0, sizeof(ObjectTypeInitializer));
	init_unistr(&Name, completion_type_name);
	ObjectTypeInitializer.Length = sizeof(ObjectTypeInitializer);
	ObjectTypeInitializer.DefaultNonPagedPoolCharge = sizeof(struct uk_completion);
	ObjectTypeInitializer.GenericMapping = completion_mapping;
	ObjectTypeInitializer.PoolType = NonPagedPool;
	ObjectTypeInitializer.ValidAccessMask = EVENT_ALL_ACCESS;
	ObjectTypeInitializer.UseDefaultObject = TRUE;
	create_type_object(&ObjectTypeInitializer, &Name, &completion_object_type);
}
Beispiel #5
0
VOID
init_section_implement(VOID)
{
	OBJECT_TYPE_INITIALIZER ObjectTypeInitializer;
	UNICODE_STRING Name;

	/* Initialize the Section object type  */
	memset(&ObjectTypeInitializer, 0, sizeof(ObjectTypeInitializer));
	init_unistr(&Name, (PWSTR)section_type_name);
	ObjectTypeInitializer.Length = sizeof(ObjectTypeInitializer);
	ObjectTypeInitializer.DefaultPagedPoolCharge = sizeof(struct win32_section);
	ObjectTypeInitializer.PoolType = PagedPool;
	ObjectTypeInitializer.UseDefaultObject = TRUE;
	ObjectTypeInitializer.GenericMapping = section_mapping;
	ObjectTypeInitializer.DeleteProcedure = delete_section;
	create_type_object(&ObjectTypeInitializer, &Name, &section_object_type);
} /* end init_section_implement */
Beispiel #6
0
VOID
init_mutant_implement(VOID)
{
	OBJECT_TYPE_INITIALIZER ObjectTypeInitializer;
	UNICODE_STRING Name;

	memset(&ObjectTypeInitializer, 0, sizeof(ObjectTypeInitializer));
	init_unistr(&Name, (PWSTR)mutant_type_name);
	ObjectTypeInitializer.Length = sizeof(ObjectTypeInitializer);
	ObjectTypeInitializer.DefaultNonPagedPoolCharge = sizeof(struct kmutant);
	ObjectTypeInitializer.GenericMapping = mutant_mapping;
	ObjectTypeInitializer.PoolType = NonPagedPool;
	ObjectTypeInitializer.ValidAccessMask = MUTANT_ALL_ACCESS;
	ObjectTypeInitializer.UseDefaultObject = TRUE;
	ObjectTypeInitializer.DeleteProcedure = delete_mutant;
	create_type_object(&ObjectTypeInitializer, &Name, &mutant_object_type);
}
Beispiel #7
0
VOID
init_thread_mgmt(VOID)
{
	UNICODE_STRING Name;
	OBJECT_TYPE_INITIALIZER ObjectTypeInitializer;

	ktrace("Creating Thread Object Type\n");

	/*  Initialize the Thread type  */
	memset(&ObjectTypeInitializer, 0, sizeof(ObjectTypeInitializer));
	init_unistr(&Name, (PWSTR)ThreadTypeName);
	ObjectTypeInitializer.Length = sizeof(ObjectTypeInitializer);
	ObjectTypeInitializer.DefaultNonPagedPoolCharge = sizeof(struct ethread);
	ObjectTypeInitializer.GenericMapping = PiThreadMapping;
	ObjectTypeInitializer.PoolType = NonPagedPool;
	ObjectTypeInitializer.ValidAccessMask = THREAD_ALL_ACCESS;
	ObjectTypeInitializer.UseDefaultObject = TRUE;
	ObjectTypeInitializer.DeleteProcedure = delete_thread;
	ObjectTypeInitializer.PollProcedure = poll_thread;
	create_type_object(&ObjectTypeInitializer, &Name, &thread_object_type);
}
Beispiel #8
0
int main(int argc, char *argv[]) {
	std::cout << "C++: This is process: " <<  getpid() << std::endl;

	
    PyObject *pName, *pModule, *pFunc; //, *pDict, ;
    PyObject *pValue; // *pArgs,
    // int i;

	std::string module("python6");
	std::string function("run_now");

	// Initilize Python
    Py_Initialize();
    
	/* NameObjectType.tp_new = PyType_GenericNew;
	if (PyType_Ready(&NameObjectType) < 0) {
		PyErr_Print();
		fprintf(stderr, "Type not ready - PyType_Ready\n");
		return 1;
	} */

 
	PyTypeObject* type_object = create_type_object();
	if (PyType_Ready(type_object) < 0) {
		PyErr_Print();
		fprintf(stderr, "Type not ready - PyType_Ready\n");
		free_type_object(type_object);
		return 1;
	}

	PyObject* m = Py_InitModule3("name", NULL, "XXX");
	if (!m) {
		PyErr_Print();
		fprintf(stderr, "Failed to load initilize module - Py_InitModule3\n");
		free_type_object(type_object);
		return 1;
	}

	/*Py_INCREF(&NameObjectType);
	PyModule_AddObject(m, "Name", (PyObject *)&NameObjectType);*/

	Py_INCREF(type_object);
	PyModule_AddObject(m, "Name", (PyObject*)type_object);
	
	
    // Load module python2.py
    pName = PyString_FromString(module.c_str()); 					// Error checking of pName left out
    pModule = PyImport_Import(pName);
    Py_DECREF(pName);
    if (!pModule) {
		PyErr_Print();
		fprintf(stderr, "Failed to load \"%s\"\n", argv[1]);
		free_type_object(type_object);
		return 1;
	}

	// Get the python fuction to call
    pFunc = PyObject_GetAttrString(pModule, function.c_str()); 		// pFunc is a new reference 
    if (!pFunc || !PyCallable_Check(pFunc)) {
        if (PyErr_Occurred())
            PyErr_Print();
        fprintf(stderr, "Cannot find function \"%s\"\n", argv[2]);
	    Py_XDECREF(pFunc);
	    Py_DECREF(pModule);
		free_type_object(type_object);
        return 1;
    }

    // Make the call to the python function
    pValue = PyObject_CallObject(pFunc, NULL);
    if (!pValue) {
        PyErr_Print();
        fprintf(stderr,"Call failed\n");
        Py_DECREF(pFunc);
        Py_DECREF(pModule);
		free_type_object(type_object);
        return 1;
    }

	// Show the result of the python call
    printf("Result of call: %ld\n", PyInt_AsLong(pValue)); 
    
    // Decrease counters for python garbage collection
    Py_DECREF(pValue);
    Py_XDECREF(pFunc);
    Py_DECREF(pModule);
    
	std::cout << "Before Py_Finalize()" << std::endl;
	
    // Clean up python
    Py_Finalize();
    
	free_type_object(type_object);
    
	std::cout << "Freeing the allocated memory" << std::endl;
		
    return 0;
}