Lines Matching refs:taskData

81 #define SAVE(x) taskData->saveVec.push(x)
171 static Handle make_handle_entry(TaskData *taskData)
188 FullGC(taskData);
197 if (p == 0) raise_syscall(taskData, "Insufficient memory", ERROR_NOT_ENOUGH_MEMORY);
205 str_token = alloc_and_save(taskData, 1, F_BYTE_OBJ);
214 static Handle execute(TaskData *taskData, Handle pname);
215 static Handle simpleExecute(TaskData *taskData, Handle args);
216 static Handle openProcessHandle(TaskData *taskData, Handle args, BOOL fIsRead, BOOL fIsText);
217 static Handle openRegistryKey(TaskData *taskData, Handle args, HKEY hkParent);
218 static Handle createRegistryKey(TaskData *taskData, Handle args, HKEY hkParent);
219 static Handle queryRegistryKey(TaskData *taskData, Handle args, HKEY hkParent);
220 static Handle setRegistryKey(TaskData *taskData, Handle args, HKEY hkParent);
221 static Handle deleteRegistryKey(TaskData *taskData, Handle args, HKEY hkParent);
222 static Handle deleteRegistryValue(TaskData *taskData, Handle args, HKEY hkParent);
223 static Handle enumerateRegistry(TaskData *taskData, Handle args, HKEY hkey, BOOL isKey);
305 Handle OS_spec_dispatch_c(TaskData *taskData, Handle args, Handle code)
307 unsigned c = get_C_unsigned(taskData, DEREFWORD(code));
311 return Make_fixed_precision(taskData, 1); /* 1 for Windows. */
315 return execute(taskData, args);
318 return openProcessHandle(taskData, args, TRUE, TRUE);
321 return openProcessHandle(taskData, args, FALSE, TRUE);
324 return openProcessHandle(taskData, args, TRUE, FALSE);
327 return openProcessHandle(taskData, args, FALSE, FALSE);
333 raise_syscall(taskData, "Process is closed", ERROR_INVALID_HANDLE);
364 raise_syscall(taskData, "GetExitCodeProcess failed", GetLastError());
371 return Make_fixed_precision(taskData, dwResult);
375 processes->ThreadPauseForIO(taskData, &waiter);
381 unsigned i = get_C_unsigned(taskData, DEREFWORD(args));
383 raise_syscall(taskData, "Invalid index", 0);
384 return Make_arbitrary_precision(taskData, winConstVec[i]);
390 unsigned keyIndex = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(0));
394 raise_syscall(taskData, "Invalid index", 0);
395 return openRegistryKey(taskData, args, hkPredefinedKeyTab[keyIndex]);
403 raise_syscall(taskData, "Handle is closed", ERROR_INVALID_HANDLE);
404 return openRegistryKey(taskData, args, hnd->hKey);
409 unsigned keyIndex = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(0));
413 raise_syscall(taskData, "Invalid index", 0);
414 return createRegistryKey(taskData, args, hkPredefinedKeyTab[keyIndex]);
422 raise_syscall(taskData, "Handle is closed", ERROR_INVALID_HANDLE);
423 return createRegistryKey(taskData, args, hnd->hKey);
430 return Make_fixed_precision(taskData, 0);
435 unsigned keyIndex = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(0));
439 raise_syscall(taskData, "Invalid index", 0);
440 return queryRegistryKey(taskData, args, hkPredefinedKeyTab[keyIndex]);
448 raise_syscall(taskData, "Handle is closed", ERROR_INVALID_HANDLE);
449 return queryRegistryKey(taskData, args, hnd->hKey);
454 unsigned keyIndex = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(0));
458 raise_syscall(taskData, "Invalid index", 0);
459 return deleteRegistryKey(taskData, args, hkPredefinedKeyTab[keyIndex]);
467 raise_syscall(taskData, "Handle is closed", ERROR_INVALID_HANDLE);
468 return deleteRegistryKey(taskData, args, hnd->hKey);
473 unsigned keyIndex = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(0));
477 raise_syscall(taskData, "Invalid index", 0);
478 return setRegistryKey(taskData, args, hkPredefinedKeyTab[keyIndex]);
486 raise_syscall(taskData, "Handle is closed", ERROR_INVALID_HANDLE);
487 return setRegistryKey(taskData, args, hnd->hKey);
492 unsigned keyIndex = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(0));
494 raise_syscall(taskData, "Invalid index", 0);
495 return enumerateRegistry(taskData, args, hkPredefinedKeyTab[keyIndex], TRUE);
503 raise_syscall(taskData, "Handle is closed", ERROR_INVALID_HANDLE);
504 return enumerateRegistry(taskData, args, hnd->hKey, TRUE);
509 unsigned keyIndex = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(0));
511 raise_syscall(taskData, "Invalid index", 0);
512 return enumerateRegistry(taskData, args, hkPredefinedKeyTab[keyIndex], FALSE);
520 raise_syscall(taskData, "Handle is closed", ERROR_INVALID_HANDLE);
521 return enumerateRegistry(taskData, args, hnd->hKey, FALSE);
526 unsigned keyIndex = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(0));
530 raise_syscall(taskData, "Invalid index", 0);
531 return deleteRegistryValue(taskData, args, hkPredefinedKeyTab[keyIndex]);
539 raise_syscall(taskData, "Handle is closed", ERROR_INVALID_HANDLE);
540 return deleteRegistryValue(taskData, args, hnd->hKey);
548 getFileTimeFromArb(taskData, args, &ftUTC);
550 raise_syscall(taskData, "FileTimeToLocalFileTime failed", GetLastError());
551 return Make_arb_from_Filetime(taskData, ftLocal);
558 getFileTimeFromArb(taskData, args, &ftLocal);
560 raise_syscall(taskData, "LocalFileTimeToFileTime failed", GetLastError());
561 return Make_arb_from_Filetime(taskData, ftUTC);
572 raise_syscall(taskData, "Root name too long", ERROR_BAD_LENGTH);
577 raise_syscall(taskData, "GetVolumeInformation failed", GetLastError());
578 volHandle = SAVE(C_string_to_Poly(taskData, volName));
579 sysHandle = SAVE(C_string_to_Poly(taskData, sysName));
580 serialHandle = Make_arbitrary_precision(taskData, dwVolSerial);
581 maxCompHandle = Make_arbitrary_precision(taskData, dwMaxComponentLen);
582 resultHandle = alloc_and_save(taskData, 4);
596 raise_syscall(taskData, "File name too long", ERROR_BAD_LENGTH);
608 raise_syscall(taskData, "FindExecutable failed", error);
610 return SAVE(C_string_to_Poly(taskData, execName));
625 raise_syscall(taskData, "ShellExecuteEx failed", GetLastError());
626 return Make_fixed_precision(taskData, 0);
642 raise_syscall(taskData, "ShellExecuteEx failed", GetLastError());
643 return Make_fixed_precision(taskData, 0);
647 return Make_fixed_precision(taskData, hMainWindow != NULL ? 1: 0);
650 return simpleExecute(taskData, args);
664 if (hcDDEConv == 0) raise_syscall(taskData, "DdeConnect failed", 0);
666 handToken = make_handle_entry(taskData);
681 raise_syscall(taskData, "DDE Conversation is closed", 0);
687 if (res == -1) raise_syscall(taskData, "DdeClientTransaction failed", 0);
688 else return Make_arbitrary_precision(taskData, res);
695 return Make_fixed_precision(taskData, 0);
707 raise_syscall(taskData, "GetVersionEx failed", GetLastError());
708 Handle major = Make_fixed_precision(taskData, osver.dwMajorVersion);
709 Handle minor = Make_fixed_precision(taskData, osver.dwMinorVersion);
710 Handle build = Make_fixed_precision(taskData, osver.dwBuildNumber);
711 Handle platform = Make_fixed_precision(taskData, osver.dwPlatformId);
712 Handle version = SAVE(C_string_to_Poly(taskData, osver.szCSDVersion));
713 Handle resVal = alloc_and_save(taskData, 5);
726 raise_syscall(taskData, "GetWindowsDirectory failed", GetLastError());
727 return SAVE(C_string_to_Poly(taskData, path));
734 raise_syscall(taskData, "GetSystemDirectory failed", GetLastError());
735 return SAVE(C_string_to_Poly(taskData, path));
743 raise_syscall(taskData, "GetComputerName failed", GetLastError());
744 return SAVE(C_string_to_Poly(taskData, name));
752 raise_syscall(taskData, "GetUserName failed", GetLastError());
753 return SAVE(C_string_to_Poly(taskData, name));
759 return(SAVE(TAGGED(taskData->lastError)));
765 UINT wMsgFilterMin = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(1));
766 UINT wMsgFilterMax = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(2));
770 processes->ThreadReleaseMLMemory(taskData);
774 processes->ThreadUseMLMemory(taskData);
775 if (result) return Make_fixed_precision(taskData, 0);
777 processes->ThreadPause(taskData);
785 Handle result = alloc_and_save(taskData, 1, F_BYTE_OBJ);
792 Handle result = alloc_and_save(taskData, 1, F_BYTE_OBJ);
803 raise_exception_string(taskData, EXC_Fail, msg);
813 TaskData *taskData = TaskData::FindTaskForId(threadId);
814 ASSERT(taskData != 0);
815 taskData->PreRTSCall();
816 Handle reset = taskData->saveVec.mark();
817 Handle pushedCode = taskData->saveVec.push(code);
818 Handle pushedArg = taskData->saveVec.push(arg);
822 result = OS_spec_dispatch_c(taskData, pushedArg, pushedCode);
825 processes->ThreadExit(taskData); // Call 1005 may test for kill
829 taskData->saveVec.reset(reset); // Ensure the save vec is reset
830 taskData->PostRTSCall();
857 static Handle execute(TaskData *taskData, Handle args)
868 Handle handToken = make_handle_entry(taskData);
964 raise_syscall(taskData, lpszError, err);
969 static Handle simpleExecute(TaskData *taskData, Handle args)
1008 raise_syscall(taskData, "CreateProcess failed", nErr);
1019 handToken = make_handle_entry(taskData);
1034 static Handle openProcessHandle(TaskData *taskData, Handle args, BOOL fIsRead, BOOL fIsText)
1040 raise_syscall(taskData, "Process is closed", ERROR_INVALID_HANDLE);
1050 raise_syscall(taskData, "Process is closed", ERROR_INVALID_HANDLE);
1056 Handle str_token = make_stream_entry(taskData);
1057 if (str_token == NULL) raise_syscall(taskData, "Insufficient memory", ERROR_NOT_ENOUGH_MEMORY);
1061 raise_syscall(taskData, "_open_osfhandle failed", _doserrno);
1085 static Handle openRegistryKey(TaskData *taskData, Handle args, HKEY hkParent)
1092 REGSAM sam = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(2));
1095 raise_syscall(taskData, "Key name too long", ERROR_BAD_LENGTH);
1100 raise_syscall(taskData, "RegOpenKeyEx failed", lRes);
1103 result = make_handle_entry(taskData);
1111 static Handle createRegistryKey(TaskData *taskData, Handle args, HKEY hkParent)
1119 REGSAM sam = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(3));
1120 unsigned opt = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(2));
1123 raise_syscall(taskData, "Key name too long", ERROR_BAD_LENGTH);
1130 raise_syscall(taskData, "RegCreateKeyEx failed", lRes);
1133 keyResult = make_handle_entry(taskData);
1138 dispRes = Make_fixed_precision(taskData, dwDisp == REG_CREATED_NEW_KEY ? 0: 1);
1140 pair = alloc_and_save(taskData, 2);
1148 static Handle deleteRegistryKey(TaskData *taskData, Handle args, HKEY hkParent)
1154 raise_syscall(taskData, "Key name too long", ERROR_BAD_LENGTH);
1160 raise_syscall(taskData, "RegDeleteKey failed", lRes);
1161 return Make_fixed_precision(taskData, 0);
1164 static Handle deleteRegistryValue(TaskData *taskData, Handle args, HKEY hkParent)
1170 raise_syscall(taskData, "Key name too long", ERROR_BAD_LENGTH);
1176 raise_syscall(taskData, "RegDeleteValue failed", lRes);
1177 return Make_fixed_precision(taskData, 0);
1180 static Handle queryRegistryKey(TaskData *taskData, Handle args, HKEY hkey)
1190 raise_syscall(taskData, "Value name too long", ERROR_BAD_LENGTH);
1198 raise_syscall(taskData, "RegQueryValueEx failed", lRes);
1203 if (valSize == 0) resVal = SAVE(C_string_to_Poly(taskData, "", 0));
1211 raise_syscall(taskData, "Insufficient memory", ERROR_NOT_ENOUGH_MEMORY);
1223 raise_syscall(taskData, "RegQueryValue failed", lRes);
1227 resVal = SAVE(C_string_to_Poly(taskData, (TCHAR*)keyValue, valSize / sizeof(TCHAR)));
1228 else resVal = SAVE(C_string_to_Poly(taskData, (char*)keyValue, valSize));
1233 resType = Make_fixed_precision(taskData, dwType);
1234 result = alloc_and_save(taskData, 2);
1240 static Handle setRegistryKey(TaskData *taskData, Handle args, HKEY hkey)
1246 DWORD dwType = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(2));
1248 raise_syscall(taskData, "Value name too long", ERROR_BAD_LENGTH);
1265 raise_syscall(taskData, "RegSetValue failed", lRes);
1267 return Make_fixed_precision(taskData, 0);
1272 static Handle enumerateRegistry(TaskData *taskData, Handle args, HKEY hkey, BOOL isKey)
1274 DWORD num = get_C_unsigned(taskData, DEREFWORDHANDLE(args)->Get(1));
1284 raise_syscall(taskData, "RegEnumKeyEx failed", lRes);
1290 raise_syscall(taskData, "RegEnumValue failed", lRes);
1294 resVal = SAVE(C_string_to_Poly(taskData, keyName));
1295 result = alloc_and_save(taskData, 1);