diff options
Diffstat (limited to 'spb/SpbTestTool/exe/command.h')
| -rw-r--r-- | spb/SpbTestTool/exe/command.h | 638 |
1 files changed, 0 insertions, 638 deletions
diff --git a/spb/SpbTestTool/exe/command.h b/spb/SpbTestTool/exe/command.h deleted file mode 100644 index 5e2633bd..00000000 --- a/spb/SpbTestTool/exe/command.h +++ /dev/null @@ -1,638 +0,0 @@ -/*++ - -Copyright (c) Microsoft Corporation. All rights reserved. - -Module Name: - - command.h - -Abstract: - - This module contains the class declarations for the various - SpbTestTool commands. - -Environment: - - user-mode - -Revision History: - ---*/ - -typedef struct CCommand CCommand, *PCCommand; - -pair<ULONG, PBYTE> -ParseBuffer( - _In_ list<string> *Parameters, - _In_ list<string>::iterator Start - ); - -VOID -PrintCommands(); - -struct CCommand -{ -public: - - long Index; - string Type; - list<string> *Parameters; - - // - // File handle this command is being run against (if any). - // - - HANDLE File; - - // - // Overlapped structure for this command to use. - // - - OVERLAPPED Overlapped; - - // - // Handle to the thread for this command (if run asynchronously) - // The thread is signalled when the command is complete. - // - - HANDLE Thread; - - // - // Common parameters. - // - - string Address; - PBYTE Buffer; - - static long s_Index; - - CCommand( - _In_ string Type, - _In_ __drv_aliasesMem list<string> *Tokens - ) : Type(Type), - Thread(nullptr), - Parameters(Tokens), - Address(""), - Buffer(nullptr), - File(nullptr) - { - ZeroMemory(&Overlapped, sizeof(OVERLAPPED)); - Index = s_Index; - s_Index += 1; - return; - } - - virtual - ~CCommand( - void - ) - { - delete[] Buffer; - delete Parameters; - } - - virtual - bool - Parse( - void - ) - { - File = g_Peripheral; - return true; - } - - void - DetachParameter( - void - ) - { - Parameters = nullptr; - } - - - typedef - void - (FN_PARSE)( - _In_ list<string>::const_iterator &Iterator - ); - -public: - - static - PCCommand - _ParseCommand( - _In_ __drv_when(return != nullptr, __drv_aliasesMem) list<string> *Tokens - ); - -public: - - VOID - FakeCompletion( - _In_ DWORD Status, - _In_ DWORD Information - ) - { - Overlapped.Internal = Status == NO_ERROR ? Status : HRESULT_FROM_WIN32(Status); - Overlapped.InternalHigh = Information; - SetEvent(Overlapped.hEvent); - } - - virtual - bool - Execute( - VOID - ) = 0; - - virtual - void - Complete( - _In_ DWORD Status, - _In_ DWORD Information - ) - { - printf("%s completed with status %u, information %u\n", - Type.c_str(), - Status, - Information); - } - - virtual - bool - Cancel( - VOID - ) - { - if (File != nullptr) - { - return CancelIoEx(File, &Overlapped) ? true : false; - } - else - { - return false; - } - } -}; - -class COpenCommand : public CCommand -{ -private: - -public: - COpenCommand( - _In_ __drv_aliasesMem list<string> *Parameters, - _In_opt_ string Tag - ) : CCommand("open", Parameters) - { - return; - } - - bool - Execute( - VOID - ); - - void - Complete( - _In_ DWORD Status, - _In_ DWORD Information - ); -}; - -class CCloseCommand : public CCommand -{ -private: - -public: - CCloseCommand( - _In_ __drv_aliasesMem list<string> *Parameters, - _In_opt_ string Tag - ) : CCommand("close", Parameters) - { - return; - } - - bool - Execute( - VOID - ); - - void - Complete( - _In_ DWORD Status, - _In_ DWORD Information - ); -}; - -class CLockCommand : public CCommand -{ -private: - -public: - CLockCommand( - _In_ __drv_aliasesMem list<string> *Parameters, - _In_opt_ string Tag - ) : CCommand("lock", Parameters) - { - return; - } - - bool - Execute( - VOID - ); - - void - Complete( - _In_ DWORD Status, - _In_ DWORD Information - ); -}; - -class CUnlockCommand : public CCommand -{ -private: - -public: - CUnlockCommand( - _In_ __drv_aliasesMem list<string> *Parameters, - _In_opt_ string Tag - ) : CCommand("unlock", Parameters) - { - return; - } - - bool - Execute( - VOID - ); - - void - Complete( - _In_ DWORD Status, - _In_ DWORD Information - ); -}; - -class CLockConnectionCommand : public CCommand -{ -private: - -public: - CLockConnectionCommand( - _In_ __drv_aliasesMem list<string> *Parameters, - _In_opt_ string Tag - ) : CCommand("lockconn", Parameters) - { - return; - } - - bool - Execute( - VOID - ); - - void - Complete( - _In_ DWORD Status, - _In_ DWORD Information - ); -}; - -class CUnlockConnectionCommand : public CCommand -{ -private: - -public: - CUnlockConnectionCommand( - _In_ __drv_aliasesMem list<string> *Parameters, - _In_opt_ string Tag - ) : CCommand("unlockconn", Parameters) - { - return; - } - - bool - Execute( - VOID - ); - - void - Complete( - _In_ DWORD Status, - _In_ DWORD Information - ); -}; - -class CReadCommand : public CCommand -{ -private: - ULONG Length; - -public: - - CReadCommand( - _In_ __drv_aliasesMem list<string> *Parameters, - _In_opt_ string Tag - ) : CCommand("read", Parameters) - { - return; - } - - bool - Parse( - void - ) - { - if (CCommand::Parse() == false) - { - return false; - } - - if (PopNumberParameter(Parameters, 10, &Length) == false) - { - printf("Length required\n"); - return false; - } - - if (Length > 0) - { - Buffer = new BYTE[Length]; - ZeroMemory(Buffer, Length); - } - else - { - Buffer = nullptr; - } - - return true; - } - - bool - Execute( - VOID - ); - - void - Complete( - _In_ DWORD Status, - _In_ DWORD Information - ); -}; - - -class CWriteCommand : public CCommand -{ -private: - ULONG Length; - -public: - - CWriteCommand( - _In_ __drv_aliasesMem list<string> *Parameters, - _In_opt_ string Tag - ) : CCommand("write", Parameters) - { - return; - } - - bool - Parse( - VOID - ) - { - if (CCommand::Parse() == false) - { - return false; - } - - pair<ULONG, PBYTE> buf; - - if (PopBufferParameter(Parameters, &buf) == false) - { - printf("Buffer required\n"); - return false; - } - - Length = buf.first; - Buffer = buf.second; - - return true; - } - - bool - Execute( - VOID - ); - - void - Complete( - _In_ DWORD Status, - _In_ DWORD Information - ); -}; - -class CWriteReadCommand : public CCommand -{ -private: - ULONG WriteLength; - ULONG ReadLength; - - PBYTE WriteBuffer; - -public: - - CWriteReadCommand( - _In_ __drv_aliasesMem list<string> *Parameters, - _In_opt_ string Tag - ) : CCommand("writeread", Parameters) - { - WriteBuffer = NULL; - return; - } - - ~CWriteReadCommand( - void - ) - { - delete[] WriteBuffer; - } - - bool - Parse( - void - ) - { - if (CCommand::Parse() == false) - { - return false; - } - - pair<ULONG, PBYTE> buf; - - if (PopBufferParameter(Parameters, &buf) == false) - { - printf("Buffer required\n"); - return false; - } - - WriteLength = buf.first; - WriteBuffer = buf.second; - - if (PopNumberParameter(Parameters, 10, &ReadLength) == false) - { - printf("Length required\n"); - return false; - } - - if (ReadLength > 0) - { - Buffer = new BYTE[ReadLength]; - ZeroMemory(Buffer, ReadLength); - } - else - { - Buffer = nullptr; - } - - return true; - } - - bool - Execute( - VOID - ); - - void - Complete( - _In_ DWORD Status, - _In_ DWORD Information - ); -}; - -class CFullDuplexCommand : public CCommand -{ -private: - ULONG WriteLength; - ULONG ReadLength; - - PBYTE WriteBuffer; - -public: - - CFullDuplexCommand( - _In_ __drv_aliasesMem list<string> *Parameters, - _In_opt_ string Tag - ) : CCommand("fullduplex", Parameters) - { - WriteBuffer = NULL; - return; - } - - ~CFullDuplexCommand( - void - ) - { - delete[] WriteBuffer; - } - - bool - Parse( - void - ) - { - if (CCommand::Parse() == false) - { - return false; - } - - pair<ULONG, PBYTE> buf; - - if (PopBufferParameter(Parameters, &buf) == false) - { - printf("Buffer required\n"); - return false; - } - - WriteLength = buf.first; - WriteBuffer = buf.second; - - if (PopNumberParameter(Parameters, 10, &ReadLength) == false) - { - printf("Length required\n"); - return false; - } - - if (ReadLength > 0) - { - Buffer = new BYTE[ReadLength]; - ZeroMemory(Buffer, ReadLength); - } - else - { - Buffer = nullptr; - } - - return true; - } - - bool - Execute( - VOID - ); - - void - Complete( - _In_ DWORD Status, - _In_ DWORD Information - ); -}; - -class CSignalInterruptCommand : public CCommand -{ -private: - -public: - CSignalInterruptCommand( - _In_ __drv_aliasesMem list<string> *Parameters, - _In_opt_ string Tag - ) : CCommand("signal", Parameters) - { - return; - } - - bool - Execute( - VOID - ); - - void - Complete( - _In_ DWORD Status, - _In_ DWORD Information - ); -}; - -class CWaitOnInterruptCommand : public CCommand -{ -private: - -public: - CWaitOnInterruptCommand( - _In_ __drv_aliasesMem list<string> *Parameters, - _In_opt_ string Tag - ) : CCommand("waitoninterrupt", Parameters) - { - return; - } - - bool - Execute( - VOID - ); - - void - Complete( - _In_ DWORD Status, - _In_ DWORD Information - ); -}; |
