src.com.sun.jna.platform.win32.Kernel32 Maven / Gradle / Ivy
/* Copyright (c) 2007 Timothy Wall, All Rights Reserved
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package com.sun.jna.platform.win32;
import java.nio.Buffer;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.platform.win32.WinBase.MEMORYSTATUSEX;
import com.sun.jna.platform.win32.WinBase.SYSTEM_INFO;
import com.sun.jna.platform.win32.WinDef.DWORD;
import com.sun.jna.platform.win32.WinDef.HMODULE;
import com.sun.jna.platform.win32.WinNT.HANDLE;
import com.sun.jna.platform.win32.WinNT.HANDLEByReference;
import com.sun.jna.platform.win32.WinNT.LARGE_INTEGER;
import com.sun.jna.platform.win32.WinNT.OSVERSIONINFO;
import com.sun.jna.platform.win32.WinNT.OSVERSIONINFOEX;
import com.sun.jna.ptr.ByReference;
import com.sun.jna.ptr.IntByReference;
import com.sun.jna.ptr.PointerByReference;
import com.sun.jna.win32.StdCallLibrary;
import com.sun.jna.win32.W32APIOptions;
/** Definition (incomplete) of kernel32.dll
. */
public interface Kernel32 extends StdCallLibrary {
Kernel32 INSTANCE = (Kernel32) Native.loadLibrary("kernel32", Kernel32.class,
W32APIOptions.UNICODE_OPTIONS);
/**
* Frees the specified local memory object and invalidates its handle.
* @param hLocal
* A handle to the local memory object.
* @return
* If the function succeeds, the return value is NULL.
* If the function fails, the return value is equal to a handle to the local memory object.
* To get extended error information, call GetLastError.
*/
Pointer LocalFree(Pointer hLocal);
/**
* Frees the specified global memory object and invalidates its handle.
* @param hGlobal
* A handle to the global memory object.
* @return
* If the function succeeds, the return value is NULL
* If the function fails, the return value is equal to a handle to the global memory object.
* To get extended error information, call GetLastError.
*/
Pointer GlobalFree(Pointer hGlobal);
/**
* The GetModuleHandle function retrieves a module handle for the specified module
* if the file has been mapped into the address space of the calling process.
* @param name
* Pointer to a null-terminated string that contains the name of the module
* (either a .dll or .exe file).
* @return
* If the function succeeds, the return value is a handle to the specified module.
* If the function fails, the return value is NULL. To get extended error
* information, call GetLastError.
*/
HMODULE GetModuleHandle(String name);
/**
* The GetSystemTime function retrieves the current system date and time.
* The system time is expressed in Coordinated Universal Time (UTC).
* @param lpSystemTime
* Pointer to a SYSTEMTIME structure to receive the current system date and time.
*/
void GetSystemTime(WinBase.SYSTEMTIME lpSystemTime);
/**
* The GetTickCount function retrieves the number of milliseconds that have elapsed since the system was started, up to 49.7 days.
* @return
* Number of milliseconds that have elapsed since the system was started.
*/
int GetTickCount();
/**
* The GetCurrentThreadId function retrieves the thread identifier of the calling thread.
* @return
* The return value is the thread identifier of the calling thread.
*/
int GetCurrentThreadId();
/**
* The GetCurrentThread function retrieves a pseudo handle for the current thread.
* @return
* The return value is a pseudo handle for the current thread.
*/
HANDLE GetCurrentThread();
/**
* This function returns the process identifier of the calling process.
* @return
* The return value is the process identifier of the calling process.
*/
int GetCurrentProcessId();
/**
* This function returns a pseudohandle for the current process.
* @return
* The return value is a pseudohandle to the current process.
*/
HANDLE GetCurrentProcess();
/**
* The GetProcessId function retrieves the process identifier of the
* specified process.
* @param process
* Handle to the process. The handle must have the PROCESS_QUERY_INFORMATION access right.
* @return
* If the function succeeds, the return value is the process identifier of the
* specified process. If the function fails, the return value is zero. To get
* extended error information, call GetLastError.
*/
int GetProcessId(HANDLE process);
/**
* The GetProcessVersion function retrieves the major and minor version numbers of the system
* on which the specified process expects to run.
* @param processId
* Process identifier of the process of interest. A value of zero specifies the
* calling process.
* @return
* If the function succeeds, the return value is the version of the system on
* which the process expects to run. The high word of the return value contains
* the major version number. The low word of the return value contains the minor
* version number. If the function fails, the return value is zero. To get extended
* error information, call GetLastError. The function fails if ProcessId is an
* invalid value.
*/
int GetProcessVersion(int processId);
/**
* Retrieves the termination status of the specified process.
* @param hProcess A handle to the process.
* @param lpExitCode A pointer to a variable to receive the process termination status.
* @return If the function succeeds, the return value is nonzero.
*
* If the function fails, the return value is zero. To get extended error information, call GetLastError.
*/
boolean GetExitCodeProcess(HANDLE hProcess, IntByReference lpExitCode);
/**
* Terminates the specified process and all of its threads.
* @param hProcess A handle to the process to be terminated.
* @param uExitCode The exit code to be used by the process and threads
* terminated as a result of this call.
* @return If the function succeeds, the return value is nonzero.
*
* If the function fails, the return value is zero. To get extended error information, call GetLastError.
*/
boolean TerminateProcess(HANDLE hProcess, int uExitCode);
/**
* The GetLastError function retrieves the calling thread's last-error code value.
* The last-error code is maintained on a per-thread basis. Multiple threads do not
* overwrite each other's last-error code.
* @return
* The return value is the calling thread's last-error code value.
*/
int GetLastError();
/**
* The SetLastError function sets the last-error code for the calling thread.
* @param dwErrCode
* Last-error code for the thread.
*/
void SetLastError(int dwErrCode);
/**
* The GetDriveType function determines whether a disk drive is a removable,
* fixed, CD-ROM, RAM disk, or network drive.
* @param lpRootPathName
* Pointer to a null-terminated string that specifies the root directory of
* the disk to return information about. A trailing backslash is required.
* If this parameter is NULL, the function uses the root of the current directory.
* @return
* The return value specifies the type of drive.
*/
int GetDriveType(String lpRootPathName);
/**
* The FormatMessage function formats a message string. The function requires a
* message definition as input. The message definition can come from a buffer
* passed into the function. It can come from a message table resource in an
* already-loaded module. Or the caller can ask the function to search the
* system's message table resource(s) for the message definition. The function
* finds the message definition in a message table resource based on a message
* identifier and a language identifier. The function copies the formatted message
* text to an output buffer, processing any embedded insert sequences if requested.
* @param dwFlags
* Formatting options, and how to interpret the lpSource parameter. The low-order
* byte of dwFlags specifies how the function handles line breaks in the output
* buffer. The low-order byte can also specify the maximum width of a formatted
* output line.
* @param lpSource
* Location of the message definition.
* @param dwMessageId
* Message identifier for the requested message.
* @param dwLanguageId
* Language identifier for the requested message.
* @param lpBuffer
* Pointer to a buffer that receives the null-terminated string that specifies the
* formatted message.
* @param nSize
* If the FORMAT_MESSAGE_ALLOCATE_BUFFER flag is not set, this parameter specifies
* the size of the output buffer, in TCHARs. If FORMAT_MESSAGE_ALLOCATE_BUFFER is
* set, this parameter specifies the minimum number of TCHARs to allocate for an
* output buffer.
* @param va_list
* Pointer to an array of values that are used as insert values in the formatted message.
* @return
* If the function succeeds, the return value is the number of TCHARs stored in
* the output buffer, excluding the terminating null character. If the function
* fails, the return value is zero. To get extended error information, call
* GetLastError.
*/
int FormatMessage(int dwFlags, Pointer lpSource, int dwMessageId,
int dwLanguageId, PointerByReference lpBuffer,
int nSize, Pointer va_list);
/**
* The FormatMessage function formats a message string. The function requires a
* message definition as input. The message definition can come from a buffer
* passed into the function. It can come from a message table resource in an
* already-loaded module. Or the caller can ask the function to search the
* system's message table resource(s) for the message definition. The function
* finds the message definition in a message table resource based on a message
* identifier and a language identifier. The function copies the formatted message
* text to an output buffer, processing any embedded insert sequences if requested.
* @param dwFlags
* Formatting options, and how to interpret the lpSource parameter. The low-order
* byte of dwFlags specifies how the function handles line breaks in the output
* buffer. The low-order byte can also specify the maximum width of a formatted
* output line.
* @param lpSource
* Location of the message definition.
* @param dwMessageId
* Message identifier for the requested message.
* @param dwLanguageId
* Language identifier for the requested message.
* @param lpBuffer
* Pointer to a buffer that receives the null-terminated string that specifies the
* formatted message.
* @param nSize
* If the FORMAT_MESSAGE_ALLOCATE_BUFFER flag is not set, this parameter specifies
* the size of the output buffer, in TCHARs. If FORMAT_MESSAGE_ALLOCATE_BUFFER is
* set, this parameter specifies the minimum number of TCHARs to allocate for an
* output buffer.
* @param va_list
* Pointer to an array of values that are used as insert values in the formatted message.
* @return
* If the function succeeds, the return value is the number of TCHARs stored in
* the output buffer, excluding the terminating null character. If the function
* fails, the return value is zero. To get extended error information, call
* GetLastError.
*/
int FormatMessage(int dwFlags, Pointer lpSource, int dwMessageId,
int dwLanguageId, Buffer lpBuffer,
int nSize, Pointer va_list);
/**
* The CreateFile function creates or opens a file, file stream, directory, physical
* disk, volume, console buffer, tape drive, communications resource, mailslot, or
* named pipe. The function returns a handle that can be used to access an object.
* @param lpFileName
* A pointer to a null-terminated string that specifies the name of an object to create or open.
* @param dwDesiredAccess
* The access to the object, which can be read, write, or both.
* @param dwShareMode
* The sharing mode of an object, which can be read, write, both, or none.
* @param lpSecurityAttributes
* A pointer to a SECURITY_ATTRIBUTES structure that determines whether or not
* the returned handle can be inherited by child processes. If lpSecurityAttributes
* is NULL, the handle cannot be inherited.
* @param dwCreationDisposition
* An action to take on files that exist and do not exist.
* @param dwFlagsAndAttributes
* The file attributes and flags.
* @param hTemplateFile
* Handle to a template file with the GENERIC_READ access right. The template file
* supplies file attributes and extended attributes for the file that is being
* created. This parameter can be NULL.
* @return
* If the function succeeds, the return value is an open handle to a specified file.
* If a specified file exists before the function call and dwCreationDisposition is
* CREATE_ALWAYS or OPEN_ALWAYS, a call to GetLastError returns ERROR_ALREADY_EXISTS,
* even when the function succeeds. If a file does not exist before the call,
* GetLastError returns 0 (zero). If the function fails, the return value is
* INVALID_HANDLE_VALUE. To get extended error information, call GetLastError.
*/
HANDLE CreateFile(String lpFileName, int dwDesiredAccess, int dwShareMode,
WinBase.SECURITY_ATTRIBUTES lpSecurityAttributes, int dwCreationDisposition,
int dwFlagsAndAttributes, HANDLE hTemplateFile);
/**
* The CreateDirectory function creates a new directory. If the underlying file
* system supports security on files and directories, the function applies a
* specified security descriptor to the new directory.
* @param lpPathName
* Pointer to a null-terminated string that specifies the path of the directory
* to be created.
* @param lpSecurityAttributes
* Pointer to a SECURITY_ATTRIBUTES structure. The lpSecurityDescriptor member
* of the structure specifies a security descriptor for the new directory. If
* lpSecurityAttributes is NULL, the directory gets a default security descriptor.
* @return
* If the function succeeds, the return value is nonzero. If the function fails,
* the return value is zero. To get extended error information, call GetLastError.
*/
boolean CreateDirectory(String lpPathName,
WinBase.SECURITY_ATTRIBUTES lpSecurityAttributes);
/**
* Reads data from the specified file or input/output (I/O) device. Reads
* occur at the position specified by the file pointer if supported by the
* device.
*
* This function is designed for both synchronous and asynchronous
* operations. For a similar function designed solely for asynchronous
* operation, see ReadFileEx
*
* @param hFile A handle to the device (for example, a file, file stream,
* physical disk, volume, console buffer, tape drive, socket, communications
* resource, mailslot, or pipe).
* @param lpBuffer A pointer to the buffer that receives the data read from a file or device.
* @param nNumberOfBytesToRead The maximum number of bytes to be read.
* @param lpNumberOfBytesRead A pointer to the variable that receives the number of bytes
* read when using a synchronous hFile parameter
* @param lpOverlapped A pointer to an OVERLAPPED structure is required if the hFile
* parameter was opened with FILE_FLAG_OVERLAPPED, otherwise it can be NULL.
* @return If the function succeeds, the return value is nonzero (TRUE).
* If the function fails, or is completing asynchronously, the return value is zero (FALSE).
* To get extended error information, call the GetLastError function.
*
* Note The GetLastError code ERROR_IO_PENDING is not a failure; it designates the read
* operation is pending completion asynchronously. For more information, see Remarks.
*/
boolean ReadFile(
HANDLE hFile,
Buffer lpBuffer,
int nNumberOfBytesToRead,
IntByReference lpNumberOfBytesRead,
WinBase.OVERLAPPED lpOverlapped);
/**
* Creates an input/output (I/O) completion port and associates it with a specified
* file handle, or creates an I/O completion port that is not yet associated with a
* file handle, allowing association at a later time.
* @param FileHandle
* An open file handle or INVALID_HANDLE_VALUE.
* @param ExistingCompletionPort
* A handle to an existing I/O completion port or NULL.
* @param CompletionKey
* The per-handle user-defined completion key that is included in every I/O completion
* packet for the specified file handle.
* @param NumberOfConcurrentThreads
* The maximum number of threads that the operating system can allow to concurrently
* process I/O completion packets for the I/O completion port.
* @return
* If the function succeeds, the return value is the handle to an I/O completion port:
* If the ExistingCompletionPort parameter was NULL, the return value is a new handle.
* If the ExistingCompletionPort parameter was a valid I/O completion port handle, the return value is that same handle.
* If the FileHandle parameter was a valid handle, that file handle is now associated with the returned I/O completion port.
* If the function fails, the return value is NULL. To get extended error information, call the GetLastError function.
*/
HANDLE CreateIoCompletionPort(HANDLE FileHandle, HANDLE ExistingCompletionPort,
Pointer CompletionKey, int NumberOfConcurrentThreads);
/**
* Attempts to dequeue an I/O completion packet from the specified I/O completion
* port. If there is no completion packet queued, the function waits for a pending
* I/O operation associated with the completion port to complete.
* @param CompletionPort
* A handle to the completion port.
* @param lpNumberOfBytes
* A pointer to a variable that receives the number of bytes transferred during
* an I/O operation that has completed.
* @param lpCompletionKey
* A pointer to a variable that receives the completion key value associated with
* the file handle whose I/O operation has completed.
* @param lpOverlapped
* A pointer to a variable that receives the address of the OVERLAPPED structure
* that was specified when the completed I/O operation was started.
* @param dwMilliseconds
* The number of milliseconds that the caller is willing to wait for a completion
* packet to appear at the completion port.
* @return
* Returns nonzero (TRUE) if successful or zero (FALSE) otherwise.
*/
boolean GetQueuedCompletionStatus(HANDLE CompletionPort,
IntByReference lpNumberOfBytes, ByReference lpCompletionKey,
PointerByReference lpOverlapped, int dwMilliseconds);
/**
* Posts an I/O completion packet to an I/O completion port.
* @param CompletionPort
* A handle to an I/O completion port to which the I/O completion packet is to be posted.
* @param dwNumberOfBytesTransferred
* The value to be returned through the lpNumberOfBytesTransferred parameter of the GetQueuedCompletionStatus function.
* @param dwCompletionKey
* The value to be returned through the lpCompletionKey parameter of the GetQueuedCompletionStatus function.
* @param lpOverlapped
* The value to be returned through the lpOverlapped parameter of the GetQueuedCompletionStatus function.
* @return
* If the function succeeds, the return value is nonzero.
* If the function fails, the return value is zero. To get extended error information, call GetLastError .
*/
boolean PostQueuedCompletionStatus(HANDLE CompletionPort,
int dwNumberOfBytesTransferred, Pointer dwCompletionKey,
WinBase.OVERLAPPED lpOverlapped);
/**
* Waits until the specified object is in the signaled state or the time-out interval elapses.
* To enter an alertable wait state, use the WaitForSingleObjectEx function.
* To wait for multiple objects, use the WaitForMultipleObjects.
* @param hHandle
* A handle to the object. For a list of the object types whose handles can be specified, see the following Remarks section.
* If this handle is closed while the wait is still pending, the function's behavior is undefined.
* The handle must have the SYNCHRONIZE access right. For more information, see Standard Access Rights.
* @param dwMilliseconds
* The time-out interval, in milliseconds. If a nonzero value is specified, the function waits until the object is signaled or the interval elapses.
* If dwMilliseconds is zero, the function does not enter a wait state if the object is not signaled; it always returns immediately.
* If dwMilliseconds is INFINITE, the function will return only when the object is signaled.
* @return
* If the function succeeds, the return value indicates the event that caused the function to return.
*/
int WaitForSingleObject(HANDLE hHandle, int dwMilliseconds);
/**
* Waits until one or all of the specified objects are in the signaled state or the time-out interval elapses.
* To enter an alertable wait state, use the WaitForMultipleObjectsEx function.
* @param nCount
* The number of object handles in the array pointed to by lpHandles. The maximum number of object handles is MAXIMUM_WAIT_OBJECTS.
* @param hHandle
* An array of object handles. For a list of the object types whose handles can be specified, see the following Remarks section. The array can contain handles to objects of different types.
* It may not contain multiple copies of the same handle.
* If one of these handles is closed while the wait is still pending, the function's behavior is undefined.
* The handles must have the SYNCHRONIZE access right. For more information, see Standard Access Rights.
* @param bWaitAll
* If this parameter is TRUE, the function returns when the state of all objects in the lpHandles array is signaled.
* If FALSE, the function returns when the state of any one of the objects is set to signaled.
* In the latter case, the return value indicates the object whose state caused the function to return.
* @param dwMilliseconds
* The time-out interval, in milliseconds. If a nonzero value is specified, the function waits until the specified objects are signaled or the interval elapses.
* If dwMilliseconds is zero, the function does not enter a wait state if the specified objects are not signaled; it always returns immediately.
* If dwMilliseconds is INFINITE, the function will return only when the specified objects are signaled.
* @return
* If the function succeeds, the return value indicates the event that caused the function to return.
*/
int WaitForMultipleObjects(int nCount, HANDLE[] hHandle, boolean bWaitAll, int dwMilliseconds);
/**
* The DuplicateHandle function duplicates an object handle.
*
* @param hSourceProcessHandle
* Handle to the process with the handle to duplicate.
* The handle must have the PROCESS_DUP_HANDLE access right.
* @param hSourceHandle
* Handle to duplicate. This is an open object handle that is valid in the
* context of the source process.
* @param hTargetProcessHandle
* Handle to the process that is to receive the duplicated handle.
* The handle must have the PROCESS_DUP_HANDLE access right.
* @param lpTargetHandle
* Pointer to a variable that receives the duplicate handle. This handle value is valid in
* the context of the target process. If hSourceHandle is a pseudo handle returned by
* GetCurrentProcess or GetCurrentThread, DuplicateHandle converts it to a real handle to
* a process or thread, respectively.
* @param dwDesiredAccess
* Access requested for the new handle.
* @param bInheritHandle
* Indicates whether the handle is inheritable.
* @param dwOptions
* Optional actions.
* @return
* If the function succeeds, the return value is nonzero.
* If the function fails, the return value is zero. To get extended error information,
* call GetLastError.
*/
boolean DuplicateHandle(HANDLE hSourceProcessHandle, HANDLE hSourceHandle,
HANDLE hTargetProcessHandle, HANDLEByReference lpTargetHandle,
int dwDesiredAccess, boolean bInheritHandle, int dwOptions);
/**
* The CloseHandle function closes an open object handle.
*
* @param hObject
* Handle to an open object. This parameter can be a pseudo handle or INVALID_HANDLE_VALUE.
* @return
* If the function succeeds, the return value is nonzero.
* If the function fails, the return value is zero. To get extended error information,
* call GetLastError.
*/
boolean CloseHandle(HANDLE hObject);
// TODO: figure out how OVERLAPPED is used and apply an appropriate mapping
interface OVERLAPPED_COMPLETION_ROUTINE extends StdCallCallback {
void callback(int errorCode, int nBytesTransferred,
WinBase.OVERLAPPED overlapped);
}
/**
* Retrieves information that describes the changes within the specified directory.
* The function does not report changes to the specified directory itself.
* Note: there's no ReadDirectoryChangesA.
* @param directory
* A handle to the directory to be monitored. This directory must be opened with the
* FILE_LIST_DIRECTORY access right.
* @param info
* A pointer to the DWORD-aligned formatted buffer in which the read results are to be returned.
* @param length
* The size of the buffer that is pointed to by the lpBuffer parameter, in bytes.
* @param watchSubtree
* If this parameter is TRUE, the function monitors the directory tree rooted at the specified
* directory. If this parameter is FALSE, the function monitors only the directory specified by
* the hDirectory parameter.
* @param notifyFilter
* The filter criteria that the function checks to determine if the wait operation has completed.
* @param bytesReturned
* For synchronous calls, this parameter receives the number of bytes transferred into the
* lpBuffer parameter. For asynchronous calls, this parameter is undefined. You must use an asynchronous
* notification technique to retrieve the number of bytes transferred.
* @param overlapped
* A pointer to an OVERLAPPED structure that supplies data to be used during asynchronous operation.
* Otherwise, this value is NULL. The Offset and OffsetHigh members of this structure are not used.
* @param completionRoutine
* A pointer to a completion routine to be called when the operation has been completed or canceled and
* the calling thread is in an alertable wait state.
* @return
* If the function succeeds, the return value is nonzero. For synchronous calls, this means that the
* operation succeeded. For asynchronous calls, this indicates that the operation was successfully queued.
* If the function fails, the return value is zero. To get extended error information, call GetLastError.
* If the network redirector or the target file system does not support this operation, the function
* fails with ERROR_INVALID_FUNCTION.
*/
public boolean ReadDirectoryChangesW(HANDLE directory,
WinNT.FILE_NOTIFY_INFORMATION info, int length, boolean watchSubtree,
int notifyFilter, IntByReference bytesReturned, WinBase.OVERLAPPED overlapped,
OVERLAPPED_COMPLETION_ROUTINE completionRoutine);
/**
* Retrieves the short path form of the specified path.
* @param lpszLongPath
* The path string.
* @param lpdzShortPath
* A pointer to a buffer to receive the null-terminated short form of the path that lpszLongPath specifies.
* @param cchBuffer
* The size of the buffer that lpszShortPath points to, in TCHARs.
* @return
* If the function succeeds, the return value is the length, in TCHARs, of the string that is copied to
* lpszShortPath, not including the terminating null character.
* If the lpszShortPath buffer is too small to contain the path, the return value is the size of the buffer,
* in TCHARs, that is required to hold the path and the terminating null character.
* If the function fails for any other reason, the return value is zero. To get extended error information,
* call GetLastError.
*/
int GetShortPathName(String lpszLongPath, char[] lpdzShortPath, int cchBuffer);
/**
* The LocalAlloc function allocates the specified number of bytes from the heap.
* Windows memory management does not provide a separate local heap and global heap.
* @param type
* Memory allocation attributes. The default is the LMEM_FIXED value.
* @param cbInput
* Number of bytes to allocate. If this parameter is zero and the uFlags parameter
* specifies LMEM_MOVEABLE, the function returns a handle to a memory object that
* is marked as discarded.
* @return
* If the function succeeds, the return value is a handle to the newly allocated memory object.
* If the function fails, the return value is NULL. To get extended error information, call GetLastError.
*/
Pointer LocalAlloc(int type, int cbInput);
/**
* Writes data to the specified file or input/output (I/O) device.
* @param hFile
* A handle to the file or I/O device (for example, a file, file stream, physical disk, volume,
* console buffer, tape drive, socket, communications resource, mailslot, or pipe).
* @param lpBuffer
* A pointer to the buffer containing the data to be written to the file or device.
* @param nNumberOfBytesToWrite
* The number of bytes to be written to the file or device.
* @param lpNumberOfBytesWritten
* A pointer to the variable that receives the number of bytes written when using a synchronous hFile parameter.
* @param lpOverlapped
* A pointer to an OVERLAPPED structure is required if the hFile parameter was opened with FILE_FLAG_OVERLAPPED,
* otherwise this parameter can be NULL.
* @return
* If the function succeeds, the return value is nonzero (TRUE).
* If the function fails, or is completing asynchronously, the return value is zero (FALSE).
* To get extended error information, call the GetLastError function.
*/
boolean WriteFile(HANDLE hFile, byte[] lpBuffer, int nNumberOfBytesToWrite,
IntByReference lpNumberOfBytesWritten,
WinBase.OVERLAPPED lpOverlapped);
/**
* Creates or opens a named or unnamed event object.
* @param lpEventAttributes
* A pointer to a SECURITY_ATTRIBUTES structure. If this parameter is NULL,
* the handle cannot be inherited by child processes.
* @param bManualReset
* If this parameter is TRUE, the function creates a manual-reset event object,
* which requires the use of the ResetEvent function to set the event state to nonsignaled.
* If this parameter is FALSE, the function creates an auto-reset event object, and system
* automatically resets the event state to nonsignaled after a single waiting thread has
* been released.
* @param bInitialState
* If this parameter is TRUE, the initial state of the event object is signaled; otherwise,
* it is nonsignaled.
* @param lpName
* The name of the event object. The name is limited to MAX_PATH characters. Name comparison
* is case sensitive.
* @return
* If the function succeeds, the return value is a handle to the event object. If the named event
* object existed before the function call, the function returns a handle to the existing object
* and GetLastError returns ERROR_ALREADY_EXISTS.
* If the function fails, the return value is NULL. To get extended error information, call GetLastError.
*/
HANDLE CreateEvent(WinBase.SECURITY_ATTRIBUTES lpEventAttributes,
boolean bManualReset, boolean bInitialState,
String lpName);
/**
* Sets the specified event object to the signaled state.
* @param hEvent
* A handle to the event object. The CreateEvent or OpenEvent function returns this handle.
* @return
* If the function succeeds, the return value is nonzero.
* If the function fails, the return value is zero. To get extended error information, call GetLastError.
*/
boolean SetEvent(HANDLE hEvent);
/**
* Sets the specified event object to the signaled state and then resets it to the nonsignaled
* state after releasing the appropriate number of waiting threads.
* @param hEvent
* A handle to the event object. The CreateEvent or OpenEvent function returns this handle.
* @return
* If the function succeeds, the return value is nonzero.
* If the function fails, the return value is zero. To get extended error information, call GetLastError.
*/
boolean PulseEvent(HANDLE hEvent);
/**
* Creates or opens a named or unnamed file mapping object for a specified file.
* @param hFile
* A handle to the file from which to create a file mapping object.
* @param lpAttributes
* A pointer to a SECURITY_ATTRIBUTES structure that determines whether a returned handle can be inherited by child processes. The lpSecurityDescriptor member of the SECURITY_ATTRIBUTES structure specifies a security descriptor for a new file mapping object.
* @param flProtect
* Specifies the page protection of the file mapping object. All mapped views of the object must be compatible with this protection.
* @param dwMaximumSizeHigh
* The high-order DWORD of the maximum size of the file mapping object.
* @param dwMaximumSizeLow
* The low-order DWORD of the maximum size of the file mapping object.
* @param lpName
* The name of the file mapping object.
* @return
* If the function succeeds, the return value is a handle to the newly created file mapping object.
* If the object exists before the function call, the function returns a handle to the existing object (with its current size, not the specified size), and GetLastError returns ERROR_ALREADY_EXISTS.
* If the function fails, the return value is NULL. To get extended error information, call GetLastError.
*/
HANDLE CreateFileMapping(HANDLE hFile, WinBase.SECURITY_ATTRIBUTES lpAttributes,
int flProtect, int dwMaximumSizeHigh,
int dwMaximumSizeLow, String lpName);
/**
* Maps a view of a file mapping into the address space of a calling process.
* @param hFileMappingObject
* A handle to a file mapping object. The CreateFileMapping and OpenFileMapping functions return this handle.
* @param dwDesiredAccess
* The type of access to a file mapping object, which determines the protection of the pages.
* @param dwFileOffsetHigh
* A high-order DWORD of the file offset where the view begins.
* @param dwFileOffsetLow
* A low-order DWORD of the file offset where the view is to begin.
* @param dwNumberOfBytesToMap
* The number of bytes of a file mapping to map to the view.
* @return
* If the function succeeds, the return value is the starting address of the mapped view.
* If the function fails, the return value is NULL. To get extended error information, call GetLastError.
*/
Pointer MapViewOfFile(HANDLE hFileMappingObject, int dwDesiredAccess,
int dwFileOffsetHigh, int dwFileOffsetLow,
int dwNumberOfBytesToMap);
/**
* Unmaps a mapped view of a file from the calling process's address space.
* @param lpBaseAddress
* A pointer to the base address of the mapped view of a file that is to be unmapped.
* @return
* If the function succeeds, the return value is the starting address of the mapped view.
* If the function fails, the return value is NULL. To get extended error information, call GetLastError.
*/
boolean UnmapViewOfFile(Pointer lpBaseAddress);
/**
* Retrieves only the NetBIOS name of the local computer.
*
* @param buffer
* A pointer to a buffer that receives the computer name or the cluster virtual server
* name. The buffer size should be large enough to contain MAX_COMPUTERNAME_LENGTH + 1
* characters.
* @param lpnSize
* On input, specifies the size of the buffer, in TCHARs. On output, the number of TCHARs
* copied to the destination buffer, not including the terminating null character. If
* the buffer is too small, the function fails and GetLastError returns
* ERROR_BUFFER_OVERFLOW. The lpnSize parameter specifies the size of the buffer required,
* including the terminating null character.
* @return
* If the function succeeds, the return value is a nonzero value.
* If the function fails, the return value is zero. To get extended error information,
* call GetLastError.
*/
public boolean GetComputerName(char[] buffer, IntByReference lpnSize);
/**
* The OpenThread function opens an existing thread object.
* @param dwDesiredAccess
* Access to the thread object. This access right is checked against any security
* descriptor for the thread.
* @param bInheritHandle
* If this parameter is TRUE, the new process inherits the handle. If the parameter
* is FALSE, the handle is not inherited.
* @param dwThreadId
* Identifier of the thread to be opened.
* @return
* If the function succeeds, the return value is an open handle to the specified process.
* If the function fails, the return value is NULL. To get extended error information,
* call GetLastError.
*/
HANDLE OpenThread(int dwDesiredAccess, boolean bInheritHandle, int dwThreadId);
/**
* This function returns a handle to an existing process object.
* @param fdwAccess
* Not supported; set to zero.
* @param fInherit
* Not supported; set to FALSE.
* @param IDProcess
* Specifies the process identifier of the process to open.
* @return
* An open handle to the specified process indicates success.
* NULL indicates failure.
* To get extended error information, call GetLastError.
*/
HANDLE OpenProcess(int fdwAccess, boolean fInherit, int IDProcess);
/**
* The GetTempPath function retrieves the path of the directory designated
* for temporary files.
* @param nBufferLength
* Size of the string buffer identified by lpBuffer, in TCHARs.
* @param buffer
* Pointer to a string buffer that receives the null-terminated string specifying the
* temporary file path. The returned string ends with a backslash, for example,
* C:\TEMP\.
* @return
* If the function succeeds, the return value is the length, in TCHARs, of the string
* copied to lpBuffer, not including the terminating null character. If the return value
* is greater than nBufferLength, the return value is the length, in TCHARs, of the
* buffer required to hold the path.
*
* If the function fails, the return value is zero. To get extended error information,
* call GetLastError.
*/
DWORD GetTempPath(DWORD nBufferLength, char[] buffer);
/**
* The GetVersion function returns the current version number of the operating system.
* @return
* If the function succeeds, the return value includes the major and minor version numbers
* of the operating system in the low order word, and information about the operating system
* platform in the high order word.
*/
DWORD GetVersion();
/**
* The GetVersionEx function obtains extended information about the version of the operating
* system that is currently running.
* @param lpVersionInfo
* Pointer to an OSVERSIONINFO data structure that the function fills with operating system
* version information.
* @return
* If the function succeeds, the return value is a nonzero value.
* If the function fails, the return value is zero. To get extended error information,
* call GetLastError. The function fails if you specify an invalid value for the
* dwOSVersionInfoSize member of the OSVERSIONINFO or OSVERSIONINFOEX structure.
*/
boolean GetVersionEx(OSVERSIONINFO lpVersionInfo);
/**
* The GetVersionEx function obtains extended information about the version of the operating
* system that is currently running.
* @param lpVersionInfo
* Pointer to an OSVERSIONINFOEX data structure that the function fills with operating system
* version information.
* @return
* If the function succeeds, the return value is a nonzero value.
* If the function fails, the return value is zero. To get extended error information,
* call GetLastError. The function fails if you specify an invalid value for the
* dwOSVersionInfoSize member of the OSVERSIONINFO or OSVERSIONINFOEX structure.
*/
boolean GetVersionEx(OSVERSIONINFOEX lpVersionInfo);
/**
* The GetSystemInfo function returns information about the current system.
* @param lpSystemInfo
* Pointer to a SYSTEM_INFO structure that receives the information.
*/
void GetSystemInfo(SYSTEM_INFO lpSystemInfo);
/**
* The GetNativeSystemInfo function retrieves information about the current system to an
* application running under WOW64. If the function is called from a 64-bit application,
* it is equivalent to the GetSystemInfo function.
* @param lpSystemInfo
* Pointer to a SYSTEM_INFO structure that receives the information.
*/
void GetNativeSystemInfo(SYSTEM_INFO lpSystemInfo);
/**
* The IsWow64Process function determines whether the specified process is running under WOW64.
* @param hProcess
* Handle to a process.
* @param Wow64Process
* Pointer to a value that is set to TRUE if the process is running under WOW64.
* Otherwise, the value is set to FALSE.
* @return
* If the function succeeds, the return value is a nonzero value.
* If the function fails, the return value is zero. To get extended error information, call GetLastError.
*/
boolean IsWow64Process(HANDLE hProcess, IntByReference Wow64Process);
/**
* Retrieves information about the system's current usage of both physical and virtual memory.
* @param lpBuffer
* A pointer to a MEMORYSTATUSEX structure that receives information about current memory availability.
* @return
* If the function succeeds, the return value is nonzero.
* If the function fails, the return value is zero. To get extended error information,
* call GetLastError.
*/
boolean GlobalMemoryStatusEx(MEMORYSTATUSEX lpBuffer);
/**
* The GetLogicalDriveStrings function fills a buffer with strings that specify
* valid drives in the system.
* @param nBufferLength
* Maximum size of the buffer pointed to by lpBuffer, in TCHARs. This size does not include
* the terminating null character. If this parameter is zero, lpBuffer is not used.
* @param lpBuffer
* Pointer to a buffer that receives a series of null-terminated strings, one for each valid
* drive in the system, plus with an additional null character. Each string is a device name.
* @return
* If the function succeeds, the return value is the length, in characters, of the strings
* copied to the buffer, not including the terminating null character. Note that an ANSI-ASCII
* null character uses one byte, but a Unicode null character uses two bytes.
* If the buffer is not large enough, the return value is greater than nBufferLength. It is
* the size of the buffer required to hold the drive strings.
* If the function fails, the return value is zero. To get extended error information, use
* the GetLastError function.
*/
DWORD GetLogicalDriveStrings(DWORD nBufferLength, char[] lpBuffer);
/**
* The GetDiskFreeSpaceEx function retrieves information about the amount of space that is
* available on a disk volume, which is the total amount of space, the total amount of free
* space, and the total amount of free space available to the user that is associated with
* the calling thread.
* @param lpDirectoryName
* A pointer to a null-terminated string that specifies a directory on a disk.
* If this parameter is NULL, the function uses the root of the current disk.
* If this parameter is a UNC name, it must include a trailing backslash, for example,
* \\MyServer\MyShare\.
* This parameter does not have to specify the root directory on a disk. The function
* accepts any directory on a disk.
* @param lpFreeBytesAvailable
* A pointer to a variable that receives the total number of free bytes on a disk that
* are available to the user who is associated with the calling thread.
* This parameter can be NULL.
* @param lpTotalNumberOfBytes
* A pointer to a variable that receives the total number of bytes on a disk that are
* available to the user who is associated with the calling thread.
* This parameter can be NULL.
* @param lpTotalNumberOfFreeBytes
* A pointer to a variable that receives the total number of free bytes on a disk.
* This parameter can be NULL.
* @return
* If the function succeeds, the return value is nonzero.
* If the function fails, the return value is 0 (zero). To get extended error information,
* call GetLastError.
*/
boolean GetDiskFreeSpaceEx(String lpDirectoryName, LARGE_INTEGER.ByReference lpFreeBytesAvailable,
LARGE_INTEGER.ByReference lpTotalNumberOfBytes, LARGE_INTEGER.ByReference lpTotalNumberOfFreeBytes);
/**
* Deletes an existing file.
* @param filename
* The name of the file to be deleted.
* @return
* If the function succeeds, the return value is nonzero.
* If the function fails, the return value is zero (0). To get extended error information, call GetLastError.
*/
public boolean DeleteFile(String filename);
/**
* Creates an anonymous pipe, and returns handles to the read and write ends of the pipe.
* @param hReadPipe A pointer to a variable that receives the read handle for the pipe.
* @param hWritePipe A pointer to a variable that receives the write handle for the pipe.
* @param lpPipeAttributes A pointer to a SECURITY_ATTRIBUTES structure that determines whether
* the returned handle can be inherited by child processes.
* @param nSize The size of the buffer for the pipe, in bytes.
* @return If the function succeeds, the return value is nonzero.
* If the function fails, the return value is zero. To get extended error information, call GetLastError.
*/
public boolean CreatePipe(
HANDLEByReference hReadPipe,
HANDLEByReference hWritePipe,
WinBase.SECURITY_ATTRIBUTES lpPipeAttributes,
int nSize);
/**
* Sets certain properties of an object handle.
* @param hObject A handle to an object whose information is to be set.
* @param dwMask A mask that specifies the bit flags to be changed. Use the same constants shown in the description of dwFlags.
* @param dwFlags Set of bit flags that specifies properties of the object handle.
* @return If the function succeeds, the return value is nonzero.
* If the function fails, the return value is zero. To get extended error information, call GetLastError.
*/
boolean SetHandleInformation(
HANDLE hObject,
int dwMask,
int dwFlags);
/**
* Retrieves file system attributes for a specified file or directory.
* @param lpFileName The name of the file or directory. Prepend \\?\ to the path for names up to 32,767 wide characters
* @return INVALID_FILE_ATTRIBUTES if the function fails, otherwise the file attributes WinNT.FILE_ATTRIBUTE_*
*/
public int GetFileAttributes(String lpFileName);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy