Mono implements a small subset of the Win32 API for some file system interaction, I/O, thread and process operations.
On Windows, Mono uses directly the services provided by the operating system. On other operating system it uses its own implementation (referred to as the "io-layer" or "wapi").
BindIoCompletionCallback
CloseHandle
handle | The handle to release |
Closes and invalidates handle, releasing any resources it consumes. When the last handle to a temporary or non-persistent object is closed, that object can be deleted. Closing the same handle twice is an error.
Return value: %TRUE
on success, %FALSE
otherwise.
closesocket
CopyFile
name | a pointer to a NULL -terminated unicode string, that names |
NULL
-terminated unicode string, that is the
new name for the file.
fail_if_exists: if TRUE
and dest_name exists, the copy will fail.
Copies file name to dest_name
Return value: %TRUE
on success, %FALSE
otherwise.
CreateDirectory
name | a pointer to a NULL -terminated unicode string, that names |
Creates directory name
Return value: %TRUE
on success, %FALSE
otherwise.
CreateEvent
security | Ignored for now. |
manual | Specifies whether the new event handle has manual or auto |
NULL
. Currently ignored.
Creates a new event handle.
An event handle is signalled with SetEvent(). If the new handle is a manual reset event handle, it remains signalled until it is reset with ResetEvent(). An auto reset event remains signalled until a single thread has waited for it, at which time the event handle is automatically reset to unsignalled.
Return value: A new handle, or %NULL
on error.
CreateFile
name | a pointer to a NULL -terminated unicode string, that names |
NULL
. This parameter is ignored when an
existing file is opened.
Creates a new file handle. This only applies to normal files: pipes are handled by CreatePipe(), and console handles are created with GetStdHandle().
Return value: the new handle, or %INVALID_HANDLE_VALUE on error.
CreateMutex
security | Ignored for now. |
owned | If %TRUE , the mutex is created with the calling thread |
NULL
.
Creates a new mutex handle. A mutex is signalled when no thread owns it. A thread acquires ownership of the mutex by waiting for it with WaitForSingleObject() or WaitForMultipleObjects(). A thread relinquishes ownership with ReleaseMutex().
A thread that owns a mutex can specify the same mutex in repeated wait function calls without blocking. The thread must call ReleaseMutex() an equal number of times to release the mutex.
Return value: A new handle, or %NULL
on error.
CreatePipe
CreateProcess
CreateProcessWithLogonW
CreateSemaphore
security | Ignored for now. |
initial | The initial count for the semaphore. The value must be |
NULL
. Currently ignored.
Creates a new semaphore handle. A semaphore is signalled when its count is greater than zero, and unsignalled otherwise. The count is decreased by one whenever a wait function releases a thread that was waiting for the semaphore. The count is increased by calling ReleaseSemaphore().
Return value: a new handle, or NULL
CreateThread
DeleteCriticalSection
DeleteFile
name | a pointer to a NULL -terminated unicode string, that names |
Deletes file name.
Return value: %TRUE
on success, %FALSE
otherwise.
DuplicateHandle
EnterCriticalSection
EnumProcesses
EnumProcessModules
errno_to_WSA
ExitThread
FileTimeToSystemTime
file_time | Points to a %WapiFileTime structure that contains the |
Converts a tick count into broken-out time values.
Return value: %TRUE
on success, %FALSE
otherwise.
FindClose
wapi_handle | the find handle to close. |
Closes find handle wapi_handle
Return value: %TRUE
on success, %FALSE
otherwise.
FindFirstFile
FindNextFile
FlushFileBuffers
handle | Handle to open file. The handle must have |
Flushes buffers of the file and causes all unwritten data to be written.
Return value: %TRUE
on success, %FALSE
otherwise.
FormatMessage
GetCurrentDirectory
length | size of the buffer |
buffer | pointer to buffer that recieves path |
Retrieves the current directory for the current process.
Return value: number of characters in buffer on success, zero on failure
GetCurrentProcess
GetCurrentProcessId
GetCurrentThread
GetCurrentThreadId
GetDiskFreeSpaceEx
GetDriveType
GetExitCodeProcess
GetExitCodeThread
GetFileAttributesEx
name | a pointer to a NULL -terminated unicode filename. |
level | must be GetFileExInfoStandard |
info | pointer to a WapiFileAttributesData structure |
Gets attributes, size and filetimes for name;
Return value: %TRUE
on success, %FALSE
on failure
GetFileAttributes
name | a pointer to a NULL -terminated unicode filename. |
Gets the attributes for name;
Return value: %INVALID_FILE_ATTRIBUTES on failure
GetFileSize
handle | The file handle to query. The handle must have |
NULL
, the high 32 bits of the file size are
stored here.
Retrieves the size of the file handle.
If the library is compiled without large file support, highsize has its value set to zero on a successful return.
Return value: On success, the low 32 bits of the file size. If
highsize is non-%NULL
then the high 32 bits of the file size are
stored here. On failure %INVALID_FILE_SIZE is returned.
GetFileTime
handle | The file handle to query. The handle must have |
NULL
.
last_access: Points to a %WapiFileTime structure to receive the
number of ticks since the epoch when file was last accessed. May be
%NULL
.
last_write: Points to a %WapiFileTime structure to receive the
number of ticks since the epoch when file was last written to. May
be %NULL
.
Finds the number of ticks since the epoch that the file referenced by handle was created, last accessed and last modified. A tick is a 100 nanosecond interval. The epoch is Midnight, January 1 1601 GMT.
Create time isn't recorded on POSIX file systems or reported by stat(2), so that time is guessed by returning the oldest of the other times.
Return value: %TRUE
on success, %FALSE
otherwise.
GetFileType
handle | The file handle to test. |
Finds the type of file handle.
Return value: %FILE_TYPE_UNKNOWN - the type of the file handle is unknown. %FILE_TYPE_DISK - handle is a disk file. %FILE_TYPE_CHAR - handle is a character device, such as a console. %FILE_TYPE_PIPE - handle is a named or anonymous pipe.
GetFileVersionInfo
GetFileVersionInfoSize
GetLastError
Retrieves the last error that occurred in the calling thread.
Return value: The error code for the last error that happened on the calling thread.
GetLogicalDriveStrings
GetModuleBaseName
GetModuleFileNameEx
GetModuleInformation
GetPriorityClass
GetProcessId
GetProcessTimes
GetProcessWorkingSetSize
GetStdHandle
stdhandle | specifies the file descriptor |
Returns a handle for stdin, stdout, or stderr. Always returns the same handle for the same stdhandle.
Return value: the handle, or %INVALID_HANDLE_VALUE on error
GetSystemInfo
GetTempPath
GetThreadContext
GetTickCount
ImpersonateLoggedOnUser
InitializeCriticalSectionAndSpinCount
InitializeCriticalSection
ioctlsocket
LeaveCriticalSection
LockFile
MoveFile
name | a pointer to a NULL -terminated unicode string, that names |
NULL
-terminated unicode string, that is the
new name for the file.
Renames file name to dest_name. MoveFile sets ERROR_ALREADY_EXISTS if the destination exists, except when it is the same file as the source. In that case it silently succeeds.
Return value: %TRUE
on success, %FALSE
otherwise.
OpenEvent
OpenMutex
OpenProcess
OpenSemaphore
OpenThread
PulseEvent
handle | The event handle. |
Sets the event handle handle to the signalled state, and then resets it to unsignalled after informing any waiting threads.
If handle is a manual reset event, all waiting threads that can be released immediately are released. handle is then reset. If handle is an auto reset event, one waiting thread is released even if multiple threads are waiting.
Return value: %TRUE
on success, %FALSE
otherwise. (Currently only
ever returns %TRUE
).
QueryPerformanceCounter
QueryPerformanceFrequency
QueueUserAPC
ReadFile
handle | The file handle to read from. The handle must have |
NULL
otherwise.
If handle does not have the %FILE_FLAG_OVERLAPPED option set, this function reads up to numbytes bytes from the file from the current file position, and stores them in buffer. If there are not enough bytes left in the file, just the amount available will be read. The actual number of bytes read is stored in bytesread.
If handle has the %FILE_FLAG_OVERLAPPED option set, the current file position is ignored and the read position is taken from data in the overlapped structure.
Return value: %TRUE
if the read succeeds (even if no bytes were
read due to an attempt to read past the end of the file), %FALSE
on
error.
ReleaseMutex
handle | The mutex handle. |
Releases ownership if the mutex handle handle.
Return value: %TRUE
on success, %FALSE
otherwise. This function
fails if the calling thread does not own the mutex handle.
ReleaseSemaphore
handle | The semaphore handle to release. |
count | The amount by which the semaphore's count should be |
NULL
.
Increases the count of semaphore handle by count.
Return value: %TRUE
on success, %FALSE
otherwise.
RemoveDirectory
name | a pointer to a NULL -terminated unicode string, that names |
Removes directory name
Return value: %TRUE
on success, %FALSE
otherwise.
ReplaceFile
ResetEvent
handle | The event handle. |
Resets the event handle handle to the unsignalled state.
Return value: %TRUE
on success, %FALSE
otherwise. (Currently only
ever returns %TRUE
).
ResumeThread
RevertToSelf
SetCriticalSectionSpinCount
SetCurrentDirectory
path | path to new directory |
Changes the directory path for the current process.
Return value: %TRUE
on success, %FALSE
on failure.
SetEndOfFile
handle | The file handle to set. The handle must have |
Moves the end-of-file position to the current position of the file pointer. This function is used to truncate or extend a file.
Return value: %TRUE
on success, %FALSE
otherwise.
SetEvent
handle | The event handle |
Sets the event handle handle to the signalled state.
If handle is a manual reset event, it remains signalled until it is reset with ResetEvent(). An auto reset event remains signalled until a single thread has waited for it, at which time handle is automatically reset to unsignalled.
Return value: %TRUE
on success, %FALSE
otherwise. (Currently only
ever returns %TRUE
).
SetFileAttributes
name | name of file |
attrs | attributes to set |
Changes the attributes on a named file.
Return value: %TRUE
on success, %FALSE
on failure.
SetFilePointer
handle | The file handle to set. The handle must have |
NULL
.
method: The starting point for the file pointer move.
Sets the file pointer of an open file.
The distance to move the file pointer is calculated from
movedistance and highmovedistance: If highmovedistance is %NULL
,
movedistance is the 32-bit signed value; otherwise, movedistance
is the low 32 bits and highmovedistance a pointer to the high 32
bits of a 64 bit signed value. A positive distance moves the file
pointer forward from the position specified by method; a negative
distance moves the file pointer backward.
If the library is compiled without large file support, highmovedistance is ignored and its value is set to zero on a successful return.
Return value: On success, the low 32 bits of the new file pointer.
If highmovedistance is not %NULL
, the high 32 bits of the new file
pointer are stored there. On failure, %INVALID_SET_FILE_POINTER.
SetFileTime
handle | The file handle to set. The handle must have |
NULL
.
last_access: Points to a %WapiFileTime structure that contains the
number of ticks since the epoch when the file was last accessed.
May be %NULL
.
last_write: Points to a %WapiFileTime structure that contains the
number of ticks since the epoch when the file was last written to.
May be %NULL
.
Sets the number of ticks since the epoch that the file referenced by handle was created, last accessed or last modified. A tick is a 100 nanosecond interval. The epoch is Midnight, January 1 1601 GMT.
Create time isn't recorded on POSIX file systems, and is ignored.
Return value: %TRUE
on success, %FALSE
otherwise.
SetLastError
code | The error code. |
Sets the error code in the calling thread.
SetPriorityClass
SetProcessWorkingSetSize
ShellExecuteEx
SignalObjectAndWait
signal_handle | An object to signal |
wait | An object to wait for |
timeout | The maximum time in milliseconds to wait for |
alertable | Specifies whether the function returnes when the system |
Atomically signals signal and waits for wait to become signalled, or timeout ms elapses. If timeout is zero, the object's state is tested and the function returns immediately. If timeout is %INFINITE, the function waits forever.
signal can be a semaphore, mutex or event object.
If alertable is %TRUE
and the system queues an I/O completion
routine or an APC for the calling thread, the function returns and
the thread calls the completion routine or APC function. If
%FALSE
, the function does not return, and the thread does not call
the completion routine or APC function. A completion routine is
queued when the ReadFileEx() or WriteFileEx() function in which it
was specified has completed. The calling thread is the thread that
initiated the read or write operation. An APC is queued when
QueueUserAPC() is called. Currently completion routines and APC
functions are not supported.
Return value: %WAIT_ABANDONED - wait is a mutex that was not released by the owning thread when it exited. Ownershop of the mutex object is granted to the calling thread and the mutex is set to nonsignalled. %WAIT_IO_COMPLETION - the wait was ended by one or more user-mode asynchronous procedure calls queued to the thread. %WAIT_OBJECT_0 - The state of wait is signalled. %WAIT_TIMEOUT - The timeout interval elapsed and wait's state is still not signalled. %WAIT_FAILED - an error occurred.
SleepEx
Sleep
SuspendThread
TerminateProcess
TlsAlloc
TlsFree
TlsGetValue
TlsSetValue
TransmitFile
TryEnterCriticalSection
UnlockFile
VerLanguageName
VerQueryValue
WaitForInputIdle
WaitForMultipleObjectsEx
numobjects | The number of objects in handles. The maximum allowed |
TRUE
, this function waits until all of the handles
are signalled. If %FALSE
, this function returns when any object is
signalled.
timeout: The maximum time in milliseconds to wait for.
alertable: if TRUE
, the wait can be interrupted by an APC call
This function returns when either one or more of handles is signalled, or timeout ms elapses. If timeout is zero, the state of each item of handles is tested and the function returns immediately. If timeout is %INFINITE, the function waits forever.
Return value: %WAIT_OBJECT_0 to %WAIT_OBJECT_0 + numobjects - 1 -
if waitall is %TRUE
, indicates that all objects are signalled. If
waitall is %FALSE
, the return value minus %WAIT_OBJECT_0 indicates
the first index into handles of the objects that are signalled.
%WAIT_ABANDONED_0 to %WAIT_ABANDONED_0 + numobjects - 1 - if
waitall is %TRUE
, indicates that all objects are signalled, and at
least one object is an abandoned mutex object (See
WaitForSingleObject() for a description of abandoned mutexes.) If
waitall is %FALSE
, the return value minus %WAIT_ABANDONED_0
indicates the first index into handles of an abandoned mutex.
%WAIT_TIMEOUT - The timeout interval elapsed and no objects in
handles are signalled. %WAIT_FAILED - an error occurred.
%WAIT_IO_COMPLETION - the wait was ended by an APC.
WaitForMultipleObjects
WaitForSingleObjectEx
handle | an object to wait for |
timeout | the maximum time in milliseconds to wait for |
alertable | if TRUE , the wait can be interrupted by an APC call |
This function returns when either handle is signalled, or timeout ms elapses. If timeout is zero, the object's state is tested and the function returns immediately. If timeout is %INFINITE, the function waits forever.
Return value: %WAIT_ABANDONED - handle is a mutex that was not released by the owning thread when it exited. Ownership of the mutex object is granted to the calling thread and the mutex is set to nonsignalled. %WAIT_OBJECT_0 - The state of handle is signalled. %WAIT_TIMEOUT - The timeout interval elapsed and handle's state is still not signalled. %WAIT_FAILED - an error occurred. %WAIT_IO_COMPLETION - the wait was ended by an APC.
WaitForSingleObject
WriteFile
handle | The file handle to write to. The handle must have |
NULL
.
overlapped: points to a required %WapiOverlapped structure if
handle has the %FILE_FLAG_OVERLAPPED option set, should be NULL
otherwise.
If handle does not have the %FILE_FLAG_OVERLAPPED option set, this function writes up to numbytes bytes from buffer to the file at the current file position. If handle is positioned at the end of the file, the file is extended. The actual number of bytes written is stored in byteswritten.
If handle has the %FILE_FLAG_OVERLAPPED option set, the current file position is ignored and the write position is taken from data in the overlapped structure.
Return value: %TRUE
if the write succeeds, %FALSE
on error.
WSACleanup
WSAGetLastError
WSAIoctl
WSARecv
WSASend
WSASetLastError
WSAStartup
The extended APIs provide access to a few internals of the WAPI stack that are not exposed through the standard Win32 APIs.
mono_once
wapi_clear_interruption
wapi_current_thread_desc
wapi_interrupt_thread
wapi_self_interrupt
wapi_thread_clear_wait_handle