unsigned int /* ie, BOOL */ GetHalSystemInfo(HalSystemInfo& systemInfo) // placate some compilers that handle BOOL unconventionally { #if defined(HAL_REDUCESIZE) // No config update. return FALSE; #else // MfReleaseInfo: systemInfo.m_releaseInfo.version.usMajor = VERSION_MAJOR; systemInfo.m_releaseInfo.version.usMinor = VERSION_MINOR; systemInfo.m_releaseInfo.version.usBuild = VERSION_BUILD; systemInfo.m_releaseInfo.version.usRevision = VERSION_REVISION; const size_t len = sizeof(systemInfo.m_releaseInfo.infoString); #if defined(PLATFORM_SH) #undef OEMSTR(str) #define OEMSTR(str) # str hal_strncpy_s ((char*)&systemInfo.m_releaseInfo.infoString[0], len, OEMSTR(OEMSYSTEMINFOSTRING), len-1 ); #undef OEMSTR #else hal_strncpy_s ((char*)&systemInfo.m_releaseInfo.infoString[0], len, OEMSYSTEMINFOSTRING, len-1 ); #endif // OEM_MODEL_SKU: memcpy((void*)&(systemInfo.m_OemModelInfo), (void*)&(g_ConfigurationSector.OEM_Model_SKU), sizeof(OEM_MODEL_SKU)); // OEM_SERIAL_NUMBERS: memcpy((void*)&(systemInfo.m_OemSerialNumbers), (void*)&(g_ConfigurationSector.OemSerialNumbers), sizeof(OEM_SERIAL_NUMBERS)); return TRUE; #endif }
void MfReleaseInfo::Init( MfReleaseInfo& mfReleaseInfo, UINT16 major, UINT16 minor, UINT16 build, UINT16 revision, const char *info, size_t infoLen ) { MFVersion::Init( mfReleaseInfo.version, major, minor, build, revision ); mfReleaseInfo.infoString[ 0 ] = 0; if ( NULL != info && infoLen > 0 ) { const size_t len = MIN(infoLen, sizeof(mfReleaseInfo.infoString)-1); hal_strncpy_s( (char*)&mfReleaseInfo.infoString[0], sizeof(mfReleaseInfo.infoString), info, len ); } }
bool Initialize( LPCSTR originalName ) { if(!originalName) return false; UINT32 nameLength = hal_strlen_s( originalName ); if(nameLength == 0 || nameLength >= FS_NAME_MAXLENGTH) { return false; } hal_strncpy_s( nextAvailableName, FS_NAME_MAXLENGTH, originalName, nameLength ); iteration = 0; return true; }
HRESULT Library_corlib_native_System_Text_UTF8Encoding::Helper__GetChars(CLR_RT_StackFrame& stack, bool fIndexed) { NATIVE_PROFILE_CLR_CORE(); TINYCLR_HEADER(); LPSTR szText; CLR_RT_HeapBlock ref; ref.SetObjectReference( NULL ); CLR_RT_ProtectFromGC gc( ref ); CLR_RT_HeapBlock_Array* pArrayBytes = stack.Arg1().DereferenceArray(); CLR_INT32 byteIdx = fIndexed ? stack.Arg2().NumericByRef().s4 : 0; CLR_INT32 byteCnt = fIndexed ? stack.Arg3().NumericByRef().s4 : pArrayBytes->m_numOfElements; CLR_RT_HeapBlock_Array* pArrayBytesCopy; CLR_RT_HeapBlock_Array* arrTmp; int cBytesCopy; FAULT_ON_NULL(pArrayBytes); _ASSERTE(pArrayBytes->m_typeOfElement == DATATYPE_U1); if((byteIdx + byteCnt) > (CLR_INT32)pArrayBytes->m_numOfElements) TINYCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); cBytesCopy = byteCnt+1; /* Copy the array to a temporary buffer to create a zero-terminated string */ TINYCLR_CHECK_HRESULT( CLR_RT_HeapBlock_Array::CreateInstance( ref, cBytesCopy, g_CLR_RT_WellKnownTypes.m_UInt8 )); pArrayBytesCopy = ref.DereferenceArray(); szText = (LPSTR)pArrayBytesCopy->GetFirstElement(); hal_strncpy_s( szText, cBytesCopy, (LPSTR)pArrayBytes->GetElement(byteIdx), byteCnt ); TINYCLR_CHECK_HRESULT(Library_corlib_native_System_String::ConvertToCharArray( szText, stack.PushValueAndClear(), arrTmp, 0, -1 )); TINYCLR_NOCLEANUP(); }