#include <strsafe.h>
#include <userenv.h>
+#define stringify_literal(_text) #_text
+#define stringify(_text) stringify_literal(_text)
+#define __MODULE__ stringify(PROJECT)
+
typedef struct _TTY_STREAM {
HANDLE Read;
HANDLE Write;
TTY_CONTEXT TtyContext;
+static VOID
+#pragma prefast(suppress:6262) // Function uses '1036' bytes of stack: exceeds /analyze:stacksize'1024'
+__Log(
+ IN const CHAR *Format,
+ IN ...
+ )
+{
+ CHAR Buffer[MAXIMUM_BUFFER_SIZE];
+ va_list Arguments;
+ size_t Length;
+ HRESULT Result;
+
+ va_start(Arguments, Format);
+ Result = StringCchVPrintfA(Buffer,
+ MAXIMUM_BUFFER_SIZE,
+ Format,
+ Arguments);
+ va_end(Arguments);
+
+ if (Result != S_OK && Result != STRSAFE_E_INSUFFICIENT_BUFFER)
+ return;
+
+ Result = StringCchLengthA(Buffer, MAXIMUM_BUFFER_SIZE, &Length);
+ if (Result != S_OK)
+ return;
+
+ Length = __min(MAXIMUM_BUFFER_SIZE - 1, Length + 2);
+
+ __analysis_assume(Length < MAXIMUM_BUFFER_SIZE);
+ __analysis_assume(Length >= 2);
+ Buffer[Length] = '\0';
+ Buffer[Length - 1] = '\n';
+ Buffer[Length - 2] = '\r';
+
+ OutputDebugString(Buffer);
+}
+
+#define Log(_Format, ...) \
+ __Log(__MODULE__ "|" __FUNCTION__ ": " _Format, __VA_ARGS__)
+
static BOOL
CreateChild(
VOID
UNREFERENCED_PARAMETER(Argument);
+ Log("====>");
+
for (;;) {
DWORD Read;
CHAR Buffer[MAXIMUM_BUFFER_SIZE];
}
}
+ Log("<====");
+
return 0;
}
UNREFERENCED_PARAMETER(Argument);
+ Log("====>");
+
for (;;) {
DWORD Read;
DWORD Written;
break;
}
+ Log("<====");
+
return 0;
}
UNREFERENCED_PARAMETER(argc);
UNREFERENCED_PARAMETER(argv);
+ Log("====>");
+
if (!WaitNamedPipe(PIPE_NAME, NMPWAIT_USE_DEFAULT_WAIT))
ExitProcess(1);
CloseHandle(Handle[Index]);
CloseHandle(Context->ProcessInfo.hProcess);
+
+ Log("<====");
}
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>PROJECT=$(ProjectName);WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<WarningLevel>EnableAllWarnings</WarningLevel>
<DisableSpecificWarnings>4127;4711;4548;4820;4668;4255;5032;5045;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<MultiProcessorCompilation>true</MultiProcessorCompilation>