win64: mysterx and mzcom

This commit is contained in:
Matthew Flatt 2010-12-05 07:46:46 -07:00
parent 1f736f4ad8
commit 8b49d11706
44 changed files with 1254 additions and 3198 deletions

View File

@ -21,7 +21,9 @@ static
LPWSTR schemeUCS4ToUTF16 (const mzchar * buffer, int nchars, long * result_length)
{
LPWSTR s;
s = (LPWSTR) scheme_ucs4_to_utf16 (buffer, 0, nchars, NULL, 0, result_length, 1);
intptr_t rl;
s = (LPWSTR) scheme_ucs4_to_utf16 (buffer, 0, nchars, NULL, 0, &rl, 1);
if(result_length) *result_length = rl;
s[*result_length] = 0;
return s;
}
@ -29,7 +31,7 @@ LPWSTR schemeUCS4ToUTF16 (const mzchar * buffer, int nchars, long * result_lengt
static
LPWSTR schemeUTF8ToUTF16 (const unsigned char * buffer, int buflen, long * result_length)
{
long nchars;
intptr_t nchars;
mzchar * ucs4;
ucs4 = scheme_utf8_decode_to_buffer_len (buffer, buflen, NULL, 0, &nchars);
return schemeUCS4ToUTF16 (ucs4, nchars, result_length);
@ -132,7 +134,7 @@ Scheme_Object * multiByteToSchemeCharString (const char * mbstr)
int len;
WCHAR * wide;
HRESULT hr;
long nchars;
intptr_t nchars;
mzchar * ucs4;
len = (int) strlen (mbstr);
@ -163,7 +165,7 @@ BSTR multiByteToBSTR (LPCSTR text, UINT len)
return bstr;
}
BSTR textToBSTR (LPCTSTR text, UINT length)
BSTR textToBSTR (LPCTSTR text, size_t length)
{
#ifdef UNICODE
return SysAllocStringLen (text, length);
@ -175,7 +177,7 @@ BSTR textToBSTR (LPCTSTR text, UINT length)
Scheme_Object * BSTRToSchemeString (BSTR bstr)
{
UINT length;
long nchars;
intptr_t nchars;
mzchar * string;
length = SysStringLen (bstr);
@ -189,7 +191,7 @@ Scheme_Object * BSTRToSchemeString (BSTR bstr)
Scheme_Object * LPOLESTRToSchemeString (LPOLESTR str)
{
UINT length;
long nchars;
intptr_t nchars;
mzchar * string;
length = wcslen (str);
@ -203,7 +205,7 @@ Scheme_Object * LPOLESTRToSchemeString (LPOLESTR str)
Scheme_Object * BSTRToSchemeSymbol (BSTR bstr)
{
UINT length;
long nchars;
intptr_t nchars;
mzchar * string;
length = SysStringLen (bstr);
@ -229,9 +231,9 @@ static
void updateSchemeByteStringFromBSTR (Scheme_Object * obj, BSTR bstr)
{
UINT len;
long nchars;
intptr_t nchars;
mzchar * string;
long ncodes;
intptr_t ncodes;
len = SysStringLen (bstr);
string = scheme_utf16_to_ucs4 ((pushort)bstr, 0, len,
@ -250,7 +252,7 @@ static
void updateSchemeCharStringFromBSTR (Scheme_Object * obj, BSTR bstr)
{
UINT len;
long ulen;
intptr_t ulen;
len = SysStringLen (bstr);
@ -286,7 +288,7 @@ void updateSchemeFromBSTR (Scheme_Object *obj, BSTR bstr)
}
BSTR stringToBSTR (LPCSTR s, UINT len)
BSTR stringToBSTR (LPCSTR s, size_t len)
{
BSTR bstr;

View File

@ -434,13 +434,15 @@ Scheme_Object * mx_scode_to_scheme_number (int argc, Scheme_Object **argv)
Scheme_Object * scheme_number_to_mx_scode(int argc, Scheme_Object **argv)
{
intptr_t lv;
SCODE scode;
GUARANTEE_TYPE ("number->com-scode", 0, SCHEME_REALP, "number");
if (scheme_get_int_val (argv[0], &scode) == 0)
if (scheme_get_int_val (argv[0], &lv) == 0)
scheme_signal_error("number->com-scode: "
"number %V too big to fit in com-scode", argv[0]);
scode = lv;
return mx_make_scode (scode);
}

View File

@ -1,25 +0,0 @@
#include "StdAfx.h"
#include "baseinfo.h"
BaseInfo::BaseInfo(UINT_PTR id)
: m_id(id)
, m_isValid(TRUE)
{
wcscpy (m_name, L"UNKNOWN");
}
BaseInfo::~BaseInfo(void)
{
}
BOOL BaseInfo::Compare (UINT_PTR key)
{
return (BOOL)(m_id == key);
}
void BaseInfo::Dump()
{
wprintf (L"\n");
wprintf (L"ID: 0x%08x\n", m_id);
wprintf (L"\n");
}

View File

@ -1,15 +0,0 @@
#pragma once
class BaseInfo
{
public:
BaseInfo(UINT_PTR id);
virtual ~BaseInfo(void);
virtual void Dump(void);
BOOL Compare(UINT_PTR key);
UINT_PTR m_id;
BOOL m_isValid;
WCHAR m_name[MAX_LENGTH];
};

View File

@ -1,733 +0,0 @@
#include "stdafx.h"
#include <stdio.h>
#include "corhdr.h"
#include "cor.h"
#include "corhlpr.h"
#include "corprof.h"
#include "cordebug.h"
#include "BaseInfo.h"
#include "SimpleException.h"
#include "SList.h"
#include "Synchronize.h"
#include "ThreadInfo.h"
#include "utils.h"
SList<ThreadInfo *, ThreadID> * thread_table;
ICorProfilerInfo * profiler_info;
CRITICAL_SECTION critical_section;
void InitializePatch (IUnknown * pICorProfilerInfoUnk)
{
HRESULT hr = pICorProfilerInfoUnk->QueryInterface (IID_ICorProfilerInfo, (void **)(&profiler_info));
if (SUCCEEDED (hr)) {
InitializeCriticalSection (&critical_section);
thread_table = new SList<ThreadInfo *, ThreadID>();
profiler_info->SetEventMask (COR_PRF_ENABLE_INPROC_DEBUGGING
| COR_PRF_MONITOR_THREADS
| COR_PRF_MONITOR_CODE_TRANSITIONS
// | COR_PRF_MONITOR_EXCEPTIONS
// | COR_PRF_MONITOR_CLR_EXCEPTIONS
| COR_PRF_MONITOR_JIT_COMPILATION
| COR_PRF_ENABLE_JIT_MAPS);
#if 0
hr = profiler_info->SetEnterLeaveFunctionHooks ((FunctionEnter*)&EnterNaked,
(FunctionLeave*)&LeaveNaked,
(FunctionTailcall*)&TailcallNaked);
#endif
show_traceln ("Initializing DotNet synchronization patch.");
show_traceln ("Built at " __TIME__ " on " __DATE__);
}
else
show_traceln ("DotNet synchronization patch failed to initialize.");
}
void ShutdownPatch (void)
{
profiler_info->Release();
if (thread_table != NULL) delete thread_table;
DeleteCriticalSection (&critical_section);
}
static void _GetThreadInfoHelper (ThreadInfo **ppThreadInfo)
{
HRESULT hr;
if (profiler_info != NULL) {
//
// Assume that the thread starts running managed code
// otherwise we would not get notified for its creation
//
(*ppThreadInfo)->m_status = MANAGED;
//
// Get the win32 threadID for the specific Runtime thread
//
hr = profiler_info->GetThreadInfo ((*ppThreadInfo)->m_id,
&((*ppThreadInfo)->m_win32ThreadID));
if (SUCCEEDED(hr)) {
//
// Get the thread handle
//
hr = profiler_info->GetHandleFromThread ((*ppThreadInfo)->m_id,
&((*ppThreadInfo)->m_hThread));
if (FAILED(hr))
_THROW_EXCEPTION( "ICorProfilerInfo::GetHandleFromThread() FAILED" );
}
else
_THROW_EXCEPTION( "ICorProfilerInfo::GetThreadInfo() FAILED" );
}
else
_THROW_EXCEPTION( "ICorProfilerInfo Interface has NOT been Initialized" );
}
void AddThread (ThreadID threadID)
{
Synchronize guard (critical_section);
HRESULT hr;
ThreadID myThreadID;
hr = profiler_info->GetCurrentThreadID (&myThreadID);
if (SUCCEEDED (hr)) {
if (threadID == myThreadID) {
ThreadInfo * pThreadInfo;
pThreadInfo = new ThreadInfo (threadID);
if (pThreadInfo != NULL) {
try {
_GetThreadInfoHelper (&pThreadInfo);
thread_table->AddEntry (pThreadInfo, threadID);
pThreadInfo->Dump();
}
catch (SimpleException *){
delete pThreadInfo;
throw;
}
}
else
_THROW_EXCEPTION( "Allocation for ThreadInfo Object FAILED" );
}
else
_THROW_EXCEPTION( "Thread ID's do not match FAILED" );
}
else
_THROW_EXCEPTION( "ICorProfilerInfo::GetCurrentThreadID() FAILED" );
}
static void RemoveThread1 (ThreadID threadID)
{
Synchronize guard (critical_section);
if (threadID != NULL) {
ThreadInfo *pThreadInfo;
pThreadInfo = thread_table->Lookup (threadID);
if (pThreadInfo != NULL) {
_ASSERT_ (pThreadInfo->m_isValid == TRUE);
pThreadInfo->m_isValid = FALSE;
pThreadInfo->m_id = 0xbadf00d;
}
else
_THROW_EXCEPTION( "Thread was not found in the Thread Table" );
}
else
_THROW_EXCEPTION( "ThreadID is NULL" );
}
void RemoveThread (ThreadID threadID)
{
try {
RemoveThread1 (threadID);
show_traceln (".NET thread 0x%x Destroyed", threadID);
}
catch (SimpleException * exception) {
exception->ReportFailure();
delete exception;
Failure();
}
}
static ThreadInfo * win32ThreadID_to_ThreadInfo (DWORD win32ThreadId)
{
if (thread_table->IsEmpty()) {
show_traceln ("win32ThreadId_to_ThreadInfo: table is empty");
return NULL;
}
thread_table->Reset();
do {
ThreadInfo * this_info = thread_table->Entry();
if (this_info == NULL) {
show_traceln ("win32ThreadId_to_ThreadInfo: thread not found");
return NULL;
}
else if (this_info->m_win32ThreadID == win32ThreadId) {
_ASSERT_ (this_info->m_isValid == TRUE);
return this_info;
}
else
thread_table->Next();
} while (true);
}
static ThreadInfo * current_thread_info()
{
ThreadInfo * cti = win32ThreadID_to_ThreadInfo (GetCurrentThreadId());
if (cti == NULL)
show_traceln ("Current thread info not found.");
return cti;
}
// YOU MUST
// Synchronize guard (critical_section);
// BEFORE CALLING THIS
static ThreadInfo * profiler_info_current_thread_id()
{
ThreadID threadID;
if (FAILED (profiler_info->GetCurrentThreadID (&threadID)))
_THROW_EXCEPTION ( "ICorProfilerInfo::GetCurrentThreadID() FAILED");
ThreadInfo *pThreadInfo = thread_table->Lookup (threadID);
if (pThreadInfo == NULL)
_THROW_EXCEPTION ("Thread Structure was not found in the thread list");
_ASSERT_(pThreadInfo->m_isValid == TRUE);
return pThreadInfo;
}
void UpdateOSThreadID (ThreadID managedThreadID, DWORD win32ThreadID)
{
try {
Synchronize guard (critical_section);
profiler_info_current_thread_id()->m_win32ThreadID = win32ThreadID;
show_traceln ("Managed thread 0x%x assigned to OSThread 0x%x");
}
catch (SimpleException * exception) {
exception->ReportFailure();
delete exception;
Failure();
}
}
static void UpdateTransitionState (TransitionState state)
{
try {
Synchronize guard (critical_section);
profiler_info_current_thread_id()->m_status = state;
}
catch (SimpleException * exception) {
exception->ReportFailure();
delete exception;
Failure();
}
}
void NoteThreadManaged (void)
{
UpdateTransitionState (MANAGED);
}
void NoteThreadUnmanaged (void)
{
UpdateTransitionState (UNMANAGED);
}
static BOOL scan_frame1 (ICorDebugProcess * pProcess,
ULONG32 pnOffset, CorDebugMappingResult mappingResult,
CORDB_ADDRESS code_start, ULONG32 code_size)
{
bool result = false;
if (mappingResult == MAPPING_PROLOG)
result = false;
else if (mappingResult == MAPPING_EPILOG) {
show_trace (" MAPPING_EPILOG");
result = true;
}
else if (mappingResult == MAPPING_NO_INFO) {
show_trace (" MAPPING_NO_INFO");
result = false;
}
else if (mappingResult == MAPPING_UNMAPPED_ADDRESS) {
show_trace (" MAPPING_UNMAPPED_ADDRESS");
result = false;
}
else {
BYTE buffer[1024];
DWORD realbufsiz;
DWORD bufptr = 0;
code_start += code_size;
// align to 4-byte boundary
while ((code_start & 0x3) != 0) code_start += 1;
if (FAILED (pProcess->ReadMemory (code_start, 1024, buffer, &realbufsiz)))
_THROW_EXCEPTION ("Couldn't get code.");
if (buffer[0] == 0x01) {
// show_traceln ("EH info follows.");
unsigned char dsize = buffer[1];
DWORD nclauses = (dsize - 4)/12;
// show_traceln ("%d %d clauses", dsize, nclauses);
unsigned int i;
for (i = 0; i < nclauses; i++) {
DWORD flags = (buffer[(i * 12) + 4 + 1] * 256) + buffer[(i * 12) + 4 + 0];
DWORD try_offset = (buffer[(i * 12) + 4 + 3] * 256) + buffer[(i * 12) + 4 + 2];
DWORD try_length = buffer[(i * 12) + 4 + 4];
DWORD handler_offset = (buffer[(i * 12) + 4 + 6] * 256) + buffer[(i * 12) + 4 + 5];
DWORD handler_length = buffer[(i * 12) + 4 + 7];
DWORD class_token = (buffer[(i * 12) + 4 + 9] * 256) + buffer[(i * 12) + 4 + 8];
DWORD filter_offset = (buffer[(i * 12) + 4 + 11] * 256) + buffer[(i * 12) + 4 + 10];
// show_traceln ("\tflags (%x)", flags);
// show_traceln ("\ttry_offset (%x)", try_offset);
// show_traceln ("\ttry_length (%x)", try_length);
// show_traceln ("\thandler_offset (%x)", handler_offset);
// show_traceln ("\thandler_length (%x)", handler_length);
// show_traceln ("\tclass_token (%x)", class_token);
// show_traceln ("\tfilter_offset (%x)", filter_offset);
if (flags == COR_ILEXCEPTION_CLAUSE_FINALLY
&& pnOffset >= handler_offset
&& pnOffset < (handler_offset + handler_length)) {
show_traceln ("Deferring abort during cleanup.");
result = false;
}
}
}
else if (buffer [0] == 0x41) {
show_traceln ("FAT EH info follows.");
unsigned char dsize = (((buffer[3] * 256) + buffer[2]) * 256) + buffer[1];
DWORD nclauses = (dsize - 4)/24;
show_trace ("%d %d clauses", dsize, nclauses);
}
else {
// show_traceln ("No EH info.");
result = true;
}
}
return result;
}
static BOOL GetMethodNameFromTokenAndMetaData (mdToken dwToken, IMetaDataImport * pIMetaDataImport,
LPWSTR wszClass, LPWSTR wszMethod)
{
wchar_t _wszMethod[512];
DWORD cchMethod = sizeof (_wszMethod)/sizeof (_wszMethod[0]);
mdTypeDef mdClass;
COR_SIGNATURE const * method_signature;
ULONG sig_size;
DWORD dwAttr;
HRESULT hr = pIMetaDataImport->GetMethodProps (dwToken, &mdClass, _wszMethod,
cchMethod, &cchMethod,
&dwAttr,
&method_signature, &sig_size,
0, 0);
if (FAILED (hr)) {
show_traceln ("GetMethodProps failed.");
return false;
}
lstrcpyW (wszMethod, _wszMethod);
wchar_t wszTypeDef[512];
DWORD cchTypeDef = sizeof(wszTypeDef)/sizeof(wszTypeDef[0]);
if (mdClass == 0x02000000)
mdClass = 0x02000001;
hr = pIMetaDataImport->GetTypeDefProps (mdClass, wszTypeDef, cchTypeDef,
&cchTypeDef, 0, 0);
if (FAILED(hr)) return false;
lstrcpyW (wszClass, wszTypeDef);
return true;
}
static BOOL GetMethodNameFromFunctionId (FunctionID functionId, LPWSTR wszClass, LPWSTR wszMethod)
{
mdToken dwToken;
IMetaDataImport * pMetaDataImport = 0;
if (FAILED (profiler_info->GetTokenAndMetaDataFromFunction (functionId,
IID_IMetaDataImport,
(LPUNKNOWN *)&pMetaDataImport,
&dwToken)))
return false;
BOOL result = GetMethodNameFromTokenAndMetaData (dwToken, pMetaDataImport,
wszClass, wszMethod);
pMetaDataImport->Release();
//
// If we were ambitious, we'd save every FunctionID away in a map to avoid
// needing to hit the metatdata APIs every time.
//
return result;
}
static BOOL GetMethodNameFromFunction (ICorDebugFunction * pFunction, LPWSTR wszClass, LPWSTR wszMethod)
{
ICorDebugModule * pModule = NULL;
if (FAILED (pFunction->GetModule (&pModule)))
_THROW_EXCEPTION ("GetModule failed.");
IMetaDataImport * pMetaDataImport = NULL;
if (FAILED (pModule->GetMetaDataInterface (IID_IMetaDataImport, (IUnknown **)&pMetaDataImport)))
_THROW_EXCEPTION ("GetMetaDataInterface failed.");
mdMethodDef funToken;
if (FAILED (pFunction->GetToken (&funToken)))
_THROW_EXCEPTION ("GetToken of function failed.");
BOOL result = GetMethodNameFromTokenAndMetaData (funToken, pMetaDataImport,
wszClass, wszMethod);
if (pMetaDataImport != NULL) pMetaDataImport->Release();
if (pModule != NULL) pModule->Release();
return result;
}
static void display_method_name (ICorDebugFunction * pFunction)
{
wchar_t wszClass[512];
wchar_t wszMethod[512];
if (!GetMethodNameFromFunction (pFunction, wszClass, wszMethod))
_THROW_EXCEPTION ("GetMethodNameFromFunction failed.");
fwprintf (stderr, wszClass);
show_trace ("::");
fwprintf (stderr, wszMethod);
fflush (stderr);
}
// Return TRUE if we can safely call abort.
static BOOL scan_frame (ICorDebugProcess * pProcess, ICorDebugFrame * pFrame)
{
ICorDebugFunction * pFunction = NULL;
if (FAILED (pFrame->GetFunction (&pFunction)))
_THROW_EXCEPTION ("GetFunction failed.");
BOOL result = false;
ULONG32 pnOffset;
CorDebugMappingResult mappingResult;
ICorDebugILFrame * pILFrame = NULL;
if (FAILED (pFrame->QueryInterface (IID_ICorDebugILFrame, (void **)&pILFrame)))
_THROW_EXCEPTION ("QueryInterface for IID_ICorDebugILFrame failed.");
if (FAILED (pILFrame->GetIP (&pnOffset, &mappingResult)))
_THROW_EXCEPTION ("GetIP failed.");
if (pILFrame != NULL) pILFrame->Release();
// display_method_name (pFunction);
// show_trace (" (%x)", pnOffset);
ICorDebugCode * pCode = NULL;
if (FAILED (pFunction->GetILCode (&pCode)))
_THROW_EXCEPTION ("GetCode failed.");
if (pCode == NULL) {
show_traceln ("No code??");
result = false;
}
else {
CORDB_ADDRESS code_start;
ULONG32 code_size;
if (FAILED (pCode->GetAddress (&code_start)))
_THROW_EXCEPTION ("GetAddress failed.");
if (FAILED (pCode->GetSize (&code_size)))
_THROW_EXCEPTION ("GetSize failed.");
pCode->Release();
result = scan_frame1 (pProcess, pnOffset, mappingResult, code_start, code_size);
}
if (pFunction != NULL) pFunction->Release();
return result;
}
// Return TRUE if we can safely call abort.
static BOOL scan_frames (ICorDebugProcess * pProcess, ICorDebugFrame * pFrame)
{
// Bottom of stack, always safe.
if (pFrame == NULL)
return TRUE;
// If this frame says no, then no.
else if (!scan_frame (pProcess, pFrame))
return FALSE;
// Otherwise, check the next frame.
else {
ICorDebugFrame * pCaller;
if (FAILED (pFrame->GetCaller (&pCaller)))
_THROW_EXCEPTION ("GetCaller failed.");
BOOL result = scan_frames (pProcess, pCaller);
pCaller->Release();
return result;
}
}
static void display_thread_state (ICorDebugThread * pICorDebugThread)
{
// Check out the state of the thread.
CorDebugThreadState debug_state;
CorDebugUserState user_state;
if (FAILED (pICorDebugThread->GetDebugState (&debug_state)))
_THROW_EXCEPTION ("GetDebugState failed.");
if (FAILED (pICorDebugThread->GetUserState (&user_state)))
_THROW_EXCEPTION ("GetUserState failed.");
show_traceln ("DS %x, US %x", debug_state, user_state);
}
// This causes the debugging interface to parse the stack of
// the thread in question.
static void ensure_stack_parsed (ICorDebugThread * pICorDebugThread)
{
ICorDebugChainEnum * pChains = NULL;
if (FAILED (pICorDebugThread->EnumerateChains (&pChains)))
_THROW_EXCEPTION ("EnumerateChains failed.");
if (pChains != NULL) pChains->Release();
}
static BOOL BeforeAbort1 (HANDLE thread_handle, int threadID)
{
// Get a hold of the debugger to start examining thread.
BOOL result = false;
ThreadInfo * target_thread_info = win32ThreadID_to_ThreadInfo (threadID);
if (target_thread_info == NULL) {
show_traceln ("Could not find target thread info.");
return true;
}
else if (target_thread_info->m_status != MANAGED) {
show_traceln ("Abort deferred (thread not in MANAGED state).");
return false;
}
else if (target_thread_info->abort_deferred == TRUE) {
show_traceln ("Abort deferred.");
return false;
}
else if (target_thread_info->throw_depth != 0) {
show_traceln ("Abort deferred, target thread throwing.");
return false;
}
IUnknown * pIUnknown = NULL;
if (FAILED (profiler_info->GetInprocInspectionInterface (&pIUnknown)))
_THROW_EXCEPTION ("GetInprocInspectionInterface failed.");
ICorDebug * pICorDebug = NULL;
if (FAILED (pIUnknown->QueryInterface (IID_ICorDebug, (void **)&pICorDebug)))
_THROW_EXCEPTION ("QueryInterface IID_ICorDebug failed.");
if (pIUnknown != NULL) pIUnknown->Release();
ICorDebugProcess * pICorDebugProcess = NULL;
if (FAILED (pICorDebug->GetProcess (GetCurrentProcessId(), &pICorDebugProcess)))
_THROW_EXCEPTION ("GetProcess failed.");
ICorDebugThread * pICorDebugThread = NULL;
if (FAILED (pICorDebugProcess->GetThread (threadID, &pICorDebugThread)))
_THROW_EXCEPTION ("GetThread failed.");
// display_thread_state (pICorDebugThread);
ensure_stack_parsed (pICorDebugThread);
ICorDebugFrame * pFrame = NULL;
if (FAILED (pICorDebugThread->GetActiveFrame (&pFrame)))
_THROW_EXCEPTION ("GetActiveFrame failed.");
result = scan_frames (pICorDebugProcess, pFrame);
if (pFrame != NULL) pFrame->Release();
if (pICorDebugThread != NULL) pICorDebugThread->Release();
if (pICorDebugProcess != NULL) pICorDebugProcess->Release();
if (pICorDebug != NULL) pICorDebug->Release();
if (pFrame != NULL && result == TRUE)
SuspendThread (thread_handle);
return result;
}
// Return TRUE if we can safely call abort.
BOOL __stdcall BeforeAbort (int threadID)
{
// Must grab this first in case target thread wants to use it.
Synchronize guard (critical_section);
HANDLE thread_handle = OpenThread (THREAD_SUSPEND_RESUME, false, threadID);
if (thread_handle == NULL)
return false;
DWORD dwProfContext;
// BeginInprocDebugging interface first to halt all the threads.
if (FAILED (profiler_info->BeginInprocDebugging (false, &dwProfContext)))
_THROW_EXCEPTION ("BeginInprocDebugging failed.");
BOOL result = BeforeAbort1 (thread_handle, threadID);
if (FAILED (profiler_info->EndInprocDebugging (dwProfContext)))
_THROW_EXCEPTION ("EndInprocDebugging failed.");
if (thread_handle != NULL) CloseHandle (thread_handle);
return result;
}
void __stdcall AfterAbort (int threadID)
{
HANDLE thread_handle = OpenThread (THREAD_SUSPEND_RESUME, false, threadID);
if (thread_handle == NULL)
show_traceln ("Could not open windows thread %d.", threadID);
else {
ResumeThread (thread_handle);
CloseHandle (thread_handle);
}
return;
}
void PatchJIT (FunctionID functionID)
{
wchar_t wszClass[512];
wchar_t wszMethod[512];
if (GetMethodNameFromFunctionId (functionID, wszClass, wszMethod)) {
if (wcscmp (wszClass, L"System.Threading.Thread") == 0
&& wcscmp (wszMethod, L"Abort") == 0) {
ClassID classId = 0;
ModuleID moduleId = 0;
mdToken tkMethod = 0;
IMetaDataEmit* pMetaDataEmit = NULL;
IMethodMalloc* pMalloc = NULL;
PVOID pMethod;
if (FAILED (profiler_info->GetFunctionInfo (functionID, &classId, &moduleId, &tkMethod)))
_THROW_EXCEPTION ("GetFunctionInfo failed.");
if (FAILED (profiler_info->GetModuleMetaData (moduleId, ofRead | ofWrite, IID_IMetaDataEmit,
(IUnknown **)&pMetaDataEmit)))
_THROW_EXCEPTION ("GetModuleMetaData failed.");
// Get token of System.Threading.Thread
mdTypeRef tkThread = get_type_token (pMetaDataEmit,
L"mscorlib", 1, 1, 5000, 0,
0xB7, 0x7A, 0x5C, 0x56, 0x19, 0x34, 0xE0, 0x89,
L"System.Threading.Thread");
// Get token of SchemeBridge.TestClass
mdTypeRef tkTestClass = get_type_token (pMetaDataEmit,
L"bridge", 1, 0, 0, 0,
0x64, 0x52, 0x72, 0x4b, 0xac, 0x30, 0xf0, 0xec,
L"SchemeBridge.TestClass");
// This is the chunk of .NET opcodes that we're replacing
// the existing Thread.Abort method with.
#pragma pack(push, 1)
struct {
unsigned char Flags_CodeSize;
unsigned char bs0; unsigned char target0;
unsigned char ldc1;
unsigned char call0; int sig0;
unsigned char ldarg0_0;
unsigned char call2; int sig2;
unsigned char ldci4_1; int val_1;
unsigned char calli; int sig;
unsigned char brf; unsigned char target1;
unsigned char ldarg0_1;
unsigned char ldfld; int field0;
unsigned char call1; int target2;
unsigned char ldarg0_2;
unsigned char call3; int sig3;
unsigned char ldci4_2; int val_2;
unsigned char calli_1; int sig_1;
unsigned char ret; unsigned char pad1, pad2, pad3;
} ilcode = {
0xDA,
0x2B, 0x06,
0x16,
0x28, signature_one_arg (pMetaDataEmit,
tkThread,
L"Sleep",
IMAGE_CEE_CS_CALLCONV_DEFAULT,
ELEMENT_TYPE_VOID,
ELEMENT_TYPE_I4),
0x02,
0x28, signature_one_arg (pMetaDataEmit,
tkTestClass,
L"GetThreadId",
IMAGE_CEE_CS_CALLCONV_DEFAULT,
ELEMENT_TYPE_I4,
ELEMENT_TYPE_OBJECT),
0x20, (int)(size_t)BeforeAbort,
0x29, signature_unmanaged_one_arg (pMetaDataEmit,
IMAGE_CEE_UNMANAGED_CALLCONV_STDCALL,
ELEMENT_TYPE_BOOLEAN,
ELEMENT_TYPE_U4),
0x2C, 0xE8,
0x02,
0x00, (int)0x0000,
0x28, signature_no_args (pMetaDataEmit,
tkThread,
L"AbortInternal",
IMAGE_CEE_CS_CALLCONV_HASTHIS,
ELEMENT_TYPE_VOID),
0x02,
0x28, signature_one_arg (pMetaDataEmit,
tkTestClass,
L"GetThreadId",
IMAGE_CEE_CS_CALLCONV_DEFAULT,
ELEMENT_TYPE_I4,
ELEMENT_TYPE_OBJECT),
0x20, (int)(size_t)AfterAbort,
0x29, signature_unmanaged_one_arg (pMetaDataEmit,
IMAGE_CEE_UNMANAGED_CALLCONV_STDCALL,
ELEMENT_TYPE_VOID,
ELEMENT_TYPE_U4),
0x2A, 0x00, 0x00, 0x00
};
#pragma pack(pop)
profiler_info->GetILFunctionBodyAllocator (moduleId, &pMalloc);
pMethod = pMalloc->Alloc (sizeof (ilcode));
memcpy (pMethod, &ilcode, sizeof (ilcode));
profiler_info->SetILFunctionBody (moduleId, tkMethod, (LPCBYTE)pMethod);
pMalloc->Release();
pMetaDataEmit->Release();
show_traceln ("Replaced the code for abort.");
}
// show_traceln ("Compiling %ls::%ls", wszClass, wszMethod);
}
}

View File

@ -1,14 +0,0 @@
// Some random globals.
void InitializePatch (IUnknown * pICorProfilerInfoUnk);
void ShutdownPatch(void);
void AddThread (ThreadID threadID);
void RemoveThread (ThreadID threadID);
void UpdateOSThreadID (ThreadID managedThreadID, DWORD win32ThreadID);
void PatchJIT (FunctionID functionID);
void NoteThreadManaged(void);
void NoteThreadUnmanaged(void);

View File

@ -1,470 +0,0 @@
// Profiler.cpp : Implementation of CProfiler
#include "stdafx.h"
#include <stdio.h>
#include "corhdr.h"
#include "cor.h"
#include "corhlpr.h"
#include "corprof.h"
#include "Patch.h"
#include "Profiler.h"
#include "utils.h"
// the header file declares the types wrong
void __stdcall enter_function (FunctionID)
{
return;
}
void __stdcall leave_function (FunctionID)
{
return;
}
void __stdcall tailcall_function (FunctionID)
{
return;
}
void __declspec (naked) EnterNaked()
{
__asm {
push eax
push ecx
push edx
push [esp+16]
call enter_function
pop edx
pop ecx
pop eax
ret 4
}
}
void __declspec (naked) LeaveNaked()
{
__asm {
push eax
push ecx
push edx
push [esp+16]
call leave_function
pop edx
pop ecx
pop eax
ret 4
}
}
void __declspec (naked) TailcallNaked()
{
__asm {
push eax
push ecx
push edx
push [esp+16]
call tailcall_function
pop edx
pop ecx
pop eax
ret 4
}
}
// CProfiler
STDMETHODIMP CProfiler::Initialize (IUnknown* pICorProfilerInfoUnk)
{
// cannot use inproc debugging in this method
// We're going to hang around for a while.
this->AddRef();
InitializePatch(pICorProfilerInfoUnk);
return S_OK;
}
STDMETHODIMP CProfiler::Shutdown ()
{
// cannot use inproc debugging in this method
ShutdownPatch();
this->Release();
return S_OK;
}
STDMETHODIMP CProfiler::AppDomainCreationStarted (AppDomainID)
{
return S_OK;
}
STDMETHODIMP CProfiler::AppDomainCreationFinished (AppDomainID,HRESULT)
{
return S_OK;
}
STDMETHODIMP CProfiler::AppDomainShutdownStarted (AppDomainID)
{
return S_OK;
}
STDMETHODIMP CProfiler::AppDomainShutdownFinished (AppDomainID,HRESULT)
{
return S_OK;
}
STDMETHODIMP CProfiler::AssemblyLoadStarted (AssemblyID)
{
return S_OK;
}
STDMETHODIMP CProfiler::AssemblyLoadFinished (AssemblyID,HRESULT)
{
return S_OK;
}
STDMETHODIMP CProfiler::AssemblyUnloadStarted (AssemblyID)
{
return S_OK;
}
STDMETHODIMP CProfiler::AssemblyUnloadFinished (AssemblyID,HRESULT)
{
return S_OK;
}
STDMETHODIMP CProfiler::ModuleLoadStarted (ModuleID)
{
return S_OK;
}
STDMETHODIMP CProfiler::ModuleLoadFinished (ModuleID,HRESULT)
{
return S_OK;
}
STDMETHODIMP CProfiler::ModuleUnloadStarted (ModuleID)
{
return S_OK;
}
STDMETHODIMP CProfiler::ModuleUnloadFinished (ModuleID,HRESULT)
{
return S_OK;
}
STDMETHODIMP CProfiler::ModuleAttachedToAssembly (ModuleID,AssemblyID)
{
return S_OK;
}
STDMETHODIMP CProfiler::ClassLoadStarted (ClassID)
{
return S_OK;
}
STDMETHODIMP CProfiler::ClassLoadFinished (ClassID,HRESULT)
{
return S_OK;
}
STDMETHODIMP CProfiler::ClassUnloadStarted (ClassID)
{
return S_OK;
}
STDMETHODIMP CProfiler::ClassUnloadFinished (ClassID,HRESULT)
{
return S_OK;
}
STDMETHODIMP CProfiler::FunctionUnloadStarted (FunctionID)
{
return S_OK;
}
// Do you *really* want to know what this is doing?
// It is hooking the JIT compiler so that when the Thread.Abort method
// is compiled it is replaced with a working version of same.
// Insane.
STDMETHODIMP CProfiler::JITCompilationStarted (FunctionID functionID, BOOL)
{
PatchJIT (functionID);
return S_OK;
}
STDMETHODIMP CProfiler::JITCompilationFinished (FunctionID, HRESULT, BOOL)
{
return S_OK;
}
STDMETHODIMP CProfiler::JITCachedFunctionSearchStarted (FunctionID, BOOL*)
{
return S_OK;
}
STDMETHODIMP CProfiler::JITCachedFunctionSearchFinished (FunctionID, COR_PRF_JIT_CACHE)
{
return S_OK;
}
STDMETHODIMP CProfiler::JITFunctionPitched (FunctionID)
{
return S_OK;
}
STDMETHODIMP CProfiler::JITInlining (FunctionID, FunctionID, BOOL*)
{
return S_OK;
}
STDMETHODIMP CProfiler::ThreadCreated (ThreadID threadID)
{
// cannot use inproc debugging in this method
AddThread (threadID);
show_traceln (".NET thread 0x%x created.", threadID);
return S_OK;
}
STDMETHODIMP CProfiler::ThreadDestroyed (ThreadID threadID)
{
RemoveThread (threadID);
return S_OK;
}
STDMETHODIMP CProfiler::ThreadAssignedToOSThread (ThreadID managedThreadID, DWORD osThreadID)
{
UpdateOSThreadID (managedThreadID, osThreadID);
return S_OK;
}
STDMETHODIMP CProfiler::RemotingClientInvocationStarted()
{
return S_OK;
}
STDMETHODIMP CProfiler::RemotingClientSendingMessage (GUID*, BOOL)
{
return S_OK;
}
STDMETHODIMP CProfiler::RemotingClientReceivingReply (GUID*, BOOL)
{
return S_OK;
}
STDMETHODIMP CProfiler::RemotingClientInvocationFinished()
{
return S_OK;
}
STDMETHODIMP CProfiler::RemotingServerReceivingMessage (GUID*, BOOL)
{
return S_OK;
}
STDMETHODIMP CProfiler::RemotingServerInvocationStarted()
{
return S_OK;
}
STDMETHODIMP CProfiler::RemotingServerInvocationReturned()
{
return S_OK;
}
STDMETHODIMP CProfiler::RemotingServerSendingReply (GUID*, BOOL)
{
return S_OK;
}
STDMETHODIMP CProfiler::UnmanagedToManagedTransition (FunctionID functionID, COR_PRF_TRANSITION_REASON reason)
{
NoteThreadManaged();
return S_OK;
}
STDMETHODIMP CProfiler::ManagedToUnmanagedTransition (FunctionID functionID, COR_PRF_TRANSITION_REASON reason)
{
NoteThreadUnmanaged();
return S_OK;
}
STDMETHODIMP CProfiler::RuntimeSuspendStarted (COR_PRF_SUSPEND_REASON)
{
// cannot use inproc debugging in this method
return S_OK;
}
STDMETHODIMP CProfiler::RuntimeSuspendFinished ()
{
// cannot use inproc debugging in this method
return S_OK;
}
STDMETHODIMP CProfiler::RuntimeSuspendAborted ()
{
// cannot use inproc debugging in this method
return S_OK;
}
STDMETHODIMP CProfiler::RuntimeResumeStarted ()
{
// cannot use inproc debugging in this method
return S_OK;
}
STDMETHODIMP CProfiler::RuntimeResumeFinished ()
{
// cannot use inproc debugging in this method
return S_OK;
}
STDMETHODIMP CProfiler::RuntimeThreadSuspended (ThreadID)
{
// cannot use inproc debugging in this method
return S_OK;
}
STDMETHODIMP CProfiler::RuntimeThreadResumed (ThreadID)
{
// cannot use inproc debugging in this method
return S_OK;
}
STDMETHODIMP CProfiler::MovedReferences (ULONG, ObjectID[], ObjectID[], ULONG[])
{
// cannot use inproc debugging in this method
return S_OK;
}
STDMETHODIMP CProfiler::ObjectAllocated (ObjectID, ClassID)
{
return S_OK;
}
STDMETHODIMP CProfiler::ObjectsAllocatedByClass (ULONG, ClassID[], ULONG[])
{
// cannot use inproc debugging in this method
return S_OK;
}
STDMETHODIMP CProfiler::ObjectReferences (ObjectID, ClassID, ULONG, ObjectID[])
{
// cannot use inproc debugging in this method
return S_OK;
}
STDMETHODIMP CProfiler::RootReferences (ULONG, ObjectID[])
{
// cannot use inproc debugging in this method
return S_OK;
}
STDMETHODIMP CProfiler::ExceptionThrown (ObjectID)
{
return S_OK;
}
STDMETHODIMP CProfiler::ExceptionSearchFunctionEnter (FunctionID)
{
show_traceln ("Exception Search Function Enter");
return S_OK;
}
STDMETHODIMP CProfiler::ExceptionSearchFunctionLeave ()
{
show_traceln ("Exception Search Function Leave");
return S_OK;
}
STDMETHODIMP CProfiler::ExceptionSearchFilterEnter (FunctionID)
{
show_traceln ("Exception Search Filter Enter");
return S_OK;
}
STDMETHODIMP CProfiler::ExceptionSearchFilterLeave ()
{
show_traceln ("Exception Search Filter Leave");
return S_OK;
}
STDMETHODIMP CProfiler::ExceptionSearchCatcherFound (FunctionID)
{
show_traceln ("Exception Search Catcher Found");
return S_OK;
}
STDMETHODIMP CProfiler::ExceptionOSHandlerEnter (UINT_PTR)
{
// cannot use inproc debugging in this method
show_traceln ("Exception OS Handler Enter");
return S_OK;
}
STDMETHODIMP CProfiler::ExceptionOSHandlerLeave (UINT_PTR)
{
// cannot use inproc debugging in this method
show_traceln ("Exception OS Handler Leave");
return S_OK;
}
STDMETHODIMP CProfiler::ExceptionUnwindFunctionEnter (FunctionID)
{
show_traceln ("Exception Unwind Function Enter");
return S_OK;
}
STDMETHODIMP CProfiler::ExceptionUnwindFunctionLeave()
{
show_traceln ("Exception Unwind Function Leave");
return S_OK;
}
STDMETHODIMP CProfiler::ExceptionUnwindFinallyEnter (FunctionID)
{
show_traceln ("Exception Unwind Finally Enter");
return S_OK;
}
STDMETHODIMP CProfiler::ExceptionUnwindFinallyLeave()
{
show_traceln ("Exception Unwind Finally Leave");
return S_OK;
}
STDMETHODIMP CProfiler::ExceptionCatcherEnter (FunctionID, ObjectID)
{
show_traceln ("Exception Catcher Enter");
return S_OK;
}
STDMETHODIMP CProfiler::ExceptionCatcherLeave()
{
return S_OK;
}
STDMETHODIMP CProfiler::COMClassicVTableCreated (ClassID, REFGUID, void *, ULONG)
{
return S_OK;
}
STDMETHODIMP CProfiler::COMClassicVTableDestroyed (ClassID, REFGUID, void *)
{
return S_OK;
}
STDMETHODIMP CProfiler::ExceptionCLRCatcherFound()
{
// cannot use inproc debugging in this method
show_traceln ("Exception CLR Catcher Found");
return S_OK;
}
STDMETHODIMP CProfiler::ExceptionCLRCatcherExecute()
{
// cannot use inproc debugging in this method
return S_OK;
}

View File

@ -1,123 +0,0 @@
// Profiler.h : Declaration of the CProfiler
#pragma once
#include "resource.h" // main symbols
// IProfiler
[
object,
uuid("83D97963-F095-4B79-93CD-654785404021"),
dual, helpstring("IProfiler Interface"),
pointer_default(unique)
]
__interface IProfiler : IDispatch
{
};
// CProfiler
[
coclass,
threading("single"),
aggregatable("never"),
vi_progid("MysterX.DotnetProfiler"),
progid("MysterX.DotnetProfiler.1"),
version(1.0),
uuid("00CAE45B-E089-4EB1-AA4B-0AB5C74932F8"),
helpstring("Profiler Class")
]
class ATL_NO_VTABLE CProfiler :
public IProfiler,
public ICorProfilerCallback
{
public:
CProfiler()
{
}
DECLARE_PROTECT_FINAL_CONSTRUCT()
HRESULT FinalConstruct()
{
return S_OK;
}
void FinalRelease()
{
}
public:
STDMETHOD(Initialize)(IUnknown*);
STDMETHOD(Shutdown)();
STDMETHOD(AppDomainCreationStarted)(AppDomainID);
STDMETHOD(AppDomainCreationFinished)(AppDomainID,HRESULT);
STDMETHOD(AppDomainShutdownStarted)(AppDomainID);
STDMETHOD(AppDomainShutdownFinished)(AppDomainID,HRESULT);
STDMETHOD(AssemblyLoadStarted)(AssemblyID);
STDMETHOD(AssemblyLoadFinished)(AssemblyID,HRESULT);
STDMETHOD(AssemblyUnloadStarted)(AssemblyID);
STDMETHOD(AssemblyUnloadFinished)(AssemblyID,HRESULT);
STDMETHOD(ModuleLoadStarted)(ModuleID);
STDMETHOD(ModuleLoadFinished)(ModuleID,HRESULT);
STDMETHOD(ModuleUnloadStarted)(ModuleID);
STDMETHOD(ModuleUnloadFinished)(ModuleID,HRESULT);
STDMETHOD(ModuleAttachedToAssembly)(ModuleID,AssemblyID);
STDMETHOD(ClassLoadStarted)(ClassID);
STDMETHOD(ClassLoadFinished)(ClassID,HRESULT);
STDMETHOD(ClassUnloadStarted)(ClassID);
STDMETHOD(ClassUnloadFinished)(ClassID,HRESULT);
STDMETHOD(FunctionUnloadStarted)(FunctionID);
STDMETHOD(JITCompilationStarted)(FunctionID,BOOL);
STDMETHOD(JITCompilationFinished)(FunctionID,HRESULT,BOOL);
STDMETHOD(JITCachedFunctionSearchStarted)(FunctionID,BOOL*);
STDMETHOD(JITCachedFunctionSearchFinished)(FunctionID,COR_PRF_JIT_CACHE);
STDMETHOD(JITFunctionPitched)(FunctionID);
STDMETHOD(JITInlining)(FunctionID,FunctionID,BOOL*);
STDMETHOD(ThreadCreated)(ThreadID);
STDMETHOD(ThreadDestroyed)(ThreadID);
STDMETHOD(ThreadAssignedToOSThread)(ThreadID,DWORD);
STDMETHOD(RemotingClientInvocationStarted)();
STDMETHOD(RemotingClientSendingMessage)(GUID*,BOOL);
STDMETHOD(RemotingClientReceivingReply)(GUID*,BOOL);
STDMETHOD(RemotingClientInvocationFinished)();
STDMETHOD(RemotingServerReceivingMessage)(GUID*,BOOL);
STDMETHOD(RemotingServerInvocationStarted)();
STDMETHOD(RemotingServerInvocationReturned)();
STDMETHOD(RemotingServerSendingReply)(GUID*,BOOL);
STDMETHOD(UnmanagedToManagedTransition)(FunctionID,COR_PRF_TRANSITION_REASON);
STDMETHOD(ManagedToUnmanagedTransition)(FunctionID,COR_PRF_TRANSITION_REASON);
STDMETHOD(RuntimeSuspendStarted)(COR_PRF_SUSPEND_REASON);
STDMETHOD(RuntimeSuspendFinished)();
STDMETHOD(RuntimeSuspendAborted)();
STDMETHOD(RuntimeResumeStarted)();
STDMETHOD(RuntimeResumeFinished)();
STDMETHOD(RuntimeThreadSuspended)(ThreadID);
STDMETHOD(RuntimeThreadResumed)(ThreadID);
STDMETHOD(MovedReferences)(ULONG,ObjectID[],ObjectID[],ULONG[]);
STDMETHOD(ObjectAllocated)(ObjectID,ClassID);
STDMETHOD(ObjectsAllocatedByClass)(ULONG,ClassID[],ULONG[]);
STDMETHOD(ObjectReferences)(ObjectID,ClassID,ULONG,ObjectID[]);
STDMETHOD(RootReferences)(ULONG,ObjectID[]);
STDMETHOD(ExceptionThrown)(ObjectID);
STDMETHOD(ExceptionSearchFunctionEnter)(FunctionID);
STDMETHOD(ExceptionSearchFunctionLeave)();
STDMETHOD(ExceptionSearchFilterEnter)(FunctionID);
STDMETHOD(ExceptionSearchFilterLeave)();
STDMETHOD(ExceptionSearchCatcherFound)(FunctionID);
STDMETHOD(ExceptionOSHandlerEnter)(UINT_PTR);
STDMETHOD(ExceptionOSHandlerLeave)(UINT_PTR);
STDMETHOD(ExceptionUnwindFunctionEnter)(FunctionID);
STDMETHOD(ExceptionUnwindFunctionLeave)();
STDMETHOD(ExceptionUnwindFinallyEnter)(FunctionID);
STDMETHOD(ExceptionUnwindFinallyLeave)();
STDMETHOD(ExceptionCatcherEnter)(FunctionID,ObjectID);
STDMETHOD(ExceptionCatcherLeave)();
STDMETHOD(COMClassicVTableCreated)(ClassID,REFGUID,void*,ULONG);
STDMETHOD(COMClassicVTableDestroyed)(ClassID,REFGUID,void*);
STDMETHOD(ExceptionCLRCatcherFound)();
STDMETHOD(ExceptionCLRCatcherExecute)();
};

View File

@ -1,27 +0,0 @@
This directory contains an important bug fix for the .NET engine.
For details about the build process, see `overview.txt' within this
directory.
The .NET engine has a race condition within the thread library. This
directory contains the code that eliminates the race condition. This
library pretends to be a profiler for the .NET runtime. It intercepts
thread activity and compilation activity through profiling hooks
provided by the .NET runtime. It tracks the threads as they enter and
leave the CLR, and patches the JIT compiler to add special code around
the Thread.Abort() method.
To use this code, the environment variable `Cor_Enable_Profiling' must
be set to "1", and the environment variable `Cor_Profiler' must be set
to "MysterX.DotnetProfiler" before starting the CLR. (They may be set
by calling the Racket function putenv.)
If correctly set, a message like the following will be printed when
the CLR is started:
Initializing DotNet synchronization patch.
Built at 13:56:09 on Jul 17 2003
This message will not be printed if the environment variables are not
set, or if the dotnet module is not compiled and registered properly.

View File

@ -1,18 +0,0 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by dotnet.rc
//
#define IDS_PROJNAME 100
#define IDR_DOTNET 101
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 201
#define _APS_NEXT_COMMAND_VALUE 32768
#define _APS_NEXT_CONTROL_VALUE 201
#define _APS_NEXT_SYMED_VALUE 102
#endif
#endif

View File

@ -1,340 +0,0 @@
template<class T, class K> class SList;
template<class T, class K>
class SListNode
{
friend class SList<T, K>;
public:
SListNode( T entry, K Key );
virtual ~SListNode();
private:
K m_key;
T m_pEntry;
SListNode<T, K> *m_pNext;
}; // SListNode
/* public */
template<class T, class K>
SListNode<T, K>::SListNode ( T entry, K key )
: m_key (key),
m_pNext (NULL),
m_pEntry (entry)
{
} // ctor
/* public */
template<class T, class K>
SListNode<T, K>::~SListNode()
{
if (m_pEntry != NULL) {
delete m_pEntry;
m_pEntry = NULL;
}
} // dtor
template<class T, class K>
class SList
{
public:
SList();
virtual ~SList();
SList<T, K>( const SList<T, K> &source );
SList<T, K> &operator=( const SList<T, K> &source );
public:
void Dump();
BOOL IsEmpty();
T Lookup( K key );
void DelEntry( K key );
void AddEntry( T entry, K key );
//
// getters
//
T Head();
T Tail();
T Entry();
ULONG Count();
//
// intrinsic iteration
//
void Next();
void Reset();
BOOL AtEnd();
BOOL AtStart();
private:
ULONG m_count;
SListNode<T, K> *m_pHead;
SListNode<T, K> *m_pTail;
SListNode<T, K> *m_pCursor;
CRITICAL_SECTION m_criticalSection;
}; // SList
/* public */
template<class T, class K>
SList<T, K>::SList()
: m_count (0),
m_pHead (NULL),
m_pTail (NULL),
m_pCursor (NULL)
{
InitializeCriticalSection (&m_criticalSection);
} // ctor
/* public */
template<class T, class K>
SList<T, K>::~SList()
{
if (m_pHead != NULL) {
Synchronize guard (m_criticalSection);
SListNode<T, K> *cursor = m_pHead;
// delete all entries
m_count = 0;
for (; ((m_pHead = m_pHead->m_pNext) != NULL); cursor = m_pHead)
delete cursor;
delete cursor;
}
DeleteCriticalSection (&m_criticalSection);
} // dtor
/* public */
template<class T, class K>
SList<T, K> &SList<T, K>::operator= (const SList<T, K> &source)
{
Synchronize guard (m_criticalSection);
memcpy (this, &source, sizeof (SList<T, K>));
return *this;
} // assignment operator
/* public */
template<class T, class K>
SList<T, K>::SList (const SList<T, K> &source)
{
Synchronize guard (m_criticalSection);
m_pHead = source.m_pHead;
m_pTail = source.m_pTail;
} // copy ctor
/* public */
template<class T, class K>
void SList<T, K>::Dump()
{
Synchronize guard (m_criticalSection);
SListNode<T, K> *cursor = m_pHead;
for (; (cursor != NULL); cursor = cursor->m_pNext)
cursor->m_pEntry->Dump();
} // SList<T, K>::Dump
/* public */
template<class T, class K>
ULONG SList<T, K>::Count()
{
Synchronize guard (m_criticalSection);
return m_count;
} // SList<T, K>::Count
/* public */
template<class T, class K>
void SList<T, K>::AddEntry (T entry, K key)
{
Synchronize guard (m_criticalSection);
++m_count;
SListNode<T, K> * temp = new SListNode<T, K> (entry, key);
// list insertion implies appending to the end of the list
if (m_pHead == NULL)
m_pHead = temp;
else
m_pTail->m_pNext = temp;
m_pCursor = m_pTail = temp;
} // SList<T, K>::AddEntry
/* public */
template<class T, class K>
void SList<T, K>::DelEntry (K key)
{
Synchronize guard (m_criticalSection);
if (m_pHead != NULL) {
SListNode<T, K> *cursor = m_pHead;
//
// Case 1: delete head entry
//
if (m_pHead->m_pEntry->Compare (key) == TRUE) {
--m_count;
// consider case where head == tail
if ((m_pHead = m_pHead->m_pNext) == NULL)
m_pCursor = m_pTail = m_pHead;
else
m_pCursor = m_pHead;
delete cursor;
cursor = NULL;
}
//
// Case 2: delete inner entry
//
else {
SListNode<T, K> *precursor = cursor;
// scan for match
for (; ((cursor = cursor->m_pNext) != NULL); precursor = cursor) {
if (cursor->m_pEntry->Compare( key ) == TRUE) {
--m_count;
m_pCursor = precursor;
precursor->m_pNext = cursor->m_pNext;
// consider case where deleted entry is the tail
if (m_pTail == cursor) {
m_pTail = precursor;
m_pTail->m_pNext = NULL;
}
delete cursor;
cursor = NULL;
break;
}
} // for
}
}
} // SList<T, K>::DelEntry
/* public */
template<class T, class K>
T SList<T, K>::Lookup (K key)
{
Synchronize guard (m_criticalSection);
SListNode<T, K> *cursor = m_pHead;
// scan for match
for ( ;
((cursor != NULL) && (cursor->m_pEntry->Compare (key) == FALSE));
cursor = cursor->m_pNext )
; // continue
return ((cursor != NULL) ? cursor->m_pEntry : NULL);
} // SList<T, K>::Lookup
/* public */
template<class T, class K>
T SList<T, K>::Entry()
{
Synchronize guard (m_criticalSection);
return ((m_pCursor != NULL) ? m_pCursor->m_pEntry : NULL);
} // SList<T, K>::Entry
/* public */
template<class T, class K>
T SList<T, K>::Head()
{
Synchronize guard (m_criticalSection);
return ((m_pHead != NULL) ? m_pHead->m_pEntry : NULL);
} // SList<T, K>::Head
/* public */
template<class T, class K>
T SList<T, K>::Tail()
{
Synchronize guard (m_criticalSection);
return ((m_pTail != NULL) ? m_pTail->m_pEntry : NULL);
} // SList<T, K>::Tail
/* public */
template<class T, class K>
void SList<T, K>::Next()
{
Synchronize guard (m_criticalSection);
if (m_pCursor != NULL)
m_pCursor = m_pCursor->m_pNext;
} // SList<T, K>::Next()
/* public */
template<class T, class K>
void SList<T, K>::Reset()
{
Synchronize guard (m_criticalSection);
m_pCursor = m_pHead;
} // SList<T, K>::Reset
/* public */
template<class T, class K>
BOOL SList<T, K>::AtEnd()
{
Synchronize guard (m_criticalSection);
return (BOOL)(m_pCursor == NULL);
} // SList<T, K>::AtEnd
/* public */
template<class T, class K>
BOOL SList<T, K>::AtStart()
{
Synchronize guard (m_criticalSection);
return (BOOL)(m_pCursor == m_pHead);
} // SList<T, K>::AtStart
/* public */
template<class T, class K>
BOOL SList<T, K>::IsEmpty()
{
Synchronize guard (m_criticalSection);
return (BOOL)(m_pHead == NULL);
} // SList<T, K>::IsEmpty

View File

@ -1,30 +0,0 @@
#include "StdAfx.h"
#include <stdio.h>
#include "corhdr.h"
#include "cor.h"
#include "corhlpr.h"
#include "corprof.h"
#include "cordebug.h"
#include "threadinfo.h"
#include "SimpleException.h"
#include "utils.h"
SimpleException::SimpleException(const char * reason)
: m_reason(NULL)
{
SIZE_T length = strlen (reason);
m_reason = new char[(length + 1)];
strcpy (m_reason, reason);
}
SimpleException::~SimpleException(void)
{
if (m_reason != NULL)
delete [] m_reason;
}
void SimpleException::ReportFailure(void)
{
TEXT_OUTLN (m_reason);
}

View File

@ -1,13 +0,0 @@
#pragma once
class SimpleException
{
public:
SimpleException(const char * reason);
virtual ~SimpleException(void);
private:
// Why the exception was thrown.
char *m_reason;
public:
virtual void ReportFailure(void);
};

View File

@ -1,13 +0,0 @@
#include "StdAfx.h"
#include "synchronize.h"
Synchronize::Synchronize(CRITICAL_SECTION &criticalSection)
: m_block (criticalSection)
{
EnterCriticalSection (&m_block);
}
Synchronize::~Synchronize(void)
{
LeaveCriticalSection (&m_block);
}

View File

@ -1,11 +0,0 @@
#pragma once
class Synchronize
{
public:
Synchronize(CRITICAL_SECTION &criticalSection);
~Synchronize(void);
private:
// Cheesy unwind-protect in C++.
CRITICAL_SECTION m_block;
};

View File

@ -1,34 +0,0 @@
#include "StdAfx.h"
#include <stdio.h>
#include "corhdr.h"
#include "cor.h"
#include "corhlpr.h"
#include "corprof.h"
#include "cordebug.h"
#include "threadinfo.h"
ThreadInfo::ThreadInfo(ThreadID threadID) :
BaseInfo (threadID)
, m_originalTID(threadID)
, m_hThread(NULL)
, m_status (UNINITIALIZED)
, m_win32ThreadID(0)
, throw_depth(0)
, abort_deferred(FALSE)
{
wcscpy (m_name, L"THREAD");
}
ThreadInfo::~ThreadInfo(void)
{
}
void ThreadInfo::Dump()
{
fwprintf (stderr, L"\n" );
fwprintf (stderr, L"THREAD ID: 0x%08x (%d)\n", m_id, m_id);
fwprintf (stderr, L"\tHANDLE: 0x%08x (%d)\n", m_hThread, m_hThread);
fwprintf (stderr, L"\tWIN32 ID: 0x%08x (%d)\n", m_win32ThreadID, m_win32ThreadID);
fwprintf (stderr, L"\tTHROW DEPTH: 0x%08x\n", throw_depth);
fwprintf (stderr, L"\n" );
}

View File

@ -1,24 +0,0 @@
#pragma once
#include "baseinfo.h"
enum TransitionState
{
UNINITIALIZED,
MANAGED,
UNMANAGED
};
class ThreadInfo :
public BaseInfo
{
public:
ThreadInfo(ThreadID threadID);
virtual ~ThreadInfo(void);
virtual void Dump(void);
UINT_PTR m_originalTID;
HANDLE m_hThread;
TransitionState m_status;
DWORD m_win32ThreadID;
DWORD throw_depth;
BOOL abort_deferred;
};

View File

@ -1,10 +0,0 @@
// dotnet.cpp : Implementation of DLL Exports.
#include "stdafx.h"
#include "resource.h"
// The module attribute causes DllMain, DllRegisterServer and DllUnregisterServer to be automatically implemented for you
[ module(dll, uuid = "{D89BBDEE-CA88-413D-B013-9A608E69FDA2}",
name = "DotnetProfiler",
helpstring = "MysterX Dotnet 1.0 Type Library",
resource_name = "IDR_DOTNET") ];

View File

@ -1,99 +0,0 @@
//Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "winres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE 9, 1
#pragma code_page(1252)
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""winres.h""\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
#ifndef _MAC
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x2L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904B0"
BEGIN
VALUE "CompanyName", "Notheastern University"
VALUE "FileDescription", "MysterX Dotnet hack"
VALUE "FileVersion", "1.0.0.1"
VALUE "LegalCopyright", "(c) PLT. All rights reserved."
VALUE "InternalName", "dotnet.dll"
VALUE "OriginalFilename", "dotnet.dll"
VALUE "ProductName", "MysterX Dotnet"
VALUE "ProductVersion", "1.0.0.1"
VALUE "OLESelfRegister", ""
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0409, 0x04B0
END
END
#endif // !_MAC
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE
BEGIN
IDS_PROJNAME "DotnetProfiler"
END
IDR_DOTNET REGISTRY "dotnet.rgs"
////////////////////////////////////////////////////////////////////////////
#endif
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View File

@ -1,11 +0,0 @@
HKCR
{
NoRemove AppID
{
'%APPID%' = s 'DotnetProfiler'
'dotnet.DLL'
{
val AppID = s '%APPID%'
}
}
}

View File

@ -1,9 +0,0 @@
LIBRARY "dotnetPS"
EXPORTS
DllGetClassObject PRIVATE
DllCanUnloadNow PRIVATE
GetProxyDllInfo PRIVATE
DllRegisterServer PRIVATE
DllUnregisterServer PRIVATE

View File

@ -1,11 +0,0 @@
// stdafx.cpp : source file that includes just the standard includes
// dotnet.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"
#include <stdio.h>
#include "corhdr.h"
#include "cor.h"
#include "corhlpr.h"
#include "corprof.h"
#include "cordebug.h"

View File

@ -1,49 +0,0 @@
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently,
// but are changed infrequently
#pragma once
#ifndef STRICT
#define STRICT
#endif
// Modify the following defines if you have to target a platform prior to the ones specified below.
// Refer to MSDN for the latest info on corresponding values for different platforms.
#ifndef WINVER // Allow use of features specific to Windows 95 and Windows NT 4 or later.
#define WINVER 0x0400 // Change this to the appropriate value to target Windows 98 and Windows 2000 or later.
#endif
#ifndef _WIN32_WINNT // Allow use of features specific to Windows NT 4 or later.
#define _WIN32_WINNT 0x0400 // Change this to the appropriate value to target Windows 2000 or later.
#endif
#ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later.
#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later.
#endif
#ifndef _WIN32_IE // Allow use of features specific to IE 4.0 or later.
#define _WIN32_IE 0x0400 // Change this to the appropriate value to target IE 5.0 or later.
#endif
#define _ATL_APARTMENT_THREADED
#define _ATL_NO_AUTOMATIC_NAMESPACE
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit
// turns off ATL's hiding of some common and often safely ignored warning messages
#define _ATL_ALL_WARNINGS
#include <atlbase.h>
#include <atlcom.h>
#include <atlwin.h>
#include <atltypes.h>
#include <atlctl.h>
#include <atlhost.h>
using namespace ATL;
// All strings will be at most this long. Yeah, right.
#define MAX_LENGTH 256

View File

@ -1,319 +0,0 @@
#include "stdafx.h"
#include <stdio.h>
#include "corhdr.h"
#include "cor.h"
#include "corhlpr.h"
#include "corprof.h"
#include "cordebug.h"
#include "SimpleException.h"
#include "utils.h"
#define STRING_BUFFER_LEN 1024
int die (char const * szError, HRESULT hr)
{
fprintf (stderr, "\nDIE: %s\n", szError);
fflush (stderr);
if (hr != S_OK) {
IErrorInfo * pIErr = NULL;
BSTR bstrDesc = NULL;
fprintf (stderr, "HRESULT = 0x%08x\n", hr);
if (GetErrorInfo (0, &pIErr) == S_OK &&
pIErr->GetDescription (&bstrDesc) == S_OK) {
fprintf (stderr, "%ls", bstrDesc);
fflush (stderr);
SysFreeString (bstrDesc);
}
if (pIErr) pIErr->Release();
}
CoUninitialize();
exit (hr);
}
int show_trace (char * str, va_list marker)
{
CQuickBytes buffer;
int count = -1;
int i = 1;
while (count < 0) {
# if _MSC_VER < 1400
HRESULT hr;
if (FAILED(hr = buffer.ReSize (STRING_BUFFER_LEN * i)))
die("Resize failed.", hr);
#else
buffer.ReSizeThrows (STRING_BUFFER_LEN * i);
#endif
count = _vsnprintf ((char *) buffer.Ptr(), STRING_BUFFER_LEN * i, str, marker);
i *= 2;
}
fprintf (stderr, "%s", (char *) buffer.Ptr());
return count;
}
int show_trace (char * str, ...)
{
va_list marker;
int count;
va_start (marker, str);
count = show_trace (str, marker);
va_end (marker);
fflush (stderr);
return count;
}
int show_traceln (char * str, ...)
{
va_list marker;
int count;
va_start (marker, str);
count = show_trace (str, marker);
va_end (marker);
fprintf (stderr, "\n");
fflush (stderr);
return count;
}
#define DEBUG_ENVIRONMENT "DBG_PRF"
#define MAX_LENGTH 256
#define _DbgBreak() __asm { int 3 }
void Failure (char *message)
{
if (message == NULL)
message = "**** SEVERE FAILURE: TURNING OFF APPLICABLE PROFILING EVENTS ****";
//
// Display the error message and turn off the profiler events except the
// IMMUTABLE ones. Turning off the IMMUTABLE events can cause crashes. The only
// place that we can safely enable or disable immutable events is the Initialize
// callback.
//
TEXT_OUTLN (message);
} // PrfInfo::Failure
int String2Number (char * number)
{
WCHAR ch;
int base;
int iIndex = 1;
BOOL errorOccurred = FALSE;
// check to see if this is a valid number
// if the first digit is '0', then this is
// a hex or octal number
if (number[0] == '0') {
//
// hex
//
if ((number[1] == 'x') || (number[1] == 'X')) {
iIndex++;
base = 16;
while ((errorOccurred == FALSE)
&& ((ch = number[iIndex++]) != '\0')) {
if (((ch >= '0') && (ch <= '9'))
|| ((ch >= 'a') && (ch <= 'f'))
|| ((ch >= 'A') && (ch <= 'F')))
continue;
else
errorOccurred = TRUE;
}
}
//
// octal
//
else {
base = 8;
while ((errorOccurred == FALSE) &&
((ch = number[iIndex++]) != '\0')) {
if ((ch >= '0') && (ch <= '7'))
continue;
else
errorOccurred = TRUE;
}
}
}
//
// decimal
//
else {
base = 10;
while ((errorOccurred == FALSE)
&& ((ch = number[iIndex++]) != '\0')) {
if ((ch >= '0') && (ch <= '9'))
continue;
else
errorOccurred = TRUE;
}
}
return ((errorOccurred == TRUE) ? -1 : base);
}
DWORD GetEnvVarValue (char *value)
{
int base = String2Number (value);
return (base != -1)
? (DWORD) strtoul (value, NULL, base)
: -1;
}
DWORD FetchEnvironment (const char *environment)
{
DWORD retVal = -1;
char buffer[MAX_LENGTH];
return (GetEnvironmentVariableA (environment, buffer, MAX_LENGTH) > 0 )
? GetEnvVarValue (buffer)
: -1;
}
void LaunchDebugger (const char *szMsg, const char *szFile, int iLine)
{
static DWORD launchDebugger = FetchEnvironment (DEBUG_ENVIRONMENT);
if ((launchDebugger >= 1) && (launchDebugger != 0xFFFFFFFF)) {
char title[MAX_LENGTH];
char message[MAX_LENGTH];
sprintf (message,
"%s\n\n" \
"File: %s\n" \
"Line: %d\n",
((szMsg == NULL) ? "FAILURE" : szMsg),
szFile,
iLine);
sprintf (title,
"Test Failure (PID: %d/0x%08x, Thread: %d/0x%08x) ",
GetCurrentProcessId(),
GetCurrentProcessId(),
GetCurrentThreadId(),
GetCurrentThreadId());
switch (MessageBoxA (NULL,
message,
title,
(MB_ABORTRETRYIGNORE | MB_ICONEXCLAMATION))) {
case IDABORT:
TerminateProcess (GetCurrentProcess(), 999 /* bad exit code */ );
break;
case IDRETRY:
_DbgBreak();
case IDIGNORE:
break;
} // switch
}
} // BASEHELPER::LaunchDebugger
mdTypeRef get_type_token (IMetaDataEmit * pMetaDataEmit,
LPCWSTR assembly_name,
unsigned short major_version, unsigned short minor_version,
unsigned short release, unsigned short revision,
BYTE k0, BYTE k1, BYTE k2, BYTE k3,
BYTE k4, BYTE k5, BYTE k6, BYTE k7,
LPCWSTR type_name)
{
IMetaDataAssemblyEmit* pMetaDataAssemblyEmit;
if (FAILED (pMetaDataEmit->QueryInterface (IID_IMetaDataAssemblyEmit,
(void **)&pMetaDataAssemblyEmit)))
_THROW_EXCEPTION ("QueryInterface IID_IMetaDataAssemblyEmit failed.");
ASSEMBLYMETADATA amd;
ZeroMemory (&amd, sizeof (amd));
amd.usMajorVersion = major_version;
amd.usMinorVersion = minor_version;
amd.usBuildNumber = release;
amd.usRevisionNumber = revision;
BYTE key [] = {k0, k1, k2, k3, k4, k5, k6, k7};
mdModuleRef module_token;
if (FAILED (pMetaDataAssemblyEmit->DefineAssemblyRef (key, sizeof (key),
assembly_name, &amd, NULL,
0, 0, &module_token)))
_THROW_EXCEPTION ("DefineAssemblyRef failed.");
mdTypeRef type_token;
if (FAILED (pMetaDataEmit->DefineTypeRefByName (module_token, type_name, &type_token)))
_THROW_EXCEPTION ("DefineTypeRefByName failed.");
pMetaDataAssemblyEmit->Release();
return type_token;
}
mdMemberRef signature_no_args (IMetaDataEmit * pMetaDataEmit,
mdTypeRef type_ref,
LPCWSTR member_name,
CorCallingConvention callconv,
CorElementType return_type)
{
BYTE sigblob [] = {callconv,
0x00, //argcount
return_type};
mdMemberRef token;
if (FAILED (pMetaDataEmit->DefineMemberRef (type_ref,
member_name,
sigblob,
sizeof (sigblob),
&token)))
_THROW_EXCEPTION ("signature_no_args failed.");
return token;
}
mdMemberRef signature_one_arg (IMetaDataEmit * pMetaDataEmit,
mdTypeRef type_ref,
LPCWSTR member_name,
CorCallingConvention callconv,
CorElementType return_type,
CorElementType arg_type)
{
BYTE sigblob [] = {callconv,
0x01, //argcount
return_type,
arg_type};
mdMemberRef token;
if (FAILED (pMetaDataEmit->DefineMemberRef (type_ref,
member_name,
sigblob,
sizeof (sigblob),
&token)))
_THROW_EXCEPTION ("signature_one_arg failed.");
return token;
}
mdSignature signature_unmanaged_one_arg (IMetaDataEmit * pMetaDataEmit,
CorUnmanagedCallingConvention callconv,
CorElementType return_type,
CorElementType arg_type)
{
char sigblob [] = {callconv,
0x01, //argcount
return_type,
arg_type};
mdSignature msig;
pMetaDataEmit->GetTokenFromSig ((PCCOR_SIGNATURE)sigblob, sizeof (sigblob), &msig);
return msig;
}

View File

@ -1,45 +0,0 @@
void Failure (char *message = NULL);
void LaunchDebugger (const char *szMsg, const char *szFile, int iLine);
int show_traceln (char * str, ...);
int show_trace (char * str, ...);
#define TEXT_OUTLN(message) printf ("%s\n", message)
#define _THROW_EXCEPTION(message) do { show_traceln (message); LaunchDebugger (message, __FILE__, __LINE__); throw new SimpleException (message);} while (0)
//
// assert on false
//
#define _ASSERT_( expression ) do \
{ \
if ( !(expression) ) \
LaunchDebugger( #expression, __FILE__, __LINE__ ); \
} while (0)
mdTypeRef get_type_token (IMetaDataEmit * pMetaDataEmit,
LPCWSTR assembly_name,
unsigned short major_version, unsigned short minor_version,
unsigned short release, unsigned short revision,
BYTE k0, BYTE k1, BYTE k2, BYTE k3,
BYTE k4, BYTE k5, BYTE k6, BYTE k7,
LPCWSTR type_name);
mdMemberRef signature_no_args (IMetaDataEmit * pMetaDataEmit,
mdTypeRef type_ref,
LPCWSTR member_name,
CorCallingConvention callconv,
CorElementType return_type);
mdMemberRef signature_one_arg (IMetaDataEmit * pMetaDataEmit,
mdTypeRef type_ref,
LPCWSTR member_name,
CorCallingConvention callconv,
CorElementType return_type,
CorElementType arg_type);
mdSignature signature_unmanaged_one_arg (IMetaDataEmit * pMetaDataEmit,
CorUnmanagedCallingConvention callconv,
CorElementType return_type,
CorElementType arg_type);

View File

@ -992,7 +992,7 @@ Scheme_Object *fun_name(int argc,Scheme_Object **argv) { \
Scheme_Object *fun_name(int argc,Scheme_Object **argv) { \
HRESULT hr; \
IHTMLStyle *pIHTMLStyle; \
long val; \
intptr_t val; \
GUARANTEE_ELEMENT (scm_name, 0); \
GUARANTEE_INTEGER (scm_name, 1); \
pIHTMLStyle = styleInterfaceFromElement(argv[0]); \

View File

@ -2550,8 +2550,8 @@ Scheme_Object *mx_com_event_type(int argc, Scheme_Object **argv)
BOOL schemeValueFitsVarType(Scheme_Object *val, VARTYPE vt)
{
long int longInt;
unsigned long uLongInt;
intptr_t longInt;
uintptr_t uLongInt;
switch (vt) {
@ -2765,8 +2765,10 @@ void marshalSchemeValueToVariant(Scheme_Object *val, VARIANTARG *pVariantArg)
}
else if (SCHEME_EXACT_INTEGERP(val)) {
intptr_t lv;
pVariantArg->vt = VT_I4;
scheme_get_int_val(val, &pVariantArg->lVal);
scheme_get_int_val(val, &lv);
pVariantArg->lVal = lv;
}
#ifdef MZ_USE_SINGLE_FLOATS
@ -2834,8 +2836,10 @@ void marshalSchemeValueToVariant(Scheme_Object *val, VARIANTARG *pVariantArg)
else if (scheme_apply(mx_marshal_raw_scheme_objects, 0, NULL) == scheme_false)
scheme_signal_error("Unable to inject Scheme value %V into VARIANT", val);
else {
uintptr_t v2;
pVariantArg->vt = VT_INT;
pVariantArg->intVal = PtrToInt(val);
v2 = PtrToInt(val);
pVariantArg->intVal = v2;
}
return;
}
@ -3359,7 +3363,7 @@ void unmarshalArgSchemeObject(Scheme_Object *obj,VARIANTARG *pVariantArg) {
case VT_I4 | VT_BYREF :
long lVal;
intptr_t lVal;
if (SCHEME_EXACT_INTEGERP(val) == FALSE) {
handlerUpdateError("exact integer");
@ -4157,6 +4161,7 @@ void allocateDirectRetval(VARIANT *va)
}
}
#ifndef _WIN64
static VARIANT argVas[MAXDIRECTARGS];
static VARIANT optArgVas[MAXDIRECTARGS];
@ -4276,6 +4281,7 @@ END_XFORM_SKIP;
return retval;
}
#endif
static Scheme_Object *mx_make_call(int argc, Scheme_Object **argv,
INVOKEKIND invKind)
@ -4311,6 +4317,7 @@ static Scheme_Object *mx_make_call(int argc, Scheme_Object **argv,
pTypeDesc = getMethodType((MX_COM_Object *)argv[0], name, invKind);
#ifndef _WIN64
// try direct call via function pointer
// otherwise, use COM Automation
@ -4320,6 +4327,7 @@ static Scheme_Object *mx_make_call(int argc, Scheme_Object **argv,
(retval = mx_make_direct_call(argc, argv, invKind,
pIDispatch, name, pTypeDesc)))
return retval;
#endif
if (pTypeDesc) dispid = pTypeDesc->memID;
@ -5407,7 +5415,9 @@ void browserHwndMsgLoop(LPVOID p)
SetWindowLong(hwnd, GWL_STYLE,
GetWindowLong(hwnd, GWL_STYLE) & ~1L);
#ifndef _WIN64
SetClassLong(hwnd, GCL_HICON, HandleToLong(hIcon));
#endif
SetWindowText(hwnd, pBrowserWindowInit->browserWindow.label);

View File

@ -305,7 +305,9 @@ static void record_at_exit(Scheme_At_Exit_Callback_Proc p) XFORM_SKIP_PROC
static __declspec(thread) void *tls_space;
static unsigned WINAPI evalLoop(void *args) XFORM_SKIP_PROC {
#ifndef _WIN64
scheme_register_tls_space(&tls_space, 0);
#endif
scheme_set_atexit(record_at_exit);
return scheme_main_setup(1, do_evalLoop, 0, (char **)args);
}
@ -493,7 +495,7 @@ STDMETHODIMP CMzObj::Eval(BSTR input, BSTR *output) {
return hr;
}
BOOL WINAPI dlgProc(HWND hDlg,UINT msg,WPARAM wParam,LPARAM) {
LONG_PTR WINAPI dlgProc(HWND hDlg,UINT msg,WPARAM wParam,LPARAM) {
switch(msg) {
case WM_INITDIALOG :
SetDlgItemText(hDlg,MZCOM_URL,

View File

@ -1,8 +1,8 @@
This directory contains
- solution files and project files for building Racket and GRacket
with Microsoft Visual Studio 8.0 and up (which work with the Express
2005 version of Visual Studio);
with Microsoft Visual Studio 2008 (a.k.a. version 9.0) and up,
which work with the Express version of Visual Studio;
- mzconfig.h which is a manual version of information that is gathered
automatically when using the "configure" script;
@ -11,7 +11,7 @@ This directory contains
Studio command-line tools; and
- solution files and project files for building MzCOM and MysterX with
Microsoft Visual Studio 8.0 (not Express, which doesn't support ATL
Microsoft Visual Studio 2008 (not Express, which doesn't support ATL
and MFC).
Visual Studio Express is available for free from Microsoft; it can be
@ -41,21 +41,23 @@ As always, please report bugs via one of the following:
Building Racket and GRacket
---------------------------
If you're using MSVC 8.0 (not Express), and if `devenv.exe' is in your
If you're using MSVC 2008 (not Express), and if `devenv.exe' is in your
path, then you can just run
racket\src\worksp\build.bat
from its own directory to perform all steps up to "Versioning",
including the MzCOM and MysterX steps.
If your MSVC environment is configured for 64-bit builds (e.g., by
running "vcvarsall.bat" with "x64), then a 64-bit build is created.
The CGC variants of Racket, GRacket, MzCOM, and MysterX can be built via
Visual Studio projects. The 3m variants are built by a Racket script
that runs the MSVC command-line tools. (See "CGC versus 3m" in
racket\src\README if you don't know about the two variants.)
The 3m build requires:
racket\src\worksp\racket
It's simplest to just build the main CGC solutions, which automatically
build all of the above projects, and then build 3m.
If you can't run "build.bat" or don't want to, you have to perform
several steps: first builg RacketCGC, then build Racket3m, etc.
Building RacketCGC and GRacketCGC
---------------------------------
@ -85,7 +87,15 @@ In addition, building RacketCGC executes
racket\src\racket\dynsrc\mkmzdyn.bat
which copies .exp, .obj, and .lib files into racket\lib\.
Finally, you must install pre-build DLLs that GRacket needs to run.
Downloading Pre-Built Binaries
-------------------------------
You must install some pre-built DLLs if you want text-encoding
converts, OpenSSL support, `racket/draw', or `racket/gui' support.
In principle, you could build them from scratch, but since they
are (mostly) maintained by people and organizations other than
PLT, we supply them in binary form.
The DLLs are available from
http://download.racket-lang.org/libs/
@ -97,14 +107,13 @@ and they must be installed into
The "get-libs.rkt" script in "racket\src" can download the libraries,
and the script is used by "build.bat".
Building Racket3m and GRacket3m
-------------------------------
After RacketCGC and GRacketCGC are built, you can can build 3m binaries:
1. Ensure that the Visual Studio command-line tools are in your path.
You may need to run "vsvars32.bat" from your Visual Studio
You may need to run "vcvarsall.bat" from your Visual Studio
installation, so that PATH and other environment variables are set.
2. Change directories to racket\src\worksp\gc2 and run

View File

@ -19,25 +19,43 @@ EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{D59A2B28-330B-41F5-8261-F5BC1019E163}.Debug|Win32.ActiveCfg = Debug|Win32
{D59A2B28-330B-41F5-8261-F5BC1019E163}.Debug|Win32.Build.0 = Debug|Win32
{D59A2B28-330B-41F5-8261-F5BC1019E163}.Debug|x64.ActiveCfg = Debug|x64
{D59A2B28-330B-41F5-8261-F5BC1019E163}.Debug|x64.Build.0 = Debug|x64
{D59A2B28-330B-41F5-8261-F5BC1019E163}.Release|Win32.ActiveCfg = Release|Win32
{D59A2B28-330B-41F5-8261-F5BC1019E163}.Release|Win32.Build.0 = Release|Win32
{D59A2B28-330B-41F5-8261-F5BC1019E163}.Release|x64.ActiveCfg = Release|x64
{D59A2B28-330B-41F5-8261-F5BC1019E163}.Release|x64.Build.0 = Release|x64
{A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.Debug|Win32.ActiveCfg = Debug|Win32
{A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.Debug|Win32.Build.0 = Debug|Win32
{A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.Debug|x64.ActiveCfg = Debug|x64
{A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.Debug|x64.Build.0 = Debug|x64
{A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.Release|Win32.ActiveCfg = Release|Win32
{A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.Release|Win32.Build.0 = Release|Win32
{A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.Release|x64.ActiveCfg = Release|x64
{A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.Release|x64.Build.0 = Release|x64
{66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.Debug|Win32.ActiveCfg = Debug|Win32
{66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.Debug|Win32.Build.0 = Debug|Win32
{66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.Debug|x64.ActiveCfg = Debug|x64
{66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.Debug|x64.Build.0 = Debug|x64
{66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.Release|Win32.ActiveCfg = Release|Win32
{66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.Release|Win32.Build.0 = Release|Win32
{66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.Release|x64.ActiveCfg = Release|x64
{66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.Release|x64.Build.0 = Release|x64
{7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.Debug|Win32.ActiveCfg = Debug|Win32
{7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.Debug|Win32.Build.0 = Debug|Win32
{7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.Debug|x64.ActiveCfg = Debug|x64
{7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.Debug|x64.Build.0 = Debug|x64
{7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.Release|Win32.ActiveCfg = Release|Win32
{7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.Release|Win32.Build.0 = Release|Win32
{7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.Release|x64.ActiveCfg = Release|x64
{7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -10,6 +10,9 @@
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
@ -187,6 +190,183 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="2"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="1"
AdditionalIncludeDirectories="..,..\..\racket\gc,..\..\racket\include"
PreprocessorDefinitions="WIN32,NDEBUG,_WINDOWS,__WINDOWS__,GC_DLL,__STDC__,_CRT_SECURE_NO_DEPRECATE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
CompileAs="0"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
AdditionalIncludeDirectories="..\..\wxwindow\include\msw;..\..\wxwindow\contrib\fafa"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=" /DELAYLOAD:libracketxxxxxxx.dll /DELAYLOAD:libmzgcxxxxxxx.dll"
AdditionalDependencies="WS2_32.lib User32.lib Advapi32.lib delayimp.lib"
OutputFile="..\..\..\GRacketCGC.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="libcd.lib"
GenerateDebugInformation="true"
ProgramDatabaseFile="..\..\..\GRacketCGC.pdb"
SubSystem="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..,..\..\racket\gc,..\..\racket\include"
PreprocessorDefinitions="WIN32,_DEBUG,_WINDOWS,__WINDOWS__,GC_DLL,__STDC__,_CRT_SECURE_NO_DEPRECATE"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
CompileAs="0"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
AdditionalIncludeDirectories="..\..\wxwindow\include\msw;..\..\wxwindow\contrib\fafa"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /DELAYLOAD:libracketxxxxxxx.dll /DELAYLOAD:libmzgcxxxxxxx.dll"
AdditionalDependencies="WS2_32.lib User32.lib Advapi32.lib delayimp.lib"
OutputFile="..\..\..\GRacketCGC.exe"
SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="libcd.lib"
GenerateDebugInformation="true"
ProgramDatabaseFile="..\..\..\GRacketCGC.pdb"
SubSystem="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>

View File

@ -13,10 +13,12 @@ dotnet/Release
myspage/Release
myspage/*.idb
myspage/*.user
myspage/x64
myssink/Release
myssink/*.idb
myssink/*.user
myssink/x64
gc_traverse.inc
3m

View File

@ -1,445 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="dotnet"
ProjectGUID="{44BA9F7B-63F7-41F4-B8E9-8C69A08A677C}"
Keyword="AtlProj"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="Debug"
IntermediateDirectory="Debug"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfATL="1"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="false"
TargetEnvironment="1"
GenerateStublessProxies="true"
TypeLibraryName="$(IntDir)\dotnet.tlb"
HeaderFileName="dotnet.h"
DLLDataFileName=""
InterfaceIdentifierFileName="dotnet_i.c"
ProxyFileName="dotnet_p.c"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_ATL_ATTRIBUTES"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
BufferSecurityCheck="true"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
IgnoreImportLibrary="true"
AdditionalDependencies="corguids.lib"
OutputFile="$(OutDir)\dotnet.dll"
LinkIncremental="2"
AdditionalLibraryDirectories=""
MergedIDLBaseFileName="_dotnet.idl"
GenerateDebugInformation="true"
SubSystem="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
ImportLibrary="$(OutDir)\dotnet.lib"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
Description="Performing registration"
CommandLine="regsvr32 /s /c &quot;$(TargetPath)&quot;"
/>
</Configuration>
<Configuration
Name="Jrm|Win32"
OutputDirectory="Debug"
IntermediateDirectory="Debug"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfATL="1"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
AdditionalIncludeDirectories=""
MkTypLibCompatible="false"
TargetEnvironment="1"
GenerateStublessProxies="true"
TypeLibraryName="$(IntDir)\dotnet.tlb"
HeaderFileName="dotnet.h"
DLLDataFileName=""
InterfaceIdentifierFileName="dotnet_i.c"
ProxyFileName="dotnet_p.c"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_ATL_ATTRIBUTES"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
BufferSecurityCheck="true"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
IgnoreImportLibrary="true"
AdditionalDependencies="corguids.lib"
OutputFile="$(OutDir)\dotnet.dll"
LinkIncremental="2"
AdditionalLibraryDirectories=""
MergedIDLBaseFileName="_dotnet.idl"
GenerateDebugInformation="true"
SubSystem="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
ImportLibrary="$(OutDir)\dotnet.lib"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
Description="Performing registration"
CommandLine="regsvr32 /s /c &quot;$(TargetPath)&quot;"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
IntermediateDirectory="Release"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfATL="1"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="false"
TargetEnvironment="1"
GenerateStublessProxies="true"
TypeLibraryName="$(IntDir)\dotnet.tlb"
HeaderFileName="dotnet.h"
DLLDataFileName=""
InterfaceIdentifierFileName="dotnet_i.c"
ProxyFileName="dotnet_p.c"
/>
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;_ATL_ATTRIBUTES"
StringPooling="true"
RuntimeLibrary="2"
BufferSecurityCheck="true"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
IgnoreImportLibrary="true"
AdditionalDependencies="corguids.lib"
OutputFile="$(OutDir)\dotnet.dll"
LinkIncremental="1"
AdditionalLibraryDirectories=""
MergedIDLBaseFileName="_dotnet.idl"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
ImportLibrary="$(OutDir)\dotnet.lib"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
Description="Performing registration"
CommandLine="regsvr32 /s /c &quot;$(TargetPath)&quot;"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"
>
<File
RelativePath="..\..\..\mysterx\dotnet\BaseInfo.cpp"
>
</File>
<File
RelativePath="..\..\..\mysterx\dotnet\dotnet.cpp"
>
</File>
<File
RelativePath="..\..\..\mysterx\dotnet\Patch.cpp"
>
</File>
<File
RelativePath="..\..\..\mysterx\dotnet\Profiler.cpp"
>
</File>
<File
RelativePath="..\..\..\mysterx\dotnet\SimpleException.cpp"
>
</File>
<File
RelativePath="..\..\..\mysterx\dotnet\stdafx.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Jrm|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\..\..\mysterx\dotnet\Synchronize.cpp"
>
</File>
<File
RelativePath="..\..\..\mysterx\dotnet\ThreadInfo.cpp"
>
</File>
<File
RelativePath="..\..\..\mysterx\dotnet\utils.cpp"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc"
>
<File
RelativePath="..\..\..\mysterx\dotnet\BaseInfo.h"
>
</File>
<File
RelativePath="..\..\..\mysterx\dotnet\Patch.h"
>
</File>
<File
RelativePath="..\..\..\mysterx\dotnet\Profiler.h"
>
</File>
<File
RelativePath="..\..\..\mysterx\dotnet\Resource.h"
>
</File>
<File
RelativePath="..\..\..\mysterx\dotnet\SimpleException.h"
>
</File>
<File
RelativePath="..\..\..\mysterx\dotnet\SList.h"
>
</File>
<File
RelativePath="..\..\..\mysterx\dotnet\stdafx.h"
>
</File>
<File
RelativePath="..\..\..\mysterx\dotnet\Synchronize.h"
>
</File>
<File
RelativePath="..\..\..\mysterx\dotnet\ThreadInfo.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
>
<File
RelativePath="..\..\..\mysterx\dotnet\dotnet.rc"
>
</File>
<File
RelativePath="..\..\..\mysterx\dotnet\dotnet.rgs"
>
</File>
</Filter>
<File
RelativePath="..\..\..\mysterx\dotnet\ReadMe.txt"
>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -1,261 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="dotnetPS"
ProjectGUID="{5BF37E89-6891-42AD-9133-77B412C01724}"
Keyword="AtlPSProj"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="DebugPS"
IntermediateDirectory="DebugPS"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
>
<Tool
Name="VCPreBuildEventTool"
Description="Checking for required files"
CommandLine="if exist dlldata.c goto :END&#x0D;&#x0A;&#x0D;&#x0A;echo Error: MIDL will not generate DLLDATA.C unless you have at least 1 interface in the main project.&#x0D;&#x0A;&#x0D;&#x0A;Exit 1&#x0D;&#x0A;&#x0D;&#x0A;:END&#x0D;&#x0A;&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
PreprocessorDefinitions="WIN32;_WIN32_WINNT=0x0400;REGISTER_PROXY_DLL;_DEBUG"
RuntimeLibrary="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="kernel32.lib rpcndr.lib rpcns4.lib rpcrt4.lib oleaut32.lib uuid.lib"
ModuleDefinitionFile="dotnetPS.def"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
Description="Performing registration"
CommandLine="regsvr32 /s /c &quot;$(TargetPath)&quot;"
/>
</Configuration>
<Configuration
Name="Jrm|Win32"
OutputDirectory="DebugPS"
IntermediateDirectory="DebugPS"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
>
<Tool
Name="VCPreBuildEventTool"
Description="Checking for required files"
CommandLine="if exist dlldata.c goto :END&#x0D;&#x0A;&#x0D;&#x0A;echo Error: MIDL will not generate DLLDATA.C unless you have at least 1 interface in the main project.&#x0D;&#x0A;&#x0D;&#x0A;Exit 1&#x0D;&#x0A;&#x0D;&#x0A;:END&#x0D;&#x0A;&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
PreprocessorDefinitions="WIN32;_WIN32_WINNT=0x0400;REGISTER_PROXY_DLL;_DEBUG"
RuntimeLibrary="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="kernel32.lib rpcndr.lib rpcns4.lib rpcrt4.lib oleaut32.lib uuid.lib"
ModuleDefinitionFile="dotnetPS.def"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
Description="Performing registration"
CommandLine="regsvr32 /s /c &quot;$(TargetPath)&quot;"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="ReleasePS"
IntermediateDirectory="ReleasePS"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
>
<Tool
Name="VCPreBuildEventTool"
Description="Checking for required files"
CommandLine="if exist dlldata.c goto :END&#x0D;&#x0A;&#x0D;&#x0A;echo Error: MIDL will not generate DLLDATA.C unless you have at least 1 interface in the main project.&#x0D;&#x0A;&#x0D;&#x0A;Exit 1&#x0D;&#x0A;&#x0D;&#x0A;:END&#x0D;&#x0A;&#x0D;&#x0A;"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="3"
PreprocessorDefinitions="WIN32;_WIN32_WINNT=0x0400;REGISTER_PROXY_DLL;NDEBUG"
RuntimeLibrary="2"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="kernel32.lib rpcndr.lib rpcns4.lib rpcrt4.lib oleaut32.lib uuid.lib"
ModuleDefinitionFile="dotnetPS.def"
OptimizeReferences="2"
EnableCOMDATFolding="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
Description="Performing registration"
CommandLine="regsvr32 /s /c &quot;$(TargetPath)&quot;"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"
>
<File
RelativePath="..\..\..\mysterx\dotnet\dotnetps.def"
>
</File>
</Filter>
<Filter
Name="Generated Files"
SourceControlFiles="false"
>
<File
RelativePath="..\..\..\mysterx\dotnet\_dotnet_i.c"
>
</File>
<File
RelativePath="..\..\..\mysterx\dotnet\_dotnet_p.c"
>
</File>
<File
RelativePath="..\..\..\mysterx\dotnet\dlldata.c"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -13,28 +13,47 @@ EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
3m|Win32 = 3m|Win32
3m|x64 = 3m|x64
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{4F5E803D-985F-43B1-8BDC-B8F6D12F56B8}.3m|Win32.ActiveCfg = Release|Win32
{4F5E803D-985F-43B1-8BDC-B8F6D12F56B8}.3m|Win32.Build.0 = Release|Win32
{4F5E803D-985F-43B1-8BDC-B8F6D12F56B8}.3m|x64.ActiveCfg = Release|x64
{4F5E803D-985F-43B1-8BDC-B8F6D12F56B8}.Debug|Win32.ActiveCfg = Debug|Win32
{4F5E803D-985F-43B1-8BDC-B8F6D12F56B8}.Debug|Win32.Build.0 = Debug|Win32
{4F5E803D-985F-43B1-8BDC-B8F6D12F56B8}.Debug|x64.ActiveCfg = Debug|x64
{4F5E803D-985F-43B1-8BDC-B8F6D12F56B8}.Debug|x64.Build.0 = Debug|x64
{4F5E803D-985F-43B1-8BDC-B8F6D12F56B8}.Release|Win32.ActiveCfg = Release|Win32
{4F5E803D-985F-43B1-8BDC-B8F6D12F56B8}.Release|Win32.Build.0 = Release|Win32
{4F5E803D-985F-43B1-8BDC-B8F6D12F56B8}.Release|x64.ActiveCfg = Release|x64
{4F5E803D-985F-43B1-8BDC-B8F6D12F56B8}.Release|x64.Build.0 = Release|x64
{1B8F4E47-9F2D-45EA-9941-7672B28E8285}.3m|Win32.ActiveCfg = Release|Win32
{1B8F4E47-9F2D-45EA-9941-7672B28E8285}.3m|Win32.Build.0 = Release|Win32
{1B8F4E47-9F2D-45EA-9941-7672B28E8285}.3m|x64.ActiveCfg = Release|x64
{1B8F4E47-9F2D-45EA-9941-7672B28E8285}.Debug|Win32.ActiveCfg = Debug|Win32
{1B8F4E47-9F2D-45EA-9941-7672B28E8285}.Debug|Win32.Build.0 = Debug|Win32
{1B8F4E47-9F2D-45EA-9941-7672B28E8285}.Debug|x64.ActiveCfg = Debug|x64
{1B8F4E47-9F2D-45EA-9941-7672B28E8285}.Debug|x64.Build.0 = Debug|x64
{1B8F4E47-9F2D-45EA-9941-7672B28E8285}.Release|Win32.ActiveCfg = Release|Win32
{1B8F4E47-9F2D-45EA-9941-7672B28E8285}.Release|Win32.Build.0 = Release|Win32
{1B8F4E47-9F2D-45EA-9941-7672B28E8285}.Release|x64.ActiveCfg = Release|x64
{1B8F4E47-9F2D-45EA-9941-7672B28E8285}.Release|x64.Build.0 = Release|x64
{68D1B4E0-D9D3-45C3-9BCC-A5491F1F755A}.3m|Win32.ActiveCfg = 3m|Win32
{68D1B4E0-D9D3-45C3-9BCC-A5491F1F755A}.3m|Win32.Build.0 = 3m|Win32
{68D1B4E0-D9D3-45C3-9BCC-A5491F1F755A}.3m|x64.ActiveCfg = 3m|x64
{68D1B4E0-D9D3-45C3-9BCC-A5491F1F755A}.3m|x64.Build.0 = 3m|x64
{68D1B4E0-D9D3-45C3-9BCC-A5491F1F755A}.Debug|Win32.ActiveCfg = Debug|Win32
{68D1B4E0-D9D3-45C3-9BCC-A5491F1F755A}.Debug|Win32.Build.0 = Debug|Win32
{68D1B4E0-D9D3-45C3-9BCC-A5491F1F755A}.Debug|x64.ActiveCfg = Debug|x64
{68D1B4E0-D9D3-45C3-9BCC-A5491F1F755A}.Debug|x64.Build.0 = Debug|x64
{68D1B4E0-D9D3-45C3-9BCC-A5491F1F755A}.Release|Win32.ActiveCfg = Release|Win32
{68D1B4E0-D9D3-45C3-9BCC-A5491F1F755A}.Release|Win32.Build.0 = Release|Win32
{68D1B4E0-D9D3-45C3-9BCC-A5491F1F755A}.Release|x64.ActiveCfg = Release|x64
{68D1B4E0-D9D3-45C3-9BCC-A5491F1F755A}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -11,6 +11,9 @@
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
@ -110,9 +113,9 @@
/>
</Configuration>
<Configuration
Name="Jrm|Win32"
OutputDirectory="Debug"
IntermediateDirectory="Debug"
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
@ -132,6 +135,7 @@
<Tool
Name="VCMIDLTool"
WarningLevel="3"
TargetEnvironment="3"
GenerateStublessProxies="true"
EnableErrorChecks="2"
/>
@ -139,7 +143,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\include;..\..\mysterx\myspage;..\..\mysterx\myssink"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBMYSTERX_EXPORTS;MYSTERX_DOTNET"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBMYSTERX_EXPORTS"
StringPooling="false"
MinimalRebuild="false"
ExceptionHandling="1"
@ -165,10 +169,9 @@
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
AdditionalDependencies="htmlhelp.lib libmzgcxxxxxxx.lib libracketxxxxxxx.lib mscoree.lib mzdyn.obj"
AdditionalDependencies="htmlhelp.lib libmzgcxxxxxxx.lib libracketxxxxxxx.lib mzdyn.obj"
OutputFile="..\..\..\collects\mysterx\private\compiled\native\win32\i386\mxmain_rkt.dll"
LinkIncremental="2"
LinkIncremental="0"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\lib\msvc"
IgnoreDefaultLibraryNames="LIBCMT.lib;LIBCMTD.lib"
@ -179,7 +182,7 @@
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
ImportLibrary="$(OutDir)\$(InputName).lib"
TargetMachine="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
@ -297,6 +300,100 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="2"
FavorSizeOrSpeed="1"
OmitFramePointers="false"
AdditionalIncludeDirectories="..\..\..\include;..\..\mysterx\myspage;..\..\mysterx\myssink"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBMYSTERX_EXPORTS"
StringPooling="true"
MinimalRebuild="false"
ExceptionHandling="1"
RuntimeLibrary="0"
BufferSecurityCheck="false"
EnableFunctionLevelLinking="false"
UsePrecompiledHeader="0"
WarningLevel="3"
SuppressStartupBanner="true"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="0"
CompileAs="0"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="htmlhelp.lib libmzgcxxxxxxx.lib libracketxxxxxxx.lib mzdyn.obj"
OutputFile="..\..\..\collects\mysterx\private\compiled\native\win32\i386\mxmain_rkt.dll"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\lib\msvc"
IgnoreDefaultLibraryNames=""
ModuleDefinitionFile="..\..\mysterx\mxmain.def"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
ImportLibrary="$(OutDir)\$(InputName).lib"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="3m|Win32"
OutputDirectory="3m"
@ -391,6 +488,100 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="3m|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="2"
FavorSizeOrSpeed="1"
OmitFramePointers="false"
AdditionalIncludeDirectories=".;..\..\..\include;..\..\mysterx\myspage;..\..\mysterx\myssink"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBMYSTERX_EXPORTS;MYSTERX_3M"
StringPooling="true"
MinimalRebuild="false"
ExceptionHandling="1"
RuntimeLibrary="0"
BufferSecurityCheck="false"
EnableFunctionLevelLinking="false"
UsePrecompiledHeader="0"
WarningLevel="3"
SuppressStartupBanner="true"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="0"
CompileAs="0"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="htmlhelp.lib libracket3mxxxxxxx.lib mzdyn3m.obj"
OutputFile="..\..\..\collects\mysterx\private\compiled\native\win32\i386\3m\mxmain_rkt.dll"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\lib\msvc"
IgnoreDefaultLibraryNames=""
ModuleDefinitionFile="..\..\mysterx\mxmain.def"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
ImportLibrary="$(OutDir)\$(InputName).lib"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>

View File

@ -11,6 +11,9 @@
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
@ -114,9 +117,9 @@
/>
</Configuration>
<Configuration
Name="Jrm|Win32"
OutputDirectory="Debug"
IntermediateDirectory="Debug"
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfATL="1"
@ -140,6 +143,7 @@
Name="VCMIDLTool"
AdditionalIncludeDirectories="..\..\..\..\include"
WarningLevel="3"
TargetEnvironment="3"
GenerateStublessProxies="true"
TypeLibraryName="$(ProjectName).tlb"
OutputDirectory="..\..\..\mysterx\myspage"
@ -175,7 +179,6 @@
Name="VCLinkerTool"
AdditionalDependencies="libmzgcxxxxxxx.lib libracketxxxxxxx.lib mzdyn.obj"
OutputFile="..\..\..\..\lib\$(ProjectName).dll"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\lib\msvc"
IgnoreDefaultLibraryNames="LIBCMT"
@ -185,8 +188,8 @@
SubSystem="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
ImportLibrary="$(OutDir)\$(InputName).lib"
TargetMachine="1"
ImportLibrary="$(OutDir)\$(ProjectName).lib"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
@ -314,6 +317,109 @@
CommandLine="REGSVR32 /s ..\..\..\..\lib\$(ProjectName).dll"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfATL="1"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
DeleteExtensionsOnClean="*.obj;*.ilk;*.pdb;*.tlb;*.tli;*.tlh;*.tmp;*.rsp;*.bat;$(TargetPath)"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
AdditionalIncludeDirectories="..\..\..\..\include"
WarningLevel="3"
TargetEnvironment="3"
GenerateStublessProxies="true"
TypeLibraryName="$(ProjectName).tlb"
OutputDirectory="..\..\..\mysterx\myspage"
HeaderFileName="$(ProjectName).h"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="2"
FavorSizeOrSpeed="1"
OmitFramePointers="false"
AdditionalIncludeDirectories="..\..\..\..\include"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;MYSPAGE_EXPORTS"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
BufferSecurityCheck="false"
UsePrecompiledHeader="0"
ProgramDataBaseFileName=""
WarningLevel="4"
SuppressStartupBanner="true"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="0"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="libmzgcxxxxxxx.lib libracketxxxxxxx.lib mzdyn.obj"
OutputFile="..\..\..\..\lib\$(ProjectName).dll"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\lib\msvc"
IgnoreDefaultLibraryNames=""
ModuleDefinitionFile="..\..\..\mysterx\myspage\$(ProjectName).def"
GenerateDebugInformation="false"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
ImportLibrary="$(OutDir)\$(InputName).lib"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
Description="Register $(ProjectName).dll"
CommandLine="REGSVR32 /s ..\..\..\..\lib\$(ProjectName).dll"
/>
</Configuration>
</Configurations>
<References>
</References>
@ -366,6 +472,17 @@
InterfaceIdentifierFileName="$(InputName)_i.c"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCMIDLTool"
GenerateStublessProxies="true"
OutputDirectory="$(InputDir)"
HeaderFileName="$(InputName).h"
InterfaceIdentifierFileName="$(InputName)_i.c"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
@ -374,6 +491,14 @@
OutputDirectory="$(InputDir)"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCMIDLTool"
OutputDirectory="$(InputDir)"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\..\..\mysterx\myspage\myspage.rc"
@ -386,6 +511,14 @@
ResourceOutputFileName="$(InputDir)\$(InputName).res"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCResourceCompilerTool"
ResourceOutputFileName="$(InputDir)\$(InputName).res"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
@ -394,6 +527,14 @@
ResourceOutputFileName="$(InputDir)\$(InputName).res"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCResourceCompilerTool"
ResourceOutputFileName="$(InputDir)\$(InputName).res"
/>
</FileConfiguration>
</File>
</Filter>
</Files>

View File

@ -11,6 +11,9 @@
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
@ -114,9 +117,9 @@
/>
</Configuration>
<Configuration
Name="Jrm|Win32"
OutputDirectory="Debug"
IntermediateDirectory="Debug"
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfATL="1"
@ -138,6 +141,7 @@
<Tool
Name="VCMIDLTool"
WarningLevel="3"
TargetEnvironment="3"
GenerateStublessProxies="true"
TypeLibraryName="$(ProjectName).tlb"
OutputDirectory="..\..\..\mysterx\myssink"
@ -174,7 +178,7 @@
AdditionalOptions="/MACHINE:I386"
AdditionalDependencies=""
OutputFile="..\..\..\..\lib\$(ProjectName).dll"
LinkIncremental="2"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\lib\msvc"
IgnoreDefaultLibraryNames="LIBCMT.lib;LIBCMTD.lib"
@ -185,7 +189,7 @@
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
ImportLibrary="$(OutDir)\$(ProjectName).lib"
TargetMachine="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
@ -315,6 +319,110 @@
CommandLine="REGSVR32 /s ..\..\..\..\lib\$(ProjectName).dll"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfATL="1"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
WarningLevel="3"
TargetEnvironment="3"
GenerateStublessProxies="true"
TypeLibraryName="$(ProjectName).tlb"
OutputDirectory="..\..\..\mysterx\myssink"
HeaderFileName="$(ProjectName).h"
EnableErrorChecks="2"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="2"
FavorSizeOrSpeed="1"
OmitFramePointers="false"
AdditionalIncludeDirectories=""
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;MYSSINK_EXPORTS"
StringPooling="true"
MinimalRebuild="false"
RuntimeLibrary="0"
BufferSecurityCheck="false"
EnableFunctionLevelLinking="false"
UsePrecompiledHeader="0"
ProgramDataBaseFileName=""
WarningLevel="4"
SuppressStartupBanner="true"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="0"
CompileAs="2"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies=""
OutputFile="..\..\..\..\lib\$(ProjectName).dll"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="..\..\..\..\lib\msvc"
IgnoreDefaultLibraryNames=""
ModuleDefinitionFile="..\..\..\mysterx\myssink\$(ProjectName).def"
GenerateDebugInformation="false"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
ImportLibrary="$(OutDir)\$(ProjectName).lib"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
Description="Register $(ProjectName).dll"
CommandLine="REGSVR32 /s ..\..\..\..\lib\$(ProjectName).dll"
/>
</Configuration>
</Configurations>
<References>
</References>
@ -353,6 +461,15 @@
OutputDirectory="$(InputDir)"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCMIDLTool"
AdditionalIncludeDirectories=""
OutputDirectory="$(InputDir)"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
@ -361,6 +478,14 @@
OutputDirectory="$(InputDir)"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCMIDLTool"
OutputDirectory="$(InputDir)"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\..\..\mysterx\myssink\myssink.rc"
@ -373,6 +498,14 @@
ResourceOutputFileName="$(InputDir)\$(InputName).res"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCResourceCompilerTool"
ResourceOutputFileName="$(InputDir)\$(InputName).res"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
@ -381,6 +514,14 @@
ResourceOutputFileName="$(InputDir)\$(InputName).res"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCResourceCompilerTool"
ResourceOutputFileName="$(InputDir)\$(InputName).res"
/>
</FileConfiguration>
</File>
</Filter>
</Files>

View File

@ -5,10 +5,13 @@ EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{138CC248-8A45-436E-A4A6-E7570D7C2C0F}.Release|Win32.ActiveCfg = Release|Win32
{138CC248-8A45-436E-A4A6-E7570D7C2C0F}.Release|Win32.Build.0 = Release|Win32
{138CC248-8A45-436E-A4A6-E7570D7C2C0F}.Release|x64.ActiveCfg = Release|x64
{138CC248-8A45-436E-A4A6-E7570D7C2C0F}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -10,6 +10,9 @@
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
@ -103,6 +106,95 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="3"
TypeLibraryName="..\..\..\collects\launcher\$(ProjectName).tlb"
/>
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="2"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="1"
PreprocessorDefinitions="WIN32,NDEBUG,_WINDOWS,MRSTART"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG,MRSTART"
Culture="1033"
AdditionalIncludeDirectories="..\starters;$(NoInherit)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="user32.lib"
OutputFile="..\..\..\collects\launcher\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="..\..\..\collects\launcher\$(ProjectName).pdb"
SubSystem="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>

View File

@ -10,6 +10,9 @@
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
@ -100,6 +103,94 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfMFC="0"
UseOfATL="1"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..,..\..\racket\include,."
PreprocessorDefinitions="WIN32,_DEBUG,_WINDOWS,GC_DLL"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
CompileAs="0"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
AdditionalIncludeDirectories="..\..\mzcom,$(OutDir),$(NOINHERIT)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /DELAYLOAD:libracketxxxxxxx.dll /DELAYLOAD:libmzgcxxxxxxx.dll"
AdditionalDependencies="delayimp.lib"
OutputFile="..\..\..\$(ProjectName)CGC.exe"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="..\..\..\$(ProjectName)CGC.pdb"
SubSystem="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
@ -190,6 +281,98 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfMFC="0"
UseOfATL="1"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
/>
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="2"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="1"
AdditionalIncludeDirectories="..,..\..\racket\include,."
PreprocessorDefinitions="WIN32,NDEBUG,_WINDOWS,GC_DLL"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
CompileAs="0"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
AdditionalIncludeDirectories="..\..\mzcom,$(OutDir),$(NOINHERIT)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/DELAYLOAD:libracketxxxxxxx.dll /DELAYLOAD:libmzgcxxxxxxx.dll"
AdditionalDependencies="delayimp.lib"
OutputFile="..\..\..\$(ProjectName)CGC.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="..\..\..\$(ProjectName)CGC.pdb"
SubSystem="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="3m|Win32"
OutputDirectory="3m"
@ -281,6 +464,99 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="3m|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfMFC="0"
UseOfATL="1"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(OutDir)\$(ProjectName).tlb"
/>
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="2"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="1"
AdditionalIncludeDirectories="..,..\..\racket\include,."
PreprocessorDefinitions="WIN32,NDEBUG,_WINDOWS,GC_DLL,MZCOM_3M"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
CompileAs="0"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
AdditionalIncludeDirectories="..\..\mzcom,$(OutDir),$(NOINHERIT)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkLibraryDependencies="false"
AdditionalOptions="/DELAYLOAD:libracket3mxxxxxxx.dll"
AdditionalDependencies="delayimp.lib ..\..\..\lib\msvc\libracket3mxxxxxxx.lib"
OutputFile="..\..\..\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="..\..\..\$(ProjectName).pdb"
SubSystem="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>

View File

@ -19,34 +19,61 @@ EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
3m|Win32 = 3m|Win32
3m|x64 = 3m|x64
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{36F31050-55C6-41A3-A23E-3008EBFC1273}.3m|Win32.ActiveCfg = 3m|Win32
{36F31050-55C6-41A3-A23E-3008EBFC1273}.3m|Win32.Build.0 = 3m|Win32
{36F31050-55C6-41A3-A23E-3008EBFC1273}.3m|x64.ActiveCfg = 3m|x64
{36F31050-55C6-41A3-A23E-3008EBFC1273}.3m|x64.Build.0 = 3m|x64
{36F31050-55C6-41A3-A23E-3008EBFC1273}.Debug|Win32.ActiveCfg = Debug|Win32
{36F31050-55C6-41A3-A23E-3008EBFC1273}.Debug|Win32.Build.0 = Debug|Win32
{36F31050-55C6-41A3-A23E-3008EBFC1273}.Debug|x64.ActiveCfg = Debug|x64
{36F31050-55C6-41A3-A23E-3008EBFC1273}.Debug|x64.Build.0 = Debug|x64
{36F31050-55C6-41A3-A23E-3008EBFC1273}.Release|Win32.ActiveCfg = Release|Win32
{36F31050-55C6-41A3-A23E-3008EBFC1273}.Release|Win32.Build.0 = Release|Win32
{36F31050-55C6-41A3-A23E-3008EBFC1273}.Release|x64.ActiveCfg = Release|x64
{36F31050-55C6-41A3-A23E-3008EBFC1273}.Release|x64.Build.0 = Release|x64
{A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.3m|Win32.ActiveCfg = Release|Win32
{A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.3m|Win32.Build.0 = Release|Win32
{A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.3m|x64.ActiveCfg = Release|x64
{A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.3m|x64.Build.0 = Release|x64
{A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.Debug|Win32.ActiveCfg = Debug|Win32
{A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.Debug|Win32.Build.0 = Debug|Win32
{A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.Debug|x64.ActiveCfg = Debug|x64
{A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.Debug|x64.Build.0 = Debug|x64
{A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.Release|Win32.ActiveCfg = Release|Win32
{A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.Release|Win32.Build.0 = Release|Win32
{A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.Release|x64.ActiveCfg = Release|x64
{A6713577-7DFB-48F8-B8C1-7DB2D7C51F90}.Release|x64.Build.0 = Release|x64
{66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.3m|Win32.ActiveCfg = Release|Win32
{66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.3m|Win32.Build.0 = Release|Win32
{66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.3m|x64.ActiveCfg = Release|x64
{66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.3m|x64.Build.0 = Release|x64
{66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.Debug|Win32.ActiveCfg = Debug|Win32
{66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.Debug|Win32.Build.0 = Debug|Win32
{66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.Debug|x64.ActiveCfg = Debug|x64
{66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.Debug|x64.Build.0 = Debug|x64
{66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.Release|Win32.ActiveCfg = Release|Win32
{66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.Release|Win32.Build.0 = Release|Win32
{66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.Release|x64.ActiveCfg = Release|x64
{66548E7B-294E-40EF-B7C0-C8D6D7E6234F}.Release|x64.Build.0 = Release|x64
{7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.3m|Win32.ActiveCfg = Release|Win32
{7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.3m|Win32.Build.0 = Release|Win32
{7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.3m|x64.ActiveCfg = Release|x64
{7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.3m|x64.Build.0 = Release|x64
{7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.Debug|Win32.ActiveCfg = Debug|Win32
{7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.Debug|Win32.Build.0 = Debug|Win32
{7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.Debug|x64.ActiveCfg = Debug|x64
{7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.Debug|x64.Build.0 = Debug|x64
{7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.Release|Win32.ActiveCfg = Release|Win32
{7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.Release|Win32.Build.0 = Release|Win32
{7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.Release|x64.ActiveCfg = Release|x64
{7DB29F1E-06FD-4E39-97FF-1C7922F6901A}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -5,10 +5,13 @@ EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{838B0D91-A8B3-4716-9D37-E0E444B563D2}.Release|Win32.ActiveCfg = Release|Win32
{838B0D91-A8B3-4716-9D37-E0E444B563D2}.Release|Win32.Build.0 = Release|Win32
{838B0D91-A8B3-4716-9D37-E0E444B563D2}.Release|x64.ActiveCfg = Release|x64
{838B0D91-A8B3-4716-9D37-E0E444B563D2}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -10,6 +10,9 @@
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
@ -97,6 +100,90 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="2"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="1"
PreprocessorDefinitions="WIN32,NDEBUG,_CONSOLE,MZSTART"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG,MZSTART"
Culture="1033"
AdditionalIncludeDirectories="..\starters;$(NoInherit)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="..\..\..\collects\launcher\$(ProjectName).exe"
LinkIncremental="1"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="..\..\..\collects\launcher\$(ProjectName).pdb"
SubSystem="1"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>