.. _program_listing_file_include_input_DefaultDevs_windows_DefaultDevs.hpp: Program Listing for File DefaultDevs.hpp ======================================== |exhale_lsh| :ref:`Return to documentation for file ` (``include\input\DefaultDevs\windows\DefaultDevs.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include "Input_State.hpp" #include "MetadataTXRX.hpp" #include "NameGen.hpp" #include "PDJE_Crypto.hpp" #include "PDJE_EXPORT_SETTER.hpp" #include "PDJE_Input_DataLine.hpp" #include "PDJE_Input_Device_Data.hpp" #include "PDJE_RAII_WRAP.hpp" #include "PSKPipe.hpp" #include "Secured_IPC_TX_RX.hpp" #include "ipc_named_event.hpp" #include #include #include namespace PDJE_DEFAULT_DEVICES { using namespace PDJE_IPC; using nj = nlohmann::json; struct HandleCloser { void operator()(HANDLE h) noexcept { if (h && h != INVALID_HANDLE_VALUE) ::CloseHandle(h); } }; using WINRAII = PDJE_RAII::RAII; class DefaultDevs { private: STARTUPINFOW start_up_info{}; PROCESS_INFORMATION process_info{}; std::optional input_buffer; WINRAII subprocess_RAII; MetadataTXRX meta; PDJE_CRYPTO::PSKPipe pipe; struct { EVENT input_loop_run_event; EVENT terminate_event; } events; bool OpenProcess(const fs::path &pt); void InitEvents(); public: void SetPlatformContexts(void *, void *, bool) { // Reserved for cross-platform PDJE_Input::Init(...) signature parity. } std::string GetCurrentBackendString() const { return "rawinput-ipc"; } bool Kill() { return meta.Kill(); } std::vector GetDevices() { return meta.QueryDevices(); } PDJE_IPC::PDJE_Input_Transfer * GetInputBufferPTR() { return &(input_buffer.value()); } void Ready(); void RunLoop() { events.input_loop_run_event.Wake(); } void TerminateLoop() { events.terminate_event.Wake(); } bool Config(const std::vector &devs); DefaultDevs(); ~DefaultDevs(); }; }; // namespace PDJE_DEFAULT_DEVICES