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

📄 win32.c

📁 君正早期ucos系统(只有早期的才不没有打包成库),MPLAYER,文件系统,图片解码,浏览,电子书,录音,想学ucos,识货的人就下吧 russblock fmradio explore set
💻 C
📖 第 1 页 / 共 5 页
字号:
    int            mhz = 0;    kc = kstat_open();    if (kc != NULL)    {	ksp = kstat_lookup(kc, "cpu_info", 0, "cpu_info0");	/* kstat found and name/value pairs? */	if (ksp != NULL && ksp->ks_type == KSTAT_TYPE_NAMED)	{	    /* read the kstat data from the kernel */	    if (kstat_read(kc, ksp, NULL) != -1)	    {		/*		 * lookup desired "clock_MHz" entry, check the expected		 * data type		 */		kdata = (kstat_named_t *)kstat_data_lookup(ksp, "clock_MHz");		if (kdata != NULL && kdata->data_type == KSTAT_DATA_INT32)		    mhz = kdata->value.i32;	    }	}	kstat_close(kc);    }    if (mhz > 0)	return mhz * 1000.;#endif	/* HAVE_LIBKSTAT */    return -1;		// kstat stuff is not available, CPU freq is unknown}/* * Measure CPU freq using the pentium's time stamp counter register (TSC) */static double tsc_freq(){    static double ofreq=0.0;    int i;    int x,y;    i=time(NULL);    if (ofreq != 0.0) return ofreq;    while(i==time(NULL));    x=localcount();    i++;    while(i==time(NULL));    y=localcount();    ofreq = (double)(y-x)/1000.;    return ofreq;}static double CPU_Freq(){    double freq;    if ((freq = linux_cpuinfo_freq()) > 0)	return freq;    if ((freq = solaris_kstat_freq()) > 0)	return freq;    return tsc_freq();}static long WINAPI expQueryPerformanceFrequency(long long* z){    *z=(long long)CPU_Freq();    dbgprintf("QueryPerformanceFrequency(0x%x) => 1 ( %Ld )\n", z, *z);    return 1;}static long WINAPI exptimeGetTime(){    struct timeval t;    long result;    gettimeofday(&t, 0);    result=1000*t.tv_sec+t.tv_usec/1000;    dbgprintf("timeGetTime() => %d\n", result);    return result;}static void* WINAPI expLocalHandle(void* v){    dbgprintf("LocalHandle(0x%x) => 0x%x\n", v, v);    return v;}static void* WINAPI expGlobalHandle(void* v){    dbgprintf("GlobalHandle(0x%x) => 0x%x\n", v, v);    return v;}static int WINAPI expGlobalUnlock(void* v){    dbgprintf("GlobalUnlock(0x%x) => 1\n", v);    return 1;}static void* WINAPI expGlobalFree(void* v){    dbgprintf("GlobalFree(0x%x) => 0\n", v);    my_release(v);    //free(v);    return 0;}static void* WINAPI expGlobalReAlloc(void* v, int size, int flags){    void* result=my_realloc(v, size);    //void* result=realloc(v, size);    dbgprintf("GlobalReAlloc(0x%x, size %d, flags 0x%x) => 0x%x\n", v,size,flags,result);    return result;}static int WINAPI expLocalUnlock(void* v){    dbgprintf("LocalUnlock(0x%x) => 1\n", v);    return 1;}//static void* WINAPI expLocalFree(void* v){    dbgprintf("LocalFree(0x%x) => 0\n", v);    my_release(v);    return 0;}static HRSRC WINAPI expFindResourceA(HMODULE module, char* name, char* type){    HRSRC result;    result=FindResourceA(module, name, type);    dbgprintf("FindResourceA(module 0x%x, name 0x%x(%s), type 0x%x(%s)) => 0x%x\n",	module, name, HIWORD(name) ? name : "UNICODE", type, HIWORD(type) ? type : "UNICODE", result);    return result;}static HGLOBAL WINAPI expLoadResource(HMODULE module, HRSRC res){    HGLOBAL result=LoadResource(module, res);    dbgprintf("LoadResource(module 0x%x, resource 0x%x) => 0x%x\n", module, res, result);    return result;}static void* WINAPI expLockResource(long res){    void* result=LockResource(res);    dbgprintf("LockResource(0x%x) => 0x%x\n", res, result);    return result;}static int WINAPI expFreeResource(long res){    int result=FreeResource(res);    dbgprintf("FreeResource(0x%x) => %d\n", res, result);    return result;}//bool fun(HANDLE)//!0 on successstatic int WINAPI expCloseHandle(long v1){    dbgprintf("CloseHandle(0x%x) => 1\n", v1);    /* do not close stdin,stdout and stderr */    if (v1 > 2)	if (!close(v1))	    return 0;    return 1;}static const char* WINAPI expGetCommandLineA(){    dbgprintf("GetCommandLineA() => \"c:\\aviplay.exe\"\n");    return "c:\\aviplay.exe";}static short envs[]={'p', 'a', 't', 'h', ' ', 'c', ':', '\\', 0, 0};static LPWSTR WINAPI expGetEnvironmentStringsW(){    dbgprintf("GetEnvironmentStringsW() => 0\n", envs);    return 0;}static void * WINAPI expRtlZeroMemory(void *p, size_t len){    void* result=memset(p,0,len);    dbgprintf("RtlZeroMemory(0x%x, len %d) => 0x%x\n",p,len,result);    return result;}static void * WINAPI expRtlMoveMemory(void *dst, void *src, size_t len){    void* result=memmove(dst,src,len);    dbgprintf("RtlMoveMemory (dest 0x%x, src 0x%x, len %d) => 0x%x\n",dst,src,len,result);    return result;}static void * WINAPI expRtlFillMemory(void *p, int ch, size_t len){    void* result=memset(p,ch,len);    dbgprintf("RtlFillMemory(0x%x, char 0x%x, len %d) => 0x%x\n",p,ch,len,result);    return result;}static int WINAPI expFreeEnvironmentStringsW(short* strings){    dbgprintf("FreeEnvironmentStringsW(0x%x) => 1\n", strings);    return 1;}static int WINAPI expFreeEnvironmentStringsA(char* strings){    dbgprintf("FreeEnvironmentStringsA(0x%x) => 1\n", strings);    return 1;}static const char ch_envs[]="__MSVCRT_HEAP_SELECT=__GLOBAL_HEAP_SELECTED,1\r\n""PATH=C:\\;C:\\windows\\;C:\\windows\\system\r\n";static LPCSTR WINAPI expGetEnvironmentStrings(){    dbgprintf("GetEnvironmentStrings() => 0x%x\n", ch_envs);    return (LPCSTR)ch_envs;    // dbgprintf("GetEnvironmentStrings() => 0\n");    // return 0;}static int WINAPI expGetStartupInfoA(STARTUPINFOA *s){    dbgprintf("GetStartupInfoA(0x%x) => 1\n");    memset(s, 0, sizeof(*s));    s->cb=sizeof(*s);    // s->lpReserved="Reserved";    // s->lpDesktop="Desktop";    // s->lpTitle="Title";    // s->dwX=s->dwY=0;    // s->dwXSize=s->dwYSize=200;    s->dwFlags=s->wShowWindow=1;    // s->hStdInput=s->hStdOutput=s->hStdError=0x1234;    dbgprintf("  cb=%d\n", s->cb);    dbgprintf("  lpReserved='%s'\n", s->lpReserved);    dbgprintf("  lpDesktop='%s'\n", s->lpDesktop);    dbgprintf("  lpTitle='%s'\n", s->lpTitle);    dbgprintf("  dwX=%d dwY=%d dwXSize=%d dwYSize=%d\n",	      s->dwX, s->dwY, s->dwXSize, s->dwYSize);    dbgprintf("  dwXCountChars=%d dwYCountChars=%d dwFillAttribute=%d\n",	      s->dwXCountChars, s->dwYCountChars, s->dwFillAttribute);    dbgprintf("  dwFlags=0x%x wShowWindow=0x%x cbReserved2=0x%x\n",	      s->dwFlags, s->wShowWindow, s->cbReserved2);    dbgprintf("  lpReserved2=0x%x hStdInput=0x%x hStdOutput=0x%x hStdError=0x%x\n",	      s->lpReserved2, s->hStdInput, s->hStdOutput, s->hStdError);    return 1;}static int WINAPI expGetStdHandle(int z){    dbgprintf("GetStdHandle(0x%x) => 0x%x\n", z+0x1234);    return z+0x1234;}#ifdef QTX#define FILE_HANDLE_quicktimeqts	((HANDLE)0x444)#define FILE_HANDLE_quicktimeqtx	((HANDLE)0x445)#endifstatic int WINAPI expGetFileType(int handle){    dbgprintf("GetFileType(0x%x) => 0x3 = pipe\n", handle);    return 0x3;}#ifdef QTXstatic int WINAPI expGetFileAttributesA(char *filename){    dbgprintf("GetFileAttributesA(%s) => FILE_ATTR_NORMAL\n", filename);    if (strstr(filename, "QuickTime.qts"))	return FILE_ATTRIBUTE_SYSTEM;    return FILE_ATTRIBUTE_NORMAL;}#endifstatic int WINAPI expSetHandleCount(int count){    dbgprintf("SetHandleCount(0x%x) => 1\n", count);    return 1;}static int WINAPI expGetACP(void){    dbgprintf("GetACP() => 0\n");    return 0;}static int WINAPI expGetModuleFileNameA(int module, char* s, int len){    WINE_MODREF *mr;    int result;    //printf("File name of module %X (%s) requested\n", module, s);    if (module == 0 && len >= 12)    {	/* return caller program name */	strcpy(s, "aviplay.dll");	result=1;    }    else if(s==0)	result=0;    else	if(len<35)	    result=0;	else	{	    result=1;	    strcpy(s, "c:\\windows\\system\\");	    mr=MODULE32_LookupHMODULE(module);	    if(mr==0)//oops		strcat(s, "aviplay.dll");	    else		if(strrchr(mr->filename, '/')==NULL)		    strcat(s, mr->filename);		else		    strcat(s, strrchr(mr->filename, '/')+1);	}    if(!s)	dbgprintf("GetModuleFileNameA(0x%x, 0x%x, %d) => %d\n",		  module, s, len, result);    else	dbgprintf("GetModuleFileNameA(0x%x, 0x%x, %d) => %d ( '%s' )\n",		  module, s, len, result, s);    return result;}static int WINAPI expSetUnhandledExceptionFilter(void* filter){    dbgprintf("SetUnhandledExceptionFilter(0x%x) => 1\n", filter);    return 1;//unsupported and probably won't ever be supported}static int WINAPI expLoadLibraryA(char* name){    int result = 0;    char* lastbc;    if (!name)	return -1;    // we skip to the last backslash    // this is effectively eliminating weird characters in    // the text output windows    lastbc = strrchr(name, '\\');    if (lastbc)    {	int i;	lastbc++;	for (i = 0; 1 ;i++)	{	    name[i] = *lastbc++;	    if (!name[i])		break;	}    }    if(strncmp(name, "c:\\windows\\", 11)==0) name += 11;    if(strncmp(name, ".\\", 2)==0) name += 2;    dbgprintf("Entering LoadLibraryA(%s)\n", name);    // PIMJ and VIVO audio are loading  kernel32.dll    if (strcasecmp(name, "kernel32.dll") == 0 || strcasecmp(name, "kernel32") == 0)	return MODULE_HANDLE_kernel32;//	return ERROR_SUCCESS; /* yeah, we have also the kernel32 calls */			      /* exported -> do not return failed! */    if (strcasecmp(name, "user32.dll") == 0 || strcasecmp(name, "user32") == 0)//	return MODULE_HANDLE_kernel32;	return MODULE_HANDLE_user32;#ifdef QTX    if (strcasecmp(name, "wininet.dll") == 0 || strcasecmp(name, "wininet") == 0)	return MODULE_HANDLE_wininet;    if (strcasecmp(name, "ddraw.dll") == 0 || strcasecmp(name, "ddraw") == 0)	return MODULE_HANDLE_ddraw;    if (strcasecmp(name, "advapi32.dll") == 0 || strcasecmp(name, "advapi32") == 0)	return MODULE_HANDLE_advapi32;#endif    if (strcasecmp(name, "comdlg32.dll") == 0 || strcasecmp(name, "comdlg32") == 0)	return MODULE_HANDLE_comdlg32;    if (strcasecmp(name, "msvcrt.dll") == 0 || strcasecmp(name, "msvcrt") == 0)	return MODULE_HANDLE_msvcrt;    if (strcasecmp(name, "ole32.dll") == 0 || strcasecmp(name, "ole32") == 0)	return MODULE_HANDLE_ole32;    if (strcasecmp(name, "winmm.dll") == 0 || strcasecmp(name, "winmm") == 0)	return MODULE_HANDLE_winmm;    result=LoadLibraryA(name);    dbgprintf("Returned LoadLibraryA(0x%x='%s'), def_path=%s => 0x%x\n", name, name, def_path, result);    return result;}static int WINAPI expFreeLibrary(int module){#ifdef QTX    int result=0; /* FIXME:XXX: qtx svq3 frees up qt.qts */#else    int result=FreeLibrary(module);#endif    dbgprintf("FreeLibrary(0x%x) => %d\n", module, result);    return result;}static void* WINAPI expGetProcAddress(HMODULE mod, char* name){    void* result;    switch(mod){    case MODULE_HANDLE_kernel32:	result=LookupExternalByName("kernel32.dll", name); break;    case MODULE_HANDLE_user32:	result=LookupExternalByName("user32.dll", name); break;#ifdef QTX    case MODULE_HANDLE_wininet:	result=LookupExternalByName("wininet.dll", name); break;    case MODULE_HANDLE_ddraw:	result=LookupExternalByName("ddraw.dll", name); break;    case MODULE_HANDLE_advapi32:	result=LookupExternalByName("advapi32.dll", name); break;#endif    case MODULE_HANDLE_comdlg32:	result=LookupExternalByName("comdlg32.dll", name); break;    case MODULE_HANDLE_msvcrt:	result=LookupExternalByName("msvcrt.dll", name); break;    case MODULE_HANDLE_ole32:	result=LookupExternalByName("ole32.dll", name); break;    case MODULE_HANDLE_winmm:	result=LookupExternalByName("winmm.dll", name); break;    default:	result=GetProcAddress(mod, name);    }    if((unsigned int)name > 0xffff)	dbgprintf("GetProcAddress(0x%x, '%s') => 0x%x\n", mod, name, result);    else	dbgprintf("GetProcAddress(0x%x, '%d') => 0x%x\n", mod, (int)name, result);    return result;}static long WINAPI expCreateFileMappingA(int hFile, void* lpAttr,					 long flProtect, long dwMaxHigh,					 long dwMaxLow, const char* name){    long result=CreateFileMappingA(hFile, lpAttr, flProtect, dwMaxHigh, dwMaxLow, name);    if(!name)	dbgprintf("CreateFileMappingA(file 0x%x, lpAttr 0x%x,"		  "flProtect 0x%x, dwMaxHigh 0x%x, dwMaxLow 0x%x, name 0) => %d\n",		  hFile, lpAttr, flProtect, dwMaxHigh, dwMaxLow, result);    else	dbgprintf("CreateFileMappingA(file 0x%x, lpAttr 0x%x,"		  "flProtect 0x%x, dwMaxHigh 0x%x, dwMaxLow 0x%x, name 0x%x='%s') => %d\n",		  hFile, lpAttr, flProtect, dwMaxHigh, dwMaxLow, name, name, result);    return result;}static long WINAPI expOpenFileMappingA(long hFile, long hz, const char* name){    long result=OpenFileMappingA(hFile, hz, name);    if(!name)	dbgprintf("OpenFileMappingA(0x%x, 0x%x, 0) => %d\n",		  hFile, hz, result);    else	dbgprintf("OpenFileMappingA(0x%x, 0x%x, 0x%x='%s') => %d\n",		  hFile, hz, name, name, result);    return result;}static void* WINAPI expMapViewOfFile(HANDLE file, DWORD mode, DWORD offHigh,				     DWORD offLow, DWORD size){    dbgprintf("MapViewOfFile(0x%x, 0x%x, 0x%x, 0x%x, size %d) => 0x%x\n",	      file,mode,offHigh,offLow,size,(char*)file+offLow);    return (char*)file+offLow;}static void* WINAPI expUnmapViewOfFile(void* view){    dbgprintf("UnmapViewOfFile(0x%x) => 0\n", view);    return 0;}static void* WINAPI expSleep(int time){#if HAVE_NANOSLEEP    /* solaris doesn't have thread safe usleep */    struct timespec tsp;    tsp.tv_sec  =  time / 1000000;    tsp.tv_nsec = (time % 1000000) * 1000;    nanosleep(&tsp, NULL);#else    usleep(time);#endif    dbgprintf("Sleep(%d) => 0\n", time);    return 0;}// why does IV32 codec want to call this? I don't know ...static int WINAPI expCreateCompatibleDC(int hdc){    int dc = 0;//0x81;    //dbgprintf("CreateCompatibleDC(%

⌨️ 快捷键说明

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