⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kjs.c

📁 一个类似windows
💻 C
字号:
#include "kjs.h"
#include "js.h"

PKJS kjs_create_interp( VOID *Reserved ) {
  PKJS kjs = ExAllocatePool( NonPagedPool, sizeof(KJS) );
  if( !kjs ) return kjs;
  kjs->interp = js_create_interp(NULL, kjs);
  return kjs;
}

void kjs_destroy_interp( PKJS kjs ) {
  js_destroy_interp( kjs->interp );
  ExFreePool( kjs );
}

void kjs_eval( PKJS kjs, PCHAR commands ) {
  if( !js_eval( kjs->interp, commands ) )
    DbgPrint( "JS Error: %s\n", kjs->vm->error );
}

void kjs_system_register( PKJS kjs, PCHAR name, PVOID context,
			  PKJS_METHOD function ) {
  JSSymbolList *nsym = kjs->ctx->registered_symbols;
  JSSymbol sym = js_vm_intern(kjs->vm, name);

  while( nsym ) {
    if( sym == nsym->symbol ) {
      nsym->registered_function = function;
      nsym->context = context;
      return;
    }
    nsym = nsym->next;
  }

  nsym = js_calloc(kjs->vm, 1, sizeof(JSSymbolList));
  nsym->symbol = sym;
  nsym->registered_function = function;
  nsym->context = context;
  nsym->next = kjs->ctx->registered_symbols;
  kjs->ctx->registered_symbols = nsym;
}

void kjs_system_unregister( PKJS kjs, PVOID context, PKJS_METHOD function ) {
  JSSymbolList *nsym = kjs->ctx->registered_symbols;
  while( nsym ) {
    if( function == nsym->registered_function &&
	context  == nsym->context ) {
      nsym->registered_function = 0;
      nsym->context = 0;
    }
    nsym = nsym->next;
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -