Created
November 6, 2017 02:12
-
-
Save herrcore/1a39ed8701dac039c1568d62243a1924 to your computer and use it in GitHub Desktop.
Test code for the Open Analysis Live! sandbox tutorial.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // SandBoxTest.cpp : Defines the entry point for the console application. | |
| // | |
| #include "stdafx.h" | |
| #include <windows.h> | |
| #include <tchar.h> | |
| #include <stdio.h> | |
| #include <strsafe.h> | |
| #include <string> | |
| using namespace std; | |
| #define BUFFERSIZE 5 | |
| DWORD g_BytesTransferred = 0; | |
| void DisplayError(LPTSTR lpszFunction); | |
| VOID CALLBACK FileIOCompletionRoutine( | |
| __in DWORD dwErrorCode, | |
| __in DWORD dwNumberOfBytesTransfered, | |
| __in LPOVERLAPPED lpOverlapped | |
| ); | |
| VOID CALLBACK FileIOCompletionRoutine( | |
| __in DWORD dwErrorCode, | |
| __in DWORD dwNumberOfBytesTransfered, | |
| __in LPOVERLAPPED lpOverlapped) | |
| { | |
| _tprintf(TEXT("Error code:\t%x\n"), dwErrorCode); | |
| _tprintf(TEXT("Number of bytes:\t%x\n"), dwNumberOfBytesTransfered); | |
| g_BytesTransferred = dwNumberOfBytesTransfered; | |
| } | |
| // | |
| // Note: this simplified sample assumes the file to read is an ANSI text file | |
| // only for the purposes of output to the screen. CreateFile and ReadFile | |
| // do not use parameters to differentiate between text and binary file types. | |
| // | |
| void __cdecl _tmain(int argc, TCHAR *argv[]) | |
| { | |
| HANDLE hFile; | |
| OVERLAPPED ol = { 0 }; | |
| //Get the %TEMP% pathf from environment | |
| char* temp = getenv("TEMP"); | |
| std::wstring wtemp(&temp[0], &temp[strlen(temp)]); | |
| //Build file path %TEMP\test.txt | |
| std::wstring fpath = wtemp + L"\\test.txt"; | |
| hFile = CreateFile(fpath.c_str(), // file to open | |
| GENERIC_WRITE, // open for writing | |
| FILE_SHARE_WRITE, // share for writing | |
| NULL, // default security | |
| CREATE_NEW, // crate if it doesn't exist already | |
| FILE_ATTRIBUTE_NORMAL , // normal file | |
| NULL); // no attr. template | |
| if (hFile == INVALID_HANDLE_VALUE) | |
| { | |
| DisplayError(TEXT("CreateFile")); | |
| _tprintf(TEXT("Unable to create file: \"%ls\".\n"), fpath.c_str()); | |
| return; | |
| } | |
| _tprintf(TEXT("Successfully created file: \"%ls\".\n"), fpath.c_str()); | |
| SleepEx(5000, TRUE); | |
| CloseHandle(hFile); | |
| } | |
| void DisplayError(LPTSTR lpszFunction) | |
| // Routine Description: | |
| // Retrieve and output the system error message for the last-error code | |
| { | |
| LPVOID lpMsgBuf; | |
| LPVOID lpDisplayBuf; | |
| DWORD dw = GetLastError(); | |
| FormatMessage( | |
| FORMAT_MESSAGE_ALLOCATE_BUFFER | | |
| FORMAT_MESSAGE_FROM_SYSTEM | | |
| FORMAT_MESSAGE_IGNORE_INSERTS, | |
| NULL, | |
| dw, | |
| MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), | |
| (LPTSTR)&lpMsgBuf, | |
| 0, | |
| NULL); | |
| lpDisplayBuf = | |
| (LPVOID)LocalAlloc(LMEM_ZEROINIT, | |
| (lstrlen((LPCTSTR)lpMsgBuf) | |
| + lstrlen((LPCTSTR)lpszFunction) | |
| + 40) // account for format string | |
| * sizeof(TCHAR)); | |
| if (FAILED(StringCchPrintf((LPTSTR)lpDisplayBuf, | |
| LocalSize(lpDisplayBuf) / sizeof(TCHAR), | |
| TEXT("%s failed with error code %d as follows:\n%s"), | |
| lpszFunction, | |
| dw, | |
| lpMsgBuf))) | |
| { | |
| printf("FATAL ERROR: Unable to output error code.\n"); | |
| } | |
| _tprintf(TEXT("ERROR: %s\n"), (LPCTSTR)lpDisplayBuf); | |
| LocalFree(lpMsgBuf); | |
| LocalFree(lpDisplayBuf); | |
| } | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment