2 ** Copyright (c) 2013-2019 Mahmoud Fayed <msfclipper@yahoo.com>
7 typedef int (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL); ;
8 LPFN_ISWOW64PROCESS fnCheckWindows64 ;
11 #include "ring_vmos.h"
14 void ring_vm_os_loadfunctions ( RingState *pRingState )
16 ring_vm_funcregister("ismsdos",ring_vm_os_ismsdos);
17 ring_vm_funcregister("iswindows",ring_vm_os_iswindows);
18 ring_vm_funcregister("iswindows64",ring_vm_os_iswindows64);
19 ring_vm_funcregister("isunix",ring_vm_os_isunix);
20 ring_vm_funcregister("ismacosx",ring_vm_os_ismacosx);
21 ring_vm_funcregister("islinux",ring_vm_os_islinux);
22 ring_vm_funcregister("isfreebsd",ring_vm_os_isfreebsd);
23 ring_vm_funcregister("isandroid",ring_vm_os_isandroid);
24 ring_vm_funcregister("windowsnl",ring_vm_os_windowsnl);
25 ring_vm_funcregister("currentdir",ring_vm_os_currentdir);
26 ring_vm_funcregister("exefilename",ring_vm_os_exefilename);
27 ring_vm_funcregister("chdir",ring_vm_os_chdir);
28 ring_vm_funcregister("exefolder",ring_vm_os_exefolder);
31 void ring_vm_os_ismsdos ( void *pPointer )
33 #if defined(MSDOS) || defined(__MSDOS__) || defined(_MSDOS) || defined(__DOS__)
34 RING_API_RETNUMBER(1);
36 RING_API_RETNUMBER(0);
40 void ring_vm_os_iswindows ( void *pPointer )
43 RING_API_RETNUMBER(1);
45 RING_API_RETNUMBER(0);
49 void ring_vm_os_iswindows64 ( void *pPointer )
55 pModule = GetModuleHandle(TEXT("kernel32"));
56 if ( pModule != NULL ) {
57 fnCheckWindows64 = (LPFN_ISWOW64PROCESS) GetProcAddress(pModule,"IsWow64Process") ;
58 if ( fnCheckWindows64 != NULL ) {
59 fnCheckWindows64(GetCurrentProcess(),&lSystem64);
60 RING_API_RETNUMBER(lSystem64);
65 RING_API_RETNUMBER(0.0);
68 void ring_vm_os_isunix ( void *pPointer )
70 #if defined(unix) || defined(__unix__) || defined(__unix)
71 RING_API_RETNUMBER(1);
73 RING_API_RETNUMBER(0);
77 void ring_vm_os_ismacosx ( void *pPointer )
79 #if defined(__APPLE__) || defined(__MACH__)
80 RING_API_RETNUMBER(1);
82 RING_API_RETNUMBER(0);
86 void ring_vm_os_islinux ( void *pPointer )
89 RING_API_RETNUMBER(1);
91 RING_API_RETNUMBER(0);
95 void ring_vm_os_isfreebsd ( void *pPointer )
98 RING_API_RETNUMBER(1);
100 RING_API_RETNUMBER(0);
104 void ring_vm_os_isandroid ( void *pPointer )
107 RING_API_RETNUMBER(1);
109 RING_API_RETNUMBER(0);
113 void ring_vm_os_windowsnl ( void *pPointer )
115 RING_API_RETSTRING("\r\n");
118 void ring_vm_os_currentdir ( void *pPointer )
120 char cDirPath[RING_PATHSIZE] ;
121 ring_currentdir(cDirPath);
122 RING_API_RETSTRING(cDirPath);
125 void ring_vm_os_exefilename ( void *pPointer )
127 char cDirPath[RING_PATHSIZE] ;
128 if ( ring_exefilename(cDirPath) ) {
129 RING_API_RETSTRING(cDirPath);
133 void ring_vm_os_chdir ( void *pPointer )
135 RING_API_RETNUMBER(ring_chdir(RING_API_GETSTRING(1)));
138 void ring_vm_os_exefolder ( void *pPointer )
140 char cDirPath[RING_PATHSIZE] ;
141 ring_exefolder(cDirPath);
142 RING_API_RETSTRING(cDirPath);