17 #ifndef LIB_WINSS_WINDOWS_INTERFACE_HPP_ 18 #define LIB_WINSS_WINDOWS_INTERFACE_HPP_ 25 #define WINDOWS winss::WindowsInterface::GetInstance() 37 static std::shared_ptr<WindowsInterface>
instance;
51 char* command_line, SECURITY_ATTRIBUTES* proc_attr,
52 SECURITY_ATTRIBUTES* thread_atttr,
bool inherit_handles,
53 DWORD creation_flags,
void* env,
const char* current_dir,
54 STARTUPINFO* startup_info, PROCESS_INFORMATION* proc_info)
const;
59 virtual HANDLE
CreateEvent(SECURITY_ATTRIBUTES* event_attributes,
60 bool manual_reset,
bool initial_state,
char* name)
const;
65 virtual bool CreatePipe(PHANDLE read_pipe, PHANDLE write_pipe,
66 LPSECURITY_ATTRIBUTES pipe_attr, DWORD size)
const;
72 DWORD pipe_mode, DWORD max_instances, DWORD out_buffer_size,
73 DWORD in_buffer_size, DWORD default_time_out,
74 LPSECURITY_ATTRIBUTES security_attributes)
const;
79 virtual HANDLE
CreateFile(
char* file_name, DWORD desired_access,
80 DWORD share_mode, LPSECURITY_ATTRIBUTES security_attributes,
81 DWORD creation_disposition, DWORD flags_and_attributes,
82 HANDLE template_file)
const;
87 virtual HANDLE
CreateMutex(LPSECURITY_ATTRIBUTES attributes,
88 bool initial_owner, LPCTSTR name)
const;
93 virtual HANDLE
OpenMutex(DWORD desired_access,
bool inherit,
99 virtual bool SetEvent(HANDLE handle)
const;
110 LPOVERLAPPED overlapped)
const;
121 LPDWORD bytes, BOOL wait)
const;
126 virtual bool ReadFile(HANDLE handle, LPVOID buffer, DWORD to_read,
127 LPDWORD read, LPOVERLAPPED overlapped)
const;
132 virtual bool WriteFile(HANDLE handle, LPCVOID buffer, DWORD to_write,
133 LPDWORD written, LPOVERLAPPED overlapped)
const;
144 const HANDLE* handles,
bool wait_all, DWORD timeout)
const;
150 HANDLE source_handle, HANDLE target_process_handle,
151 LPHANDLE target_handle, DWORD desired_access,
153 DWORD options)
const;
180 DWORD proc_group_id)
const;
248 virtual RPC_STATUS
UuidCompare(GUID* uuid1, GUID* uuid2,
249 RPC_STATUS* status)
const;
255 unsigned char** string_uuid)
const;
266 virtual RPC_STATUS
RpcStringFree(
unsigned char** rpc_string)
const;
272 LPCTSTR provider, DWORD type, DWORD flags)
const;
278 HCRYPTKEY key, DWORD flags, HCRYPTHASH* hash)
const;
283 virtual bool CryptHashData(HCRYPTHASH hash,
unsigned char* data,
284 DWORD length, DWORD flags)
const;
290 unsigned char* data, DWORD* length, DWORD flags)
const;
316 #endif // LIB_WINSS_WINDOWS_INTERFACE_HPP_ virtual RPC_STATUS UuidCompare(GUID *uuid1, GUID *uuid2, RPC_STATUS *status) const
UuidCompare
Definition: windows_interface.cpp:204
virtual DWORD GetEnvironmentVariable(LPCTSTR name, LPTSTR buffer, DWORD size) const
GetEnvironmentVariable
Definition: windows_interface.cpp:172
virtual bool CryptGetHashParam(HCRYPTHASH hash, DWORD param, unsigned char *data, DWORD *length, DWORD flags) const
CryptGetHashParam
Definition: windows_interface.cpp:239
virtual bool CryptReleaseContext(HCRYPTPROV csp, DWORD flags) const
CryptReleaseContext
Definition: windows_interface.cpp:248
virtual HANDLE OpenMutex(DWORD desired_access, bool inherit, LPCTSTR name) const
OpenMutex
Definition: windows_interface.cpp:72
virtual bool CreatePipe(PHANDLE read_pipe, PHANDLE write_pipe, LPSECURITY_ATTRIBUTES pipe_attr, DWORD size) const
CreatePipe
Definition: windows_interface.cpp:43
virtual HANDLE CreateFile(char *file_name, DWORD desired_access, DWORD share_mode, LPSECURITY_ATTRIBUTES security_attributes, DWORD creation_disposition, DWORD flags_and_attributes, HANDLE template_file) const
CreateFile
Definition: windows_interface.cpp:57
virtual HANDLE CreateEvent(SECURITY_ATTRIBUTES *event_attributes, bool manual_reset, bool initial_state, char *name) const
CreateEvent
Definition: windows_interface.cpp:36
virtual DWORD WaitForSingleObject(HANDLE handle, DWORD timeout) const
WaitForSingleObject
Definition: windows_interface.cpp:109
virtual HANDLE GetCurrentProcess() const
GetCurrentProcess
Definition: windows_interface.cpp:154
virtual bool SetEvent(HANDLE handle) const
SetEvent
Definition: windows_interface.cpp:77
virtual RPC_STATUS UuidToString(const GUID *uuid, unsigned char **string_uuid) const
UuidToString
Definition: windows_interface.cpp:209
virtual HANDLE CreateNamedPipe(char *name, DWORD open_mode, DWORD pipe_mode, DWORD max_instances, DWORD out_buffer_size, DWORD in_buffer_size, DWORD default_time_out, LPSECURITY_ATTRIBUTES security_attributes) const
CreateNamedPipe
Definition: windows_interface.cpp:48
virtual bool FreeEnvironmentStrings(LPTCH lpszEnvironmentBlock) const
FreeEnvironmentStrings
Definition: windows_interface.cpp:186
virtual bool CreateProcess(const char *application_name, char *command_line, SECURITY_ATTRIBUTES *proc_attr, SECURITY_ATTRIBUTES *thread_atttr, bool inherit_handles, DWORD creation_flags, void *env, const char *current_dir, STARTUPINFO *startup_info, PROCESS_INFORMATION *proc_info) const
CreateProcess
Definition: windows_interface.cpp:26
virtual bool SetConsoleCtrlHandler(PHANDLER_ROUTINE handler, bool add) const
SetConsoleCtrlHandler
Definition: windows_interface.cpp:191
virtual RPC_STATUS RpcStringFree(unsigned char **rpc_string) const
RpcStringFree
Definition: windows_interface.cpp:219
virtual bool DuplicateHandle(HANDLE source_process_handle, HANDLE source_handle, HANDLE target_process_handle, LPHANDLE target_handle, DWORD desired_access, bool inherit_handle, DWORD options) const
DuplicateHandle
Definition: windows_interface.cpp:119
Definition: case_ignore.hpp:23
virtual RPC_STATUS UuidCreateNil(GUID *uuid) const
UuidCreateNil
Definition: windows_interface.cpp:200
virtual bool SetEnvironmentVariable(LPCTSTR name, LPCTSTR value) const
SetEnvironmentVariable
Definition: windows_interface.cpp:167
Wraps the windows functions as an interface so that they can be easily mocked and tested...
Definition: windows_interface.hpp:32
WindowsInterface & operator=(const WindowsInterface &)=delete
No copy.
virtual bool CloseHandle(HANDLE handle) const
CloseHandle
Definition: windows_interface.cpp:140
virtual bool ReleaseMutex(HANDLE mutex) const
ReleaseMutex
Definition: windows_interface.cpp:136
WindowsInterface()
Create a new Windows interface.
Definition: windows_interface.hpp:43
virtual bool GetExitCodeProcess(HANDLE handle, DWORD *exit_code) const
GetExitCodeProcess
Definition: windows_interface.cpp:149
virtual DWORD GetLastError() const
GetLastError
Definition: windows_interface.cpp:163
virtual RPC_STATUS UuidFromString(unsigned char *string_uuid, GUID *uuid) const
UuidFromString
Definition: windows_interface.cpp:214
virtual bool ReadFile(HANDLE handle, LPVOID buffer, DWORD to_read, LPDWORD read, LPOVERLAPPED overlapped) const
ReadFile
Definition: windows_interface.cpp:99
virtual LPTCH GetEnvironmentStrings() const
GetEnvironmentStrings
Definition: windows_interface.cpp:182
virtual bool GenerateConsoleCtrlEvent(DWORD ctrl_event, DWORD proc_group_id) const
GenerateConsoleCtrlEvent
Definition: windows_interface.cpp:144
virtual DWORD WaitForMultipleObjects(DWORD handles_count, const HANDLE *handles, bool wait_all, DWORD timeout) const
WaitForMultipleObjects
Definition: windows_interface.cpp:114
virtual HANDLE CreateMutex(LPSECURITY_ATTRIBUTES attributes, bool initial_owner, LPCTSTR name) const
CreateMutex
Definition: windows_interface.cpp:67
virtual RPC_STATUS UuidCreateSequential(GUID *uuid) const
UuidCreateSequential
Definition: windows_interface.cpp:196
static const WindowsInterface & GetInstance()
Gets the Wdinows interface instance.
Definition: windows_interface.cpp:253
virtual bool DisconnectNamedPipe(HANDLE handle) const
ConnectNamedPipe
Definition: windows_interface.cpp:90
virtual bool ConnectNamedPipe(HANDLE handle, LPOVERLAPPED overlapped) const
ConnectNamedPipe
Definition: windows_interface.cpp:85
virtual bool CryptHashData(HCRYPTHASH hash, unsigned char *data, DWORD length, DWORD flags) const
CryptHashData
Definition: windows_interface.cpp:234
virtual bool TerminateProcess(HANDLE process, UINT exit_code) const
TerminateProcess
Definition: windows_interface.cpp:158
virtual bool CryptCreateHash(HCRYPTPROV csp, ALG_ID algorithm, HCRYPTKEY key, DWORD flags, HCRYPTHASH *hash) const
CryptCreateHash
Definition: windows_interface.cpp:229
virtual bool WriteFile(HANDLE handle, LPCVOID buffer, DWORD to_write, LPDWORD written, LPOVERLAPPED overlapped) const
WriteFile
Definition: windows_interface.cpp:104
virtual DWORD ExpandEnvironmentStrings(LPCTSTR src, LPTSTR dst, DWORD size) const
ExpandEnvironmentStrings
Definition: windows_interface.cpp:177
virtual bool ResetEvent(HANDLE handle) const
ResetEvent
Definition: windows_interface.cpp:81
virtual bool SetHandleInformation(HANDLE object, DWORD mask, DWORD flags) const
SetHandleInformation
Definition: windows_interface.cpp:127
virtual bool CryptAcquireContext(HCRYPTPROV *csp, LPCTSTR container, LPCTSTR provider, DWORD type, DWORD flags) const
CryptAcquireContext
Definition: windows_interface.cpp:224
static std::shared_ptr< WindowsInterface > instance
A singleton Windows instance.
Definition: windows_interface.hpp:37
virtual bool GetOverlappedResult(HANDLE handle, LPOVERLAPPED overlapped, LPDWORD bytes, BOOL wait) const
GetOverlappedResult
Definition: windows_interface.cpp:94
virtual bool CryptDestroyHash(HCRYPTHASH hash) const
CryptDestroyHash
Definition: windows_interface.cpp:244
virtual HANDLE GetStdHandle(DWORD std_handle) const
GetStdHandle
Definition: windows_interface.cpp:132