C >> C++ typecasting

This commit is contained in:
Simon Rozman 2016-10-03 11:26:08 +02:00
parent 129b9c9a10
commit 3b4448dcf4
9 changed files with 39 additions and 39 deletions

View File

@ -86,7 +86,7 @@ namespace winstd
if (i >= size) if (i >= size)
break; break;
buf[num++] = ((unsigned char*)data)[i]; buf[num++] = reinterpret_cast<const unsigned char*>(data)[i];
} }
// If this is the last block, flush the buffer. // If this is the last block, flush the buffer.

View File

@ -390,7 +390,7 @@ template<class _Traits, class _Ax>
inline DWORD FormatMessage(_In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _Out_ std::basic_string<char, _Traits, _Ax> &str, _In_opt_ va_list *Arguments) inline DWORD FormatMessage(_In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _Out_ std::basic_string<char, _Traits, _Ax> &str, _In_opt_ va_list *Arguments)
{ {
std::unique_ptr<CHAR[], winstd::LocalFree_delete<CHAR[]> > lpBuffer; std::unique_ptr<CHAR[], winstd::LocalFree_delete<CHAR[]> > lpBuffer;
DWORD dwResult = FormatMessageA(dwFlags | FORMAT_MESSAGE_ALLOCATE_BUFFER, lpSource, dwMessageId, dwLanguageId, (LPSTR)&lpBuffer, 0, Arguments); DWORD dwResult = FormatMessageA(dwFlags | FORMAT_MESSAGE_ALLOCATE_BUFFER, lpSource, dwMessageId, dwLanguageId, reinterpret_cast<LPSTR>(&lpBuffer._Myptr), 0, Arguments);
if (dwResult) if (dwResult)
str.assign(lpBuffer.get(), dwResult); str.assign(lpBuffer.get(), dwResult);
return dwResult; return dwResult;
@ -401,7 +401,7 @@ template<class _Traits, class _Ax>
inline DWORD FormatMessage(_In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &str, _In_opt_ va_list *Arguments) inline DWORD FormatMessage(_In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &str, _In_opt_ va_list *Arguments)
{ {
std::unique_ptr<WCHAR[], winstd::LocalFree_delete<WCHAR[]> > lpBuffer; std::unique_ptr<WCHAR[], winstd::LocalFree_delete<WCHAR[]> > lpBuffer;
DWORD dwResult = FormatMessageW(dwFlags | FORMAT_MESSAGE_ALLOCATE_BUFFER, lpSource, dwMessageId, dwLanguageId, (LPWSTR)&lpBuffer, 0, Arguments); DWORD dwResult = FormatMessageW(dwFlags | FORMAT_MESSAGE_ALLOCATE_BUFFER, lpSource, dwMessageId, dwLanguageId, reinterpret_cast<LPWSTR>(&lpBuffer._Myptr), 0, Arguments);
if (dwResult) if (dwResult)
str.assign(lpBuffer.get(), dwResult); str.assign(lpBuffer.get(), dwResult);
return dwResult; return dwResult;

View File

@ -162,14 +162,14 @@ inline BOOL CredProtectA(_In_ BOOL fAsSelf, _In_ LPCSTR pszCredentials, _In_ DWO
DWORD dwSize = _countof(buf); DWORD dwSize = _countof(buf);
// Try with the stack buffer first. // Try with the stack buffer first.
if (CredProtectA(fAsSelf, (LPSTR)pszCredentials, cchCredentials, buf, &dwSize, ProtectionType)) { if (CredProtectA(fAsSelf, const_cast<LPSTR>(pszCredentials), cchCredentials, buf, &dwSize, ProtectionType)) {
// Copy from stack. // Copy from stack.
sProtectedCredentials.assign(buf, dwSize - 1); sProtectedCredentials.assign(buf, dwSize - 1);
return TRUE; return TRUE;
} else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) { } else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
// Allocate on heap and retry. // Allocate on heap and retry.
auto buf = std::unique_ptr<_Elem[]>(new _Elem[dwSize]); auto buf = std::unique_ptr<_Elem[]>(new _Elem[dwSize]);
if (CredProtectA(fAsSelf, (LPSTR)pszCredentials, cchCredentials, buf.get(), &dwSize, ProtectionType)) { if (CredProtectA(fAsSelf, const_cast<LPSTR>(pszCredentials), cchCredentials, buf.get(), &dwSize, ProtectionType)) {
sProtectedCredentials.assign(buf.get(), dwSize - 1); sProtectedCredentials.assign(buf.get(), dwSize - 1);
return TRUE; return TRUE;
} }
@ -186,14 +186,14 @@ inline BOOL CredProtectW(_In_ BOOL fAsSelf, _In_ LPCWSTR pszCredentials, _In_ DW
DWORD dwSize = _countof(buf); DWORD dwSize = _countof(buf);
// Try with the stack buffer first. // Try with the stack buffer first.
if (CredProtectW(fAsSelf, (LPWSTR)pszCredentials, cchCredentials, buf, &dwSize, ProtectionType)) { if (CredProtectW(fAsSelf, const_cast<LPWSTR>(pszCredentials), cchCredentials, buf, &dwSize, ProtectionType)) {
// Copy from stack. // Copy from stack.
sProtectedCredentials.assign(buf, dwSize - 1); sProtectedCredentials.assign(buf, dwSize - 1);
return TRUE; return TRUE;
} else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) { } else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
// Allocate on heap and retry. // Allocate on heap and retry.
auto buf = std::unique_ptr<_Elem[]>(new _Elem[dwSize]); auto buf = std::unique_ptr<_Elem[]>(new _Elem[dwSize]);
if (CredProtectW(fAsSelf, (LPWSTR)pszCredentials, cchCredentials, buf.get(), &dwSize, ProtectionType)) { if (CredProtectW(fAsSelf, const_cast<LPWSTR>(pszCredentials), cchCredentials, buf.get(), &dwSize, ProtectionType)) {
sProtectedCredentials.assign(buf.get(), dwSize - 1); sProtectedCredentials.assign(buf.get(), dwSize - 1);
return TRUE; return TRUE;
} }
@ -210,14 +210,14 @@ inline BOOL CredUnprotectA(_In_ BOOL fAsSelf, _In_ LPCSTR pszProtectedCredential
DWORD dwSize = _countof(buf); DWORD dwSize = _countof(buf);
// Try with the stack buffer first. // Try with the stack buffer first.
if (CredUnprotectA(fAsSelf, (LPSTR)pszProtectedCredentials, cchCredentials, buf, &dwSize)) { if (CredUnprotectA(fAsSelf, const_cast<LPSTR>(pszProtectedCredentials), cchCredentials, buf, &dwSize)) {
// Copy from stack. // Copy from stack.
sCredentials.assign(buf, dwSize); sCredentials.assign(buf, dwSize);
return TRUE; return TRUE;
} else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) { } else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
// Allocate on heap and retry. // Allocate on heap and retry.
auto buf = std::unique_ptr<_Elem[]>(new _Elem[dwSize]); auto buf = std::unique_ptr<_Elem[]>(new _Elem[dwSize]);
if (CredUnprotectA(fAsSelf, (LPSTR)pszProtectedCredentials, cchCredentials, buf.get(), &dwSize)) { if (CredUnprotectA(fAsSelf, const_cast<LPSTR>(pszProtectedCredentials), cchCredentials, buf.get(), &dwSize)) {
sCredentials.assign(buf.get(), dwSize); sCredentials.assign(buf.get(), dwSize);
return TRUE; return TRUE;
} }
@ -234,14 +234,14 @@ inline BOOL CredUnprotectW(_In_ BOOL fAsSelf, _In_ LPCWSTR pszProtectedCredentia
DWORD dwSize = _countof(buf); DWORD dwSize = _countof(buf);
// Try with the stack buffer first. // Try with the stack buffer first.
if (CredUnprotectW(fAsSelf, (LPWSTR)pszProtectedCredentials, cchCredentials, buf, &dwSize)) { if (CredUnprotectW(fAsSelf, const_cast<LPWSTR>(pszProtectedCredentials), cchCredentials, buf, &dwSize)) {
// Copy from stack. // Copy from stack.
sCredentials.assign(buf, dwSize); sCredentials.assign(buf, dwSize);
return TRUE; return TRUE;
} else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) { } else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
// Allocate on heap and retry. // Allocate on heap and retry.
auto buf = std::unique_ptr<_Elem[]>(new _Elem[dwSize]); auto buf = std::unique_ptr<_Elem[]>(new _Elem[dwSize]);
if (CredUnprotectW(fAsSelf, (LPWSTR)pszProtectedCredentials, cchCredentials, buf.get(), &dwSize)) { if (CredUnprotectW(fAsSelf, const_cast<LPWSTR>(pszProtectedCredentials), cchCredentials, buf.get(), &dwSize)) {
sCredentials.assign(buf.get(), dwSize); sCredentials.assign(buf.get(), dwSize);
return TRUE; return TRUE;
} }

View File

@ -565,7 +565,7 @@ namespace winstd
/// \param[in] prop Session properties /// \param[in] prop Session properties
/// ///
inline event_session(_In_opt_ handle_type h, _In_ const EVENT_TRACE_PROPERTIES *prop) : inline event_session(_In_opt_ handle_type h, _In_ const EVENT_TRACE_PROPERTIES *prop) :
m_prop((EVENT_TRACE_PROPERTIES*)new char[prop->Wnode.BufferSize]), m_prop(reinterpret_cast<EVENT_TRACE_PROPERTIES*>(new char[prop->Wnode.BufferSize])),
handle(h) handle(h)
{ {
memcpy(m_prop.get(), prop, prop->Wnode.BufferSize); memcpy(m_prop.get(), prop, prop->Wnode.BufferSize);
@ -626,7 +626,7 @@ namespace winstd
inline LPCTSTR name() const inline LPCTSTR name() const
{ {
const EVENT_TRACE_PROPERTIES *prop = m_prop.get(); const EVENT_TRACE_PROPERTIES *prop = m_prop.get();
return (LPCTSTR)((const char*)prop + prop->LoggerNameOffset); return reinterpret_cast<LPCTSTR>(reinterpret_cast<const char*>(prop) + prop->LoggerNameOffset);
} }
@ -657,7 +657,7 @@ namespace winstd
inline ULONG create(_In_ LPCTSTR SessionName, _In_ const EVENT_TRACE_PROPERTIES *Properties) inline ULONG create(_In_ LPCTSTR SessionName, _In_ const EVENT_TRACE_PROPERTIES *Properties)
{ {
handle_type h; handle_type h;
std::unique_ptr<EVENT_TRACE_PROPERTIES> prop((EVENT_TRACE_PROPERTIES*)new char[Properties->Wnode.BufferSize]); std::unique_ptr<EVENT_TRACE_PROPERTIES> prop(reinterpret_cast<EVENT_TRACE_PROPERTIES*>(new char[Properties->Wnode.BufferSize]));
memcpy(prop.get(), Properties, Properties->Wnode.BufferSize); memcpy(prop.get(), Properties, Properties->Wnode.BufferSize);
ULONG ulRes = StartTrace(&h, SessionName, prop.get()); ULONG ulRes = StartTrace(&h, SessionName, prop.get());
if (ulRes == ERROR_SUCCESS) if (ulRes == ERROR_SUCCESS)
@ -1067,12 +1067,12 @@ inline ULONG TdhGetEventInformation(_In_ PEVENT_RECORD pEvent, _In_ ULONG TdhCon
ulResult = TdhGetEventInformation(pEvent, TdhContextCount, pTdhContext, (PTRACE_EVENT_INFO)szBuffer, &ulSize); ulResult = TdhGetEventInformation(pEvent, TdhContextCount, pTdhContext, (PTRACE_EVENT_INFO)szBuffer, &ulSize);
if (ulResult == ERROR_SUCCESS) { if (ulResult == ERROR_SUCCESS) {
// Copy from stack. // Copy from stack.
info.reset((PTRACE_EVENT_INFO)new char[ulSize]); info.reset(reinterpret_cast<PTRACE_EVENT_INFO>(new char[ulSize]));
memcpy(info.get(), szBuffer, ulSize); memcpy(info.get(), szBuffer, ulSize);
return ERROR_SUCCESS; return ERROR_SUCCESS;
} else if (ulResult == ERROR_INSUFFICIENT_BUFFER) { } else if (ulResult == ERROR_INSUFFICIENT_BUFFER) {
// Create buffer on heap and retry. // Create buffer on heap and retry.
info.reset((PTRACE_EVENT_INFO)new char[ulSize]); info.reset(reinterpret_cast<PTRACE_EVENT_INFO>(new char[ulSize]));
return TdhGetEventInformation(pEvent, TdhContextCount, pTdhContext, info.get(), &ulSize); return TdhGetEventInformation(pEvent, TdhContextCount, pTdhContext, info.get(), &ulSize);
} }
@ -1089,12 +1089,12 @@ inline ULONG TdhGetEventMapInformation(_In_ PEVENT_RECORD pEvent, _In_ LPWSTR pM
ulResult = TdhGetEventMapInformation(pEvent, pMapName, (PEVENT_MAP_INFO)szBuffer, &ulSize); ulResult = TdhGetEventMapInformation(pEvent, pMapName, (PEVENT_MAP_INFO)szBuffer, &ulSize);
if (ulResult == ERROR_SUCCESS) { if (ulResult == ERROR_SUCCESS) {
// Copy from stack. // Copy from stack.
info.reset((PEVENT_MAP_INFO)new char[ulSize]); info.reset(reinterpret_cast<PEVENT_MAP_INFO>(new char[ulSize]));
memcpy(info.get(), szBuffer, ulSize); memcpy(info.get(), szBuffer, ulSize);
return ERROR_SUCCESS; return ERROR_SUCCESS;
} else if (ulResult == ERROR_INSUFFICIENT_BUFFER) { } else if (ulResult == ERROR_INSUFFICIENT_BUFFER) {
// Create buffer on heap and retry. // Create buffer on heap and retry.
info.reset((PEVENT_MAP_INFO)new char[ulSize]); info.reset(reinterpret_cast<PEVENT_MAP_INFO>(new char[ulSize]));
return TdhGetEventMapInformation(pEvent, pMapName, info.get(), &ulSize); return TdhGetEventMapInformation(pEvent, pMapName, info.get(), &ulSize);
} }
@ -1112,7 +1112,7 @@ inline ULONG TdhGetProperty(_In_ PEVENT_RECORD pEvent, _In_ ULONG TdhContextCoun
if (ulResult == ERROR_SUCCESS) { if (ulResult == ERROR_SUCCESS) {
// Query property value. // Query property value.
aData.resize((ulSize + sizeof(_Ty) - 1) / sizeof(_Ty)); aData.resize((ulSize + sizeof(_Ty) - 1) / sizeof(_Ty));
ulResult = TdhGetProperty(pEvent, TdhContextCount, pTdhContext, PropertyDataCount, pPropertyData, ulSize, (LPBYTE)aData.data()); ulResult = TdhGetProperty(pEvent, TdhContextCount, pTdhContext, PropertyDataCount, pPropertyData, ulSize, reinterpret_cast<LPBYTE>(aData.data()));
} }
return ulResult; return ulResult;

View File

@ -78,7 +78,7 @@ namespace winstd
// Convert data character by character. // Convert data character by character.
for (size_t i = 0; i < size; i++) { for (size_t i = 0; i < size; i++) {
unsigned char unsigned char
x = ((unsigned char*)data)[i], x = reinterpret_cast<const unsigned char*>(data)[i],
x_h = ((x & 0xf0) >> 4), x_h = ((x & 0xf0) >> 4),
x_l = ((x & 0x0f) ); x_l = ((x & 0x0f) );

View File

@ -293,7 +293,7 @@ inline UINT MsiRecordReadStream(_In_ MSIHANDLE hRecord, _In_ unsigned int iField
uiResult = ::MsiRecordReadStream(hRecord, iField, NULL, &dwSize); uiResult = ::MsiRecordReadStream(hRecord, iField, NULL, &dwSize);
if (uiResult == ERROR_SUCCESS) { if (uiResult == ERROR_SUCCESS) {
binData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty)); binData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
return ::MsiRecordReadStream(hRecord, iField, (char*)binData.data(), &dwSize); return ::MsiRecordReadStream(hRecord, iField, reinterpret_cast<char*>(binData.data()), &dwSize);
} else { } else {
// Return error code. // Return error code.
return uiResult; return uiResult;

View File

@ -255,7 +255,7 @@ namespace winstd
handle_type h = new CtxtHandle; handle_type h = new CtxtHandle;
ULONG attr; ULONG attr;
TimeStamp exp; TimeStamp exp;
SECURITY_STATUS res = InitializeSecurityContext(phCredential, NULL, (LPTSTR)pszTargetName, fContextReq, 0, TargetDataRep, pInput, 0, h, pOutput, &attr, &exp); SECURITY_STATUS res = InitializeSecurityContext(phCredential, NULL, const_cast<LPTSTR>(pszTargetName), fContextReq, 0, TargetDataRep, pInput, 0, h, pOutput, &attr, &exp);
if (SUCCEEDED(res)) { if (SUCCEEDED(res)) {
attach(h); attach(h);
m_attrib = attr; m_attrib = attr;
@ -282,7 +282,7 @@ namespace winstd
_In_opt_ PSecBufferDesc pInput, _In_opt_ PSecBufferDesc pInput,
_Inout_opt_ PSecBufferDesc pOutput) _Inout_opt_ PSecBufferDesc pOutput)
{ {
return InitializeSecurityContext(phCredential, m_h, (LPTSTR)pszTargetName, fContextReq, 0, TargetDataRep, pInput, 0, NULL, pOutput, &m_attrib, &m_expires); return InitializeSecurityContext(phCredential, m_h, const_cast<LPTSTR>(pszTargetName), fContextReq, 0, TargetDataRep, pInput, 0, NULL, pOutput, &m_attrib, &m_expires);
} }
protected: protected:

View File

@ -945,10 +945,10 @@ inline LSTATUS RegQueryStringValue(_In_ HKEY hReg, _In_z_ LPCSTR pszName, _Out_
if (dwType == REG_SZ || dwType == REG_MULTI_SZ) { if (dwType == REG_SZ || dwType == REG_MULTI_SZ) {
// The value is REG_SZ or REG_MULTI_SZ. // The value is REG_SZ or REG_MULTI_SZ.
dwSize /= sizeof(CHAR); dwSize /= sizeof(CHAR);
sValue.assign((LPCSTR)aStackBuffer, dwSize && ((LPCSTR)aStackBuffer)[dwSize - 1] == 0 ? dwSize - 1 : dwSize); sValue.assign(reinterpret_cast<LPCSTR>(aStackBuffer), dwSize && reinterpret_cast<LPCSTR>(aStackBuffer)[dwSize - 1] == 0 ? dwSize - 1 : dwSize);
} else if (dwType == REG_EXPAND_SZ) { } else if (dwType == REG_EXPAND_SZ) {
// The value is REG_EXPAND_SZ. Expand it from stack buffer. // The value is REG_EXPAND_SZ. Expand it from stack buffer.
if (::ExpandEnvironmentStringsA((LPCSTR)aStackBuffer, sValue) == 0) if (::ExpandEnvironmentStringsA(reinterpret_cast<LPCSTR>(aStackBuffer), sValue) == 0)
lResult = ::GetLastError(); lResult = ::GetLastError();
} else { } else {
// The value is not a string type. // The value is not a string type.
@ -958,7 +958,7 @@ inline LSTATUS RegQueryStringValue(_In_ HKEY hReg, _In_z_ LPCSTR pszName, _Out_
if (dwType == REG_SZ || dwType == REG_MULTI_SZ) { if (dwType == REG_SZ || dwType == REG_MULTI_SZ) {
// The value is REG_SZ or REG_MULTI_SZ. Read it now. // The value is REG_SZ or REG_MULTI_SZ. Read it now.
auto szBuffer = std::unique_ptr<CHAR[]>(new CHAR[dwSize / sizeof(CHAR)]); auto szBuffer = std::unique_ptr<CHAR[]>(new CHAR[dwSize / sizeof(CHAR)]);
if ((lResult = ::RegQueryValueExA(hReg, pszName, NULL, NULL, (LPBYTE)szBuffer.get(), &dwSize)) == ERROR_SUCCESS) { if ((lResult = ::RegQueryValueExA(hReg, pszName, NULL, NULL, reinterpret_cast<LPBYTE>(szBuffer.get()), &dwSize)) == ERROR_SUCCESS) {
dwSize /= sizeof(CHAR); dwSize /= sizeof(CHAR);
sValue.assign(szBuffer.get(), dwSize && szBuffer[dwSize - 1] == 0 ? dwSize - 1 : dwSize); sValue.assign(szBuffer.get(), dwSize && szBuffer[dwSize - 1] == 0 ? dwSize - 1 : dwSize);
} else } else
@ -966,7 +966,7 @@ inline LSTATUS RegQueryStringValue(_In_ HKEY hReg, _In_z_ LPCSTR pszName, _Out_
} else if (dwType == REG_EXPAND_SZ) { } else if (dwType == REG_EXPAND_SZ) {
// The value is REG_EXPAND_SZ. Read it and expand environment variables. // The value is REG_EXPAND_SZ. Read it and expand environment variables.
auto szBuffer = std::unique_ptr<CHAR[]>(new CHAR[dwSize / sizeof(CHAR)]); auto szBuffer = std::unique_ptr<CHAR[]>(new CHAR[dwSize / sizeof(CHAR)]);
if ((lResult = ::RegQueryValueExA(hReg, pszName, NULL, NULL, (LPBYTE)szBuffer.get(), &dwSize)) == ERROR_SUCCESS) { if ((lResult = ::RegQueryValueExA(hReg, pszName, NULL, NULL, reinterpret_cast<LPBYTE>(szBuffer.get()), &dwSize)) == ERROR_SUCCESS) {
if (::ExpandEnvironmentStringsA(szBuffer.get(), sValue) == 0) if (::ExpandEnvironmentStringsA(szBuffer.get(), sValue) == 0)
lResult = ::GetLastError(); lResult = ::GetLastError();
} else } else
@ -994,10 +994,10 @@ inline LSTATUS RegQueryStringValue(_In_ HKEY hReg, _In_z_ LPCWSTR pszName, _Out_
if (dwType == REG_SZ || dwType == REG_MULTI_SZ) { if (dwType == REG_SZ || dwType == REG_MULTI_SZ) {
// The value is REG_SZ or REG_MULTI_SZ. // The value is REG_SZ or REG_MULTI_SZ.
dwSize /= sizeof(WCHAR); dwSize /= sizeof(WCHAR);
sValue.assign((LPCWSTR)aStackBuffer, dwSize && ((LPCWSTR)aStackBuffer)[dwSize - 1] == 0 ? dwSize - 1 : dwSize); sValue.assign(reinterpret_cast<LPCWSTR>(aStackBuffer), dwSize && reinterpret_cast<LPCWSTR>(aStackBuffer)[dwSize - 1] == 0 ? dwSize - 1 : dwSize);
} else if (dwType == REG_EXPAND_SZ) { } else if (dwType == REG_EXPAND_SZ) {
// The value is REG_EXPAND_SZ. Expand it from stack buffer. // The value is REG_EXPAND_SZ. Expand it from stack buffer.
if (::ExpandEnvironmentStringsW((LPCWSTR)aStackBuffer, sValue) == 0) if (::ExpandEnvironmentStringsW(reinterpret_cast<LPCWSTR>(aStackBuffer), sValue) == 0)
lResult = ::GetLastError(); lResult = ::GetLastError();
} else { } else {
// The value is not a string type. // The value is not a string type.
@ -1007,7 +1007,7 @@ inline LSTATUS RegQueryStringValue(_In_ HKEY hReg, _In_z_ LPCWSTR pszName, _Out_
if (dwType == REG_SZ || dwType == REG_MULTI_SZ) { if (dwType == REG_SZ || dwType == REG_MULTI_SZ) {
// The value is REG_SZ or REG_MULTI_SZ. Read it now. // The value is REG_SZ or REG_MULTI_SZ. Read it now.
auto szBuffer = std::unique_ptr<WCHAR[]>(new WCHAR[dwSize / sizeof(WCHAR)]); auto szBuffer = std::unique_ptr<WCHAR[]>(new WCHAR[dwSize / sizeof(WCHAR)]);
if ((lResult = ::RegQueryValueExW(hReg, pszName, NULL, NULL, (LPBYTE)szBuffer.get(), &dwSize)) == ERROR_SUCCESS) { if ((lResult = ::RegQueryValueExW(hReg, pszName, NULL, NULL, reinterpret_cast<LPBYTE>(szBuffer.get()), &dwSize)) == ERROR_SUCCESS) {
dwSize /= sizeof(WCHAR); dwSize /= sizeof(WCHAR);
sValue.assign(szBuffer.get(), dwSize && szBuffer[dwSize - 1] == 0 ? dwSize - 1 : dwSize); sValue.assign(szBuffer.get(), dwSize && szBuffer[dwSize - 1] == 0 ? dwSize - 1 : dwSize);
} else } else
@ -1015,7 +1015,7 @@ inline LSTATUS RegQueryStringValue(_In_ HKEY hReg, _In_z_ LPCWSTR pszName, _Out_
} else if (dwType == REG_EXPAND_SZ) { } else if (dwType == REG_EXPAND_SZ) {
// The value is REG_EXPAND_SZ. Read it and expand environment variables. // The value is REG_EXPAND_SZ. Read it and expand environment variables.
auto szBuffer = std::unique_ptr<WCHAR[]>(new WCHAR[dwSize / sizeof(WCHAR)]); auto szBuffer = std::unique_ptr<WCHAR[]>(new WCHAR[dwSize / sizeof(WCHAR)]);
if ((lResult = ::RegQueryValueExW(hReg, pszName, NULL, NULL, (LPBYTE)szBuffer.get(), &dwSize)) == ERROR_SUCCESS) { if ((lResult = ::RegQueryValueExW(hReg, pszName, NULL, NULL, reinterpret_cast<LPBYTE>(szBuffer.get()), &dwSize)) == ERROR_SUCCESS) {
if (::ExpandEnvironmentStringsW(szBuffer.get(), sValue) == 0) if (::ExpandEnvironmentStringsW(szBuffer.get(), sValue) == 0)
lResult = ::GetLastError(); lResult = ::GetLastError();
} else } else
@ -1187,7 +1187,7 @@ inline int WINAPI LoadString(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_
{ {
// Get read-only pointer to string resource. // Get read-only pointer to string resource.
LPCSTR pszStr; LPCSTR pszStr;
int i = LoadStringA(hInstance, uID, (LPSTR)&pszStr, 0); int i = LoadStringA(hInstance, uID, reinterpret_cast<LPSTR>(&pszStr), 0);
if (i) { if (i) {
sBuffer.assign(pszStr, i); sBuffer.assign(pszStr, i);
return i; return i;
@ -1201,7 +1201,7 @@ inline int WINAPI LoadString(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_
{ {
// Get read-only pointer to string resource. // Get read-only pointer to string resource.
LPCWSTR pszStr; LPCWSTR pszStr;
int i = LoadStringW(hInstance, uID, (LPWSTR)&pszStr, 0); int i = LoadStringW(hInstance, uID, reinterpret_cast<LPWSTR>(&pszStr), 0);
if (i) { if (i) {
sBuffer.assign(pszStr, i); sBuffer.assign(pszStr, i);
return i; return i;

View File

@ -37,17 +37,17 @@ const winstd::event_data winstd::event_data::blank;
winstd::event_rec::~event_rec() winstd::event_rec::~event_rec()
{ {
if (ExtendedData) if (ExtendedData)
delete (unsigned char*)ExtendedData; delete reinterpret_cast<unsigned char*>(ExtendedData);
if (UserData) if (UserData)
delete (unsigned char*)UserData; delete reinterpret_cast<unsigned char*>(UserData);
} }
void winstd::event_rec::set_extended_data(_In_ USHORT count, _In_count_(count) const EVENT_HEADER_EXTENDED_DATA_ITEM *data) void winstd::event_rec::set_extended_data(_In_ USHORT count, _In_count_(count) const EVENT_HEADER_EXTENDED_DATA_ITEM *data)
{ {
if (ExtendedData) if (ExtendedData)
delete (unsigned char*)ExtendedData; delete reinterpret_cast<unsigned char*>(ExtendedData);
set_extended_data_internal(count, data); set_extended_data_internal(count, data);
} }
@ -56,7 +56,7 @@ void winstd::event_rec::set_extended_data(_In_ USHORT count, _In_count_(count) c
void winstd::event_rec::set_user_data(_In_ USHORT size, _In_bytecount_(size) LPCVOID data) void winstd::event_rec::set_user_data(_In_ USHORT size, _In_bytecount_(size) LPCVOID data)
{ {
if (UserData) if (UserData)
delete (unsigned char*)UserData; delete reinterpret_cast<unsigned char*>(UserData);
set_user_data_internal(size, data); set_user_data_internal(size, data);
} }
@ -73,13 +73,13 @@ void winstd::event_rec::set_extended_data_internal(_In_ USHORT count, _In_count_
data_size += data[i].DataSize; data_size += data[i].DataSize;
// Allocate memory for extended data. // Allocate memory for extended data.
ExtendedData = (EVENT_HEADER_EXTENDED_DATA_ITEM*)(new unsigned char[sizeof(EVENT_HEADER_EXTENDED_DATA_ITEM)*count + data_size]); ExtendedData = reinterpret_cast<EVENT_HEADER_EXTENDED_DATA_ITEM*>(new unsigned char[sizeof(EVENT_HEADER_EXTENDED_DATA_ITEM)*count + data_size]);
// Bulk-copy extended data descriptors. // Bulk-copy extended data descriptors.
memcpy(ExtendedData, data, sizeof(EVENT_HEADER_EXTENDED_DATA_ITEM) * count); memcpy(ExtendedData, data, sizeof(EVENT_HEADER_EXTENDED_DATA_ITEM) * count);
// Copy the data. // Copy the data.
unsigned char *ptr = (unsigned char*)(ExtendedData + count); unsigned char *ptr = reinterpret_cast<unsigned char*>(ExtendedData + count);
for (size_t i = 0; i < count; i++) { for (size_t i = 0; i < count; i++) {
if (data[i].DataSize) { if (data[i].DataSize) {
memcpy(ptr, (void*)(data[i].DataPtr), data[i].DataSize); memcpy(ptr, (void*)(data[i].DataPtr), data[i].DataSize);