API Functions
Job Objects
joAssignProcessToJobObject(long hJob, long hProcess), long
joCreateJobObject(long lpJobAttributes, *cstring lpName), long
joIsProcessInJob(unsigned ProcessHandle, unsigned JobHandle, *long Result), long
joOpenJobObject(ulong dwDesiredAccess, long bInheritHandles, *cstring lpName), unsigned
joQueryInformationJobObject(long hJob, long JobObjectInfoClass, long lpJobObjectInfo, ulong cbJobObjectInfoLength, <*ulong lpReturnLength>), long
joSetInformationJobObject(long hJob, long JobObjectInfoClass, long lpJobObjectInfo, ulong bJobObjectInfoLength), long
joTerminateJobObject(long hJob, ulong uExitCode), long
Process enumeration and handling
joCloseHandle(ulong hObject), long, proc
joCreateToolhelp32Snapshot(ulong dwFlags, ulong th32ProcessID), ulong
joProcess32First(ulong hSnapshot, ulong lpProcEntry32), long
joProcess32Next(ulong hSnapshot, ulong lpProcessEntry32), long
Environment and Session Handling
joCreateEnvironmentBlock(*string lpEnvironment, unsigned hToken, long bInherit), long
joDestroyEnvironmentBlock(*string lpEnvironment), long, proc
joDuplicateTokenEx(unsigned hExistingToken, ulong dwDesiredAccess, <*joSECURITY_ATTRIBUTES lpTokenAttributes>, long ImpersonationLevel, long TokenType, *unsigned phNewToken), long
joGetEnvironment(*cstring), cstring
joWTSEnumerateSessions(unsigned hServer, ulong Reserved, ulong Version, *long ppSessionInfo, *ulong pCount), long
joWTSFreeMemory(long pMemory)
joWTSQueryUserToken(ulong SessionId, *unsigned phToken), long
Named Pipes
joCreatePipe(long hReadPipe,long hWritePipe, long lpPipeAttributes,long nSize), ulong, pascal
joSetHandleInformation(unsigned hObject, ulong dwMask, ulong dwFlags), long, proc
joSetNamedPipeHandleState(unsigned hNamedPipe, *ulong lpMode, <*ulong lpMaxCollectionCount>, <*ulong lpCollectDataTimeout>), long, proc
joCallNamedPipe(*cstring lpNamedPipeName, *string lpInBuffer, ulong nInBufferSize, *string lpOutBuffer, ulong nOutBufferSize, *ulong lpBytesRead, ulong nTimeOut), long
joConnectNamedPipe(unsigned hNamedPipe, <*joOVERLAPPED lpOverlapped>), unsigned
joCreateFile(*cstring lpFileName, ulong dwDesiredAccess, ulong dwShareMode, *joSECURITY_ATTRIBUTES lpSecurityAttributes,ulong dwCreationDisposition, ulong dwFlagsAndAttributes, unsigned hTemplateFile ), unsigned
joCreateNamedPipe(*cstring lpName, ulong dwOpenMode, ulong dwPipeMode, ulong nMaxInstances, ulong nOutBufferSize, ulong nInBufferSize, ulong nDefaultTimeOut, *joSECURITY_ATTRIBUTES lpSecurityAttributes), long
joDisconnectNamedPipe(unsigned hNamedPipe), long
joGetNamedPipeClientComputerName(unsigned Pipe, *cstring ClientComputerName, ulong ClientComputerNameLength ), long
joGetNamedPipeClientProcessId(unsigned Pipe, *ulong ClientProcessId), long
joGetNamedPipeClientSessionId(unsigned Pipe, *ulong ClientSessionId), long
joGetNamedPipeHandleState(unsigned hNamedPipe, *ulong lpState, *ulong lpCurInstances, *ulong lpMaxCollectionCount, *ulong lpCollectDataTimeout, *cstring pUserName, ulong nMaxUserNameSize), long
joGetNamedPipeServerProcessId(unsigned Pipe, *ulong ServerProcessId), long
joGetNamedPipeServerSessionId(unsigned Pipe, *ulong ServerSessionId), long
joGetOverlappedResult(unsigned hFile, *joOVERLAPPED lpOverlapped, *ulong lpNumberOfBytesTransferred,long bWait), long
joPeekNamedPipe(unsigned hNamedPipe, *string lpBuffer, ulong nBufferSize, *ulong lpBytesRead, *ulong lpTotalBytesAvail, *ulong lpBytesLeftThisMessage), long
joSleepEx(ulong dwMilliseconds, long bAlertable), ulong
joTransactNamedPipe(unsigned hNamedPipe, *string lpInBuffer, ulong nInBufferSize, *string lpOutBuffer, ulong nOutBufferSize, *ulong lpBytesRead, <*joOVERLAPPED lpOverlapped>), long
joWaitNamedPipe(*cstring lpNamedPipeName, ulong nTimeOut), long
Memory Mapped Files
joCreateFileMapping(unsigned hFile, *joSECURITY_ATTRIBUTES lpAttributes, ulong flProtect,ulong dwMaximumSizeHigh, ulong dwMaximumSizeLow, <*cstring lpName>), unsigned
joMapViewOfFile(unsigned hFileMappingObject, ulong dwDesiredAccess, ulong dwFileOffsetHigh, ulong dwFileOffsetLow, ulong dwNumberOfBytesToMap), long
Windows Synchronisation Functions
joCreateEvent(*joSECURITY_ATTRIBUTES lpEventAttributes, long bManualReset, long bInitialState, *cstring lpName), unsigned
joOpenEvent(ulong dwDesiredAccess, long bInheritHandle, *cstring lpName), unsigned
joPulseEvent(unsigned hEvent), long
joResetEvent(unsigned hEvent), long
joSetEvent(unsigned hEvent), long
joWaitForInputIdle(long hProcess, ulong dwMilliseconds), ulong
Windows Messaging Functions
joPostMessage(unsigned hWnd, ulong Msg, ulong wParam, ulong lParam), long
joRegisterWindowMessage(*cstring lpString), ulong
Process Creation and management
joCreateProcess(<*cstring lpApplicationName>, <*cstring lpCommandLine>, long lpProcessAttributes, long lpThreadAttributes, byte bInheritHandles, ulong dwCreationFlags, <*string lpEnvironment>, <*cstring lpCurrentDirectory>, *joSTARTUPINFO lpStartupInfo, *joPROCESS_INFORMATION lpProcessInformation), long! Identical to CreateProcess, but params passed as addresses
joCreateProcess(ulong lpApplicationName, ulong lpCommandLine, ulong lpProcessAttributes, ulong lpThreadAttributes, long bInheritHandles, ulong dwCreationFlags, long lpEnvironment, ulong lpCurrentDirectory, ulong lpStartupInfo, ulong lpProcessInformation), long
joCreateProcessAsUser(unsigned hToken, <*cstring lpApplicationName>, <*cstring lpCommandLine>, <*joSECURITY_ATTRIBUTES lpProcessAttributes>, <*joSECURITY_ATTRIBUTES lpThreadAttributes>, long bInheritHandles, ulong dwCreationFlags, <*string lpEnvironment>, <*cstring lpCurrentDirectory>, *joSTARTUPINFO lpStartupInfo, *joPROCESS_INFORMATION lpProcessInformation), long
joCreateProcessWithLogonW(*cstring lpUsername, <*cstring lpDomain>, *cstring lpPassword, ulong dwLogonFlags, <*cstring lpApplicationName>, <*cstring lpCommandLine>, ulong dwCreationFlags, <*string lpEnvironment>, <*cstring lpCurrentDirectory>, *joSTARTUPINFO lpStartupInfo, *jpPROCESS_INFORMATION lpProcessInfo), long
joCreateProcessWithTokenW(unsigned hToken, ulong dwLogonFlags, <*cstring lpApplicationName>, <*cstring lpCommandLine>,
, <*string lpEnvironment>, <*cstring lpCurrentDirectory>, *joSTARTUPINFO lpStartupInfo, *joPROCESS_INFORMATION lpProcessInfo), long
joCreateThread(long lpThreadAttributes, ulong dwStackSize, long lpStartAddress, long lpParameter, ulong dwCreationFlags, *ulong lpThreadId), long
joExitProcess(ulong uExitCode)
joLogonUser(*cstring lpszUsername, <*cstring lpszDomain>, *cstring lpszPassword, ulong dwLogonType, ulong dwLogonProvider, *unsigned phToken), long
joShellExecute(long hwnd, *cstring lpOperation, *cstring lpFile, *cstring lpParameters, *cstring lpDirectory, long nShowCmd), long
joTerminateProcess(ulong hProcess, ulong uExitcode), long
joWaitForSingleObject(ulong hHandle, ulong dwMilliseconds), long
Process functions
joCreateRemoteThread(unsigned hProcess, *joSECURITY_ATTRIBUTES lpThreadAttributes, ulong dwStackSize,long lpStartAddress, long lpParameter, ulong dwCreationFlags, *ulong lpThreadId), unsigned
joGetCurrentProcess(), long, pascal
joGetCurrentProcessId(void), ulong
joGetModuleFileNameEx(unsigned hProcess, unsigned hModule, *cstring lpFilename, ulong nSize), ulong
joGetPriorityClass(unsigned hProcess), ulong
joOpenProcess(ulong dwDesiredAccess, long bInheritHandle, ulong dwProcessId), unsigned
joReadProcessMemory(unsigned hProcess, *string lpBaseAddress, *string lpBuffer, ulong nSize, *ulong lpNumberOfBytesRead), long
joSetPriorityClass(unsigned hProcess, ulong dwPriorityClass), long
joSetProcessWorkingSetSize(unsigned hProcess, ulong dwMinimumWorkingSetSize, ulong dwMaximumWorkingSetSize), long('SetProcessWorkingSetSize')
joWriteProcessMemory(unsigned hProcess, *string lpBaseAddress, *string lpBuffer, ulong nSize, *ulong lpNumberOfBytesWritten), long
File IO
joReadFile(unsigned hFile, *string lpBuffer, ulong nNumberOfBytesToRead, *ulong lpNumberOfBytesRead, *joOVERLAPPED lpOverlapped), long, pascal
joReadFile(unsigned hFile, long lpBuffer, ulong nNumberOfBytesToRead, long lpNumberOfBytesRead, long lpOverlapped), long, pascal
joWriteFile(unsigned hFile, *string lpBuffer, ulong nNumberOfBytesToWrite, *ulong lpNumberOfBytesWritten, *joOVERLAPPED lpOverlapped), long, pascal
joWriteFile(unsigned hFile, long lpBuffer, ulong nNumberOfBytesToWrite, *ulong lpNumberOfBytesWritten, long lpOverlapped), long, pascal
IO Completion port for asynchronous monitoring
joCreateIoCompletionPort(unsigned FileHandle, unsigned ExistingCompletionPort, ulong CompletionKey, ulong NumberOfConcurrentThreads), long
joGetOverlappedResult(unsigned hFile, *OVERLAPPED lpOverlapped, *ulong lpNumberOfBytesTransferred, long bWait), long
joGetQueuedCompletionStatus(unsigned CompletionPort, *ulong lpNumberOfBytes, *ulong lpCompletionKey, long lpOverlapped, ulong dwMilliseconds), long
joPostQueuedCompletionStatus(unsigned CompletionPort, ulong dwNumberOfBytesTransferred, ulong dwCompletionKey, *joOVERLAPPED lpOverlapped), long
Extended File IO function
joReadFileEx(unsigned hFile, *string lpBuffer, ulong nNumberOfBytesToRead, *joOVERLAPPED lpOverlapped,long lpCompletionRoutine ), long
joWriteFileEx(unsigned hFile, *string lpBuffer, ulong nNumberOfBytesToWrite, *joOVERLAPPED lpOverlapped, long lpCompletionRoutine), long
Runtime DLL loading
joFreeLibrary(ulong hLibModule), bool, proc, pascal
joGetProcAddress(ulong hModule, *cstring lpProcName), ulong, pascal
joLoadLibrary(*cstring lpLibFileName), long, pascal
joLoadLibrary(long lpLibFileName), long
Error checking
joFormatMessage(ulong dwFlags, ulong lpSource, ulong dwMessageId, ulong dwLanguageId, *cstring lpBuffer, ulong nSize, ulong Arguments), ulong
joGetLastError(), ulong
joOutputDebugString(*cstring msg)
Terminal Server Functions
joWTSCloseServer(unsigned hServer)
joWTSEnumerateProcesses(unsigned hServer, ulong Reserved, ulong Version, *joWTS_PROCESS_INFO ppProcessInfo, *ulong pCount), long
joWTSGetActiveConsoleSessionId(), ulong
joWTSOpenServer(*cstring pServerName), unsigned
joWTSQuerySessionInformation(unsigned hServer, ulong SessionId, long WTSInfoClass, *cstring ppBuffer, *ulong pBytesReturned), long
joWTSQueryUserConfig(*cstring pServerName, *cstring pUserName, long WTSConfigClass, *cstring ppBuffer, *ulong pBytesReturned), long
Other API Functions
joAccess(*cstring path,short mode), short
joAllocConsole(), long
joBringWindowToTop(unsigned hWnd), unsigned, pascal, name('BringWindowToTop')
joCallNextHookEx(long hhk, long nCode, long wParam, long lParam), long
joCopyFile(*cstring szFileName, *cstring szNewFileName, long bFailIfExists), long
joCreateDirectory(*cstring lpPathName, long ), long, pascal
joDeleteFile(*cstring szFileName), long, name('DeleteFileA')
joDuplicateHandle(unsigned hSourceProcessHandle, unsigned hSourceHandle, unsigned hTargetProcessHandle, *unsigned lpTargetHandle, ulong dwDesiredAccess, long bInheritHandle, ulong dwOptions), long, pascal
joEnumWindows(long lpEnumFunc, long lParam),proc,pascal,byte, name('EnumWindows')
joExitWindows(ulong dwReserves, signed uReserved), signed, pascal, name('ExitWindowsEx')
joFileTimeToLocalFileTime(*joFILETIME lpFileTime, *joFILETIME lpLocalFileTime), long, pascal
joFileTimeToSystemTime(*joFILETIME lpFileTime, *joSYSTEMTIME lpSystemTime), long, pascal
joFindClose(long hFindFile), long
joFindFirstFile(*cstring lpFileName, *joWIN32_FIND_DATA lpFindFileData), long
joFindResource(long hModule, *cstring lpName, *cstring lpType), long, pascal
joFNSplit(*cstring Path, *cstring Drv, *cstring Dir, *cstring Nme, *cstring Ext), signed, proc
joFreeConsole(), long
joFreeResource(long hglbResource), long, pascal, name('FreeResource')
joGetComputerName(*cstring pBuffer, *ulong lpnSize), long, proc, pascal
joGetDesktopWindow(), long, pascal
joGetDriveType(*cstring lpRootPathName), unsigned, pascal
joGetExitCodeProcess (unsigned hProcess, ulong lpExitCode), long, pascal, name('GetExitCodeProcess')
joGetFileTime(unsigned,*joFILETIME, *joFILETIME, *joFILETIME), long, pascal
joGetModuleFileName(unsigned, *cstring, long), long, pascal
joGetModuleHandle(long), long, pascal
joGetModuleUsage(unsigned), signed, pascal, name('GetModuleUsage')
joGetNextWindow(long, joWORD), long, pascal, name('GetNextWindow')
joGetNumTasks(), signed, pascal, name('GetNumTasks()')
joGetStdHandle(long), ulong,PROC, pascal
joGetVersion(), ulong, pascal, name('GetVersion()')
joGetVersionEx(ulong), long, pascal
joGetWindow(long, unsigned), long, pascal, name('GetWindow')
joGetWindowRect(long, *RECT), long, pascal
joGetWindowTask(long), long, pascal, name('GetWindowTask')
joGetWindowText(unsigned, long, signed), signed, pascal
joGetWindowThreadProcessId(unsigned,*ulong), ulong, pascal, name('GetWindowThreadProcessId')
joGlobalAlloc(unsigned, ulong), unsigned, pascal, name('GlobalAlloc')
joGlobalFree(unsigned), unsigned,pascal,proc, name('GlobalFree')
joGlobalLock(unsigned), long, pascal, name('GlobalLock')
joGlobalMemoryStatus(*joMEMORYSTATUS), pascal
joglobalsize(unsigned), ulong, pascal, name('GlobalSize')
joglobalunlock(unsigned), long, pascal,proc, name('GlobalUnlock')
joIncr(*long), long,pascal, proc, name('InterlockedIncrement')
joInvalidateRect(unsigned hWnd1, long lpRect, signed bErase), pascal, name('InvalidateRect')
joLoadResource(long, long), long, pascal, name('LoadResource')
joLocalFileTimeToFileTime(*joFILETIME, *joFILETIME), long, pascal
joLockResource(long), ulong, pascal, name('LockResource')
joLStrCpy(*cstring, long), long,pascal
joLtoA(long, *cstring, signed), ulong
jomemcpy(long, long, unsigned), name('_memcpy')
jomemset(long, long, unsigned), name('_memset')
joMkDir(*cstring), short
Advanced API Reference
OddJob encapsulates and exposes the following API functions. In most
cases direct access to the API is not necessary, however these
functions have been provided for those cases where it is needed, as
well as to allow additional functionality outside of the scope of
the classes.
Note that all functions are prefixed by "jo", which the original
APIs do not have. So for example the API function for
joAssignProcessToJobObject is simply AssignProcessToJobObject.
Job Objects
joAssignProcessToJobObject(long hJob, long hProcess), long
joCreateJobObject(long lpJobAttributes, *cstring lpName), long
joIsProcessInJob(unsigned ProcessHandle, unsigned JobHandle, *long Result), long
joOpenJobObject(ulong dwDesiredAccess, long bInheritHandles, *cstring lpName), unsigned
joQueryInformationJobObject(long hJob, long JobObjectInfoClass, long lpJobObjectInfo, ulong cbJobObjectInfoLength, <*ulong
lpReturnLength>), long
joSetInformationJobObject(long hJob, long JobObjectInfoClass, long lpJobObjectInfo, ulong bJobObjectInfoLength), long
joTerminateJobObject(long hJob, ulong uExitCode), long
Process enumeration and handling
joCloseHandle(ulong hObject), long
joCreateToolhelp32Snapshot(ulong dwFlags, ulong th32ProcessID), ulong
joProcess32First(ulong hSnapshot, ulong lpProcEntry32), long
joProcess32Next(ulong hSnapshot, ulong lpProcessEntry32), long
Environment and Session Handling
joCreateEnvironmentBlock(*string lpEnvironment, unsigned hToken,
long bInherit), long
joDestroyEnvironmentBlock(*string lpEnvironment), long, proc
joGetEnvironment(*cstring), cstring
joDuplicateTokenEx(unsigned hExistingToken, ulong
dwDesiredAccess, <*joSECURITY_ATTRIBUTES lpTokenAttributes>, long
ImpersonationLevel, long TokenType, *unsigned phNewToken), long
joWTSEnumerateSessions(unsigned hServer, ulong Reserved, ulong
Version, *long ppSessionInfo, *ulong pCount), long
joWTSFreeMemory(long pMemory)
joWTSQueryUserToken(ulong SessionId, *unsigned phToken), long
Named Pipes
joCreatePipe(long hReadPipe,long hWritePipe, long
lpPipeAttributes,long nSize), ulong, pascal
joSetHandleInformation(unsigned hObject, ulong dwMask, ulong
dwFlags), long, proc
joSetNamedPipeHandleState(unsigned hNamedPipe, *ulong lpMode,
<*ulong lpMaxCollectionCount>, <*ulong lpCollectDataTimeout>), long,
proc
joCallNamedPipe(*cstring lpNamedPipeName, *string lpInBuffer, ulong
nInBufferSize, *string lpOutBuffer, ulong nOutBufferSize, *ulong
lpBytesRead, ulong nTimeOut), long
joConnectNamedPipe(unsigned
hNamedPipe, <*joOVERLAPPED lpOverlapped>), unsigned
joCreateFile(*cstring lpFileName, ulong dwDesiredAccess, ulong
dwShareMode, *joSECURITY_ATTRIBUTES lpSecurityAttributes,ulong
dwCreationDisposition, ulong dwFlagsAndAttributes, unsigned
hTemplateFile ), unsigned
joCreateNamedPipe(*cstring lpName, ulong dwOpenMode, ulong
dwPipeMode, ulong nMaxInstances, ulong nOutBufferSize, ulong
nInBufferSize, ulong nDefaultTimeOut, *joSECURITY_ATTRIBUTES
lpSecurityAttributes), long
joDisconnectNamedPipe(unsigned hNamedPipe), long
joGetNamedPipeClientComputerName(unsigned Pipe, *cstring
ClientComputerName, ulong ClientComputerNameLength ), long
joGetNamedPipeClientProcessId(unsigned Pipe, *ulong
ClientProcessId), long
joGetNamedPipeClientSessionId(unsigned Pipe, *ulong
ClientSessionId), long
joGetNamedPipeHandleState(unsigned hNamedPipe, *ulong lpState,
*ulong lpCurInstances, *ulong lpMaxCollectionCount, *ulong
lpCollectDataTimeout, *cstring pUserName, ulong nMaxUserNameSize),
long
joGetNamedPipeServerProcessId(unsigned Pipe, *ulong
ServerProcessId), long
joGetNamedPipeServerSessionId(unsigned Pipe, *ulong
ServerSessionId), long
joGetOverlappedResult(unsigned hFile, *joOVERLAPPED lpOverlapped,
*ulong lpNumberOfBytesTransferred,long bWait), long
joPeekNamedPipe(unsigned hNamedPipe, *string lpBuffer, ulong
nBufferSize, *ulong lpBytesRead, *ulong lpTotalBytesAvail, *ulong
lpBytesLeftThisMessage), long
joSleepEx(ulong dwMilliseconds, long bAlertable), ulong
joTransactNamedPipe(unsigned hNamedPipe, *string lpInBuffer, ulong
nInBufferSize, *string lpOutBuffer, ulong nOutBufferSize, *ulong
lpBytesRead, <*joOVERLAPPED lpOverlapped>), long
joWaitNamedPipe(*cstring lpNamedPipeName, ulong nTimeOut), long
Memory Mapped Files
joCreateFileMapping(unsigned hFile, *joSECURITY_ATTRIBUTES
lpAttributes, ulong flProtect,ulong dwMaximumSizeHigh, ulong
dwMaximumSizeLow, <*cstring lpName>), unsigned
joMapViewOfFile(unsigned hFileMappingObject, ulong
dwDesiredAccess, ulong dwFileOffsetHigh, ulong dwFileOffsetLow,
ulong dwNumberOfBytesToMap), long
Windows Synchronisation Functions
joCreateEvent(*joSECURITY_ATTRIBUTES lpEventAttributes, long
bManualReset, long bInitialState, *cstring lpName), unsigned
joOpenEvent(ulong dwDesiredAccess, long bInheritHandle, *cstring
lpName), unsigned
joPulseEvent(unsigned hEvent), long
joResetEvent(unsigned hEvent), long
joSetEvent(unsigned hEvent), long
joWaitForInputIdle(long hProcess, ulong dwMilliseconds), ulong
Windows Messaging Functions
joPostMessage(unsigned hWnd, ulong Msg, ulong wParam, ulong lParam),
long
joRegisterWindowMessage(*cstring lpString), ulong
Process Creation and management
joCreateProcess(<*cstring lpApplicationName>, <*cstring
lpCommandLine>, long lpProcessAttributes, long lpThreadAttributes,
byte bInheritHandles, ulong dwCreationFlags, <*string
lpEnvironment>, <*cstring lpCurrentDirectory>, *joSTARTUPINFO
lpStartupInfo, *joPROCESS_INFORMATION lpProcessInformation), long
joCreateProcess(ulong lpApplicationName, ulong lpCommandLine, ulong
lpProcessAttributes, ulong lpThreadAttributes, long bInheritHandles,
ulong dwCreationFlags, long lpEnvironment, ulong lpCurrentDirectory,
ulong lpStartupInfo, ulong lpProcessInformation), long
Identical to CreateProcess, but params passed as addresses
joCreateProcessAsUser(unsigned hToken, <*cstring lpApplicationName>,
<*cstring lpCommandLine>, <*joSECURITY_ATTRIBUTES
lpProcessAttributes>, <*joSECURITY_ATTRIBUTES lpThreadAttributes>,
long bInheritHandles, ulong dwCreationFlags, <*string
lpEnvironment>, <*cstring lpCurrentDirectory>, *joSTARTUPINFO
lpStartupInfo, *joPROCESS_INFORMATION lpProcessInformation), long
joCreateProcessWithLogonW(*cstring lpUsername, <*cstring lpDomain>,
*cstring lpPassword, ulong dwLogonFlags, <*cstring
lpApplicationName>, <*cstring lpCommandLine>, ulong dwCreationFlags,
<*string lpEnvironment>, <*cstring lpCurrentDirectory>,
*joSTARTUPINFO lpStartupInfo, *jpPROCESS_INFORMATION lpProcessInfo),
long
joCreateProcessWithTokenW(unsigned hToken, ulong dwLogonFlags,
<*cstring lpApplicationName>, <*cstring lpCommandLine>, <ulong
dwCreationFlags>, <*string lpEnvironment>, <*cstring
lpCurrentDirectory>, *joSTARTUPINFO lpStartupInfo,
*joPROCESS_INFORMATION lpProcessInfo), long
joCreateThread(long lpThreadAttributes, ulong dwStackSize, long
lpStartAddress, long lpParameter, ulong dwCreationFlags, *ulong
lpThreadId), long
joExitProcess(ulong uExitCode)
joLogonUser(*cstring lpszUsername, <*cstring lpszDomain>, *cstring
lpszPassword, ulong dwLogonType, ulong dwLogonProvider, *unsigned
phToken), long
joShellExecute(long hwnd, *cstring lpOperation, *cstring lpFile,
*cstring lpParameters, *cstring lpDirectory, long nShowCmd), long
joTerminateProcess(ulong hProcess, ulong uExitcode), long
joWaitForSingleObject(ulong hHandle,
ulong dwMilliseconds), long
Process functions
joCreateRemoteThread(unsigned hProcess, *joSECURITY_ATTRIBUTES
lpThreadAttributes, ulong dwStackSize,long lpStartAddress, long
lpParameter, ulong dwCreationFlags, *ulong lpThreadId), unsigned
joGetCurrentProcess(), long, pascal
joGetCurrentProcessId(void), ulong
joGetModuleFileNameEx(unsigned hProcess, unsigned hModule, *cstring
lpFilename, ulong nSize), ulong
joGetPriorityClass(unsigned hProcess), ulong
joOpenProcess(ulong dwDesiredAccess, long bInheritHandle, ulong
dwProcessId), unsigned
joReadProcessMemory(unsigned hProcess, *string lpBaseAddress,
*string lpBuffer, ulong nSize, *ulong lpNumberOfBytesRead), long
joSetPriorityClass(unsigned hProcess, ulong dwPriorityClass), long
joSetProcessWorkingSetSize(unsigned hProcess, ulong
dwMinimumWorkingSetSize, ulong dwMaximumWorkingSetSize), long
joWriteProcessMemory(unsigned hProcess, *string lpBaseAddress,
*string lpBuffer, ulong nSize, *ulong lpNumberOfBytesWritten), long
File IO
joReadFile(unsigned hFile, *string lpBuffer, ulong
nNumberOfBytesToRead, *ulong lpNumberOfBytesRead, *joOVERLAPPED
lpOverlapped), long, pascal
joReadFile(unsigned hFile, long lpBuffer, ulong
nNumberOfBytesToRead, long lpNumberOfBytesRead, long lpOverlapped),
long, pascal
joWriteFile(unsigned hFile, *string lpBuffer, ulong
nNumberOfBytesToWrite, *ulong lpNumberOfBytesWritten, *joOVERLAPPED
lpOverlapped), long, pascal
joWriteFile(unsigned hFile, long lpBuffer, ulong
nNumberOfBytesToWrite, *ulong lpNumberOfBytesWritten, long
lpOverlapped), long, pascal
Asynchronous IO
joCreateIoCompletionPort(unsigned FileHandle, unsigned
ExistingCompletionPort, ulong CompletionKey, ulong
NumberOfConcurrentThreads), long
joGetOverlappedResult(unsigned hFile, *OVERLAPPED lpOverlapped,
*ulong lpNumberOfBytesTransferred, long bWait), long
joGetQueuedCompletionStatus(unsigned CompletionPort, *ulong
lpNumberOfBytes, *ulong lpCompletionKey, long lpOverlapped, ulong
dwMilliseconds), long
joPostQueuedCompletionStatus(unsigned CompletionPort, ulong
dwNumberOfBytesTransferred, ulong dwCompletionKey, *joOVERLAPPED
lpOverlapped), long
Extended File IO function
joReadFileEx(unsigned hFile, *string lpBuffer, ulong
nNumberOfBytesToRead, *joOVERLAPPED lpOverlapped,long
lpCompletionRoutine ), long
joWriteFileEx(unsigned hFile, *string lpBuffer, ulong
nNumberOfBytesToWrite, *joOVERLAPPED lpOverlapped, long
lpCompletionRoutine), long
Runtime DLL loading
joFreeLibrary(ulong hLibModule), bool, proc, pascal
joGetProcAddress(ulong hModule, *cstring lpProcName), ulong, pascal
joLoadLibrary(*cstring lpLibFileName), long, pascal
joLoadLibrary(long lpLibFileName), long
Error checking
joFormatMessage(ulong dwFlags, ulong lpSource, ulong dwMessageId,
ulong dwLanguageId, *cstring lpBuffer, ulong nSize, ulong
Arguments), ulong
joGetLastError(), ulong
joOutputDebugString(*cstring msg)
Terminal Server Functions
joWTSCloseServer(unsigned hServer)
joWTSEnumerateProcesses(unsigned hServer, ulong Reserved, ulong
Version, *joWTS_PROCESS_INFO ppProcessInfo, *ulong pCount), long
joWTSGetActiveConsoleSessionId(), ulong
joWTSOpenServer(*cstring pServerName), unsigned
joWTSQuerySessionInformation(unsigned hServer, ulong SessionId, long
WTSInfoClass, *cstring ppBuffer, *ulong pBytesReturned), long
joWTSQueryUserConfig(*cstring pServerName, *cstring pUserName,
long WTSConfigClass, *cstring ppBuffer, *ulong pBytesReturned), long
Other API Functions
joAccess(*cstring path,short mode), short
joAllocConsole(), long
joBringWindowToTop(unsigned hWnd), unsigned, pascal,
name('BringWindowToTop')
joCallNextHookEx(long hhk, long nCode, long wParam, long lParam),
long
joCopyFile(*cstring szFileName, *cstring szNewFileName, long
bFailIfExists), long
joCreateDirectory(*cstring lpPathName, long ), long, pascal
joDeleteFile(*cstring szFileName), long, name('DeleteFileA')
joDuplicateHandle(unsigned hSourceProcessHandle, unsigned
hSourceHandle, unsigned hTargetProcessHandle, *unsigned
lpTargetHandle, ulong dwDesiredAccess, long bInheritHandle, ulong
dwOptions), long
joEnumWindows(long lpEnumFunc, long lParam),byte
joExitWindows(ulong dwReserves, signed uReserved), signed
joFileTimeToLocalFileTime(*joFILETIME lpFileTime, *joFILETIME
lpLocalFileTime), long
joFileTimeToSystemTime(*joFILETIME lpFileTime, *joSYSTEMTIME
lpSystemTime), long
joFindClose(long hFindFile), long
joFindFirstFile(*cstring lpFileName, *joWIN32_FIND_DATA
lpFindFileData), long
joFindResource(long hModule, *cstring lpName, *cstring lpType),
long
joFNSplit(*cstring Path, *cstring Drv, *cstring Dir, *cstring
Nme, *cstring Ext), signed
joFreeConsole(), long
joFreeResource(long hglbResource), long
joGetComputerName(*cstring pBuffer, *ulong lpnSize), long
joGetDesktopWindow(), long, pascal
joGetDriveType(*cstring lpRootPathName), unsigned, pascal
joGetExitCodeProcess
(unsigned hProcess, ulong lpExitCode), long
joGetFileTime(unsigned,*joFILETIME, *joFILETIME, *joFILETIME), long
joGetModuleFileName(unsigned, *cstring, long), long
joGetModuleHandle(long), long
joGetModuleUsage(unsigned), signed
joGetNextWindow(long, joWORD), long
joGetNumTasks(), signed
joGetStdHandle(long), ulong
joGetVersion(), ulong
joGetVersionEx(ulong), long
joGetWindow(long, unsigned), long
joGetWindowRect(long, *RECT), long
joGetWindowTask(long), long
joGetWindowText(unsigned, long, signed), signed
joGetWindowThreadProcessId(unsigned,*ulong), ulong
joGlobalAlloc(unsigned, ulong), unsigned
joGlobalFree(unsigned), unsigned
joGlobalLock(unsigned), long
joGlobalMemoryStatus(*joMEMORYSTATUS)
joglobalsize(unsigned), ulong
joglobalunlock(unsigned), long
joIncr(*long), long
joInvalidateRect(unsigned hWnd1, long lpRect, signed bErase)
joLoadResource(long, long), long
joLocalFileTimeToFileTime(*joFILETIME, *joFILETIME), long
joLockResource(long), ulong
joLStrCpy(*cstring, long), long
joLtoA(long, *cstring, signed), ulong
jomemcpy(long, long, unsigned)
jomemset(long, long, unsigned)
joMkDir(*cstring), short