diff options
author | Koundinya Veluri <kouvel@microsoft.com> | 2015-09-03 22:06:56 -0700 |
---|---|---|
committer | Koundinya Veluri <kouvel@microsoft.com> | 2015-09-09 13:12:36 -0700 |
commit | 2f042a1212137e558fca716dbb92197f7a770e55 (patch) | |
tree | 1c081af67ef569a8b328e65e73098ee4f4475228 /src/vm/assemblynative.cpp | |
parent | 508454cc76e1bd35c07521ebfc73617c00c5bcb3 (diff) | |
download | coreclr-2f042a1212137e558fca716dbb92197f7a770e55.tar.gz coreclr-2f042a1212137e558fca716dbb92197f7a770e55.tar.bz2 coreclr-2f042a1212137e558fca716dbb92197f7a770e55.zip |
Add AssemblyExtensions.TryGetRawMetadata to the System.Reflection.Metadata namespace.
This patch contains has the necessary changes in coreclr and mscorlib. Tests will be added separately, once the new API is
published and can be consumed.
Part of dotnet/corefx#2768
Diffstat (limited to 'src/vm/assemblynative.cpp')
-rw-r--r-- | src/vm/assemblynative.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/vm/assemblynative.cpp b/src/vm/assemblynative.cpp index 40df0068c5..5b4e0c5347 100644 --- a/src/vm/assemblynative.cpp +++ b/src/vm/assemblynative.cpp @@ -2614,3 +2614,29 @@ INT_PTR QCALLTYPE AssemblyNative::GetLoadContextForAssembly(QCall::AssemblyHandl return ptrManagedAssemblyLoadContext; } #endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER) + +// static +BOOL QCALLTYPE AssemblyNative::InternalTryGetRawMetadata( + QCall::AssemblyHandle assembly, + UINT8 **blobRef, + INT32 *lengthRef) +{ + QCALL_CONTRACT; + + PTR_CVOID metadata = nullptr; + + BEGIN_QCALL; + + _ASSERTE(assembly != nullptr); + _ASSERTE(blobRef != nullptr); + _ASSERTE(lengthRef != nullptr); + + static_assert_no_msg(sizeof(*lengthRef) == sizeof(COUNT_T)); + metadata = assembly->GetFile()->GetLoadedMetadata(reinterpret_cast<COUNT_T *>(lengthRef)); + *blobRef = reinterpret_cast<UINT8 *>(const_cast<PTR_VOID>(metadata)); + _ASSERTE(*lengthRef >= 0); + + END_QCALL; + + return metadata != nullptr; +} |