forked from Byrom90/XeUnshackle
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUtils.h
More file actions
135 lines (107 loc) · 2.4 KB
/
Copy pathUtils.h
File metadata and controls
135 lines (107 loc) · 2.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#pragma once
#include "stdafx.h"
VOID cprintf(const char* s, ...);
BOOL MountUsb();
BOOL MountHdd();
BOOL FileExists(PCHAR lpFileName);
class MemoryBuffer
{
public:
MemoryBuffer(DWORD dwSize = 512)
{
m_pBuffer = NULL;
m_dwDataLength = 0;
m_dwBufferSize = 0;
if ((dwSize < UINT_MAX) && (dwSize != 0))
{
m_pBuffer = (BYTE*)malloc(dwSize + 1); // one more char, in case when using string funcions
if (m_pBuffer)
{
m_dwBufferSize = dwSize;
m_pBuffer[0] = 0;
}
}
};
~MemoryBuffer()
{
if (m_pBuffer)
free(m_pBuffer);
m_pBuffer = NULL;
m_dwDataLength = 0;
m_dwBufferSize = 0;
};
// Add chunk of memory to buffer
BOOL Add(const void* p, DWORD dwSize)
{
if (CheckSize(dwSize))
{
memcpy(m_pBuffer + m_dwDataLength, p, dwSize);
m_dwDataLength += dwSize;
*(m_pBuffer + m_dwDataLength) = 0; // fill end zero
return TRUE;
}
else
{
return FALSE;
}
};
// Get the data in buffer
BYTE* GetData() const
{
return m_pBuffer;
};
// Get the length of data in buffer
DWORD GetDataLength() const
{
return m_dwDataLength;
};
// Rewind the data pointer to the begining
VOID Rewind()
{
m_dwDataLength = 0;
m_pBuffer[0] = 0;
};
// Automatically adjust increase buffer size if necessary
BOOL CheckSize(DWORD dwSize)
{
if (m_dwBufferSize >= (m_dwDataLength + dwSize))
{
return TRUE; // Enough space
}
else
{
// Try to double it
DWORD dwNewSize = max(m_dwDataLength + dwSize, m_dwBufferSize * 2);
BYTE* pNewBuffer = (UCHAR*)realloc(m_pBuffer, dwNewSize + 1); // one more char
if (pNewBuffer)
{
m_pBuffer = pNewBuffer;
m_dwBufferSize = dwNewSize;
return TRUE;
}
else
{
// Failed
return FALSE;
}
}
}
private:
BYTE* m_pBuffer;
DWORD m_dwDataLength;
DWORD m_dwBufferSize;
};
BOOL CReadFile(const CHAR* FileName, MemoryBuffer& pBuffer);
BOOL CWriteFile(const CHAR* FilePath, const VOID* Data, DWORD Size);
DWORD ApplyPatches(CHAR* FilePath, const VOID* DefaultPatches = NULL);
VOID ShowErrorAndExit(int Stage);
VOID ShowNotify(PWCHAR NotifyText);
VOID LaunchTitle(LPCSTR szLaunchPath, LPCSTR szMountPath = NULL, LPCSTR szCmdLine = NULL, DWORD dwFlags = 0x10);
VOID RelaunchApp(); // Relaunch this app
string GetMoboByHWFlags();
extern BOOL DisableButtons;
VOID Dump1blRomToFile();
VOID SaveConsoleDataToFile();
VOID BackupOrigMAC();
VOID SaveAutoStart(DOUBLE timerValue);
DOUBLE LoadAutoStart();