7#ifndef LOGICALACCESS_READERKEYBOARD_PROVIDER_HPP
8#define LOGICALACCESS_READERKEYBOARD_PROVIDER_HPP
18#include <logicalaccess/plugins/readers/keyboard/lla_readers_private_keyboard_api.hpp>
22#define READER_KEYBOARD "Keyboard"
25#define SessionHookMap std::map<DWORD, DWORD>
27DWORD WINAPI WatchThread(LPVOID lpThreadParameter);
50 void release()
override;
56 static std::shared_ptr<KeyboardReaderProvider> getSingletonInstance();
80 bool refreshReaderList()
override;
95 std::shared_ptr<ReaderUnit> createReaderUnit()
override;
98 DWORD launchHook(HANDLE hUserTokenDup =
nullptr)
const;
100 DWORD launchHookIntoDifferentSession(DWORD destSessionId)
const;
103 void generateSharedGuid();
105 long createKbdFileMapping();
107 void freeKbdFileMapping();
109 static void fillSecurityDescriptor(LPSECURITY_ATTRIBUTES sa, PACL pACL);
111 long createKbdEvent();
115 void startAndWatchOnActiveConsole();
117 void stopWatchingActiveConsole();
120 retrieveWinlogonUserToken(
const DWORD destSessionId,
121 const SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,
122 const TOKEN_TYPE TokenType);
124 static std::string getHookPath();
126 std::string getHookArguments()
const;
128 static bool is64BitWindows();
130 static bool terminateProcess(DWORD dwProcessId, UINT uExitCode);
143 std::string sharedGuid;
156 SessionHookMap processHookedSessions;
Keyboard Reader Provider class.
Definition: keyboardreaderprovider.hpp:34
std::string getRPName() const override
Get the reader provider name.
Definition: keyboardreaderprovider.hpp:71
const ReaderList & getReaderList() override
Get reader list for this reader provider.
Definition: keyboardreaderprovider.hpp:86
ReaderList d_readers
The reader list.
Definition: keyboardreaderprovider.hpp:136
std::string getRPType() const override
Get the reader provider type.
Definition: keyboardreaderprovider.hpp:62
A Reader Provider base class. It provide a available list of specific reader kind.
Definition: readerprovider.hpp:28
logicalaccess::KeyboardSharedStruct * sKeyboard
Definition: islogkbdhook.cpp:32
HANDLE hKbdEventProcessed
Definition: islogkbdhook.cpp:34
HANDLE hStillAliveEvent
Definition: islogkbdhook.cpp:36
HANDLE shKeyboard
Definition: islogkbdhook.cpp:31
HANDLE hKbdEvent
Definition: islogkbdhook.cpp:33
HANDLE hHostEvent
Definition: islogkbdhook.cpp:35
#define READER_KEYBOARD
Definition: keyboardreaderprovider.hpp:22
std::vector< std::shared_ptr< ReaderUnit > > ReaderList
A reader unit list.
Definition: readerprovider.hpp:18
Definition: keyboardsharedstruct.hpp:33