diff --git a/eng/Subsets.props b/eng/Subsets.props
index 393d13c0c5a77a..eca56d981e12c2 100644
--- a/eng/Subsets.props
+++ b/eng/Subsets.props
@@ -182,6 +182,7 @@
+
@@ -409,6 +410,11 @@
Test="true" Category="tools"/>
+
+
+
+
diff --git a/eng/native/configurecompiler.cmake b/eng/native/configurecompiler.cmake
index c5fa2f7db88305..3ec98ad9be3cd5 100644
--- a/eng/native/configurecompiler.cmake
+++ b/eng/native/configurecompiler.cmake
@@ -60,6 +60,7 @@ if (MSVC)
define_property(TARGET PROPERTY CLR_EH_CONTINUATION INHERITED BRIEF_DOCS "Controls the /guard:ehcont flag presence" FULL_DOCS "Set this property to ON or OFF to indicate if the /guard:ehcont compiler flag should be present")
define_property(TARGET PROPERTY CLR_EH_OPTION INHERITED BRIEF_DOCS "Defines the value of the /EH option" FULL_DOCS "Set this property to one of the valid /EHxx options (/EHa, /EHsc, /EHa-, ...)")
define_property(TARGET PROPERTY MSVC_WARNING_LEVEL INHERITED BRIEF_DOCS "Define the warning level for the /Wn option" FULL_DOCS "Set this property to one of the valid /Wn options (/W0, /W1, /W2, /W3, /W4)")
+ define_property(TARGET PROPERTY SET_SOURCE_CHARSET INHERITED BRIEF_DOCS "Add the /source-charset option" FULL_DOCS "Set this property to add the /source-charset:utf8 option")
set_property(GLOBAL PROPERTY CLR_CONTROL_FLOW_GUARD ON)
@@ -881,7 +882,8 @@ if (MSVC)
add_compile_options($<$:/Zi>) # enable debugging information
add_compile_options($<$:/ZH:SHA_256>) # use SHA256 for generating hashes of compiler processed source files.
- add_compile_options($<$:/source-charset:utf-8>) # Force MSVC to compile source as UTF-8.
+ set_property(GLOBAL PROPERTY SET_SOURCE_CHARSET ON)
+ add_compile_options($<$>,$>:/source-charset:utf-8>) # Force MSVC to compile source as UTF-8.
if (CLR_CMAKE_HOST_ARCH_I386)
add_compile_options($<$:/Gz>)
diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml
index 2e68a43af682ef..40995100964d71 100644
--- a/eng/pipelines/runtime.yml
+++ b/eng/pipelines/runtime.yml
@@ -692,9 +692,19 @@ extends:
jobParameters:
timeoutInMinutes: 120
nameSuffix: CLR_Tools_Tests
- buildArgs: -s clr.aot+clr.iltools+libs.sfx+clr.toolstests+tools.cdacreadertests -c $(_BuildConfig) -test
+ buildArgs: -s clr.aot+clr.iltools+libs.sfx+clr.toolstests+tools.cdacreadertests+tools.nativetests -c $(_BuildConfig) -test
enablePublishTestResults: true
testResultsFormat: 'xunit'
+ postBuildSteps:
+ - task: PublishTestResults@2
+ displayName: 'Publish CTest Results'
+ inputs:
+ testResultsFormat: 'CTest'
+ testResultsFiles: '*.ctestxml'
+ searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)'
+ testRunTitle: 'CLR_Tools_Tests-$(_BuildConfig)-ctest'
+ continueOnError: true
+ condition: always()
# We want to run AOT tests when illink changes because there's share code and tests from illink which are used by AOT
condition: >-
or(
diff --git a/src/coreclr/CMakeLists.txt b/src/coreclr/CMakeLists.txt
index 107859ec58dc5b..9bab10778da74a 100644
--- a/src/coreclr/CMakeLists.txt
+++ b/src/coreclr/CMakeLists.txt
@@ -125,10 +125,17 @@ add_subdirectory(pal/prebuilt/inc)
set(EP_GENERATED_HEADER_PATH "${GENERATED_INCLUDE_DIR}")
include (${CLR_SRC_NATIVE_DIR}/eventpipe/configure.cmake)
+#--------------------------------
+# Include shared native libraries
+#--------------------------------
add_subdirectory(${CLR_SRC_NATIVE_DIR}/containers containers)
add_subdirectory(${CLR_SRC_NATIVE_DIR}/eventpipe eventpipe)
add_subdirectory(${CLR_SRC_NATIVE_DIR}/minipal shared_minipal)
+if (NOT CLR_CROSS_COMPONENTS_BUILD)
+ include(dnmd.cmake)
+endif()
+
if(NOT CLR_CMAKE_HOST_MACCATALYST AND NOT CLR_CMAKE_HOST_IOS AND NOT CLR_CMAKE_HOST_TVOS)
add_subdirectory(debug/debug-pal)
endif()
diff --git a/src/coreclr/build-runtime.cmd b/src/coreclr/build-runtime.cmd
index 89dafc49715881..a82abcba796ebd 100644
--- a/src/coreclr/build-runtime.cmd
+++ b/src/coreclr/build-runtime.cmd
@@ -329,6 +329,9 @@ for /f "delims=" %%a in ("-%__RequestedBuildComponents%-") do (
if not "!string:-crosscomponents-=!"=="!string!" (
set __CMakeTarget=!__CMakeTarget! crosscomponents
)
+ if not "!string:-cdac-=!"=="!string!" (
+ set __CMakeTarget=!__CMakeTarget! cdac
+ )
if not "!string:-debug-=!"=="!string!" (
set __CMakeTarget=!__CMakeTarget! debug
)
diff --git a/src/coreclr/components.cmake b/src/coreclr/components.cmake
index 70dd081376f674..492da5140fee0f 100644
--- a/src/coreclr/components.cmake
+++ b/src/coreclr/components.cmake
@@ -27,3 +27,6 @@ add_dependencies(runtime hosts)
# The cross-components build is separate, so we don't need to add a dependency on coreclr_misc
add_component(crosscomponents)
+
+# The cdac-components build is separate
+add_component(cdac)
diff --git a/src/coreclr/dnmd.cmake b/src/coreclr/dnmd.cmake
new file mode 100644
index 00000000000000..420f56630248d5
--- /dev/null
+++ b/src/coreclr/dnmd.cmake
@@ -0,0 +1,18 @@
+# Include the dnmd project into the CoreCLR build
+include(FetchContent)
+FetchContent_Declare(
+ dnmd
+ SOURCE_DIR "${CLR_SRC_NATIVE_DIR}/dnmd"
+)
+
+set(DNMD_BUILD_TESTS OFF)
+set(DNMD_INSTALL OFF)
+FetchContent_MakeAvailable(dnmd)
+
+set_property(DIRECTORY ${CLR_SRC_NATIVE_DIR}/dnmd PROPERTY CLR_CONTROL_FLOW_GUARD ON)
+
+# Install dnmd for usage by the cdac.
+install_static_library(dnmd cdac cdac)
+install_static_library(dnmd_interfaces_static cdac cdac)
+install(TARGETS dnmd_interfaces DESTINATION cdac COMPONENT cdac)
+add_dependencies(cdac dnmd_interfaces)
diff --git a/src/coreclr/inc/corhdr.h b/src/coreclr/inc/corhdr.h
index b0e257a8469b24..84aa72eba3dce8 100644
--- a/src/coreclr/inc/corhdr.h
+++ b/src/coreclr/inc/corhdr.h
@@ -1752,7 +1752,11 @@ typedef enum NativeTypeArrayFlags
//
// Enum used for HFA type recognition.
// Supported across architectures, so that it can be used in altjits and cross-compilation.
+#ifdef __cplusplus
typedef enum CorInfoHFAElemType : unsigned {
+#else
+typedef enum CorInfoHFAElemType {
+#endif
CORINFO_HFA_ELEM_NONE,
CORINFO_HFA_ELEM_FLOAT,
CORINFO_HFA_ELEM_DOUBLE,
diff --git a/src/native/dnmd/.github/workflows/main.yml b/src/native/dnmd/.github/workflows/main.yml
deleted file mode 100644
index 77b96dacf20b07..00000000000000
--- a/src/native/dnmd/.github/workflows/main.yml
+++ /dev/null
@@ -1,60 +0,0 @@
-name: DNMD
-
-on:
- push:
- branches: [ master ]
- paths-ignore:
- - '**/*.md'
- pull_request:
- branches: [ master ]
- paths-ignore:
- - '**/*.md'
-
-jobs:
- build:
- strategy:
- matrix:
- os: [windows-latest, macos-latest, ubuntu-latest]
- flavor: [Debug, Release]
- use-vendored-libs: [true, false]
- fail-fast: false
- runs-on: ${{ matrix.os }}
- name: Build (${{ matrix.os }}, ${{ matrix.flavor }}, Single Build = ${{ matrix.use-vendored-libs }})
- steps:
- - uses: actions/checkout@v4
- with:
- submodules: recursive
-
- - uses: actions/setup-dotnet@v3
- with:
- dotnet-version: '8.0.x'
- dotnet-quality: 'preview'
-
- - name: List dotnet information
- run: dotnet --info
-
- - name: Build Vendored Dependencies
- if: ${{ !matrix.use-vendored-libs }}
- run: |
- cmake -S external/dncp -B dncp-artifacts -DCMAKE_BUILD_TYPE=${{ matrix.flavor }}
- cmake --build dncp-artifacts --config ${{ matrix.flavor }} --target install
-
- - name: Set CMake Module Path
- if: ${{ !matrix.use-vendored-libs }}
- run: echo "CMAKE_PREFIX_PATH=${{ github.workspace }}/dncp-artifacts" >> $GITHUB_ENV
- shell: bash
-
- - name: Build
- run: |
- cmake -S . -B artifacts -DCMAKE_BUILD_TYPE=${{ matrix.flavor }} -DINCLUDE_VENDORED_LIBS=${{ matrix.use-vendored-libs }}
- cmake --build artifacts --config ${{ matrix.flavor }} --target install
-
- - name: Run Tests
- run: ctest --test-dir artifacts --output-on-failure -C ${{ matrix.flavor }}
-
- # - name: Upload Test Results
- # if: always()
- # uses: actions/upload-artifact@v3
- # with:
- # name: TestResults-${{ matrix.os }}-${{ matrix.flavor }}
- # path: ./test/Regression.UnitTests/TestResults-${{ matrix.os }}-${{ matrix.flavor }}
diff --git a/src/native/dnmd/.github/workflows/publish-test-results.yml_disabled b/src/native/dnmd/.github/workflows/publish-test-results.yml_disabled
deleted file mode 100644
index 875bf6dde227d0..00000000000000
--- a/src/native/dnmd/.github/workflows/publish-test-results.yml_disabled
+++ /dev/null
@@ -1,41 +0,0 @@
-name: Publish Test Results
-
-on:
- workflow_run:
- workflows: ["DNMD"]
- types:
- - completed
-
-jobs:
- unit-test-results:
- name: Unit Test Results
- runs-on: ubuntu-latest
- permissions:
- checks: write
- contents: read
- issues: read
- if: github.event.workflow_run.conclusion != 'skipped'
-
- steps:
- - name: Download and Extract Artifacts
- env:
- GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
- run: |
- mkdir -p artifacts && cd artifacts
-
- artifacts_url=${{ github.event.workflow_run.artifacts_url }}
-
- gh api "$artifacts_url" -q '.artifacts[] | select(.name | contains(\"TestResults\")) | [.name, .archive_download_url] | @tsv' | while read artifact
- do
- IFS=$'\t' read name url <<< "$artifact"
- gh api $url > "$name.zip"
- unzip -d "$name" "$name.zip"
- done
-
- - name: Publish Unit Test Results
- uses: EnricoMi/publish-unit-test-result-action@v1
- with:
- commit: ${{ github.event.workflow_run.head_sha }}
- event_file: artifacts/Event File/event.json
- event_name: ${{ github.event.workflow_run.event }}
- files: "artifacts/**/*.xml"
\ No newline at end of file
diff --git a/src/native/dnmd/.gitmodules b/src/native/dnmd/.gitmodules
deleted file mode 100644
index cf98c869cdfd42..00000000000000
--- a/src/native/dnmd/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "external/dncp"]
- path = external/dncp
- url = https://github.com/AaronRobinsonMSFT/dncp
diff --git a/src/native/dnmd/CMakeLists.txt b/src/native/dnmd/CMakeLists.txt
index ad428c6b6cd669..462ec683d15fc3 100644
--- a/src/native/dnmd/CMakeLists.txt
+++ b/src/native/dnmd/CMakeLists.txt
@@ -1,23 +1,37 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.20)
project(dnmd
- LANGUAGES C CXX)
+ LANGUAGES C)
-option(INCLUDE_VENDORED_LIBS "Include vendored libraries (submodules) instead of discovering dependencies through packages." ON)
+# Always include our public headers
+include_directories(src/inc)
+
+# Include the metadata API headers provided by CoreCLR
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../coreclr/inc ${CMAKE_CURRENT_SOURCE_DIR}/../../coreclr/pal/prebuilt/inc)
-set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR})
+if ("${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}")
+ # This is our root CMakeList.txt, so we need to set up some global settings and include the minipal here.
+ include(../../../eng/native/configurepaths.cmake)
+ include(${CLR_ENG_NATIVE_DIR}/configurecompiler.cmake)
-if (INCLUDE_VENDORED_LIBS)
- add_subdirectory(external/dncp)
-else()
- find_package(dncp REQUIRED)
+ add_subdirectory(${CLR_SRC_NATIVE_DIR}/minipal minipal)
endif()
-include_directories(src/inc)
-include_directories(src/inc/external) # Hiding the "external" subdirectory due to uses of <...> in cor.h.
+include_directories(${CLR_SRC_NATIVE_DIR})
+
+option(DNMD_BUILD_TESTS "Build tests for dnmd" ON)
+option(DNMD_INSTALL "Install dnmd targets" ON)
+option(DNMD_BUILD_INTERFACES "Build implementations of the metadata interfaces for DNMD" ON)
+option(DNMD_BUILD_TOOLS "Build tools for dnmd" ON)
+
+if (DNMD_BUILD_INTERFACES OR DNMD_BUILD_TESTS OR DNMD_BUILD_TOOLS)
+ enable_language(CXX)
+endif()
add_subdirectory(src/)
-enable_testing()
-add_subdirectory(test/)
+if (DNMD_BUILD_TESTS)
+ enable_testing()
+ add_subdirectory(test/)
+endif()
\ No newline at end of file
diff --git a/src/native/dnmd/LICENSE.md b/src/native/dnmd/LICENSE.md
deleted file mode 100644
index b755bbb97b3f11..00000000000000
--- a/src/native/dnmd/LICENSE.md
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2023 Aaron Robinson
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/src/native/dnmd/build-native.cmd b/src/native/dnmd/build-native.cmd
new file mode 100644
index 00000000000000..9d0747600bb8c5
--- /dev/null
+++ b/src/native/dnmd/build-native.cmd
@@ -0,0 +1,114 @@
+@if not defined _echo @echo off
+setlocal
+
+:SetupArgs
+:: Initialize the args that will be passed to cmake
+set "__sourceRootDir=%~dp0"
+:: remove trailing slash
+if %__sourceRootDir:~-1%==\ set "__sourceRootDir=%__sourceRootDir:~0,-1%"
+set "__repoRoot=%__sourceRootDir%\..\..\.."
+:: normalize
+for %%i in ("%__repoRoot%") do set "__repoRoot=%%~fi"
+set "__engNativeDir=%__repoRoot%\eng\native"
+set "__artifactsDir=%__repoRoot%\artifacts"
+set __CMakeBinDir=""
+set __IntermediatesDir=""
+set __BuildArch=x64
+set __BuildTarget="build"
+set __TargetOS=windows
+set CMAKE_BUILD_TYPE=Debug
+set __Ninja=1
+set __ExtraCmakeParams=
+
+:Arg_Loop
+:: Since the native build requires some configuration information before msbuild is called, we have to do some manual args parsing
+if [%1] == [] goto :InitVSEnv
+if /i [%1] == [Release] ( set CMAKE_BUILD_TYPE=Release&&shift&goto Arg_Loop)
+if /i [%1] == [Debug] ( set CMAKE_BUILD_TYPE=Debug&&shift&goto Arg_Loop)
+
+if /i [%1] == [x86] ( set __BuildArch=x86&&shift&goto Arg_Loop)
+if /i [%1] == [x64] ( set __BuildArch=x64&&shift&goto Arg_Loop)
+if /i [%1] == [arm64] ( set __BuildArch=arm64&&shift&goto Arg_Loop)
+if /i [%1] == [wasm] ( set __BuildArch=wasm&&shift&goto Arg_Loop)
+
+if /i [%1] == [outconfig] ( set __outConfig=%2&&shift&&shift&goto Arg_Loop)
+
+if /i [%1] == [browser] ( set __TargetOS=browser&&shift&goto Arg_Loop)
+if /i [%1] == [wasi] ( set __TargetOS=wasi&&shift&goto Arg_Loop)
+
+if /i [%1] == [rebuild] ( set __BuildTarget=rebuild&&shift&goto Arg_Loop)
+
+if /i [%1] == [msbuild] ( set __Ninja=0&&shift&goto Arg_Loop)
+
+if /i [%1] == [-fsanitize] ( set __ExtraCmakeParams=%__ExtraCmakeParams% "-DCLR_CMAKE_ENABLE_SANITIZERS=$2"&&shift&&shift&goto Arg_Loop)
+
+shift
+goto :Arg_Loop
+
+:InitVSEnv
+call "%__engNativeDir%\init-vs-env.cmd" %__BuildArch%
+if NOT [%errorlevel%] == [0] goto :Failure
+
+:: Setup to cmake the native components
+echo Commencing build of native components
+echo.
+
+call "%__engNativeDir%\version\copy_version_files.cmd"
+
+set __ExtraCmakeParams=%__ExtraCmakeParams% "-DCMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE%"
+
+if [%__outConfig%] == [] set __outConfig=%__TargetOS%.%__BuildArch%.%CMAKE_BUILD_TYPE%
+
+if %__IntermediatesDir% == "" (
+ set "__IntermediatesDir=%__artifactsDir%\obj\dnmd\%__outConfig%"
+)
+if %__Ninja% == 0 (
+ set "__IntermediatesDir=%__IntermediatesDir%\ide"
+)
+set "__IntermediatesDir=%__IntermediatesDir:\=/%"
+
+if %__CMakeBinDir% == "" (
+ set "__CMakeBinDir=%__artifactsDir%\bin\dnmd\%__outConfig%"
+)
+
+:: Check that the intermediate directory exists so we can place our cmake build tree there
+if not exist "%__IntermediatesDir%" md "%__IntermediatesDir%"
+
+:: Write an empty Directory.Build.props/targets to ensure that msbuild doesn't pick up
+:: the repo's root Directory.Build.props/targets.
+set MSBUILD_EMPTY_PROJECT_CONTENT= ^
+ ^^^ ^
+ ^^^
+echo %MSBUILD_EMPTY_PROJECT_CONTENT% > "%__artifactsDir%\obj\dnmd\Directory.Build.props"
+echo %MSBUILD_EMPTY_PROJECT_CONTENT% > "%__artifactsDir%\obj\dnmd\Directory.Build.targets"
+
+:: Regenerate the VS solution
+
+call "%__repoRoot%\eng\native\gen-buildsys.cmd" "%__sourceRootDir%" "%__IntermediatesDir%" %__VSVersion% %__BuildArch% %__TargetOS% %__ExtraCmakeParams%
+if NOT [%errorlevel%] == [0] goto :Failure
+
+:BuildNativeProj
+:: Build the project created by Cmake
+set __generatorArgs=
+if [%__Ninja%] == [1] (
+ set __generatorArgs=
+) else if [%__TargetOS%] == [browser] (
+ set __generatorArgs=
+) else if [%__TargetOS%] == [wasi] (
+ set __generatorArgs=
+) else (
+ set __generatorArgs=/p:Platform=%__BuildArch% /p:PlatformToolset="%__PlatformToolset%" -noWarn:MSB8065
+)
+
+call "%CMakePath%" --build "%__IntermediatesDir%" --target install --config %CMAKE_BUILD_TYPE% -- %__generatorArgs%
+IF ERRORLEVEL 1 (
+ goto :Failure
+)
+
+echo Done building Native components
+exit /B 0
+
+:Failure
+:: Build failed
+echo Failed to generate native component build project!
+exit /b 1
diff --git a/src/native/dnmd/build-native.sh b/src/native/dnmd/build-native.sh
new file mode 100755
index 00000000000000..6b6450987a1547
--- /dev/null
+++ b/src/native/dnmd/build-native.sh
@@ -0,0 +1,18 @@
+__ProjectRoot="$(cd "$(dirname "$0")"; pwd -P)"
+__RepoRootDir="$(cd "$__ProjectRoot"/../../..; pwd -P)"
+
+__TargetArch=
+__BuildType=Debug
+__TargetOS=
+__Compiler=clang
+__UseNinja=0
+__SkipConfigure=0
+__PortableBuild=1
+
+source "$__RepoRootDir"/eng/native/build-commons.sh
+
+__ConfigTriplet="$__TargetOS.$__TargetArch.$__BuildType"
+__ArtifactsObjDir="$__RepoRootDir/artifacts/obj"
+__IntermediatesDir="$__ArtifactsObjDir/dnmd/$__ConfigTriplet"
+
+build_native "$__HostOS" "$__HostArch" "$__ProjectRoot" "$__IntermediatesDir" "" "$__CMakeArgs" "DNMD"
diff --git a/src/native/dnmd/configure.cmake b/src/native/dnmd/configure.cmake
index 6813b7f17d5c32..9dbcbea1bdb613 100644
--- a/src/native/dnmd/configure.cmake
+++ b/src/native/dnmd/configure.cmake
@@ -8,10 +8,6 @@ set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
-include(CheckCCompilerFlag)
-
-include(CheckCXXCompilerFlag)
-
#
# Configure CMake for platforms
#
@@ -29,29 +25,6 @@ else()
add_compile_definitions(BUILD_UNIX=1)
endif()
-#
-# Configure compilers
-#
-if(MSVC)
- add_compile_options(/Zc:wchar_t-) # wchar_t is a built-in type.
- add_compile_options(/W4 /WX) # warning level 4 and warnings are errors.
- add_compile_options(/Zi) # enable debugging information.
-
- add_link_options(/DEBUG) # enable debugging information.
-else()
- add_compile_options(-Wall -Werror) # All warnings and are errors.
- add_compile_options(-g) # enable debugging information.
-
- check_c_compiler_flag(-Wno-pragma-pack C_HAS_NO_PRAGMA_PACK)
- if (C_HAS_NO_PRAGMA_PACK)
- add_compile_options($<$:-Wno-pragma-pack>) # cor.h controls pack pragmas via headers.
- endif()
- check_cxx_compiler_flag(-Wno-pragma-pack CXX_HAS_NO_PRAGMA_PACK)
- if (CXX_HAS_NO_PRAGMA_PACK)
- add_compile_options($<$:-Wno-pragma-pack>) # cor.h controls pack pragmas via headers.
- endif()
-endif()
-
#
# Agnostic compiler/platform settings
#
diff --git a/src/native/dnmd/dnmd.proj b/src/native/dnmd/dnmd.proj
new file mode 100644
index 00000000000000..993d7b9ed53569
--- /dev/null
+++ b/src/native/dnmd/dnmd.proj
@@ -0,0 +1,32 @@
+
+
+ true
+ $(BaseIntermediateOutputPath)/$(TargetOS).$(TargetArchitecture).$(Configuration)
+
+
+
+
+ -cross
+ -ninja
+ -msbuild
+ -portablebuild=false
+ bash ./build-native.sh
+ ./build-native.cmd
+
+
+
+
+
+
+
+
+
+
+ dnmd-$([System.String]::new('%(RecursiveDir)').TrimEnd('\\')).ctestxml
+
+
+
+
+
\ No newline at end of file
diff --git a/src/native/dnmd/global.json b/src/native/dnmd/global.json
deleted file mode 100644
index f3ce2abf1902ae..00000000000000
--- a/src/native/dnmd/global.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "msbuild-sdks": {
- "Microsoft.NET.Sdk.IL": "7.0.0"
- }
- }
diff --git a/src/native/dnmd/readme.md b/src/native/dnmd/readme.md
index 92055944b5e2ce..35b291bb699cdb 100644
--- a/src/native/dnmd/readme.md
+++ b/src/native/dnmd/readme.md
@@ -11,8 +11,9 @@ DNMD provides the following tools:
- [`IMetaDataAssemblyImport`][api_assemblyimport]
- `dnmd_interfaces_static` - A static library version of `dnmd_interfaces`.
- `mddump` - Utility for dumping ECMA-335 tables.
+- `mdmerge` - Utility for merging EnC deltas into ECMA-335 tables.
-The primary goal of DNMD is to explore the benefits of a rewrite of the metadata APIs found in [dotnet/runtime](https://github.com/dotnet/runtime). The rewrite has the following constraints:
+The primary goal of DNMD is to explore the benefits of a rewrite of the metadata APIs in the .NET runtime. The rewrite has the following constraints:
- Must be sharable across any existing .NET runtime implementation.
- Must be cross-platform with minimal OS abstraction layering.
@@ -20,14 +21,12 @@ The primary goal of DNMD is to explore the benefits of a rewrite of the metadata
## Requirements (minimum)
-- [CMake](https://cmake.org/download/) 3.10
+- [CMake](https://cmake.org/download/) 3.20
- C11 and C++14 compliant compilers
## Build
-> `git submodule update --init --recursive`
-
> `cmake -S . -B artifacts`
> `cmake --build artifacts --target install`
@@ -37,12 +36,10 @@ The primary goal of DNMD is to explore the benefits of a rewrite of the metadata
The `test/` directory contains all product tests. The native components for
DNMD should be built first. See the Build section.
-The `DNMD.Tests.sln` file can be loaded in Visual Studio to run associated tests.
-The managed tests will use the latest build of the DNMD libraries. Keep in mind
-the native assets are built with a configuration independent of the tests.
+Tests can be run using `ctest --test-dir artifacts`.
Testing correctness defers to the current implementation of the relevant interface
-defined in the .NET runtime the test is running on (for example, `IMetaDataImport`).
+defined in the newest .NET runtime the test finds via normal runtime discovery mechanisms (for example, `IMetaDataImport`).
The approach is to pass identical arguments to the current implementation and the
implementation in this repo. The return argument and all out arguments are then
compared for equality. In some cases pointers are returned so the pointer is dereferenced
diff --git a/src/native/dnmd/src/CMakeLists.txt b/src/native/dnmd/src/CMakeLists.txt
index 68d7932138a9eb..1cea1e964a9499 100644
--- a/src/native/dnmd/src/CMakeLists.txt
+++ b/src/native/dnmd/src/CMakeLists.txt
@@ -4,18 +4,26 @@ include(../configure.cmake)
include_directories(BEFORE ./inc)
add_subdirectory(dnmd)
-add_subdirectory(interfaces)
-add_subdirectory(mddump)
-add_subdirectory(mdmerge)
-include(CMakePackageConfigHelpers)
-configure_package_config_file(config.cmake.in
- ${CMAKE_CURRENT_BINARY_DIR}/dnmd-config.cmake
- INSTALL_DESTINATION lib/cmake/dnmd)
-write_basic_package_version_file(
- ${CMAKE_CURRENT_BINARY_DIR}/dnmd-config-version.cmake
- VERSION 1.0.0
- COMPATIBILITY SameMajorVersion )
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/dnmd-config.cmake
- ${CMAKE_CURRENT_BINARY_DIR}/dnmd-config-version.cmake
- DESTINATION lib/cmake/dnmd)
\ No newline at end of file
+if (DNMD_BUILD_INTERFACES)
+ add_subdirectory(interfaces)
+endif()
+
+if (DNMD_BUILD_TOOLS)
+ add_subdirectory(mddump)
+ add_subdirectory(mdmerge)
+endif()
+
+if (DNMD_INSTALL)
+ include(CMakePackageConfigHelpers)
+ configure_package_config_file(config.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/dnmd-config.cmake
+ INSTALL_DESTINATION lib/cmake/dnmd)
+ write_basic_package_version_file(
+ ${CMAKE_CURRENT_BINARY_DIR}/dnmd-config-version.cmake
+ VERSION 1.0.0
+ COMPATIBILITY SameMajorVersion )
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/dnmd-config.cmake
+ ${CMAKE_CURRENT_BINARY_DIR}/dnmd-config-version.cmake
+ DESTINATION lib/cmake/dnmd)
+endif()
diff --git a/src/native/dnmd/src/dnmd/CMakeLists.txt b/src/native/dnmd/src/dnmd/CMakeLists.txt
index 436451be94fcf5..4f6ac394410132 100644
--- a/src/native/dnmd/src/dnmd/CMakeLists.txt
+++ b/src/native/dnmd/src/dnmd/CMakeLists.txt
@@ -37,17 +37,19 @@ target_include_directories(dnmd PUBLIC $)
target_include_directories(dnmd_pdb PUBLIC $)
set_target_properties(dnmd PROPERTIES
- PUBLIC_HEADER "../inc/dnmd.h;../inc/dnmd.hpp"
+ PUBLIC_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/../inc/dnmd.h;${CMAKE_CURRENT_SOURCE_DIR}/../inc/dnmd.hpp"
POSITION_INDEPENDENT_CODE ON)
set_target_properties(dnmd_pdb PROPERTIES
- PUBLIC_HEADER "../inc/dnmd.h;../inc/dnmd.hpp;../inc/dnmd_pdb.h"
+ PUBLIC_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/../inc/dnmd.h;${CMAKE_CURRENT_SOURCE_DIR}/../inc/dnmd.hpp;${CMAKE_CURRENT_SOURCE_DIR}/../inc/dnmd_pdb.h"
POSITION_INDEPENDENT_CODE ON)
-install(TARGETS dnmd dnmd_pdb EXPORT dnmd
- PUBLIC_HEADER DESTINATION include
- ARCHIVE DESTINATION lib
- LIBRARY DESTINATION lib
- RUNTIME DESTINATION bin)
+if (DNMD_INSTALL)
+ install(TARGETS dnmd dnmd_pdb EXPORT dnmd
+ PUBLIC_HEADER DESTINATION include
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib
+ RUNTIME DESTINATION bin)
-install(EXPORT dnmd NAMESPACE dnmd:: FILE dnmdlib.cmake DESTINATION lib/cmake/dnmd)
+ install(EXPORT dnmd NAMESPACE dnmd:: FILE dnmdlib.cmake DESTINATION lib/cmake/dnmd)
+endif()
diff --git a/src/native/dnmd/src/inc/external/cor.h b/src/native/dnmd/src/inc/external/cor.h
deleted file mode 100644
index 8ccc151cc0378e..00000000000000
--- a/src/native/dnmd/src/inc/external/cor.h
+++ /dev/null
@@ -1,2251 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-/*****************************************************************************
- ** **
- ** Cor.h - general header for the Runtime. **
- ** **
- *****************************************************************************/
-
-
-#ifndef _COR_H_
-#define _COR_H_
-
-//*****************************************************************************
-// Required includes
-#include // Definitions of OLE types.
-#include
-#include "corerror.h"
-
-//*****************************************************************************
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// {BED7F4EA-1A96-11d2-8F08-00A0C9A6186D}
-EXTERN_GUID(LIBID_ComPlusRuntime, 0xbed7f4ea, 0x1a96, 0x11d2, 0x8f, 0x8, 0x0, 0xa0, 0xc9, 0xa6, 0x18, 0x6d);
-
-// {90883F05-3D28-11D2-8F17-00A0C9A6186D}
-EXTERN_GUID(GUID_ExportedFromComPlus, 0x90883f05, 0x3d28, 0x11d2, 0x8f, 0x17, 0x0, 0xa0, 0xc9, 0xa6, 0x18, 0x6d);
-
-// {0F21F359-AB84-41e8-9A78-36D110E6D2F9}
-EXTERN_GUID(GUID_ManagedName, 0xf21f359, 0xab84, 0x41e8, 0x9a, 0x78, 0x36, 0xd1, 0x10, 0xe6, 0xd2, 0xf9);
-
-// {54FC8F55-38DE-4703-9C4E-250351302B1C}
-EXTERN_GUID(GUID_Function2Getter, 0x54fc8f55, 0x38de, 0x4703, 0x9c, 0x4e, 0x25, 0x3, 0x51, 0x30, 0x2b, 0x1c);
-
-// CLSID_CorMetaDataDispenserRuntime: {1EC2DE53-75CC-11d2-9775-00A0C9B4D50C}
-// Dispenser coclass for version 1.5 and 2.0 meta data. To get the "latest" bind
-// to CLSID_MetaDataDispenser.
-EXTERN_GUID(CLSID_CorMetaDataDispenserRuntime, 0x1ec2de53, 0x75cc, 0x11d2, 0x97, 0x75, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc);
-
-// {CD2BC5C9-F452-4326-B714-F9C539D4DA58}
-EXTERN_GUID(GUID_DispIdOverride, 0xcd2bc5c9, 0xf452, 0x4326, 0xb7, 0x14, 0xf9, 0xc5, 0x39, 0xd4, 0xda, 0x58);
-
-// {B64784EB-D8D4-4d9b-9ACD-0E30806426F7}
-EXTERN_GUID(GUID_ForceIEnumerable, 0xb64784eb, 0xd8d4, 0x4d9b, 0x9a, 0xcd, 0x0e, 0x30, 0x80, 0x64, 0x26, 0xf7);
-
-// {2941FF83-88D8-4F73-B6A9-BDF8712D000D}
-EXTERN_GUID(GUID_PropGetCA, 0x2941ff83, 0x88d8, 0x4f73, 0xb6, 0xa9, 0xbd, 0xf8, 0x71, 0x2d, 0x00, 0x0d);
-
-// {29533527-3683-4364-ABC0-DB1ADD822FA2}
-EXTERN_GUID(GUID_PropPutCA, 0x29533527, 0x3683, 0x4364, 0xab, 0xc0, 0xdb, 0x1a, 0xdd, 0x82, 0x2f, 0xa2);
-
-// CLSID_CLR_v1_MetaData: {005023CA-72B1-11D3-9FC4-00C04F79A0A3}
-// Used to generate v1 metadata (for v1.0 and v1.1 CLR compatibility).
-EXTERN_GUID(CLSID_CLR_v1_MetaData, 0x005023ca, 0x72b1, 0x11d3, 0x9f, 0xc4, 0x0, 0xc0, 0x4f, 0x79, 0xa0, 0xa3);
-
-// CLSID_CLR_v2_MetaData: {EFEA471A-44FD-4862-9292-0C58D46E1F3A}
-EXTERN_GUID(CLSID_CLR_v2_MetaData, 0xefea471a, 0x44fd, 0x4862, 0x92, 0x92, 0xc, 0x58, 0xd4, 0x6e, 0x1f, 0x3a);
-
-
-// CLSID_CorMetaDataRuntime:
-// This will can always be used to generate the "latest" metadata available.
-#define CLSID_CorMetaDataRuntime CLSID_CLR_v2_MetaData
-
-
-// {30FE7BE8-D7D9-11D2-9F80-00C04F79A0A3}
-EXTERN_GUID(MetaDataCheckDuplicatesFor, 0x30fe7be8, 0xd7d9, 0x11d2, 0x9f, 0x80, 0x0, 0xc0, 0x4f, 0x79, 0xa0, 0xa3);
-
-// {DE3856F8-D7D9-11D2-9F80-00C04F79A0A3}
-EXTERN_GUID(MetaDataRefToDefCheck, 0xde3856f8, 0xd7d9, 0x11d2, 0x9f, 0x80, 0x0, 0xc0, 0x4f, 0x79, 0xa0, 0xa3);
-
-// {E5D71A4C-D7DA-11D2-9F80-00C04F79A0A3}
-EXTERN_GUID(MetaDataNotificationForTokenMovement, 0xe5d71a4c, 0xd7da, 0x11d2, 0x9f, 0x80, 0x0, 0xc0, 0x4f, 0x79, 0xa0, 0xa3);
-
-// {2eee315c-d7db-11d2-9f80-00c04f79a0a3}
-EXTERN_GUID(MetaDataSetUpdate, 0x2eee315c, 0xd7db, 0x11d2, 0x9f, 0x80, 0x0, 0xc0, 0x4f, 0x79, 0xa0, 0xa3);
-#define MetaDataSetENC MetaDataSetUpdate
-
-// Use this guid in SetOption to indicate if the import enumerator should skip over
-// delete items or not. The default is yes.
-//
-// {79700F36-4AAC-11d3-84C3-009027868CB1}
-EXTERN_GUID(MetaDataImportOption, 0x79700f36, 0x4aac, 0x11d3, 0x84, 0xc3, 0x0, 0x90, 0x27, 0x86, 0x8c, 0xb1);
-
-// Use this guid in the SetOption if compiler wants to have MetaData API to take reader/writer lock
-//
-// {F7559806-F266-42ea-8C63-0ADB45E8B234}
-EXTERN_GUID(MetaDataThreadSafetyOptions, 0xf7559806, 0xf266, 0x42ea, 0x8c, 0x63, 0xa, 0xdb, 0x45, 0xe8, 0xb2, 0x34);
-
-// Use this guid in the SetOption if compiler wants error when some tokens are emitted out of order
-// {1547872D-DC03-11d2-9420-0000F8083460}
-EXTERN_GUID(MetaDataErrorIfEmitOutOfOrder, 0x1547872d, 0xdc03, 0x11d2, 0x94, 0x20, 0x0, 0x0, 0xf8, 0x8, 0x34, 0x60);
-
-// Use this guid in the SetOption to indicate if the tlbimporter should generate the
-// TCE adapters for COM connection point containers.
-// {DCC9DE90-4151-11d3-88D6-00902754C43A}
-EXTERN_GUID(MetaDataGenerateTCEAdapters, 0xdcc9de90, 0x4151, 0x11d3, 0x88, 0xd6, 0x0, 0x90, 0x27, 0x54, 0xc4, 0x3a);
-
-// Use this guid in the SetOption to specifiy a non-default namespace for typelib import.
-// {F17FF889-5A63-11d3-9FF2-00C04FF7431A}
-EXTERN_GUID(MetaDataTypeLibImportNamespace, 0xf17ff889, 0x5a63, 0x11d3, 0x9f, 0xf2, 0x0, 0xc0, 0x4f, 0xf7, 0x43, 0x1a);
-
-// Use this guid in the SetOption to specify the behavior of UnmarkAll. See CorLinkerOptions.
-// {47E099B6-AE7C-4797-8317-B48AA645B8F9}
-EXTERN_GUID(MetaDataLinkerOptions, 0x47e099b6, 0xae7c, 0x4797, 0x83, 0x17, 0xb4, 0x8a, 0xa6, 0x45, 0xb8, 0xf9);
-
-// Use this guid in the SetOption to specify the runtime version stored in the CLR metadata.
-// {47E099B7-AE7C-4797-8317-B48AA645B8F9}
-EXTERN_GUID(MetaDataRuntimeVersion, 0x47e099b7, 0xae7c, 0x4797, 0x83, 0x17, 0xb4, 0x8a, 0xa6, 0x45, 0xb8, 0xf9);
-
-// Use this guid in the SetOption to specify the behavior of the merger.
-// {132D3A6E-B35D-464e-951A-42EFB9FB6601}
-EXTERN_GUID(MetaDataMergerOptions, 0x132d3a6e, 0xb35d, 0x464e, 0x95, 0x1a, 0x42, 0xef, 0xb9, 0xfb, 0x66, 0x1);
-
-// Use this guid in SetOption to disable optimizing module-local refs to defs
-// {a55c0354-e91b-468b-8648-7cc31035d533}
-EXTERN_GUID(MetaDataPreserveLocalRefs, 0xa55c0354, 0xe91b, 0x468b, 0x86, 0x48, 0x7c, 0xc3, 0x10, 0x35, 0xd5, 0x33);
-
-interface IMetaDataImport;
-interface IMetaDataAssemblyEmit;
-interface IMetaDataAssemblyImport;
-interface IMetaDataEmit;
-
-typedef UNALIGNED void const *UVCP_CONSTANT;
-
-
-// Constant for connection id and task id
-#define INVALID_CONNECTION_ID 0x0
-#define INVALID_TASK_ID 0x0
-#define MAX_CONNECTION_NAME MAX_PATH
-
-
-#define MAIN_CLR_MODULE_NAME_W W("coreclr")
-#define MAIN_CLR_MODULE_NAME_A "coreclr"
-
-#define MAIN_CLR_DLL_NAME_W MAKEDLLNAME_W(MAIN_CLR_MODULE_NAME_W)
-#define MAIN_CLR_DLL_NAME_A MAKEDLLNAME_A(MAIN_CLR_MODULE_NAME_A)
-
-#define TARGET_MAIN_CLR_DLL_NAME_W MAKE_TARGET_DLLNAME_W(MAIN_CLR_MODULE_NAME_W)
-#define TARGET_MAIN_CLR_DLL_NAME_A MAKE_TARGET_DLLNAME_A(MAIN_CLR_MODULE_NAME_A)
-
-//*****************************************************************************
-//*****************************************************************************
-//
-// I L & F I L E F O R M A T D E C L A R A T I O N S
-//
-//*****************************************************************************
-//*****************************************************************************
-
-
-//
-#ifndef _WINDOWS_UPDATES_
-#include
-#endif // updates
-
-//*****************************************************************************
-//*****************************************************************************
-
-// CLSID_Cor: {bee00000-ee77-11d0-a015-00c04fbbb884}
-EXTERN_GUID(CLSID_Cor, 0xbee00010, 0xee77, 0x11d0, 0xa0, 0x15, 0x00, 0xc0, 0x4f, 0xbb, 0xb8, 0x84);
-
-// CLSID_CorMetaDataDispenser: {E5CB7A31-7512-11d2-89CE-0080C792E5D8}
-// This is the "Master Dispenser", always guaranteed to be the most recent
-// dispenser on the machine.
-EXTERN_GUID(CLSID_CorMetaDataDispenser, 0xe5cb7a31, 0x7512, 0x11d2, 0x89, 0xce, 0x0, 0x80, 0xc7, 0x92, 0xe5, 0xd8);
-
-
-// CLSID_CorMetaDataDispenserReg: {435755FF-7397-11d2-9771-00A0C9B4D50C}
-// Dispenser coclass for version 1.0 meta data. To get the "latest" bind
-// to CLSID_CorMetaDataDispenser.
-EXTERN_GUID(CLSID_CorMetaDataDispenserReg, 0x435755ff, 0x7397, 0x11d2, 0x97, 0x71, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc);
-
-
-// CLSID_CorMetaDataReg: {87F3A1F5-7397-11d2-9771-00A0C9B4D50C}
-// For COM+ Meta Data, Data Driven Registration
-EXTERN_GUID(CLSID_CorMetaDataReg, 0x87f3a1f5, 0x7397, 0x11d2, 0x97, 0x71, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc);
-
-
-interface IMetaDataDispenser;
-
-//-------------------------------------
-//--- IMetaDataError
-//-------------------------------------
-// {B81FF171-20F3-11d2-8DCC-00A0C9B09C19}
-EXTERN_GUID(IID_IMetaDataError, 0xb81ff171, 0x20f3, 0x11d2, 0x8d, 0xcc, 0x0, 0xa0, 0xc9, 0xb0, 0x9c, 0x19);
-
-//---
-#undef INTERFACE
-#define INTERFACE IMetaDataError
-DECLARE_INTERFACE_(IMetaDataError, IUnknown)
-{
- STDMETHOD(OnError)(HRESULT hrError, mdToken token) PURE;
-};
-
-//-------------------------------------
-//--- IMapToken
-//-------------------------------------
-// IID_IMapToken: {06A3EA8B-0225-11d1-BF72-00C04FC31E12}
-EXTERN_GUID(IID_IMapToken, 0x6a3ea8b, 0x225, 0x11d1, 0xbf, 0x72, 0x0, 0xc0, 0x4f, 0xc3, 0x1e, 0x12);
-
-//---
-#undef INTERFACE
-#define INTERFACE IMapToken
-DECLARE_INTERFACE_(IMapToken, IUnknown)
-{
- STDMETHOD(Map)(mdToken tkImp, mdToken tkEmit) PURE;
-};
-
-//-------------------------------------
-//--- IMetaDataDispenser
-//-------------------------------------
-// {809C652E-7396-11D2-9771-00A0C9B4D50C}
-EXTERN_GUID(IID_IMetaDataDispenser, 0x809c652e, 0x7396, 0x11d2, 0x97, 0x71, 0x00, 0xa0, 0xc9, 0xb4, 0xd5, 0x0c);
-
-//---
-#undef INTERFACE
-#define INTERFACE IMetaDataDispenser
-DECLARE_INTERFACE_(IMetaDataDispenser, IUnknown)
-{
- STDMETHOD(DefineScope)( // Return code.
- REFCLSID rclsid, // [in] What version to create.
- DWORD dwCreateFlags, // [in] Flags on the create.
- REFIID riid, // [in] The interface desired.
- IUnknown **ppIUnk) PURE; // [out] Return interface on success.
-
- STDMETHOD(OpenScope)( // Return code.
- LPCWSTR szScope, // [in] The scope to open.
- DWORD dwOpenFlags, // [in] Open mode flags.
- REFIID riid, // [in] The interface desired.
- IUnknown **ppIUnk) PURE; // [out] Return interface on success.
-
- STDMETHOD(OpenScopeOnMemory)( // Return code.
- LPCVOID pData, // [in] Location of scope data.
- ULONG cbData, // [in] Size of the data pointed to by pData.
- DWORD dwOpenFlags, // [in] Open mode flags.
- REFIID riid, // [in] The interface desired.
- IUnknown **ppIUnk) PURE; // [out] Return interface on success.
-};
-
-//-------------------------------------
-//--- IMetaDataEmit
-//-------------------------------------
-// {BA3FEE4C-ECB9-4e41-83B7-183FA41CD859}
-EXTERN_GUID(IID_IMetaDataEmit, 0xba3fee4c, 0xecb9, 0x4e41, 0x83, 0xb7, 0x18, 0x3f, 0xa4, 0x1c, 0xd8, 0x59);
-
-//---
-#undef INTERFACE
-#define INTERFACE IMetaDataEmit
-DECLARE_INTERFACE_(IMetaDataEmit, IUnknown)
-{
- STDMETHOD(SetModuleProps)( // S_OK or error.
- LPCWSTR szName) PURE; // [IN] If not NULL, the name of the module to set.
-
- STDMETHOD(Save)( // S_OK or error.
- LPCWSTR szFile, // [IN] The filename to save to.
- DWORD dwSaveFlags) PURE; // [IN] Flags for the save.
-
- STDMETHOD(SaveToStream)( // S_OK or error.
- IStream *pIStream, // [IN] A writable stream to save to.
- DWORD dwSaveFlags) PURE; // [IN] Flags for the save.
-
- STDMETHOD(GetSaveSize)( // S_OK or error.
- CorSaveSize fSave, // [IN] cssAccurate or cssQuick.
- DWORD *pdwSaveSize) PURE; // [OUT] Put the size here.
-
- STDMETHOD(DefineTypeDef)( // S_OK or error.
- LPCWSTR szTypeDef, // [IN] Name of TypeDef
- DWORD dwTypeDefFlags, // [IN] CustomAttribute flags
- mdToken tkExtends, // [IN] extends this TypeDef or typeref
- mdToken rtkImplements[], // [IN] Implements interfaces
- mdTypeDef *ptd) PURE; // [OUT] Put TypeDef token here
-
- STDMETHOD(DefineNestedType)( // S_OK or error.
- LPCWSTR szTypeDef, // [IN] Name of TypeDef
- DWORD dwTypeDefFlags, // [IN] CustomAttribute flags
- mdToken tkExtends, // [IN] extends this TypeDef or typeref
- mdToken rtkImplements[], // [IN] Implements interfaces
- mdTypeDef tdEncloser, // [IN] TypeDef token of the enclosing type.
- mdTypeDef *ptd) PURE; // [OUT] Put TypeDef token here
-
- STDMETHOD(SetHandler)( // S_OK.
- IUnknown *pUnk) PURE; // [IN] The new error handler.
-
- STDMETHOD(DefineMethod)( // S_OK or error.
- mdTypeDef td, // Parent TypeDef
- LPCWSTR szName, // Name of member
- DWORD dwMethodFlags, // Member attributes
- PCCOR_SIGNATURE pvSigBlob, // [IN] point to a blob value of CLR signature
- ULONG cbSigBlob, // [IN] count of bytes in the signature blob
- ULONG ulCodeRVA,
- DWORD dwImplFlags,
- mdMethodDef *pmd) PURE; // Put member token here
-
- STDMETHOD(DefineMethodImpl)( // S_OK or error.
- mdTypeDef td, // [IN] The class implementing the method
- mdToken tkBody, // [IN] Method body - MethodDef or MethodRef
- mdToken tkDecl) PURE; // [IN] Method declaration - MethodDef or MethodRef
-
- STDMETHOD(DefineTypeRefByName)( // S_OK or error.
- mdToken tkResolutionScope, // [IN] ModuleRef, AssemblyRef or TypeRef.
- LPCWSTR szName, // [IN] Name of the TypeRef.
- mdTypeRef *ptr) PURE; // [OUT] Put TypeRef token here.
-
- STDMETHOD(DefineImportType)( // S_OK or error.
- IMetaDataAssemblyImport *pAssemImport, // [IN] Assembly containing the TypeDef.
- const void *pbHashValue, // [IN] Hash Blob for Assembly.
- ULONG cbHashValue, // [IN] Count of bytes.
- IMetaDataImport *pImport, // [IN] Scope containing the TypeDef.
- mdTypeDef tdImport, // [IN] The imported TypeDef.
- IMetaDataAssemblyEmit *pAssemEmit, // [IN] Assembly into which the TypeDef is imported.
- mdTypeRef *ptr) PURE; // [OUT] Put TypeRef token here.
-
- STDMETHOD(DefineMemberRef)( // S_OK or error
- mdToken tkImport, // [IN] ClassRef or ClassDef importing a member.
- LPCWSTR szName, // [IN] member's name
- PCCOR_SIGNATURE pvSigBlob, // [IN] point to a blob value of CLR signature
- ULONG cbSigBlob, // [IN] count of bytes in the signature blob
- mdMemberRef *pmr) PURE; // [OUT] memberref token
-
- STDMETHOD(DefineImportMember)( // S_OK or error.
- IMetaDataAssemblyImport *pAssemImport, // [IN] Assembly containing the Member.
- const void *pbHashValue, // [IN] Hash Blob for Assembly.
- ULONG cbHashValue, // [IN] Count of bytes.
- IMetaDataImport *pImport, // [IN] Import scope, with member.
- mdToken mbMember, // [IN] Member in import scope.
- IMetaDataAssemblyEmit *pAssemEmit, // [IN] Assembly into which the Member is imported.
- mdToken tkParent, // [IN] Classref or classdef in emit scope.
- mdMemberRef *pmr) PURE; // [OUT] Put member ref here.
-
- STDMETHOD(DefineEvent) (
- mdTypeDef td, // [IN] the class/interface on which the event is being defined
- LPCWSTR szEvent, // [IN] Name of the event
- DWORD dwEventFlags, // [IN] CorEventAttr
- mdToken tkEventType, // [IN] a reference (mdTypeRef or mdTypeRef) to the Event class
- mdMethodDef mdAddOn, // [IN] required add method
- mdMethodDef mdRemoveOn, // [IN] required remove method
- mdMethodDef mdFire, // [IN] optional fire method
- mdMethodDef rmdOtherMethods[], // [IN] optional array of other methods associate with the event
- mdEvent *pmdEvent) PURE; // [OUT] output event token
-
- STDMETHOD(SetClassLayout) (
- mdTypeDef td, // [IN] typedef
- DWORD dwPackSize, // [IN] packing size specified as 1, 2, 4, 8, or 16
- COR_FIELD_OFFSET rFieldOffsets[], // [IN] array of layout specification
- ULONG ulClassSize) PURE; // [IN] size of the class
-
- STDMETHOD(DeleteClassLayout) (
- mdTypeDef td) PURE; // [IN] typedef whose layout is to be deleted.
-
- STDMETHOD(SetFieldMarshal) (
- mdToken tk, // [IN] given a fieldDef or paramDef token
- PCCOR_SIGNATURE pvNativeType, // [IN] native type specification
- ULONG cbNativeType) PURE; // [IN] count of bytes of pvNativeType
-
- STDMETHOD(DeleteFieldMarshal) (
- mdToken tk) PURE; // [IN] given a fieldDef or paramDef token
-
- STDMETHOD(DefinePermissionSet) (
- mdToken tk, // [IN] the object to be decorated.
- DWORD dwAction, // [IN] CorDeclSecurity.
- void const *pvPermission, // [IN] permission blob.
- ULONG cbPermission, // [IN] count of bytes of pvPermission.
- mdPermission *ppm) PURE; // [OUT] returned permission token.
-
- STDMETHOD(SetRVA)( // S_OK or error.
- mdMethodDef md, // [IN] Method for which to set offset
- ULONG ulRVA) PURE; // [IN] The offset
-
- STDMETHOD(GetTokenFromSig)( // S_OK or error.
- PCCOR_SIGNATURE pvSig, // [IN] Signature to define.
- ULONG cbSig, // [IN] Size of signature data.
- mdSignature *pmsig) PURE; // [OUT] returned signature token.
-
- STDMETHOD(DefineModuleRef)( // S_OK or error.
- LPCWSTR szName, // [IN] DLL name
- mdModuleRef *pmur) PURE; // [OUT] returned
-
- // @FUTURE: This should go away once everyone starts using SetMemberRefProps.
- STDMETHOD(SetParent)( // S_OK or error.
- mdMemberRef mr, // [IN] Token for the ref to be fixed up.
- mdToken tk) PURE; // [IN] The ref parent.
-
- STDMETHOD(GetTokenFromTypeSpec)( // S_OK or error.
- PCCOR_SIGNATURE pvSig, // [IN] TypeSpec Signature to define.
- ULONG cbSig, // [IN] Size of signature data.
- mdTypeSpec *ptypespec) PURE; // [OUT] returned TypeSpec token.
-
- STDMETHOD(SaveToMemory)( // S_OK or error.
- void *pbData, // [OUT] Location to write data.
- ULONG cbData) PURE; // [IN] Max size of data buffer.
-
- STDMETHOD(DefineUserString)( // Return code.
- LPCWSTR szString, // [IN] User literal string.
- ULONG cchString, // [IN] Length of string.
- mdString *pstk) PURE; // [OUT] String token.
-
- STDMETHOD(DeleteToken)( // Return code.
- mdToken tkObj) PURE; // [IN] The token to be deleted
-
- STDMETHOD(SetMethodProps)( // S_OK or error.
- mdMethodDef md, // [IN] The MethodDef.
- DWORD dwMethodFlags, // [IN] Method attributes.
- ULONG ulCodeRVA, // [IN] Code RVA.
- DWORD dwImplFlags) PURE; // [IN] Impl flags.
-
- STDMETHOD(SetTypeDefProps)( // S_OK or error.
- mdTypeDef td, // [IN] The TypeDef.
- DWORD dwTypeDefFlags, // [IN] TypeDef flags.
- mdToken tkExtends, // [IN] Base TypeDef or TypeRef.
- mdToken rtkImplements[]) PURE; // [IN] Implemented interfaces.
-
- STDMETHOD(SetEventProps)( // S_OK or error.
- mdEvent ev, // [IN] The event token.
- DWORD dwEventFlags, // [IN] CorEventAttr.
- mdToken tkEventType, // [IN] A reference (mdTypeRef or mdTypeRef) to the Event class.
- mdMethodDef mdAddOn, // [IN] Add method.
- mdMethodDef mdRemoveOn, // [IN] Remove method.
- mdMethodDef mdFire, // [IN] Fire method.
- mdMethodDef rmdOtherMethods[]) PURE;// [IN] Array of other methods associate with the event.
-
- STDMETHOD(SetPermissionSetProps)( // S_OK or error.
- mdToken tk, // [IN] The object to be decorated.
- DWORD dwAction, // [IN] CorDeclSecurity.
- void const *pvPermission, // [IN] Permission blob.
- ULONG cbPermission, // [IN] Count of bytes of pvPermission.
- mdPermission *ppm) PURE; // [OUT] Permission token.
-
- STDMETHOD(DefinePinvokeMap)( // Return code.
- mdToken tk, // [IN] FieldDef or MethodDef.
- DWORD dwMappingFlags, // [IN] Flags used for mapping.
- LPCWSTR szImportName, // [IN] Import name.
- mdModuleRef mrImportDLL) PURE; // [IN] ModuleRef token for the target DLL.
-
- STDMETHOD(SetPinvokeMap)( // Return code.
- mdToken tk, // [IN] FieldDef or MethodDef.
- DWORD dwMappingFlags, // [IN] Flags used for mapping.
- LPCWSTR szImportName, // [IN] Import name.
- mdModuleRef mrImportDLL) PURE; // [IN] ModuleRef token for the target DLL.
-
- STDMETHOD(DeletePinvokeMap)( // Return code.
- mdToken tk) PURE; // [IN] FieldDef or MethodDef.
-
- // New CustomAttribute functions.
- STDMETHOD(DefineCustomAttribute)( // Return code.
- mdToken tkOwner, // [IN] The object to put the value on.
- mdToken tkCtor, // [IN] Constructor of the CustomAttribute type (MemberRef/MethodDef).
- void const *pCustomAttribute, // [IN] The custom value data.
- ULONG cbCustomAttribute, // [IN] The custom value data length.
- mdCustomAttribute *pcv) PURE; // [OUT] The custom value token value on return.
-
- STDMETHOD(SetCustomAttributeValue)( // Return code.
- mdCustomAttribute pcv, // [IN] The custom value token whose value to replace.
- void const *pCustomAttribute, // [IN] The custom value data.
- ULONG cbCustomAttribute) PURE;// [IN] The custom value data length.
-
- STDMETHOD(DefineField)( // S_OK or error.
- mdTypeDef td, // Parent TypeDef
- LPCWSTR szName, // Name of member
- DWORD dwFieldFlags, // Member attributes
- PCCOR_SIGNATURE pvSigBlob, // [IN] point to a blob value of CLR signature
- ULONG cbSigBlob, // [IN] count of bytes in the signature blob
- DWORD dwCPlusTypeFlag, // [IN] flag for value type. selected ELEMENT_TYPE_*
- void const *pValue, // [IN] constant value
- ULONG cchValue, // [IN] size of constant value (string, in wide chars).
- mdFieldDef *pmd) PURE; // [OUT] Put member token here
-
- STDMETHOD(DefineProperty)(
- mdTypeDef td, // [IN] the class/interface on which the property is being defined
- LPCWSTR szProperty, // [IN] Name of the property
- DWORD dwPropFlags, // [IN] CorPropertyAttr
- PCCOR_SIGNATURE pvSig, // [IN] the required type signature
- ULONG cbSig, // [IN] the size of the type signature blob
- DWORD dwCPlusTypeFlag, // [IN] flag for value type. selected ELEMENT_TYPE_*
- void const *pValue, // [IN] constant value
- ULONG cchValue, // [IN] size of constant value (string, in wide chars).
- mdMethodDef mdSetter, // [IN] optional setter of the property
- mdMethodDef mdGetter, // [IN] optional getter of the property
- mdMethodDef rmdOtherMethods[], // [IN] an optional array of other methods
- mdProperty *pmdProp) PURE; // [OUT] output property token
-
- STDMETHOD(DefineParam)(
- mdMethodDef md, // [IN] Owning method
- ULONG ulParamSeq, // [IN] Which param
- LPCWSTR szName, // [IN] Optional param name
- DWORD dwParamFlags, // [IN] Optional param flags
- DWORD dwCPlusTypeFlag, // [IN] flag for value type. selected ELEMENT_TYPE_*
- void const *pValue, // [IN] constant value
- ULONG cchValue, // [IN] size of constant value (string, in wide chars).
- mdParamDef *ppd) PURE; // [OUT] Put param token here
-
- STDMETHOD(SetFieldProps)( // S_OK or error.
- mdFieldDef fd, // [IN] The FieldDef.
- DWORD dwFieldFlags, // [IN] Field attributes.
- DWORD dwCPlusTypeFlag, // [IN] Flag for the value type, selected ELEMENT_TYPE_*
- void const *pValue, // [IN] Constant value.
- ULONG cchValue) PURE; // [IN] size of constant value (string, in wide chars).
-
- STDMETHOD(SetPropertyProps)( // S_OK or error.
- mdProperty pr, // [IN] Property token.
- DWORD dwPropFlags, // [IN] CorPropertyAttr.
- DWORD dwCPlusTypeFlag, // [IN] Flag for value type, selected ELEMENT_TYPE_*
- void const *pValue, // [IN] Constant value.
- ULONG cchValue, // [IN] size of constant value (string, in wide chars).
- mdMethodDef mdSetter, // [IN] Setter of the property.
- mdMethodDef mdGetter, // [IN] Getter of the property.
- mdMethodDef rmdOtherMethods[]) PURE;// [IN] Array of other methods.
-
- STDMETHOD(SetParamProps)( // Return code.
- mdParamDef pd, // [IN] Param token.
- LPCWSTR szName, // [IN] Param name.
- DWORD dwParamFlags, // [IN] Param flags.
- DWORD dwCPlusTypeFlag, // [IN] Flag for value type. selected ELEMENT_TYPE_*.
- void const *pValue, // [OUT] Constant value.
- ULONG cchValue) PURE; // [IN] size of constant value (string, in wide chars).
-
- // Specialized Custom Attributes for security.
- STDMETHOD(DefineSecurityAttributeSet)( // Return code.
- mdToken tkObj, // [IN] Class or method requiring security attributes.
- COR_SECATTR rSecAttrs[], // [IN] Array of security attribute descriptions.
- ULONG cSecAttrs, // [IN] Count of elements in above array.
- ULONG *pulErrorAttr) PURE; // [OUT] On error, index of attribute causing problem.
-
- STDMETHOD(ApplyEditAndContinue)( // S_OK or error.
- IUnknown *pImport) PURE; // [IN] Metadata from the delta PE.
-
- STDMETHOD(TranslateSigWithScope)(
- IMetaDataAssemblyImport *pAssemImport, // [IN] importing assembly interface
- const void *pbHashValue, // [IN] Hash Blob for Assembly.
- ULONG cbHashValue, // [IN] Count of bytes.
- IMetaDataImport *import, // [IN] importing interface
- PCCOR_SIGNATURE pbSigBlob, // [IN] signature in the importing scope
- ULONG cbSigBlob, // [IN] count of bytes of signature
- IMetaDataAssemblyEmit *pAssemEmit, // [IN] emit assembly interface
- IMetaDataEmit *emit, // [IN] emit interface
- PCOR_SIGNATURE pvTranslatedSig, // [OUT] buffer to hold translated signature
- ULONG cbTranslatedSigMax,
- ULONG *pcbTranslatedSig) PURE;// [OUT] count of bytes in the translated signature
-
- STDMETHOD(SetMethodImplFlags)( // [IN] S_OK or error.
- mdMethodDef md, // [IN] Method for which to set ImplFlags
- DWORD dwImplFlags) PURE;
-
- STDMETHOD(SetFieldRVA)( // [IN] S_OK or error.
- mdFieldDef fd, // [IN] Field for which to set offset
- ULONG ulRVA) PURE; // [IN] The offset
-
- STDMETHOD(Merge)( // S_OK or error.
- IMetaDataImport *pImport, // [IN] The scope to be merged.
- IMapToken *pHostMapToken, // [IN] Host IMapToken interface to receive token remap notification
- IUnknown *pHandler) PURE; // [IN] An object to receive to receive error notification.
-
- STDMETHOD(MergeEnd)() PURE; // S_OK or error.
-
- // This interface is sealed. Do not change, add, or remove anything. Instead, derive a new iterface.
-
-}; // IMetaDataEmit
-
-//-------------------------------------
-//--- IMetaDataEmit2
-//-------------------------------------
-// {F5DD9950-F693-42e6-830E-7B833E8146A9}
-EXTERN_GUID(IID_IMetaDataEmit2, 0xf5dd9950, 0xf693, 0x42e6, 0x83, 0xe, 0x7b, 0x83, 0x3e, 0x81, 0x46, 0xa9);
-
-//---
-#undef INTERFACE
-#define INTERFACE IMetaDataEmit2
-DECLARE_INTERFACE_(IMetaDataEmit2, IMetaDataEmit)
-{
- STDMETHOD(DefineMethodSpec)(
- mdToken tkParent, // [IN] MethodDef or MemberRef
- PCCOR_SIGNATURE pvSigBlob, // [IN] point to a blob value of COM+ signature
- ULONG cbSigBlob, // [IN] count of bytes in the signature blob
- mdMethodSpec *pmi) PURE; // [OUT] method instantiation token
-
- STDMETHOD(GetDeltaSaveSize)( // S_OK or error.
- CorSaveSize fSave, // [IN] cssAccurate or cssQuick.
- DWORD *pdwSaveSize) PURE; // [OUT] Put the size here.
-
- STDMETHOD(SaveDelta)( // S_OK or error.
- LPCWSTR szFile, // [IN] The filename to save to.
- DWORD dwSaveFlags) PURE; // [IN] Flags for the save.
-
- STDMETHOD(SaveDeltaToStream)( // S_OK or error.
- IStream *pIStream, // [IN] A writable stream to save to.
- DWORD dwSaveFlags) PURE; // [IN] Flags for the save.
-
- STDMETHOD(SaveDeltaToMemory)( // S_OK or error.
- void *pbData, // [OUT] Location to write data.
- ULONG cbData) PURE; // [IN] Max size of data buffer.
-
- STDMETHOD(DefineGenericParam)( // S_OK or error.
- mdToken tk, // [IN] TypeDef or MethodDef
- ULONG ulParamSeq, // [IN] Index of the type parameter
- DWORD dwParamFlags, // [IN] Flags, for future use (e.g. variance)
- LPCWSTR szname, // [IN] Name
- DWORD reserved, // [IN] For future use (e.g. non-type parameters)
- mdToken rtkConstraints[], // [IN] Array of type constraints (TypeDef,TypeRef,TypeSpec)
- mdGenericParam *pgp) PURE; // [OUT] Put GenericParam token here
-
- STDMETHOD(SetGenericParamProps)( // S_OK or error.
- mdGenericParam gp, // [IN] GenericParam
- DWORD dwParamFlags, // [IN] Flags, for future use (e.g. variance)
- LPCWSTR szName, // [IN] Optional name
- DWORD reserved, // [IN] For future use (e.g. non-type parameters)
- mdToken rtkConstraints[]) PURE;// [IN] Array of type constraints (TypeDef,TypeRef,TypeSpec)
-
- STDMETHOD(ResetENCLog)() PURE; // S_OK or error.
-
-};
-
-//-------------------------------------
-//--- IMetaDataImport
-//-------------------------------------
-// {7DAC8207-D3AE-4c75-9B67-92801A497D44}
-EXTERN_GUID(IID_IMetaDataImport, 0x7dac8207, 0xd3ae, 0x4c75, 0x9b, 0x67, 0x92, 0x80, 0x1a, 0x49, 0x7d, 0x44);
-
-//---
-#undef INTERFACE
-#define INTERFACE IMetaDataImport
-DECLARE_INTERFACE_(IMetaDataImport, IUnknown)
-{
- STDMETHOD_(void, CloseEnum)(HCORENUM hEnum) PURE;
- STDMETHOD(CountEnum)(HCORENUM hEnum, ULONG *pulCount) PURE;
- STDMETHOD(ResetEnum)(HCORENUM hEnum, ULONG ulPos) PURE;
- STDMETHOD(EnumTypeDefs)(HCORENUM *phEnum, mdTypeDef rTypeDefs[],
- ULONG cMax, ULONG *pcTypeDefs) PURE;
- STDMETHOD(EnumInterfaceImpls)(HCORENUM *phEnum, mdTypeDef td,
- mdInterfaceImpl rImpls[], ULONG cMax,
- ULONG* pcImpls) PURE;
- STDMETHOD(EnumTypeRefs)(HCORENUM *phEnum, mdTypeRef rTypeRefs[],
- ULONG cMax, ULONG* pcTypeRefs) PURE;
-
- STDMETHOD(FindTypeDefByName)( // S_OK or error.
- LPCWSTR szTypeDef, // [IN] Name of the Type.
- mdToken tkEnclosingClass, // [IN] TypeDef/TypeRef for Enclosing class.
- mdTypeDef *ptd) PURE; // [OUT] Put the TypeDef token here.
-
- STDMETHOD(GetScopeProps)( // S_OK or error.
- _Out_writes_to_opt_(cchName, *pchName)
- LPWSTR szName, // [OUT] Put the name here.
- ULONG cchName, // [IN] Size of name buffer in wide chars.
- ULONG *pchName, // [OUT] Put size of name (wide chars) here.
- GUID *pmvid) PURE; // [OUT, OPTIONAL] Put MVID here.
-
- STDMETHOD(GetModuleFromScope)( // S_OK.
- mdModule *pmd) PURE; // [OUT] Put mdModule token here.
-
- STDMETHOD(GetTypeDefProps)( // S_OK or error.
- mdTypeDef td, // [IN] TypeDef token for inquiry.
- _Out_writes_to_opt_(cchTypeDef, *pchTypeDef)
- LPWSTR szTypeDef, // [OUT] Put name here.
- ULONG cchTypeDef, // [IN] size of name buffer in wide chars.
- ULONG *pchTypeDef, // [OUT] put size of name (wide chars) here.
- DWORD *pdwTypeDefFlags, // [OUT] Put flags here.
- mdToken *ptkExtends) PURE; // [OUT] Put base class TypeDef/TypeRef here.
-
- STDMETHOD(GetInterfaceImplProps)( // S_OK or error.
- mdInterfaceImpl iiImpl, // [IN] InterfaceImpl token.
- mdTypeDef *pClass, // [OUT] Put implementing class token here.
- mdToken *ptkIface) PURE; // [OUT] Put implemented interface token here.
-
- STDMETHOD(GetTypeRefProps)( // S_OK or error.
- mdTypeRef tr, // [IN] TypeRef token.
- mdToken *ptkResolutionScope, // [OUT] Resolution scope, ModuleRef or AssemblyRef.
- _Out_writes_to_opt_(cchName, *pchName)
- LPWSTR szName, // [OUT] Name of the TypeRef.
- ULONG cchName, // [IN] Size of buffer.
- ULONG *pchName) PURE; // [OUT] Size of Name.
-
- STDMETHOD(ResolveTypeRef)(mdTypeRef tr, REFIID riid, IUnknown **ppIScope, mdTypeDef *ptd) PURE;
-
- STDMETHOD(EnumMembers)( // S_OK, S_FALSE, or error.
- HCORENUM *phEnum, // [IN|OUT] Pointer to the enum.
- mdTypeDef cl, // [IN] TypeDef to scope the enumeration.
- mdToken rMembers[], // [OUT] Put MemberDefs here.
- ULONG cMax, // [IN] Max MemberDefs to put.
- ULONG *pcTokens) PURE; // [OUT] Put # put here.
-
- STDMETHOD(EnumMembersWithName)( // S_OK, S_FALSE, or error.
- HCORENUM *phEnum, // [IN|OUT] Pointer to the enum.
- mdTypeDef cl, // [IN] TypeDef to scope the enumeration.
- LPCWSTR szName, // [IN] Limit results to those with this name.
- mdToken rMembers[], // [OUT] Put MemberDefs here.
- ULONG cMax, // [IN] Max MemberDefs to put.
- ULONG *pcTokens) PURE; // [OUT] Put # put here.
-
- STDMETHOD(EnumMethods)( // S_OK, S_FALSE, or error.
- HCORENUM *phEnum, // [IN|OUT] Pointer to the enum.
- mdTypeDef cl, // [IN] TypeDef to scope the enumeration.
- mdMethodDef rMethods[], // [OUT] Put MethodDefs here.
- ULONG cMax, // [IN] Max MethodDefs to put.
- ULONG *pcTokens) PURE; // [OUT] Put # put here.
-
- STDMETHOD(EnumMethodsWithName)( // S_OK, S_FALSE, or error.
- HCORENUM *phEnum, // [IN|OUT] Pointer to the enum.
- mdTypeDef cl, // [IN] TypeDef to scope the enumeration.
- LPCWSTR szName, // [IN] Limit results to those with this name.
- mdMethodDef rMethods[], // [OU] Put MethodDefs here.
- ULONG cMax, // [IN] Max MethodDefs to put.
- ULONG *pcTokens) PURE; // [OUT] Put # put here.
-
- STDMETHOD(EnumFields)( // S_OK, S_FALSE, or error.
- HCORENUM *phEnum, // [IN|OUT] Pointer to the enum.
- mdTypeDef cl, // [IN] TypeDef to scope the enumeration.
- mdFieldDef rFields[], // [OUT] Put FieldDefs here.
- ULONG cMax, // [IN] Max FieldDefs to put.
- ULONG *pcTokens) PURE; // [OUT] Put # put here.
-
- STDMETHOD(EnumFieldsWithName)( // S_OK, S_FALSE, or error.
- HCORENUM *phEnum, // [IN|OUT] Pointer to the enum.
- mdTypeDef cl, // [IN] TypeDef to scope the enumeration.
- LPCWSTR szName, // [IN] Limit results to those with this name.
- mdFieldDef rFields[], // [OUT] Put MemberDefs here.
- ULONG cMax, // [IN] Max MemberDefs to put.
- ULONG *pcTokens) PURE; // [OUT] Put # put here.
-
-
- STDMETHOD(EnumParams)( // S_OK, S_FALSE, or error.
- HCORENUM *phEnum, // [IN|OUT] Pointer to the enum.
- mdMethodDef mb, // [IN] MethodDef to scope the enumeration.
- mdParamDef rParams[], // [OUT] Put ParamDefs here.
- ULONG cMax, // [IN] Max ParamDefs to put.
- ULONG *pcTokens) PURE; // [OUT] Put # put here.
-
- STDMETHOD(EnumMemberRefs)( // S_OK, S_FALSE, or error.
- HCORENUM *phEnum, // [IN|OUT] Pointer to the enum.
- mdToken tkParent, // [IN] Parent token to scope the enumeration.
- mdMemberRef rMemberRefs[], // [OUT] Put MemberRefs here.
- ULONG cMax, // [IN] Max MemberRefs to put.
- ULONG *pcTokens) PURE; // [OUT] Put # put here.
-
- STDMETHOD(EnumMethodImpls)( // S_OK, S_FALSE, or error
- HCORENUM *phEnum, // [IN|OUT] Pointer to the enum.
- mdTypeDef td, // [IN] TypeDef to scope the enumeration.
- mdToken rMethodBody[], // [OUT] Put Method Body tokens here.
- mdToken rMethodDecl[], // [OUT] Put Method Declaration tokens here.
- ULONG cMax, // [IN] Max tokens to put.
- ULONG *pcTokens) PURE; // [OUT] Put # put here.
-
- STDMETHOD(EnumPermissionSets)( // S_OK, S_FALSE, or error.
- HCORENUM *phEnum, // [IN|OUT] Pointer to the enum.
- mdToken tk, // [IN] if !NIL, token to scope the enumeration.
- DWORD dwActions, // [IN] if !0, return only these actions.
- mdPermission rPermission[], // [OUT] Put Permissions here.
- ULONG cMax, // [IN] Max Permissions to put.
- ULONG *pcTokens) PURE; // [OUT] Put # put here.
-
- STDMETHOD(FindMember)(
- mdTypeDef td, // [IN] given typedef
- LPCWSTR szName, // [IN] member name
- PCCOR_SIGNATURE pvSigBlob, // [IN] point to a blob value of CLR signature
- ULONG cbSigBlob, // [IN] count of bytes in the signature blob
- mdToken *pmb) PURE; // [OUT] matching memberdef
-
- STDMETHOD(FindMethod)(
- mdTypeDef td, // [IN] given typedef
- LPCWSTR szName, // [IN] member name
- PCCOR_SIGNATURE pvSigBlob, // [IN] point to a blob value of CLR signature
- ULONG cbSigBlob, // [IN] count of bytes in the signature blob
- mdMethodDef *pmb) PURE; // [OUT] matching memberdef
-
- STDMETHOD(FindField)(
- mdTypeDef td, // [IN] given typedef
- LPCWSTR szName, // [IN] member name
- PCCOR_SIGNATURE pvSigBlob, // [IN] point to a blob value of CLR signature
- ULONG cbSigBlob, // [IN] count of bytes in the signature blob
- mdFieldDef *pmb) PURE; // [OUT] matching memberdef
-
- STDMETHOD(FindMemberRef)(
- mdTypeRef td, // [IN] given typeRef
- LPCWSTR szName, // [IN] member name
- PCCOR_SIGNATURE pvSigBlob, // [IN] point to a blob value of CLR signature
- ULONG cbSigBlob, // [IN] count of bytes in the signature blob
- mdMemberRef *pmr) PURE; // [OUT] matching memberref
-
- STDMETHOD (GetMethodProps)(
- mdMethodDef mb, // The method for which to get props.
- mdTypeDef *pClass, // Put method's class here.
- _Out_writes_to_opt_(cchMethod, *pchMethod)
- LPWSTR szMethod, // Put method's name here.
- ULONG cchMethod, // Size of szMethod buffer in wide chars.
- ULONG *pchMethod, // Put actual size here
- DWORD *pdwAttr, // Put flags here.
- PCCOR_SIGNATURE *ppvSigBlob, // [OUT] point to the blob value of meta data
- ULONG *pcbSigBlob, // [OUT] actual size of signature blob
- ULONG *pulCodeRVA, // [OUT] codeRVA
- DWORD *pdwImplFlags) PURE; // [OUT] Impl. Flags
-
- STDMETHOD(GetMemberRefProps)( // S_OK or error.
- mdMemberRef mr, // [IN] given memberref
- mdToken *ptk, // [OUT] Put classref or classdef here.
- _Out_writes_to_opt_(cchMember, *pchMember)
- LPWSTR szMember, // [OUT] buffer to fill for member's name
- ULONG cchMember, // [IN] the count of char of szMember
- ULONG *pchMember, // [OUT] actual count of char in member name
- PCCOR_SIGNATURE *ppvSigBlob, // [OUT] point to meta data blob value
- ULONG *pbSig) PURE; // [OUT] actual size of signature blob
-
- STDMETHOD(EnumProperties)( // S_OK, S_FALSE, or error.
- HCORENUM *phEnum, // [IN|OUT] Pointer to the enum.
- mdTypeDef td, // [IN] TypeDef to scope the enumeration.
- mdProperty rProperties[], // [OUT] Put Properties here.
- ULONG cMax, // [IN] Max properties to put.
- ULONG *pcProperties) PURE; // [OUT] Put # put here.
-
- STDMETHOD(EnumEvents)( // S_OK, S_FALSE, or error.
- HCORENUM *phEnum, // [IN|OUT] Pointer to the enum.
- mdTypeDef td, // [IN] TypeDef to scope the enumeration.
- mdEvent rEvents[], // [OUT] Put events here.
- ULONG cMax, // [IN] Max events to put.
- ULONG *pcEvents) PURE; // [OUT] Put # put here.
-
- STDMETHOD(GetEventProps)( // S_OK, S_FALSE, or error.
- mdEvent ev, // [IN] event token
- mdTypeDef *pClass, // [OUT] typedef containing the event declarion.
- LPCWSTR szEvent, // [OUT] Event name
- ULONG cchEvent, // [IN] the count of wchar of szEvent
- ULONG *pchEvent, // [OUT] actual count of wchar for event's name
- DWORD *pdwEventFlags, // [OUT] Event flags.
- mdToken *ptkEventType, // [OUT] EventType class
- mdMethodDef *pmdAddOn, // [OUT] AddOn method of the event
- mdMethodDef *pmdRemoveOn, // [OUT] RemoveOn method of the event
- mdMethodDef *pmdFire, // [OUT] Fire method of the event
- mdMethodDef rmdOtherMethod[], // [OUT] other method of the event
- ULONG cMax, // [IN] size of rmdOtherMethod
- ULONG *pcOtherMethod) PURE; // [OUT] total number of other method of this event
-
- STDMETHOD(EnumMethodSemantics)( // S_OK, S_FALSE, or error.
- HCORENUM *phEnum, // [IN|OUT] Pointer to the enum.
- mdMethodDef mb, // [IN] MethodDef to scope the enumeration.
- mdToken rEventProp[], // [OUT] Put Event/Property here.
- ULONG cMax, // [IN] Max properties to put.
- ULONG *pcEventProp) PURE; // [OUT] Put # put here.
-
- STDMETHOD(GetMethodSemantics)( // S_OK, S_FALSE, or error.
- mdMethodDef mb, // [IN] method token
- mdToken tkEventProp, // [IN] event/property token.
- DWORD *pdwSemanticsFlags) PURE; // [OUT] the role flags for the method/propevent pair
-
- STDMETHOD(GetClassLayout) (
- mdTypeDef td, // [IN] give typedef
- DWORD *pdwPackSize, // [OUT] 1, 2, 4, 8, or 16
- COR_FIELD_OFFSET rFieldOffset[], // [OUT] field offset array
- ULONG cMax, // [IN] size of the array
- ULONG *pcFieldOffset, // [OUT] needed array size
- ULONG *pulClassSize) PURE; // [OUT] the size of the class
-
- STDMETHOD(GetFieldMarshal) (
- mdToken tk, // [IN] given a field's memberdef
- PCCOR_SIGNATURE *ppvNativeType, // [OUT] native type of this field
- ULONG *pcbNativeType) PURE; // [OUT] the count of bytes of *ppvNativeType
-
- STDMETHOD(GetRVA)( // S_OK or error.
- mdToken tk, // Member for which to set offset
- ULONG *pulCodeRVA, // The offset
- DWORD *pdwImplFlags) PURE; // the implementation flags
-
- STDMETHOD(GetPermissionSetProps) (
- mdPermission pm, // [IN] the permission token.
- DWORD *pdwAction, // [OUT] CorDeclSecurity.
- void const **ppvPermission, // [OUT] permission blob.
- ULONG *pcbPermission) PURE; // [OUT] count of bytes of pvPermission.
-
- STDMETHOD(GetSigFromToken)( // S_OK or error.
- mdSignature mdSig, // [IN] Signature token.
- PCCOR_SIGNATURE *ppvSig, // [OUT] return pointer to token.
- ULONG *pcbSig) PURE; // [OUT] return size of signature.
-
- STDMETHOD(GetModuleRefProps)( // S_OK or error.
- mdModuleRef mur, // [IN] moduleref token.
- _Out_writes_to_opt_(cchName, *pchName)
- LPWSTR szName, // [OUT] buffer to fill with the moduleref name.
- ULONG cchName, // [IN] size of szName in wide characters.
- ULONG *pchName) PURE; // [OUT] actual count of characters in the name.
-
- STDMETHOD(EnumModuleRefs)( // S_OK or error.
- HCORENUM *phEnum, // [IN|OUT] pointer to the enum.
- mdModuleRef rModuleRefs[], // [OUT] put modulerefs here.
- ULONG cmax, // [IN] max memberrefs to put.
- ULONG *pcModuleRefs) PURE; // [OUT] put # put here.
-
- STDMETHOD(GetTypeSpecFromToken)( // S_OK or error.
- mdTypeSpec typespec, // [IN] TypeSpec token.
- PCCOR_SIGNATURE *ppvSig, // [OUT] return pointer to TypeSpec signature
- ULONG *pcbSig) PURE; // [OUT] return size of signature.
-
- STDMETHOD(GetNameFromToken)( // Not Recommended! May be removed!
- mdToken tk, // [IN] Token to get name from. Must have a name.
- MDUTF8CSTR *pszUtf8NamePtr) PURE; // [OUT] Return pointer to UTF8 name in heap.
-
- STDMETHOD(EnumUnresolvedMethods)( // S_OK, S_FALSE, or error.
- HCORENUM *phEnum, // [IN|OUT] Pointer to the enum.
- mdToken rMethods[], // [OUT] Put MemberDefs here.
- ULONG cMax, // [IN] Max MemberDefs to put.
- ULONG *pcTokens) PURE; // [OUT] Put # put here.
-
- STDMETHOD(GetUserString)( // S_OK or error.
- mdString stk, // [IN] String token.
- _Out_writes_to_opt_(cchString, *pchString)
- LPWSTR szString, // [OUT] Copy of string.
- ULONG cchString, // [IN] Max chars of room in szString.
- ULONG *pchString) PURE; // [OUT] How many chars in actual string.
-
- STDMETHOD(GetPinvokeMap)( // S_OK or error.
- mdToken tk, // [IN] FieldDef or MethodDef.
- DWORD *pdwMappingFlags, // [OUT] Flags used for mapping.
- _Out_writes_to_opt_(cchImportName, *pchImportName)
- LPWSTR szImportName, // [OUT] Import name.
- ULONG cchImportName, // [IN] Size of the name buffer.
- ULONG *pchImportName, // [OUT] Actual number of characters stored.
- mdModuleRef *pmrImportDLL) PURE; // [OUT] ModuleRef token for the target DLL.
-
- STDMETHOD(EnumSignatures)( // S_OK or error.
- HCORENUM *phEnum, // [IN|OUT] pointer to the enum.
- mdSignature rSignatures[], // [OUT] put signatures here.
- ULONG cmax, // [IN] max signatures to put.
- ULONG *pcSignatures) PURE; // [OUT] put # put here.
-
- STDMETHOD(EnumTypeSpecs)( // S_OK or error.
- HCORENUM *phEnum, // [IN|OUT] pointer to the enum.
- mdTypeSpec rTypeSpecs[], // [OUT] put TypeSpecs here.
- ULONG cmax, // [IN] max TypeSpecs to put.
- ULONG *pcTypeSpecs) PURE; // [OUT] put # put here.
-
- STDMETHOD(EnumUserStrings)( // S_OK or error.
- HCORENUM *phEnum, // [IN/OUT] pointer to the enum.
- mdString rStrings[], // [OUT] put Strings here.
- ULONG cmax, // [IN] max Strings to put.
- ULONG *pcStrings) PURE; // [OUT] put # put here.
-
- STDMETHOD(GetParamForMethodIndex)( // S_OK or error.
- mdMethodDef md, // [IN] Method token.
- ULONG ulParamSeq, // [IN] Parameter sequence.
- mdParamDef *ppd) PURE; // [IN] Put Param token here.
-
- STDMETHOD(EnumCustomAttributes)( // S_OK or error.
- HCORENUM *phEnum, // [IN, OUT] COR enumerator.
- mdToken tk, // [IN] Token to scope the enumeration, 0 for all.
- mdToken tkType, // [IN] Type of interest, 0 for all.
- mdCustomAttribute rCustomAttributes[], // [OUT] Put custom attribute tokens here.
- ULONG cMax, // [IN] Size of rCustomAttributes.
- ULONG *pcCustomAttributes) PURE; // [OUT, OPTIONAL] Put count of token values here.
-
- STDMETHOD(GetCustomAttributeProps)( // S_OK or error.
- mdCustomAttribute cv, // [IN] CustomAttribute token.
- mdToken *ptkObj, // [OUT, OPTIONAL] Put object token here.
- mdToken *ptkType, // [OUT, OPTIONAL] Put AttrType token here.
- void const **ppBlob, // [OUT, OPTIONAL] Put pointer to data here.
- ULONG *pcbSize) PURE; // [OUT, OPTIONAL] Put size of date here.
-
- STDMETHOD(FindTypeRef)(
- mdToken tkResolutionScope, // [IN] ModuleRef, AssemblyRef or TypeRef.
- LPCWSTR szName, // [IN] TypeRef Name.
- mdTypeRef *ptr) PURE; // [OUT] matching TypeRef.
-
- STDMETHOD(GetMemberProps)(
- mdToken mb, // The member for which to get props.
- mdTypeDef *pClass, // Put member's class here.
- _Out_writes_to_opt_(cchMember, *pchMember)
- LPWSTR szMember, // Put member's name here.
- ULONG cchMember, // Size of szMember buffer in wide chars.
- ULONG *pchMember, // Put actual size here
- DWORD *pdwAttr, // Put flags here.
- PCCOR_SIGNATURE *ppvSigBlob, // [OUT] point to the blob value of meta data
- ULONG *pcbSigBlob, // [OUT] actual size of signature blob
- ULONG *pulCodeRVA, // [OUT] codeRVA
- DWORD *pdwImplFlags, // [OUT] Impl. Flags
- DWORD *pdwCPlusTypeFlag, // [OUT] flag for value type. selected ELEMENT_TYPE_*
- UVCP_CONSTANT *ppValue, // [OUT] constant value
- ULONG *pcchValue) PURE; // [OUT] size of constant string in chars, 0 for non-strings.
-
- STDMETHOD(GetFieldProps)(
- mdFieldDef mb, // The field for which to get props.
- mdTypeDef *pClass, // Put field's class here.
- _Out_writes_to_opt_(cchField, *pchField)
- LPWSTR szField, // Put field's name here.
- ULONG cchField, // Size of szField buffer in wide chars.
- ULONG *pchField, // Put actual size here
- DWORD *pdwAttr, // Put flags here.
- PCCOR_SIGNATURE *ppvSigBlob, // [OUT] point to the blob value of meta data
- ULONG *pcbSigBlob, // [OUT] actual size of signature blob
- DWORD *pdwCPlusTypeFlag, // [OUT] flag for value type. selected ELEMENT_TYPE_*
- UVCP_CONSTANT *ppValue, // [OUT] constant value
- ULONG *pcchValue) PURE; // [OUT] size of constant string in chars, 0 for non-strings.
-
- STDMETHOD(GetPropertyProps)( // S_OK, S_FALSE, or error.
- mdProperty prop, // [IN] property token
- mdTypeDef *pClass, // [OUT] typedef containing the property declarion.
- LPCWSTR szProperty, // [OUT] Property name
- ULONG cchProperty, // [IN] the count of wchar of szProperty
- ULONG *pchProperty, // [OUT] actual count of wchar for property name
- DWORD *pdwPropFlags, // [OUT] property flags.
- PCCOR_SIGNATURE *ppvSig, // [OUT] property type. pointing to meta data internal blob
- ULONG *pbSig, // [OUT] count of bytes in *ppvSig
- DWORD *pdwCPlusTypeFlag, // [OUT] flag for value type. selected ELEMENT_TYPE_*
- UVCP_CONSTANT *ppDefaultValue, // [OUT] constant value
- ULONG *pcchDefaultValue, // [OUT] size of constant string in chars, 0 for non-strings.
- mdMethodDef *pmdSetter, // [OUT] setter method of the property
- mdMethodDef *pmdGetter, // [OUT] getter method of the property
- mdMethodDef rmdOtherMethod[], // [OUT] other method of the property
- ULONG cMax, // [IN] size of rmdOtherMethod
- ULONG *pcOtherMethod) PURE; // [OUT] total number of other method of this property
-
- STDMETHOD(GetParamProps)( // S_OK or error.
- mdParamDef tk, // [IN]The Parameter.
- mdMethodDef *pmd, // [OUT] Parent Method token.
- ULONG *pulSequence, // [OUT] Parameter sequence.
- _Out_writes_to_opt_(cchName, *pchName)
- LPWSTR szName, // [OUT] Put name here.
- ULONG cchName, // [OUT] Size of name buffer.
- ULONG *pchName, // [OUT] Put actual size of name here.
- DWORD *pdwAttr, // [OUT] Put flags here.
- DWORD *pdwCPlusTypeFlag, // [OUT] Flag for value type. selected ELEMENT_TYPE_*.
- UVCP_CONSTANT *ppValue, // [OUT] Constant value.
- ULONG *pcchValue) PURE; // [OUT] size of constant string in chars, 0 for non-strings.
-
- STDMETHOD(GetCustomAttributeByName)( // S_OK or error.
- mdToken tkObj, // [IN] Object with Custom Attribute.
- LPCWSTR szName, // [IN] Name of desired Custom Attribute.
- const void **ppData, // [OUT] Put pointer to data here.
- ULONG *pcbData) PURE; // [OUT] Put size of data here.
-
- STDMETHOD_(BOOL, IsValidToken)( // True or False.
- mdToken tk) PURE; // [IN] Given token.
-
- STDMETHOD(GetNestedClassProps)( // S_OK or error.
- mdTypeDef tdNestedClass, // [IN] NestedClass token.
- mdTypeDef *ptdEnclosingClass) PURE; // [OUT] EnclosingClass token.
-
- STDMETHOD(GetNativeCallConvFromSig)( // S_OK or error.
- void const *pvSig, // [IN] Pointer to signature.
- ULONG cbSig, // [IN] Count of signature bytes.
- ULONG *pCallConv) PURE; // [OUT] Put calling conv here (see CorPinvokemap).
-
- STDMETHOD(IsGlobal)( // S_OK or error.
- mdToken pd, // [IN] Type, Field, or Method token.
- int *pbGlobal) PURE; // [OUT] Put 1 if global, 0 otherwise.
-
- // This interface is sealed. Do not change, add, or remove anything. Instead, derive a new iterface.
-
-}; // IMetaDataImport
-
-//-------------------------------------
-//--- IMetaDataImport2
-//-------------------------------------
-// {FCE5EFA0-8BBA-4f8e-A036-8F2022B08466}
-EXTERN_GUID(IID_IMetaDataImport2, 0xfce5efa0, 0x8bba, 0x4f8e, 0xa0, 0x36, 0x8f, 0x20, 0x22, 0xb0, 0x84, 0x66);
-
-//---
-#undef INTERFACE
-#define INTERFACE IMetaDataImport2
-DECLARE_INTERFACE_(IMetaDataImport2, IMetaDataImport)
-{
- STDMETHOD(EnumGenericParams)(
- HCORENUM *phEnum, // [IN|OUT] Pointer to the enum.
- mdToken tk, // [IN] TypeDef or MethodDef whose generic parameters are requested
- mdGenericParam rGenericParams[], // [OUT] Put GenericParams here.
- ULONG cMax, // [IN] Max GenericParams to put.
- ULONG *pcGenericParams) PURE; // [OUT] Put # put here.
-
- STDMETHOD(GetGenericParamProps)( // S_OK or error.
- mdGenericParam gp, // [IN] GenericParam
- ULONG *pulParamSeq, // [OUT] Index of the type parameter
- DWORD *pdwParamFlags, // [OUT] Flags, for future use (e.g. variance)
- mdToken *ptOwner, // [OUT] Owner (TypeDef or MethodDef)
- DWORD *reserved, // [OUT] For future use (e.g. non-type parameters)
- _Out_writes_to_opt_(cchName, *pchName)
- LPWSTR wzname, // [OUT] Put name here
- ULONG cchName, // [IN] Size of buffer
- ULONG *pchName) PURE; // [OUT] Put size of name (wide chars) here.
-
- STDMETHOD(GetMethodSpecProps)(
- mdMethodSpec mi, // [IN] The method instantiation
- mdToken *tkParent, // [OUT] MethodDef or MemberRef
- PCCOR_SIGNATURE *ppvSigBlob, // [OUT] point to the blob value of meta data
- ULONG *pcbSigBlob) PURE; // [OUT] actual size of signature blob
-
- STDMETHOD(EnumGenericParamConstraints)(
- HCORENUM *phEnum, // [IN|OUT] Pointer to the enum.
- mdGenericParam tk, // [IN] GenericParam whose constraints are requested
- mdGenericParamConstraint rGenericParamConstraints[], // [OUT] Put GenericParamConstraints here.
- ULONG cMax, // [IN] Max GenericParamConstraints to put.
- ULONG *pcGenericParamConstraints) PURE; // [OUT] Put # put here.
-
- STDMETHOD(GetGenericParamConstraintProps)( // S_OK or error.
- mdGenericParamConstraint gpc, // [IN] GenericParamConstraint
- mdGenericParam *ptGenericParam, // [OUT] GenericParam that is constrained
- mdToken *ptkConstraintType) PURE; // [OUT] TypeDef/Ref/Spec constraint
-
- STDMETHOD(GetPEKind)( // S_OK or error.
- DWORD* pdwPEKind, // [OUT] The kind of PE (0 - not a PE)
- DWORD* pdwMAchine) PURE; // [OUT] Machine as defined in NT header
-
- STDMETHOD(GetVersionString)( // S_OK or error.
- _Out_writes_to_opt_(ccBufSize, *pccBufSize)
- LPWSTR pwzBuf, // [OUT] Put version string here.
- DWORD ccBufSize, // [IN] size of the buffer, in wide chars
- DWORD *pccBufSize) PURE; // [OUT] Size of the version string, wide chars, including terminating nul.
-
- STDMETHOD(EnumMethodSpecs)(
- HCORENUM *phEnum, // [IN|OUT] Pointer to the enum.
- mdToken tk, // [IN] MethodDef or MemberRef whose MethodSpecs are requested
- mdMethodSpec rMethodSpecs[], // [OUT] Put MethodSpecs here.
- ULONG cMax, // [IN] Max tokens to put.
- ULONG *pcMethodSpecs) PURE; // [OUT] Put actual count here.
-
-}; // IMetaDataImport2
-
-//-------------------------------------
-//--- IMetaDataFilter
-//-------------------------------------
-// {D0E80DD1-12D4-11d3-B39D-00C04FF81795}
-EXTERN_GUID(IID_IMetaDataFilter, 0xd0e80dd1, 0x12d4, 0x11d3, 0xb3, 0x9d, 0x0, 0xc0, 0x4f, 0xf8, 0x17, 0x95);
-
-//---
-#undef INTERFACE
-#define INTERFACE IMetaDataFilter
-DECLARE_INTERFACE_(IMetaDataFilter, IUnknown)
-{
- STDMETHOD(UnmarkAll)() PURE;
- STDMETHOD(MarkToken)(mdToken tk) PURE;
- STDMETHOD(IsTokenMarked)(mdToken tk, BOOL *pIsMarked) PURE;
-};
-
-
-//-------------------------------------
-//--- IHostFilter
-//-------------------------------------
-// {D0E80DD3-12D4-11d3-B39D-00C04FF81795}
-EXTERN_GUID(IID_IHostFilter, 0xd0e80dd3, 0x12d4, 0x11d3, 0xb3, 0x9d, 0x0, 0xc0, 0x4f, 0xf8, 0x17, 0x95);
-
-//---
-#undef INTERFACE
-#define INTERFACE IHostFilter
-DECLARE_INTERFACE_(IHostFilter, IUnknown)
-{
- STDMETHOD(MarkToken)(mdToken tk) PURE;
-};
-
-
-//*****************************************************************************
-// Assembly Declarations
-//*****************************************************************************
-
-typedef struct
-{
- DWORD dwOSPlatformId; // Operating system platform.
- DWORD dwOSMajorVersion; // OS Major version.
- DWORD dwOSMinorVersion; // OS Minor version.
-} OSINFO;
-
-
-typedef struct
-{
- USHORT usMajorVersion; // Major Version.
- USHORT usMinorVersion; // Minor Version.
- USHORT usBuildNumber; // Build Number.
- USHORT usRevisionNumber; // Revision Number.
- LPWSTR szLocale; // Locale.
- ULONG cbLocale; // [IN/OUT] Size of the buffer in wide chars/Actual size.
- DWORD *rProcessor; // Processor ID array.
- ULONG ulProcessor; // [IN/OUT] Size of the Processor ID array/Actual # of entries filled in.
- OSINFO *rOS; // OSINFO array.
- ULONG ulOS; // [IN/OUT]Size of the OSINFO array/Actual # of entries filled in.
-} ASSEMBLYMETADATA;
-
-
-// {211EF15B-5317-4438-B196-DEC87B887693}
-EXTERN_GUID(IID_IMetaDataAssemblyEmit, 0x211ef15b, 0x5317, 0x4438, 0xb1, 0x96, 0xde, 0xc8, 0x7b, 0x88, 0x76, 0x93);
-
-//---
-#undef INTERFACE
-#define INTERFACE IMetaDataAssemblyEmit
-DECLARE_INTERFACE_(IMetaDataAssemblyEmit, IUnknown)
-{
- STDMETHOD(DefineAssembly)( // S_OK or error.
- const void *pbPublicKey, // [IN] Public key of the assembly.
- ULONG cbPublicKey, // [IN] Count of bytes in the public key.
- ULONG ulHashAlgId, // [IN] Hash algorithm used to hash the files.
- LPCWSTR szName, // [IN] Name of the assembly.
- const ASSEMBLYMETADATA *pMetaData, // [IN] Assembly MetaData.
- DWORD dwAssemblyFlags, // [IN] Flags.
- mdAssembly *pma) PURE; // [OUT] Returned Assembly token.
-
- STDMETHOD(DefineAssemblyRef)( // S_OK or error.
- const void *pbPublicKeyOrToken, // [IN] Public key or token of the assembly.
- ULONG cbPublicKeyOrToken, // [IN] Count of bytes in the public key or token.
- LPCWSTR szName, // [IN] Name of the assembly being referenced.
- const ASSEMBLYMETADATA *pMetaData, // [IN] Assembly MetaData.
- const void *pbHashValue, // [IN] Hash Blob.
- ULONG cbHashValue, // [IN] Count of bytes in the Hash Blob.
- DWORD dwAssemblyRefFlags, // [IN] Flags.
- mdAssemblyRef *pmdar) PURE; // [OUT] Returned AssemblyRef token.
-
- STDMETHOD(DefineFile)( // S_OK or error.
- LPCWSTR szName, // [IN] Name of the file.
- const void *pbHashValue, // [IN] Hash Blob.
- ULONG cbHashValue, // [IN] Count of bytes in the Hash Blob.
- DWORD dwFileFlags, // [IN] Flags.
- mdFile *pmdf) PURE; // [OUT] Returned File token.
-
- STDMETHOD(DefineExportedType)( // S_OK or error.
- LPCWSTR szName, // [IN] Name of the Com Type.
- mdToken tkImplementation, // [IN] mdFile or mdAssemblyRef or mdExportedType
- mdTypeDef tkTypeDef, // [IN] TypeDef token within the file.
- DWORD dwExportedTypeFlags, // [IN] Flags.
- mdExportedType *pmdct) PURE; // [OUT] Returned ExportedType token.
-
- STDMETHOD(DefineManifestResource)( // S_OK or error.
- LPCWSTR szName, // [IN] Name of the resource.
- mdToken tkImplementation, // [IN] mdFile or mdAssemblyRef that provides the resource.
- DWORD dwOffset, // [IN] Offset to the beginning of the resource within the file.
- DWORD dwResourceFlags, // [IN] Flags.
- mdManifestResource *pmdmr) PURE; // [OUT] Returned ManifestResource token.
-
- STDMETHOD(SetAssemblyProps)( // S_OK or error.
- mdAssembly pma, // [IN] Assembly token.
- const void *pbPublicKey, // [IN] Public key of the assembly.
- ULONG cbPublicKey, // [IN] Count of bytes in the public key.
- ULONG ulHashAlgId, // [IN] Hash algorithm used to hash the files.
- LPCWSTR szName, // [IN] Name of the assembly.
- const ASSEMBLYMETADATA *pMetaData, // [IN] Assembly MetaData.
- DWORD dwAssemblyFlags) PURE; // [IN] Flags.
-
- STDMETHOD(SetAssemblyRefProps)( // S_OK or error.
- mdAssemblyRef ar, // [IN] AssemblyRefToken.
- const void *pbPublicKeyOrToken, // [IN] Public key or token of the assembly.
- ULONG cbPublicKeyOrToken, // [IN] Count of bytes in the public key or token.
- LPCWSTR szName, // [IN] Name of the assembly being referenced.
- const ASSEMBLYMETADATA *pMetaData, // [IN] Assembly MetaData.
- const void *pbHashValue, // [IN] Hash Blob.
- ULONG cbHashValue, // [IN] Count of bytes in the Hash Blob.
- DWORD dwAssemblyRefFlags) PURE; // [IN] Token for Execution Location.
-
- STDMETHOD(SetFileProps)( // S_OK or error.
- mdFile file, // [IN] File token.
- const void *pbHashValue, // [IN] Hash Blob.
- ULONG cbHashValue, // [IN] Count of bytes in the Hash Blob.
- DWORD dwFileFlags) PURE; // [IN] Flags.
-
- STDMETHOD(SetExportedTypeProps)( // S_OK or error.
- mdExportedType ct, // [IN] ExportedType token.
- mdToken tkImplementation, // [IN] mdFile or mdAssemblyRef or mdExportedType.
- mdTypeDef tkTypeDef, // [IN] TypeDef token within the file.
- DWORD dwExportedTypeFlags) PURE; // [IN] Flags.
-
- STDMETHOD(SetManifestResourceProps)( // S_OK or error.
- mdManifestResource mr, // [IN] ManifestResource token.
- mdToken tkImplementation, // [IN] mdFile or mdAssemblyRef that provides the resource.
- DWORD dwOffset, // [IN] Offset to the beginning of the resource within the file.
- DWORD dwResourceFlags) PURE; // [IN] Flags.
-
-}; // IMetaDataAssemblyEmit
-
-
-// {EE62470B-E94B-424e-9B7C-2F00C9249F93}
-EXTERN_GUID(IID_IMetaDataAssemblyImport, 0xee62470b, 0xe94b, 0x424e, 0x9b, 0x7c, 0x2f, 0x0, 0xc9, 0x24, 0x9f, 0x93);
-
-//---
-#undef INTERFACE
-#define INTERFACE IMetaDataAssemblyImport
-DECLARE_INTERFACE_(IMetaDataAssemblyImport, IUnknown)
-{
- STDMETHOD(GetAssemblyProps)( // S_OK or error.
- mdAssembly mda, // [IN] The Assembly for which to get the properties.
- const void **ppbPublicKey, // [OUT] Pointer to the public key.
- ULONG *pcbPublicKey, // [OUT] Count of bytes in the public key.
- ULONG *pulHashAlgId, // [OUT] Hash Algorithm.
- _Out_writes_to_opt_(cchName, *pchName) LPWSTR szName, // [OUT] Buffer to fill with assembly's simply name.
- ULONG cchName, // [IN] Size of buffer in wide chars.
- ULONG *pchName, // [OUT] Actual # of wide chars in name.
- ASSEMBLYMETADATA *pMetaData, // [OUT] Assembly MetaData.
- DWORD *pdwAssemblyFlags) PURE; // [OUT] Flags.
-
- STDMETHOD(GetAssemblyRefProps)( // S_OK or error.
- mdAssemblyRef mdar, // [IN] The AssemblyRef for which to get the properties.
- const void **ppbPublicKeyOrToken, // [OUT] Pointer to the public key or token.
- ULONG *pcbPublicKeyOrToken, // [OUT] Count of bytes in the public key or token.
- _Out_writes_to_opt_(cchName, *pchName)LPWSTR szName, // [OUT] Buffer to fill with name.
- ULONG cchName, // [IN] Size of buffer in wide chars.
- ULONG *pchName, // [OUT] Actual # of wide chars in name.
- ASSEMBLYMETADATA *pMetaData, // [OUT] Assembly MetaData.
- const void **ppbHashValue, // [OUT] Hash blob.
- ULONG *pcbHashValue, // [OUT] Count of bytes in the hash blob.
- DWORD *pdwAssemblyRefFlags) PURE; // [OUT] Flags.
-
- STDMETHOD(GetFileProps)( // S_OK or error.
- mdFile mdf, // [IN] The File for which to get the properties.
- _Out_writes_to_opt_(cchName, *pchName) LPWSTR szName, // [OUT] Buffer to fill with name.
- ULONG cchName, // [IN] Size of buffer in wide chars.
- ULONG *pchName, // [OUT] Actual # of wide chars in name.
- const void **ppbHashValue, // [OUT] Pointer to the Hash Value Blob.
- ULONG *pcbHashValue, // [OUT] Count of bytes in the Hash Value Blob.
- DWORD *pdwFileFlags) PURE; // [OUT] Flags.
-
- STDMETHOD(GetExportedTypeProps)( // S_OK or error.
- mdExportedType mdct, // [IN] The ExportedType for which to get the properties.
- _Out_writes_to_opt_(cchName, *pchName) LPWSTR szName, // [OUT] Buffer to fill with name.
- ULONG cchName, // [IN] Size of buffer in wide chars.
- ULONG *pchName, // [OUT] Actual # of wide chars in name.
- mdToken *ptkImplementation, // [OUT] mdFile or mdAssemblyRef or mdExportedType.
- mdTypeDef *ptkTypeDef, // [OUT] TypeDef token within the file.
- DWORD *pdwExportedTypeFlags) PURE; // [OUT] Flags.
-
- STDMETHOD(GetManifestResourceProps)( // S_OK or error.
- mdManifestResource mdmr, // [IN] The ManifestResource for which to get the properties.
- _Out_writes_to_opt_(cchName, *pchName)LPWSTR szName, // [OUT] Buffer to fill with name.
- ULONG cchName, // [IN] Size of buffer in wide chars.
- ULONG *pchName, // [OUT] Actual # of wide chars in name.
- mdToken *ptkImplementation, // [OUT] mdFile or mdAssemblyRef that provides the ManifestResource.
- DWORD *pdwOffset, // [OUT] Offset to the beginning of the resource within the file.
- DWORD *pdwResourceFlags) PURE;// [OUT] Flags.
-
- STDMETHOD(EnumAssemblyRefs)( // S_OK or error
- HCORENUM *phEnum, // [IN|OUT] Pointer to the enum.
- mdAssemblyRef rAssemblyRefs[], // [OUT] Put AssemblyRefs here.
- ULONG cMax, // [IN] Max AssemblyRefs to put.
- ULONG *pcTokens) PURE; // [OUT] Put # put here.
-
- STDMETHOD(EnumFiles)( // S_OK or error
- HCORENUM *phEnum, // [IN|OUT] Pointer to the enum.
- mdFile rFiles[], // [OUT] Put Files here.
- ULONG cMax, // [IN] Max Files to put.
- ULONG *pcTokens) PURE; // [OUT] Put # put here.
-
- STDMETHOD(EnumExportedTypes)( // S_OK or error
- HCORENUM *phEnum, // [IN|OUT] Pointer to the enum.
- mdExportedType rExportedTypes[], // [OUT] Put ExportedTypes here.
- ULONG cMax, // [IN] Max ExportedTypes to put.
- ULONG *pcTokens) PURE; // [OUT] Put # put here.
-
- STDMETHOD(EnumManifestResources)( // S_OK or error
- HCORENUM *phEnum, // [IN|OUT] Pointer to the enum.
- mdManifestResource rManifestResources[], // [OUT] Put ManifestResources here.
- ULONG cMax, // [IN] Max Resources to put.
- ULONG *pcTokens) PURE; // [OUT] Put # put here.
-
- STDMETHOD(GetAssemblyFromScope)( // S_OK or error
- mdAssembly *ptkAssembly) PURE; // [OUT] Put token here.
-
- STDMETHOD(FindExportedTypeByName)( // S_OK or error
- LPCWSTR szName, // [IN] Name of the ExportedType.
- mdToken mdtExportedType, // [IN] ExportedType for the enclosing class.
- mdExportedType *ptkExportedType) PURE; // [OUT] Put the ExportedType token here.
-
- STDMETHOD(FindManifestResourceByName)( // S_OK or error
- LPCWSTR szName, // [IN] Name of the ManifestResource.
- mdManifestResource *ptkManifestResource) PURE; // [OUT] Put the ManifestResource token here.
-
- STDMETHOD_(void, CloseEnum)(
- HCORENUM hEnum) PURE; // Enum to be closed.
-
- STDMETHOD(FindAssembliesByName)( // S_OK or error
- LPCWSTR szAppBase, // [IN] optional - can be NULL
- LPCWSTR szPrivateBin, // [IN] optional - can be NULL
- LPCWSTR szAssemblyName, // [IN] required - this is the assembly you are requesting
- IUnknown *ppIUnk[], // [OUT] put IMetaDataAssemblyImport pointers here
- ULONG cMax, // [IN] The max number to put
- ULONG *pcAssemblies) PURE; // [OUT] The number of assemblies returned.
-}; // IMetaDataAssemblyImport
-
-
-//*****************************************************************************
-// End Assembly Declarations
-//*****************************************************************************
-
-//*****************************************************************************
-// MetaData Validator Declarations
-//*****************************************************************************
-
-// Specifies the type of the module, PE file vs. .obj file.
-typedef enum
-{
- ValidatorModuleTypeInvalid = 0x0,
- ValidatorModuleTypeMin = 0x00000001,
- ValidatorModuleTypePE = 0x00000001,
- ValidatorModuleTypeObj = 0x00000002,
- ValidatorModuleTypeEnc = 0x00000003,
- ValidatorModuleTypeIncr = 0x00000004,
- ValidatorModuleTypeMax = 0x00000004,
-} CorValidatorModuleType;
-
-
-// {4709C9C6-81FF-11D3-9FC7-00C04F79A0A3}
-EXTERN_GUID(IID_IMetaDataValidate, 0x4709c9c6, 0x81ff, 0x11d3, 0x9f, 0xc7, 0x0, 0xc0, 0x4f, 0x79, 0xa0, 0xa3);
-
-//---
-#undef INTERFACE
-#define INTERFACE IMetaDataValidate
-DECLARE_INTERFACE_(IMetaDataValidate, IUnknown)
-{
- STDMETHOD(ValidatorInit)( // S_OK or error.
- DWORD dwModuleType, // [IN] Specifies the type of the module.
- IUnknown *pUnk) PURE; // [IN] Validation error handler.
-
- STDMETHOD(ValidateMetaData)( // S_OK or error.
- ) PURE;
-}; // IMetaDataValidate
-
-//*****************************************************************************
-// End MetaData Validator Declarations
-//*****************************************************************************
-
-//*****************************************************************************
-// IMetaDataDispenserEx declarations.
-//*****************************************************************************
-
-// {31BCFCE2-DAFB-11D2-9F81-00C04F79A0A3}
-EXTERN_GUID(IID_IMetaDataDispenserEx, 0x31bcfce2, 0xdafb, 0x11d2, 0x9f, 0x81, 0x0, 0xc0, 0x4f, 0x79, 0xa0, 0xa3);
-
-#undef INTERFACE
-#define INTERFACE IMetaDataDispenserEx
-DECLARE_INTERFACE_(IMetaDataDispenserEx, IMetaDataDispenser)
-{
- STDMETHOD(SetOption)( // Return code.
- REFGUID optionid, // [in] GUID for the option to be set.
- const VARIANT *value) PURE; // [in] Value to which the option is to be set.
-
- STDMETHOD(GetOption)( // Return code.
- REFGUID optionid, // [in] GUID for the option to be set.
- VARIANT *pvalue) PURE; // [out] Value to which the option is currently set.
-
- STDMETHOD(OpenScopeOnITypeInfo)( // Return code.
- ITypeInfo *pITI, // [in] ITypeInfo to open.
- DWORD dwOpenFlags, // [in] Open mode flags.
- REFIID riid, // [in] The interface desired.
- IUnknown **ppIUnk) PURE; // [out] Return interface on success.
-
- STDMETHOD(GetCORSystemDirectory)( // Return code.
- _Out_writes_to_opt_(cchBuffer, *pchBuffer)
- LPWSTR szBuffer, // [out] Buffer for the directory name
- DWORD cchBuffer, // [in] Size of the buffer
- DWORD* pchBuffer) PURE; // [OUT] Number of characters returned
-
- STDMETHOD(FindAssembly)( // S_OK or error
- LPCWSTR szAppBase, // [IN] optional - can be NULL
- LPCWSTR szPrivateBin, // [IN] optional - can be NULL
- LPCWSTR szGlobalBin, // [IN] optional - can be NULL
- LPCWSTR szAssemblyName, // [IN] required - this is the assembly you are requesting
- LPCWSTR szName, // [OUT] buffer - to hold name
- ULONG cchName, // [IN] the name buffer's size
- ULONG *pcName) PURE; // [OUT] the number of characters returend in the buffer
-
- STDMETHOD(FindAssemblyModule)( // S_OK or error
- LPCWSTR szAppBase, // [IN] optional - can be NULL
- LPCWSTR szPrivateBin, // [IN] optional - can be NULL
- LPCWSTR szGlobalBin, // [IN] optional - can be NULL
- LPCWSTR szAssemblyName, // [IN] required - this is the assembly you are requesting
- LPCWSTR szModuleName, // [IN] required - the name of the module
- _Out_writes_to_opt_(cchName, *pcName)
- LPWSTR szName, // [OUT] buffer - to hold name
- ULONG cchName, // [IN] the name buffer's size
- ULONG *pcName) PURE; // [OUT] the number of characters returend in the buffer
-
-};
-
-//**********************************************************************
-//**********************************************************************
-//--- IMetaDataTables
-//-------------------------------------
-// This API isn't big endian friendly since it indexes directly into the memory that
-// is stored in little endian format.
-// {D8F579AB-402D-4b8e-82D9-5D63B1065C68}
-EXTERN_GUID(IID_IMetaDataTables, 0xd8f579ab, 0x402d, 0x4b8e, 0x82, 0xd9, 0x5d, 0x63, 0xb1, 0x6, 0x5c, 0x68);
-
-DECLARE_INTERFACE_(IMetaDataTables, IUnknown)
-{
- STDMETHOD (GetStringHeapSize) (
- ULONG *pcbStrings) PURE; // [OUT] Size of the string heap.
-
- STDMETHOD (GetBlobHeapSize) (
- ULONG *pcbBlobs) PURE; // [OUT] Size of the Blob heap.
-
- STDMETHOD (GetGuidHeapSize) (
- ULONG *pcbGuids) PURE; // [OUT] Size of the Guid heap.
-
- STDMETHOD (GetUserStringHeapSize) (
- ULONG *pcbBlobs) PURE; // [OUT] Size of the User String heap.
-
- STDMETHOD (GetNumTables) (
- ULONG *pcTables) PURE; // [OUT] Count of tables.
-
- STDMETHOD (GetTableIndex) (
- ULONG token, // [IN] Token for which to get table index.
- ULONG *pixTbl) PURE; // [OUT] Put table index here.
-
- STDMETHOD (GetTableInfo) (
- ULONG ixTbl, // [IN] Which table.
- ULONG *pcbRow, // [OUT] Size of a row, bytes.
- ULONG *pcRows, // [OUT] Number of rows.
- ULONG *pcCols, // [OUT] Number of columns in each row.
- ULONG *piKey, // [OUT] Key column, or -1 if none.
- const char **ppName) PURE; // [OUT] Name of the table.
-
- STDMETHOD (GetColumnInfo) (
- ULONG ixTbl, // [IN] Which Table
- ULONG ixCol, // [IN] Which Column in the table
- ULONG *poCol, // [OUT] Offset of the column in the row.
- ULONG *pcbCol, // [OUT] Size of a column, bytes.
- ULONG *pType, // [OUT] Type of the column.
- const char **ppName) PURE; // [OUT] Name of the Column.
-
- STDMETHOD (GetCodedTokenInfo) (
- ULONG ixCdTkn, // [IN] Which kind of coded token.
- ULONG *pcTokens, // [OUT] Count of tokens.
- ULONG **ppTokens, // [OUT] List of tokens.
- const char **ppName) PURE; // [OUT] Name of the CodedToken.
-
- STDMETHOD (GetRow) (
- ULONG ixTbl, // [IN] Which table.
- ULONG rid, // [IN] Which row.
- void **ppRow) PURE; // [OUT] Put pointer to row here.
-
- STDMETHOD (GetColumn) (
- ULONG ixTbl, // [IN] Which table.
- ULONG ixCol, // [IN] Which column.
- ULONG rid, // [IN] Which row.
- ULONG *pVal) PURE; // [OUT] Put the column contents here.
-
- STDMETHOD (GetString) (
- ULONG ixString, // [IN] Value from a string column.
- const char **ppString) PURE; // [OUT] Put a pointer to the string here.
-
- STDMETHOD (GetBlob) (
- ULONG ixBlob, // [IN] Value from a blob column.
- ULONG *pcbData, // [OUT] Put size of the blob here.
- const void **ppData) PURE; // [OUT] Put a pointer to the blob here.
-
- STDMETHOD (GetGuid) (
- ULONG ixGuid, // [IN] Value from a guid column.
- const GUID **ppGUID) PURE; // [OUT] Put a pointer to the GUID here.
-
- STDMETHOD (GetUserString) (
- ULONG ixUserString, // [IN] Value from a UserString column.
- ULONG *pcbData, // [OUT] Put size of the UserString here.
- const void **ppData) PURE; // [OUT] Put a pointer to the UserString here.
-
- STDMETHOD (GetNextString) (
- ULONG ixString, // [IN] Value from a string column.
- ULONG *pNext) PURE; // [OUT] Put the index of the next string here.
-
- STDMETHOD (GetNextBlob) (
- ULONG ixBlob, // [IN] Value from a blob column.
- ULONG *pNext) PURE; // [OUT] Put the index of the netxt blob here.
-
- STDMETHOD (GetNextGuid) (
- ULONG ixGuid, // [IN] Value from a guid column.
- ULONG *pNext) PURE; // [OUT] Put the index of the next guid here.
-
- STDMETHOD (GetNextUserString) (
- ULONG ixUserString, // [IN] Value from a UserString column.
- ULONG *pNext) PURE; // [OUT] Put the index of the next user string here.
-
- // Interface is sealed.
-
-};
-// This API isn't big endian friendly since it indexes directly into the memory that
-// is stored in little endian format.
-// {BADB5F70-58DA-43a9-A1C6-D74819F19B15}
-EXTERN_GUID(IID_IMetaDataTables2, 0xbadb5f70, 0x58da, 0x43a9, 0xa1, 0xc6, 0xd7, 0x48, 0x19, 0xf1, 0x9b, 0x15);
-
-DECLARE_INTERFACE_(IMetaDataTables2, IMetaDataTables)
-{
- STDMETHOD (GetMetaDataStorage) ( //@todo: name?
- const void **ppvMd, // [OUT] put pointer to MD section here (aka, 'BSJB').
- ULONG *pcbMd) PURE; // [OUT] put size of the stream here.
-
- STDMETHOD (GetMetaDataStreamInfo) ( // Get info about the MD stream.
- ULONG ix, // [IN] Stream ordinal desired.
- const char **ppchName, // [OUT] put pointer to stream name here.
- const void **ppv, // [OUT] put pointer to MD stream here.
- ULONG *pcb) PURE; // [OUT] put size of the stream here.
-
-}; // IMetaDataTables2
-
-#ifdef _DEFINE_META_DATA_META_CONSTANTS
-#ifndef _META_DATA_META_CONSTANTS_DEFINED
-#define _META_DATA_META_CONSTANTS_DEFINED
-const unsigned int iRidMax = 63;
-const unsigned int iCodedToken = 64; // base of coded tokens.
-const unsigned int iCodedTokenMax = 95;
-const unsigned int iSHORT = 96; // fixed types.
-const unsigned int iUSHORT = 97;
-const unsigned int iLONG = 98;
-const unsigned int iULONG = 99;
-const unsigned int iBYTE = 100;
-const unsigned int iSTRING = 101; // pool types.
-const unsigned int iGUID = 102;
-const unsigned int iBLOB = 103;
-
-inline int IsRidType(ULONG ix) { return ix <= iRidMax; }
-inline int IsCodedTokenType(ULONG ix) { return (ix >= iCodedToken) && (ix <= iCodedTokenMax); }
-inline int IsRidOrToken(ULONG ix) { return ix <= iCodedTokenMax; }
-inline int IsHeapType(ULONG ix) { return ix >= iSTRING; }
-inline int IsFixedType(ULONG ix) { return (ix < iSTRING) && (ix > iCodedTokenMax); }
-#endif
-#endif
-
-//**********************************************************************
-// End of IMetaDataTables.
-//**********************************************************************
-
-//-------------------------------------
-//--- IMetaDataInfo
-//-------------------------------------
-// {7998EA64-7F95-48B8-86FC-17CAF48BF5CB}
-EXTERN_GUID(IID_IMetaDataInfo, 0x7998EA64, 0x7F95, 0x48B8, 0x86, 0xFC, 0x17, 0xCA, 0xF4, 0x8B, 0xF5, 0xCB);
-
-//---
-#undef INTERFACE
-#define INTERFACE IMetaDataInfo
-DECLARE_INTERFACE_(IMetaDataInfo, IUnknown)
-{
- // Return Values:
- // S_OK - All parameters are filled.
- // COR_E_NOTSUPPORTED - The API is not supported for this particular scope (e.g. .obj files, scope
- // opened without whole file via code:IMetaDataDispenser::OpenScopeOnMemory, etc.).
- // E_INVALIDARG - If NULL is passed as parameter.
- STDMETHOD(GetFileMapping)(
- const void ** ppvData, // [out] Pointer to the start of the mapped file.
- ULONGLONG * pcbData, // [out] Size of the mapped memory region.
- DWORD * pdwMappingType) PURE; // [out] Type of file mapping (code:CorFileMapping).
-}; // class IMetaDataInfo
-
-//**********************************************************************
-//
-// Predefined CustomAttribute and structures for these custom value
-//
-//**********************************************************************
-
-//
-// Native Link method custom value definitions. This is for N-direct support.
-//
-
-#include
-typedef struct
-{
- BYTE m_linkType; // see CorNativeLinkType below
- BYTE m_flags; // see CorNativeLinkFlags below
- mdMemberRef m_entryPoint; // member ref token giving entry point, format is lib:entrypoint
-} COR_NATIVE_LINK;
-#include
-
-typedef enum
-{
- nltNone = 1, // none of the keywords are specified
- nltAnsi = 2, // ansi keyword specified
- nltUnicode = 3, // unicode keyword specified
- nltAuto = 4, // auto keyword specified
- nltMaxValue = 7, // used so we can assert how many bits are required for this enum
-} CorNativeLinkType;
-
-typedef enum
-{
- nlfNone = 0x00, // no flags
- nlfLastError = 0x01, // setLastError keyword specified
- nlfNoMangle = 0x02, // nomangle keyword specified
- nlfMaxValue = 0x03, // used so we can assert how many bits are required for this enum
-} CorNativeLinkFlags;
-
-//
-// Base class for security custom attributes.
-//
-
-#define COR_BASE_SECURITY_ATTRIBUTE_CLASS L"System.Security.Permissions.SecurityAttribute"
-#define COR_BASE_SECURITY_ATTRIBUTE_CLASS_ANSI "System.Security.Permissions.SecurityAttribute"
-
-//
-// Name of custom attribute used to indicate that per-call security checks should
-// be disabled for P/Invoke calls.
-//
-
-#define COR_SUPPRESS_UNMANAGED_CODE_CHECK_ATTRIBUTE L"System.Security.SuppressUnmanagedCodeSecurityAttribute"
-#define COR_SUPPRESS_UNMANAGED_CODE_CHECK_ATTRIBUTE_ANSI "System.Security.SuppressUnmanagedCodeSecurityAttribute"
-
-//
-// Name of custom attribute tagged on module to indicate it contains
-// unverifiable code.
-//
-
-#define COR_UNVER_CODE_ATTRIBUTE L"System.Security.UnverifiableCodeAttribute"
-#define COR_UNVER_CODE_ATTRIBUTE_ANSI "System.Security.UnverifiableCodeAttribute"
-
-//
-// Name of custom attribute indicating that a method requires a security object
-// slot on the caller's stack.
-//
-
-#define COR_REQUIRES_SECOBJ_ATTRIBUTE W("System.Security.DynamicSecurityMethodAttribute")
-#define COR_REQUIRES_SECOBJ_ATTRIBUTE_ANSI "System.Security.DynamicSecurityMethodAttribute"
-
-#define COR_COMPILERSERVICE_DISCARDABLEATTRIBUTE L"System.Runtime.CompilerServices.DiscardableAttribute"
-#define COR_COMPILERSERVICE_DISCARDABLEATTRIBUTE_ASNI "System.Runtime.CompilerServices.DiscardableAttribute"
-
-
-#ifdef __cplusplus
-}
-
-//*****************************************************************************
-//*****************************************************************************
-//
-// C O M + s i g n a t u r e s u p p o r t
-//
-//*****************************************************************************
-//*****************************************************************************
-
-#ifndef FORCEINLINE
- #if _MSC_VER < 1200
- #define FORCEINLINE inline
- #else
- #define FORCEINLINE __forceinline
- #endif
-#endif
-
-
-// We need a version that is FORCEINLINE on retail and NOINLINE on debug
-
-#ifndef DEBUG_NOINLINE
-#if defined(_DEBUG)
-#define DEBUG_NOINLINE NOINLINE
-#else
-#define DEBUG_NOINLINE
-#endif
-#endif
-
-#ifndef NOINLINE
-#ifdef _MSC_VER
-#define NOINLINE __declspec(noinline)
-#elif defined __GNUC__
-#define NOINLINE __attribute__ ((noinline))
-#else
-#define NOINLINE
-#endif
-#endif // !NOINLINE
-
-// return true if it is a primitive type, i.e. only need to store CorElementType
-FORCEINLINE int CorIsPrimitiveType(CorElementType elementtype)
-{
- return (elementtype < ELEMENT_TYPE_PTR || elementtype == ELEMENT_TYPE_I || elementtype == ELEMENT_TYPE_U);
-}
-
-
-// Return true if element type is a modifier, i.e. ELEMENT_TYPE_MODIFIER bits are
-// turned on. For now, it is checking for ELEMENT_TYPE_PTR and ELEMENT_TYPE_BYREF
-// as well. This will be removed when we turn on ELEMENT_TYPE_MODIFIER bits for
-// these two enum members.
-//
-FORCEINLINE int CorIsModifierElementType(CorElementType elementtype)
-{
- if (elementtype == ELEMENT_TYPE_PTR || elementtype == ELEMENT_TYPE_BYREF)
- return 1;
- return (elementtype & ELEMENT_TYPE_MODIFIER);
-}
-
-// Given a compress byte (*pData), return the size of the uncompressed data.
-inline ULONG CorSigUncompressedDataSize(
- PCCOR_SIGNATURE pData)
-{
- if ((*pData & 0x80) == 0)
- return 1;
- else if ((*pData & 0xC0) == 0x80)
- return 2;
- else
- return 4;
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////
-//
-// Given a compressed integer(*pData), expand the compressed int to *pDataOut.
-// Return value is the number of bytes that the integer occupies in the compressed format
-// It is caller's responsibility to ensure pDataOut has at least 4 bytes to be written to.
-//
-// This function returns -1 if pass in with an incorrectly compressed data, such as
-// (*pBytes & 0xE0) == 0XE0.
-/////////////////////////////////////////////////////////////////////////////////////////////
-inline ULONG CorSigUncompressBigData(
- PCCOR_SIGNATURE & pData) // [IN,OUT] compressed data
-{
- ULONG res;
-
- // 1 byte data is handled in CorSigUncompressData
- // _ASSERTE(*pData & 0x80);
-
- // Medium.
- if ((*pData & 0xC0) == 0x80) // 10?? ????
- {
- res = (ULONG)((*pData++ & 0x3f) << 8);
- res |= *pData++;
- }
- else // 110? ????
- {
- res = (*pData++ & 0x1f) << 24;
- res |= *pData++ << 16;
- res |= *pData++ << 8;
- res |= *pData++;
- }
- return res;
-}
-FORCEINLINE ULONG CorSigUncompressData(
- PCCOR_SIGNATURE & pData) // [IN,OUT] compressed data
-{
- // Handle smallest data inline.
- if ((*pData & 0x80) == 0x00) // 0??? ????
- return *pData++;
- return CorSigUncompressBigData(pData);
-}
-
-#ifdef HOST_WINDOWS
-inline HRESULT CorSigUncompressData(// return S_OK or E_BADIMAGEFORMAT if the signature is bad
- PCCOR_SIGNATURE pData, // [IN] compressed data
- DWORD len, // [IN] length of the signature
- ULONG * pDataOut, // [OUT] the expanded *pData
- ULONG * pDataLen) // [OUT] length of the expanded *pData
-{
- HRESULT hr = S_OK;
- BYTE const *pBytes = reinterpret_cast(pData);
-
- // Smallest.
- if ((*pBytes & 0x80) == 0x00) // 0??? ????
- {
- if (len < 1)
- {
- *pDataOut = 0;
- *pDataLen = 0;
- hr = META_E_BAD_SIGNATURE;
- }
- else
- {
- *pDataOut = *pBytes;
- *pDataLen = 1;
- }
- }
- // Medium.
- else if ((*pBytes & 0xC0) == 0x80) // 10?? ????
- {
- if (len < 2)
- {
- *pDataOut = 0;
- *pDataLen = 0;
- hr = META_E_BAD_SIGNATURE;
- }
- else
- {
- *pDataOut = (ULONG)(((*pBytes & 0x3f) << 8 | *(pBytes+1)));
- *pDataLen = 2;
- }
- }
- else if ((*pBytes & 0xE0) == 0xC0) // 110? ????
- {
- if (len < 4)
- {
- *pDataOut = 0;
- *pDataLen = 0;
- hr = META_E_BAD_SIGNATURE;
- }
- else
- {
- *pDataOut = (ULONG)(((*pBytes & 0x1f) << 24 | *(pBytes+1) << 16 | *(pBytes+2) << 8 | *(pBytes+3)));
- *pDataLen = 4;
- }
- }
- else // We don't recognize this encoding
- {
- *pDataOut = 0;
- *pDataLen = 0;
- hr = META_E_BAD_SIGNATURE;
- }
-
- return hr;
-}
-#endif // HOST_WINDOWS
-
-inline HRESULT CorSigUncompressData(// return S_OK or E_BADIMAGEFORMAT if the signature is bad
- PCCOR_SIGNATURE pData, // [IN] compressed data
- DWORD len, // [IN] length of the signature
- uint32_t * pDataOut, // [OUT] the expanded *pData
- uint32_t * pDataLen) // [OUT] length of the expanded *pData
-{
- HRESULT hr = S_OK;
- BYTE const *pBytes = reinterpret_cast(pData);
-
- // Smallest.
- if ((*pBytes & 0x80) == 0x00) // 0??? ????
- {
- if (len < 1)
- {
- *pDataOut = 0;
- *pDataLen = 0;
- hr = META_E_BAD_SIGNATURE;
- }
- else
- {
- *pDataOut = *pBytes;
- *pDataLen = 1;
- }
- }
- // Medium.
- else if ((*pBytes & 0xC0) == 0x80) // 10?? ????
- {
- if (len < 2)
- {
- *pDataOut = 0;
- *pDataLen = 0;
- hr = META_E_BAD_SIGNATURE;
- }
- else
- {
- *pDataOut = (uint32_t)(((*pBytes & 0x3f) << 8 | *(pBytes+1)));
- *pDataLen = 2;
- }
- }
- else if ((*pBytes & 0xE0) == 0xC0) // 110? ????
- {
- if (len < 4)
- {
- *pDataOut = 0;
- *pDataLen = 0;
- hr = META_E_BAD_SIGNATURE;
- }
- else
- {
- *pDataOut = (uint32_t)(((*pBytes & 0x1f) << 24 | *(pBytes+1) << 16 | *(pBytes+2) << 8 | *(pBytes+3)));
- *pDataLen = 4;
- }
- }
- else // We don't recognize this encoding
- {
- *pDataOut = 0;
- *pDataLen = 0;
- hr = META_E_BAD_SIGNATURE;
- }
-
- return hr;
-}
-
-inline ULONG CorSigUncompressData( // return number of bytes of that compressed data occupied in pData
- PCCOR_SIGNATURE pData, // [IN] compressed data
- ULONG *pDataOut) // [OUT] the expanded *pData
-{
- ULONG dwSizeOfData = 0;
-
- // We don't know how big the signature is, so we'll just say that it's big enough
- if (FAILED(CorSigUncompressData(pData, 0xff, reinterpret_cast(pDataOut), reinterpret_cast(&dwSizeOfData))))
- {
- *pDataOut = 0;
- return (ULONG)-1;
- }
-
- return dwSizeOfData;
-}
-
-
-FORCEINLINE mdToken CorSigDecodeTokenType(int encoded)
-{
- static const mdToken s_tableTokenTypes[] = {mdtTypeDef, mdtTypeRef, mdtTypeSpec, mdtBaseType};
- return s_tableTokenTypes[encoded];
-}
-
-// uncompress a token
-inline mdToken CorSigUncompressToken( // return the token.
- PCCOR_SIGNATURE &pData) // [IN,OUT] compressed data
-{
- mdToken tk;
- mdToken tkType;
-
- tk = CorSigUncompressData(pData);
- tkType = CorSigDecodeTokenType(tk & 0x3);
- tk = TokenFromRid(tk >> 2, tkType);
- return tk;
-}
-
-
-inline ULONG CorSigUncompressToken( // return number of bytes of that compressed data occupied in pData
- PCCOR_SIGNATURE pData, // [IN] compressed data
- mdToken * pToken) // [OUT] the expanded *pData
-{
- ULONG cb;
- mdToken tk;
- mdToken tkType;
-
- cb = CorSigUncompressData(pData, (ULONG *)&tk);
- tkType = CorSigDecodeTokenType(tk & 0x3);
- tk = TokenFromRid(tk >> 2, tkType);
- *pToken = tk;
- return cb;
-}
-
-inline HRESULT CorSigUncompressToken(
- PCCOR_SIGNATURE pData, // [IN] compressed data
- uint32_t dwLen, // [IN] Remaining length of sigature
- mdToken * pToken, // [OUT] the expanded *pData
- uint32_t * dwTokenLength) // [OUT] The length of the token in the sigature
-{
- mdToken tk;
- mdToken tkType;
-
- HRESULT hr = CorSigUncompressData(pData, dwLen, (uint32_t *)&tk, dwTokenLength);
-
- if (SUCCEEDED(hr))
- {
- tkType = CorSigDecodeTokenType(tk & 0x3);
- tk = TokenFromRid(tk >> 2, tkType);
- *pToken = tk;
- }
- else
- {
- *pToken = mdTokenNil;
- }
- return hr;
-}
-
-
-
-FORCEINLINE ULONG CorSigUncompressCallingConv(
- PCCOR_SIGNATURE & pData) // [IN,OUT] Compressed data
-{
- return *pData++;
-}
-
-FORCEINLINE HRESULT CorSigUncompressCallingConv(
- PCCOR_SIGNATURE pData, // [IN] Signature
- DWORD dwLen, // [IN] Length of signature
- uint32_t * data) // [OUT] Compressed data
-{
- if (dwLen > 0)
- {
- *data = *pData;
- return S_OK;
- }
- else
- {
- *data = 0;
- return META_E_BAD_SIGNATURE;
- }
-}
-
-
-enum {
- SIGN_MASK_ONEBYTE = 0xffffffc0, // Mask the same size as the missing bits.
- SIGN_MASK_TWOBYTE = 0xffffe000, // Mask the same size as the missing bits.
- SIGN_MASK_FOURBYTE = 0xf0000000, // Mask the same size as the missing bits.
-};
-
-// uncompress a signed integer
-inline ULONG CorSigUncompressSignedInt( // return number of bytes of that compressed data occupied in pData
- PCCOR_SIGNATURE pData, // [IN] compressed data
- int * pInt) // [OUT] the expanded *pInt
-{
- ULONG cb;
- ULONG ulSigned;
- ULONG iData;
-
- cb = CorSigUncompressData(pData, &iData);
- if (cb == (ULONG) -1) return cb;
- ulSigned = iData & 0x1;
- iData = iData >> 1;
- if (ulSigned)
- {
- if (cb == 1)
- {
- iData |= SIGN_MASK_ONEBYTE;
- }
- else if (cb == 2)
- {
- iData |= SIGN_MASK_TWOBYTE;
- }
- else
- {
- iData |= SIGN_MASK_FOURBYTE;
- }
- }
- *pInt = (int)iData;
- return cb;
-}
-
-
-// uncompress encoded element type
-FORCEINLINE CorElementType CorSigUncompressElementType( // Element type
- PCCOR_SIGNATURE & pData) // [IN,OUT] Compressed data
-{
- return (CorElementType)*pData++;
-}
-
-inline ULONG CorSigUncompressElementType( // Return number of bytes of that compressed data occupied in pData
- PCCOR_SIGNATURE pData, // [IN] Compressed data
- CorElementType * pElementType) // [OUT] The expanded *pData
-{
- *pElementType = (CorElementType)(*pData & 0x7f);
- return 1;
-}
-
-
-/////////////////////////////////////////////////////////////////////////////////////////////
-//
-// Given an uncompressed unsigned integer (iLen), Store it to pDataOut in a compressed format.
-// Return value is the number of bytes that the integer occupies in the compressed format.
-// It is caller's responsibilityt to ensure *pDataOut has at least 4 bytes to write to.
-//
-// Note that this function returns -1 if iLen is too big to be compressed. We currently can
-// only represent to 0x1FFFFFFF.
-//
-/////////////////////////////////////////////////////////////////////////////////////////////
-inline ULONG CorSigCompressData( // return number of bytes that compressed form of iLen will take
- ULONG iLen, // [IN] given uncompressed data
- void * pDataOut) // [OUT] buffer where iLen will be compressed and stored.
-{
- BYTE *pBytes = reinterpret_cast(pDataOut);
-
- if (iLen <= 0x7F)
- {
- *pBytes = BYTE(iLen);
- return 1;
- }
-
- if (iLen <= 0x3FFF)
- {
- *pBytes = BYTE((iLen >> 8) | 0x80);
- *(pBytes+1) = BYTE(iLen & 0xff);
- return 2;
- }
-
- if (iLen <= 0x1FFFFFFF)
- {
- *pBytes = BYTE((iLen >> 24) | 0xC0);
- *(pBytes+1) = BYTE((iLen >> 16) & 0xff);
- *(pBytes+2) = BYTE((iLen >> 8) & 0xff);
- *(pBytes+3) = BYTE(iLen & 0xff);
- return 4;
- }
- return (ULONG) -1;
-}
-
-// compress a token
-// The least significant bit of the first compress byte will indicate the token type.
-//
-inline ULONG CorSigCompressToken( // return number of bytes that compressed form of the token will take
- mdToken tk, // [IN] given token
- void * pDataOut) // [OUT] buffer where the token will be compressed and stored.
-{
- RID rid = RidFromToken(tk);
- ULONG32 ulTyp = TypeFromToken(tk);
-
- if (rid > 0x3FFFFFF)
- // token is too big to be compressed
- return (ULONG) -1;
-
- rid = (rid << 2);
-
- // TypeDef is encoded with low bits 00
- // TypeRef is encoded with low bits 01
- // TypeSpec is encoded with low bits 10
- // BaseType is encoded with low bit 11
- //
- if (ulTyp == CorSigDecodeTokenType(1))
- {
- // make the last two bits 01
- rid |= 0x1;
- }
- else if (ulTyp == CorSigDecodeTokenType(2))
- {
- // make last two bits 0
- rid |= 0x2;
- }
- else if (ulTyp == CorSigDecodeTokenType(3))
- {
- rid |= 0x3;
- }
- return CorSigCompressData((ULONG)rid, pDataOut);
-}
-
-// compress a signed integer
-// The least significant bit of the first compress byte will be the signed bit.
-//
-inline ULONG CorSigCompressSignedInt( // return number of bytes that compressed form of iData will take
- int iData, // [IN] given integer
- void * pDataOut) // [OUT] buffer where iLen will be compressed and stored.
-{
- ULONG isSigned = 0;
- BYTE *pBytes = reinterpret_cast(pDataOut);
-
- if (iData < 0)
- isSigned = 0x1;
-
- // Note that we cannot use code:CorSigCompressData to pack the iData value, because of negative values
- // like: 0xffffe000 (-8192) which has to be encoded as 1 in 2 bytes, i.e. 0x81 0x00
- // However CorSigCompressedData would store value 1 as 1 byte: 0x01
- if ((iData & SIGN_MASK_ONEBYTE) == 0 || (iData & SIGN_MASK_ONEBYTE) == SIGN_MASK_ONEBYTE)
- {
- iData = (int)((iData & ~SIGN_MASK_ONEBYTE) << 1 | isSigned);
- //_ASSERTE(iData <= 0x7f);
- *pBytes = BYTE(iData);
- return 1;
- }
- else if ((iData & SIGN_MASK_TWOBYTE) == 0 || (iData & SIGN_MASK_TWOBYTE) == SIGN_MASK_TWOBYTE)
- {
- iData = (int)((iData & ~SIGN_MASK_TWOBYTE) << 1 | isSigned);
- //_ASSERTE(iData <= 0x3fff);
- *pBytes = BYTE((iData >> 8) | 0x80);
- *(pBytes + 1) = BYTE(iData & 0xff);
- return 2;
- }
- else if ((iData & SIGN_MASK_FOURBYTE) == 0 || (iData & SIGN_MASK_FOURBYTE) == SIGN_MASK_FOURBYTE)
- {
- iData = (int)((iData & ~SIGN_MASK_FOURBYTE) << 1 | isSigned);
- //_ASSERTE(iData <= 0x1FFFFFFF);
- *pBytes = BYTE((iData >> 24) | 0xC0);
- *(pBytes + 1) = BYTE((iData >> 16) & 0xff);
- *(pBytes + 2) = BYTE((iData >> 8) & 0xff);
- *(pBytes + 3) = BYTE(iData & 0xff);
- return 4;
- }
- // Out of compressable range
- return (ULONG)-1;
-} // CorSigCompressSignedInt
-
-
-// uncompress encoded element type
-inline ULONG CorSigCompressElementType( // return number of bytes of that compressed data occupied in pData
- CorElementType et, // [OUT] the expanded *pData
- void * pData) // [IN] compressed data
-{
- BYTE *pBytes = (BYTE *)(pData);
-
- *pBytes = BYTE(et);
- return 1;
-}
-
-// Compress a pointer (used for internal element types only, never for persisted
-// signatures).
-inline ULONG CorSigCompressPointer( // return number of bytes of that compressed data occupied
- void * pvPointer, // [IN] given uncompressed data
- void * pData) // [OUT] buffer where iLen will be compressed and stored.
-{
- *((void * UNALIGNED *)pData) = pvPointer;
- return sizeof(void *);
-}
-
-// Uncompress a pointer (see above for comments).
-inline ULONG CorSigUncompressPointer( // return number of bytes of that compressed data occupied
- PCCOR_SIGNATURE pData, // [IN] compressed data
- void ** ppvPointer) // [OUT] the expanded *pData
-{
- *ppvPointer = *(void * const UNALIGNED *)pData;
- return sizeof(void *);
-}
-
-#endif // __cplusplus
-
-#endif // _COR_H_
diff --git a/src/native/dnmd/src/inc/external/corerror.h b/src/native/dnmd/src/inc/external/corerror.h
deleted file mode 100644
index d7a6c8c32e4f03..00000000000000
--- a/src/native/dnmd/src/inc/external/corerror.h
+++ /dev/null
@@ -1,422 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-#ifndef __COMMON_LANGUAGE_RUNTIME_HRESULTS__
-#define __COMMON_LANGUAGE_RUNTIME_HRESULTS__
-
-#include
-
-
-//
-//This file is AutoGenerated -- Do Not Edit by hand!!!
-//
-//Add new HRESULTS along with their corresponding error messages to
-//corerror.xml
-//
-
-#ifndef FACILITY_URT
-#define FACILITY_URT 0x13
-#endif
-#ifndef EMAKEHR
-#define SMAKEHR(val) MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_URT, val)
-#define EMAKEHR(val) MAKE_HRESULT(SEVERITY_ERROR, FACILITY_URT, val)
-#endif
-
-#define CLDB_S_TRUNCATION SMAKEHR(0x1106)
-#define META_S_DUPLICATE SMAKEHR(0x1197)
-#define CORDBG_S_BAD_START_SEQUENCE_POINT SMAKEHR(0x130b)
-#define CORDBG_S_BAD_END_SEQUENCE_POINT SMAKEHR(0x130c)
-#define CORDBG_S_FUNC_EVAL_HAS_NO_RESULT SMAKEHR(0x1316)
-#define CORDBG_S_VALUE_POINTS_TO_VOID SMAKEHR(0x1317)
-#define CORDBG_S_FUNC_EVAL_ABORTED SMAKEHR(0x1319)
-#define CORDBG_S_AT_END_OF_STACK SMAKEHR(0x1324)
-#define CORDBG_S_NOT_ALL_BITS_SET SMAKEHR(0x1c13)
-#define CEE_E_CVTRES_NOT_FOUND EMAKEHR(0x1001)
-#define COR_E_TYPEUNLOADED EMAKEHR(0x1013)
-#define COR_E_APPDOMAINUNLOADED EMAKEHR(0x1014)
-#define COR_E_CANNOTUNLOADAPPDOMAIN EMAKEHR(0x1015)
-#define MSEE_E_ASSEMBLYLOADINPROGRESS EMAKEHR(0x1016)
-#define COR_E_ASSEMBLYEXPECTED EMAKEHR(0x1018)
-#define COR_E_FIXUPSINEXE EMAKEHR(0x1019)
-#define COR_E_NEWER_RUNTIME EMAKEHR(0x101b)
-#define COR_E_MULTIMODULEASSEMBLIESDIALLOWED EMAKEHR(0x101e)
-#define HOST_E_DEADLOCK EMAKEHR(0x1020)
-#define HOST_E_INVALIDOPERATION EMAKEHR(0x1022)
-#define HOST_E_CLRNOTAVAILABLE EMAKEHR(0x1023)
-#define HOST_E_EXITPROCESS_THREADABORT EMAKEHR(0x1027)
-#define HOST_E_EXITPROCESS_ADUNLOAD EMAKEHR(0x1028)
-#define HOST_E_EXITPROCESS_TIMEOUT EMAKEHR(0x1029)
-#define HOST_E_EXITPROCESS_OUTOFMEMORY EMAKEHR(0x102a)
-#define COR_E_MODULE_HASH_CHECK_FAILED EMAKEHR(0x1039)
-#define FUSION_E_REF_DEF_MISMATCH EMAKEHR(0x1040)
-#define FUSION_E_INVALID_PRIVATE_ASM_LOCATION EMAKEHR(0x1041)
-#define FUSION_E_ASM_MODULE_MISSING EMAKEHR(0x1042)
-#define FUSION_E_PRIVATE_ASM_DISALLOWED EMAKEHR(0x1044)
-#define FUSION_E_SIGNATURE_CHECK_FAILED EMAKEHR(0x1045)
-#define FUSION_E_INVALID_NAME EMAKEHR(0x1047)
-#define FUSION_E_CODE_DOWNLOAD_DISABLED EMAKEHR(0x1048)
-#define FUSION_E_HOST_GAC_ASM_MISMATCH EMAKEHR(0x1050)
-#define FUSION_E_LOADFROM_BLOCKED EMAKEHR(0x1051)
-#define FUSION_E_CACHEFILE_FAILED EMAKEHR(0x1052)
-#define FUSION_E_APP_DOMAIN_LOCKED EMAKEHR(0x1053)
-#define FUSION_E_CONFIGURATION_ERROR EMAKEHR(0x1054)
-#define FUSION_E_MANIFEST_PARSE_ERROR EMAKEHR(0x1055)
-#define COR_E_LOADING_REFERENCE_ASSEMBLY EMAKEHR(0x1058)
-#define COR_E_NI_AND_RUNTIME_VERSION_MISMATCH EMAKEHR(0x1059)
-#define COR_E_LOADING_WINMD_REFERENCE_ASSEMBLY EMAKEHR(0x1069)
-#define COR_E_AMBIGUOUSIMPLEMENTATION EMAKEHR(0x106a)
-#define CLDB_E_FILE_BADREAD EMAKEHR(0x1100)
-#define CLDB_E_FILE_BADWRITE EMAKEHR(0x1101)
-#define CLDB_E_FILE_OLDVER EMAKEHR(0x1107)
-#define CLDB_E_SMDUPLICATE EMAKEHR(0x110a)
-#define CLDB_E_NO_DATA EMAKEHR(0x110b)
-#define CLDB_E_INCOMPATIBLE EMAKEHR(0x110d)
-#define CLDB_E_FILE_CORRUPT EMAKEHR(0x110e)
-#define CLDB_E_BADUPDATEMODE EMAKEHR(0x1110)
-#define CLDB_E_INDEX_NOTFOUND EMAKEHR(0x1124)
-#define CLDB_E_RECORD_NOTFOUND EMAKEHR(0x1130)
-#define CLDB_E_RECORD_OUTOFORDER EMAKEHR(0x1135)
-#define CLDB_E_TOO_BIG EMAKEHR(0x1154)
-#define META_E_INVALID_TOKEN_TYPE EMAKEHR(0x115f)
-#define TLBX_E_LIBNOTREGISTERED EMAKEHR(0x1165)
-#define META_E_BADMETADATA EMAKEHR(0x118a)
-#define META_E_BAD_SIGNATURE EMAKEHR(0x1192)
-#define META_E_BAD_INPUT_PARAMETER EMAKEHR(0x1193)
-#define META_E_CANNOTRESOLVETYPEREF EMAKEHR(0x1196)
-#define META_E_STRINGSPACE_FULL EMAKEHR(0x1198)
-#define META_E_HAS_UNMARKALL EMAKEHR(0x119a)
-#define META_E_MUST_CALL_UNMARKALL EMAKEHR(0x119b)
-#define META_E_CA_INVALID_TARGET EMAKEHR(0x11c0)
-#define META_E_CA_INVALID_VALUE EMAKEHR(0x11c1)
-#define META_E_CA_INVALID_BLOB EMAKEHR(0x11c2)
-#define META_E_CA_REPEATED_ARG EMAKEHR(0x11c3)
-#define META_E_CA_UNKNOWN_ARGUMENT EMAKEHR(0x11c4)
-#define META_E_CA_UNEXPECTED_TYPE EMAKEHR(0x11c7)
-#define META_E_CA_INVALID_ARGTYPE EMAKEHR(0x11c8)
-#define META_E_CA_INVALID_ARG_FOR_TYPE EMAKEHR(0x11c9)
-#define META_E_CA_INVALID_UUID EMAKEHR(0x11ca)
-#define META_E_CA_INVALID_MARSHALAS_FIELDS EMAKEHR(0x11cb)
-#define META_E_CA_NT_FIELDONLY EMAKEHR(0x11cc)
-#define META_E_CA_NEGATIVE_PARAMINDEX EMAKEHR(0x11cd)
-#define META_E_CA_NEGATIVE_CONSTSIZE EMAKEHR(0x11cf)
-#define META_E_CA_FIXEDSTR_SIZE_REQUIRED EMAKEHR(0x11d0)
-#define META_E_CA_CUSTMARSH_TYPE_REQUIRED EMAKEHR(0x11d1)
-#define META_E_NOT_IN_ENC_MODE EMAKEHR(0x11d4)
-#define META_E_CA_BAD_FRIENDS_ARGS EMAKEHR(0x11e5)
-#define META_E_CA_FRIENDS_SN_REQUIRED EMAKEHR(0x11e6)
-#define VLDTR_E_RID_OUTOFRANGE EMAKEHR(0x1203)
-#define VLDTR_E_STRING_INVALID EMAKEHR(0x1206)
-#define VLDTR_E_GUID_INVALID EMAKEHR(0x1207)
-#define VLDTR_E_BLOB_INVALID EMAKEHR(0x1208)
-#define VLDTR_E_MR_BADCALLINGCONV EMAKEHR(0x1224)
-#define VLDTR_E_SIGNULL EMAKEHR(0x1237)
-#define VLDTR_E_MD_BADCALLINGCONV EMAKEHR(0x1239)
-#define VLDTR_E_MD_THISSTATIC EMAKEHR(0x123a)
-#define VLDTR_E_MD_NOTTHISNOTSTATIC EMAKEHR(0x123b)
-#define VLDTR_E_MD_NOARGCNT EMAKEHR(0x123c)
-#define VLDTR_E_SIG_MISSELTYPE EMAKEHR(0x123d)
-#define VLDTR_E_SIG_MISSTKN EMAKEHR(0x123e)
-#define VLDTR_E_SIG_TKNBAD EMAKEHR(0x123f)
-#define VLDTR_E_SIG_MISSFPTR EMAKEHR(0x1240)
-#define VLDTR_E_SIG_MISSFPTRARGCNT EMAKEHR(0x1241)
-#define VLDTR_E_SIG_MISSRANK EMAKEHR(0x1242)
-#define VLDTR_E_SIG_MISSNSIZE EMAKEHR(0x1243)
-#define VLDTR_E_SIG_MISSSIZE EMAKEHR(0x1244)
-#define VLDTR_E_SIG_MISSNLBND EMAKEHR(0x1245)
-#define VLDTR_E_SIG_MISSLBND EMAKEHR(0x1246)
-#define VLDTR_E_SIG_BADELTYPE EMAKEHR(0x1247)
-#define VLDTR_E_TD_ENCLNOTNESTED EMAKEHR(0x1256)
-#define VLDTR_E_FMD_PINVOKENOTSTATIC EMAKEHR(0x1277)
-#define VLDTR_E_SIG_SENTINMETHODDEF EMAKEHR(0x12df)
-#define VLDTR_E_SIG_SENTMUSTVARARG EMAKEHR(0x12e0)
-#define VLDTR_E_SIG_MULTSENTINELS EMAKEHR(0x12e1)
-#define VLDTR_E_SIG_MISSARG EMAKEHR(0x12e3)
-#define VLDTR_E_SIG_BYREFINFIELD EMAKEHR(0x12e4)
-#define CORDBG_E_UNRECOVERABLE_ERROR EMAKEHR(0x1300)
-#define CORDBG_E_PROCESS_TERMINATED EMAKEHR(0x1301)
-#define CORDBG_E_PROCESS_NOT_SYNCHRONIZED EMAKEHR(0x1302)
-#define CORDBG_E_CLASS_NOT_LOADED EMAKEHR(0x1303)
-#define CORDBG_E_IL_VAR_NOT_AVAILABLE EMAKEHR(0x1304)
-#define CORDBG_E_BAD_REFERENCE_VALUE EMAKEHR(0x1305)
-#define CORDBG_E_FIELD_NOT_AVAILABLE EMAKEHR(0x1306)
-#define CORDBG_E_NON_NATIVE_FRAME EMAKEHR(0x1307)
-#define CORDBG_E_CODE_NOT_AVAILABLE EMAKEHR(0x1309)
-#define CORDBG_E_FUNCTION_NOT_IL EMAKEHR(0x130a)
-#define CORDBG_E_CANT_SET_IP_INTO_FINALLY EMAKEHR(0x130e)
-#define CORDBG_E_CANT_SET_IP_OUT_OF_FINALLY EMAKEHR(0x130f)
-#define CORDBG_E_CANT_SET_IP_INTO_CATCH EMAKEHR(0x1310)
-#define CORDBG_E_SET_IP_NOT_ALLOWED_ON_NONLEAF_FRAME EMAKEHR(0x1311)
-#define CORDBG_E_SET_IP_IMPOSSIBLE EMAKEHR(0x1312)
-#define CORDBG_E_FUNC_EVAL_BAD_START_POINT EMAKEHR(0x1313)
-#define CORDBG_E_INVALID_OBJECT EMAKEHR(0x1314)
-#define CORDBG_E_FUNC_EVAL_NOT_COMPLETE EMAKEHR(0x1315)
-#define CORDBG_E_STATIC_VAR_NOT_AVAILABLE EMAKEHR(0x131a)
-#define CORDBG_E_CANT_SETIP_INTO_OR_OUT_OF_FILTER EMAKEHR(0x131c)
-#define CORDBG_E_CANT_CHANGE_JIT_SETTING_FOR_ZAP_MODULE EMAKEHR(0x131d)
-#define CORDBG_E_CANT_SET_IP_OUT_OF_FINALLY_ON_WIN64 EMAKEHR(0x131e)
-#define CORDBG_E_CANT_SET_IP_OUT_OF_CATCH_ON_WIN64 EMAKEHR(0x131f)
-#define CORDBG_E_CANT_SET_TO_JMC EMAKEHR(0x1323)
-#define CORDBG_E_NO_CONTEXT_FOR_INTERNAL_FRAME EMAKEHR(0x1325)
-#define CORDBG_E_NOT_CHILD_FRAME EMAKEHR(0x1326)
-#define CORDBG_E_NON_MATCHING_CONTEXT EMAKEHR(0x1327)
-#define CORDBG_E_PAST_END_OF_STACK EMAKEHR(0x1328)
-#define CORDBG_E_FUNC_EVAL_CANNOT_UPDATE_REGISTER_IN_NONLEAF_FRAME EMAKEHR(0x1329)
-#define CORDBG_E_BAD_THREAD_STATE EMAKEHR(0x132d)
-#define CORDBG_E_DEBUGGER_ALREADY_ATTACHED EMAKEHR(0x132e)
-#define CORDBG_E_SUPERFLOUS_CONTINUE EMAKEHR(0x132f)
-#define CORDBG_E_SET_VALUE_NOT_ALLOWED_ON_NONLEAF_FRAME EMAKEHR(0x1330)
-#define CORDBG_E_ENC_MODULE_NOT_ENC_ENABLED EMAKEHR(0x1332)
-#define CORDBG_E_SET_IP_NOT_ALLOWED_ON_EXCEPTION EMAKEHR(0x1333)
-#define CORDBG_E_VARIABLE_IS_ACTUALLY_LITERAL EMAKEHR(0x1334)
-#define CORDBG_E_PROCESS_DETACHED EMAKEHR(0x1335)
-#define CORDBG_E_ENC_CANT_ADD_FIELD_TO_VALUE_OR_LAYOUT_CLASS EMAKEHR(0x1338)
-#define CORDBG_E_FIELD_NOT_STATIC EMAKEHR(0x133b)
-#define CORDBG_E_FIELD_NOT_INSTANCE EMAKEHR(0x133c)
-#define CORDBG_E_ENC_JIT_CANT_UPDATE EMAKEHR(0x133f)
-#define CORDBG_E_ENC_INTERNAL_ERROR EMAKEHR(0x1341)
-#define CORDBG_E_ENC_HANGING_FIELD EMAKEHR(0x1342)
-#define CORDBG_E_MODULE_NOT_LOADED EMAKEHR(0x1343)
-#define CORDBG_E_UNABLE_TO_SET_BREAKPOINT EMAKEHR(0x1345)
-#define CORDBG_E_DEBUGGING_NOT_POSSIBLE EMAKEHR(0x1346)
-#define CORDBG_E_KERNEL_DEBUGGER_ENABLED EMAKEHR(0x1347)
-#define CORDBG_E_KERNEL_DEBUGGER_PRESENT EMAKEHR(0x1348)
-#define CORDBG_E_INCOMPATIBLE_PROTOCOL EMAKEHR(0x134b)
-#define CORDBG_E_TOO_MANY_PROCESSES EMAKEHR(0x134c)
-#define CORDBG_E_INTEROP_NOT_SUPPORTED EMAKEHR(0x134d)
-#define CORDBG_E_NO_REMAP_BREAKPIONT EMAKEHR(0x134e)
-#define CORDBG_E_OBJECT_NEUTERED EMAKEHR(0x134f)
-#define CORPROF_E_FUNCTION_NOT_COMPILED EMAKEHR(0x1350)
-#define CORPROF_E_DATAINCOMPLETE EMAKEHR(0x1351)
-#define CORPROF_E_FUNCTION_NOT_IL EMAKEHR(0x1354)
-#define CORPROF_E_NOT_MANAGED_THREAD EMAKEHR(0x1355)
-#define CORPROF_E_CALL_ONLY_FROM_INIT EMAKEHR(0x1356)
-#define CORPROF_E_NOT_YET_AVAILABLE EMAKEHR(0x135b)
-#define CORPROF_E_TYPE_IS_PARAMETERIZED EMAKEHR(0x135c)
-#define CORPROF_E_FUNCTION_IS_PARAMETERIZED EMAKEHR(0x135d)
-#define CORPROF_E_STACKSNAPSHOT_INVALID_TGT_THREAD EMAKEHR(0x135e)
-#define CORPROF_E_STACKSNAPSHOT_UNMANAGED_CTX EMAKEHR(0x135f)
-#define CORPROF_E_STACKSNAPSHOT_UNSAFE EMAKEHR(0x1360)
-#define CORPROF_E_STACKSNAPSHOT_ABORTED EMAKEHR(0x1361)
-#define CORPROF_E_LITERALS_HAVE_NO_ADDRESS EMAKEHR(0x1362)
-#define CORPROF_E_UNSUPPORTED_CALL_SEQUENCE EMAKEHR(0x1363)
-#define CORPROF_E_ASYNCHRONOUS_UNSAFE EMAKEHR(0x1364)
-#define CORPROF_E_CLASSID_IS_ARRAY EMAKEHR(0x1365)
-#define CORPROF_E_CLASSID_IS_COMPOSITE EMAKEHR(0x1366)
-#define CORPROF_E_PROFILER_DETACHING EMAKEHR(0x1367)
-#define CORPROF_E_PROFILER_NOT_ATTACHABLE EMAKEHR(0x1368)
-#define CORPROF_E_UNRECOGNIZED_PIPE_MSG_FORMAT EMAKEHR(0x1369)
-#define CORPROF_E_PROFILER_ALREADY_ACTIVE EMAKEHR(0x136a)
-#define CORPROF_E_PROFILEE_INCOMPATIBLE_WITH_TRIGGER EMAKEHR(0x136b)
-#define CORPROF_E_IPC_FAILED EMAKEHR(0x136c)
-#define CORPROF_E_PROFILEE_PROCESS_NOT_FOUND EMAKEHR(0x136d)
-#define CORPROF_E_CALLBACK3_REQUIRED EMAKEHR(0x136e)
-#define CORPROF_E_UNSUPPORTED_FOR_ATTACHING_PROFILER EMAKEHR(0x136f)
-#define CORPROF_E_IRREVERSIBLE_INSTRUMENTATION_PRESENT EMAKEHR(0x1370)
-#define CORPROF_E_RUNTIME_UNINITIALIZED EMAKEHR(0x1371)
-#define CORPROF_E_IMMUTABLE_FLAGS_SET EMAKEHR(0x1372)
-#define CORPROF_E_PROFILER_NOT_YET_INITIALIZED EMAKEHR(0x1373)
-#define CORPROF_E_INCONSISTENT_WITH_FLAGS EMAKEHR(0x1374)
-#define CORPROF_E_PROFILER_CANCEL_ACTIVATION EMAKEHR(0x1375)
-#define CORPROF_E_CONCURRENT_GC_NOT_PROFILABLE EMAKEHR(0x1376)
-#define CORPROF_E_DEBUGGING_DISABLED EMAKEHR(0x1378)
-#define CORPROF_E_TIMEOUT_WAITING_FOR_CONCURRENT_GC EMAKEHR(0x1379)
-#define CORPROF_E_MODULE_IS_DYNAMIC EMAKEHR(0x137a)
-#define CORPROF_E_CALLBACK4_REQUIRED EMAKEHR(0x137b)
-#define CORPROF_E_REJIT_NOT_ENABLED EMAKEHR(0x137c)
-#define CORPROF_E_FUNCTION_IS_COLLECTIBLE EMAKEHR(0x137e)
-#define CORPROF_E_CALLBACK6_REQUIRED EMAKEHR(0x1380)
-#define CORPROF_E_CALLBACK7_REQUIRED EMAKEHR(0x1382)
-#define CORPROF_E_REJIT_INLINING_DISABLED EMAKEHR(0x1383)
-#define CORDIAGIPC_E_BAD_ENCODING EMAKEHR(0x1384)
-#define CORDIAGIPC_E_UNKNOWN_COMMAND EMAKEHR(0x1385)
-#define CORDIAGIPC_E_UNKNOWN_MAGIC EMAKEHR(0x1386)
-#define CORDIAGIPC_E_UNKNOWN_ERROR EMAKEHR(0x1387)
-#define CORPROF_E_SUSPENSION_IN_PROGRESS EMAKEHR(0x1388)
-#define SECURITY_E_INCOMPATIBLE_SHARE EMAKEHR(0x1401)
-#define SECURITY_E_UNVERIFIABLE EMAKEHR(0x1402)
-#define SECURITY_E_INCOMPATIBLE_EVIDENCE EMAKEHR(0x1403)
-#define CORSEC_E_POLICY_EXCEPTION EMAKEHR(0x1416)
-#define CORSEC_E_MIN_GRANT_FAIL EMAKEHR(0x1417)
-#define CORSEC_E_NO_EXEC_PERM EMAKEHR(0x1418)
-#define CORSEC_E_XMLSYNTAX EMAKEHR(0x1419)
-#define CORSEC_E_INVALID_STRONGNAME EMAKEHR(0x141a)
-#define CORSEC_E_MISSING_STRONGNAME EMAKEHR(0x141b)
-#define CORSEC_E_INVALID_IMAGE_FORMAT EMAKEHR(0x141d)
-#define CORSEC_E_INVALID_PUBLICKEY EMAKEHR(0x141e)
-#define CORSEC_E_SIGNATURE_MISMATCH EMAKEHR(0x1420)
-#define CORSEC_E_CRYPTO EMAKEHR(0x1430)
-#define CORSEC_E_CRYPTO_UNEX_OPER EMAKEHR(0x1431)
-#define CORSECATTR_E_BAD_ACTION EMAKEHR(0x1442)
-#define COR_E_EXCEPTION EMAKEHR(0x1500)
-#define COR_E_SYSTEM EMAKEHR(0x1501)
-#define COR_E_ARGUMENTOUTOFRANGE EMAKEHR(0x1502)
-#define COR_E_ARRAYTYPEMISMATCH EMAKEHR(0x1503)
-#define COR_E_CONTEXTMARSHAL EMAKEHR(0x1504)
-#define COR_E_TIMEOUT EMAKEHR(0x1505)
-#define COR_E_EXECUTIONENGINE EMAKEHR(0x1506)
-#define COR_E_FIELDACCESS EMAKEHR(0x1507)
-#define COR_E_INDEXOUTOFRANGE EMAKEHR(0x1508)
-#define COR_E_INVALIDOPERATION EMAKEHR(0x1509)
-#define COR_E_SECURITY EMAKEHR(0x150a)
-#define COR_E_SERIALIZATION EMAKEHR(0x150c)
-#define COR_E_VERIFICATION EMAKEHR(0x150d)
-#define COR_E_METHODACCESS EMAKEHR(0x1510)
-#define COR_E_MISSINGFIELD EMAKEHR(0x1511)
-#define COR_E_MISSINGMEMBER EMAKEHR(0x1512)
-#define COR_E_MISSINGMETHOD EMAKEHR(0x1513)
-#define COR_E_MULTICASTNOTSUPPORTED EMAKEHR(0x1514)
-#define COR_E_NOTSUPPORTED EMAKEHR(0x1515)
-#define COR_E_OVERFLOW EMAKEHR(0x1516)
-#define COR_E_RANK EMAKEHR(0x1517)
-#define COR_E_SYNCHRONIZATIONLOCK EMAKEHR(0x1518)
-#define COR_E_THREADINTERRUPTED EMAKEHR(0x1519)
-#define COR_E_MEMBERACCESS EMAKEHR(0x151a)
-#define COR_E_THREADSTATE EMAKEHR(0x1520)
-#define COR_E_THREADSTOP EMAKEHR(0x1521)
-#define COR_E_TYPELOAD EMAKEHR(0x1522)
-#define COR_E_ENTRYPOINTNOTFOUND EMAKEHR(0x1523)
-#define COR_E_DLLNOTFOUND EMAKEHR(0x1524)
-#define COR_E_THREADSTART EMAKEHR(0x1525)
-#define COR_E_INVALIDCOMOBJECT EMAKEHR(0x1527)
-#define COR_E_NOTFINITENUMBER EMAKEHR(0x1528)
-#define COR_E_DUPLICATEWAITOBJECT EMAKEHR(0x1529)
-#define COR_E_SEMAPHOREFULL EMAKEHR(0x152b)
-#define COR_E_WAITHANDLECANNOTBEOPENED EMAKEHR(0x152c)
-#define COR_E_ABANDONEDMUTEX EMAKEHR(0x152d)
-#define COR_E_THREADABORTED EMAKEHR(0x1530)
-#define COR_E_INVALIDOLEVARIANTTYPE EMAKEHR(0x1531)
-#define COR_E_MISSINGMANIFESTRESOURCE EMAKEHR(0x1532)
-#define COR_E_SAFEARRAYTYPEMISMATCH EMAKEHR(0x1533)
-#define COR_E_TYPEINITIALIZATION EMAKEHR(0x1534)
-#define COR_E_MARSHALDIRECTIVE EMAKEHR(0x1535)
-#define COR_E_MISSINGSATELLITEASSEMBLY EMAKEHR(0x1536)
-#define COR_E_FORMAT EMAKEHR(0x1537)
-#define COR_E_SAFEARRAYRANKMISMATCH EMAKEHR(0x1538)
-#define COR_E_PLATFORMNOTSUPPORTED EMAKEHR(0x1539)
-#define COR_E_INVALIDPROGRAM EMAKEHR(0x153a)
-#define COR_E_OPERATIONCANCELED EMAKEHR(0x153b)
-#define COR_E_INSUFFICIENTMEMORY EMAKEHR(0x153d)
-#define COR_E_RUNTIMEWRAPPED EMAKEHR(0x153e)
-#define COR_E_DATAMISALIGNED EMAKEHR(0x1541)
-#define COR_E_CODECONTRACTFAILED EMAKEHR(0x1542)
-#define COR_E_TYPEACCESS EMAKEHR(0x1543)
-#define COR_E_ACCESSING_CCW EMAKEHR(0x1544)
-#define COR_E_KEYNOTFOUND EMAKEHR(0x1577)
-#define COR_E_INSUFFICIENTEXECUTIONSTACK EMAKEHR(0x1578)
-#define COR_E_APPLICATION EMAKEHR(0x1600)
-#define COR_E_INVALIDFILTERCRITERIA EMAKEHR(0x1601)
-#define COR_E_REFLECTIONTYPELOAD EMAKEHR(0x1602)
-#define COR_E_TARGET EMAKEHR(0x1603)
-#define COR_E_TARGETINVOCATION EMAKEHR(0x1604)
-#define COR_E_CUSTOMATTRIBUTEFORMAT EMAKEHR(0x1605)
-#define COR_E_IO EMAKEHR(0x1620)
-#define COR_E_FILELOAD EMAKEHR(0x1621)
-#define COR_E_OBJECTDISPOSED EMAKEHR(0x1622)
-#define COR_E_FAILFAST EMAKEHR(0x1623)
-#define COR_E_HOSTPROTECTION EMAKEHR(0x1640)
-#define COR_E_ILLEGAL_REENTRANCY EMAKEHR(0x1641)
-#define CLR_E_SHIM_RUNTIMELOAD EMAKEHR(0x1700)
-#define CLR_E_SHIM_LEGACYRUNTIMEALREADYBOUND EMAKEHR(0x1704)
-#define VER_E_FIELD_SIG EMAKEHR(0x1815)
-#define VER_E_CIRCULAR_VAR_CONSTRAINTS EMAKEHR(0x18ce)
-#define VER_E_CIRCULAR_MVAR_CONSTRAINTS EMAKEHR(0x18cf)
-#define COR_E_Data EMAKEHR(0x1920)
-#define VLDTR_E_SIG_BADVOID EMAKEHR(0x1b24)
-#define VLDTR_E_GP_ILLEGAL_VARIANT_MVAR EMAKEHR(0x1b2d)
-#define CORDBG_E_THREAD_NOT_SCHEDULED EMAKEHR(0x1c00)
-#define CORDBG_E_HANDLE_HAS_BEEN_DISPOSED EMAKEHR(0x1c01)
-#define CORDBG_E_NONINTERCEPTABLE_EXCEPTION EMAKEHR(0x1c02)
-#define CORDBG_E_INTERCEPT_FRAME_ALREADY_SET EMAKEHR(0x1c04)
-#define CORDBG_E_NO_NATIVE_PATCH_AT_ADDR EMAKEHR(0x1c05)
-#define CORDBG_E_MUST_BE_INTEROP_DEBUGGING EMAKEHR(0x1c06)
-#define CORDBG_E_NATIVE_PATCH_ALREADY_AT_ADDR EMAKEHR(0x1c07)
-#define CORDBG_E_TIMEOUT EMAKEHR(0x1c08)
-#define CORDBG_E_CANT_CALL_ON_THIS_THREAD EMAKEHR(0x1c09)
-#define CORDBG_E_ENC_INFOLESS_METHOD EMAKEHR(0x1c0a)
-#define CORDBG_E_ENC_IN_FUNCLET EMAKEHR(0x1c0c)
-#define CORDBG_E_ENC_EDIT_NOT_SUPPORTED EMAKEHR(0x1c0e)
-#define CORDBG_E_NOTREADY EMAKEHR(0x1c10)
-#define CORDBG_E_CANNOT_RESOLVE_ASSEMBLY EMAKEHR(0x1c11)
-#define CORDBG_E_MUST_BE_IN_LOAD_MODULE EMAKEHR(0x1c12)
-#define CORDBG_E_CANNOT_BE_ON_ATTACH EMAKEHR(0x1c13)
-#define CORDBG_E_NGEN_NOT_SUPPORTED EMAKEHR(0x1c14)
-#define CORDBG_E_ILLEGAL_SHUTDOWN_ORDER EMAKEHR(0x1c15)
-#define CORDBG_E_CANNOT_DEBUG_FIBER_PROCESS EMAKEHR(0x1c16)
-#define CORDBG_E_MUST_BE_IN_CREATE_PROCESS EMAKEHR(0x1c17)
-#define CORDBG_E_DETACH_FAILED_OUTSTANDING_EVALS EMAKEHR(0x1c18)
-#define CORDBG_E_DETACH_FAILED_OUTSTANDING_STEPPERS EMAKEHR(0x1c19)
-#define CORDBG_E_CANT_INTEROP_STEP_OUT EMAKEHR(0x1c20)
-#define CORDBG_E_DETACH_FAILED_OUTSTANDING_BREAKPOINTS EMAKEHR(0x1c21)
-#define CORDBG_E_ILLEGAL_IN_STACK_OVERFLOW EMAKEHR(0x1c22)
-#define CORDBG_E_ILLEGAL_AT_GC_UNSAFE_POINT EMAKEHR(0x1c23)
-#define CORDBG_E_ILLEGAL_IN_PROLOG EMAKEHR(0x1c24)
-#define CORDBG_E_ILLEGAL_IN_NATIVE_CODE EMAKEHR(0x1c25)
-#define CORDBG_E_ILLEGAL_IN_OPTIMIZED_CODE EMAKEHR(0x1c26)
-#define CORDBG_E_APPDOMAIN_MISMATCH EMAKEHR(0x1c28)
-#define CORDBG_E_CONTEXT_UNVAILABLE EMAKEHR(0x1c29)
-#define CORDBG_E_UNCOMPATIBLE_PLATFORMS EMAKEHR(0x1c30)
-#define CORDBG_E_DEBUGGING_DISABLED EMAKEHR(0x1c31)
-#define CORDBG_E_DETACH_FAILED_ON_ENC EMAKEHR(0x1c32)
-#define CORDBG_E_CURRENT_EXCEPTION_IS_OUTSIDE_CURRENT_EXECUTION_SCOPE EMAKEHR(0x1c33)
-#define CORDBG_E_HELPER_MAY_DEADLOCK EMAKEHR(0x1c34)
-#define CORDBG_E_MISSING_METADATA EMAKEHR(0x1c35)
-#define CORDBG_E_TARGET_INCONSISTENT EMAKEHR(0x1c36)
-#define CORDBG_E_DETACH_FAILED_OUTSTANDING_TARGET_RESOURCES EMAKEHR(0x1c37)
-#define CORDBG_E_TARGET_READONLY EMAKEHR(0x1c38)
-#define CORDBG_E_MISMATCHED_CORWKS_AND_DACWKS_DLLS EMAKEHR(0x1c39)
-#define CORDBG_E_MODULE_LOADED_FROM_DISK EMAKEHR(0x1c3a)
-#define CORDBG_E_SYMBOLS_NOT_AVAILABLE EMAKEHR(0x1c3b)
-#define CORDBG_E_DEBUG_COMPONENT_MISSING EMAKEHR(0x1c3c)
-#define CORDBG_E_LIBRARY_PROVIDER_ERROR EMAKEHR(0x1c43)
-#define CORDBG_E_NOT_CLR EMAKEHR(0x1c44)
-#define CORDBG_E_MISSING_DATA_TARGET_INTERFACE EMAKEHR(0x1c45)
-#define CORDBG_E_UNSUPPORTED_DEBUGGING_MODEL EMAKEHR(0x1c46)
-#define CORDBG_E_UNSUPPORTED_FORWARD_COMPAT EMAKEHR(0x1c47)
-#define CORDBG_E_UNSUPPORTED_VERSION_STRUCT EMAKEHR(0x1c48)
-#define CORDBG_E_READVIRTUAL_FAILURE EMAKEHR(0x1c49)
-#define CORDBG_E_VALUE_POINTS_TO_FUNCTION EMAKEHR(0x1c4a)
-#define CORDBG_E_CORRUPT_OBJECT EMAKEHR(0x1c4b)
-#define CORDBG_E_GC_STRUCTURES_INVALID EMAKEHR(0x1c4c)
-#define CORDBG_E_INVALID_OPCODE EMAKEHR(0x1c4d)
-#define CORDBG_E_UNSUPPORTED EMAKEHR(0x1c4e)
-#define CORDBG_E_MISSING_DEBUGGER_EXPORTS EMAKEHR(0x1c4f)
-#define CORDBG_E_DATA_TARGET_ERROR EMAKEHR(0x1c61)
-#define CORDBG_E_NO_IMAGE_AVAILABLE EMAKEHR(0x1c64)
-#define CORDBG_E_UNSUPPORTED_DELEGATE EMAKEHR(0x1c68)
-#define CORDBG_E_ASSEMBLY_UPDATES_APPLIED EMAKEHR(0x1c69)
-#define PEFMT_E_64BIT EMAKEHR(0x1d02)
-#define PEFMT_E_32BIT EMAKEHR(0x1d0b)
-#define CLDB_E_INTERNALERROR EMAKEHR(0x1fff)
-#define CLR_E_BIND_ASSEMBLY_VERSION_TOO_LOW EMAKEHR(0x2000)
-#define CLR_E_BIND_ASSEMBLY_PUBLIC_KEY_MISMATCH EMAKEHR(0x2001)
-#define CLR_E_BIND_IMAGE_UNAVAILABLE EMAKEHR(0x2002)
-#define CLR_E_BIND_UNRECOGNIZED_IDENTITY_FORMAT EMAKEHR(0x2003)
-#define CLR_E_BIND_ASSEMBLY_NOT_FOUND EMAKEHR(0x2004)
-#define CLR_E_BIND_TYPE_NOT_FOUND EMAKEHR(0x2005)
-#define CLR_E_BIND_SYS_ASM_NI_MISSING EMAKEHR(0x2006)
-#define CLR_E_BIND_NI_SECURITY_FAILURE EMAKEHR(0x2007)
-#define CLR_E_BIND_NI_DEP_IDENTITY_MISMATCH EMAKEHR(0x2008)
-#define CLR_E_GC_OOM EMAKEHR(0x2009)
-#define CLR_E_GC_BAD_AFFINITY_CONFIG EMAKEHR(0x200a)
-#define CLR_E_GC_BAD_AFFINITY_CONFIG_FORMAT EMAKEHR(0x200b)
-#define CLR_E_CROSSGEN_NO_IBC_DATA_FOUND EMAKEHR(0x200c)
-#define CLR_E_GC_BAD_HARD_LIMIT EMAKEHR(0x200d)
-#define CLR_E_GC_LARGE_PAGE_MISSING_HARD_LIMIT EMAKEHR(0x200e)
-#define COR_E_UNAUTHORIZEDACCESS E_ACCESSDENIED
-#define COR_E_ARGUMENT E_INVALIDARG
-#define COR_E_INVALIDCAST E_NOINTERFACE
-#define COR_E_OUTOFMEMORY E_OUTOFMEMORY
-#define COR_E_NULLREFERENCE E_POINTER
-#define COR_E_ARITHMETIC __HRESULT_FROM_WIN32(ERROR_ARITHMETIC_OVERFLOW)
-#define COR_E_PATHTOOLONG __HRESULT_FROM_WIN32(ERROR_FILENAME_EXCED_RANGE)
-#define COR_E_FILENOTFOUND __HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)
-#define COR_E_ENDOFSTREAM __HRESULT_FROM_WIN32(ERROR_HANDLE_EOF)
-#define COR_E_DIRECTORYNOTFOUND __HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND)
-#define COR_E_STACKOVERFLOW __HRESULT_FROM_WIN32(ERROR_STACK_OVERFLOW)
-#define COR_E_AMBIGUOUSMATCH ((HRESULT)0x8000211DL)
-#define COR_E_TARGETPARAMCOUNT ((HRESULT)0x8002000EL)
-#define COR_E_DIVIDEBYZERO ((HRESULT)0x80020012L)
-#define COR_E_BADIMAGEFORMAT ((HRESULT)0x8007000BL)
-
-
-#endif // __COMMON_LANGUAGE_RUNTIME_HRESULTS__
\ No newline at end of file
diff --git a/src/native/dnmd/src/inc/external/corhdr.h b/src/native/dnmd/src/inc/external/corhdr.h
deleted file mode 100644
index 03a1cb47c337e3..00000000000000
--- a/src/native/dnmd/src/inc/external/corhdr.h
+++ /dev/null
@@ -1,1781 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-/*****************************************************************************
- ** **
- ** CorHdr.h - contains definitions for the Runtime structures, **
-**
-
- ** needed to work with metadata. **
- ** **
- *****************************************************************************/
-//
-// The top most managed code structure in a EXE or DLL is the IMAGE_COR20_HEADER
-// see code:#ManagedHeader for more
-
-#ifndef __CORHDR_H__
-#define __CORHDR_H__
-
-#include
-
-#ifdef _MSC_VER
-#pragma warning(disable:4200) // nonstandard extension used : zero-sized array in struct/union.
-#endif
-typedef void* mdScope; // Obsolete; not used in the runtime.
-typedef uint32_t mdToken; // Generic token
-
-
-// Token definitions
-
-
-typedef mdToken mdModule; // Module token (roughly, a scope)
-typedef mdToken mdTypeRef; // TypeRef reference (this or other scope)
-typedef mdToken mdTypeDef; // TypeDef in this scope
-typedef mdToken mdFieldDef; // Field in this scope
-typedef mdToken mdMethodDef; // Method in this scope
-typedef mdToken mdParamDef; // param token
-typedef mdToken mdInterfaceImpl; // interface implementation token
-
-typedef mdToken mdMemberRef; // MemberRef (this or other scope)
-typedef mdToken mdCustomAttribute; // attribute token
-typedef mdToken mdPermission; // DeclSecurity
-
-typedef mdToken mdSignature; // Signature object
-typedef mdToken mdEvent; // event token
-typedef mdToken mdProperty; // property token
-
-typedef mdToken mdModuleRef; // Module reference (for the imported modules)
-
-// Assembly tokens.
-typedef mdToken mdAssembly; // Assembly token.
-typedef mdToken mdAssemblyRef; // AssemblyRef token.
-typedef mdToken mdFile; // File token.
-typedef mdToken mdExportedType; // ExportedType token.
-typedef mdToken mdManifestResource; // ManifestResource token.
-
-typedef mdToken mdTypeSpec; // TypeSpec object
-
-typedef mdToken mdGenericParam; // formal parameter to generic type or method
-typedef mdToken mdMethodSpec; // instantiation of a generic method
-typedef mdToken mdGenericParamConstraint; // constraint on a formal generic parameter
-
-// Application string.
-typedef mdToken mdString; // User literal string token.
-
-typedef mdToken mdCPToken; // constantpool token
-
-#ifndef MACROS_NOT_SUPPORTED
-typedef uint32_t RID;
-#else
-typedef unsigned RID;
-#endif // MACROS_NOT_SUPPORTED
-
-typedef enum ReplacesGeneralNumericDefines
-{
-// Directory entry macro for CLR data.
-#ifndef IMAGE_DIRECTORY_ENTRY_COMHEADER
- IMAGE_DIRECTORY_ENTRY_COMHEADER =14,
-#endif // IMAGE_DIRECTORY_ENTRY_COMHEADER
-} ReplacesGeneralNumericDefines;
-
-
-// The COMIMAGE_FLAGS_32BITREQUIRED and COMIMAGE_FLAGS_32BITPREFERRED flags defined below interact as a pair
-// in order to get the performance profile we desire for platform neutral assemblies while retaining backwards
-// compatibility with pre-4.5 runtimes/OSs, which don't know about COMIMAGE_FLAGS_32BITPREFERRED.
-//
-// COMIMAGE_FLAGS_32BITREQUIRED originally meant "this assembly is x86-only" (required to distinguish platform
-// neutral assemblies which also mark their PE MachineType as IMAGE_FILE_MACHINE_I386).
-//
-// COMIMAGE_FLAGS_32BITPREFERRED has been added so we can create a sub-class of platform neutral assembly that
-// prefers to be loaded into 32-bit environment for perf reasons, but is still compatible with 64-bit
-// environments.
-//
-// In order to retain maximum backwards compatibility you cannot simply read or write one of these flags.
-// You must treat them as a pair, a two-bit field with the following meanings:
-//
-// 32BITREQUIRED 32BITPREFERRED
-// 0 0 : no special meaning, MachineType and ILONLY flag determine image requirements
-// 0 1 : illegal, reserved for future use
-// 1 0 : image is x86-specific
-// 1 1 : image is platform neutral and prefers to be loaded 32-bit when possible
-//
-// To simplify manipulation of these flags the following macros are provided below.
-
-#define COR_IS_32BIT_REQUIRED(_flags) \
- (((_flags) & (COMIMAGE_FLAGS_32BITREQUIRED|COMIMAGE_FLAGS_32BITPREFERRED)) == (COMIMAGE_FLAGS_32BITREQUIRED))
-
-#define COR_IS_32BIT_PREFERRED(_flags) \
- (((_flags) & (COMIMAGE_FLAGS_32BITREQUIRED|COMIMAGE_FLAGS_32BITPREFERRED)) == (COMIMAGE_FLAGS_32BITREQUIRED|COMIMAGE_FLAGS_32BITPREFERRED))
-
-#define COR_SET_32BIT_REQUIRED(_flagsfield) \
- do { _flagsfield = (_flagsfield & ~COMIMAGE_FLAGS_32BITPREFERRED) | COMIMAGE_FLAGS_32BITREQUIRED; } while (false)
-
-#define COR_SET_32BIT_PREFERRED(_flagsfield) \
- do { _flagsfield |= COMIMAGE_FLAGS_32BITPREFERRED|COMIMAGE_FLAGS_32BITREQUIRED; } while (false)
-
-#define COR_CLEAR_32BIT_REQUIRED(_flagsfield) \
- do { _flagsfield &= ~(COMIMAGE_FLAGS_32BITREQUIRED|COMIMAGE_FLAGS_32BITPREFERRED); } while (false)
-
-#define COR_CLEAR_32BIT_PREFERRED(_flagsfield) \
- do { _flagsfield &= ~(COMIMAGE_FLAGS_32BITREQUIRED|COMIMAGE_FLAGS_32BITPREFERRED); } while (false)
-
-
-#ifndef __IMAGE_COR20_HEADER_DEFINED__
-#define __IMAGE_COR20_HEADER_DEFINED__
-
-typedef enum ReplacesCorHdrNumericDefines
-{
-// COM+ Header entry point flags.
- COMIMAGE_FLAGS_ILONLY =0x00000001,
- COMIMAGE_FLAGS_32BITREQUIRED =0x00000002, // *** Do not manipulate this bit directly (see notes above)
- COMIMAGE_FLAGS_IL_LIBRARY =0x00000004,
- COMIMAGE_FLAGS_STRONGNAMESIGNED =0x00000008,
- COMIMAGE_FLAGS_NATIVE_ENTRYPOINT =0x00000010,
- COMIMAGE_FLAGS_TRACKDEBUGDATA =0x00010000,
- COMIMAGE_FLAGS_32BITPREFERRED =0x00020000, // *** Do not manipulate this bit directly (see notes above)
-
-
-// Version flags for image.
- COR_VERSION_MAJOR_V2 =2,
- COR_VERSION_MAJOR =COR_VERSION_MAJOR_V2,
- COR_VERSION_MINOR =5,
- COR_DELETED_NAME_LENGTH =8,
- COR_VTABLEGAP_NAME_LENGTH =8,
-
-// Maximum size of a NativeType descriptor.
- NATIVE_TYPE_MAX_CB =1,
- COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE=0xFF,
-
-// V-table constants
- COR_VTABLE_32BIT =0x01, // V-table slots are 32-bits in size.
- COR_VTABLE_64BIT =0x02, // V-table slots are 64-bits in size.
- COR_VTABLE_FROM_UNMANAGED =0x04, // If set, transition from unmanaged.
- COR_VTABLE_FROM_UNMANAGED_RETAIN_APPDOMAIN=0x08, // NEW
- COR_VTABLE_CALL_MOST_DERIVED =0x10, // Call most derived method described by
-
-// EATJ constants
- IMAGE_COR_EATJ_THUNK_SIZE = 32, // Size of a jump thunk reserved range.
-
-// Max name lengths
- //@todo: Change to unlimited name lengths.
- MAX_CLASS_NAME =1024,
- MAX_PACKAGE_NAME =1024,
-} ReplacesCorHdrNumericDefines;
-
-//
-// Directory format.
-//
-#ifndef IMAGE_DATA_DIRECTORY_DEFINED
-
-#define IMAGE_DATA_DIRECTORY_DEFINED
-typedef struct _IMAGE_DATA_DIRECTORY {
- uint32_t VirtualAddress;
- uint32_t Size;
-} IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;
-
-#endif // IMAGE_DATA_DIRECTORY_DEFINED
-
-// #ManagedHeader
-//
-// A managed code EXE or DLL uses the same basic format that unmanaged executables use call the Portable
-// Executable (PE) format. See http://en.wikipedia.org/wiki/Portable_Executable or
-// http://msdn.microsoft.com/msdnmag/issues/02/02/PE/default.aspx for more on this format and RVAs.
-//
-// PE files define fixed table of well known entry pointers call Directory entries. Each entry holds the
-// relative virtual address (RVA) and length of a blob of data within the PE file. You can see these using
-// the command
-//
-// link /dump /headers
-//
-//
-// Managed code has defined one of these entries (the 14th see code:IMAGE_DIRECTORY_ENTRY_COMHEADER) and the RVA points
-// that the IMAGE_COR20_HEADER. This header shows up in the previous dump as the following line
-//
-// // Managed code is identified by is following line
-//
-// 2008 [ 48] RVA [size] of COM Descriptor Directory
-//
-// The IMAGE_COR20_HEADER is mostly just RVA:Length pairs (pointers) to other interesting data structures.
-// The most important of these is the MetaData tables. The easiest way of looking at meta-data is using
-// the IlDasm.exe tool.
-//
-// MetaData holds most of the information in the IL image. The exceptions are resource blobs and the IL
-// instructions streams for individual methods. Instead the Meta-data for a method holds an RVA to a
-// code:IMAGE_COR_ILMETHOD which holds all the IL stream (and exception handling information).
-//
-// Precompiled (NGEN) images use the same IMAGE_COR20_HEADER but also use the ManagedNativeHeader field to
-// point at structures that only exist in precompiled images.
-//
-typedef struct IMAGE_COR20_HEADER
-{
- // Header versioning
- uint32_t cb;
- uint16_t MajorRuntimeVersion;
- uint16_t MinorRuntimeVersion;
-
- // Symbol table and startup information
- IMAGE_DATA_DIRECTORY MetaData;
- uint32_t Flags;
-
- // The main program if it is an EXE (not used if a DLL?)
- // If COMIMAGE_FLAGS_NATIVE_ENTRYPOINT is not set, EntryPointToken represents a managed entrypoint.
- // If COMIMAGE_FLAGS_NATIVE_ENTRYPOINT is set, EntryPointRVA represents an RVA to a native entrypoint
- // (deprecated for DLLs, use modules constructors instead).
- union {
- uint32_t EntryPointToken;
- uint32_t EntryPointRVA;
- };
-
- // This is the blob of managed resources. Fetched using code:AssemblyNative.GetResource and
- // code:PEAssembly.GetResource and accessible from managed code from
- // System.Assembly.GetManifestResourceStream. The meta data has a table that maps names to offsets into
- // this blob, so logically the blob is a set of resources.
- IMAGE_DATA_DIRECTORY Resources;
- // IL assemblies can be signed with a public-private key to validate who created it. The signature goes
- // here if this feature is used.
- IMAGE_DATA_DIRECTORY StrongNameSignature;
-
- IMAGE_DATA_DIRECTORY CodeManagerTable; // Deprecated, not used
- // Used for manged code that has unmanaged code inside it (or exports methods as unmanaged entry points)
- IMAGE_DATA_DIRECTORY VTableFixups;
- IMAGE_DATA_DIRECTORY ExportAddressTableJumps;
-
- // null for ordinary IL images.
- // In Ready2Run images it points to a READYTORUN_HEADER.
- IMAGE_DATA_DIRECTORY ManagedNativeHeader;
-
-} IMAGE_COR20_HEADER, *PIMAGE_COR20_HEADER;
-
-#else // !__IMAGE_COR20_HEADER_DEFINED__
-
-// @TODO: This is required because we pull in the COM+ 2.0 PE header
-// definition from WinNT.h, and these constants have not yet propagated to there.
-//
-#define COR_VTABLE_FROM_UNMANAGED_RETAIN_APPDOMAIN 0x08
-#define COMIMAGE_FLAGS_32BITPREFERRED 0x00020000
-
-#endif // __IMAGE_COR20_HEADER_DEFINED__
-
-
-// The most recent version.
-
-#define COR_CTOR_METHOD_NAME ".ctor"
-#define COR_CTOR_METHOD_NAME_W W(".ctor")
-#define COR_CCTOR_METHOD_NAME ".cctor"
-#define COR_CCTOR_METHOD_NAME_W W(".cctor")
-
-#define COR_ENUM_FIELD_NAME "value__"
-#define COR_ENUM_FIELD_NAME_W W("value__")
-
-// The predefined name for deleting a typeDef,MethodDef, FieldDef, Property and Event
-#define COR_DELETED_NAME_A "_Deleted"
-#define COR_DELETED_NAME_W W("_Deleted")
-#define COR_VTABLEGAP_NAME_A "_VtblGap"
-#define COR_VTABLEGAP_NAME_W W("_VtblGap")
-
-// We intentionally use strncmp so that we will ignore any suffix
-#define IsDeletedName(strName) (strncmp(strName, COR_DELETED_NAME_A, COR_DELETED_NAME_LENGTH) == 0)
-#define IsVtblGapName(strName) (strncmp(strName, COR_VTABLEGAP_NAME_A, COR_VTABLEGAP_NAME_LENGTH) == 0)
-
-// TypeDef/ExportedType attr bits, used by DefineTypeDef.
-typedef enum CorTypeAttr
-{
- // Use this mask to retrieve the type visibility information.
- tdVisibilityMask = 0x00000007,
- tdNotPublic = 0x00000000, // Class is not public scope.
- tdPublic = 0x00000001, // Class is public scope.
- tdNestedPublic = 0x00000002, // Class is nested with public visibility.
- tdNestedPrivate = 0x00000003, // Class is nested with private visibility.
- tdNestedFamily = 0x00000004, // Class is nested with family visibility.
- tdNestedAssembly = 0x00000005, // Class is nested with assembly visibility.
- tdNestedFamANDAssem = 0x00000006, // Class is nested with family and assembly visibility.
- tdNestedFamORAssem = 0x00000007, // Class is nested with family or assembly visibility.
-
- // Use this mask to retrieve class layout information
- tdLayoutMask = 0x00000018,
- tdAutoLayout = 0x00000000, // Class fields are auto-laid out
- tdSequentialLayout = 0x00000008, // Class fields are laid out sequentially
- tdExplicitLayout = 0x00000010, // Layout is supplied explicitly
- // end layout mask
-
- // Use this mask to retrieve class semantics information.
- tdClassSemanticsMask = 0x00000020,
- tdClass = 0x00000000, // Type is a class.
- tdInterface = 0x00000020, // Type is an interface.
- // end semantics mask
-
- // Special semantics in addition to class semantics.
- tdAbstract = 0x00000080, // Class is abstract
- tdSealed = 0x00000100, // Class is concrete and may not be extended
- tdSpecialName = 0x00000400, // Class name is special. Name describes how.
-
- // Implementation attributes.
- tdImport = 0x00001000, // Class / interface is imported
- tdSerializable = 0x00002000, // The class is Serializable.
- tdWindowsRuntime = 0x00004000, // The type is a Windows Runtime type
-
- // Use tdStringFormatMask to retrieve string information for native interop
- tdStringFormatMask = 0x00030000,
- tdAnsiClass = 0x00000000, // LPTSTR is interpreted as ANSI in this class
- tdUnicodeClass = 0x00010000, // LPTSTR is interpreted as UNICODE
- tdAutoClass = 0x00020000, // LPTSTR is interpreted automatically
- tdCustomFormatClass = 0x00030000, // A non-standard encoding specified by CustomFormatMask
- tdCustomFormatMask = 0x00C00000, // Use this mask to retrieve non-standard encoding information for native interop. The meaning of the values of these 2 bits is unspecified.
-
- // end string format mask
-
- tdBeforeFieldInit = 0x00100000, // Initialize the class any time before first static field access.
- tdForwarder = 0x00200000, // This ExportedType is a type forwarder.
-
- // Flags reserved for runtime use.
- tdReservedMask = 0x00040800,
- tdRTSpecialName = 0x00000800, // Runtime should check name encoding.
- tdHasSecurity = 0x00040000, // Class has security associate with it.
-} CorTypeAttr;
-
-
-// Macros for accessing the members of the CorTypeAttr.
-#define IsTdNotPublic(x) (((x) & tdVisibilityMask) == tdNotPublic)
-#define IsTdPublic(x) (((x) & tdVisibilityMask) == tdPublic)
-#define IsTdNestedPublic(x) (((x) & tdVisibilityMask) == tdNestedPublic)
-#define IsTdNestedPrivate(x) (((x) & tdVisibilityMask) == tdNestedPrivate)
-#define IsTdNestedFamily(x) (((x) & tdVisibilityMask) == tdNestedFamily)
-#define IsTdNestedAssembly(x) (((x) & tdVisibilityMask) == tdNestedAssembly)
-#define IsTdNestedFamANDAssem(x) (((x) & tdVisibilityMask) == tdNestedFamANDAssem)
-#define IsTdNestedFamORAssem(x) (((x) & tdVisibilityMask) == tdNestedFamORAssem)
-#define IsTdNested(x) (((x) & tdVisibilityMask) >= tdNestedPublic)
-
-#define IsTdAutoLayout(x) (((x) & tdLayoutMask) == tdAutoLayout)
-#define IsTdSequentialLayout(x) (((x) & tdLayoutMask) == tdSequentialLayout)
-#define IsTdExplicitLayout(x) (((x) & tdLayoutMask) == tdExplicitLayout)
-
-#define IsTdClass(x) (((x) & tdClassSemanticsMask) == tdClass)
-#define IsTdInterface(x) (((x) & tdClassSemanticsMask) == tdInterface)
-
-#define IsTdAbstract(x) ((x) & tdAbstract)
-#define IsTdSealed(x) ((x) & tdSealed)
-#define IsTdSpecialName(x) ((x) & tdSpecialName)
-
-#define IsTdImport(x) ((x) & tdImport)
-#define IsTdSerializable(x) ((x) & tdSerializable)
-#define IsTdWindowsRuntime(x) ((x) & tdWindowsRuntime)
-
-#define IsTdAnsiClass(x) (((x) & tdStringFormatMask) == tdAnsiClass)
-#define IsTdUnicodeClass(x) (((x) & tdStringFormatMask) == tdUnicodeClass)
-#define IsTdAutoClass(x) (((x) & tdStringFormatMask) == tdAutoClass)
-#define IsTdCustomFormatClass(x) (((x) & tdStringFormatMask) == tdCustomFormatClass)
-#define IsTdBeforeFieldInit(x) ((x) & tdBeforeFieldInit)
-#define IsTdForwarder(x) ((x) & tdForwarder)
-
-#define IsTdRTSpecialName(x) ((x) & tdRTSpecialName)
-#define IsTdHasSecurity(x) ((x) & tdHasSecurity)
-
-// MethodDef attr bits, Used by DefineMethod.
-typedef enum CorMethodAttr
-{
- // member access mask - Use this mask to retrieve accessibility information.
- mdMemberAccessMask = 0x0007,
- mdPrivateScope = 0x0000, // Member not referencable.
- mdPrivate = 0x0001, // Accessible only by the parent type.
- mdFamANDAssem = 0x0002, // Accessible by sub-types only in this Assembly.
- mdAssem = 0x0003, // Accessibly by anyone in the Assembly.
- mdFamily = 0x0004, // Accessible only by type and sub-types.
- mdFamORAssem = 0x0005, // Accessibly by sub-types anywhere, plus anyone in assembly.
- mdPublic = 0x0006, // Accessibly by anyone who has visibility to this scope.
- // end member access mask
-
- // method contract attributes.
- mdStatic = 0x0010, // Defined on type, else per instance.
- mdFinal = 0x0020, // Method may not be overridden.
- mdVirtual = 0x0040, // Method virtual.
- mdHideBySig = 0x0080, // Method hides by name+sig, else just by name.
-
- // vtable layout mask - Use this mask to retrieve vtable attributes.
- mdVtableLayoutMask = 0x0100,
- mdReuseSlot = 0x0000, // The default.
- mdNewSlot = 0x0100, // Method always gets a new slot in the vtable.
- // end vtable layout mask
-
- // method implementation attributes.
- mdCheckAccessOnOverride = 0x0200, // Overridability is the same as the visibility.
- mdAbstract = 0x0400, // Method does not provide an implementation.
- mdSpecialName = 0x0800, // Method is special. Name describes how.
-
- // interop attributes
- mdPinvokeImpl = 0x2000, // Implementation is forwarded through pinvoke.
- mdUnmanagedExport = 0x0008, // Managed method exported via thunk to unmanaged code.
-
- // Reserved flags for runtime use only.
- mdReservedMask = 0xd000,
- mdRTSpecialName = 0x1000, // Runtime should check name encoding.
- mdHasSecurity = 0x4000, // Method has security associate with it.
- mdRequireSecObject = 0x8000, // Method calls another method containing security code.
-
-} CorMethodAttr;
-
-// Macros for accessing the members of CorMethodAttr.
-#define IsMdPrivateScope(x) (((x) & mdMemberAccessMask) == mdPrivateScope)
-#define IsMdPrivate(x) (((x) & mdMemberAccessMask) == mdPrivate)
-#define IsMdFamANDAssem(x) (((x) & mdMemberAccessMask) == mdFamANDAssem)
-#define IsMdAssem(x) (((x) & mdMemberAccessMask) == mdAssem)
-#define IsMdFamily(x) (((x) & mdMemberAccessMask) == mdFamily)
-#define IsMdFamORAssem(x) (((x) & mdMemberAccessMask) == mdFamORAssem)
-#define IsMdPublic(x) (((x) & mdMemberAccessMask) == mdPublic)
-
-#define IsMdStatic(x) ((x) & mdStatic)
-#define IsMdFinal(x) ((x) & mdFinal)
-#define IsMdVirtual(x) ((x) & mdVirtual)
-#define IsMdHideBySig(x) ((x) & mdHideBySig)
-
-#define IsMdReuseSlot(x) (((x) & mdVtableLayoutMask) == mdReuseSlot)
-#define IsMdNewSlot(x) (((x) & mdVtableLayoutMask) == mdNewSlot)
-
-#define IsMdCheckAccessOnOverride(x) ((x) & mdCheckAccessOnOverride)
-#define IsMdAbstract(x) ((x) & mdAbstract)
-#define IsMdSpecialName(x) ((x) & mdSpecialName)
-
-#define IsMdPinvokeImpl(x) ((x) & mdPinvokeImpl)
-#define IsMdUnmanagedExport(x) ((x) & mdUnmanagedExport)
-
-#define IsMdRTSpecialName(x) ((x) & mdRTSpecialName)
-#define IsMdInstanceInitializer(x, str) (((x) & mdRTSpecialName) && !strcmp((str), COR_CTOR_METHOD_NAME))
-#define IsMdInstanceInitializerW(x, str) (((x) & mdRTSpecialName) && !wcscmp((str), COR_CTOR_METHOD_NAME_W))
-#define IsMdClassConstructor(x, str) (((x) & mdRTSpecialName) && !strcmp((str), COR_CCTOR_METHOD_NAME))
-#define IsMdClassConstructorW(x, str) (((x) & mdRTSpecialName) && !wcscmp((str), COR_CCTOR_METHOD_NAME_W))
-#define IsMdHasSecurity(x) ((x) & mdHasSecurity)
-#define IsMdRequireSecObject(x) ((x) & mdRequireSecObject)
-
-// FieldDef attr bits, used by DefineField.
-typedef enum CorFieldAttr
-{
- // member access mask - Use this mask to retrieve accessibility information.
- fdFieldAccessMask = 0x0007,
- fdPrivateScope = 0x0000, // Member not referencable.
- fdPrivate = 0x0001, // Accessible only by the parent type.
- fdFamANDAssem = 0x0002, // Accessible by sub-types only in this Assembly.
- fdAssembly = 0x0003, // Accessibly by anyone in the Assembly.
- fdFamily = 0x0004, // Accessible only by type and sub-types.
- fdFamORAssem = 0x0005, // Accessibly by sub-types anywhere, plus anyone in assembly.
- fdPublic = 0x0006, // Accessibly by anyone who has visibility to this scope.
- // end member access mask
-
- // field contract attributes.
- fdStatic = 0x0010, // Defined on type, else per instance.
- fdInitOnly = 0x0020, // Field may only be initialized, not written to after init.
- fdLiteral = 0x0040, // Value is compile time constant.
- fdNotSerialized = 0x0080, // Field does not have to be serialized when type is remoted.
-
- fdSpecialName = 0x0200, // field is special. Name describes how.
-
- // interop attributes
- fdPinvokeImpl = 0x2000, // Implementation is forwarded through pinvoke.
-
- // Reserved flags for runtime use only.
- fdReservedMask = 0x9500,
- fdRTSpecialName = 0x0400, // Runtime(metadata internal APIs) should check name encoding.
- fdHasFieldMarshal = 0x1000, // Field has marshalling information.
- fdHasDefault = 0x8000, // Field has default.
- fdHasFieldRVA = 0x0100, // Field has RVA.
-} CorFieldAttr;
-
-// Macros for accessing the members of CorFieldAttr.
-#define IsFdPrivateScope(x) (((x) & fdFieldAccessMask) == fdPrivateScope)
-#define IsFdPrivate(x) (((x) & fdFieldAccessMask) == fdPrivate)
-#define IsFdFamANDAssem(x) (((x) & fdFieldAccessMask) == fdFamANDAssem)
-#define IsFdAssembly(x) (((x) & fdFieldAccessMask) == fdAssembly)
-#define IsFdFamily(x) (((x) & fdFieldAccessMask) == fdFamily)
-#define IsFdFamORAssem(x) (((x) & fdFieldAccessMask) == fdFamORAssem)
-#define IsFdPublic(x) (((x) & fdFieldAccessMask) == fdPublic)
-
-#define IsFdStatic(x) ((x) & fdStatic)
-#define IsFdInitOnly(x) ((x) & fdInitOnly)
-#define IsFdLiteral(x) ((x) & fdLiteral)
-#define IsFdNotSerialized(x) ((x) & fdNotSerialized)
-
-#define IsFdPinvokeImpl(x) ((x) & fdPinvokeImpl)
-#define IsFdSpecialName(x) ((x) & fdSpecialName)
-#define IsFdHasFieldRVA(x) ((x) & fdHasFieldRVA)
-
-#define IsFdRTSpecialName(x) ((x) & fdRTSpecialName)
-#define IsFdHasFieldMarshal(x) ((x) & fdHasFieldMarshal)
-#define IsFdHasDefault(x) ((x) & fdHasDefault)
-
-// Param attr bits, used by DefineParam.
-typedef enum CorParamAttr
-{
- pdIn = 0x0001, // Param is [In]
- pdOut = 0x0002, // Param is [out]
- pdOptional = 0x0010, // Param is optional
-
- // Reserved flags for Runtime use only.
- pdReservedMask = 0xf000,
- pdHasDefault = 0x1000, // Param has default value.
- pdHasFieldMarshal = 0x2000, // Param has FieldMarshal.
-
- pdUnused = 0xcfe0,
-} CorParamAttr;
-
-// Macros for accessing the members of CorParamAttr.
-#define IsPdIn(x) ((x) & pdIn)
-#define IsPdOut(x) ((x) & pdOut)
-#define IsPdOptional(x) ((x) & pdOptional)
-
-#define IsPdHasDefault(x) ((x) & pdHasDefault)
-#define IsPdHasFieldMarshal(x) ((x) & pdHasFieldMarshal)
-
-
-// Property attr bits, used by DefineProperty.
-typedef enum CorPropertyAttr
-{
- prSpecialName = 0x0200, // property is special. Name describes how.
-
- // Reserved flags for Runtime use only.
- prReservedMask = 0xf400,
- prRTSpecialName = 0x0400, // Runtime(metadata internal APIs) should check name encoding.
- prHasDefault = 0x1000, // Property has default
-
- prUnused = 0xe9ff,
-} CorPropertyAttr;
-
-// Macros for accessing the members of CorPropertyAttr.
-#define IsPrSpecialName(x) ((x) & prSpecialName)
-
-#define IsPrRTSpecialName(x) ((x) & prRTSpecialName)
-#define IsPrHasDefault(x) ((x) & prHasDefault)
-
-// Event attr bits, used by DefineEvent.
-typedef enum CorEventAttr
-{
- evSpecialName = 0x0200, // event is special. Name describes how.
-
- // Reserved flags for Runtime use only.
- evReservedMask = 0x0400,
- evRTSpecialName = 0x0400, // Runtime(metadata internal APIs) should check name encoding.
-} CorEventAttr;
-
-// Macros for accessing the members of CorEventAttr.
-#define IsEvSpecialName(x) ((x) & evSpecialName)
-
-#define IsEvRTSpecialName(x) ((x) & evRTSpecialName)
-
-
-// MethodSemantic attr bits, used by DefineProperty, DefineEvent.
-typedef enum CorMethodSemanticsAttr
-{
- msSetter = 0x0001, // Setter for property
- msGetter = 0x0002, // Getter for property
- msOther = 0x0004, // other method for property or event
- msAddOn = 0x0008, // AddOn method for event
- msRemoveOn = 0x0010, // RemoveOn method for event
- msFire = 0x0020, // Fire method for event
-} CorMethodSemanticsAttr;
-
-// Macros for accessing the members of CorMethodSemanticsAttr.
-#define IsMsSetter(x) ((x) & msSetter)
-#define IsMsGetter(x) ((x) & msGetter)
-#define IsMsOther(x) ((x) & msOther)
-#define IsMsAddOn(x) ((x) & msAddOn)
-#define IsMsRemoveOn(x) ((x) & msRemoveOn)
-#define IsMsFire(x) ((x) & msFire)
-
-
-// DeclSecurity attr bits, used by DefinePermissionSet.
-typedef enum CorDeclSecurity
-{
- dclActionMask = 0x001f, // Mask allows growth of enum.
- dclActionNil = 0x0000, //
- dclRequest = 0x0001, //
- dclDemand = 0x0002, //
- dclAssert = 0x0003, //
- dclDeny = 0x0004, //
- dclPermitOnly = 0x0005, //
- dclLinktimeCheck = 0x0006, //
- dclInheritanceCheck = 0x0007, //
- dclRequestMinimum = 0x0008, //
- dclRequestOptional = 0x0009, //
- dclRequestRefuse = 0x000a, //
- dclPrejitGrant = 0x000b, // Persisted grant set at prejit time
- dclPrejitDenied = 0x000c, // Persisted denied set at prejit time
- dclNonCasDemand = 0x000d, //
- dclNonCasLinkDemand = 0x000e, //
- dclNonCasInheritance = 0x000f, //
- dclMaximumValue = 0x000f, // Maximum legal value
-} CorDeclSecurity;
-
-// Macros for accessing the members of CorDeclSecurity.
-#define IsDclActionNil(x) (((x) & dclActionMask) == dclActionNil)
-
-// Is this a demand that can trigger a stackwalk?
-#define IsDclActionAnyStackModifier(x) ((((x) & dclActionMask) == dclAssert) || \
- (((x) & dclActionMask) == dclDeny) || \
- (((x) & dclActionMask) == dclPermitOnly))
-
-// Is this an assembly level attribute (i.e. not applicable on Type/Member)?
-#define IsAssemblyDclAction(x) (((x) >= dclRequestMinimum) && \
- ((x) <= dclRequestRefuse))
-
-// Is this an NGen only attribute?
-#define IsNGenOnlyDclAction(x) (((x) == dclPrejitGrant) || \
- ((x) == dclPrejitDenied))
-
-
-// MethodImpl attr bits, used by DefineMethodImpl.
-typedef enum CorMethodImpl
-{
- // code impl mask
- miCodeTypeMask = 0x0003, // Flags about code type.
- miIL = 0x0000, // Method impl is IL.
- miNative = 0x0001, // Method impl is native.
- miOPTIL = 0x0002, // Method impl is OPTIL
- miRuntime = 0x0003, // Method impl is provided by the runtime.
- // end code impl mask
-
- // managed mask
- miManagedMask = 0x0004, // Flags specifying whether the code is managed or unmanaged.
- miUnmanaged = 0x0004, // Method impl is unmanaged, otherwise managed.
- miManaged = 0x0000, // Method impl is managed.
- // end managed mask
-
- // implementation info and interop
- miForwardRef = 0x0010, // Indicates method is defined; used primarily in merge scenarios.
- miPreserveSig = 0x0080, // Indicates method sig is not to be mangled to do HRESULT conversion.
-
- miInternalCall = 0x1000, // Reserved for internal use.
-
- miSynchronized = 0x0020, // Method is single threaded through the body.
- miNoInlining = 0x0008, // Method may not be inlined.
- miAggressiveInlining = 0x0100, // Method should be inlined if possible.
- miNoOptimization = 0x0040, // Method may not be optimized.
- miAggressiveOptimization = 0x0200, // Method may contain hot code and should be aggressively optimized.
-
- // These are the flags that are allowed in MethodImplAttribute's Value
- // property. This should include everything above except the code impl
- // flags (which are used for MethodImplAttribute's MethodCodeType field).
- miUserMask = miManagedMask | miForwardRef | miPreserveSig |
- miInternalCall | miSynchronized |
- miNoInlining | miAggressiveInlining |
- miNoOptimization | miAggressiveOptimization,
-
- miMaxMethodImplVal = 0xffff, // Range check value
-} CorMethodImpl;
-
-// Macros for accessing the members of CorMethodImpl.
-#define IsMiIL(x) (((x) & miCodeTypeMask) == miIL)
-#define IsMiNative(x) (((x) & miCodeTypeMask) == miNative)
-#define IsMiOPTIL(x) (((x) & miCodeTypeMask) == miOPTIL)
-#define IsMiRuntime(x) (((x) & miCodeTypeMask) == miRuntime)
-
-#define IsMiUnmanaged(x) (((x) & miManagedMask) == miUnmanaged)
-#define IsMiManaged(x) (((x) & miManagedMask) == miManaged)
-
-#define IsMiForwardRef(x) ((x) & miForwardRef)
-#define IsMiPreserveSig(x) ((x) & miPreserveSig)
-
-#define IsMiInternalCall(x) ((x) & miInternalCall)
-
-#define IsMiSynchronized(x) ((x) & miSynchronized)
-#define IsMiNoInlining(x) ((x) & miNoInlining)
-#define IsMiAggressiveInlining(x) ((x) & miAggressiveInlining)
-#define IsMiNoOptimization(x) ((x) & miNoOptimization)
-#define IsMiAggressiveOptimization(x) (((x) & (miAggressiveOptimization | miNoOptimization)) == miAggressiveOptimization)
-
-// PinvokeMap attr bits, used by DefinePinvokeMap.
-typedef enum CorPinvokeMap
-{
- pmNoMangle = 0x0001, // Pinvoke is to use the member name as specified.
-
- // Use this mask to retrieve the CharSet information.
- pmCharSetMask = 0x0006,
- pmCharSetNotSpec = 0x0000,
- pmCharSetAnsi = 0x0002,
- pmCharSetUnicode = 0x0004,
- pmCharSetAuto = 0x0006,
-
-
- pmBestFitUseAssem = 0x0000,
- pmBestFitEnabled = 0x0010,
- pmBestFitDisabled = 0x0020,
- pmBestFitMask = 0x0030,
-
- pmThrowOnUnmappableCharUseAssem = 0x0000,
- pmThrowOnUnmappableCharEnabled = 0x1000,
- pmThrowOnUnmappableCharDisabled = 0x2000,
- pmThrowOnUnmappableCharMask = 0x3000,
-
- pmSupportsLastError = 0x0040, // Information about target function. Not relevant for fields.
-
- // None of the calling convention flags is relevant for fields.
- pmCallConvMask = 0x0700,
- pmCallConvWinapi = 0x0100, // Pinvoke will use native callconv appropriate to target windows platform.
- pmCallConvCdecl = 0x0200,
- pmCallConvStdcall = 0x0300,
- pmCallConvThiscall = 0x0400, // In M9, pinvoke will raise exception.
- pmCallConvFastcall = 0x0500,
-
- pmMaxValue = 0xFFFF,
-} CorPinvokeMap;
-
-// Macros for accessing the members of CorPinvokeMap
-#define IsPmNoMangle(x) ((x) & pmNoMangle)
-
-#define IsPmCharSetNotSpec(x) (((x) & pmCharSetMask) == pmCharSetNotSpec)
-#define IsPmCharSetAnsi(x) (((x) & pmCharSetMask) == pmCharSetAnsi)
-#define IsPmCharSetUnicode(x) (((x) & pmCharSetMask) == pmCharSetUnicode)
-#define IsPmCharSetAuto(x) (((x) & pmCharSetMask) == pmCharSetAuto)
-
-#define IsPmSupportsLastError(x) ((x) & pmSupportsLastError)
-
-#define IsPmCallConvWinapi(x) (((x) & pmCallConvMask) == pmCallConvWinapi)
-#define IsPmCallConvCdecl(x) (((x) & pmCallConvMask) == pmCallConvCdecl)
-#define IsPmCallConvStdcall(x) (((x) & pmCallConvMask) == pmCallConvStdcall)
-#define IsPmCallConvThiscall(x) (((x) & pmCallConvMask) == pmCallConvThiscall)
-#define IsPmCallConvFastcall(x) (((x) & pmCallConvMask) == pmCallConvFastcall)
-
-#define IsPmBestFitEnabled(x) (((x) & pmBestFitMask) == pmBestFitEnabled)
-#define IsPmBestFitDisabled(x) (((x) & pmBestFitMask) == pmBestFitDisabled)
-#define IsPmBestFitUseAssem(x) (((x) & pmBestFitMask) == pmBestFitUseAssem)
-
-#define IsPmThrowOnUnmappableCharEnabled(x) (((x) & pmThrowOnUnmappableCharMask) == pmThrowOnUnmappableCharEnabled)
-#define IsPmThrowOnUnmappableCharDisabled(x) (((x) & pmThrowOnUnmappableCharMask) == pmThrowOnUnmappableCharDisabled)
-#define IsPmThrowOnUnmappableCharUseAssem(x) (((x) & pmThrowOnUnmappableCharMask) == pmThrowOnUnmappableCharUseAssem)
-
-// Assembly attr bits, used by DefineAssembly.
-typedef enum CorAssemblyFlags
-{
- afPublicKey = 0x0001, // The assembly ref holds the full (unhashed) public key.
-
- afPA_None = 0x0000, // Processor Architecture unspecified
- afPA_MSIL = 0x0010, // Processor Architecture: neutral (PE32)
- afPA_x86 = 0x0020, // Processor Architecture: x86 (PE32)
- afPA_IA64 = 0x0030, // Processor Architecture: Itanium (PE32+)
- afPA_AMD64 = 0x0040, // Processor Architecture: AMD X64 (PE32+)
- afPA_ARM = 0x0050, // Processor Architecture: ARM (PE32)
- afPA_ARM64 = 0x0060, // Processor Architecture: ARM64 (PE32+)
- afPA_NoPlatform = 0x0070, // applies to any platform but cannot run on any (e.g. reference assembly), should not have "specified" set
- afPA_Specified = 0x0080, // Propagate PA flags to AssemblyRef record
- afPA_Mask = 0x0070, // Bits describing the processor architecture
- afPA_FullMask = 0x00F0, // Bits describing the PA incl. Specified
- afPA_Shift = 0x0004, // NOT A FLAG, shift count in PA flags <--> index conversion
-
- afEnableJITcompileTracking = 0x8000, // From "DebuggableAttribute".
- afDisableJITcompileOptimizer = 0x4000, // From "DebuggableAttribute".
- afDebuggableAttributeMask = 0xc000,
-
- afRetargetable = 0x0100, // The assembly can be retargeted (at runtime) to an
- // assembly from a different publisher.
-
- afContentType_Default = 0x0000,
- afContentType_WindowsRuntime = 0x0200,
- afContentType_Mask = 0x0E00, // Bits describing ContentType
-} CorAssemblyFlags;
-
-// Macros for accessing the members of CorAssemblyFlags.
-#define IsAfRetargetable(x) ((x) & afRetargetable)
-#define IsAfContentType_Default(x) (((x) & afContentType_Mask) == afContentType_Default)
-#define IsAfContentType_WindowsRuntime(x) (((x) & afContentType_Mask) == afContentType_WindowsRuntime)
-
-// Macros for accessing the Processor Architecture flags of CorAssemblyFlags.
-#define IsAfPA_MSIL(x) (((x) & afPA_Mask) == afPA_MSIL)
-#define IsAfPA_x86(x) (((x) & afPA_Mask) == afPA_x86)
-#define IsAfPA_IA64(x) (((x) & afPA_Mask) == afPA_IA64)
-#define IsAfPA_AMD64(x) (((x) & afPA_Mask) == afPA_AMD64)
-#define IsAfPA_ARM(x) (((x) & afPA_Mask) == afPA_ARM)
-#define IsAfPA_ARM64(x) (((x) & afPA_Mask) == afPA_ARM64)
-#define IsAfPA_NoPlatform(x) (((x) & afPA_FullMask) == afPA_NoPlatform)
-#define IsAfPA_Specified(x) ((x) & afPA_Specified)
-#define PAIndex(x) (((x) & afPA_Mask) >> afPA_Shift)
-#define PAFlag(x) (((x) << afPA_Shift) & afPA_Mask)
-#define PrepareForSaving(x) ((x) & (((x) & afPA_Specified) ? ~afPA_Specified : ~afPA_FullMask))
-
-#define IsAfEnableJITcompileTracking(x) ((x) & afEnableJITcompileTracking)
-#define IsAfDisableJITcompileOptimizer(x) ((x) & afDisableJITcompileOptimizer)
-
-// Macros for accessing the public key flags of CorAssemblyFlags.
-#define IsAfPublicKey(x) ((x) & afPublicKey)
-#define IsAfPublicKeyToken(x) (((x) & afPublicKey) == 0)
-
-
-// ManifestResource attr bits, used by DefineManifestResource.
-typedef enum CorManifestResourceFlags
-{
- mrVisibilityMask = 0x0007,
- mrPublic = 0x0001, // The Resource is exported from the Assembly.
- mrPrivate = 0x0002, // The Resource is private to the Assembly.
-} CorManifestResourceFlags;
-
-// Macros for accessing the members of CorManifestResourceFlags.
-#define IsMrPublic(x) (((x) & mrVisibilityMask) == mrPublic)
-#define IsMrPrivate(x) (((x) & mrVisibilityMask) == mrPrivate)
-
-
-// File attr bits, used by DefineFile.
-typedef enum CorFileFlags
-{
- ffContainsMetaData = 0x0000, // This is not a resource file
- ffContainsNoMetaData = 0x0001, // This is a resource file or other non-metadata-containing file
-} CorFileFlags;
-
-// Macros for accessing the members of CorFileFlags.
-#define IsFfContainsMetaData(x) (!((x) & ffContainsNoMetaData))
-#define IsFfContainsNoMetaData(x) ((x) & ffContainsNoMetaData)
-
-// PE file kind bits, returned by IMetaDataImport2::GetPEKind()
-typedef enum CorPEKind
-{
- peNot = 0x00000000, // not a PE file
- peILonly = 0x00000001, // flag IL_ONLY is set in COR header
- pe32BitRequired=0x00000002, // flag 32BITREQUIRED is set and 32BITPREFERRED is clear in COR header
- pe32Plus = 0x00000004, // PE32+ file (64 bit)
- pe32Unmanaged=0x00000008, // PE32 without COR header
- pe32BitPreferred=0x00000010 // flags 32BITREQUIRED and 32BITPREFERRED are set in COR header
-} CorPEKind;
-
-
-// GenericParam bits, used by DefineGenericParam.
-typedef enum CorGenericParamAttr
-{
- // Variance of type parameters, only applicable to generic parameters
- // for generic interfaces and delegates
- gpVarianceMask = 0x0003,
- gpNonVariant = 0x0000,
- gpCovariant = 0x0001,
- gpContravariant = 0x0002,
-
- // Special constraints, applicable to any type parameters
- gpSpecialConstraintMask = 0x003C,
- gpNoSpecialConstraint = 0x0000,
- gpReferenceTypeConstraint = 0x0004, // type argument must be a reference type
- gpNotNullableValueTypeConstraint = 0x0008, // type argument must be a value type but not Nullable
- gpDefaultConstructorConstraint = 0x0010, // type argument must have a public default constructor
- gpAcceptByRefLike = 0x0020, // type argument can be ByRefLike
-} CorGenericParamAttr;
-
-// structures and enums moved from COR.H
-typedef uint8_t COR_SIGNATURE;
-
-typedef COR_SIGNATURE* PCOR_SIGNATURE; // pointer to a cor sig. Not void* so that
- // the bytes can be incremented easily
-typedef const COR_SIGNATURE* PCCOR_SIGNATURE;
-
-
-typedef const char * MDUTF8CSTR;
-typedef char * MDUTF8STR;
-
-//*****************************************************************************
-//
-// Element type for Cor signature
-//
-//*****************************************************************************
-
-typedef enum CorElementType
-{
- ELEMENT_TYPE_END = 0x00,
- ELEMENT_TYPE_VOID = 0x01,
- ELEMENT_TYPE_BOOLEAN = 0x02,
- ELEMENT_TYPE_CHAR = 0x03,
- ELEMENT_TYPE_I1 = 0x04,
- ELEMENT_TYPE_U1 = 0x05,
- ELEMENT_TYPE_I2 = 0x06,
- ELEMENT_TYPE_U2 = 0x07,
- ELEMENT_TYPE_I4 = 0x08,
- ELEMENT_TYPE_U4 = 0x09,
- ELEMENT_TYPE_I8 = 0x0a,
- ELEMENT_TYPE_U8 = 0x0b,
- ELEMENT_TYPE_R4 = 0x0c,
- ELEMENT_TYPE_R8 = 0x0d,
- ELEMENT_TYPE_STRING = 0x0e,
-
- // every type above PTR will be simple type
- ELEMENT_TYPE_PTR = 0x0f, // PTR
- ELEMENT_TYPE_BYREF = 0x10, // BYREF
-
- // Please use ELEMENT_TYPE_VALUETYPE. ELEMENT_TYPE_VALUECLASS is deprecated.
- ELEMENT_TYPE_VALUETYPE = 0x11, // VALUETYPE
- ELEMENT_TYPE_CLASS = 0x12, // CLASS
- ELEMENT_TYPE_VAR = 0x13, // a class type variable VAR
- ELEMENT_TYPE_ARRAY = 0x14, // MDARRAY ... ...
- ELEMENT_TYPE_GENERICINST = 0x15, // GENERICINST ...
- ELEMENT_TYPE_TYPEDBYREF = 0x16, // TYPEDREF (it takes no args) a typed reference to some other type
-
- ELEMENT_TYPE_I = 0x18, // native integer size
- ELEMENT_TYPE_U = 0x19, // native unsigned integer size
- ELEMENT_TYPE_FNPTR = 0x1b, // FNPTR
- ELEMENT_TYPE_OBJECT = 0x1c, // Shortcut for System.Object
- ELEMENT_TYPE_SZARRAY = 0x1d, // Shortcut for single dimension zero lower bound array
- // SZARRAY
- ELEMENT_TYPE_MVAR = 0x1e, // a method type variable MVAR
-
- // This is only for binding
- ELEMENT_TYPE_CMOD_REQD = 0x1f, // required C modifier : E_T_CMOD_REQD
- ELEMENT_TYPE_CMOD_OPT = 0x20, // optional C modifier : E_T_CMOD_OPT
-
- // This is for signatures generated internally (which will not be persisted in any way).
- ELEMENT_TYPE_INTERNAL = 0x21, // INTERNAL
-
- // Note that this is the max of base type excluding modifiers
- ELEMENT_TYPE_MAX = 0x22, // first invalid element type
-
-
- ELEMENT_TYPE_MODIFIER = 0x40,
- ELEMENT_TYPE_SENTINEL = 0x01 | ELEMENT_TYPE_MODIFIER, // sentinel for varargs
- ELEMENT_TYPE_PINNED = 0x05 | ELEMENT_TYPE_MODIFIER,
-
-} CorElementType;
-
-
-//*****************************************************************************
-//
-// Serialization types for Custom attribute support
-//
-//*****************************************************************************
-
-typedef enum CorSerializationType
-{
- SERIALIZATION_TYPE_UNDEFINED = 0,
- SERIALIZATION_TYPE_BOOLEAN = ELEMENT_TYPE_BOOLEAN,
- SERIALIZATION_TYPE_CHAR = ELEMENT_TYPE_CHAR,
- SERIALIZATION_TYPE_I1 = ELEMENT_TYPE_I1,
- SERIALIZATION_TYPE_U1 = ELEMENT_TYPE_U1,
- SERIALIZATION_TYPE_I2 = ELEMENT_TYPE_I2,
- SERIALIZATION_TYPE_U2 = ELEMENT_TYPE_U2,
- SERIALIZATION_TYPE_I4 = ELEMENT_TYPE_I4,
- SERIALIZATION_TYPE_U4 = ELEMENT_TYPE_U4,
- SERIALIZATION_TYPE_I8 = ELEMENT_TYPE_I8,
- SERIALIZATION_TYPE_U8 = ELEMENT_TYPE_U8,
- SERIALIZATION_TYPE_R4 = ELEMENT_TYPE_R4,
- SERIALIZATION_TYPE_R8 = ELEMENT_TYPE_R8,
- SERIALIZATION_TYPE_STRING = ELEMENT_TYPE_STRING,
- SERIALIZATION_TYPE_SZARRAY = ELEMENT_TYPE_SZARRAY, // Shortcut for single dimension zero lower bound array
- SERIALIZATION_TYPE_TYPE = 0x50,
- SERIALIZATION_TYPE_TAGGED_OBJECT= 0x51,
- SERIALIZATION_TYPE_FIELD = 0x53,
- SERIALIZATION_TYPE_PROPERTY = 0x54,
- SERIALIZATION_TYPE_ENUM = 0x55
-} CorSerializationType;
-
-//
-// Calling convention flags.
-//
-
-typedef enum CorUnmanagedCallingConvention
-{
- IMAGE_CEE_UNMANAGED_CALLCONV_C = 0x1,
- IMAGE_CEE_UNMANAGED_CALLCONV_STDCALL = 0x2,
- IMAGE_CEE_UNMANAGED_CALLCONV_THISCALL = 0x3,
- IMAGE_CEE_UNMANAGED_CALLCONV_FASTCALL = 0x4,
-} CorUnmanagedCallingConvention;
-
-typedef enum CorCallingConvention
-{
- IMAGE_CEE_CS_CALLCONV_DEFAULT = 0x0,
- IMAGE_CEE_CS_CALLCONV_C = IMAGE_CEE_UNMANAGED_CALLCONV_C,
- IMAGE_CEE_CS_CALLCONV_STDCALL = IMAGE_CEE_UNMANAGED_CALLCONV_STDCALL,
- IMAGE_CEE_CS_CALLCONV_THISCALL = IMAGE_CEE_UNMANAGED_CALLCONV_THISCALL,
- IMAGE_CEE_CS_CALLCONV_FASTCALL = IMAGE_CEE_UNMANAGED_CALLCONV_FASTCALL,
- IMAGE_CEE_CS_CALLCONV_VARARG = 0x5,
- IMAGE_CEE_CS_CALLCONV_FIELD = 0x6,
- IMAGE_CEE_CS_CALLCONV_LOCAL_SIG = 0x7,
- IMAGE_CEE_CS_CALLCONV_PROPERTY = 0x8,
- IMAGE_CEE_CS_CALLCONV_UNMANAGED = 0x9, // Unmanaged calling convention encoded as modopts
- IMAGE_CEE_CS_CALLCONV_GENERICINST = 0xa, // generic method instantiation
- IMAGE_CEE_CS_CALLCONV_NATIVEVARARG = 0xb, // used ONLY for 64bit vararg PInvoke calls
- IMAGE_CEE_CS_CALLCONV_MAX = 0xc, // first invalid calling convention
-
-
- // The high bits of the calling convention convey additional info
- IMAGE_CEE_CS_CALLCONV_MASK = 0x0f, // Calling convention is bottom 4 bits
- IMAGE_CEE_CS_CALLCONV_HASTHIS = 0x20, // Top bit indicates a 'this' parameter
- IMAGE_CEE_CS_CALLCONV_EXPLICITTHIS = 0x40, // This parameter is explicitly in the signature
- IMAGE_CEE_CS_CALLCONV_GENERIC = 0x10, // Generic method sig with explicit number of type arguments (precedes ordinary parameter count)
- // 0x80 is reserved for internal use
-} CorCallingConvention;
-
-#define IMAGE_CEE_CS_CALLCONV_INSTANTIATION IMAGE_CEE_CS_CALLCONV_GENERICINST
-
-
-typedef enum CorArgType
-{
- IMAGE_CEE_CS_END = 0x0,
- IMAGE_CEE_CS_VOID = 0x1,
- IMAGE_CEE_CS_I4 = 0x2,
- IMAGE_CEE_CS_I8 = 0x3,
- IMAGE_CEE_CS_R4 = 0x4,
- IMAGE_CEE_CS_R8 = 0x5,
- IMAGE_CEE_CS_PTR = 0x6,
- IMAGE_CEE_CS_OBJECT = 0x7,
- IMAGE_CEE_CS_STRUCT4 = 0x8,
- IMAGE_CEE_CS_STRUCT32 = 0x9,
- IMAGE_CEE_CS_BYVALUE = 0xA,
-} CorArgType;
-
-
-//*****************************************************************************
-//
-// Native type for N-Direct
-//
-//*****************************************************************************
-
-typedef enum CorNativeType
-{
-
- // Keep this in-sync with ndp\clr\src\BCL\System\runtime\interopservices\attributes.cs
-
- NATIVE_TYPE_END = 0x0, //DEPRECATED
- NATIVE_TYPE_VOID = 0x1, //DEPRECATED
- NATIVE_TYPE_BOOLEAN = 0x2, // (4 byte boolean value: TRUE = non-zero, FALSE = 0)
- NATIVE_TYPE_I1 = 0x3,
- NATIVE_TYPE_U1 = 0x4,
- NATIVE_TYPE_I2 = 0x5,
- NATIVE_TYPE_U2 = 0x6,
- NATIVE_TYPE_I4 = 0x7,
- NATIVE_TYPE_U4 = 0x8,
- NATIVE_TYPE_I8 = 0x9,
- NATIVE_TYPE_U8 = 0xa,
- NATIVE_TYPE_R4 = 0xb,
- NATIVE_TYPE_R8 = 0xc,
- NATIVE_TYPE_SYSCHAR = 0xd, //DEPRECATED
- NATIVE_TYPE_VARIANT = 0xe, //DEPRECATED
- NATIVE_TYPE_CURRENCY = 0xf,
- NATIVE_TYPE_PTR = 0x10, //DEPRECATED
-
- NATIVE_TYPE_DECIMAL = 0x11, //DEPRECATED
- NATIVE_TYPE_DATE = 0x12, //DEPRECATED
- NATIVE_TYPE_BSTR = 0x13, //COMINTEROP
- NATIVE_TYPE_LPSTR = 0x14,
- NATIVE_TYPE_LPWSTR = 0x15,
- NATIVE_TYPE_LPTSTR = 0x16,
- NATIVE_TYPE_FIXEDSYSSTRING = 0x17,
- NATIVE_TYPE_OBJECTREF = 0x18, //DEPRECATED
- NATIVE_TYPE_IUNKNOWN = 0x19, //COMINTEROP
- NATIVE_TYPE_IDISPATCH = 0x1a, //COMINTEROP
- NATIVE_TYPE_STRUCT = 0x1b,
- NATIVE_TYPE_INTF = 0x1c, //COMINTEROP
- NATIVE_TYPE_SAFEARRAY = 0x1d, //COMINTEROP
- NATIVE_TYPE_FIXEDARRAY = 0x1e,
- NATIVE_TYPE_INT = 0x1f,
- NATIVE_TYPE_UINT = 0x20,
-
- NATIVE_TYPE_NESTEDSTRUCT = 0x21, //DEPRECATED (use NATIVE_TYPE_STRUCT)
-
- NATIVE_TYPE_BYVALSTR = 0x22, //COMINTEROP
-
- NATIVE_TYPE_ANSIBSTR = 0x23, //COMINTEROP
-
- NATIVE_TYPE_TBSTR = 0x24, // select BSTR or ANSIBSTR depending on platform
- //COMINTEROP
-
- NATIVE_TYPE_VARIANTBOOL = 0x25, // (2-byte boolean value: TRUE = -1, FALSE = 0)
- //COMINTEROP
- NATIVE_TYPE_FUNC = 0x26,
-
- NATIVE_TYPE_ASANY = 0x28,
-
- NATIVE_TYPE_ARRAY = 0x2a,
- NATIVE_TYPE_LPSTRUCT = 0x2b,
-
- NATIVE_TYPE_CUSTOMMARSHALER = 0x2c, // Custom marshaler native type. This must be followed
- // by a string of the following format:
- // "Native type name/0Custom marshaler type name/0Optional cookie/0"
- // Or
- // "{Native type GUID}/0Custom marshaler type name/0Optional cookie/0"
-
- NATIVE_TYPE_ERROR = 0x2d, // This native type coupled with ELEMENT_TYPE_I4 will map to VT_HRESULT
- //COMINTEROP
-
- NATIVE_TYPE_IINSPECTABLE = 0x2e,
- NATIVE_TYPE_HSTRING = 0x2f,
- NATIVE_TYPE_LPUTF8STR = 0x30, // utf-8 string
- NATIVE_TYPE_MAX = 0x50, // first invalid element type
-} CorNativeType;
-
-
-enum
-{
- DESCR_GROUP_METHODDEF = 0, // DESCR group for MethodDefs
- DESCR_GROUP_METHODIMPL, // DESCR group for MethodImpls
-};
-
-/***********************************************************************************/
-// a COR_ILMETHOD_SECT is a generic container for attributes that are private
-// to a particular method. The COR_ILMETHOD structure points to one of these
-// (see GetSect()). COR_ILMETHOD_SECT can decode the Kind of attribute (but not
-// its internal data layout), and can skip past the current attribute to find the
-// Next one. The overhead for COR_ILMETHOD_SECT is a minimum of 2 bytes.
-
-typedef enum CorILMethodSect // codes that identify attributes
-{
- CorILMethod_Sect_Reserved = 0,
- CorILMethod_Sect_EHTable = 1,
- CorILMethod_Sect_OptILTable = 2,
-
- CorILMethod_Sect_KindMask = 0x3F, // The mask for decoding the type code
- CorILMethod_Sect_FatFormat = 0x40, // fat format
- CorILMethod_Sect_MoreSects = 0x80, // there is another attribute after this one
-} CorILMethodSect;
-
-/************************************/
-/* NOTE this structure must be DWORD aligned!! */
-
-typedef struct IMAGE_COR_ILMETHOD_SECT_SMALL
-{
- uint8_t Kind;
- uint8_t DataSize;
-
-} IMAGE_COR_ILMETHOD_SECT_SMALL;
-
-
-
-/************************************/
-/* NOTE this structure must be DWORD aligned!! */
-typedef struct IMAGE_COR_ILMETHOD_SECT_FAT
-{
- unsigned Kind : 8;
- unsigned DataSize : 24;
-
-} IMAGE_COR_ILMETHOD_SECT_FAT;
-
-
-
-/***********************************************************************************/
-/* If COR_ILMETHOD_SECT_HEADER::Kind() = CorILMethod_Sect_EHTable then the attribute
- is a list of exception handling clauses. There are two formats, fat or small
-*/
-typedef enum CorExceptionFlag // definitions for the Flags field below (for both big and small)
-{
- COR_ILEXCEPTION_CLAUSE_NONE, // This is a typed handler
- COR_ILEXCEPTION_CLAUSE_OFFSETLEN = 0x0000, // Deprecated
- COR_ILEXCEPTION_CLAUSE_DEPRECATED = 0x0000, // Deprecated
- COR_ILEXCEPTION_CLAUSE_FILTER = 0x0001, // If this bit is on, then this EH entry is for a filter
- COR_ILEXCEPTION_CLAUSE_FINALLY = 0x0002, // This clause is a finally clause
- COR_ILEXCEPTION_CLAUSE_FAULT = 0x0004, // Fault clause (finally that is called on exception only)
- COR_ILEXCEPTION_CLAUSE_DUPLICATED = 0x0008, // duplicated clause. This clause was duplicated to a funclet which was pulled out of line
-} CorExceptionFlag;
-
-/***********************************/
-typedef struct IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT
-{
- CorExceptionFlag Flags;
- uint32_t TryOffset;
- uint32_t TryLength; // relative to start of try block
- uint32_t HandlerOffset;
- uint32_t HandlerLength; // relative to start of handler
- union {
- uint32_t ClassToken; // use for type-based exception handlers
- uint32_t FilterOffset; // use for filter-based exception handlers (COR_ILEXCEPTION_FILTER is set)
- };
-} IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT;
-
-typedef struct IMAGE_COR_ILMETHOD_SECT_EH_FAT
-{
- IMAGE_COR_ILMETHOD_SECT_FAT SectFat;
- IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_FAT Clauses[1]; // actually variable size
-} IMAGE_COR_ILMETHOD_SECT_EH_FAT;
-
-/***********************************/
-typedef struct IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_SMALL
-{
-#ifdef HOST_64BIT
- unsigned Flags : 16;
-#else // !HOST_64BIT
- CorExceptionFlag Flags : 16;
-#endif
- unsigned TryOffset : 16;
- unsigned TryLength : 8; // relative to start of try block
- unsigned HandlerOffset : 16;
- unsigned HandlerLength : 8; // relative to start of handler
- union {
- uint32_t ClassToken;
- uint32_t FilterOffset;
- };
-} IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_SMALL;
-
-/***********************************/
-typedef struct IMAGE_COR_ILMETHOD_SECT_EH_SMALL
-{
- IMAGE_COR_ILMETHOD_SECT_SMALL SectSmall;
- uint16_t Reserved;
- IMAGE_COR_ILMETHOD_SECT_EH_CLAUSE_SMALL Clauses[1]; // actually variable size
-} IMAGE_COR_ILMETHOD_SECT_EH_SMALL;
-
-
-
-typedef union IMAGE_COR_ILMETHOD_SECT_EH
-{
- IMAGE_COR_ILMETHOD_SECT_EH_SMALL Small;
- IMAGE_COR_ILMETHOD_SECT_EH_FAT Fat;
-} IMAGE_COR_ILMETHOD_SECT_EH;
-
-
-/***********************************************************************************/
-// Legal values for
-// * code:IMAGE_COR_ILMETHOD_FAT::Flags or
-// * code:IMAGE_COR_ILMETHOD_TINY::Flags_CodeSize fields.
-//
-// The only semantic flag at present is CorILMethod_InitLocals
-typedef enum CorILMethodFlags
-{
- CorILMethod_InitLocals = 0x0010, // call default constructor on all local vars
- CorILMethod_MoreSects = 0x0008, // there is another attribute after this one
-
- CorILMethod_CompressedIL = 0x0040, // Not used.
-
- // Indicates the format for the COR_ILMETHOD header
- CorILMethod_FormatShift = 3,
- CorILMethod_FormatMask = ((1 << CorILMethod_FormatShift) - 1),
- CorILMethod_TinyFormat = 0x0002, // use this code if the code size is even
- CorILMethod_SmallFormat = 0x0000,
- CorILMethod_FatFormat = 0x0003,
- CorILMethod_TinyFormat1 = 0x0006, // use this code if the code size is odd
-} CorILMethodFlags;
-
-/***************************************************************************/
-/* Used when the method is tiny (< 64 bytes), and there are no local vars */
-typedef struct IMAGE_COR_ILMETHOD_TINY
-{
- uint8_t Flags_CodeSize;
-} IMAGE_COR_ILMETHOD_TINY;
-
-/************************************/
-// This structure is the 'fat' layout, where no compression is attempted.
-// Note that this structure can be added on at the end, thus making it extensible
-typedef struct IMAGE_COR_ILMETHOD_FAT
-{
- unsigned Flags : 12; // Flags see code:CorILMethodFlags
- unsigned Size : 4; // size in DWords of this structure (currently 3)
- unsigned MaxStack : 16; // maximum number of items (I4, I, I8, obj ...), on the operand stack
- uint32_t CodeSize; // size of the code
- mdSignature LocalVarSigTok; // token that indicates the signature of the local vars (0 means none)
-
-} IMAGE_COR_ILMETHOD_FAT;
-
-// an IMAGE_COR_ILMETHOD holds the IL instructions for a individual method. To save space they come in two
-// flavors Fat and Tiny. Conceptually Tiny is just a compressed version of Fat, so code:IMAGE_COR_ILMETHOD_FAT
-// is the logical structure for all headers. Conceptually this blob holds the IL, the Exception Handling
-// Tables, the local variable information and some flags.
-typedef union IMAGE_COR_ILMETHOD
-{
- IMAGE_COR_ILMETHOD_TINY Tiny;
- IMAGE_COR_ILMETHOD_FAT Fat;
-} IMAGE_COR_ILMETHOD;
-
-//*****************************************************************************
-// Non VOS v-table entries. Define an array of these pointed to by
-// IMAGE_COR20_HEADER.VTableFixups. Each entry describes a contiguous array of
-// v-table slots. The slots start out initialized to the meta data token value
-// for the method they need to call. At image load time, the CLR Loader will
-// turn each entry into a pointer to machine code for the CPU and can be
-// called directly.
-//*****************************************************************************
-
-typedef struct IMAGE_COR_VTABLEFIXUP
-{
- uint32_t RVA; // Offset of v-table array in image.
- uint16_t Count; // How many entries at location.
- uint16_t Type; // COR_VTABLE_xxx type of entries.
-} IMAGE_COR_VTABLEFIXUP;
-
-
-
-
-
-//*****************************************************************************
-//*****************************************************************************
-//
-// M E T A - D A T A D E C L A R A T I O N S
-//
-//*****************************************************************************
-//*****************************************************************************
-
-//*****************************************************************************
-//
-// Enums for SetOption API.
-//
-//*****************************************************************************
-
-// flags for MetaDataCheckDuplicatesFor
-typedef enum CorCheckDuplicatesFor
-{
- MDDupAll = 0xffffffff,
- MDDupENC = MDDupAll,
- MDNoDupChecks = 0x00000000,
- MDDupTypeDef = 0x00000001,
- MDDupInterfaceImpl = 0x00000002,
- MDDupMethodDef = 0x00000004,
- MDDupTypeRef = 0x00000008,
- MDDupMemberRef = 0x00000010,
- MDDupCustomAttribute = 0x00000020,
- MDDupParamDef = 0x00000040,
- MDDupPermission = 0x00000080,
- MDDupProperty = 0x00000100,
- MDDupEvent = 0x00000200,
- MDDupFieldDef = 0x00000400,
- MDDupSignature = 0x00000800,
- MDDupModuleRef = 0x00001000,
- MDDupTypeSpec = 0x00002000,
- MDDupImplMap = 0x00004000,
- MDDupAssemblyRef = 0x00008000,
- MDDupFile = 0x00010000,
- MDDupExportedType = 0x00020000,
- MDDupManifestResource = 0x00040000,
- MDDupGenericParam = 0x00080000,
- MDDupMethodSpec = 0x00100000,
- MDDupGenericParamConstraint = 0x00200000,
- // gap for debug junk
- MDDupAssembly = 0x10000000,
-
- // This is the default behavior on metadata. It will check duplicates for TypeRef, MemberRef, Signature, TypeSpec and MethodSpec.
- MDDupDefault = MDNoDupChecks | MDDupTypeRef | MDDupMemberRef | MDDupSignature | MDDupTypeSpec | MDDupMethodSpec,
-} CorCheckDuplicatesFor;
-
-// flags for MetaDataRefToDefCheck
-typedef enum CorRefToDefCheck
-{
- // default behavior is to always perform TypeRef to TypeDef and MemberRef to MethodDef/FieldDef optimization
- MDRefToDefDefault = 0x00000003,
- MDRefToDefAll = 0xffffffff,
- MDRefToDefNone = 0x00000000,
- MDTypeRefToDef = 0x00000001,
- MDMemberRefToDef = 0x00000002
-} CorRefToDefCheck;
-
-
-// MetaDataNotificationForTokenMovement
-typedef enum CorNotificationForTokenMovement
-{
- // default behavior is to notify TypeRef, MethodDef, MemberRef, and FieldDef token remaps
- MDNotifyDefault = 0x0000000f,
- MDNotifyAll = 0xffffffff,
- MDNotifyNone = 0x00000000,
- MDNotifyMethodDef = 0x00000001,
- MDNotifyMemberRef = 0x00000002,
- MDNotifyFieldDef = 0x00000004,
- MDNotifyTypeRef = 0x00000008,
-
- MDNotifyTypeDef = 0x00000010,
- MDNotifyParamDef = 0x00000020,
- MDNotifyInterfaceImpl = 0x00000040,
- MDNotifyProperty = 0x00000080,
- MDNotifyEvent = 0x00000100,
- MDNotifySignature = 0x00000200,
- MDNotifyTypeSpec = 0x00000400,
- MDNotifyCustomAttribute = 0x00000800,
- MDNotifySecurityValue = 0x00001000,
- MDNotifyPermission = 0x00002000,
- MDNotifyModuleRef = 0x00004000,
-
- MDNotifyNameSpace = 0x00008000,
-
- MDNotifyAssemblyRef = 0x01000000,
- MDNotifyFile = 0x02000000,
- MDNotifyExportedType = 0x04000000,
- MDNotifyResource = 0x08000000,
-} CorNotificationForTokenMovement;
-
-
-typedef enum CorSetENC
-{
- MDSetENCOn = 0x00000001, // Deprecated name.
- MDSetENCOff = 0x00000002, // Deprecated name.
-
- MDUpdateENC = 0x00000001, // ENC mode. Tokens don't move; can be updated.
- MDUpdateFull = 0x00000002, // "Normal" update mode.
- MDUpdateExtension = 0x00000003, // Extension mode. Tokens don't move, adds only.
- MDUpdateIncremental = 0x00000004, // Incremental compilation
- MDUpdateDelta = 0x00000005, // If ENC on, save only deltas.
- MDUpdateMask = 0x00000007,
-
-
-} CorSetENC;
-
-#define IsENCDelta(x) (((x) & MDUpdateMask) == MDUpdateDelta)
-
-// flags used in SetOption when pair with MetaDataErrorIfEmitOutOfOrder guid
-typedef enum CorErrorIfEmitOutOfOrder
-{
- MDErrorOutOfOrderDefault = 0x00000000, // default not to generate any error
- MDErrorOutOfOrderNone = 0x00000000, // do not generate error for out of order emit
- MDErrorOutOfOrderAll = 0xffffffff, // generate out of order emit for method, field, param, property, and event
- MDMethodOutOfOrder = 0x00000001, // generate error when methods are emitted out of order
- MDFieldOutOfOrder = 0x00000002, // generate error when fields are emitted out of order
- MDParamOutOfOrder = 0x00000004, // generate error when params are emitted out of order
- MDPropertyOutOfOrder = 0x00000008, // generate error when properties are emitted out of order
- MDEventOutOfOrder = 0x00000010, // generate error when events are emitted out of order
-} CorErrorIfEmitOutOfOrder;
-
-
-// flags used in SetOption when pair with MetaDataImportOption guid
-typedef enum CorImportOptions
-{
- MDImportOptionDefault = 0x00000000, // default to skip over deleted records
- MDImportOptionAll = 0xFFFFFFFF, // Enumerate everything
- MDImportOptionAllTypeDefs = 0x00000001, // all the typedefs including the deleted typedef
- MDImportOptionAllMethodDefs = 0x00000002, // all the methoddefs including the deleted ones
- MDImportOptionAllFieldDefs = 0x00000004, // all the fielddefs including the deleted ones
- MDImportOptionAllProperties = 0x00000008, // all the properties including the deleted ones
- MDImportOptionAllEvents = 0x00000010, // all the events including the deleted ones
- MDImportOptionAllCustomAttributes = 0x00000020, // all the custom attributes including the deleted ones
- MDImportOptionAllExportedTypes = 0x00000040, // all the ExportedTypes including the deleted ones
-
-} CorImportOptions;
-
-
-// flags for MetaDataThreadSafetyOptions
-typedef enum CorThreadSafetyOptions
-{
- // default behavior is to have thread safety turn off. This means that MetaData APIs will not take reader/writer
- // lock. Clients are responsible to make sure the properly thread synchronization when using MetaData APIs.
- MDThreadSafetyDefault = 0x00000000,
- MDThreadSafetyOff = 0x00000000,
- MDThreadSafetyOn = 0x00000001,
-} CorThreadSafetyOptions;
-
-
-// flags for MetaDataLinkerOptions
-typedef enum CorLinkerOptions
-{
- // default behavior is not to keep private types
- MDAssembly = 0x00000000,
- MDNetModule = 0x00000001,
-} CorLinkerOptions;
-
-// flags for MetaDataMergeOptions
-typedef enum MergeFlags
-{
- MergeFlagsNone = 0,
- MergeManifest = 0x00000001,
- DropMemberRefCAs = 0x00000002,
- NoDupCheck = 0x00000004,
- MergeExportedTypes = 0x00000008
-} MergeFlags;
-
-// flags for MetaDataPreserveLocalRefs
-typedef enum CorLocalRefPreservation
-{
- MDPreserveLocalRefsNone = 0x00000000,
- MDPreserveLocalTypeRef = 0x00000001,
- MDPreserveLocalMemberRef = 0x00000002
-} CorLocalRefPreservation;
-
-//
-// struct used to retrieve field offset
-// used by GetClassLayout and SetClassLayout
-//
-
-#ifndef _COR_FIELD_OFFSET_
-#define _COR_FIELD_OFFSET_
-
-typedef struct COR_FIELD_OFFSET
-{
- mdFieldDef ridOfField;
- uint32_t ulOffset;
-} COR_FIELD_OFFSET;
-
-#endif
-
-
-//
-// Token tags.
-//
-typedef enum CorTokenType
-{
- mdtModule = 0x00000000, //
- mdtTypeRef = 0x01000000, //
- mdtTypeDef = 0x02000000, //
- mdtFieldDef = 0x04000000, //
- mdtMethodDef = 0x06000000, //
- mdtParamDef = 0x08000000, //
- mdtInterfaceImpl = 0x09000000, //
- mdtMemberRef = 0x0a000000, //
- mdtCustomAttribute = 0x0c000000, //
- mdtPermission = 0x0e000000, //
- mdtSignature = 0x11000000, //
- mdtEvent = 0x14000000, //
- mdtProperty = 0x17000000, //
- mdtMethodImpl = 0x19000000, //
- mdtModuleRef = 0x1a000000, //
- mdtTypeSpec = 0x1b000000, //
- mdtAssembly = 0x20000000, //
- mdtAssemblyRef = 0x23000000, //
- mdtFile = 0x26000000, //
- mdtExportedType = 0x27000000, //
- mdtManifestResource = 0x28000000, //
- mdtNestedClass = 0x29000000, //
- mdtGenericParam = 0x2a000000, //
- mdtMethodSpec = 0x2b000000, //
- mdtGenericParamConstraint = 0x2c000000,
-
- mdtString = 0x70000000, //
- mdtName = 0x71000000, //
- mdtBaseType = 0x72000000, // Leave this on the high end value. This does not correspond to metadata table
-} CorTokenType;
-
-//
-// Build / decompose tokens.
-//
-#define RidToToken(rid,tktype) ((rid) |= (tktype))
-#define TokenFromRid(rid,tktype) ((rid) | (tktype))
-#define RidFromToken(tk) ((RID) ((tk) & 0x00ffffff))
-#define TypeFromToken(tk) ((ULONG32)((tk) & 0xff000000))
-#define IsNilToken(tk) ((RidFromToken(tk)) == 0)
-
-//
-// Nil tokens
-//
-#define mdTokenNil ((mdToken)0)
-#define mdModuleNil ((mdModule)mdtModule)
-#define mdTypeRefNil ((mdTypeRef)mdtTypeRef)
-#define mdTypeDefNil ((mdTypeDef)mdtTypeDef)
-#define mdFieldDefNil ((mdFieldDef)mdtFieldDef)
-#define mdMethodDefNil ((mdMethodDef)mdtMethodDef)
-#define mdParamDefNil ((mdParamDef)mdtParamDef)
-#define mdInterfaceImplNil ((mdInterfaceImpl)mdtInterfaceImpl)
-#define mdMemberRefNil ((mdMemberRef)mdtMemberRef)
-#define mdCustomAttributeNil ((mdCustomAttribute)mdtCustomAttribute)
-#define mdPermissionNil ((mdPermission)mdtPermission)
-#define mdSignatureNil ((mdSignature)mdtSignature)
-#define mdEventNil ((mdEvent)mdtEvent)
-#define mdPropertyNil ((mdProperty)mdtProperty)
-#define mdModuleRefNil ((mdModuleRef)mdtModuleRef)
-#define mdTypeSpecNil ((mdTypeSpec)mdtTypeSpec)
-#define mdAssemblyNil ((mdAssembly)mdtAssembly)
-#define mdAssemblyRefNil ((mdAssemblyRef)mdtAssemblyRef)
-#define mdFileNil ((mdFile)mdtFile)
-#define mdExportedTypeNil ((mdExportedType)mdtExportedType)
-#define mdManifestResourceNil ((mdManifestResource)mdtManifestResource)
-
-#define mdGenericParamNil ((mdGenericParam)mdtGenericParam)
-#define mdGenericParamConstraintNil ((mdGenericParamConstraint)mdtGenericParamConstraint)
-#define mdMethodSpecNil ((mdMethodSpec)mdtMethodSpec)
-
-#define mdStringNil ((mdString)mdtString)
-
-//
-// Open bits.
-//
-typedef enum CorOpenFlags
-{
- ofRead = 0x00000000, // Open scope for read
- ofWrite = 0x00000001, // Open scope for write.
- ofReadWriteMask = 0x00000001, // Mask for read/write bit.
-
- ofCopyMemory = 0x00000002, // Open scope with memory. Ask metadata to maintain its own copy of memory.
-
- ofReadOnly = 0x00000010, // Open scope for read. Will be unable to QI for a IMetadataEmit* interface
- ofTakeOwnership = 0x00000020, // The memory was allocated with CoTaskMemAlloc and will be freed by the metadata
-
- // These are obsolete and are ignored.
- // ofCacheImage = 0x00000004, // EE maps but does not do relocations or verify image
- // ofManifestMetadata = 0x00000008, // Open scope on ngen image, return the manifest metadata instead of the IL metadata
- ofNoTypeLib = 0x00000080, // Don't OpenScope on a typelib.
- ofNoTransform = 0x00001000, // Disable automatic transforms of .winmd files.
-
- // Internal bits
- ofReserved1 = 0x00000100, // Reserved for internal use.
- ofReserved2 = 0x00000200, // Reserved for internal use.
- ofReserved3 = 0x00000400, // Reserved for internal use.
- ofReserved = 0xffffef40 // All the reserved bits.
-
-} CorOpenFlags;
-
-#define IsOfRead(x) (((x) & ofReadWriteMask) == ofRead)
-#define IsOfReadWrite(x) (((x) & ofReadWriteMask) == ofWrite)
-
-#define IsOfCopyMemory(x) ((x) & ofCopyMemory)
-
-#define IsOfReadOnly(x) ((x) & ofReadOnly)
-#define IsOfTakeOwnership(x) ((x) & ofTakeOwnership)
-
-#define IsOfReserved(x) (((x) & ofReserved) != 0)
-
-//
-// Type of file mapping returned by code:IMetaDataInfo::GetFileMapping.
-//
-typedef enum CorFileMapping
-{
- fmFlat = 0, // Flat file mapping - file is mapped as data file (code:SEC_IMAGE flag was not
- // passed to code:CreateFileMapping).
- fmExecutableImage = 1, // Executable image file mapping - file is mapped for execution
- // (either via code:LoadLibrary or code:CreateFileMapping with code:SEC_IMAGE flag).
-} CorFileMapping;
-
-
-typedef CorTypeAttr CorRegTypeAttr;
-
-//
-// Opaque type for an enumeration handle.
-//
-typedef void *HCORENUM;
-
-
-// Note that this must be kept in sync with System.AttributeTargets.
-typedef enum CorAttributeTargets
-{
- catAssembly = 0x0001,
- catModule = 0x0002,
- catClass = 0x0004,
- catStruct = 0x0008,
- catEnum = 0x0010,
- catConstructor = 0x0020,
- catMethod = 0x0040,
- catProperty = 0x0080,
- catField = 0x0100,
- catEvent = 0x0200,
- catInterface = 0x0400,
- catParameter = 0x0800,
- catDelegate = 0x1000,
- catGenericParameter = 0x4000,
-
- catAll = catAssembly | catModule | catClass | catStruct | catEnum | catConstructor |
- catMethod | catProperty | catField | catEvent | catInterface | catParameter | catDelegate | catGenericParameter,
- catClassMembers = catClass | catStruct | catEnum | catConstructor | catMethod | catProperty | catField | catEvent | catDelegate | catInterface,
-
-} CorAttributeTargets;
-
-#ifndef MACROS_NOT_SUPPORTED
-//
-// Some well-known custom attributes
-//
-#ifndef IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS
- #define IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS (IMAGE_CEE_CS_CALLCONV_DEFAULT | IMAGE_CEE_CS_CALLCONV_HASTHIS)
-#endif
-
-#define INTEROP_DISPID_TYPE_W W("System.Runtime.InteropServices.DispIdAttribute")
-#define INTEROP_DISPID_TYPE "System.Runtime.InteropServices.DispIdAttribute"
-#define INTEROP_DISPID_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I4}
-
-#define INTEROP_INTERFACETYPE_TYPE_W W("System.Runtime.InteropServices.InterfaceTypeAttribute")
-#define INTEROP_INTERFACETYPE_TYPE "System.Runtime.InteropServices.InterfaceTypeAttribute"
-#define INTEROP_INTERFACETYPE_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2}
-
-#define INTEROP_GUID_TYPE_W W("System.Runtime.InteropServices.GuidAttribute")
-#define INTEROP_GUID_TYPE "System.Runtime.InteropServices.GuidAttribute"
-#define INTEROP_GUID_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING}
-
-#define INTEROP_TYPELIBVERSION_TYPE_W W("System.Runtime.InteropServices.TypeLibVersionAttribute")
-#define INTEROP_TYPELIBVERSION_TYPE "System.Runtime.InteropServices.TypeLibVersionAttribute"
-#define INTEROP_TYPELIBVERSION_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 2, ELEMENT_TYPE_VOID, ELEMENT_TYPE_I2, ELEMENT_TYPE_I2}
-
-#define INTEROP_COMEVENTINTERFACE_TYPE_W W("System.Runtime.InteropServices.ComEventInterfaceAttribute")
-#define INTEROP_COMEVENTINTERFACE_TYPE "System.Runtime.InteropServices.ComEventInterfaceAttribute"
-
-#define FRIEND_ASSEMBLY_TYPE_W W("System.Runtime.CompilerServices.InternalsVisibleToAttribute")
-#define FRIEND_ASSEMBLY_TYPE "System.Runtime.CompilerServices.InternalsVisibleToAttribute"
-#define FRIEND_ASSEMBLY_TYPE_NAMESPACE "System.Runtime.CompilerServices"
-#define FRIEND_ASSEMBLY_TYPE_NAME "InternalsVisibleToAttribute"
-#define FRIEND_ASSEMBLY_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 2, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING, ELEMENT_TYPE_BOOLEAN}
-
-#define SUBJECT_ASSEMBLY_TYPE_W W("System.Runtime.CompilerServices.IgnoresAccessChecksToAttribute")
-#define SUBJECT_ASSEMBLY_TYPE "System.Runtime.CompilerServices.IgnoresAccessChecksToAttribute"
-#define SUBJECT_ASSEMBLY_TYPE_NAMESPACE "System.Runtime.CompilerServices"
-#define SUBJECT_ASSEMBLY_TYPE_NAME "IgnoresAccessChecksToAttribute"
-#define SUBJECT_ASSEMBLY_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 1, ELEMENT_TYPE_VOID, ELEMENT_TYPE_STRING}
-
-#define DEFAULTDOMAIN_STA_TYPE_W W("System.STAThreadAttribute")
-#define DEFAULTDOMAIN_STA_TYPE "System.STAThreadAttribute"
-#define DEFAULTDOMAIN_STA_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID}
-
-#define DEFAULTDOMAIN_MTA_TYPE_W W("System.MTAThreadAttribute")
-#define DEFAULTDOMAIN_MTA_TYPE "System.MTAThreadAttribute"
-#define DEFAULTDOMAIN_MTA_SIG {IMAGE_CEE_CS_CALLCONV_DEFAULT_HASTHIS, 0, ELEMENT_TYPE_VOID}
-
-#define DEBUGGABLE_ATTRIBUTE_TYPE_W W("System.Diagnostics.DebuggableAttribute")
-#define DEBUGGABLE_ATTRIBUTE_TYPE "System.Diagnostics.DebuggableAttribute"
-#define DEBUGGABLE_ATTRIBUTE_TYPE_NAMESPACE "System.Diagnostics"
-#define DEBUGGABLE_ATTRIBUTE_TYPE_NAME "DebuggableAttribute"
-
-
-// Keep in sync with RuntimeCompatibilityAttribute.cs
-#define RUNTIMECOMPATIBILITY_TYPE_W W("System.Runtime.CompilerServices.RuntimeCompatibilityAttribute")
-#define RUNTIMECOMPATIBILITY_TYPE "System.Runtime.CompilerServices.RuntimeCompatibilityAttribute"
-
-
-// Keep in sync with AssemblySettingAttributes.cs
-
-typedef enum NGenHintEnum
-{
- NGenDefault = 0x0000, // No preference specified
-
- NGenEager = 0x0001, // NGen at install time
- NGenLazy = 0x0002, // NGen after install time
- NGenNever = 0x0003 // Assembly should not be ngened
-} NGenHintEnum;
-
-typedef enum LoadHintEnum
-{
- LoadDefault = 0x0000, // No preference specified
-
- LoadAlways = 0x0001, // Dependency is always loaded
- LoadSometimes = 0x0002, // Dependency is sometimes loaded
- LoadNever = 0x0003 // Dependency is never loaded
-} LoadHintEnum;
-
-#define CMOD_CALLCONV_NAMESPACE_OLD "System.Runtime.InteropServices"
-#define CMOD_CALLCONV_NAMESPACE "System.Runtime.CompilerServices"
-#define CMOD_CALLCONV_NAME_CDECL "CallConvCdecl"
-#define CMOD_CALLCONV_NAME_STDCALL "CallConvStdcall"
-#define CMOD_CALLCONV_NAME_THISCALL "CallConvThiscall"
-#define CMOD_CALLCONV_NAME_FASTCALL "CallConvFastcall"
-#define CMOD_CALLCONV_NAME_SUPPRESSGCTRANSITION "CallConvSuppressGCTransition"
-#define CMOD_CALLCONV_NAME_MEMBERFUNCTION "CallConvMemberFunction"
-
-#endif // MACROS_NOT_SUPPORTED
-
-//
-// GetSaveSize accuracy
-//
-#ifndef _CORSAVESIZE_DEFINED_
-#define _CORSAVESIZE_DEFINED_
-typedef enum CorSaveSize
-{
- cssAccurate = 0x0000, // Find exact save size, accurate but slower.
- cssQuick = 0x0001, // Estimate save size, may pad estimate, but faster.
- cssDiscardTransientCAs = 0x0002, // remove all of the CAs of discardable types
-} CorSaveSize;
-#endif
-
-#define COR_IS_METHOD_MANAGED_IL(flags) (((flags) & 0xf) == (miIL | miManaged))
-#define COR_IS_METHOD_MANAGED_OPTIL(flags) (((flags) & 0xf) == (miOPTIL | miManaged))
-#define COR_IS_METHOD_MANAGED_NATIVE(flags) (((flags) & 0xf) == (miNative | miManaged))
-#define COR_IS_METHOD_UNMANAGED_NATIVE(flags) (((flags) & 0xf) == (miNative | miUnmanaged))
-
-//
-// Enum used with NATIVE_TYPE_ARRAY.
-//
-typedef enum NativeTypeArrayFlags
-{
- ntaSizeParamIndexSpecified = 0x0001,
- ntaReserved = 0xfffe // All the reserved bits.
-} NativeTypeArrayFlags;
-
-//
-// Enum used for HFA type recognition.
-// Supported across architectures, so that it can be used in altjits and cross-compilation.
-//typedef enum CorInfoHFAElemType : unsigned {
-typedef enum CorInfoHFAElemType {
- CORINFO_HFA_ELEM_NONE,
- CORINFO_HFA_ELEM_FLOAT,
- CORINFO_HFA_ELEM_DOUBLE,
- CORINFO_HFA_ELEM_VECTOR64,
- CORINFO_HFA_ELEM_VECTOR128,
-} CorInfoHFAElemType;
-
-//
-// Opaque types for security properties and values.
-//
-typedef void * PSECURITY_PROPS ;
-typedef void * PSECURITY_VALUE ;
-typedef void ** PPSECURITY_PROPS ;
-typedef void ** PPSECURITY_VALUE ;
-
-//-------------------------------------
-//--- Security data structures
-//-------------------------------------
-
-// Descriptor for a single security custom attribute.
-typedef struct COR_SECATTR {
- mdMemberRef tkCtor; // Ref to constructor of security attribute.
- const void *pCustomAttribute; // Blob describing ctor args and field/property values.
- uint32_t cbCustomAttribute; // Length of the above blob.
-} COR_SECATTR;
-
-#endif // __CORHDR_H__
diff --git a/src/native/dnmd/src/inc/external/corsym.h b/src/native/dnmd/src/inc/external/corsym.h
deleted file mode 100644
index d0014b4a380ab3..00000000000000
--- a/src/native/dnmd/src/inc/external/corsym.h
+++ /dev/null
@@ -1,5705 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 8.00.0601 */
-/* @@MIDL_FILE_HEADING( ) */
-
-// #pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-/* verify that the version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCSAL_H_VERSION__
-#define __REQUIRED_RPCSAL_H_VERSION__ 100
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __corsym_h__
-#define __corsym_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __CorSymWriter_deprecated_FWD_DEFINED__
-#define __CorSymWriter_deprecated_FWD_DEFINED__
-
-#ifdef __cplusplus
-typedef class CorSymWriter_deprecated CorSymWriter_deprecated;
-#else
-typedef struct CorSymWriter_deprecated CorSymWriter_deprecated;
-#endif /* __cplusplus */
-
-#endif /* __CorSymWriter_deprecated_FWD_DEFINED__ */
-
-
-#ifndef __CorSymReader_deprecated_FWD_DEFINED__
-#define __CorSymReader_deprecated_FWD_DEFINED__
-
-#ifdef __cplusplus
-typedef class CorSymReader_deprecated CorSymReader_deprecated;
-#else
-typedef struct CorSymReader_deprecated CorSymReader_deprecated;
-#endif /* __cplusplus */
-
-#endif /* __CorSymReader_deprecated_FWD_DEFINED__ */
-
-
-#ifndef __CorSymBinder_deprecated_FWD_DEFINED__
-#define __CorSymBinder_deprecated_FWD_DEFINED__
-
-#ifdef __cplusplus
-typedef class CorSymBinder_deprecated CorSymBinder_deprecated;
-#else
-typedef struct CorSymBinder_deprecated CorSymBinder_deprecated;
-#endif /* __cplusplus */
-
-#endif /* __CorSymBinder_deprecated_FWD_DEFINED__ */
-
-
-#ifndef __CorSymWriter_SxS_FWD_DEFINED__
-#define __CorSymWriter_SxS_FWD_DEFINED__
-
-#ifdef __cplusplus
-typedef class CorSymWriter_SxS CorSymWriter_SxS;
-#else
-typedef struct CorSymWriter_SxS CorSymWriter_SxS;
-#endif /* __cplusplus */
-
-#endif /* __CorSymWriter_SxS_FWD_DEFINED__ */
-
-
-#ifndef __CorSymReader_SxS_FWD_DEFINED__
-#define __CorSymReader_SxS_FWD_DEFINED__
-
-#ifdef __cplusplus
-typedef class CorSymReader_SxS CorSymReader_SxS;
-#else
-typedef struct CorSymReader_SxS CorSymReader_SxS;
-#endif /* __cplusplus */
-
-#endif /* __CorSymReader_SxS_FWD_DEFINED__ */
-
-
-#ifndef __CorSymBinder_SxS_FWD_DEFINED__
-#define __CorSymBinder_SxS_FWD_DEFINED__
-
-#ifdef __cplusplus
-typedef class CorSymBinder_SxS CorSymBinder_SxS;
-#else
-typedef struct CorSymBinder_SxS CorSymBinder_SxS;
-#endif /* __cplusplus */
-
-#endif /* __CorSymBinder_SxS_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedBinder_FWD_DEFINED__
-#define __ISymUnmanagedBinder_FWD_DEFINED__
-typedef interface ISymUnmanagedBinder ISymUnmanagedBinder;
-
-#endif /* __ISymUnmanagedBinder_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedBinder2_FWD_DEFINED__
-#define __ISymUnmanagedBinder2_FWD_DEFINED__
-typedef interface ISymUnmanagedBinder2 ISymUnmanagedBinder2;
-
-#endif /* __ISymUnmanagedBinder2_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedBinder3_FWD_DEFINED__
-#define __ISymUnmanagedBinder3_FWD_DEFINED__
-typedef interface ISymUnmanagedBinder3 ISymUnmanagedBinder3;
-
-#endif /* __ISymUnmanagedBinder3_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedDispose_FWD_DEFINED__
-#define __ISymUnmanagedDispose_FWD_DEFINED__
-typedef interface ISymUnmanagedDispose ISymUnmanagedDispose;
-
-#endif /* __ISymUnmanagedDispose_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedDocument_FWD_DEFINED__
-#define __ISymUnmanagedDocument_FWD_DEFINED__
-typedef interface ISymUnmanagedDocument ISymUnmanagedDocument;
-
-#endif /* __ISymUnmanagedDocument_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedDocumentWriter_FWD_DEFINED__
-#define __ISymUnmanagedDocumentWriter_FWD_DEFINED__
-typedef interface ISymUnmanagedDocumentWriter ISymUnmanagedDocumentWriter;
-
-#endif /* __ISymUnmanagedDocumentWriter_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedMethod_FWD_DEFINED__
-#define __ISymUnmanagedMethod_FWD_DEFINED__
-typedef interface ISymUnmanagedMethod ISymUnmanagedMethod;
-
-#endif /* __ISymUnmanagedMethod_FWD_DEFINED__ */
-
-
-#ifndef __ISymENCUnmanagedMethod_FWD_DEFINED__
-#define __ISymENCUnmanagedMethod_FWD_DEFINED__
-typedef interface ISymENCUnmanagedMethod ISymENCUnmanagedMethod;
-
-#endif /* __ISymENCUnmanagedMethod_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedNamespace_FWD_DEFINED__
-#define __ISymUnmanagedNamespace_FWD_DEFINED__
-typedef interface ISymUnmanagedNamespace ISymUnmanagedNamespace;
-
-#endif /* __ISymUnmanagedNamespace_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedReader_FWD_DEFINED__
-#define __ISymUnmanagedReader_FWD_DEFINED__
-typedef interface ISymUnmanagedReader ISymUnmanagedReader;
-
-#endif /* __ISymUnmanagedReader_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedSourceServerModule_FWD_DEFINED__
-#define __ISymUnmanagedSourceServerModule_FWD_DEFINED__
-typedef interface ISymUnmanagedSourceServerModule ISymUnmanagedSourceServerModule;
-
-#endif /* __ISymUnmanagedSourceServerModule_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedENCUpdate_FWD_DEFINED__
-#define __ISymUnmanagedENCUpdate_FWD_DEFINED__
-typedef interface ISymUnmanagedENCUpdate ISymUnmanagedENCUpdate;
-
-#endif /* __ISymUnmanagedENCUpdate_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedReaderSymbolSearchInfo_FWD_DEFINED__
-#define __ISymUnmanagedReaderSymbolSearchInfo_FWD_DEFINED__
-typedef interface ISymUnmanagedReaderSymbolSearchInfo ISymUnmanagedReaderSymbolSearchInfo;
-
-#endif /* __ISymUnmanagedReaderSymbolSearchInfo_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedScope_FWD_DEFINED__
-#define __ISymUnmanagedScope_FWD_DEFINED__
-typedef interface ISymUnmanagedScope ISymUnmanagedScope;
-
-#endif /* __ISymUnmanagedScope_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedConstant_FWD_DEFINED__
-#define __ISymUnmanagedConstant_FWD_DEFINED__
-typedef interface ISymUnmanagedConstant ISymUnmanagedConstant;
-
-#endif /* __ISymUnmanagedConstant_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedScope2_FWD_DEFINED__
-#define __ISymUnmanagedScope2_FWD_DEFINED__
-typedef interface ISymUnmanagedScope2 ISymUnmanagedScope2;
-
-#endif /* __ISymUnmanagedScope2_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedVariable_FWD_DEFINED__
-#define __ISymUnmanagedVariable_FWD_DEFINED__
-typedef interface ISymUnmanagedVariable ISymUnmanagedVariable;
-
-#endif /* __ISymUnmanagedVariable_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedSymbolSearchInfo_FWD_DEFINED__
-#define __ISymUnmanagedSymbolSearchInfo_FWD_DEFINED__
-typedef interface ISymUnmanagedSymbolSearchInfo ISymUnmanagedSymbolSearchInfo;
-
-#endif /* __ISymUnmanagedSymbolSearchInfo_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedWriter_FWD_DEFINED__
-#define __ISymUnmanagedWriter_FWD_DEFINED__
-typedef interface ISymUnmanagedWriter ISymUnmanagedWriter;
-
-#endif /* __ISymUnmanagedWriter_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedWriter2_FWD_DEFINED__
-#define __ISymUnmanagedWriter2_FWD_DEFINED__
-typedef interface ISymUnmanagedWriter2 ISymUnmanagedWriter2;
-
-#endif /* __ISymUnmanagedWriter2_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedWriter3_FWD_DEFINED__
-#define __ISymUnmanagedWriter3_FWD_DEFINED__
-typedef interface ISymUnmanagedWriter3 ISymUnmanagedWriter3;
-
-#endif /* __ISymUnmanagedWriter3_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedWriter4_FWD_DEFINED__
-#define __ISymUnmanagedWriter4_FWD_DEFINED__
-typedef interface ISymUnmanagedWriter4 ISymUnmanagedWriter4;
-
-#endif /* __ISymUnmanagedWriter4_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedWriter5_FWD_DEFINED__
-#define __ISymUnmanagedWriter5_FWD_DEFINED__
-typedef interface ISymUnmanagedWriter5 ISymUnmanagedWriter5;
-
-#endif /* __ISymUnmanagedWriter5_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedReader2_FWD_DEFINED__
-#define __ISymUnmanagedReader2_FWD_DEFINED__
-typedef interface ISymUnmanagedReader2 ISymUnmanagedReader2;
-
-#endif /* __ISymUnmanagedReader2_FWD_DEFINED__ */
-
-
-#ifndef __ISymNGenWriter_FWD_DEFINED__
-#define __ISymNGenWriter_FWD_DEFINED__
-typedef interface ISymNGenWriter ISymNGenWriter;
-
-#endif /* __ISymNGenWriter_FWD_DEFINED__ */
-
-
-#ifndef __ISymNGenWriter2_FWD_DEFINED__
-#define __ISymNGenWriter2_FWD_DEFINED__
-typedef interface ISymNGenWriter2 ISymNGenWriter2;
-
-#endif /* __ISymNGenWriter2_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedAsyncMethodPropertiesWriter_FWD_DEFINED__
-#define __ISymUnmanagedAsyncMethodPropertiesWriter_FWD_DEFINED__
-typedef interface ISymUnmanagedAsyncMethodPropertiesWriter ISymUnmanagedAsyncMethodPropertiesWriter;
-
-#endif /* __ISymUnmanagedAsyncMethodPropertiesWriter_FWD_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedAsyncMethod_FWD_DEFINED__
-#define __ISymUnmanagedAsyncMethod_FWD_DEFINED__
-typedef interface ISymUnmanagedAsyncMethod ISymUnmanagedAsyncMethod;
-
-#endif /* __ISymUnmanagedAsyncMethod_FWD_DEFINED__ */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-/* interface __MIDL_itf_corsym_0000_0000 */
-/* [local] */
-
-#if 0
-typedef typedef unsigned int UINT32;
-;
-
-typedef mdToken mdTypeDef;
-
-typedef mdToken mdMethodDef;
-
-typedef typedef ULONG_PTR SIZE_T;
-;
-
-#endif
-#ifndef __CORHDR_H__
-typedef mdToken mdSignature;
-
-#endif
-// #pragma once
-// #pragma once
-// #pragma region Input Buffer SAL 1 compatibility macros
-// #pragma endregion Input Buffer SAL 1 compatibility macros
-// #pragma once
-// #pragma once
-EXTERN_GUID(CorSym_LanguageType_C, 0x63a08714, 0xfc37, 0x11d2, 0x90, 0x4c, 0x0, 0xc0, 0x4f, 0xa3, 0x02, 0xa1);
-EXTERN_GUID(CorSym_LanguageType_CPlusPlus, 0x3a12d0b7, 0xc26c, 0x11d0, 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2);
-EXTERN_GUID(CorSym_LanguageType_CSharp, 0x3f5162f8, 0x07c6, 0x11d3, 0x90, 0x53, 0x0, 0xc0, 0x4f, 0xa3, 0x02, 0xa1);
-EXTERN_GUID(CorSym_LanguageType_Basic, 0x3a12d0b8, 0xc26c, 0x11d0, 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2);
-EXTERN_GUID(CorSym_LanguageType_Java, 0x3a12d0b4, 0xc26c, 0x11d0, 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2);
-EXTERN_GUID(CorSym_LanguageType_Cobol, 0xaf046cd1, 0xd0e1, 0x11d2, 0x97, 0x7c, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc);
-EXTERN_GUID(CorSym_LanguageType_Pascal, 0xaf046cd2, 0xd0e1, 0x11d2, 0x97, 0x7c, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc);
-EXTERN_GUID(CorSym_LanguageType_ILAssembly, 0xaf046cd3, 0xd0e1, 0x11d2, 0x97, 0x7c, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc);
-EXTERN_GUID(CorSym_LanguageType_JScript, 0x3a12d0b6, 0xc26c, 0x11d0, 0xb4, 0x42, 0x00, 0xa0, 0x24, 0x4a, 0x1d, 0xd2);
-EXTERN_GUID(CorSym_LanguageType_SMC, 0xd9b9f7b, 0x6611, 0x11d3, 0xbd, 0x2a, 0x0, 0x0, 0xf8, 0x8, 0x49, 0xbd);
-EXTERN_GUID(CorSym_LanguageType_MCPlusPlus, 0x4b35fde8, 0x07c6, 0x11d3, 0x90, 0x53, 0x0, 0xc0, 0x4f, 0xa3, 0x02, 0xa1);
-EXTERN_GUID(CorSym_LanguageVendor_Microsoft, 0x994b45c4, 0xe6e9, 0x11d2, 0x90, 0x3f, 0x00, 0xc0, 0x4f, 0xa3, 0x02, 0xa1);
-EXTERN_GUID(CorSym_DocumentType_Text, 0x5a869d0b, 0x6611, 0x11d3, 0xbd, 0x2a, 0x0, 0x0, 0xf8, 0x8, 0x49, 0xbd);
-EXTERN_GUID(CorSym_DocumentType_MC, 0xeb40cb65, 0x3c1f, 0x4352, 0x9d, 0x7b, 0xba, 0xf, 0xc4, 0x7a, 0x9d, 0x77);
-EXTERN_GUID(CorSym_SourceHash_MD5, 0x406ea660, 0x64cf, 0x4c82, 0xb6, 0xf0, 0x42, 0xd4, 0x81, 0x72, 0xa7, 0x99);
-EXTERN_GUID(CorSym_SourceHash_SHA1, 0xff1816ec, 0xaa5e, 0x4d10, 0x87, 0xf7, 0x6f, 0x49, 0x63, 0x83, 0x34, 0x60);
-
-
-
-
-
-
-
-
-
-
-
-
-typedef
-enum CorSymAddrKind
- {
- ADDR_IL_OFFSET = 1,
- ADDR_NATIVE_RVA = 2,
- ADDR_NATIVE_REGISTER = 3,
- ADDR_NATIVE_REGREL = 4,
- ADDR_NATIVE_OFFSET = 5,
- ADDR_NATIVE_REGREG = 6,
- ADDR_NATIVE_REGSTK = 7,
- ADDR_NATIVE_STKREG = 8,
- ADDR_BITFIELD = 9,
- ADDR_NATIVE_ISECTOFFSET = 10
- } CorSymAddrKind;
-
-typedef
-enum CorSymVarFlag
- {
- VAR_IS_COMP_GEN = 1
- } CorSymVarFlag;
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_corsym_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_corsym_0000_0000_v0_0_s_ifspec;
-
-
-#ifndef __CorSymLib_LIBRARY_DEFINED__
-#define __CorSymLib_LIBRARY_DEFINED__
-
-/* library CorSymLib */
-/* [helpstring][version][uuid] */
-
-
-EXTERN_C const IID LIBID_CorSymLib;
-
-EXTERN_C const CLSID CLSID_CorSymWriter_deprecated;
-
-#ifdef __cplusplus
-
-class DECLSPEC_UUID("108296C1-281E-11d3-BD22-0000F80849BD")
-CorSymWriter_deprecated;
-#endif
-
-EXTERN_C const CLSID CLSID_CorSymReader_deprecated;
-
-#ifdef __cplusplus
-
-class DECLSPEC_UUID("108296C2-281E-11d3-BD22-0000F80849BD")
-CorSymReader_deprecated;
-#endif
-
-EXTERN_C const CLSID CLSID_CorSymBinder_deprecated;
-
-#ifdef __cplusplus
-
-class DECLSPEC_UUID("AA544D41-28CB-11d3-BD22-0000F80849BD")
-CorSymBinder_deprecated;
-#endif
-
-EXTERN_C const CLSID CLSID_CorSymWriter_SxS;
-
-#ifdef __cplusplus
-
-class DECLSPEC_UUID("0AE2DEB0-F901-478b-BB9F-881EE8066788")
-CorSymWriter_SxS;
-#endif
-
-EXTERN_C const CLSID CLSID_CorSymReader_SxS;
-
-#ifdef __cplusplus
-
-class DECLSPEC_UUID("0A3976C5-4529-4ef8-B0B0-42EED37082CD")
-CorSymReader_SxS;
-#endif
-
-EXTERN_C const CLSID CLSID_CorSymBinder_SxS;
-
-#ifdef __cplusplus
-
-class DECLSPEC_UUID("0A29FF9E-7F9C-4437-8B11-F424491E3931")
-CorSymBinder_SxS;
-#endif
-#endif /* __CorSymLib_LIBRARY_DEFINED__ */
-
-#ifndef __ISymUnmanagedBinder_INTERFACE_DEFINED__
-#define __ISymUnmanagedBinder_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedBinder */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymUnmanagedBinder;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("AA544D42-28CB-11d3-BD22-0000F80849BD")
- ISymUnmanagedBinder : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE GetReaderForFile(
- /* [in] */ __RPC__in_opt IUnknown *importer,
- /* [in] */ __RPC__in const WCHAR *fileName,
- /* [in] */ __RPC__in const WCHAR *searchPath,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedReader **pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetReaderFromStream(
- /* [in] */ __RPC__in_opt IUnknown *importer,
- /* [in] */ __RPC__in_opt IStream *pstream,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedReader **pRetVal) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedBinderVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedBinder * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedBinder * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedBinder * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetReaderForFile )(
- __RPC__in ISymUnmanagedBinder * This,
- /* [in] */ __RPC__in_opt IUnknown *importer,
- /* [in] */ __RPC__in const WCHAR *fileName,
- /* [in] */ __RPC__in const WCHAR *searchPath,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedReader **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetReaderFromStream )(
- __RPC__in ISymUnmanagedBinder * This,
- /* [in] */ __RPC__in_opt IUnknown *importer,
- /* [in] */ __RPC__in_opt IStream *pstream,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedReader **pRetVal);
-
- END_INTERFACE
- } ISymUnmanagedBinderVtbl;
-
- interface ISymUnmanagedBinder
- {
- CONST_VTBL struct ISymUnmanagedBinderVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedBinder_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedBinder_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedBinder_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedBinder_GetReaderForFile(This,importer,fileName,searchPath,pRetVal) \
- ( (This)->lpVtbl -> GetReaderForFile(This,importer,fileName,searchPath,pRetVal) )
-
-#define ISymUnmanagedBinder_GetReaderFromStream(This,importer,pstream,pRetVal) \
- ( (This)->lpVtbl -> GetReaderFromStream(This,importer,pstream,pRetVal) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedBinder_INTERFACE_DEFINED__ */
-
-
-/* interface __MIDL_itf_corsym_0000_0002 */
-/* [local] */
-
-typedef
-enum CorSymSearchPolicyAttributes
- {
- AllowRegistryAccess = 0x1,
- AllowSymbolServerAccess = 0x2,
- AllowOriginalPathAccess = 0x4,
- AllowReferencePathAccess = 0x8
- } CorSymSearchPolicyAttributes;
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_corsym_0000_0002_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_corsym_0000_0002_v0_0_s_ifspec;
-
-#ifndef __ISymUnmanagedBinder2_INTERFACE_DEFINED__
-#define __ISymUnmanagedBinder2_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedBinder2 */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymUnmanagedBinder2;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("ACCEE350-89AF-4ccb-8B40-1C2C4C6F9434")
- ISymUnmanagedBinder2 : public ISymUnmanagedBinder
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE GetReaderForFile2(
- /* [in] */ __RPC__in_opt IUnknown *importer,
- /* [in] */ __RPC__in const WCHAR *fileName,
- /* [in] */ __RPC__in const WCHAR *searchPath,
- /* [in] */ ULONG32 searchPolicy,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedReader **pRetVal) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedBinder2Vtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedBinder2 * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedBinder2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedBinder2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetReaderForFile )(
- __RPC__in ISymUnmanagedBinder2 * This,
- /* [in] */ __RPC__in_opt IUnknown *importer,
- /* [in] */ __RPC__in const WCHAR *fileName,
- /* [in] */ __RPC__in const WCHAR *searchPath,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedReader **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetReaderFromStream )(
- __RPC__in ISymUnmanagedBinder2 * This,
- /* [in] */ __RPC__in_opt IUnknown *importer,
- /* [in] */ __RPC__in_opt IStream *pstream,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedReader **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetReaderForFile2 )(
- __RPC__in ISymUnmanagedBinder2 * This,
- /* [in] */ __RPC__in_opt IUnknown *importer,
- /* [in] */ __RPC__in const WCHAR *fileName,
- /* [in] */ __RPC__in const WCHAR *searchPath,
- /* [in] */ ULONG32 searchPolicy,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedReader **pRetVal);
-
- END_INTERFACE
- } ISymUnmanagedBinder2Vtbl;
-
- interface ISymUnmanagedBinder2
- {
- CONST_VTBL struct ISymUnmanagedBinder2Vtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedBinder2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedBinder2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedBinder2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedBinder2_GetReaderForFile(This,importer,fileName,searchPath,pRetVal) \
- ( (This)->lpVtbl -> GetReaderForFile(This,importer,fileName,searchPath,pRetVal) )
-
-#define ISymUnmanagedBinder2_GetReaderFromStream(This,importer,pstream,pRetVal) \
- ( (This)->lpVtbl -> GetReaderFromStream(This,importer,pstream,pRetVal) )
-
-
-#define ISymUnmanagedBinder2_GetReaderForFile2(This,importer,fileName,searchPath,searchPolicy,pRetVal) \
- ( (This)->lpVtbl -> GetReaderForFile2(This,importer,fileName,searchPath,searchPolicy,pRetVal) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedBinder2_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedBinder3_INTERFACE_DEFINED__
-#define __ISymUnmanagedBinder3_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedBinder3 */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymUnmanagedBinder3;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("28AD3D43-B601-4d26-8A1B-25F9165AF9D7")
- ISymUnmanagedBinder3 : public ISymUnmanagedBinder2
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE GetReaderFromCallback(
- /* [in] */ __RPC__in_opt IUnknown *importer,
- /* [in] */ __RPC__in const WCHAR *fileName,
- /* [in] */ __RPC__in const WCHAR *searchPath,
- /* [in] */ ULONG32 searchPolicy,
- /* [in] */ __RPC__in_opt IUnknown *callback,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedReader **pRetVal) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedBinder3Vtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedBinder3 * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedBinder3 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedBinder3 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetReaderForFile )(
- __RPC__in ISymUnmanagedBinder3 * This,
- /* [in] */ __RPC__in_opt IUnknown *importer,
- /* [in] */ __RPC__in const WCHAR *fileName,
- /* [in] */ __RPC__in const WCHAR *searchPath,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedReader **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetReaderFromStream )(
- __RPC__in ISymUnmanagedBinder3 * This,
- /* [in] */ __RPC__in_opt IUnknown *importer,
- /* [in] */ __RPC__in_opt IStream *pstream,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedReader **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetReaderForFile2 )(
- __RPC__in ISymUnmanagedBinder3 * This,
- /* [in] */ __RPC__in_opt IUnknown *importer,
- /* [in] */ __RPC__in const WCHAR *fileName,
- /* [in] */ __RPC__in const WCHAR *searchPath,
- /* [in] */ ULONG32 searchPolicy,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedReader **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetReaderFromCallback )(
- __RPC__in ISymUnmanagedBinder3 * This,
- /* [in] */ __RPC__in_opt IUnknown *importer,
- /* [in] */ __RPC__in const WCHAR *fileName,
- /* [in] */ __RPC__in const WCHAR *searchPath,
- /* [in] */ ULONG32 searchPolicy,
- /* [in] */ __RPC__in_opt IUnknown *callback,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedReader **pRetVal);
-
- END_INTERFACE
- } ISymUnmanagedBinder3Vtbl;
-
- interface ISymUnmanagedBinder3
- {
- CONST_VTBL struct ISymUnmanagedBinder3Vtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedBinder3_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedBinder3_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedBinder3_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedBinder3_GetReaderForFile(This,importer,fileName,searchPath,pRetVal) \
- ( (This)->lpVtbl -> GetReaderForFile(This,importer,fileName,searchPath,pRetVal) )
-
-#define ISymUnmanagedBinder3_GetReaderFromStream(This,importer,pstream,pRetVal) \
- ( (This)->lpVtbl -> GetReaderFromStream(This,importer,pstream,pRetVal) )
-
-
-#define ISymUnmanagedBinder3_GetReaderForFile2(This,importer,fileName,searchPath,searchPolicy,pRetVal) \
- ( (This)->lpVtbl -> GetReaderForFile2(This,importer,fileName,searchPath,searchPolicy,pRetVal) )
-
-
-#define ISymUnmanagedBinder3_GetReaderFromCallback(This,importer,fileName,searchPath,searchPolicy,callback,pRetVal) \
- ( (This)->lpVtbl -> GetReaderFromCallback(This,importer,fileName,searchPath,searchPolicy,callback,pRetVal) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedBinder3_INTERFACE_DEFINED__ */
-
-
-/* interface __MIDL_itf_corsym_0000_0004 */
-/* [local] */
-
-static const int E_SYM_DESTROYED = MAKE_HRESULT(1, FACILITY_ITF, 0xdead);
-
-
-extern RPC_IF_HANDLE __MIDL_itf_corsym_0000_0004_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_corsym_0000_0004_v0_0_s_ifspec;
-
-#ifndef __ISymUnmanagedDispose_INTERFACE_DEFINED__
-#define __ISymUnmanagedDispose_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedDispose */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymUnmanagedDispose;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("969708D2-05E5-4861-A3B0-96E473CDF63F")
- ISymUnmanagedDispose : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE Destroy( void) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedDisposeVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedDispose * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedDispose * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedDispose * This);
-
- HRESULT ( STDMETHODCALLTYPE *Destroy )(
- __RPC__in ISymUnmanagedDispose * This);
-
- END_INTERFACE
- } ISymUnmanagedDisposeVtbl;
-
- interface ISymUnmanagedDispose
- {
- CONST_VTBL struct ISymUnmanagedDisposeVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedDispose_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedDispose_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedDispose_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedDispose_Destroy(This) \
- ( (This)->lpVtbl -> Destroy(This) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedDispose_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedDocument_INTERFACE_DEFINED__
-#define __ISymUnmanagedDocument_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedDocument */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymUnmanagedDocument;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("40DE4037-7C81-3E1E-B022-AE1ABFF2CA08")
- ISymUnmanagedDocument : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE GetURL(
- /* [in] */ ULONG32 cchUrl,
- /* [out] */ __RPC__out ULONG32 *pcchUrl,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cchUrl, *pcchUrl) WCHAR szUrl[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetDocumentType(
- /* [retval][out] */ __RPC__out GUID *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetLanguage(
- /* [retval][out] */ __RPC__out GUID *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetLanguageVendor(
- /* [retval][out] */ __RPC__out GUID *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetCheckSumAlgorithmId(
- /* [retval][out] */ __RPC__out GUID *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetCheckSum(
- /* [in] */ ULONG32 cData,
- /* [out] */ __RPC__out ULONG32 *pcData,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cData, *pcData) BYTE data[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE FindClosestLine(
- /* [in] */ ULONG32 line,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE HasEmbeddedSource(
- /* [retval][out] */ __RPC__out BOOL *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetSourceLength(
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetSourceRange(
- /* [in] */ ULONG32 startLine,
- /* [in] */ ULONG32 startColumn,
- /* [in] */ ULONG32 endLine,
- /* [in] */ ULONG32 endColumn,
- /* [in] */ ULONG32 cSourceBytes,
- /* [out] */ __RPC__out ULONG32 *pcSourceBytes,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cSourceBytes, *pcSourceBytes) BYTE source[ ]) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedDocumentVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedDocument * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedDocument * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedDocument * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetURL )(
- __RPC__in ISymUnmanagedDocument * This,
- /* [in] */ ULONG32 cchUrl,
- /* [out] */ __RPC__out ULONG32 *pcchUrl,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cchUrl, *pcchUrl) WCHAR szUrl[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetDocumentType )(
- __RPC__in ISymUnmanagedDocument * This,
- /* [retval][out] */ __RPC__out GUID *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetLanguage )(
- __RPC__in ISymUnmanagedDocument * This,
- /* [retval][out] */ __RPC__out GUID *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetLanguageVendor )(
- __RPC__in ISymUnmanagedDocument * This,
- /* [retval][out] */ __RPC__out GUID *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetCheckSumAlgorithmId )(
- __RPC__in ISymUnmanagedDocument * This,
- /* [retval][out] */ __RPC__out GUID *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetCheckSum )(
- __RPC__in ISymUnmanagedDocument * This,
- /* [in] */ ULONG32 cData,
- /* [out] */ __RPC__out ULONG32 *pcData,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cData, *pcData) BYTE data[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *FindClosestLine )(
- __RPC__in ISymUnmanagedDocument * This,
- /* [in] */ ULONG32 line,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *HasEmbeddedSource )(
- __RPC__in ISymUnmanagedDocument * This,
- /* [retval][out] */ __RPC__out BOOL *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetSourceLength )(
- __RPC__in ISymUnmanagedDocument * This,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetSourceRange )(
- __RPC__in ISymUnmanagedDocument * This,
- /* [in] */ ULONG32 startLine,
- /* [in] */ ULONG32 startColumn,
- /* [in] */ ULONG32 endLine,
- /* [in] */ ULONG32 endColumn,
- /* [in] */ ULONG32 cSourceBytes,
- /* [out] */ __RPC__out ULONG32 *pcSourceBytes,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cSourceBytes, *pcSourceBytes) BYTE source[ ]);
-
- END_INTERFACE
- } ISymUnmanagedDocumentVtbl;
-
- interface ISymUnmanagedDocument
- {
- CONST_VTBL struct ISymUnmanagedDocumentVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedDocument_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedDocument_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedDocument_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedDocument_GetURL(This,cchUrl,pcchUrl,szUrl) \
- ( (This)->lpVtbl -> GetURL(This,cchUrl,pcchUrl,szUrl) )
-
-#define ISymUnmanagedDocument_GetDocumentType(This,pRetVal) \
- ( (This)->lpVtbl -> GetDocumentType(This,pRetVal) )
-
-#define ISymUnmanagedDocument_GetLanguage(This,pRetVal) \
- ( (This)->lpVtbl -> GetLanguage(This,pRetVal) )
-
-#define ISymUnmanagedDocument_GetLanguageVendor(This,pRetVal) \
- ( (This)->lpVtbl -> GetLanguageVendor(This,pRetVal) )
-
-#define ISymUnmanagedDocument_GetCheckSumAlgorithmId(This,pRetVal) \
- ( (This)->lpVtbl -> GetCheckSumAlgorithmId(This,pRetVal) )
-
-#define ISymUnmanagedDocument_GetCheckSum(This,cData,pcData,data) \
- ( (This)->lpVtbl -> GetCheckSum(This,cData,pcData,data) )
-
-#define ISymUnmanagedDocument_FindClosestLine(This,line,pRetVal) \
- ( (This)->lpVtbl -> FindClosestLine(This,line,pRetVal) )
-
-#define ISymUnmanagedDocument_HasEmbeddedSource(This,pRetVal) \
- ( (This)->lpVtbl -> HasEmbeddedSource(This,pRetVal) )
-
-#define ISymUnmanagedDocument_GetSourceLength(This,pRetVal) \
- ( (This)->lpVtbl -> GetSourceLength(This,pRetVal) )
-
-#define ISymUnmanagedDocument_GetSourceRange(This,startLine,startColumn,endLine,endColumn,cSourceBytes,pcSourceBytes,source) \
- ( (This)->lpVtbl -> GetSourceRange(This,startLine,startColumn,endLine,endColumn,cSourceBytes,pcSourceBytes,source) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedDocument_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedDocumentWriter_INTERFACE_DEFINED__
-#define __ISymUnmanagedDocumentWriter_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedDocumentWriter */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymUnmanagedDocumentWriter;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("B01FAFEB-C450-3A4D-BEEC-B4CEEC01E006")
- ISymUnmanagedDocumentWriter : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE SetSource(
- /* [in] */ ULONG32 sourceSize,
- /* [size_is][in] */ __RPC__in_ecount_full(sourceSize) BYTE source[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetCheckSum(
- /* [in] */ GUID algorithmId,
- /* [in] */ ULONG32 checkSumSize,
- /* [size_is][in] */ __RPC__in_ecount_full(checkSumSize) BYTE checkSum[ ]) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedDocumentWriterVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedDocumentWriter * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedDocumentWriter * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedDocumentWriter * This);
-
- HRESULT ( STDMETHODCALLTYPE *SetSource )(
- __RPC__in ISymUnmanagedDocumentWriter * This,
- /* [in] */ ULONG32 sourceSize,
- /* [size_is][in] */ __RPC__in_ecount_full(sourceSize) BYTE source[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *SetCheckSum )(
- __RPC__in ISymUnmanagedDocumentWriter * This,
- /* [in] */ GUID algorithmId,
- /* [in] */ ULONG32 checkSumSize,
- /* [size_is][in] */ __RPC__in_ecount_full(checkSumSize) BYTE checkSum[ ]);
-
- END_INTERFACE
- } ISymUnmanagedDocumentWriterVtbl;
-
- interface ISymUnmanagedDocumentWriter
- {
- CONST_VTBL struct ISymUnmanagedDocumentWriterVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedDocumentWriter_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedDocumentWriter_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedDocumentWriter_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedDocumentWriter_SetSource(This,sourceSize,source) \
- ( (This)->lpVtbl -> SetSource(This,sourceSize,source) )
-
-#define ISymUnmanagedDocumentWriter_SetCheckSum(This,algorithmId,checkSumSize,checkSum) \
- ( (This)->lpVtbl -> SetCheckSum(This,algorithmId,checkSumSize,checkSum) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedDocumentWriter_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedMethod_INTERFACE_DEFINED__
-#define __ISymUnmanagedMethod_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedMethod */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymUnmanagedMethod;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("B62B923C-B500-3158-A543-24F307A8B7E1")
- ISymUnmanagedMethod : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE GetToken(
- /* [retval][out] */ __RPC__out mdMethodDef *pToken) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetSequencePointCount(
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetRootScope(
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedScope **pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetScopeFromOffset(
- /* [in] */ ULONG32 offset,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedScope **pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetOffset(
- /* [in] */ __RPC__in_opt ISymUnmanagedDocument *document,
- /* [in] */ ULONG32 line,
- /* [in] */ ULONG32 column,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetRanges(
- /* [in] */ __RPC__in_opt ISymUnmanagedDocument *document,
- /* [in] */ ULONG32 line,
- /* [in] */ ULONG32 column,
- /* [in] */ ULONG32 cRanges,
- /* [out] */ __RPC__out ULONG32 *pcRanges,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cRanges, *pcRanges) ULONG32 ranges[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetParameters(
- /* [in] */ ULONG32 cParams,
- /* [out] */ __RPC__out ULONG32 *pcParams,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cParams, *pcParams) ISymUnmanagedVariable *params[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetNamespace(
- /* [out] */ __RPC__deref_out_opt ISymUnmanagedNamespace **pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetSourceStartEnd(
- /* [in] */ __RPC__in_ecount_full(2) ISymUnmanagedDocument *docs[ 2 ],
- /* [in] */ __RPC__in_ecount_full(2) ULONG32 lines[ 2 ],
- /* [in] */ __RPC__in_ecount_full(2) ULONG32 columns[ 2 ],
- /* [out] */ __RPC__out BOOL *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetSequencePoints(
- /* [in] */ ULONG32 cPoints,
- /* [out] */ __RPC__out ULONG32 *pcPoints,
- /* [size_is][in] */ __RPC__in_ecount_full(cPoints) ULONG32 offsets[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(cPoints) ISymUnmanagedDocument *documents[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(cPoints) ULONG32 lines[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(cPoints) ULONG32 columns[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(cPoints) ULONG32 endLines[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(cPoints) ULONG32 endColumns[ ]) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedMethodVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedMethod * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedMethod * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedMethod * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetToken )(
- __RPC__in ISymUnmanagedMethod * This,
- /* [retval][out] */ __RPC__out mdMethodDef *pToken);
-
- HRESULT ( STDMETHODCALLTYPE *GetSequencePointCount )(
- __RPC__in ISymUnmanagedMethod * This,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetRootScope )(
- __RPC__in ISymUnmanagedMethod * This,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedScope **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetScopeFromOffset )(
- __RPC__in ISymUnmanagedMethod * This,
- /* [in] */ ULONG32 offset,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedScope **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetOffset )(
- __RPC__in ISymUnmanagedMethod * This,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocument *document,
- /* [in] */ ULONG32 line,
- /* [in] */ ULONG32 column,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetRanges )(
- __RPC__in ISymUnmanagedMethod * This,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocument *document,
- /* [in] */ ULONG32 line,
- /* [in] */ ULONG32 column,
- /* [in] */ ULONG32 cRanges,
- /* [out] */ __RPC__out ULONG32 *pcRanges,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cRanges, *pcRanges) ULONG32 ranges[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetParameters )(
- __RPC__in ISymUnmanagedMethod * This,
- /* [in] */ ULONG32 cParams,
- /* [out] */ __RPC__out ULONG32 *pcParams,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cParams, *pcParams) ISymUnmanagedVariable *params[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetNamespace )(
- __RPC__in ISymUnmanagedMethod * This,
- /* [out] */ __RPC__deref_out_opt ISymUnmanagedNamespace **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetSourceStartEnd )(
- __RPC__in ISymUnmanagedMethod * This,
- /* [in] */ __RPC__in_ecount_full(2) ISymUnmanagedDocument *docs[ 2 ],
- /* [in] */ __RPC__in_ecount_full(2) ULONG32 lines[ 2 ],
- /* [in] */ __RPC__in_ecount_full(2) ULONG32 columns[ 2 ],
- /* [out] */ __RPC__out BOOL *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetSequencePoints )(
- __RPC__in ISymUnmanagedMethod * This,
- /* [in] */ ULONG32 cPoints,
- /* [out] */ __RPC__out ULONG32 *pcPoints,
- /* [size_is][in] */ __RPC__in_ecount_full(cPoints) ULONG32 offsets[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(cPoints) ISymUnmanagedDocument *documents[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(cPoints) ULONG32 lines[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(cPoints) ULONG32 columns[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(cPoints) ULONG32 endLines[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(cPoints) ULONG32 endColumns[ ]);
-
- END_INTERFACE
- } ISymUnmanagedMethodVtbl;
-
- interface ISymUnmanagedMethod
- {
- CONST_VTBL struct ISymUnmanagedMethodVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedMethod_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedMethod_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedMethod_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedMethod_GetToken(This,pToken) \
- ( (This)->lpVtbl -> GetToken(This,pToken) )
-
-#define ISymUnmanagedMethod_GetSequencePointCount(This,pRetVal) \
- ( (This)->lpVtbl -> GetSequencePointCount(This,pRetVal) )
-
-#define ISymUnmanagedMethod_GetRootScope(This,pRetVal) \
- ( (This)->lpVtbl -> GetRootScope(This,pRetVal) )
-
-#define ISymUnmanagedMethod_GetScopeFromOffset(This,offset,pRetVal) \
- ( (This)->lpVtbl -> GetScopeFromOffset(This,offset,pRetVal) )
-
-#define ISymUnmanagedMethod_GetOffset(This,document,line,column,pRetVal) \
- ( (This)->lpVtbl -> GetOffset(This,document,line,column,pRetVal) )
-
-#define ISymUnmanagedMethod_GetRanges(This,document,line,column,cRanges,pcRanges,ranges) \
- ( (This)->lpVtbl -> GetRanges(This,document,line,column,cRanges,pcRanges,ranges) )
-
-#define ISymUnmanagedMethod_GetParameters(This,cParams,pcParams,params) \
- ( (This)->lpVtbl -> GetParameters(This,cParams,pcParams,params) )
-
-#define ISymUnmanagedMethod_GetNamespace(This,pRetVal) \
- ( (This)->lpVtbl -> GetNamespace(This,pRetVal) )
-
-#define ISymUnmanagedMethod_GetSourceStartEnd(This,docs,lines,columns,pRetVal) \
- ( (This)->lpVtbl -> GetSourceStartEnd(This,docs,lines,columns,pRetVal) )
-
-#define ISymUnmanagedMethod_GetSequencePoints(This,cPoints,pcPoints,offsets,documents,lines,columns,endLines,endColumns) \
- ( (This)->lpVtbl -> GetSequencePoints(This,cPoints,pcPoints,offsets,documents,lines,columns,endLines,endColumns) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedMethod_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymENCUnmanagedMethod_INTERFACE_DEFINED__
-#define __ISymENCUnmanagedMethod_INTERFACE_DEFINED__
-
-/* interface ISymENCUnmanagedMethod */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymENCUnmanagedMethod;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("85E891DA-A631-4c76-ACA2-A44A39C46B8C")
- ISymENCUnmanagedMethod : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE GetFileNameFromOffset(
- /* [in] */ ULONG32 dwOffset,
- /* [in] */ ULONG32 cchName,
- /* [out] */ __RPC__out ULONG32 *pcchName,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cchName, *pcchName) WCHAR szName[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetLineFromOffset(
- /* [in] */ ULONG32 dwOffset,
- /* [out] */ __RPC__out ULONG32 *pline,
- /* [out] */ __RPC__out ULONG32 *pcolumn,
- /* [out] */ __RPC__out ULONG32 *pendLine,
- /* [out] */ __RPC__out ULONG32 *pendColumn,
- /* [out] */ __RPC__out ULONG32 *pdwStartOffset) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetDocumentsForMethodCount(
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetDocumentsForMethod(
- /* [in] */ ULONG32 cDocs,
- /* [out] */ __RPC__out ULONG32 *pcDocs,
- /* [size_is][in] */ __RPC__in_ecount_full(cDocs) ISymUnmanagedDocument *documents[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetSourceExtentInDocument(
- /* [in] */ __RPC__in_opt ISymUnmanagedDocument *document,
- /* [out] */ __RPC__out ULONG32 *pstartLine,
- /* [out] */ __RPC__out ULONG32 *pendLine) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymENCUnmanagedMethodVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymENCUnmanagedMethod * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymENCUnmanagedMethod * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymENCUnmanagedMethod * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetFileNameFromOffset )(
- __RPC__in ISymENCUnmanagedMethod * This,
- /* [in] */ ULONG32 dwOffset,
- /* [in] */ ULONG32 cchName,
- /* [out] */ __RPC__out ULONG32 *pcchName,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cchName, *pcchName) WCHAR szName[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetLineFromOffset )(
- __RPC__in ISymENCUnmanagedMethod * This,
- /* [in] */ ULONG32 dwOffset,
- /* [out] */ __RPC__out ULONG32 *pline,
- /* [out] */ __RPC__out ULONG32 *pcolumn,
- /* [out] */ __RPC__out ULONG32 *pendLine,
- /* [out] */ __RPC__out ULONG32 *pendColumn,
- /* [out] */ __RPC__out ULONG32 *pdwStartOffset);
-
- HRESULT ( STDMETHODCALLTYPE *GetDocumentsForMethodCount )(
- __RPC__in ISymENCUnmanagedMethod * This,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetDocumentsForMethod )(
- __RPC__in ISymENCUnmanagedMethod * This,
- /* [in] */ ULONG32 cDocs,
- /* [out] */ __RPC__out ULONG32 *pcDocs,
- /* [size_is][in] */ __RPC__in_ecount_full(cDocs) ISymUnmanagedDocument *documents[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetSourceExtentInDocument )(
- __RPC__in ISymENCUnmanagedMethod * This,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocument *document,
- /* [out] */ __RPC__out ULONG32 *pstartLine,
- /* [out] */ __RPC__out ULONG32 *pendLine);
-
- END_INTERFACE
- } ISymENCUnmanagedMethodVtbl;
-
- interface ISymENCUnmanagedMethod
- {
- CONST_VTBL struct ISymENCUnmanagedMethodVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymENCUnmanagedMethod_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymENCUnmanagedMethod_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymENCUnmanagedMethod_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymENCUnmanagedMethod_GetFileNameFromOffset(This,dwOffset,cchName,pcchName,szName) \
- ( (This)->lpVtbl -> GetFileNameFromOffset(This,dwOffset,cchName,pcchName,szName) )
-
-#define ISymENCUnmanagedMethod_GetLineFromOffset(This,dwOffset,pline,pcolumn,pendLine,pendColumn,pdwStartOffset) \
- ( (This)->lpVtbl -> GetLineFromOffset(This,dwOffset,pline,pcolumn,pendLine,pendColumn,pdwStartOffset) )
-
-#define ISymENCUnmanagedMethod_GetDocumentsForMethodCount(This,pRetVal) \
- ( (This)->lpVtbl -> GetDocumentsForMethodCount(This,pRetVal) )
-
-#define ISymENCUnmanagedMethod_GetDocumentsForMethod(This,cDocs,pcDocs,documents) \
- ( (This)->lpVtbl -> GetDocumentsForMethod(This,cDocs,pcDocs,documents) )
-
-#define ISymENCUnmanagedMethod_GetSourceExtentInDocument(This,document,pstartLine,pendLine) \
- ( (This)->lpVtbl -> GetSourceExtentInDocument(This,document,pstartLine,pendLine) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymENCUnmanagedMethod_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedNamespace_INTERFACE_DEFINED__
-#define __ISymUnmanagedNamespace_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedNamespace */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymUnmanagedNamespace;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("0DFF7289-54F8-11d3-BD28-0000F80849BD")
- ISymUnmanagedNamespace : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE GetName(
- /* [in] */ ULONG32 cchName,
- /* [out] */ __RPC__out ULONG32 *pcchName,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cchName, *pcchName) WCHAR szName[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetNamespaces(
- /* [in] */ ULONG32 cNameSpaces,
- /* [out] */ __RPC__out ULONG32 *pcNameSpaces,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cNameSpaces, *pcNameSpaces) ISymUnmanagedNamespace *namespaces[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetVariables(
- /* [in] */ ULONG32 cVars,
- /* [out] */ __RPC__out ULONG32 *pcVars,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cVars, *pcVars) ISymUnmanagedVariable *pVars[ ]) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedNamespaceVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedNamespace * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedNamespace * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedNamespace * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetName )(
- __RPC__in ISymUnmanagedNamespace * This,
- /* [in] */ ULONG32 cchName,
- /* [out] */ __RPC__out ULONG32 *pcchName,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cchName, *pcchName) WCHAR szName[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetNamespaces )(
- __RPC__in ISymUnmanagedNamespace * This,
- /* [in] */ ULONG32 cNameSpaces,
- /* [out] */ __RPC__out ULONG32 *pcNameSpaces,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cNameSpaces, *pcNameSpaces) ISymUnmanagedNamespace *namespaces[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetVariables )(
- __RPC__in ISymUnmanagedNamespace * This,
- /* [in] */ ULONG32 cVars,
- /* [out] */ __RPC__out ULONG32 *pcVars,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cVars, *pcVars) ISymUnmanagedVariable *pVars[ ]);
-
- END_INTERFACE
- } ISymUnmanagedNamespaceVtbl;
-
- interface ISymUnmanagedNamespace
- {
- CONST_VTBL struct ISymUnmanagedNamespaceVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedNamespace_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedNamespace_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedNamespace_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedNamespace_GetName(This,cchName,pcchName,szName) \
- ( (This)->lpVtbl -> GetName(This,cchName,pcchName,szName) )
-
-#define ISymUnmanagedNamespace_GetNamespaces(This,cNameSpaces,pcNameSpaces,namespaces) \
- ( (This)->lpVtbl -> GetNamespaces(This,cNameSpaces,pcNameSpaces,namespaces) )
-
-#define ISymUnmanagedNamespace_GetVariables(This,cVars,pcVars,pVars) \
- ( (This)->lpVtbl -> GetVariables(This,cVars,pcVars,pVars) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedNamespace_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedReader_INTERFACE_DEFINED__
-#define __ISymUnmanagedReader_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedReader */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymUnmanagedReader;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("B4CE6286-2A6B-3712-A3B7-1EE1DAD467B5")
- ISymUnmanagedReader : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE GetDocument(
- /* [in] */ __RPC__in WCHAR *url,
- /* [in] */ GUID language,
- /* [in] */ GUID languageVendor,
- /* [in] */ GUID documentType,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedDocument **pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetDocuments(
- /* [in] */ ULONG32 cDocs,
- /* [out] */ __RPC__out ULONG32 *pcDocs,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cDocs, *pcDocs) ISymUnmanagedDocument *pDocs[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetUserEntryPoint(
- /* [retval][out] */ __RPC__out mdMethodDef *pToken) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetMethod(
- /* [in] */ mdMethodDef token,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedMethod **pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetMethodByVersion(
- /* [in] */ mdMethodDef token,
- /* [in] */ int version,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedMethod **pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetVariables(
- /* [in] */ mdToken parent,
- /* [in] */ ULONG32 cVars,
- /* [out] */ __RPC__out ULONG32 *pcVars,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cVars, *pcVars) ISymUnmanagedVariable *pVars[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetGlobalVariables(
- /* [in] */ ULONG32 cVars,
- /* [out] */ __RPC__out ULONG32 *pcVars,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cVars, *pcVars) ISymUnmanagedVariable *pVars[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetMethodFromDocumentPosition(
- /* [in] */ __RPC__in_opt ISymUnmanagedDocument *document,
- /* [in] */ ULONG32 line,
- /* [in] */ ULONG32 column,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedMethod **pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetSymAttribute(
- /* [in] */ mdToken parent,
- /* [in] */ __RPC__in WCHAR *name,
- /* [in] */ ULONG32 cBuffer,
- /* [out] */ __RPC__out ULONG32 *pcBuffer,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cBuffer, *pcBuffer) BYTE buffer[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetNamespaces(
- /* [in] */ ULONG32 cNameSpaces,
- /* [out] */ __RPC__out ULONG32 *pcNameSpaces,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cNameSpaces, *pcNameSpaces) ISymUnmanagedNamespace *namespaces[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE Initialize(
- /* [in] */ __RPC__in_opt IUnknown *importer,
- /* [in] */ __RPC__in const WCHAR *filename,
- /* [in] */ __RPC__in const WCHAR *searchPath,
- /* [in] */ __RPC__in_opt IStream *pIStream) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE UpdateSymbolStore(
- /* [in] */ __RPC__in const WCHAR *filename,
- /* [in] */ __RPC__in_opt IStream *pIStream) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE ReplaceSymbolStore(
- /* [in] */ __RPC__in const WCHAR *filename,
- /* [in] */ __RPC__in_opt IStream *pIStream) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetSymbolStoreFileName(
- /* [in] */ ULONG32 cchName,
- /* [out] */ __RPC__out ULONG32 *pcchName,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cchName, *pcchName) WCHAR szName[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetMethodsFromDocumentPosition(
- /* [in] */ __RPC__in_opt ISymUnmanagedDocument *document,
- /* [in] */ ULONG32 line,
- /* [in] */ ULONG32 column,
- /* [in] */ ULONG32 cMethod,
- /* [out] */ __RPC__out ULONG32 *pcMethod,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cMethod, *pcMethod) ISymUnmanagedMethod *pRetVal[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetDocumentVersion(
- /* [in] */ __RPC__in_opt ISymUnmanagedDocument *pDoc,
- /* [out] */ __RPC__out int *version,
- /* [out] */ __RPC__out BOOL *pbCurrent) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetMethodVersion(
- /* [in] */ __RPC__in_opt ISymUnmanagedMethod *pMethod,
- /* [out] */ __RPC__out int *version) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedReaderVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedReader * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedReader * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedReader * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetDocument )(
- __RPC__in ISymUnmanagedReader * This,
- /* [in] */ __RPC__in WCHAR *url,
- /* [in] */ GUID language,
- /* [in] */ GUID languageVendor,
- /* [in] */ GUID documentType,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedDocument **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetDocuments )(
- __RPC__in ISymUnmanagedReader * This,
- /* [in] */ ULONG32 cDocs,
- /* [out] */ __RPC__out ULONG32 *pcDocs,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cDocs, *pcDocs) ISymUnmanagedDocument *pDocs[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetUserEntryPoint )(
- __RPC__in ISymUnmanagedReader * This,
- /* [retval][out] */ __RPC__out mdMethodDef *pToken);
-
- HRESULT ( STDMETHODCALLTYPE *GetMethod )(
- __RPC__in ISymUnmanagedReader * This,
- /* [in] */ mdMethodDef token,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedMethod **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetMethodByVersion )(
- __RPC__in ISymUnmanagedReader * This,
- /* [in] */ mdMethodDef token,
- /* [in] */ int version,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedMethod **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetVariables )(
- __RPC__in ISymUnmanagedReader * This,
- /* [in] */ mdToken parent,
- /* [in] */ ULONG32 cVars,
- /* [out] */ __RPC__out ULONG32 *pcVars,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cVars, *pcVars) ISymUnmanagedVariable *pVars[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetGlobalVariables )(
- __RPC__in ISymUnmanagedReader * This,
- /* [in] */ ULONG32 cVars,
- /* [out] */ __RPC__out ULONG32 *pcVars,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cVars, *pcVars) ISymUnmanagedVariable *pVars[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetMethodFromDocumentPosition )(
- __RPC__in ISymUnmanagedReader * This,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocument *document,
- /* [in] */ ULONG32 line,
- /* [in] */ ULONG32 column,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedMethod **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetSymAttribute )(
- __RPC__in ISymUnmanagedReader * This,
- /* [in] */ mdToken parent,
- /* [in] */ __RPC__in WCHAR *name,
- /* [in] */ ULONG32 cBuffer,
- /* [out] */ __RPC__out ULONG32 *pcBuffer,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cBuffer, *pcBuffer) BYTE buffer[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetNamespaces )(
- __RPC__in ISymUnmanagedReader * This,
- /* [in] */ ULONG32 cNameSpaces,
- /* [out] */ __RPC__out ULONG32 *pcNameSpaces,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cNameSpaces, *pcNameSpaces) ISymUnmanagedNamespace *namespaces[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *Initialize )(
- __RPC__in ISymUnmanagedReader * This,
- /* [in] */ __RPC__in_opt IUnknown *importer,
- /* [in] */ __RPC__in const WCHAR *filename,
- /* [in] */ __RPC__in const WCHAR *searchPath,
- /* [in] */ __RPC__in_opt IStream *pIStream);
-
- HRESULT ( STDMETHODCALLTYPE *UpdateSymbolStore )(
- __RPC__in ISymUnmanagedReader * This,
- /* [in] */ __RPC__in const WCHAR *filename,
- /* [in] */ __RPC__in_opt IStream *pIStream);
-
- HRESULT ( STDMETHODCALLTYPE *ReplaceSymbolStore )(
- __RPC__in ISymUnmanagedReader * This,
- /* [in] */ __RPC__in const WCHAR *filename,
- /* [in] */ __RPC__in_opt IStream *pIStream);
-
- HRESULT ( STDMETHODCALLTYPE *GetSymbolStoreFileName )(
- __RPC__in ISymUnmanagedReader * This,
- /* [in] */ ULONG32 cchName,
- /* [out] */ __RPC__out ULONG32 *pcchName,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cchName, *pcchName) WCHAR szName[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetMethodsFromDocumentPosition )(
- __RPC__in ISymUnmanagedReader * This,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocument *document,
- /* [in] */ ULONG32 line,
- /* [in] */ ULONG32 column,
- /* [in] */ ULONG32 cMethod,
- /* [out] */ __RPC__out ULONG32 *pcMethod,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cMethod, *pcMethod) ISymUnmanagedMethod *pRetVal[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetDocumentVersion )(
- __RPC__in ISymUnmanagedReader * This,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocument *pDoc,
- /* [out] */ __RPC__out int *version,
- /* [out] */ __RPC__out BOOL *pbCurrent);
-
- HRESULT ( STDMETHODCALLTYPE *GetMethodVersion )(
- __RPC__in ISymUnmanagedReader * This,
- /* [in] */ __RPC__in_opt ISymUnmanagedMethod *pMethod,
- /* [out] */ __RPC__out int *version);
-
- END_INTERFACE
- } ISymUnmanagedReaderVtbl;
-
- interface ISymUnmanagedReader
- {
- CONST_VTBL struct ISymUnmanagedReaderVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedReader_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedReader_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedReader_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedReader_GetDocument(This,url,language,languageVendor,documentType,pRetVal) \
- ( (This)->lpVtbl -> GetDocument(This,url,language,languageVendor,documentType,pRetVal) )
-
-#define ISymUnmanagedReader_GetDocuments(This,cDocs,pcDocs,pDocs) \
- ( (This)->lpVtbl -> GetDocuments(This,cDocs,pcDocs,pDocs) )
-
-#define ISymUnmanagedReader_GetUserEntryPoint(This,pToken) \
- ( (This)->lpVtbl -> GetUserEntryPoint(This,pToken) )
-
-#define ISymUnmanagedReader_GetMethod(This,token,pRetVal) \
- ( (This)->lpVtbl -> GetMethod(This,token,pRetVal) )
-
-#define ISymUnmanagedReader_GetMethodByVersion(This,token,version,pRetVal) \
- ( (This)->lpVtbl -> GetMethodByVersion(This,token,version,pRetVal) )
-
-#define ISymUnmanagedReader_GetVariables(This,parent,cVars,pcVars,pVars) \
- ( (This)->lpVtbl -> GetVariables(This,parent,cVars,pcVars,pVars) )
-
-#define ISymUnmanagedReader_GetGlobalVariables(This,cVars,pcVars,pVars) \
- ( (This)->lpVtbl -> GetGlobalVariables(This,cVars,pcVars,pVars) )
-
-#define ISymUnmanagedReader_GetMethodFromDocumentPosition(This,document,line,column,pRetVal) \
- ( (This)->lpVtbl -> GetMethodFromDocumentPosition(This,document,line,column,pRetVal) )
-
-#define ISymUnmanagedReader_GetSymAttribute(This,parent,name,cBuffer,pcBuffer,buffer) \
- ( (This)->lpVtbl -> GetSymAttribute(This,parent,name,cBuffer,pcBuffer,buffer) )
-
-#define ISymUnmanagedReader_GetNamespaces(This,cNameSpaces,pcNameSpaces,namespaces) \
- ( (This)->lpVtbl -> GetNamespaces(This,cNameSpaces,pcNameSpaces,namespaces) )
-
-#define ISymUnmanagedReader_Initialize(This,importer,filename,searchPath,pIStream) \
- ( (This)->lpVtbl -> Initialize(This,importer,filename,searchPath,pIStream) )
-
-#define ISymUnmanagedReader_UpdateSymbolStore(This,filename,pIStream) \
- ( (This)->lpVtbl -> UpdateSymbolStore(This,filename,pIStream) )
-
-#define ISymUnmanagedReader_ReplaceSymbolStore(This,filename,pIStream) \
- ( (This)->lpVtbl -> ReplaceSymbolStore(This,filename,pIStream) )
-
-#define ISymUnmanagedReader_GetSymbolStoreFileName(This,cchName,pcchName,szName) \
- ( (This)->lpVtbl -> GetSymbolStoreFileName(This,cchName,pcchName,szName) )
-
-#define ISymUnmanagedReader_GetMethodsFromDocumentPosition(This,document,line,column,cMethod,pcMethod,pRetVal) \
- ( (This)->lpVtbl -> GetMethodsFromDocumentPosition(This,document,line,column,cMethod,pcMethod,pRetVal) )
-
-#define ISymUnmanagedReader_GetDocumentVersion(This,pDoc,version,pbCurrent) \
- ( (This)->lpVtbl -> GetDocumentVersion(This,pDoc,version,pbCurrent) )
-
-#define ISymUnmanagedReader_GetMethodVersion(This,pMethod,version) \
- ( (This)->lpVtbl -> GetMethodVersion(This,pMethod,version) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedReader_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedSourceServerModule_INTERFACE_DEFINED__
-#define __ISymUnmanagedSourceServerModule_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedSourceServerModule */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymUnmanagedSourceServerModule;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("997DD0CC-A76F-4c82-8D79-EA87559D27AD")
- ISymUnmanagedSourceServerModule : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE GetSourceServerData(
- /* [out] */ __RPC__out ULONG *pDataByteCount,
- /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pDataByteCount) BYTE **ppData) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedSourceServerModuleVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedSourceServerModule * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedSourceServerModule * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedSourceServerModule * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetSourceServerData )(
- __RPC__in ISymUnmanagedSourceServerModule * This,
- /* [out] */ __RPC__out ULONG *pDataByteCount,
- /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pDataByteCount) BYTE **ppData);
-
- END_INTERFACE
- } ISymUnmanagedSourceServerModuleVtbl;
-
- interface ISymUnmanagedSourceServerModule
- {
- CONST_VTBL struct ISymUnmanagedSourceServerModuleVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedSourceServerModule_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedSourceServerModule_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedSourceServerModule_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedSourceServerModule_GetSourceServerData(This,pDataByteCount,ppData) \
- ( (This)->lpVtbl -> GetSourceServerData(This,pDataByteCount,ppData) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedSourceServerModule_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedENCUpdate_INTERFACE_DEFINED__
-#define __ISymUnmanagedENCUpdate_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedENCUpdate */
-/* [unique][uuid][object] */
-
-typedef struct _SYMLINEDELTA
- {
- mdMethodDef mdMethod;
- INT32 delta;
- } SYMLINEDELTA;
-
-
-EXTERN_C const IID IID_ISymUnmanagedENCUpdate;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("E502D2DD-8671-4338-8F2A-FC08229628C4")
- ISymUnmanagedENCUpdate : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE UpdateSymbolStore2(
- /* [in] */ __RPC__in_opt IStream *pIStream,
- /* [in] */ __RPC__in SYMLINEDELTA *pDeltaLines,
- /* [in] */ ULONG cDeltaLines) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetLocalVariableCount(
- /* [in] */ mdMethodDef mdMethodToken,
- /* [out] */ __RPC__out ULONG *pcLocals) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetLocalVariables(
- /* [in] */ mdMethodDef mdMethodToken,
- /* [in] */ ULONG cLocals,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cLocals, *pceltFetched) ISymUnmanagedVariable *rgLocals[ ],
- /* [out] */ __RPC__out ULONG *pceltFetched) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE InitializeForEnc( void) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE UpdateMethodLines(
- /* [in] */ mdMethodDef mdMethodToken,
- /* [size_is][in] */ __RPC__in_ecount_full(cDeltas) INT32 *pDeltas,
- /* [in] */ ULONG cDeltas) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedENCUpdateVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedENCUpdate * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedENCUpdate * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedENCUpdate * This);
-
- HRESULT ( STDMETHODCALLTYPE *UpdateSymbolStore2 )(
- __RPC__in ISymUnmanagedENCUpdate * This,
- /* [in] */ __RPC__in_opt IStream *pIStream,
- /* [in] */ __RPC__in SYMLINEDELTA *pDeltaLines,
- /* [in] */ ULONG cDeltaLines);
-
- HRESULT ( STDMETHODCALLTYPE *GetLocalVariableCount )(
- __RPC__in ISymUnmanagedENCUpdate * This,
- /* [in] */ mdMethodDef mdMethodToken,
- /* [out] */ __RPC__out ULONG *pcLocals);
-
- HRESULT ( STDMETHODCALLTYPE *GetLocalVariables )(
- __RPC__in ISymUnmanagedENCUpdate * This,
- /* [in] */ mdMethodDef mdMethodToken,
- /* [in] */ ULONG cLocals,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cLocals, *pceltFetched) ISymUnmanagedVariable *rgLocals[ ],
- /* [out] */ __RPC__out ULONG *pceltFetched);
-
- HRESULT ( STDMETHODCALLTYPE *InitializeForEnc )(
- __RPC__in ISymUnmanagedENCUpdate * This);
-
- HRESULT ( STDMETHODCALLTYPE *UpdateMethodLines )(
- __RPC__in ISymUnmanagedENCUpdate * This,
- /* [in] */ mdMethodDef mdMethodToken,
- /* [size_is][in] */ __RPC__in_ecount_full(cDeltas) INT32 *pDeltas,
- /* [in] */ ULONG cDeltas);
-
- END_INTERFACE
- } ISymUnmanagedENCUpdateVtbl;
-
- interface ISymUnmanagedENCUpdate
- {
- CONST_VTBL struct ISymUnmanagedENCUpdateVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedENCUpdate_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedENCUpdate_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedENCUpdate_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedENCUpdate_UpdateSymbolStore2(This,pIStream,pDeltaLines,cDeltaLines) \
- ( (This)->lpVtbl -> UpdateSymbolStore2(This,pIStream,pDeltaLines,cDeltaLines) )
-
-#define ISymUnmanagedENCUpdate_GetLocalVariableCount(This,mdMethodToken,pcLocals) \
- ( (This)->lpVtbl -> GetLocalVariableCount(This,mdMethodToken,pcLocals) )
-
-#define ISymUnmanagedENCUpdate_GetLocalVariables(This,mdMethodToken,cLocals,rgLocals,pceltFetched) \
- ( (This)->lpVtbl -> GetLocalVariables(This,mdMethodToken,cLocals,rgLocals,pceltFetched) )
-
-#define ISymUnmanagedENCUpdate_InitializeForEnc(This) \
- ( (This)->lpVtbl -> InitializeForEnc(This) )
-
-#define ISymUnmanagedENCUpdate_UpdateMethodLines(This,mdMethodToken,pDeltas,cDeltas) \
- ( (This)->lpVtbl -> UpdateMethodLines(This,mdMethodToken,pDeltas,cDeltas) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedENCUpdate_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedReaderSymbolSearchInfo_INTERFACE_DEFINED__
-#define __ISymUnmanagedReaderSymbolSearchInfo_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedReaderSymbolSearchInfo */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymUnmanagedReaderSymbolSearchInfo;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("20D9645D-03CD-4e34-9C11-9848A5B084F1")
- ISymUnmanagedReaderSymbolSearchInfo : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE GetSymbolSearchInfoCount(
- /* [out] */ __RPC__out ULONG32 *pcSearchInfo) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetSymbolSearchInfo(
- /* [in] */ ULONG32 cSearchInfo,
- /* [out] */ __RPC__out ULONG32 *pcSearchInfo,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cSearchInfo, *pcSearchInfo) ISymUnmanagedSymbolSearchInfo **rgpSearchInfo) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedReaderSymbolSearchInfoVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedReaderSymbolSearchInfo * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedReaderSymbolSearchInfo * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedReaderSymbolSearchInfo * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetSymbolSearchInfoCount )(
- __RPC__in ISymUnmanagedReaderSymbolSearchInfo * This,
- /* [out] */ __RPC__out ULONG32 *pcSearchInfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetSymbolSearchInfo )(
- __RPC__in ISymUnmanagedReaderSymbolSearchInfo * This,
- /* [in] */ ULONG32 cSearchInfo,
- /* [out] */ __RPC__out ULONG32 *pcSearchInfo,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cSearchInfo, *pcSearchInfo) ISymUnmanagedSymbolSearchInfo **rgpSearchInfo);
-
- END_INTERFACE
- } ISymUnmanagedReaderSymbolSearchInfoVtbl;
-
- interface ISymUnmanagedReaderSymbolSearchInfo
- {
- CONST_VTBL struct ISymUnmanagedReaderSymbolSearchInfoVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedReaderSymbolSearchInfo_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedReaderSymbolSearchInfo_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedReaderSymbolSearchInfo_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedReaderSymbolSearchInfo_GetSymbolSearchInfoCount(This,pcSearchInfo) \
- ( (This)->lpVtbl -> GetSymbolSearchInfoCount(This,pcSearchInfo) )
-
-#define ISymUnmanagedReaderSymbolSearchInfo_GetSymbolSearchInfo(This,cSearchInfo,pcSearchInfo,rgpSearchInfo) \
- ( (This)->lpVtbl -> GetSymbolSearchInfo(This,cSearchInfo,pcSearchInfo,rgpSearchInfo) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedReaderSymbolSearchInfo_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedScope_INTERFACE_DEFINED__
-#define __ISymUnmanagedScope_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedScope */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymUnmanagedScope;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("68005D0F-B8E0-3B01-84D5-A11A94154942")
- ISymUnmanagedScope : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE GetMethod(
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedMethod **pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetParent(
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedScope **pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetChildren(
- /* [in] */ ULONG32 cChildren,
- /* [out] */ __RPC__out ULONG32 *pcChildren,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cChildren, *pcChildren) ISymUnmanagedScope *children[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetStartOffset(
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetEndOffset(
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetLocalCount(
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetLocals(
- /* [in] */ ULONG32 cLocals,
- /* [out] */ __RPC__out ULONG32 *pcLocals,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cLocals, *pcLocals) ISymUnmanagedVariable *locals[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetNamespaces(
- /* [in] */ ULONG32 cNameSpaces,
- /* [out] */ __RPC__out ULONG32 *pcNameSpaces,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cNameSpaces, *pcNameSpaces) ISymUnmanagedNamespace *namespaces[ ]) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedScopeVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedScope * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedScope * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedScope * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetMethod )(
- __RPC__in ISymUnmanagedScope * This,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedMethod **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetParent )(
- __RPC__in ISymUnmanagedScope * This,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedScope **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetChildren )(
- __RPC__in ISymUnmanagedScope * This,
- /* [in] */ ULONG32 cChildren,
- /* [out] */ __RPC__out ULONG32 *pcChildren,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cChildren, *pcChildren) ISymUnmanagedScope *children[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetStartOffset )(
- __RPC__in ISymUnmanagedScope * This,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetEndOffset )(
- __RPC__in ISymUnmanagedScope * This,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetLocalCount )(
- __RPC__in ISymUnmanagedScope * This,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetLocals )(
- __RPC__in ISymUnmanagedScope * This,
- /* [in] */ ULONG32 cLocals,
- /* [out] */ __RPC__out ULONG32 *pcLocals,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cLocals, *pcLocals) ISymUnmanagedVariable *locals[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetNamespaces )(
- __RPC__in ISymUnmanagedScope * This,
- /* [in] */ ULONG32 cNameSpaces,
- /* [out] */ __RPC__out ULONG32 *pcNameSpaces,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cNameSpaces, *pcNameSpaces) ISymUnmanagedNamespace *namespaces[ ]);
-
- END_INTERFACE
- } ISymUnmanagedScopeVtbl;
-
- interface ISymUnmanagedScope
- {
- CONST_VTBL struct ISymUnmanagedScopeVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedScope_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedScope_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedScope_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedScope_GetMethod(This,pRetVal) \
- ( (This)->lpVtbl -> GetMethod(This,pRetVal) )
-
-#define ISymUnmanagedScope_GetParent(This,pRetVal) \
- ( (This)->lpVtbl -> GetParent(This,pRetVal) )
-
-#define ISymUnmanagedScope_GetChildren(This,cChildren,pcChildren,children) \
- ( (This)->lpVtbl -> GetChildren(This,cChildren,pcChildren,children) )
-
-#define ISymUnmanagedScope_GetStartOffset(This,pRetVal) \
- ( (This)->lpVtbl -> GetStartOffset(This,pRetVal) )
-
-#define ISymUnmanagedScope_GetEndOffset(This,pRetVal) \
- ( (This)->lpVtbl -> GetEndOffset(This,pRetVal) )
-
-#define ISymUnmanagedScope_GetLocalCount(This,pRetVal) \
- ( (This)->lpVtbl -> GetLocalCount(This,pRetVal) )
-
-#define ISymUnmanagedScope_GetLocals(This,cLocals,pcLocals,locals) \
- ( (This)->lpVtbl -> GetLocals(This,cLocals,pcLocals,locals) )
-
-#define ISymUnmanagedScope_GetNamespaces(This,cNameSpaces,pcNameSpaces,namespaces) \
- ( (This)->lpVtbl -> GetNamespaces(This,cNameSpaces,pcNameSpaces,namespaces) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedScope_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedConstant_INTERFACE_DEFINED__
-#define __ISymUnmanagedConstant_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedConstant */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymUnmanagedConstant;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("48B25ED8-5BAD-41bc-9CEE-CD62FABC74E9")
- ISymUnmanagedConstant : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE GetName(
- /* [in] */ ULONG32 cchName,
- /* [out] */ __RPC__out ULONG32 *pcchName,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cchName, *pcchName) WCHAR szName[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetValue(
- __RPC__in VARIANT *pValue) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetSignature(
- /* [in] */ ULONG32 cSig,
- /* [out] */ __RPC__out ULONG32 *pcSig,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cSig, *pcSig) BYTE sig[ ]) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedConstantVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedConstant * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedConstant * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedConstant * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetName )(
- __RPC__in ISymUnmanagedConstant * This,
- /* [in] */ ULONG32 cchName,
- /* [out] */ __RPC__out ULONG32 *pcchName,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cchName, *pcchName) WCHAR szName[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetValue )(
- __RPC__in ISymUnmanagedConstant * This,
- __RPC__in VARIANT *pValue);
-
- HRESULT ( STDMETHODCALLTYPE *GetSignature )(
- __RPC__in ISymUnmanagedConstant * This,
- /* [in] */ ULONG32 cSig,
- /* [out] */ __RPC__out ULONG32 *pcSig,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cSig, *pcSig) BYTE sig[ ]);
-
- END_INTERFACE
- } ISymUnmanagedConstantVtbl;
-
- interface ISymUnmanagedConstant
- {
- CONST_VTBL struct ISymUnmanagedConstantVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedConstant_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedConstant_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedConstant_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedConstant_GetName(This,cchName,pcchName,szName) \
- ( (This)->lpVtbl -> GetName(This,cchName,pcchName,szName) )
-
-#define ISymUnmanagedConstant_GetValue(This,pValue) \
- ( (This)->lpVtbl -> GetValue(This,pValue) )
-
-#define ISymUnmanagedConstant_GetSignature(This,cSig,pcSig,sig) \
- ( (This)->lpVtbl -> GetSignature(This,cSig,pcSig,sig) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedConstant_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedScope2_INTERFACE_DEFINED__
-#define __ISymUnmanagedScope2_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedScope2 */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymUnmanagedScope2;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("AE932FBA-3FD8-4dba-8232-30A2309B02DB")
- ISymUnmanagedScope2 : public ISymUnmanagedScope
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE GetConstantCount(
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetConstants(
- /* [in] */ ULONG32 cConstants,
- /* [out] */ __RPC__out ULONG32 *pcConstants,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cConstants, *pcConstants) ISymUnmanagedConstant *constants[ ]) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedScope2Vtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedScope2 * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedScope2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedScope2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetMethod )(
- __RPC__in ISymUnmanagedScope2 * This,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedMethod **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetParent )(
- __RPC__in ISymUnmanagedScope2 * This,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedScope **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetChildren )(
- __RPC__in ISymUnmanagedScope2 * This,
- /* [in] */ ULONG32 cChildren,
- /* [out] */ __RPC__out ULONG32 *pcChildren,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cChildren, *pcChildren) ISymUnmanagedScope *children[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetStartOffset )(
- __RPC__in ISymUnmanagedScope2 * This,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetEndOffset )(
- __RPC__in ISymUnmanagedScope2 * This,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetLocalCount )(
- __RPC__in ISymUnmanagedScope2 * This,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetLocals )(
- __RPC__in ISymUnmanagedScope2 * This,
- /* [in] */ ULONG32 cLocals,
- /* [out] */ __RPC__out ULONG32 *pcLocals,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cLocals, *pcLocals) ISymUnmanagedVariable *locals[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetNamespaces )(
- __RPC__in ISymUnmanagedScope2 * This,
- /* [in] */ ULONG32 cNameSpaces,
- /* [out] */ __RPC__out ULONG32 *pcNameSpaces,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cNameSpaces, *pcNameSpaces) ISymUnmanagedNamespace *namespaces[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetConstantCount )(
- __RPC__in ISymUnmanagedScope2 * This,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetConstants )(
- __RPC__in ISymUnmanagedScope2 * This,
- /* [in] */ ULONG32 cConstants,
- /* [out] */ __RPC__out ULONG32 *pcConstants,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cConstants, *pcConstants) ISymUnmanagedConstant *constants[ ]);
-
- END_INTERFACE
- } ISymUnmanagedScope2Vtbl;
-
- interface ISymUnmanagedScope2
- {
- CONST_VTBL struct ISymUnmanagedScope2Vtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedScope2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedScope2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedScope2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedScope2_GetMethod(This,pRetVal) \
- ( (This)->lpVtbl -> GetMethod(This,pRetVal) )
-
-#define ISymUnmanagedScope2_GetParent(This,pRetVal) \
- ( (This)->lpVtbl -> GetParent(This,pRetVal) )
-
-#define ISymUnmanagedScope2_GetChildren(This,cChildren,pcChildren,children) \
- ( (This)->lpVtbl -> GetChildren(This,cChildren,pcChildren,children) )
-
-#define ISymUnmanagedScope2_GetStartOffset(This,pRetVal) \
- ( (This)->lpVtbl -> GetStartOffset(This,pRetVal) )
-
-#define ISymUnmanagedScope2_GetEndOffset(This,pRetVal) \
- ( (This)->lpVtbl -> GetEndOffset(This,pRetVal) )
-
-#define ISymUnmanagedScope2_GetLocalCount(This,pRetVal) \
- ( (This)->lpVtbl -> GetLocalCount(This,pRetVal) )
-
-#define ISymUnmanagedScope2_GetLocals(This,cLocals,pcLocals,locals) \
- ( (This)->lpVtbl -> GetLocals(This,cLocals,pcLocals,locals) )
-
-#define ISymUnmanagedScope2_GetNamespaces(This,cNameSpaces,pcNameSpaces,namespaces) \
- ( (This)->lpVtbl -> GetNamespaces(This,cNameSpaces,pcNameSpaces,namespaces) )
-
-
-#define ISymUnmanagedScope2_GetConstantCount(This,pRetVal) \
- ( (This)->lpVtbl -> GetConstantCount(This,pRetVal) )
-
-#define ISymUnmanagedScope2_GetConstants(This,cConstants,pcConstants,constants) \
- ( (This)->lpVtbl -> GetConstants(This,cConstants,pcConstants,constants) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedScope2_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedVariable_INTERFACE_DEFINED__
-#define __ISymUnmanagedVariable_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedVariable */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymUnmanagedVariable;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("9F60EEBE-2D9A-3F7C-BF58-80BC991C60BB")
- ISymUnmanagedVariable : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE GetName(
- /* [in] */ ULONG32 cchName,
- /* [out] */ __RPC__out ULONG32 *pcchName,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cchName, *pcchName) WCHAR szName[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetAttributes(
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetSignature(
- /* [in] */ ULONG32 cSig,
- /* [out] */ __RPC__out ULONG32 *pcSig,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cSig, *pcSig) BYTE sig[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetAddressKind(
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetAddressField1(
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetAddressField2(
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetAddressField3(
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetStartOffset(
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetEndOffset(
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedVariableVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedVariable * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedVariable * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedVariable * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetName )(
- __RPC__in ISymUnmanagedVariable * This,
- /* [in] */ ULONG32 cchName,
- /* [out] */ __RPC__out ULONG32 *pcchName,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cchName, *pcchName) WCHAR szName[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetAttributes )(
- __RPC__in ISymUnmanagedVariable * This,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetSignature )(
- __RPC__in ISymUnmanagedVariable * This,
- /* [in] */ ULONG32 cSig,
- /* [out] */ __RPC__out ULONG32 *pcSig,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cSig, *pcSig) BYTE sig[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetAddressKind )(
- __RPC__in ISymUnmanagedVariable * This,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetAddressField1 )(
- __RPC__in ISymUnmanagedVariable * This,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetAddressField2 )(
- __RPC__in ISymUnmanagedVariable * This,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetAddressField3 )(
- __RPC__in ISymUnmanagedVariable * This,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetStartOffset )(
- __RPC__in ISymUnmanagedVariable * This,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetEndOffset )(
- __RPC__in ISymUnmanagedVariable * This,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- END_INTERFACE
- } ISymUnmanagedVariableVtbl;
-
- interface ISymUnmanagedVariable
- {
- CONST_VTBL struct ISymUnmanagedVariableVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedVariable_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedVariable_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedVariable_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedVariable_GetName(This,cchName,pcchName,szName) \
- ( (This)->lpVtbl -> GetName(This,cchName,pcchName,szName) )
-
-#define ISymUnmanagedVariable_GetAttributes(This,pRetVal) \
- ( (This)->lpVtbl -> GetAttributes(This,pRetVal) )
-
-#define ISymUnmanagedVariable_GetSignature(This,cSig,pcSig,sig) \
- ( (This)->lpVtbl -> GetSignature(This,cSig,pcSig,sig) )
-
-#define ISymUnmanagedVariable_GetAddressKind(This,pRetVal) \
- ( (This)->lpVtbl -> GetAddressKind(This,pRetVal) )
-
-#define ISymUnmanagedVariable_GetAddressField1(This,pRetVal) \
- ( (This)->lpVtbl -> GetAddressField1(This,pRetVal) )
-
-#define ISymUnmanagedVariable_GetAddressField2(This,pRetVal) \
- ( (This)->lpVtbl -> GetAddressField2(This,pRetVal) )
-
-#define ISymUnmanagedVariable_GetAddressField3(This,pRetVal) \
- ( (This)->lpVtbl -> GetAddressField3(This,pRetVal) )
-
-#define ISymUnmanagedVariable_GetStartOffset(This,pRetVal) \
- ( (This)->lpVtbl -> GetStartOffset(This,pRetVal) )
-
-#define ISymUnmanagedVariable_GetEndOffset(This,pRetVal) \
- ( (This)->lpVtbl -> GetEndOffset(This,pRetVal) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedVariable_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedSymbolSearchInfo_INTERFACE_DEFINED__
-#define __ISymUnmanagedSymbolSearchInfo_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedSymbolSearchInfo */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymUnmanagedSymbolSearchInfo;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("F8B3534A-A46B-4980-B520-BEC4ACEABA8F")
- ISymUnmanagedSymbolSearchInfo : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE GetSearchPathLength(
- /* [out] */ __RPC__out ULONG32 *pcchPath) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetSearchPath(
- /* [in] */ ULONG32 cchPath,
- /* [out] */ __RPC__out ULONG32 *pcchPath,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cchPath, *pcchPath) WCHAR szPath[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetHRESULT(
- /* [out] */ __RPC__out HRESULT *phr) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedSymbolSearchInfoVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedSymbolSearchInfo * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedSymbolSearchInfo * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedSymbolSearchInfo * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetSearchPathLength )(
- __RPC__in ISymUnmanagedSymbolSearchInfo * This,
- /* [out] */ __RPC__out ULONG32 *pcchPath);
-
- HRESULT ( STDMETHODCALLTYPE *GetSearchPath )(
- __RPC__in ISymUnmanagedSymbolSearchInfo * This,
- /* [in] */ ULONG32 cchPath,
- /* [out] */ __RPC__out ULONG32 *pcchPath,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cchPath, *pcchPath) WCHAR szPath[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetHRESULT )(
- __RPC__in ISymUnmanagedSymbolSearchInfo * This,
- /* [out] */ __RPC__out HRESULT *phr);
-
- END_INTERFACE
- } ISymUnmanagedSymbolSearchInfoVtbl;
-
- interface ISymUnmanagedSymbolSearchInfo
- {
- CONST_VTBL struct ISymUnmanagedSymbolSearchInfoVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedSymbolSearchInfo_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedSymbolSearchInfo_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedSymbolSearchInfo_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedSymbolSearchInfo_GetSearchPathLength(This,pcchPath) \
- ( (This)->lpVtbl -> GetSearchPathLength(This,pcchPath) )
-
-#define ISymUnmanagedSymbolSearchInfo_GetSearchPath(This,cchPath,pcchPath,szPath) \
- ( (This)->lpVtbl -> GetSearchPath(This,cchPath,pcchPath,szPath) )
-
-#define ISymUnmanagedSymbolSearchInfo_GetHRESULT(This,phr) \
- ( (This)->lpVtbl -> GetHRESULT(This,phr) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedSymbolSearchInfo_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedWriter_INTERFACE_DEFINED__
-#define __ISymUnmanagedWriter_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedWriter */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymUnmanagedWriter;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("ED14AA72-78E2-4884-84E2-334293AE5214")
- ISymUnmanagedWriter : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE DefineDocument(
- /* [in] */ __RPC__in const WCHAR *url,
- /* [in] */ __RPC__in const GUID *language,
- /* [in] */ __RPC__in const GUID *languageVendor,
- /* [in] */ __RPC__in const GUID *documentType,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedDocumentWriter **pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetUserEntryPoint(
- /* [in] */ mdMethodDef entryMethod) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE OpenMethod(
- /* [in] */ mdMethodDef method) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CloseMethod( void) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE OpenScope(
- /* [in] */ ULONG32 startOffset,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CloseScope(
- /* [in] */ ULONG32 endOffset) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetScopeRange(
- /* [in] */ ULONG32 scopeID,
- /* [in] */ ULONG32 startOffset,
- /* [in] */ ULONG32 endOffset) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE DefineLocalVariable(
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ ULONG32 cSig,
- /* [size_is][in] */ __RPC__in_ecount_full(cSig) unsigned char signature[ ],
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3,
- /* [in] */ ULONG32 startOffset,
- /* [in] */ ULONG32 endOffset) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE DefineParameter(
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ ULONG32 sequence,
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE DefineField(
- /* [in] */ mdTypeDef parent,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ ULONG32 cSig,
- /* [size_is][in] */ __RPC__in_ecount_full(cSig) unsigned char signature[ ],
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE DefineGlobalVariable(
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ ULONG32 cSig,
- /* [size_is][in] */ __RPC__in_ecount_full(cSig) unsigned char signature[ ],
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetSymAttribute(
- /* [in] */ mdToken parent,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 cData,
- /* [size_is][in] */ __RPC__in_ecount_full(cData) unsigned char data[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE OpenNamespace(
- /* [in] */ __RPC__in const WCHAR *name) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CloseNamespace( void) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE UsingNamespace(
- /* [in] */ __RPC__in const WCHAR *fullName) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetMethodSourceRange(
- /* [in] */ __RPC__in_opt ISymUnmanagedDocumentWriter *startDoc,
- /* [in] */ ULONG32 startLine,
- /* [in] */ ULONG32 startColumn,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocumentWriter *endDoc,
- /* [in] */ ULONG32 endLine,
- /* [in] */ ULONG32 endColumn) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE Initialize(
- /* [in] */ __RPC__in_opt IUnknown *emitter,
- /* [in] */ __RPC__in const WCHAR *filename,
- /* [in] */ __RPC__in_opt IStream *pIStream,
- /* [in] */ BOOL fFullBuild) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetDebugInfo(
- /* [out][in] */ __RPC__inout IMAGE_DEBUG_DIRECTORY *pIDD,
- /* [in] */ DWORD cData,
- /* [out] */ __RPC__out DWORD *pcData,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cData, *pcData) BYTE data[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE DefineSequencePoints(
- /* [in] */ __RPC__in_opt ISymUnmanagedDocumentWriter *document,
- /* [in] */ ULONG32 spCount,
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 offsets[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 lines[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 columns[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 endLines[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 endColumns[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE RemapToken(
- /* [in] */ mdToken oldToken,
- /* [in] */ mdToken newToken) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE Initialize2(
- /* [in] */ __RPC__in_opt IUnknown *emitter,
- /* [in] */ __RPC__in const WCHAR *tempfilename,
- /* [in] */ __RPC__in_opt IStream *pIStream,
- /* [in] */ BOOL fFullBuild,
- /* [in] */ __RPC__in const WCHAR *finalfilename) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE DefineConstant(
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ VARIANT value,
- /* [in] */ ULONG32 cSig,
- /* [size_is][in] */ __RPC__in_ecount_full(cSig) unsigned char signature[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE Abort( void) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedWriterVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedWriter * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedWriter * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedWriter * This);
-
- HRESULT ( STDMETHODCALLTYPE *DefineDocument )(
- __RPC__in ISymUnmanagedWriter * This,
- /* [in] */ __RPC__in const WCHAR *url,
- /* [in] */ __RPC__in const GUID *language,
- /* [in] */ __RPC__in const GUID *languageVendor,
- /* [in] */ __RPC__in const GUID *documentType,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedDocumentWriter **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *SetUserEntryPoint )(
- __RPC__in ISymUnmanagedWriter * This,
- /* [in] */ mdMethodDef entryMethod);
-
- HRESULT ( STDMETHODCALLTYPE *OpenMethod )(
- __RPC__in ISymUnmanagedWriter * This,
- /* [in] */ mdMethodDef method);
-
- HRESULT ( STDMETHODCALLTYPE *CloseMethod )(
- __RPC__in ISymUnmanagedWriter * This);
-
- HRESULT ( STDMETHODCALLTYPE *OpenScope )(
- __RPC__in ISymUnmanagedWriter * This,
- /* [in] */ ULONG32 startOffset,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *CloseScope )(
- __RPC__in ISymUnmanagedWriter * This,
- /* [in] */ ULONG32 endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *SetScopeRange )(
- __RPC__in ISymUnmanagedWriter * This,
- /* [in] */ ULONG32 scopeID,
- /* [in] */ ULONG32 startOffset,
- /* [in] */ ULONG32 endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *DefineLocalVariable )(
- __RPC__in ISymUnmanagedWriter * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ ULONG32 cSig,
- /* [size_is][in] */ __RPC__in_ecount_full(cSig) unsigned char signature[ ],
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3,
- /* [in] */ ULONG32 startOffset,
- /* [in] */ ULONG32 endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *DefineParameter )(
- __RPC__in ISymUnmanagedWriter * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ ULONG32 sequence,
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3);
-
- HRESULT ( STDMETHODCALLTYPE *DefineField )(
- __RPC__in ISymUnmanagedWriter * This,
- /* [in] */ mdTypeDef parent,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ ULONG32 cSig,
- /* [size_is][in] */ __RPC__in_ecount_full(cSig) unsigned char signature[ ],
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3);
-
- HRESULT ( STDMETHODCALLTYPE *DefineGlobalVariable )(
- __RPC__in ISymUnmanagedWriter * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ ULONG32 cSig,
- /* [size_is][in] */ __RPC__in_ecount_full(cSig) unsigned char signature[ ],
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3);
-
- HRESULT ( STDMETHODCALLTYPE *Close )(
- __RPC__in ISymUnmanagedWriter * This);
-
- HRESULT ( STDMETHODCALLTYPE *SetSymAttribute )(
- __RPC__in ISymUnmanagedWriter * This,
- /* [in] */ mdToken parent,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 cData,
- /* [size_is][in] */ __RPC__in_ecount_full(cData) unsigned char data[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *OpenNamespace )(
- __RPC__in ISymUnmanagedWriter * This,
- /* [in] */ __RPC__in const WCHAR *name);
-
- HRESULT ( STDMETHODCALLTYPE *CloseNamespace )(
- __RPC__in ISymUnmanagedWriter * This);
-
- HRESULT ( STDMETHODCALLTYPE *UsingNamespace )(
- __RPC__in ISymUnmanagedWriter * This,
- /* [in] */ __RPC__in const WCHAR *fullName);
-
- HRESULT ( STDMETHODCALLTYPE *SetMethodSourceRange )(
- __RPC__in ISymUnmanagedWriter * This,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocumentWriter *startDoc,
- /* [in] */ ULONG32 startLine,
- /* [in] */ ULONG32 startColumn,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocumentWriter *endDoc,
- /* [in] */ ULONG32 endLine,
- /* [in] */ ULONG32 endColumn);
-
- HRESULT ( STDMETHODCALLTYPE *Initialize )(
- __RPC__in ISymUnmanagedWriter * This,
- /* [in] */ __RPC__in_opt IUnknown *emitter,
- /* [in] */ __RPC__in const WCHAR *filename,
- /* [in] */ __RPC__in_opt IStream *pIStream,
- /* [in] */ BOOL fFullBuild);
-
- HRESULT ( STDMETHODCALLTYPE *GetDebugInfo )(
- __RPC__in ISymUnmanagedWriter * This,
- /* [out][in] */ __RPC__inout IMAGE_DEBUG_DIRECTORY *pIDD,
- /* [in] */ DWORD cData,
- /* [out] */ __RPC__out DWORD *pcData,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cData, *pcData) BYTE data[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *DefineSequencePoints )(
- __RPC__in ISymUnmanagedWriter * This,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocumentWriter *document,
- /* [in] */ ULONG32 spCount,
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 offsets[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 lines[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 columns[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 endLines[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 endColumns[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *RemapToken )(
- __RPC__in ISymUnmanagedWriter * This,
- /* [in] */ mdToken oldToken,
- /* [in] */ mdToken newToken);
-
- HRESULT ( STDMETHODCALLTYPE *Initialize2 )(
- __RPC__in ISymUnmanagedWriter * This,
- /* [in] */ __RPC__in_opt IUnknown *emitter,
- /* [in] */ __RPC__in const WCHAR *tempfilename,
- /* [in] */ __RPC__in_opt IStream *pIStream,
- /* [in] */ BOOL fFullBuild,
- /* [in] */ __RPC__in const WCHAR *finalfilename);
-
- HRESULT ( STDMETHODCALLTYPE *DefineConstant )(
- __RPC__in ISymUnmanagedWriter * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ VARIANT value,
- /* [in] */ ULONG32 cSig,
- /* [size_is][in] */ __RPC__in_ecount_full(cSig) unsigned char signature[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *Abort )(
- __RPC__in ISymUnmanagedWriter * This);
-
- END_INTERFACE
- } ISymUnmanagedWriterVtbl;
-
- interface ISymUnmanagedWriter
- {
- CONST_VTBL struct ISymUnmanagedWriterVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedWriter_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedWriter_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedWriter_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedWriter_DefineDocument(This,url,language,languageVendor,documentType,pRetVal) \
- ( (This)->lpVtbl -> DefineDocument(This,url,language,languageVendor,documentType,pRetVal) )
-
-#define ISymUnmanagedWriter_SetUserEntryPoint(This,entryMethod) \
- ( (This)->lpVtbl -> SetUserEntryPoint(This,entryMethod) )
-
-#define ISymUnmanagedWriter_OpenMethod(This,method) \
- ( (This)->lpVtbl -> OpenMethod(This,method) )
-
-#define ISymUnmanagedWriter_CloseMethod(This) \
- ( (This)->lpVtbl -> CloseMethod(This) )
-
-#define ISymUnmanagedWriter_OpenScope(This,startOffset,pRetVal) \
- ( (This)->lpVtbl -> OpenScope(This,startOffset,pRetVal) )
-
-#define ISymUnmanagedWriter_CloseScope(This,endOffset) \
- ( (This)->lpVtbl -> CloseScope(This,endOffset) )
-
-#define ISymUnmanagedWriter_SetScopeRange(This,scopeID,startOffset,endOffset) \
- ( (This)->lpVtbl -> SetScopeRange(This,scopeID,startOffset,endOffset) )
-
-#define ISymUnmanagedWriter_DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset) \
- ( (This)->lpVtbl -> DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset) )
-
-#define ISymUnmanagedWriter_DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3) \
- ( (This)->lpVtbl -> DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3) )
-
-#define ISymUnmanagedWriter_DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) \
- ( (This)->lpVtbl -> DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) )
-
-#define ISymUnmanagedWriter_DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) \
- ( (This)->lpVtbl -> DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) )
-
-#define ISymUnmanagedWriter_Close(This) \
- ( (This)->lpVtbl -> Close(This) )
-
-#define ISymUnmanagedWriter_SetSymAttribute(This,parent,name,cData,data) \
- ( (This)->lpVtbl -> SetSymAttribute(This,parent,name,cData,data) )
-
-#define ISymUnmanagedWriter_OpenNamespace(This,name) \
- ( (This)->lpVtbl -> OpenNamespace(This,name) )
-
-#define ISymUnmanagedWriter_CloseNamespace(This) \
- ( (This)->lpVtbl -> CloseNamespace(This) )
-
-#define ISymUnmanagedWriter_UsingNamespace(This,fullName) \
- ( (This)->lpVtbl -> UsingNamespace(This,fullName) )
-
-#define ISymUnmanagedWriter_SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn) \
- ( (This)->lpVtbl -> SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn) )
-
-#define ISymUnmanagedWriter_Initialize(This,emitter,filename,pIStream,fFullBuild) \
- ( (This)->lpVtbl -> Initialize(This,emitter,filename,pIStream,fFullBuild) )
-
-#define ISymUnmanagedWriter_GetDebugInfo(This,pIDD,cData,pcData,data) \
- ( (This)->lpVtbl -> GetDebugInfo(This,pIDD,cData,pcData,data) )
-
-#define ISymUnmanagedWriter_DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns) \
- ( (This)->lpVtbl -> DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns) )
-
-#define ISymUnmanagedWriter_RemapToken(This,oldToken,newToken) \
- ( (This)->lpVtbl -> RemapToken(This,oldToken,newToken) )
-
-#define ISymUnmanagedWriter_Initialize2(This,emitter,tempfilename,pIStream,fFullBuild,finalfilename) \
- ( (This)->lpVtbl -> Initialize2(This,emitter,tempfilename,pIStream,fFullBuild,finalfilename) )
-
-#define ISymUnmanagedWriter_DefineConstant(This,name,value,cSig,signature) \
- ( (This)->lpVtbl -> DefineConstant(This,name,value,cSig,signature) )
-
-#define ISymUnmanagedWriter_Abort(This) \
- ( (This)->lpVtbl -> Abort(This) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedWriter_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedWriter2_INTERFACE_DEFINED__
-#define __ISymUnmanagedWriter2_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedWriter2 */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymUnmanagedWriter2;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("0B97726E-9E6D-4f05-9A26-424022093CAA")
- ISymUnmanagedWriter2 : public ISymUnmanagedWriter
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE DefineLocalVariable2(
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ mdSignature sigToken,
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3,
- /* [in] */ ULONG32 startOffset,
- /* [in] */ ULONG32 endOffset) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE DefineGlobalVariable2(
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ mdSignature sigToken,
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE DefineConstant2(
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ VARIANT value,
- /* [in] */ mdSignature sigToken) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedWriter2Vtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedWriter2 * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedWriter2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedWriter2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *DefineDocument )(
- __RPC__in ISymUnmanagedWriter2 * This,
- /* [in] */ __RPC__in const WCHAR *url,
- /* [in] */ __RPC__in const GUID *language,
- /* [in] */ __RPC__in const GUID *languageVendor,
- /* [in] */ __RPC__in const GUID *documentType,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedDocumentWriter **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *SetUserEntryPoint )(
- __RPC__in ISymUnmanagedWriter2 * This,
- /* [in] */ mdMethodDef entryMethod);
-
- HRESULT ( STDMETHODCALLTYPE *OpenMethod )(
- __RPC__in ISymUnmanagedWriter2 * This,
- /* [in] */ mdMethodDef method);
-
- HRESULT ( STDMETHODCALLTYPE *CloseMethod )(
- __RPC__in ISymUnmanagedWriter2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *OpenScope )(
- __RPC__in ISymUnmanagedWriter2 * This,
- /* [in] */ ULONG32 startOffset,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *CloseScope )(
- __RPC__in ISymUnmanagedWriter2 * This,
- /* [in] */ ULONG32 endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *SetScopeRange )(
- __RPC__in ISymUnmanagedWriter2 * This,
- /* [in] */ ULONG32 scopeID,
- /* [in] */ ULONG32 startOffset,
- /* [in] */ ULONG32 endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *DefineLocalVariable )(
- __RPC__in ISymUnmanagedWriter2 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ ULONG32 cSig,
- /* [size_is][in] */ __RPC__in_ecount_full(cSig) unsigned char signature[ ],
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3,
- /* [in] */ ULONG32 startOffset,
- /* [in] */ ULONG32 endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *DefineParameter )(
- __RPC__in ISymUnmanagedWriter2 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ ULONG32 sequence,
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3);
-
- HRESULT ( STDMETHODCALLTYPE *DefineField )(
- __RPC__in ISymUnmanagedWriter2 * This,
- /* [in] */ mdTypeDef parent,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ ULONG32 cSig,
- /* [size_is][in] */ __RPC__in_ecount_full(cSig) unsigned char signature[ ],
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3);
-
- HRESULT ( STDMETHODCALLTYPE *DefineGlobalVariable )(
- __RPC__in ISymUnmanagedWriter2 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ ULONG32 cSig,
- /* [size_is][in] */ __RPC__in_ecount_full(cSig) unsigned char signature[ ],
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3);
-
- HRESULT ( STDMETHODCALLTYPE *Close )(
- __RPC__in ISymUnmanagedWriter2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *SetSymAttribute )(
- __RPC__in ISymUnmanagedWriter2 * This,
- /* [in] */ mdToken parent,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 cData,
- /* [size_is][in] */ __RPC__in_ecount_full(cData) unsigned char data[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *OpenNamespace )(
- __RPC__in ISymUnmanagedWriter2 * This,
- /* [in] */ __RPC__in const WCHAR *name);
-
- HRESULT ( STDMETHODCALLTYPE *CloseNamespace )(
- __RPC__in ISymUnmanagedWriter2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *UsingNamespace )(
- __RPC__in ISymUnmanagedWriter2 * This,
- /* [in] */ __RPC__in const WCHAR *fullName);
-
- HRESULT ( STDMETHODCALLTYPE *SetMethodSourceRange )(
- __RPC__in ISymUnmanagedWriter2 * This,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocumentWriter *startDoc,
- /* [in] */ ULONG32 startLine,
- /* [in] */ ULONG32 startColumn,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocumentWriter *endDoc,
- /* [in] */ ULONG32 endLine,
- /* [in] */ ULONG32 endColumn);
-
- HRESULT ( STDMETHODCALLTYPE *Initialize )(
- __RPC__in ISymUnmanagedWriter2 * This,
- /* [in] */ __RPC__in_opt IUnknown *emitter,
- /* [in] */ __RPC__in const WCHAR *filename,
- /* [in] */ __RPC__in_opt IStream *pIStream,
- /* [in] */ BOOL fFullBuild);
-
- HRESULT ( STDMETHODCALLTYPE *GetDebugInfo )(
- __RPC__in ISymUnmanagedWriter2 * This,
- /* [out][in] */ __RPC__inout IMAGE_DEBUG_DIRECTORY *pIDD,
- /* [in] */ DWORD cData,
- /* [out] */ __RPC__out DWORD *pcData,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cData, *pcData) BYTE data[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *DefineSequencePoints )(
- __RPC__in ISymUnmanagedWriter2 * This,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocumentWriter *document,
- /* [in] */ ULONG32 spCount,
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 offsets[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 lines[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 columns[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 endLines[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 endColumns[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *RemapToken )(
- __RPC__in ISymUnmanagedWriter2 * This,
- /* [in] */ mdToken oldToken,
- /* [in] */ mdToken newToken);
-
- HRESULT ( STDMETHODCALLTYPE *Initialize2 )(
- __RPC__in ISymUnmanagedWriter2 * This,
- /* [in] */ __RPC__in_opt IUnknown *emitter,
- /* [in] */ __RPC__in const WCHAR *tempfilename,
- /* [in] */ __RPC__in_opt IStream *pIStream,
- /* [in] */ BOOL fFullBuild,
- /* [in] */ __RPC__in const WCHAR *finalfilename);
-
- HRESULT ( STDMETHODCALLTYPE *DefineConstant )(
- __RPC__in ISymUnmanagedWriter2 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ VARIANT value,
- /* [in] */ ULONG32 cSig,
- /* [size_is][in] */ __RPC__in_ecount_full(cSig) unsigned char signature[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *Abort )(
- __RPC__in ISymUnmanagedWriter2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *DefineLocalVariable2 )(
- __RPC__in ISymUnmanagedWriter2 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ mdSignature sigToken,
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3,
- /* [in] */ ULONG32 startOffset,
- /* [in] */ ULONG32 endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *DefineGlobalVariable2 )(
- __RPC__in ISymUnmanagedWriter2 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ mdSignature sigToken,
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3);
-
- HRESULT ( STDMETHODCALLTYPE *DefineConstant2 )(
- __RPC__in ISymUnmanagedWriter2 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ VARIANT value,
- /* [in] */ mdSignature sigToken);
-
- END_INTERFACE
- } ISymUnmanagedWriter2Vtbl;
-
- interface ISymUnmanagedWriter2
- {
- CONST_VTBL struct ISymUnmanagedWriter2Vtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedWriter2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedWriter2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedWriter2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedWriter2_DefineDocument(This,url,language,languageVendor,documentType,pRetVal) \
- ( (This)->lpVtbl -> DefineDocument(This,url,language,languageVendor,documentType,pRetVal) )
-
-#define ISymUnmanagedWriter2_SetUserEntryPoint(This,entryMethod) \
- ( (This)->lpVtbl -> SetUserEntryPoint(This,entryMethod) )
-
-#define ISymUnmanagedWriter2_OpenMethod(This,method) \
- ( (This)->lpVtbl -> OpenMethod(This,method) )
-
-#define ISymUnmanagedWriter2_CloseMethod(This) \
- ( (This)->lpVtbl -> CloseMethod(This) )
-
-#define ISymUnmanagedWriter2_OpenScope(This,startOffset,pRetVal) \
- ( (This)->lpVtbl -> OpenScope(This,startOffset,pRetVal) )
-
-#define ISymUnmanagedWriter2_CloseScope(This,endOffset) \
- ( (This)->lpVtbl -> CloseScope(This,endOffset) )
-
-#define ISymUnmanagedWriter2_SetScopeRange(This,scopeID,startOffset,endOffset) \
- ( (This)->lpVtbl -> SetScopeRange(This,scopeID,startOffset,endOffset) )
-
-#define ISymUnmanagedWriter2_DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset) \
- ( (This)->lpVtbl -> DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset) )
-
-#define ISymUnmanagedWriter2_DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3) \
- ( (This)->lpVtbl -> DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3) )
-
-#define ISymUnmanagedWriter2_DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) \
- ( (This)->lpVtbl -> DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) )
-
-#define ISymUnmanagedWriter2_DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) \
- ( (This)->lpVtbl -> DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) )
-
-#define ISymUnmanagedWriter2_Close(This) \
- ( (This)->lpVtbl -> Close(This) )
-
-#define ISymUnmanagedWriter2_SetSymAttribute(This,parent,name,cData,data) \
- ( (This)->lpVtbl -> SetSymAttribute(This,parent,name,cData,data) )
-
-#define ISymUnmanagedWriter2_OpenNamespace(This,name) \
- ( (This)->lpVtbl -> OpenNamespace(This,name) )
-
-#define ISymUnmanagedWriter2_CloseNamespace(This) \
- ( (This)->lpVtbl -> CloseNamespace(This) )
-
-#define ISymUnmanagedWriter2_UsingNamespace(This,fullName) \
- ( (This)->lpVtbl -> UsingNamespace(This,fullName) )
-
-#define ISymUnmanagedWriter2_SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn) \
- ( (This)->lpVtbl -> SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn) )
-
-#define ISymUnmanagedWriter2_Initialize(This,emitter,filename,pIStream,fFullBuild) \
- ( (This)->lpVtbl -> Initialize(This,emitter,filename,pIStream,fFullBuild) )
-
-#define ISymUnmanagedWriter2_GetDebugInfo(This,pIDD,cData,pcData,data) \
- ( (This)->lpVtbl -> GetDebugInfo(This,pIDD,cData,pcData,data) )
-
-#define ISymUnmanagedWriter2_DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns) \
- ( (This)->lpVtbl -> DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns) )
-
-#define ISymUnmanagedWriter2_RemapToken(This,oldToken,newToken) \
- ( (This)->lpVtbl -> RemapToken(This,oldToken,newToken) )
-
-#define ISymUnmanagedWriter2_Initialize2(This,emitter,tempfilename,pIStream,fFullBuild,finalfilename) \
- ( (This)->lpVtbl -> Initialize2(This,emitter,tempfilename,pIStream,fFullBuild,finalfilename) )
-
-#define ISymUnmanagedWriter2_DefineConstant(This,name,value,cSig,signature) \
- ( (This)->lpVtbl -> DefineConstant(This,name,value,cSig,signature) )
-
-#define ISymUnmanagedWriter2_Abort(This) \
- ( (This)->lpVtbl -> Abort(This) )
-
-
-#define ISymUnmanagedWriter2_DefineLocalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3,startOffset,endOffset) \
- ( (This)->lpVtbl -> DefineLocalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3,startOffset,endOffset) )
-
-#define ISymUnmanagedWriter2_DefineGlobalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3) \
- ( (This)->lpVtbl -> DefineGlobalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3) )
-
-#define ISymUnmanagedWriter2_DefineConstant2(This,name,value,sigToken) \
- ( (This)->lpVtbl -> DefineConstant2(This,name,value,sigToken) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedWriter2_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedWriter3_INTERFACE_DEFINED__
-#define __ISymUnmanagedWriter3_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedWriter3 */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymUnmanagedWriter3;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("12F1E02C-1E05-4B0E-9468-EBC9D1BB040F")
- ISymUnmanagedWriter3 : public ISymUnmanagedWriter2
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE OpenMethod2(
- /* [in] */ mdMethodDef method,
- /* [in] */ ULONG32 isect,
- /* [in] */ ULONG32 offset) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE Commit( void) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedWriter3Vtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedWriter3 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedWriter3 * This);
-
- HRESULT ( STDMETHODCALLTYPE *DefineDocument )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [in] */ __RPC__in const WCHAR *url,
- /* [in] */ __RPC__in const GUID *language,
- /* [in] */ __RPC__in const GUID *languageVendor,
- /* [in] */ __RPC__in const GUID *documentType,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedDocumentWriter **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *SetUserEntryPoint )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [in] */ mdMethodDef entryMethod);
-
- HRESULT ( STDMETHODCALLTYPE *OpenMethod )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [in] */ mdMethodDef method);
-
- HRESULT ( STDMETHODCALLTYPE *CloseMethod )(
- __RPC__in ISymUnmanagedWriter3 * This);
-
- HRESULT ( STDMETHODCALLTYPE *OpenScope )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [in] */ ULONG32 startOffset,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *CloseScope )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [in] */ ULONG32 endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *SetScopeRange )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [in] */ ULONG32 scopeID,
- /* [in] */ ULONG32 startOffset,
- /* [in] */ ULONG32 endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *DefineLocalVariable )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ ULONG32 cSig,
- /* [size_is][in] */ __RPC__in_ecount_full(cSig) unsigned char signature[ ],
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3,
- /* [in] */ ULONG32 startOffset,
- /* [in] */ ULONG32 endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *DefineParameter )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ ULONG32 sequence,
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3);
-
- HRESULT ( STDMETHODCALLTYPE *DefineField )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [in] */ mdTypeDef parent,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ ULONG32 cSig,
- /* [size_is][in] */ __RPC__in_ecount_full(cSig) unsigned char signature[ ],
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3);
-
- HRESULT ( STDMETHODCALLTYPE *DefineGlobalVariable )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ ULONG32 cSig,
- /* [size_is][in] */ __RPC__in_ecount_full(cSig) unsigned char signature[ ],
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3);
-
- HRESULT ( STDMETHODCALLTYPE *Close )(
- __RPC__in ISymUnmanagedWriter3 * This);
-
- HRESULT ( STDMETHODCALLTYPE *SetSymAttribute )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [in] */ mdToken parent,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 cData,
- /* [size_is][in] */ __RPC__in_ecount_full(cData) unsigned char data[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *OpenNamespace )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [in] */ __RPC__in const WCHAR *name);
-
- HRESULT ( STDMETHODCALLTYPE *CloseNamespace )(
- __RPC__in ISymUnmanagedWriter3 * This);
-
- HRESULT ( STDMETHODCALLTYPE *UsingNamespace )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [in] */ __RPC__in const WCHAR *fullName);
-
- HRESULT ( STDMETHODCALLTYPE *SetMethodSourceRange )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocumentWriter *startDoc,
- /* [in] */ ULONG32 startLine,
- /* [in] */ ULONG32 startColumn,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocumentWriter *endDoc,
- /* [in] */ ULONG32 endLine,
- /* [in] */ ULONG32 endColumn);
-
- HRESULT ( STDMETHODCALLTYPE *Initialize )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [in] */ __RPC__in_opt IUnknown *emitter,
- /* [in] */ __RPC__in const WCHAR *filename,
- /* [in] */ __RPC__in_opt IStream *pIStream,
- /* [in] */ BOOL fFullBuild);
-
- HRESULT ( STDMETHODCALLTYPE *GetDebugInfo )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [out][in] */ __RPC__inout IMAGE_DEBUG_DIRECTORY *pIDD,
- /* [in] */ DWORD cData,
- /* [out] */ __RPC__out DWORD *pcData,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cData, *pcData) BYTE data[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *DefineSequencePoints )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocumentWriter *document,
- /* [in] */ ULONG32 spCount,
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 offsets[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 lines[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 columns[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 endLines[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 endColumns[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *RemapToken )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [in] */ mdToken oldToken,
- /* [in] */ mdToken newToken);
-
- HRESULT ( STDMETHODCALLTYPE *Initialize2 )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [in] */ __RPC__in_opt IUnknown *emitter,
- /* [in] */ __RPC__in const WCHAR *tempfilename,
- /* [in] */ __RPC__in_opt IStream *pIStream,
- /* [in] */ BOOL fFullBuild,
- /* [in] */ __RPC__in const WCHAR *finalfilename);
-
- HRESULT ( STDMETHODCALLTYPE *DefineConstant )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ VARIANT value,
- /* [in] */ ULONG32 cSig,
- /* [size_is][in] */ __RPC__in_ecount_full(cSig) unsigned char signature[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *Abort )(
- __RPC__in ISymUnmanagedWriter3 * This);
-
- HRESULT ( STDMETHODCALLTYPE *DefineLocalVariable2 )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ mdSignature sigToken,
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3,
- /* [in] */ ULONG32 startOffset,
- /* [in] */ ULONG32 endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *DefineGlobalVariable2 )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ mdSignature sigToken,
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3);
-
- HRESULT ( STDMETHODCALLTYPE *DefineConstant2 )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ VARIANT value,
- /* [in] */ mdSignature sigToken);
-
- HRESULT ( STDMETHODCALLTYPE *OpenMethod2 )(
- __RPC__in ISymUnmanagedWriter3 * This,
- /* [in] */ mdMethodDef method,
- /* [in] */ ULONG32 isect,
- /* [in] */ ULONG32 offset);
-
- HRESULT ( STDMETHODCALLTYPE *Commit )(
- __RPC__in ISymUnmanagedWriter3 * This);
-
- END_INTERFACE
- } ISymUnmanagedWriter3Vtbl;
-
- interface ISymUnmanagedWriter3
- {
- CONST_VTBL struct ISymUnmanagedWriter3Vtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedWriter3_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedWriter3_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedWriter3_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedWriter3_DefineDocument(This,url,language,languageVendor,documentType,pRetVal) \
- ( (This)->lpVtbl -> DefineDocument(This,url,language,languageVendor,documentType,pRetVal) )
-
-#define ISymUnmanagedWriter3_SetUserEntryPoint(This,entryMethod) \
- ( (This)->lpVtbl -> SetUserEntryPoint(This,entryMethod) )
-
-#define ISymUnmanagedWriter3_OpenMethod(This,method) \
- ( (This)->lpVtbl -> OpenMethod(This,method) )
-
-#define ISymUnmanagedWriter3_CloseMethod(This) \
- ( (This)->lpVtbl -> CloseMethod(This) )
-
-#define ISymUnmanagedWriter3_OpenScope(This,startOffset,pRetVal) \
- ( (This)->lpVtbl -> OpenScope(This,startOffset,pRetVal) )
-
-#define ISymUnmanagedWriter3_CloseScope(This,endOffset) \
- ( (This)->lpVtbl -> CloseScope(This,endOffset) )
-
-#define ISymUnmanagedWriter3_SetScopeRange(This,scopeID,startOffset,endOffset) \
- ( (This)->lpVtbl -> SetScopeRange(This,scopeID,startOffset,endOffset) )
-
-#define ISymUnmanagedWriter3_DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset) \
- ( (This)->lpVtbl -> DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset) )
-
-#define ISymUnmanagedWriter3_DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3) \
- ( (This)->lpVtbl -> DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3) )
-
-#define ISymUnmanagedWriter3_DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) \
- ( (This)->lpVtbl -> DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) )
-
-#define ISymUnmanagedWriter3_DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) \
- ( (This)->lpVtbl -> DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) )
-
-#define ISymUnmanagedWriter3_Close(This) \
- ( (This)->lpVtbl -> Close(This) )
-
-#define ISymUnmanagedWriter3_SetSymAttribute(This,parent,name,cData,data) \
- ( (This)->lpVtbl -> SetSymAttribute(This,parent,name,cData,data) )
-
-#define ISymUnmanagedWriter3_OpenNamespace(This,name) \
- ( (This)->lpVtbl -> OpenNamespace(This,name) )
-
-#define ISymUnmanagedWriter3_CloseNamespace(This) \
- ( (This)->lpVtbl -> CloseNamespace(This) )
-
-#define ISymUnmanagedWriter3_UsingNamespace(This,fullName) \
- ( (This)->lpVtbl -> UsingNamespace(This,fullName) )
-
-#define ISymUnmanagedWriter3_SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn) \
- ( (This)->lpVtbl -> SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn) )
-
-#define ISymUnmanagedWriter3_Initialize(This,emitter,filename,pIStream,fFullBuild) \
- ( (This)->lpVtbl -> Initialize(This,emitter,filename,pIStream,fFullBuild) )
-
-#define ISymUnmanagedWriter3_GetDebugInfo(This,pIDD,cData,pcData,data) \
- ( (This)->lpVtbl -> GetDebugInfo(This,pIDD,cData,pcData,data) )
-
-#define ISymUnmanagedWriter3_DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns) \
- ( (This)->lpVtbl -> DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns) )
-
-#define ISymUnmanagedWriter3_RemapToken(This,oldToken,newToken) \
- ( (This)->lpVtbl -> RemapToken(This,oldToken,newToken) )
-
-#define ISymUnmanagedWriter3_Initialize2(This,emitter,tempfilename,pIStream,fFullBuild,finalfilename) \
- ( (This)->lpVtbl -> Initialize2(This,emitter,tempfilename,pIStream,fFullBuild,finalfilename) )
-
-#define ISymUnmanagedWriter3_DefineConstant(This,name,value,cSig,signature) \
- ( (This)->lpVtbl -> DefineConstant(This,name,value,cSig,signature) )
-
-#define ISymUnmanagedWriter3_Abort(This) \
- ( (This)->lpVtbl -> Abort(This) )
-
-
-#define ISymUnmanagedWriter3_DefineLocalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3,startOffset,endOffset) \
- ( (This)->lpVtbl -> DefineLocalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3,startOffset,endOffset) )
-
-#define ISymUnmanagedWriter3_DefineGlobalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3) \
- ( (This)->lpVtbl -> DefineGlobalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3) )
-
-#define ISymUnmanagedWriter3_DefineConstant2(This,name,value,sigToken) \
- ( (This)->lpVtbl -> DefineConstant2(This,name,value,sigToken) )
-
-
-#define ISymUnmanagedWriter3_OpenMethod2(This,method,isect,offset) \
- ( (This)->lpVtbl -> OpenMethod2(This,method,isect,offset) )
-
-#define ISymUnmanagedWriter3_Commit(This) \
- ( (This)->lpVtbl -> Commit(This) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedWriter3_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedWriter4_INTERFACE_DEFINED__
-#define __ISymUnmanagedWriter4_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedWriter4 */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymUnmanagedWriter4;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("BC7E3F53-F458-4C23-9DBD-A189E6E96594")
- ISymUnmanagedWriter4 : public ISymUnmanagedWriter3
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE GetDebugInfoWithPadding(
- /* [out][in] */ __RPC__inout IMAGE_DEBUG_DIRECTORY *pIDD,
- /* [in] */ DWORD cData,
- /* [out] */ __RPC__out DWORD *pcData,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cData, *pcData) BYTE data[ ]) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedWriter4Vtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedWriter4 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedWriter4 * This);
-
- HRESULT ( STDMETHODCALLTYPE *DefineDocument )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [in] */ __RPC__in const WCHAR *url,
- /* [in] */ __RPC__in const GUID *language,
- /* [in] */ __RPC__in const GUID *languageVendor,
- /* [in] */ __RPC__in const GUID *documentType,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedDocumentWriter **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *SetUserEntryPoint )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [in] */ mdMethodDef entryMethod);
-
- HRESULT ( STDMETHODCALLTYPE *OpenMethod )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [in] */ mdMethodDef method);
-
- HRESULT ( STDMETHODCALLTYPE *CloseMethod )(
- __RPC__in ISymUnmanagedWriter4 * This);
-
- HRESULT ( STDMETHODCALLTYPE *OpenScope )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [in] */ ULONG32 startOffset,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *CloseScope )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [in] */ ULONG32 endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *SetScopeRange )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [in] */ ULONG32 scopeID,
- /* [in] */ ULONG32 startOffset,
- /* [in] */ ULONG32 endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *DefineLocalVariable )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ ULONG32 cSig,
- /* [size_is][in] */ __RPC__in_ecount_full(cSig) unsigned char signature[ ],
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3,
- /* [in] */ ULONG32 startOffset,
- /* [in] */ ULONG32 endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *DefineParameter )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ ULONG32 sequence,
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3);
-
- HRESULT ( STDMETHODCALLTYPE *DefineField )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [in] */ mdTypeDef parent,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ ULONG32 cSig,
- /* [size_is][in] */ __RPC__in_ecount_full(cSig) unsigned char signature[ ],
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3);
-
- HRESULT ( STDMETHODCALLTYPE *DefineGlobalVariable )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ ULONG32 cSig,
- /* [size_is][in] */ __RPC__in_ecount_full(cSig) unsigned char signature[ ],
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3);
-
- HRESULT ( STDMETHODCALLTYPE *Close )(
- __RPC__in ISymUnmanagedWriter4 * This);
-
- HRESULT ( STDMETHODCALLTYPE *SetSymAttribute )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [in] */ mdToken parent,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 cData,
- /* [size_is][in] */ __RPC__in_ecount_full(cData) unsigned char data[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *OpenNamespace )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [in] */ __RPC__in const WCHAR *name);
-
- HRESULT ( STDMETHODCALLTYPE *CloseNamespace )(
- __RPC__in ISymUnmanagedWriter4 * This);
-
- HRESULT ( STDMETHODCALLTYPE *UsingNamespace )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [in] */ __RPC__in const WCHAR *fullName);
-
- HRESULT ( STDMETHODCALLTYPE *SetMethodSourceRange )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocumentWriter *startDoc,
- /* [in] */ ULONG32 startLine,
- /* [in] */ ULONG32 startColumn,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocumentWriter *endDoc,
- /* [in] */ ULONG32 endLine,
- /* [in] */ ULONG32 endColumn);
-
- HRESULT ( STDMETHODCALLTYPE *Initialize )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [in] */ __RPC__in_opt IUnknown *emitter,
- /* [in] */ __RPC__in const WCHAR *filename,
- /* [in] */ __RPC__in_opt IStream *pIStream,
- /* [in] */ BOOL fFullBuild);
-
- HRESULT ( STDMETHODCALLTYPE *GetDebugInfo )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [out][in] */ __RPC__inout IMAGE_DEBUG_DIRECTORY *pIDD,
- /* [in] */ DWORD cData,
- /* [out] */ __RPC__out DWORD *pcData,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cData, *pcData) BYTE data[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *DefineSequencePoints )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocumentWriter *document,
- /* [in] */ ULONG32 spCount,
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 offsets[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 lines[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 columns[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 endLines[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 endColumns[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *RemapToken )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [in] */ mdToken oldToken,
- /* [in] */ mdToken newToken);
-
- HRESULT ( STDMETHODCALLTYPE *Initialize2 )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [in] */ __RPC__in_opt IUnknown *emitter,
- /* [in] */ __RPC__in const WCHAR *tempfilename,
- /* [in] */ __RPC__in_opt IStream *pIStream,
- /* [in] */ BOOL fFullBuild,
- /* [in] */ __RPC__in const WCHAR *finalfilename);
-
- HRESULT ( STDMETHODCALLTYPE *DefineConstant )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ VARIANT value,
- /* [in] */ ULONG32 cSig,
- /* [size_is][in] */ __RPC__in_ecount_full(cSig) unsigned char signature[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *Abort )(
- __RPC__in ISymUnmanagedWriter4 * This);
-
- HRESULT ( STDMETHODCALLTYPE *DefineLocalVariable2 )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ mdSignature sigToken,
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3,
- /* [in] */ ULONG32 startOffset,
- /* [in] */ ULONG32 endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *DefineGlobalVariable2 )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ mdSignature sigToken,
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3);
-
- HRESULT ( STDMETHODCALLTYPE *DefineConstant2 )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ VARIANT value,
- /* [in] */ mdSignature sigToken);
-
- HRESULT ( STDMETHODCALLTYPE *OpenMethod2 )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [in] */ mdMethodDef method,
- /* [in] */ ULONG32 isect,
- /* [in] */ ULONG32 offset);
-
- HRESULT ( STDMETHODCALLTYPE *Commit )(
- __RPC__in ISymUnmanagedWriter4 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetDebugInfoWithPadding )(
- __RPC__in ISymUnmanagedWriter4 * This,
- /* [out][in] */ __RPC__inout IMAGE_DEBUG_DIRECTORY *pIDD,
- /* [in] */ DWORD cData,
- /* [out] */ __RPC__out DWORD *pcData,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cData, *pcData) BYTE data[ ]);
-
- END_INTERFACE
- } ISymUnmanagedWriter4Vtbl;
-
- interface ISymUnmanagedWriter4
- {
- CONST_VTBL struct ISymUnmanagedWriter4Vtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedWriter4_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedWriter4_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedWriter4_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedWriter4_DefineDocument(This,url,language,languageVendor,documentType,pRetVal) \
- ( (This)->lpVtbl -> DefineDocument(This,url,language,languageVendor,documentType,pRetVal) )
-
-#define ISymUnmanagedWriter4_SetUserEntryPoint(This,entryMethod) \
- ( (This)->lpVtbl -> SetUserEntryPoint(This,entryMethod) )
-
-#define ISymUnmanagedWriter4_OpenMethod(This,method) \
- ( (This)->lpVtbl -> OpenMethod(This,method) )
-
-#define ISymUnmanagedWriter4_CloseMethod(This) \
- ( (This)->lpVtbl -> CloseMethod(This) )
-
-#define ISymUnmanagedWriter4_OpenScope(This,startOffset,pRetVal) \
- ( (This)->lpVtbl -> OpenScope(This,startOffset,pRetVal) )
-
-#define ISymUnmanagedWriter4_CloseScope(This,endOffset) \
- ( (This)->lpVtbl -> CloseScope(This,endOffset) )
-
-#define ISymUnmanagedWriter4_SetScopeRange(This,scopeID,startOffset,endOffset) \
- ( (This)->lpVtbl -> SetScopeRange(This,scopeID,startOffset,endOffset) )
-
-#define ISymUnmanagedWriter4_DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset) \
- ( (This)->lpVtbl -> DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset) )
-
-#define ISymUnmanagedWriter4_DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3) \
- ( (This)->lpVtbl -> DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3) )
-
-#define ISymUnmanagedWriter4_DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) \
- ( (This)->lpVtbl -> DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) )
-
-#define ISymUnmanagedWriter4_DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) \
- ( (This)->lpVtbl -> DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) )
-
-#define ISymUnmanagedWriter4_Close(This) \
- ( (This)->lpVtbl -> Close(This) )
-
-#define ISymUnmanagedWriter4_SetSymAttribute(This,parent,name,cData,data) \
- ( (This)->lpVtbl -> SetSymAttribute(This,parent,name,cData,data) )
-
-#define ISymUnmanagedWriter4_OpenNamespace(This,name) \
- ( (This)->lpVtbl -> OpenNamespace(This,name) )
-
-#define ISymUnmanagedWriter4_CloseNamespace(This) \
- ( (This)->lpVtbl -> CloseNamespace(This) )
-
-#define ISymUnmanagedWriter4_UsingNamespace(This,fullName) \
- ( (This)->lpVtbl -> UsingNamespace(This,fullName) )
-
-#define ISymUnmanagedWriter4_SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn) \
- ( (This)->lpVtbl -> SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn) )
-
-#define ISymUnmanagedWriter4_Initialize(This,emitter,filename,pIStream,fFullBuild) \
- ( (This)->lpVtbl -> Initialize(This,emitter,filename,pIStream,fFullBuild) )
-
-#define ISymUnmanagedWriter4_GetDebugInfo(This,pIDD,cData,pcData,data) \
- ( (This)->lpVtbl -> GetDebugInfo(This,pIDD,cData,pcData,data) )
-
-#define ISymUnmanagedWriter4_DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns) \
- ( (This)->lpVtbl -> DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns) )
-
-#define ISymUnmanagedWriter4_RemapToken(This,oldToken,newToken) \
- ( (This)->lpVtbl -> RemapToken(This,oldToken,newToken) )
-
-#define ISymUnmanagedWriter4_Initialize2(This,emitter,tempfilename,pIStream,fFullBuild,finalfilename) \
- ( (This)->lpVtbl -> Initialize2(This,emitter,tempfilename,pIStream,fFullBuild,finalfilename) )
-
-#define ISymUnmanagedWriter4_DefineConstant(This,name,value,cSig,signature) \
- ( (This)->lpVtbl -> DefineConstant(This,name,value,cSig,signature) )
-
-#define ISymUnmanagedWriter4_Abort(This) \
- ( (This)->lpVtbl -> Abort(This) )
-
-
-#define ISymUnmanagedWriter4_DefineLocalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3,startOffset,endOffset) \
- ( (This)->lpVtbl -> DefineLocalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3,startOffset,endOffset) )
-
-#define ISymUnmanagedWriter4_DefineGlobalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3) \
- ( (This)->lpVtbl -> DefineGlobalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3) )
-
-#define ISymUnmanagedWriter4_DefineConstant2(This,name,value,sigToken) \
- ( (This)->lpVtbl -> DefineConstant2(This,name,value,sigToken) )
-
-
-#define ISymUnmanagedWriter4_OpenMethod2(This,method,isect,offset) \
- ( (This)->lpVtbl -> OpenMethod2(This,method,isect,offset) )
-
-#define ISymUnmanagedWriter4_Commit(This) \
- ( (This)->lpVtbl -> Commit(This) )
-
-
-#define ISymUnmanagedWriter4_GetDebugInfoWithPadding(This,pIDD,cData,pcData,data) \
- ( (This)->lpVtbl -> GetDebugInfoWithPadding(This,pIDD,cData,pcData,data) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedWriter4_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedWriter5_INTERFACE_DEFINED__
-#define __ISymUnmanagedWriter5_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedWriter5 */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymUnmanagedWriter5;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("DCF7780D-BDE9-45DF-ACFE-21731A32000C")
- ISymUnmanagedWriter5 : public ISymUnmanagedWriter4
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE OpenMapTokensToSourceSpans( void) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CloseMapTokensToSourceSpans( void) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE MapTokenToSourceSpan(
- /* [in] */ mdToken token,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocumentWriter *document,
- /* [in] */ ULONG32 line,
- /* [in] */ ULONG32 column,
- /* [in] */ ULONG32 endLine,
- /* [in] */ ULONG32 endColumn) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedWriter5Vtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedWriter5 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedWriter5 * This);
-
- HRESULT ( STDMETHODCALLTYPE *DefineDocument )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ __RPC__in const WCHAR *url,
- /* [in] */ __RPC__in const GUID *language,
- /* [in] */ __RPC__in const GUID *languageVendor,
- /* [in] */ __RPC__in const GUID *documentType,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedDocumentWriter **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *SetUserEntryPoint )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ mdMethodDef entryMethod);
-
- HRESULT ( STDMETHODCALLTYPE *OpenMethod )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ mdMethodDef method);
-
- HRESULT ( STDMETHODCALLTYPE *CloseMethod )(
- __RPC__in ISymUnmanagedWriter5 * This);
-
- HRESULT ( STDMETHODCALLTYPE *OpenScope )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ ULONG32 startOffset,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *CloseScope )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ ULONG32 endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *SetScopeRange )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ ULONG32 scopeID,
- /* [in] */ ULONG32 startOffset,
- /* [in] */ ULONG32 endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *DefineLocalVariable )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ ULONG32 cSig,
- /* [size_is][in] */ __RPC__in_ecount_full(cSig) unsigned char signature[ ],
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3,
- /* [in] */ ULONG32 startOffset,
- /* [in] */ ULONG32 endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *DefineParameter )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ ULONG32 sequence,
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3);
-
- HRESULT ( STDMETHODCALLTYPE *DefineField )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ mdTypeDef parent,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ ULONG32 cSig,
- /* [size_is][in] */ __RPC__in_ecount_full(cSig) unsigned char signature[ ],
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3);
-
- HRESULT ( STDMETHODCALLTYPE *DefineGlobalVariable )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ ULONG32 cSig,
- /* [size_is][in] */ __RPC__in_ecount_full(cSig) unsigned char signature[ ],
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3);
-
- HRESULT ( STDMETHODCALLTYPE *Close )(
- __RPC__in ISymUnmanagedWriter5 * This);
-
- HRESULT ( STDMETHODCALLTYPE *SetSymAttribute )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ mdToken parent,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 cData,
- /* [size_is][in] */ __RPC__in_ecount_full(cData) unsigned char data[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *OpenNamespace )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ __RPC__in const WCHAR *name);
-
- HRESULT ( STDMETHODCALLTYPE *CloseNamespace )(
- __RPC__in ISymUnmanagedWriter5 * This);
-
- HRESULT ( STDMETHODCALLTYPE *UsingNamespace )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ __RPC__in const WCHAR *fullName);
-
- HRESULT ( STDMETHODCALLTYPE *SetMethodSourceRange )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocumentWriter *startDoc,
- /* [in] */ ULONG32 startLine,
- /* [in] */ ULONG32 startColumn,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocumentWriter *endDoc,
- /* [in] */ ULONG32 endLine,
- /* [in] */ ULONG32 endColumn);
-
- HRESULT ( STDMETHODCALLTYPE *Initialize )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ __RPC__in_opt IUnknown *emitter,
- /* [in] */ __RPC__in const WCHAR *filename,
- /* [in] */ __RPC__in_opt IStream *pIStream,
- /* [in] */ BOOL fFullBuild);
-
- HRESULT ( STDMETHODCALLTYPE *GetDebugInfo )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [out][in] */ __RPC__inout IMAGE_DEBUG_DIRECTORY *pIDD,
- /* [in] */ DWORD cData,
- /* [out] */ __RPC__out DWORD *pcData,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cData, *pcData) BYTE data[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *DefineSequencePoints )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocumentWriter *document,
- /* [in] */ ULONG32 spCount,
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 offsets[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 lines[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 columns[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 endLines[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(spCount) ULONG32 endColumns[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *RemapToken )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ mdToken oldToken,
- /* [in] */ mdToken newToken);
-
- HRESULT ( STDMETHODCALLTYPE *Initialize2 )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ __RPC__in_opt IUnknown *emitter,
- /* [in] */ __RPC__in const WCHAR *tempfilename,
- /* [in] */ __RPC__in_opt IStream *pIStream,
- /* [in] */ BOOL fFullBuild,
- /* [in] */ __RPC__in const WCHAR *finalfilename);
-
- HRESULT ( STDMETHODCALLTYPE *DefineConstant )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ VARIANT value,
- /* [in] */ ULONG32 cSig,
- /* [size_is][in] */ __RPC__in_ecount_full(cSig) unsigned char signature[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *Abort )(
- __RPC__in ISymUnmanagedWriter5 * This);
-
- HRESULT ( STDMETHODCALLTYPE *DefineLocalVariable2 )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ mdSignature sigToken,
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3,
- /* [in] */ ULONG32 startOffset,
- /* [in] */ ULONG32 endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *DefineGlobalVariable2 )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ ULONG32 attributes,
- /* [in] */ mdSignature sigToken,
- /* [in] */ ULONG32 addrKind,
- /* [in] */ ULONG32 addr1,
- /* [in] */ ULONG32 addr2,
- /* [in] */ ULONG32 addr3);
-
- HRESULT ( STDMETHODCALLTYPE *DefineConstant2 )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ __RPC__in const WCHAR *name,
- /* [in] */ VARIANT value,
- /* [in] */ mdSignature sigToken);
-
- HRESULT ( STDMETHODCALLTYPE *OpenMethod2 )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ mdMethodDef method,
- /* [in] */ ULONG32 isect,
- /* [in] */ ULONG32 offset);
-
- HRESULT ( STDMETHODCALLTYPE *Commit )(
- __RPC__in ISymUnmanagedWriter5 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetDebugInfoWithPadding )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [out][in] */ __RPC__inout IMAGE_DEBUG_DIRECTORY *pIDD,
- /* [in] */ DWORD cData,
- /* [out] */ __RPC__out DWORD *pcData,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cData, *pcData) BYTE data[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *OpenMapTokensToSourceSpans )(
- __RPC__in ISymUnmanagedWriter5 * This);
-
- HRESULT ( STDMETHODCALLTYPE *CloseMapTokensToSourceSpans )(
- __RPC__in ISymUnmanagedWriter5 * This);
-
- HRESULT ( STDMETHODCALLTYPE *MapTokenToSourceSpan )(
- __RPC__in ISymUnmanagedWriter5 * This,
- /* [in] */ mdToken token,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocumentWriter *document,
- /* [in] */ ULONG32 line,
- /* [in] */ ULONG32 column,
- /* [in] */ ULONG32 endLine,
- /* [in] */ ULONG32 endColumn);
-
- END_INTERFACE
- } ISymUnmanagedWriter5Vtbl;
-
- interface ISymUnmanagedWriter5
- {
- CONST_VTBL struct ISymUnmanagedWriter5Vtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedWriter5_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedWriter5_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedWriter5_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedWriter5_DefineDocument(This,url,language,languageVendor,documentType,pRetVal) \
- ( (This)->lpVtbl -> DefineDocument(This,url,language,languageVendor,documentType,pRetVal) )
-
-#define ISymUnmanagedWriter5_SetUserEntryPoint(This,entryMethod) \
- ( (This)->lpVtbl -> SetUserEntryPoint(This,entryMethod) )
-
-#define ISymUnmanagedWriter5_OpenMethod(This,method) \
- ( (This)->lpVtbl -> OpenMethod(This,method) )
-
-#define ISymUnmanagedWriter5_CloseMethod(This) \
- ( (This)->lpVtbl -> CloseMethod(This) )
-
-#define ISymUnmanagedWriter5_OpenScope(This,startOffset,pRetVal) \
- ( (This)->lpVtbl -> OpenScope(This,startOffset,pRetVal) )
-
-#define ISymUnmanagedWriter5_CloseScope(This,endOffset) \
- ( (This)->lpVtbl -> CloseScope(This,endOffset) )
-
-#define ISymUnmanagedWriter5_SetScopeRange(This,scopeID,startOffset,endOffset) \
- ( (This)->lpVtbl -> SetScopeRange(This,scopeID,startOffset,endOffset) )
-
-#define ISymUnmanagedWriter5_DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset) \
- ( (This)->lpVtbl -> DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset) )
-
-#define ISymUnmanagedWriter5_DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3) \
- ( (This)->lpVtbl -> DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3) )
-
-#define ISymUnmanagedWriter5_DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) \
- ( (This)->lpVtbl -> DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) )
-
-#define ISymUnmanagedWriter5_DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) \
- ( (This)->lpVtbl -> DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) )
-
-#define ISymUnmanagedWriter5_Close(This) \
- ( (This)->lpVtbl -> Close(This) )
-
-#define ISymUnmanagedWriter5_SetSymAttribute(This,parent,name,cData,data) \
- ( (This)->lpVtbl -> SetSymAttribute(This,parent,name,cData,data) )
-
-#define ISymUnmanagedWriter5_OpenNamespace(This,name) \
- ( (This)->lpVtbl -> OpenNamespace(This,name) )
-
-#define ISymUnmanagedWriter5_CloseNamespace(This) \
- ( (This)->lpVtbl -> CloseNamespace(This) )
-
-#define ISymUnmanagedWriter5_UsingNamespace(This,fullName) \
- ( (This)->lpVtbl -> UsingNamespace(This,fullName) )
-
-#define ISymUnmanagedWriter5_SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn) \
- ( (This)->lpVtbl -> SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn) )
-
-#define ISymUnmanagedWriter5_Initialize(This,emitter,filename,pIStream,fFullBuild) \
- ( (This)->lpVtbl -> Initialize(This,emitter,filename,pIStream,fFullBuild) )
-
-#define ISymUnmanagedWriter5_GetDebugInfo(This,pIDD,cData,pcData,data) \
- ( (This)->lpVtbl -> GetDebugInfo(This,pIDD,cData,pcData,data) )
-
-#define ISymUnmanagedWriter5_DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns) \
- ( (This)->lpVtbl -> DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns) )
-
-#define ISymUnmanagedWriter5_RemapToken(This,oldToken,newToken) \
- ( (This)->lpVtbl -> RemapToken(This,oldToken,newToken) )
-
-#define ISymUnmanagedWriter5_Initialize2(This,emitter,tempfilename,pIStream,fFullBuild,finalfilename) \
- ( (This)->lpVtbl -> Initialize2(This,emitter,tempfilename,pIStream,fFullBuild,finalfilename) )
-
-#define ISymUnmanagedWriter5_DefineConstant(This,name,value,cSig,signature) \
- ( (This)->lpVtbl -> DefineConstant(This,name,value,cSig,signature) )
-
-#define ISymUnmanagedWriter5_Abort(This) \
- ( (This)->lpVtbl -> Abort(This) )
-
-
-#define ISymUnmanagedWriter5_DefineLocalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3,startOffset,endOffset) \
- ( (This)->lpVtbl -> DefineLocalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3,startOffset,endOffset) )
-
-#define ISymUnmanagedWriter5_DefineGlobalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3) \
- ( (This)->lpVtbl -> DefineGlobalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3) )
-
-#define ISymUnmanagedWriter5_DefineConstant2(This,name,value,sigToken) \
- ( (This)->lpVtbl -> DefineConstant2(This,name,value,sigToken) )
-
-
-#define ISymUnmanagedWriter5_OpenMethod2(This,method,isect,offset) \
- ( (This)->lpVtbl -> OpenMethod2(This,method,isect,offset) )
-
-#define ISymUnmanagedWriter5_Commit(This) \
- ( (This)->lpVtbl -> Commit(This) )
-
-
-#define ISymUnmanagedWriter5_GetDebugInfoWithPadding(This,pIDD,cData,pcData,data) \
- ( (This)->lpVtbl -> GetDebugInfoWithPadding(This,pIDD,cData,pcData,data) )
-
-
-#define ISymUnmanagedWriter5_OpenMapTokensToSourceSpans(This) \
- ( (This)->lpVtbl -> OpenMapTokensToSourceSpans(This) )
-
-#define ISymUnmanagedWriter5_CloseMapTokensToSourceSpans(This) \
- ( (This)->lpVtbl -> CloseMapTokensToSourceSpans(This) )
-
-#define ISymUnmanagedWriter5_MapTokenToSourceSpan(This,token,document,line,column,endLine,endColumn) \
- ( (This)->lpVtbl -> MapTokenToSourceSpan(This,token,document,line,column,endLine,endColumn) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedWriter5_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedReader2_INTERFACE_DEFINED__
-#define __ISymUnmanagedReader2_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedReader2 */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymUnmanagedReader2;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("A09E53B2-2A57-4cca-8F63-B84F7C35D4AA")
- ISymUnmanagedReader2 : public ISymUnmanagedReader
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE GetMethodByVersionPreRemap(
- /* [in] */ mdMethodDef token,
- /* [in] */ int version,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedMethod **pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetSymAttributePreRemap(
- /* [in] */ mdToken parent,
- /* [in] */ __RPC__in WCHAR *name,
- /* [in] */ ULONG32 cBuffer,
- /* [out] */ __RPC__out ULONG32 *pcBuffer,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cBuffer, *pcBuffer) BYTE buffer[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetMethodsInDocument(
- /* [in] */ __RPC__in_opt ISymUnmanagedDocument *document,
- /* [in] */ ULONG32 cMethod,
- /* [out] */ __RPC__out ULONG32 *pcMethod,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cMethod, *pcMethod) ISymUnmanagedMethod *pRetVal[ ]) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedReader2Vtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedReader2 * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedReader2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedReader2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetDocument )(
- __RPC__in ISymUnmanagedReader2 * This,
- /* [in] */ __RPC__in WCHAR *url,
- /* [in] */ GUID language,
- /* [in] */ GUID languageVendor,
- /* [in] */ GUID documentType,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedDocument **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetDocuments )(
- __RPC__in ISymUnmanagedReader2 * This,
- /* [in] */ ULONG32 cDocs,
- /* [out] */ __RPC__out ULONG32 *pcDocs,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cDocs, *pcDocs) ISymUnmanagedDocument *pDocs[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetUserEntryPoint )(
- __RPC__in ISymUnmanagedReader2 * This,
- /* [retval][out] */ __RPC__out mdMethodDef *pToken);
-
- HRESULT ( STDMETHODCALLTYPE *GetMethod )(
- __RPC__in ISymUnmanagedReader2 * This,
- /* [in] */ mdMethodDef token,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedMethod **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetMethodByVersion )(
- __RPC__in ISymUnmanagedReader2 * This,
- /* [in] */ mdMethodDef token,
- /* [in] */ int version,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedMethod **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetVariables )(
- __RPC__in ISymUnmanagedReader2 * This,
- /* [in] */ mdToken parent,
- /* [in] */ ULONG32 cVars,
- /* [out] */ __RPC__out ULONG32 *pcVars,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cVars, *pcVars) ISymUnmanagedVariable *pVars[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetGlobalVariables )(
- __RPC__in ISymUnmanagedReader2 * This,
- /* [in] */ ULONG32 cVars,
- /* [out] */ __RPC__out ULONG32 *pcVars,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cVars, *pcVars) ISymUnmanagedVariable *pVars[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetMethodFromDocumentPosition )(
- __RPC__in ISymUnmanagedReader2 * This,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocument *document,
- /* [in] */ ULONG32 line,
- /* [in] */ ULONG32 column,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedMethod **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetSymAttribute )(
- __RPC__in ISymUnmanagedReader2 * This,
- /* [in] */ mdToken parent,
- /* [in] */ __RPC__in WCHAR *name,
- /* [in] */ ULONG32 cBuffer,
- /* [out] */ __RPC__out ULONG32 *pcBuffer,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cBuffer, *pcBuffer) BYTE buffer[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetNamespaces )(
- __RPC__in ISymUnmanagedReader2 * This,
- /* [in] */ ULONG32 cNameSpaces,
- /* [out] */ __RPC__out ULONG32 *pcNameSpaces,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cNameSpaces, *pcNameSpaces) ISymUnmanagedNamespace *namespaces[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *Initialize )(
- __RPC__in ISymUnmanagedReader2 * This,
- /* [in] */ __RPC__in_opt IUnknown *importer,
- /* [in] */ __RPC__in const WCHAR *filename,
- /* [in] */ __RPC__in const WCHAR *searchPath,
- /* [in] */ __RPC__in_opt IStream *pIStream);
-
- HRESULT ( STDMETHODCALLTYPE *UpdateSymbolStore )(
- __RPC__in ISymUnmanagedReader2 * This,
- /* [in] */ __RPC__in const WCHAR *filename,
- /* [in] */ __RPC__in_opt IStream *pIStream);
-
- HRESULT ( STDMETHODCALLTYPE *ReplaceSymbolStore )(
- __RPC__in ISymUnmanagedReader2 * This,
- /* [in] */ __RPC__in const WCHAR *filename,
- /* [in] */ __RPC__in_opt IStream *pIStream);
-
- HRESULT ( STDMETHODCALLTYPE *GetSymbolStoreFileName )(
- __RPC__in ISymUnmanagedReader2 * This,
- /* [in] */ ULONG32 cchName,
- /* [out] */ __RPC__out ULONG32 *pcchName,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cchName, *pcchName) WCHAR szName[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetMethodsFromDocumentPosition )(
- __RPC__in ISymUnmanagedReader2 * This,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocument *document,
- /* [in] */ ULONG32 line,
- /* [in] */ ULONG32 column,
- /* [in] */ ULONG32 cMethod,
- /* [out] */ __RPC__out ULONG32 *pcMethod,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cMethod, *pcMethod) ISymUnmanagedMethod *pRetVal[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetDocumentVersion )(
- __RPC__in ISymUnmanagedReader2 * This,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocument *pDoc,
- /* [out] */ __RPC__out int *version,
- /* [out] */ __RPC__out BOOL *pbCurrent);
-
- HRESULT ( STDMETHODCALLTYPE *GetMethodVersion )(
- __RPC__in ISymUnmanagedReader2 * This,
- /* [in] */ __RPC__in_opt ISymUnmanagedMethod *pMethod,
- /* [out] */ __RPC__out int *version);
-
- HRESULT ( STDMETHODCALLTYPE *GetMethodByVersionPreRemap )(
- __RPC__in ISymUnmanagedReader2 * This,
- /* [in] */ mdMethodDef token,
- /* [in] */ int version,
- /* [retval][out] */ __RPC__deref_out_opt ISymUnmanagedMethod **pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetSymAttributePreRemap )(
- __RPC__in ISymUnmanagedReader2 * This,
- /* [in] */ mdToken parent,
- /* [in] */ __RPC__in WCHAR *name,
- /* [in] */ ULONG32 cBuffer,
- /* [out] */ __RPC__out ULONG32 *pcBuffer,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cBuffer, *pcBuffer) BYTE buffer[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetMethodsInDocument )(
- __RPC__in ISymUnmanagedReader2 * This,
- /* [in] */ __RPC__in_opt ISymUnmanagedDocument *document,
- /* [in] */ ULONG32 cMethod,
- /* [out] */ __RPC__out ULONG32 *pcMethod,
- /* [length_is][size_is][out] */ __RPC__out_ecount_part(cMethod, *pcMethod) ISymUnmanagedMethod *pRetVal[ ]);
-
- END_INTERFACE
- } ISymUnmanagedReader2Vtbl;
-
- interface ISymUnmanagedReader2
- {
- CONST_VTBL struct ISymUnmanagedReader2Vtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedReader2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedReader2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedReader2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedReader2_GetDocument(This,url,language,languageVendor,documentType,pRetVal) \
- ( (This)->lpVtbl -> GetDocument(This,url,language,languageVendor,documentType,pRetVal) )
-
-#define ISymUnmanagedReader2_GetDocuments(This,cDocs,pcDocs,pDocs) \
- ( (This)->lpVtbl -> GetDocuments(This,cDocs,pcDocs,pDocs) )
-
-#define ISymUnmanagedReader2_GetUserEntryPoint(This,pToken) \
- ( (This)->lpVtbl -> GetUserEntryPoint(This,pToken) )
-
-#define ISymUnmanagedReader2_GetMethod(This,token,pRetVal) \
- ( (This)->lpVtbl -> GetMethod(This,token,pRetVal) )
-
-#define ISymUnmanagedReader2_GetMethodByVersion(This,token,version,pRetVal) \
- ( (This)->lpVtbl -> GetMethodByVersion(This,token,version,pRetVal) )
-
-#define ISymUnmanagedReader2_GetVariables(This,parent,cVars,pcVars,pVars) \
- ( (This)->lpVtbl -> GetVariables(This,parent,cVars,pcVars,pVars) )
-
-#define ISymUnmanagedReader2_GetGlobalVariables(This,cVars,pcVars,pVars) \
- ( (This)->lpVtbl -> GetGlobalVariables(This,cVars,pcVars,pVars) )
-
-#define ISymUnmanagedReader2_GetMethodFromDocumentPosition(This,document,line,column,pRetVal) \
- ( (This)->lpVtbl -> GetMethodFromDocumentPosition(This,document,line,column,pRetVal) )
-
-#define ISymUnmanagedReader2_GetSymAttribute(This,parent,name,cBuffer,pcBuffer,buffer) \
- ( (This)->lpVtbl -> GetSymAttribute(This,parent,name,cBuffer,pcBuffer,buffer) )
-
-#define ISymUnmanagedReader2_GetNamespaces(This,cNameSpaces,pcNameSpaces,namespaces) \
- ( (This)->lpVtbl -> GetNamespaces(This,cNameSpaces,pcNameSpaces,namespaces) )
-
-#define ISymUnmanagedReader2_Initialize(This,importer,filename,searchPath,pIStream) \
- ( (This)->lpVtbl -> Initialize(This,importer,filename,searchPath,pIStream) )
-
-#define ISymUnmanagedReader2_UpdateSymbolStore(This,filename,pIStream) \
- ( (This)->lpVtbl -> UpdateSymbolStore(This,filename,pIStream) )
-
-#define ISymUnmanagedReader2_ReplaceSymbolStore(This,filename,pIStream) \
- ( (This)->lpVtbl -> ReplaceSymbolStore(This,filename,pIStream) )
-
-#define ISymUnmanagedReader2_GetSymbolStoreFileName(This,cchName,pcchName,szName) \
- ( (This)->lpVtbl -> GetSymbolStoreFileName(This,cchName,pcchName,szName) )
-
-#define ISymUnmanagedReader2_GetMethodsFromDocumentPosition(This,document,line,column,cMethod,pcMethod,pRetVal) \
- ( (This)->lpVtbl -> GetMethodsFromDocumentPosition(This,document,line,column,cMethod,pcMethod,pRetVal) )
-
-#define ISymUnmanagedReader2_GetDocumentVersion(This,pDoc,version,pbCurrent) \
- ( (This)->lpVtbl -> GetDocumentVersion(This,pDoc,version,pbCurrent) )
-
-#define ISymUnmanagedReader2_GetMethodVersion(This,pMethod,version) \
- ( (This)->lpVtbl -> GetMethodVersion(This,pMethod,version) )
-
-
-#define ISymUnmanagedReader2_GetMethodByVersionPreRemap(This,token,version,pRetVal) \
- ( (This)->lpVtbl -> GetMethodByVersionPreRemap(This,token,version,pRetVal) )
-
-#define ISymUnmanagedReader2_GetSymAttributePreRemap(This,parent,name,cBuffer,pcBuffer,buffer) \
- ( (This)->lpVtbl -> GetSymAttributePreRemap(This,parent,name,cBuffer,pcBuffer,buffer) )
-
-#define ISymUnmanagedReader2_GetMethodsInDocument(This,document,cMethod,pcMethod,pRetVal) \
- ( (This)->lpVtbl -> GetMethodsInDocument(This,document,cMethod,pcMethod,pRetVal) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedReader2_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymNGenWriter_INTERFACE_DEFINED__
-#define __ISymNGenWriter_INTERFACE_DEFINED__
-
-/* interface ISymNGenWriter */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymNGenWriter;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("d682fd12-43de-411c-811b-be8404cea126")
- ISymNGenWriter : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE AddSymbol(
- /* [in] */ __RPC__in BSTR pSymbol,
- /* [in] */ USHORT iSection,
- /* [in] */ ULONGLONG rva) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE AddSection(
- /* [in] */ USHORT iSection,
- /* [in] */ USHORT flags,
- /* [in] */ long offset,
- /* [in] */ long cb) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymNGenWriterVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymNGenWriter * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymNGenWriter * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymNGenWriter * This);
-
- HRESULT ( STDMETHODCALLTYPE *AddSymbol )(
- __RPC__in ISymNGenWriter * This,
- /* [in] */ __RPC__in BSTR pSymbol,
- /* [in] */ USHORT iSection,
- /* [in] */ ULONGLONG rva);
-
- HRESULT ( STDMETHODCALLTYPE *AddSection )(
- __RPC__in ISymNGenWriter * This,
- /* [in] */ USHORT iSection,
- /* [in] */ USHORT flags,
- /* [in] */ long offset,
- /* [in] */ long cb);
-
- END_INTERFACE
- } ISymNGenWriterVtbl;
-
- interface ISymNGenWriter
- {
- CONST_VTBL struct ISymNGenWriterVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymNGenWriter_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymNGenWriter_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymNGenWriter_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymNGenWriter_AddSymbol(This,pSymbol,iSection,rva) \
- ( (This)->lpVtbl -> AddSymbol(This,pSymbol,iSection,rva) )
-
-#define ISymNGenWriter_AddSection(This,iSection,flags,offset,cb) \
- ( (This)->lpVtbl -> AddSection(This,iSection,flags,offset,cb) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymNGenWriter_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymNGenWriter2_INTERFACE_DEFINED__
-#define __ISymNGenWriter2_INTERFACE_DEFINED__
-
-/* interface ISymNGenWriter2 */
-/* [unique][uuid][local][object] */
-
-
-EXTERN_C const IID IID_ISymNGenWriter2;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("B029E51B-4C55-4fe2-B993-9F7BC1F10DB4")
- ISymNGenWriter2 : public ISymNGenWriter
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE OpenModW(
- /* [in] */ LPCWSTR wszModule,
- /* [in] */ LPCWSTR wszObjFile,
- /* [out] */ BYTE **ppmod) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CloseMod(
- /* [in] */ BYTE *pmod) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE ModAddSymbols(
- /* [in] */ BYTE *pmod,
- /* [in] */ BYTE *pbSym,
- /* [in] */ long cb) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE ModAddSecContribEx(
- /* [in] */ BYTE *pmod,
- /* [in] */ USHORT isect,
- /* [in] */ long off,
- /* [in] */ long cb,
- /* [in] */ ULONG dwCharacteristics,
- /* [in] */ DWORD dwDataCrc,
- /* [in] */ DWORD dwRelocCrc) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE QueryPDBNameExW(
- /* [size_is][out] */ WCHAR wszPDB[ ],
- /* [in] */ SIZE_T cchMax) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymNGenWriter2Vtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- ISymNGenWriter2 * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- ISymNGenWriter2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- ISymNGenWriter2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *AddSymbol )(
- ISymNGenWriter2 * This,
- /* [in] */ BSTR pSymbol,
- /* [in] */ USHORT iSection,
- /* [in] */ ULONGLONG rva);
-
- HRESULT ( STDMETHODCALLTYPE *AddSection )(
- ISymNGenWriter2 * This,
- /* [in] */ USHORT iSection,
- /* [in] */ USHORT flags,
- /* [in] */ long offset,
- /* [in] */ long cb);
-
- HRESULT ( STDMETHODCALLTYPE *OpenModW )(
- ISymNGenWriter2 * This,
- /* [in] */ const WCHAR *wszModule,
- /* [in] */ const WCHAR *wszObjFile,
- /* [out] */ BYTE **ppmod);
-
- HRESULT ( STDMETHODCALLTYPE *CloseMod )(
- ISymNGenWriter2 * This,
- /* [in] */ BYTE *pmod);
-
- HRESULT ( STDMETHODCALLTYPE *ModAddSymbols )(
- ISymNGenWriter2 * This,
- /* [in] */ BYTE *pmod,
- /* [in] */ BYTE *pbSym,
- /* [in] */ long cb);
-
- HRESULT ( STDMETHODCALLTYPE *ModAddSecContribEx )(
- ISymNGenWriter2 * This,
- /* [in] */ BYTE *pmod,
- /* [in] */ USHORT isect,
- /* [in] */ long off,
- /* [in] */ long cb,
- /* [in] */ ULONG dwCharacteristics,
- /* [in] */ DWORD dwDataCrc,
- /* [in] */ DWORD dwRelocCrc);
-
- HRESULT ( STDMETHODCALLTYPE *QueryPDBNameExW )(
- ISymNGenWriter2 * This,
- /* [size_is][out] */ WCHAR wszPDB[ ],
- /* [in] */ SIZE_T cchMax);
-
- END_INTERFACE
- } ISymNGenWriter2Vtbl;
-
- interface ISymNGenWriter2
- {
- CONST_VTBL struct ISymNGenWriter2Vtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymNGenWriter2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymNGenWriter2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymNGenWriter2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymNGenWriter2_AddSymbol(This,pSymbol,iSection,rva) \
- ( (This)->lpVtbl -> AddSymbol(This,pSymbol,iSection,rva) )
-
-#define ISymNGenWriter2_AddSection(This,iSection,flags,offset,cb) \
- ( (This)->lpVtbl -> AddSection(This,iSection,flags,offset,cb) )
-
-
-#define ISymNGenWriter2_OpenModW(This,wszModule,wszObjFile,ppmod) \
- ( (This)->lpVtbl -> OpenModW(This,wszModule,wszObjFile,ppmod) )
-
-#define ISymNGenWriter2_CloseMod(This,pmod) \
- ( (This)->lpVtbl -> CloseMod(This,pmod) )
-
-#define ISymNGenWriter2_ModAddSymbols(This,pmod,pbSym,cb) \
- ( (This)->lpVtbl -> ModAddSymbols(This,pmod,pbSym,cb) )
-
-#define ISymNGenWriter2_ModAddSecContribEx(This,pmod,isect,off,cb,dwCharacteristics,dwDataCrc,dwRelocCrc) \
- ( (This)->lpVtbl -> ModAddSecContribEx(This,pmod,isect,off,cb,dwCharacteristics,dwDataCrc,dwRelocCrc) )
-
-#define ISymNGenWriter2_QueryPDBNameExW(This,wszPDB,cchMax) \
- ( (This)->lpVtbl -> QueryPDBNameExW(This,wszPDB,cchMax) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymNGenWriter2_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedAsyncMethodPropertiesWriter_INTERFACE_DEFINED__
-#define __ISymUnmanagedAsyncMethodPropertiesWriter_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedAsyncMethodPropertiesWriter */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymUnmanagedAsyncMethodPropertiesWriter;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("FC073774-1739-4232-BD56-A027294BEC15")
- ISymUnmanagedAsyncMethodPropertiesWriter : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE DefineKickoffMethod(
- /* [in] */ mdToken kickoffMethod) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE DefineCatchHandlerILOffset(
- /* [in] */ ULONG32 catchHandlerOffset) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE DefineAsyncStepInfo(
- /* [in] */ ULONG32 count,
- /* [size_is][in] */ __RPC__in_ecount_full(count) ULONG32 yieldOffsets[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(count) ULONG32 breakpointOffset[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(count) mdToken breakpointMethod[ ]) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedAsyncMethodPropertiesWriterVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedAsyncMethodPropertiesWriter * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedAsyncMethodPropertiesWriter * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedAsyncMethodPropertiesWriter * This);
-
- HRESULT ( STDMETHODCALLTYPE *DefineKickoffMethod )(
- __RPC__in ISymUnmanagedAsyncMethodPropertiesWriter * This,
- /* [in] */ mdToken kickoffMethod);
-
- HRESULT ( STDMETHODCALLTYPE *DefineCatchHandlerILOffset )(
- __RPC__in ISymUnmanagedAsyncMethodPropertiesWriter * This,
- /* [in] */ ULONG32 catchHandlerOffset);
-
- HRESULT ( STDMETHODCALLTYPE *DefineAsyncStepInfo )(
- __RPC__in ISymUnmanagedAsyncMethodPropertiesWriter * This,
- /* [in] */ ULONG32 count,
- /* [size_is][in] */ __RPC__in_ecount_full(count) ULONG32 yieldOffsets[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(count) ULONG32 breakpointOffset[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(count) mdToken breakpointMethod[ ]);
-
- END_INTERFACE
- } ISymUnmanagedAsyncMethodPropertiesWriterVtbl;
-
- interface ISymUnmanagedAsyncMethodPropertiesWriter
- {
- CONST_VTBL struct ISymUnmanagedAsyncMethodPropertiesWriterVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedAsyncMethodPropertiesWriter_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedAsyncMethodPropertiesWriter_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedAsyncMethodPropertiesWriter_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedAsyncMethodPropertiesWriter_DefineKickoffMethod(This,kickoffMethod) \
- ( (This)->lpVtbl -> DefineKickoffMethod(This,kickoffMethod) )
-
-#define ISymUnmanagedAsyncMethodPropertiesWriter_DefineCatchHandlerILOffset(This,catchHandlerOffset) \
- ( (This)->lpVtbl -> DefineCatchHandlerILOffset(This,catchHandlerOffset) )
-
-#define ISymUnmanagedAsyncMethodPropertiesWriter_DefineAsyncStepInfo(This,count,yieldOffsets,breakpointOffset,breakpointMethod) \
- ( (This)->lpVtbl -> DefineAsyncStepInfo(This,count,yieldOffsets,breakpointOffset,breakpointMethod) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedAsyncMethodPropertiesWriter_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISymUnmanagedAsyncMethod_INTERFACE_DEFINED__
-#define __ISymUnmanagedAsyncMethod_INTERFACE_DEFINED__
-
-/* interface ISymUnmanagedAsyncMethod */
-/* [unique][uuid][object] */
-
-
-EXTERN_C const IID IID_ISymUnmanagedAsyncMethod;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("B20D55B3-532E-4906-87E7-25BD5734ABD2")
- ISymUnmanagedAsyncMethod : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE IsAsyncMethod(
- /* [retval][out] */ __RPC__out BOOL *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetKickoffMethod(
- /* [retval][out] */ __RPC__out mdToken *kickoffMethod) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE HasCatchHandlerILOffset(
- /* [retval][out] */ __RPC__out BOOL *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetCatchHandlerILOffset(
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetAsyncStepInfoCount(
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetAsyncStepInfo(
- /* [in] */ ULONG32 cStepInfo,
- /* [out] */ __RPC__out ULONG32 *pcStepInfo,
- /* [size_is][in] */ __RPC__in_ecount_full(cStepInfo) ULONG32 yieldOffsets[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(cStepInfo) ULONG32 breakpointOffset[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(cStepInfo) mdToken breakpointMethod[ ]) = 0;
-
- };
-
-
-#else /* C style interface */
-
- typedef struct ISymUnmanagedAsyncMethodVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- __RPC__in ISymUnmanagedAsyncMethod * This,
- /* [in] */ __RPC__in REFIID riid,
- /* [annotation][iid_is][out] */
- _COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- __RPC__in ISymUnmanagedAsyncMethod * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- __RPC__in ISymUnmanagedAsyncMethod * This);
-
- HRESULT ( STDMETHODCALLTYPE *IsAsyncMethod )(
- __RPC__in ISymUnmanagedAsyncMethod * This,
- /* [retval][out] */ __RPC__out BOOL *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetKickoffMethod )(
- __RPC__in ISymUnmanagedAsyncMethod * This,
- /* [retval][out] */ __RPC__out mdToken *kickoffMethod);
-
- HRESULT ( STDMETHODCALLTYPE *HasCatchHandlerILOffset )(
- __RPC__in ISymUnmanagedAsyncMethod * This,
- /* [retval][out] */ __RPC__out BOOL *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetCatchHandlerILOffset )(
- __RPC__in ISymUnmanagedAsyncMethod * This,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetAsyncStepInfoCount )(
- __RPC__in ISymUnmanagedAsyncMethod * This,
- /* [retval][out] */ __RPC__out ULONG32 *pRetVal);
-
- HRESULT ( STDMETHODCALLTYPE *GetAsyncStepInfo )(
- __RPC__in ISymUnmanagedAsyncMethod * This,
- /* [in] */ ULONG32 cStepInfo,
- /* [out] */ __RPC__out ULONG32 *pcStepInfo,
- /* [size_is][in] */ __RPC__in_ecount_full(cStepInfo) ULONG32 yieldOffsets[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(cStepInfo) ULONG32 breakpointOffset[ ],
- /* [size_is][in] */ __RPC__in_ecount_full(cStepInfo) mdToken breakpointMethod[ ]);
-
- END_INTERFACE
- } ISymUnmanagedAsyncMethodVtbl;
-
- interface ISymUnmanagedAsyncMethod
- {
- CONST_VTBL struct ISymUnmanagedAsyncMethodVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define ISymUnmanagedAsyncMethod_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define ISymUnmanagedAsyncMethod_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define ISymUnmanagedAsyncMethod_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define ISymUnmanagedAsyncMethod_IsAsyncMethod(This,pRetVal) \
- ( (This)->lpVtbl -> IsAsyncMethod(This,pRetVal) )
-
-#define ISymUnmanagedAsyncMethod_GetKickoffMethod(This,kickoffMethod) \
- ( (This)->lpVtbl -> GetKickoffMethod(This,kickoffMethod) )
-
-#define ISymUnmanagedAsyncMethod_HasCatchHandlerILOffset(This,pRetVal) \
- ( (This)->lpVtbl -> HasCatchHandlerILOffset(This,pRetVal) )
-
-#define ISymUnmanagedAsyncMethod_GetCatchHandlerILOffset(This,pRetVal) \
- ( (This)->lpVtbl -> GetCatchHandlerILOffset(This,pRetVal) )
-
-#define ISymUnmanagedAsyncMethod_GetAsyncStepInfoCount(This,pRetVal) \
- ( (This)->lpVtbl -> GetAsyncStepInfoCount(This,pRetVal) )
-
-#define ISymUnmanagedAsyncMethod_GetAsyncStepInfo(This,cStepInfo,pcStepInfo,yieldOffsets,breakpointOffset,breakpointMethod) \
- ( (This)->lpVtbl -> GetAsyncStepInfo(This,cStepInfo,pcStepInfo,yieldOffsets,breakpointOffset,breakpointMethod) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __ISymUnmanagedAsyncMethod_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long __RPC_USER BSTR_UserSize( __RPC__in unsigned long *, unsigned long , __RPC__in BSTR * );
-unsigned char * __RPC_USER BSTR_UserMarshal( __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in BSTR * );
-unsigned char * __RPC_USER BSTR_UserUnmarshal(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out BSTR * );
-void __RPC_USER BSTR_UserFree( __RPC__in unsigned long *, __RPC__in BSTR * );
-
-unsigned long __RPC_USER VARIANT_UserSize( __RPC__in unsigned long *, unsigned long , __RPC__in VARIANT * );
-unsigned char * __RPC_USER VARIANT_UserMarshal( __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in VARIANT * );
-unsigned char * __RPC_USER VARIANT_UserUnmarshal(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out VARIANT * );
-void __RPC_USER VARIANT_UserFree( __RPC__in unsigned long *, __RPC__in VARIANT * );
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/native/dnmd/src/inc/internal/dnmd_platform.hpp b/src/native/dnmd/src/inc/internal/dnmd_platform.hpp
index 215a35e9a108d0..1ea570b76fb210 100644
--- a/src/native/dnmd/src/inc/internal/dnmd_platform.hpp
+++ b/src/native/dnmd/src/inc/internal/dnmd_platform.hpp
@@ -24,12 +24,13 @@
#include
#include
-#include
+#define _HRESULT_TYPEDEF_(_sc) ((HRESULT)_sc)
+
+#include
+#include
#include
#include
-#define ARRAY_SIZE(a) (sizeof(a) / sizeof(*a))
-
template
struct malloc_deleter_t final
{
diff --git a/src/native/dnmd/src/interfaces/CMakeLists.txt b/src/native/dnmd/src/interfaces/CMakeLists.txt
index c6749f486164a5..6a2247167044b4 100644
--- a/src/native/dnmd/src/interfaces/CMakeLists.txt
+++ b/src/native/dnmd/src/interfaces/CMakeLists.txt
@@ -61,43 +61,30 @@ target_compile_definitions(dnmd_interfaces PRIVATE DNMD_BUILD_SHARED COM_NO_WIND
target_link_libraries(dnmd_interfaces_static
PUBLIC
- dncp::dncp
+ minipal
+ minipal_com
dnmd::dnmd)
target_link_libraries(dnmd_interfaces
PRIVATE
- dncp::dncp
+ minipal
+ minipal_com
dnmd::dnmd)
if(NOT MSVC)
- target_link_libraries(dnmd_interfaces_static PUBLIC dncp::winhdrs)
- target_link_libraries(dnmd_interfaces PRIVATE dncp::winhdrs)
-endif()
-
-if (NOT WIN32)
- # Use ICU when running on macOS or Linux
- if (APPLE)
- set(ICU_FIND_COMPONENTS core)
- set(ICU_FIND_REQUIRED_core TRUE)
- set(ICU_TARGET_NAME ICU::core)
- elseif(UNIX)
- set(ICU_FIND_COMPONENTS uc)
- set(ICU_FIND_REQUIRED_uc TRUE)
- set(ICU_TARGET_NAME ICU::uc)
- endif()
- include(FindICU)
- target_link_libraries(dnmd_interfaces_static PUBLIC ${ICU_TARGET_NAME})
- target_link_libraries(dnmd_interfaces PRIVATE ${ICU_TARGET_NAME})
+ target_link_libraries(dnmd_interfaces_static PUBLIC minipal_comhdrs)
+ target_link_libraries(dnmd_interfaces PRIVATE minipal_comhdrs)
endif()
set_target_properties(dnmd_interfaces PROPERTIES
- PUBLIC_HEADER ../inc/dnmd_interfaces.hpp
- INTERPROCEDURAL_OPTIMIZATION $<$>:TRUE>)
+ PUBLIC_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/../inc/dnmd_interfaces.hpp)
-install(TARGETS dnmd_interfaces dnmd_interfaces_static EXPORT interfaces
- PUBLIC_HEADER DESTINATION include
- ARCHIVE DESTINATION lib
- LIBRARY DESTINATION lib
- RUNTIME DESTINATION bin)
+if (DNMD_INSTALL)
+ install(TARGETS dnmd_interfaces EXPORT interfaces
+ PUBLIC_HEADER DESTINATION include
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib
+ RUNTIME DESTINATION bin)
-install(EXPORT interfaces NAMESPACE dnmd:: FILE dnmdinterfaces.cmake DESTINATION lib/cmake/dnmd)
+ install(EXPORT interfaces NAMESPACE dnmd:: FILE dnmdinterfaces.cmake DESTINATION lib/cmake/dnmd)
+endif()
diff --git a/src/native/dnmd/src/interfaces/controllingiunknown.hpp b/src/native/dnmd/src/interfaces/controllingiunknown.hpp
index d971c6ff024b59..8561e5ef41439b 100644
--- a/src/native/dnmd/src/interfaces/controllingiunknown.hpp
+++ b/src/native/dnmd/src/interfaces/controllingiunknown.hpp
@@ -2,7 +2,7 @@
#define _SRC_INTERFACES_CONTROLLINGIUNKNOWN_HPP_
#include "tearoffbase.hpp"
-#include
+#include
#include
#include
#include
diff --git a/src/native/dnmd/src/interfaces/dispenser.cpp b/src/native/dnmd/src/interfaces/dispenser.cpp
index 9d9ec1e44f82c2..e26991564aa2b1 100644
--- a/src/native/dnmd/src/interfaces/dispenser.cpp
+++ b/src/native/dnmd/src/interfaces/dispenser.cpp
@@ -12,6 +12,7 @@
#include "metadataimportro.hpp"
#include "metadataemit.hpp"
#include "threadsafe.hpp"
+#include
#include
@@ -21,7 +22,7 @@ namespace
{
bool _threadSafe;
private:
- dncp::com_ptr CreateExposedObject(dncp::com_ptr unknown, DNMDOwner* owner)
+ minipal::com_ptr CreateExposedObject(minipal::com_ptr unknown, DNMDOwner* owner)
{
mdhandle_view handle_view{ owner };
MetadataEmit* emit = unknown->CreateAndAddTearOff(handle_view);
@@ -30,9 +31,9 @@ namespace
{
return unknown;
}
- dncp::com_ptr threadSafeUnknown;
+ minipal::com_ptr threadSafeUnknown;
threadSafeUnknown.Attach(new ControllingIUnknown());
-
+
// Define an IDNMDOwner* tear-off here so the thread-safe object can be identified as a DNMD object.
(void)threadSafeUnknown->CreateAndAddTearOff(handle_view);
(void)threadSafeUnknown->CreateAndAddTearOff>(std::move(unknown), import, emit);
@@ -74,21 +75,20 @@ namespace
mdhandle_ptr md_ptr { md_create_new_handle() };
if (md_ptr == nullptr)
return E_OUTOFMEMORY;
-
+
// Initialize the MVID of the new image.
mdcursor_t moduleCursor;
if (!md_token_to_cursor(md_ptr.get(), TokenFromRid(1, mdtModule), &moduleCursor))
return E_FAIL;
-
+
mdguid_t mvid;
- HRESULT hr = PAL_CoCreateGuid(reinterpret_cast(&mvid));
- if (FAILED(hr))
- return hr;
-
+ if (!minipal_guid_v4_create(&mvid))
+ return E_FAIL;
+
if (!md_set_column_value_as_guid(moduleCursor, mdtModule_Mvid, mvid))
return E_OUTOFMEMORY;
-
- dncp::com_ptr obj;
+
+ minipal::com_ptr obj;
obj.Attach(new (std::nothrow) ControllingIUnknown());
if (obj == nullptr)
return E_OUTOFMEMORY;
@@ -127,7 +127,7 @@ namespace
if (ppIUnk == nullptr)
return E_INVALIDARG;
- dncp::cotaskmem_ptr nowOwned;
+ minipal::cotaskmem_ptr nowOwned;
if (dwOpenFlags & ofTakeOwnership)
nowOwned.reset((void*)pData);
@@ -148,7 +148,7 @@ namespace
mdhandle_ptr md_ptr{ mdhandle };
- dncp::com_ptr obj;
+ minipal::com_ptr obj;
obj.Attach(new (std::nothrow) ControllingIUnknown());
if (obj == nullptr)
return E_OUTOFMEMORY;
@@ -164,7 +164,7 @@ namespace
(void)obj->CreateAndAddTearOff(std::move(handle_view));
return obj->QueryInterface(riid, (void**)ppIUnk);
}
-
+
// If we're read-write, go through our helper to create an object that respects all of the options
// (as the various options affect writing operations only).
return CreateExposedObject(std::move(obj), owner)->QueryInterface(riid, (void**)ppIUnk);
@@ -284,7 +284,7 @@ HRESULT GetDispenser(
try
{
- dncp::com_ptr obj;
+ minipal::com_ptr obj;
obj.Attach(new ControllingIUnknown());
(void)obj->CreateAndAddTearOff();
return obj->QueryInterface(riid, (void**)ppObj);
diff --git a/src/native/dnmd/src/interfaces/dnmdowner.hpp b/src/native/dnmd/src/interfaces/dnmdowner.hpp
index e79a272e18bdd8..7a6e35a07078f4 100644
--- a/src/native/dnmd/src/interfaces/dnmdowner.hpp
+++ b/src/native/dnmd/src/interfaces/dnmdowner.hpp
@@ -5,8 +5,8 @@
#include "tearoffbase.hpp"
#include "controllingiunknown.hpp"
-#include
-#include
+#include
+#include
#include
#include
@@ -71,7 +71,7 @@ class DNMDOwner final : public TearOffBase
private:
mdhandle_ptr _handle;
malloc_ptr _malloc_to_free;
- dncp::cotaskmem_ptr _cotaskmem_to_free;
+ minipal::cotaskmem_ptr _cotaskmem_to_free;
protected:
virtual bool TryGetInterfaceOnThis(REFIID riid, void** ppvObject) override
@@ -93,7 +93,7 @@ class DNMDOwner final : public TearOffBase
, _cotaskmem_to_free{ nullptr }
{ }
- DNMDOwner(IUnknown* controllingUnknown, mdhandle_ptr md_ptr, malloc_ptr mallocMem, dncp::cotaskmem_ptr cotaskmemMem)
+ DNMDOwner(IUnknown* controllingUnknown, mdhandle_ptr md_ptr, malloc_ptr mallocMem, minipal::cotaskmem_ptr cotaskmemMem)
: TearOffBase(controllingUnknown)
, _handle{ std::move(md_ptr) }
, _malloc_to_free{ std::move(mallocMem) }
diff --git a/src/native/dnmd/src/interfaces/iids.cpp b/src/native/dnmd/src/interfaces/iids.cpp
index f3d4634d674f22..5f33f00c9f59ef 100644
--- a/src/native/dnmd/src/interfaces/iids.cpp
+++ b/src/native/dnmd/src/interfaces/iids.cpp
@@ -1,12 +1,14 @@
#include
#include
-#define DNCP_DEFINE_GUID
-#include
+#define MINIPAL_COM_DEFINE_GUID
+#include
#define MIDL_DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
EXTERN_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
+MIDL_DEFINE_GUID(GUID_NULL, 0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
+
// Define the IMetaDataImport IID here - cor.h provides the declaration.
MIDL_DEFINE_GUID(IID_IMetaDataDispenser,0x809c652e,0x7396,0x11d2,0x97,0x71,0x00,0xa0,0xc9,0xb4,0xd5,0x0c);
MIDL_DEFINE_GUID(IID_IMetaDataDispenserEx, 0x31bcfce2, 0xdafb, 0x11d2, 0x9f, 0x81, 0x0, 0xc0, 0x4f, 0x79, 0xa0, 0xa3);
@@ -24,5 +26,9 @@ MIDL_DEFINE_GUID(IID_ISymUnmanagedBinder, 0xaa544d42, 0x28cb, 0x11d3, 0xbd, 0x22
MIDL_DEFINE_GUID(MetaDataThreadSafetyOptions, 0xf7559806, 0xf266, 0x42ea, 0x8c, 0x63, 0xa, 0xdb, 0x45, 0xe8, 0xb2, 0x34);
MIDL_DEFINE_GUID(CLSID_CLR_v2_MetaData, 0xefea471a, 0x44fd, 0x4862, 0x92, 0x92, 0xc, 0x58, 0xd4, 0x6e, 0x1f, 0x3a);
+// objidl.idl
+MIDL_DEFINE_GUID(IID_ISequentialStream, 0x0c733a30, 0x2a1c, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
+MIDL_DEFINE_GUID(IID_IStream, 0x0000000c, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
+
// Define an IID for our own marker interface
MIDL_DEFINE_GUID(IID_IDNMDOwner, 0x250ebc02, 0x1a92, 0x4638, 0xaa, 0x6c, 0x3d, 0x0f, 0x98, 0xb3, 0xa6, 0xfb);
diff --git a/src/native/dnmd/src/interfaces/importhelpers.cpp b/src/native/dnmd/src/interfaces/importhelpers.cpp
index d6281915d27c47..98328d42336ee0 100644
--- a/src/native/dnmd/src/interfaces/importhelpers.cpp
+++ b/src/native/dnmd/src/interfaces/importhelpers.cpp
@@ -1384,6 +1384,7 @@ namespace
// This type is from a file in the source assembly, so we need to create an AssemblyRef to the source assembly.
RETURN_IF_FAILED(ImportReferenceToAssembly(sourceAssembly, sourceAssemblyHash, targetModule, targetAssembly, onRowAdded, &targetOutermostScope));
}
+ FALLTHROUGH;
case mdtAssemblyRef:
{
// This type is a type-forward from another assembly.
@@ -1797,7 +1798,7 @@ HRESULT DefineImportMember(
// Define ModuleRef for imported Member functions
// Check if the Member being imported is a global function.
- dncp::com_ptr pEmitImport;
+ minipal::com_ptr pEmitImport;
RETURN_IF_FAILED(emit->QueryInterface(IID_IMetaDataImport, (void**)&pEmitImport));
RETURN_IF_FAILED(pEmitImport->GetScopeProps(nullptr, 0, nullptr, &mvidEmit));
diff --git a/src/native/dnmd/src/interfaces/metadataemit.cpp b/src/native/dnmd/src/interfaces/metadataemit.cpp
index d0e6a491e21002..f75fcd67c56472 100644
--- a/src/native/dnmd/src/interfaces/metadataemit.cpp
+++ b/src/native/dnmd/src/interfaces/metadataemit.cpp
@@ -8,6 +8,7 @@
#include
#include
#include
+#include
#define RETURN_IF_FAILED(exp) \
{ \
@@ -420,19 +421,19 @@ HRESULT MetadataEmit::DefineImportType(
mdTypeRef *ptr)
{
HRESULT hr;
- dncp::com_ptr assemImport{};
+ minipal::com_ptr assemImport{};
if (pAssemImport != nullptr)
RETURN_IF_FAILED(pAssemImport->QueryInterface(IID_IDNMDOwner, (void**)&assemImport));
- dncp::com_ptr assemEmit{};
+ minipal::com_ptr assemEmit{};
if (pAssemEmit != nullptr)
RETURN_IF_FAILED(pAssemEmit->QueryInterface(IID_IDNMDOwner, (void**)&assemEmit));
if (pImport == nullptr)
return E_INVALIDARG;
- dncp::com_ptr import{};
+ minipal::com_ptr import{};
RETURN_IF_FAILED(pImport->QueryInterface(IID_IDNMDOwner, (void**)&import));
mdcursor_t originalTypeDef;
@@ -1626,7 +1627,7 @@ namespace
if (strLen != (uint32_t) -1)
size = strLen * sizeof(WCHAR);
else
- size = (uint32_t)(sizeof(WCHAR) * PAL_wcslen((LPWSTR)pValue));
+ size = (uint32_t)(sizeof(WCHAR) * minipal_u16_strlen((CHAR16_T*)pValue));
break;
case ELEMENT_TYPE_CLASS:
@@ -2177,7 +2178,7 @@ HRESULT MetadataEmit::ApplyEditAndContinue(
IUnknown *pImport)
{
HRESULT hr;
- dncp::com_ptr delta;
+ minipal::com_ptr delta;
RETURN_IF_FAILED(pImport->QueryInterface(IID_IDNMDOwner, (void**)&delta));
if (!md_apply_delta(MetaData(), delta->MetaData()))
@@ -2201,22 +2202,22 @@ HRESULT MetadataEmit::TranslateSigWithScope(
ULONG *pcbTranslatedSig)
{
HRESULT hr;
- dncp::com_ptr assemImport{};
+ minipal::com_ptr assemImport{};
if (pAssemImport != nullptr)
RETURN_IF_FAILED(pAssemImport->QueryInterface(IID_IDNMDOwner, (void**)&assemImport));
- dncp::com_ptr assemEmit{};
+ minipal::com_ptr assemEmit{};
if (pAssemEmit != nullptr)
RETURN_IF_FAILED(pAssemEmit->QueryInterface(IID_IDNMDOwner, (void**)&assemEmit));
if (import == nullptr)
return E_INVALIDARG;
- dncp::com_ptr moduleImport{};
+ minipal::com_ptr moduleImport{};
RETURN_IF_FAILED(import->QueryInterface(IID_IDNMDOwner, (void**)&moduleImport));
- dncp::com_ptr moduleEmit{};
+ minipal::com_ptr moduleEmit{};
RETURN_IF_FAILED(emit->QueryInterface(IID_IDNMDOwner, (void**)&moduleEmit));
inline_span translatedSig;
diff --git a/src/native/dnmd/src/interfaces/metadataemit.hpp b/src/native/dnmd/src/interfaces/metadataemit.hpp
index 65ebd17ea87645..b8913d343286d3 100644
--- a/src/native/dnmd/src/interfaces/metadataemit.hpp
+++ b/src/native/dnmd/src/interfaces/metadataemit.hpp
@@ -6,8 +6,8 @@
#include "controllingiunknown.hpp"
#include "dnmdowner.hpp"
-#include
-#include
+#include
+#include
#include
#include
diff --git a/src/native/dnmd/src/interfaces/metadataimportro.hpp b/src/native/dnmd/src/interfaces/metadataimportro.hpp
index cb55a07d9bcf0b..2a7dc1ba50cec1 100644
--- a/src/native/dnmd/src/interfaces/metadataimportro.hpp
+++ b/src/native/dnmd/src/interfaces/metadataimportro.hpp
@@ -6,8 +6,8 @@
#include "controllingiunknown.hpp"
#include "dnmdowner.hpp"
-#include
-#include
+#include
+#include
#include
diff --git a/src/native/dnmd/src/interfaces/options.cpp b/src/native/dnmd/src/interfaces/options.cpp
index 6b35dbc3865401..d2aff168b345a0 100644
--- a/src/native/dnmd/src/interfaces/options.cpp
+++ b/src/native/dnmd/src/interfaces/options.cpp
@@ -1,8 +1,8 @@
#include
#include
-#define DNCP_DEFINE_GUID
-#include
+#define MINIPAL_COM_DEFINE_GUID
+#include
#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
EXTERN_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
diff --git a/src/native/dnmd/src/interfaces/pal.cpp b/src/native/dnmd/src/interfaces/pal.cpp
index 792f01655eba98..1a9a5811b5fe3b 100644
--- a/src/native/dnmd/src/interfaces/pal.cpp
+++ b/src/native/dnmd/src/interfaces/pal.cpp
@@ -3,12 +3,9 @@
#include
#include
#include
-
-#if defined(BUILD_MACOS) || defined(BUILD_UNIX)
-#include
-#endif
-
+#include
#include
+#include
#if defined(BUILD_WINDOWS)
#include
@@ -24,49 +21,35 @@ HRESULT pal::ConvertUtf16ToUtf8(
_Out_opt_ uint32_t* writtenOrNeeded)
{
assert(str != nullptr);
+ size_t length = minipal_u16_strlen((CHAR16_T*)str) + 1;
- int32_t length;
-#ifdef BUILD_WINDOWS
- length = ::WideCharToMultiByte(CP_UTF8, 0, str, -1, buffer, bufferLength, nullptr, nullptr);
- if (length <= 0)
+ size_t requiredBufferLength = minipal_get_length_utf16_to_utf8((CHAR16_T*)str, length, 0);
+
+ if (requiredBufferLength > std::numeric_limits::max())
{
- if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER)
- {
- if (writtenOrNeeded != nullptr)
- *writtenOrNeeded = ::WideCharToMultiByte(CP_UTF8, 0, str, -1, nullptr, 0, nullptr, nullptr);
- return E_NOT_SUFFICIENT_BUFFER;
- }
return E_FAIL;
}
-#elif defined(BUILD_MACOS) || defined(BUILD_UNIX)
- // Buffer lengths assume null terminator
- if (bufferLength > 0)
- bufferLength -= 1;
-
- UErrorCode err = U_ZERO_ERROR;
- (void)::u_strToUTF8(buffer, bufferLength, &length, (UChar const*)str, -1, &err);
- if (U_FAILURE(err))
- {
- if (err != U_BUFFER_OVERFLOW_ERROR)
- return E_FAIL;
- if (bufferLength != 0)
+ if (requiredBufferLength > bufferLength)
+ {
+ if (writtenOrNeeded != nullptr)
+ {
+ *writtenOrNeeded = (uint32_t)requiredBufferLength;
+ }
+ if (bufferLength == 0)
{
- if (writtenOrNeeded != nullptr)
- *writtenOrNeeded = (uint32_t)length + 1; // Add null terminator
- return E_NOT_SUFFICIENT_BUFFER;
+ return S_OK;
}
+ return E_NOT_SUFFICIENT_BUFFER;
}
- if (buffer != nullptr)
- buffer[length] = '\0';
- length += 1; // Add null terminator
-#else
-#error Missing implementation
-#endif // !BUILD_WINDOWS
- if (writtenOrNeeded != nullptr)
- *writtenOrNeeded = (uint32_t)length;
- return S_OK;
+ size_t written = minipal_convert_utf16_to_utf8((CHAR16_T*)str, length, buffer, bufferLength, 0);
+ if (written >= 0)
+ {
+ *writtenOrNeeded = (uint32_t)written;
+ return S_OK;
+ }
+ return E_FAIL;
}
HRESULT pal::ConvertUtf8ToUtf16(
@@ -76,49 +59,35 @@ HRESULT pal::ConvertUtf8ToUtf16(
_Out_opt_ uint32_t* writtenOrNeeded)
{
assert(str != nullptr);
+ size_t length = strlen(str) + 1;
+
+ size_t requiredBufferLength = minipal_get_length_utf8_to_utf16(str, length, 0);
- int32_t length;
-#ifdef BUILD_WINDOWS
- length = ::MultiByteToWideChar(CP_UTF8, 0, str, -1, buffer, bufferLength);
- if (length <= 0)
+ if (requiredBufferLength > std::numeric_limits::max())
{
- if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER)
- {
- if (writtenOrNeeded != nullptr)
- *writtenOrNeeded = ::MultiByteToWideChar(CP_UTF8, 0, str, -1, nullptr, 0);
- return E_NOT_SUFFICIENT_BUFFER;
- }
return E_FAIL;
}
-#elif defined(BUILD_MACOS) || defined(BUILD_UNIX)
- // Buffer lengths assume null terminator
- if (bufferLength > 0)
- bufferLength -= 1;
-
- UErrorCode err = U_ZERO_ERROR;
- (void)::u_strFromUTF8((UChar*)buffer, bufferLength, &length, str, -1, &err);
- if (U_FAILURE(err))
- {
- if (err != U_BUFFER_OVERFLOW_ERROR)
- return E_FAIL;
- if (bufferLength != 0)
+ if (requiredBufferLength > bufferLength)
+ {
+ if (writtenOrNeeded != nullptr)
{
- if (writtenOrNeeded != nullptr)
- *writtenOrNeeded = (uint32_t)length + 1; // Add null terminator
- return E_NOT_SUFFICIENT_BUFFER;
+ *writtenOrNeeded = (uint32_t)requiredBufferLength;
}
+ if (bufferLength == 0)
+ {
+ return S_OK;
+ }
+ return E_NOT_SUFFICIENT_BUFFER;
}
- if (buffer != nullptr)
- buffer[length] = W('\0');
- length += 1; // Add null terminator
-#else
-#error Missing implementation
-#endif // !BUILD_WINDOWS
- if (writtenOrNeeded != nullptr)
- *writtenOrNeeded = (uint32_t)length;
- return S_OK;
+ size_t written = minipal_convert_utf8_to_utf16(str, length, (CHAR16_T*)buffer, bufferLength, 0);
+ if (written >= 0)
+ {
+ *writtenOrNeeded = (uint32_t)written;
+ return S_OK;
+ }
+ return E_FAIL;
}
template<>
diff --git a/src/native/dnmd/src/interfaces/signatures.hpp b/src/native/dnmd/src/interfaces/signatures.hpp
index b6c02b0c78b36d..1cdd6c621d3b9b 100644
--- a/src/native/dnmd/src/interfaces/signatures.hpp
+++ b/src/native/dnmd/src/interfaces/signatures.hpp
@@ -4,7 +4,7 @@
#include
#include
-#include
+#include
#include
#include
diff --git a/src/native/dnmd/src/interfaces/symbinder.cpp b/src/native/dnmd/src/interfaces/symbinder.cpp
index 5e34eac0eb6b8d..10bdf9391fba35 100644
--- a/src/native/dnmd/src/interfaces/symbinder.cpp
+++ b/src/native/dnmd/src/interfaces/symbinder.cpp
@@ -9,9 +9,9 @@
#include
#include "dnmd_interfaces.hpp"
-#include
-#include
-#include
+#include
+#include
+#include
EXTERN_GUID(IID_ISymUnmanagedBinder, 0xaa544d42, 0x28cb, 0x11d3, 0xbd, 0x22, 0x00, 0x00, 0xf8, 0x08, 0x49, 0xbd);
diff --git a/src/native/dnmd/src/interfaces/threadsafe.hpp b/src/native/dnmd/src/interfaces/threadsafe.hpp
index 2b5fdf8b6e5ec5..c0937d984964ef 100644
--- a/src/native/dnmd/src/interfaces/threadsafe.hpp
+++ b/src/native/dnmd/src/interfaces/threadsafe.hpp
@@ -8,8 +8,8 @@
#include "pal.hpp"
#include "importhelpers.hpp"
-#include
-#include
+#include
+#include
#include
#include
@@ -49,7 +49,7 @@ class ThreadSafeImportEmit : public TearOffBase _threadUnsafe;
+ minipal::com_ptr _threadUnsafe;
// non-owning reference to the concrete non-locking implementations
TImport* _import;
TEmit* _emit;
@@ -82,7 +82,7 @@ class ThreadSafeImportEmit : public TearOffBase&& threadUnsafe, TImport* import, TEmit* emit)
+ ThreadSafeImportEmit(IUnknown* controllingUnknown, minipal::com_ptr&& threadUnsafe, TImport* import, TEmit* emit)
: TearOffBase(controllingUnknown)
, _lock { }
, _threadUnsafe{ std::move(threadUnsafe) }
diff --git a/src/native/dnmd/src/mddump/CMakeLists.txt b/src/native/dnmd/src/mddump/CMakeLists.txt
index 2b3480cac48c7d..a8c228b9c7a292 100644
--- a/src/native/dnmd/src/mddump/CMakeLists.txt
+++ b/src/native/dnmd/src/mddump/CMakeLists.txt
@@ -8,10 +8,12 @@ add_executable(mddump
target_link_libraries(mddump
dnmd::pdb
- dncp::dncp)
+ minipal_com)
if(NOT MSVC)
- target_link_libraries(mddump dncp::winhdrs)
+ target_link_libraries(mddump minipal_comhdrs)
endif()
-install(TARGETS mddump)
\ No newline at end of file
+if (DNMD_INSTALL)
+ install(TARGETS mddump)
+endif()
\ No newline at end of file
diff --git a/src/native/dnmd/src/mdmerge/CMakeLists.txt b/src/native/dnmd/src/mdmerge/CMakeLists.txt
index d56073d0cfc9d1..2a0ee341cae91a 100644
--- a/src/native/dnmd/src/mdmerge/CMakeLists.txt
+++ b/src/native/dnmd/src/mdmerge/CMakeLists.txt
@@ -8,10 +8,12 @@ add_executable(mdmerge
target_link_libraries(mdmerge
dnmd::dnmd
- dncp::dncp)
+ minipal_com)
if(NOT MSVC)
- target_link_libraries(mdmerge dncp::winhdrs)
+ target_link_libraries(mdmerge minipal_comhdrs)
endif()
-install(TARGETS mdmerge)
\ No newline at end of file
+if (DNMD_INSTALL)
+ install(TARGETS mdmerge)
+endif()
\ No newline at end of file
diff --git a/src/native/dnmd/test/CMakeLists.txt b/src/native/dnmd/test/CMakeLists.txt
index e7b2029d6d7d1b..20c2c2db8c4c6d 100644
--- a/src/native/dnmd/test/CMakeLists.txt
+++ b/src/native/dnmd/test/CMakeLists.txt
@@ -14,9 +14,11 @@ FetchContent_Declare(
GIT_TAG
v1.14.0
)
+
# For Windows: Prevent overriding the parent project's compiler/linker settings
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
set(INSTALL_GTEST OFF CACHE BOOL "" FORCE)
+set_property(DIRECTORY ${googletest_SOURCE_DIR} PROPERTY SET_SOURCE_CHARSET OFF)
FetchContent_Declare(
benchmark
@@ -29,8 +31,24 @@ FetchContent_Declare(
# Don't build the tests for the benchmark library.
set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "" FORCE)
set(BENCHMARK_ENABLE_INSTALL OFF CACHE BOOL "" FORCE)
+
FetchContent_MakeAvailable(googletest benchmark)
+if (WIN32)
+ FetchContent_Declare(
+ wil
+ GIT_REPOSITORY
+ https://github.com/microsoft/wil.git
+ GIT_TAG
+ v1.0.231216.1
+ )
+
+ set(WIL_BUILD_PACKAGING OFF CACHE BOOL "" FORCE)
+ set(WIL_BUILD_TESTS OFF CACHE BOOL "" FORCE)
+
+ FetchContent_MakeAvailable(wil)
+endif()
+
include(GoogleTest)
set(CMAKE_CXX_STANDARD 17)
diff --git a/src/native/dnmd/test/Common/Attributes.cs b/src/native/dnmd/test/Common/Attributes.cs
deleted file mode 100644
index 0eb9407f9480d7..00000000000000
--- a/src/native/dnmd/test/Common/Attributes.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System.Runtime.InteropServices;
-
-using Xunit;
-
-namespace Common
-{
- public sealed class WindowsOnlyTheoryAttribute : TheoryAttribute
- {
- public WindowsOnlyTheoryAttribute()
- {
- if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
- {
- Skip = "Only run on Windows";
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/native/dnmd/test/Common/Dispensers.cs b/src/native/dnmd/test/Common/Dispensers.cs
deleted file mode 100644
index 8fda20fe3b4913..00000000000000
--- a/src/native/dnmd/test/Common/Dispensers.cs
+++ /dev/null
@@ -1,88 +0,0 @@
-//#define NETFX_20_BASELINE
-//#define NETFX_40_BASELINE
-
-using Microsoft.Win32;
-using System.Runtime.InteropServices;
-using System.Runtime.Versioning;
-
-namespace Common
-{
- internal static class Dispensers
- {
- ///
- /// Get the baseline IMetaDataDispenser implementation as a pointer.
- ///
- public static nint Baseline { get; } = GetBaselineRaw();
-
- ///
- /// Directory for NET Framework 2.0
- ///
- [SupportedOSPlatform("windows")]
- public static string NetFx20Dir { get; } = GetNetFx20Install();
-
- ///
- /// Directory for NET Framework 4.0
- ///
- [SupportedOSPlatform("windows")]
- public static string NetFx40Dir { get; } = GetNetFx40Install();
-
- ///
- /// Get the IMetaDataDispenser implementation that can be used to build images
- /// with deltas to fill the pointer tables.
- ///
- public static nint DeltaImageBuilder { get; } = GetBaselineRaw();
-
- private static unsafe nint GetBaselineRaw()
- {
-#if NETFX_20_BASELINE
- var baseline = Path.Combine(GetNetFx20Install(), "mscorwks.dll");
-#elif NETFX_40_BASELINE
- var baseline = Path.Combine(GetNetFx40Install(), "clr.dll");
-#else
- var runtimeName =
- OperatingSystem.IsWindows() ? "coreclr.dll"
- : OperatingSystem.IsMacOS() ? "libcoreclr.dylib"
- : "libcoreclr.so";
-
- var baseline = Path.Combine(Path.GetDirectoryName(typeof(object).Assembly.Location)!, runtimeName);
-#endif
-
- nint mod = NativeLibrary.Load(baseline);
- var getter = (delegate* unmanaged)NativeLibrary.GetExport(mod, "MetaDataGetDispenser");
-
- Guid clsid = new("E5CB7A31-7512-11D2-89CE-0080C792E5D8"); //CLSID_CorMetaDataDispenserRuntime
- Guid iid = new("809C652E-7396-11D2-9771-00A0C9B4D50C"); // IID_IMetaDataDispenser
- int result = getter(in clsid, in iid, out nint dispenser);
- if (result < 0)
- {
- Marshal.ThrowExceptionForHR(result);
- }
-
- return dispenser;
- }
-
- [SupportedOSPlatform("windows")]
- private static string GetNetFx20Install()
- {
- if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
- {
- return string.Empty;
- }
-
- using var key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\.NETFramework")!;
- return Path.Combine((string)key.GetValue("InstallRoot")!, "v2.0.50727");
- }
-
- [SupportedOSPlatform("windows")]
- private static string GetNetFx40Install()
- {
- if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
- {
- return string.Empty;
- }
-
- using var key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\.NETFramework")!;
- return Path.Combine((string)key.GetValue("InstallRoot")!, "v4.0.30319");
- }
- }
-}
diff --git a/src/native/dnmd/test/Common/Native.cs b/src/native/dnmd/test/Common/Native.cs
deleted file mode 100644
index 128708ea965a7a..00000000000000
--- a/src/native/dnmd/test/Common/Native.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-using System.Runtime.InteropServices;
-using System.Text;
-
-using Xunit;
-
-namespace Common
-{
- public static class Native
- {
- public static string Path => OperatingSystem.IsWindows() ? "regnative.dll"
- : OperatingSystem.IsMacOS() ? "libregnative.dylib"
- : "libregnative.so";
- }
-
- public enum TestState
- {
- Fail,
- Pass
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public unsafe struct TestResult
- {
- public TestState State;
- public byte* FailureMessage;
- public delegate* unmanaged Free;
-
- public void Check()
- {
- if (State != TestState.Pass)
- {
- Assert.True(FailureMessage != null);
- Assert.True(Free != null);
- string msg = Encoding.UTF8.GetString(MemoryMarshal.CreateReadOnlySpanFromNullTerminated(FailureMessage));
- Free(FailureMessage);
- Assert.Fail(msg);
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/native/dnmd/Directory.Build.props b/src/native/dnmd/test/Directory.Build.props
similarity index 85%
rename from src/native/dnmd/Directory.Build.props
rename to src/native/dnmd/test/Directory.Build.props
index c81492118af846..556ef2c914a10d 100644
--- a/src/native/dnmd/Directory.Build.props
+++ b/src/native/dnmd/test/Directory.Build.props
@@ -1,7 +1,7 @@
true
- $(MSBuildThisFileDirectory)/artifacts/managed
+ $(MSBuildThisFileDirectory)/../artifacts/managed
$(BaseArtifactsPath)/bin
diff --git a/src/native/dnmd/test/Directory.Build.targets b/src/native/dnmd/test/Directory.Build.targets
new file mode 100644
index 00000000000000..c1df2220ddc6e3
--- /dev/null
+++ b/src/native/dnmd/test/Directory.Build.targets
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/src/native/dnmd/test/emit/assembly.cpp b/src/native/dnmd/test/emit/assembly.cpp
index d7c124c485c0d0..292d4c2d8510b0 100644
--- a/src/native/dnmd/test/emit/assembly.cpp
+++ b/src/native/dnmd/test/emit/assembly.cpp
@@ -2,7 +2,7 @@
TEST(Assembly, DefineNoPublicKey)
{
- dncp::com_ptr emit;
+ minipal::com_ptr emit;
ASSERT_NO_FATAL_FAILURE(CreateEmit(emit));
mdAssembly assembly;
@@ -19,7 +19,7 @@ TEST(Assembly, DefineNoPublicKey)
ASSERT_EQ(1, RidFromToken(assembly));
ASSERT_EQ(mdtAssembly, TypeFromToken(assembly));
- dncp::com_ptr import;
+ minipal::com_ptr import;
ASSERT_EQ(S_OK, emit->QueryInterface(IID_IMetaDataAssemblyImport, (void**)&import));
ASSEMBLYMETADATA metadata;
@@ -33,7 +33,7 @@ TEST(Assembly, DefineNoPublicKey)
ULONG assemblyNameLen;
void const* publicKey;
ULONG publicKeyLength;
- ASSERT_EQ(S_OK, import->GetAssemblyProps(assembly, &publicKey, &publicKeyLength, &importHashAlgId, assemblyName.data(), (ULONG)assemblyName.capacity(), &assemblyNameLen, &metadata, & assemblyFlags));
+ ASSERT_EQ(S_OK, import->GetAssemblyProps(assembly, &publicKey, &publicKeyLength, &importHashAlgId, &assemblyName[0], (ULONG)assemblyName.capacity(), &assemblyNameLen, &metadata, & assemblyFlags));
EXPECT_EQ(0, assemblyFlags);
EXPECT_EQ(W("AssemblyName"), assemblyName.substr(0, assemblyNameLen - 1));
EXPECT_EQ(1, metadata.usMajorVersion);
diff --git a/src/native/dnmd/test/emit/assemblyref.cpp b/src/native/dnmd/test/emit/assemblyref.cpp
index 9a13eb84eaaa39..fc01d3a2c44505 100644
--- a/src/native/dnmd/test/emit/assemblyref.cpp
+++ b/src/native/dnmd/test/emit/assemblyref.cpp
@@ -2,7 +2,7 @@
TEST(AssemblyRef, DefineNoPublicKey)
{
- dncp::com_ptr emit;
+ minipal::com_ptr emit;
ASSERT_NO_FATAL_FAILURE(CreateEmit(emit));
mdAssembly assembly;
@@ -18,7 +18,7 @@ TEST(AssemblyRef, DefineNoPublicKey)
ASSERT_EQ(1, RidFromToken(assembly));
ASSERT_EQ(mdtAssemblyRef, TypeFromToken(assembly));
- dncp::com_ptr import;
+ minipal::com_ptr import;
ASSERT_EQ(S_OK, emit->QueryInterface(IID_IMetaDataAssemblyImport, (void**)&import));
ASSEMBLYMETADATA metadata;
@@ -33,7 +33,7 @@ TEST(AssemblyRef, DefineNoPublicKey)
ULONG publicKeyLength;
void const* hash;
ULONG hashLength;
- ASSERT_EQ(S_OK, import->GetAssemblyRefProps(assembly, &publicKey, &publicKeyLength, assemblyName.data(), (ULONG)assemblyName.capacity(), &assemblyNameLen, &metadata, &hash, &hashLength, &assemblyFlags));
+ ASSERT_EQ(S_OK, import->GetAssemblyRefProps(assembly, &publicKey, &publicKeyLength, &assemblyName[0], (ULONG)assemblyName.capacity(), &assemblyNameLen, &metadata, &hash, &hashLength, &assemblyFlags));
EXPECT_EQ(0, assemblyFlags);
EXPECT_EQ(nullptr, hash);
EXPECT_EQ(0, hashLength);
diff --git a/src/native/dnmd/test/emit/emit.hpp b/src/native/dnmd/test/emit/emit.hpp
index fa214a63f58400..9b9ac7cfb7a15e 100644
--- a/src/native/dnmd/test/emit/emit.hpp
+++ b/src/native/dnmd/test/emit/emit.hpp
@@ -7,7 +7,7 @@
#include
#include
-#include
+#include
#include
#include
#include
@@ -16,23 +16,23 @@
using WSTR_string = std::basic_string;
-inline void CreateEmit(dncp::com_ptr& emit)
+inline void CreateEmit(minipal::com_ptr& emit)
{
- dncp::com_ptr dispenser;
+ minipal::com_ptr dispenser;
ASSERT_EQ(S_OK, GetDispenser(IID_IMetaDataDispenser, (void**)&dispenser));
ASSERT_EQ(S_OK, dispenser->DefineScope(CLSID_CorMetaDataRuntime, 0, IID_IMetaDataEmit, (IUnknown**)&emit));
}
-inline void CreateEmit(dncp::com_ptr& emit)
+inline void CreateEmit(minipal::com_ptr& emit)
{
- dncp::com_ptr dispenser;
+ minipal::com_ptr dispenser;
ASSERT_EQ(S_OK, GetDispenser(IID_IMetaDataDispenser, (void**)&dispenser));
ASSERT_EQ(S_OK, dispenser->DefineScope(CLSID_CorMetaDataRuntime, 0, IID_IMetaDataEmit2, (IUnknown**)&emit));
}
-inline void CreateEmit(dncp::com_ptr& emit)
+inline void CreateEmit(minipal::com_ptr& emit)
{
- dncp::com_ptr dispenser;
+ minipal::com_ptr dispenser;
ASSERT_EQ(S_OK, GetDispenser(IID_IMetaDataDispenser, (void**)&dispenser));
ASSERT_EQ(S_OK, dispenser->DefineScope(CLSID_CorMetaDataRuntime, 0, IID_IMetaDataAssemblyEmit, (IUnknown**)&emit));
}
diff --git a/src/native/dnmd/test/emit/fieldmarshal.cpp b/src/native/dnmd/test/emit/fieldmarshal.cpp
index 3b2d02ecfbccb8..238ad8872215bd 100644
--- a/src/native/dnmd/test/emit/fieldmarshal.cpp
+++ b/src/native/dnmd/test/emit/fieldmarshal.cpp
@@ -5,7 +5,7 @@
TEST(FieldMarshal, DefineAndDelete)
{
// Define a field
- dncp::com_ptr emit;
+ minipal::com_ptr emit;
ASSERT_NO_FATAL_FAILURE(CreateEmit(emit));
mdFieldDef field;
mdTypeDef type;
@@ -18,7 +18,7 @@ TEST(FieldMarshal, DefineAndDelete)
ASSERT_EQ(S_OK, emit->SetFieldMarshal(field, marshalSignature.data(), (ULONG)marshalSignature.size()));
// Read the field marshal signature
- dncp::com_ptr import;
+ minipal::com_ptr import;
ASSERT_EQ(S_OK, emit->QueryInterface(IID_IMetaDataImport, (void**)&import));
ULONG readMarshalLength;
diff --git a/src/native/dnmd/test/emit/fieldrva.cpp b/src/native/dnmd/test/emit/fieldrva.cpp
index b46b97549d0c1f..4f3620894c9dfd 100644
--- a/src/native/dnmd/test/emit/fieldrva.cpp
+++ b/src/native/dnmd/test/emit/fieldrva.cpp
@@ -3,7 +3,7 @@
TEST(FieldRva, Define)
{
// Define a field
- dncp::com_ptr emit;
+ minipal::com_ptr emit;
ASSERT_NO_FATAL_FAILURE(CreateEmit(emit));
mdFieldDef field;
mdTypeDef type;
@@ -16,7 +16,7 @@ TEST(FieldRva, Define)
ASSERT_EQ(S_OK, emit->SetFieldRVA(field, rva));
// Read the field marshal signature
- dncp::com_ptr import;
+ minipal::com_ptr import;
ASSERT_EQ(S_OK, emit->QueryInterface(IID_IMetaDataImport, (void**)&import));
DWORD readRva = 0;
diff --git a/src/native/dnmd/test/emit/memberref.cpp b/src/native/dnmd/test/emit/memberref.cpp
index 0aafdd0b6efacd..7671b902406dce 100644
--- a/src/native/dnmd/test/emit/memberref.cpp
+++ b/src/native/dnmd/test/emit/memberref.cpp
@@ -5,7 +5,7 @@
TEST(MemberRef, Define)
{
- dncp::com_ptr emit;
+ minipal::com_ptr emit;
ASSERT_NO_FATAL_FAILURE(CreateEmit(emit));
mdMemberRef memberRef;
std::array signature = {0x01, 0x02, 0x03};
@@ -13,7 +13,7 @@ TEST(MemberRef, Define)
ASSERT_EQ(1, RidFromToken(memberRef));
ASSERT_EQ(mdtMemberRef, TypeFromToken(memberRef));
- dncp::com_ptr import;
+ minipal::com_ptr import;
ASSERT_EQ(S_OK, emit->QueryInterface(IID_IMetaDataImport, (void**)&import));
mdTypeDef type;
@@ -22,15 +22,15 @@ TEST(MemberRef, Define)
ULONG readNameLength;
PCCOR_SIGNATURE sigBlob;
ULONG sigBlobLength;
- ASSERT_EQ(S_OK, import->GetMemberRefProps(memberRef, &type, readName.data(), (ULONG)readName.capacity(), &readNameLength, &sigBlob, &sigBlobLength));
+ ASSERT_EQ(S_OK, import->GetMemberRefProps(memberRef, &type, &readName[0], (ULONG)readName.capacity(), &readNameLength, &sigBlob, &sigBlobLength));
EXPECT_EQ(W("Foo"), readName.substr(0, readNameLength - 1));
EXPECT_EQ(TokenFromRid(1, mdtTypeDef), type);
- EXPECT_THAT(std::vector(sigBlob, sigBlob + sigBlobLength), testing::ContainerEq(std::vector(signature.begin(), signature.end())));
+ EXPECT_THAT(std::vector(sigBlob, sigBlob + sigBlobLength), testing::ContainerEq(std::vector(signature.begin(), signature.end())));
}
TEST(MemberRef, SetParent)
{
- dncp::com_ptr emit;
+ minipal::com_ptr emit;
ASSERT_NO_FATAL_FAILURE(CreateEmit(emit));
mdMemberRef memberRef;
std::array signature = {0x01, 0x02, 0x03};
@@ -38,7 +38,7 @@ TEST(MemberRef, SetParent)
ASSERT_EQ(1, RidFromToken(memberRef));
ASSERT_EQ(mdtMemberRef, TypeFromToken(memberRef));
- dncp::com_ptr import;
+ minipal::com_ptr import;
ASSERT_EQ(S_OK, emit->QueryInterface(IID_IMetaDataImport, (void**)&import));
mdToken parent;
@@ -47,16 +47,16 @@ TEST(MemberRef, SetParent)
ULONG readNameLength;
PCCOR_SIGNATURE sigBlob;
ULONG sigBlobLength;
- ASSERT_EQ(S_OK, import->GetMemberRefProps(memberRef, &parent, readName.data(), (ULONG)readName.capacity(), &readNameLength, &sigBlob, &sigBlobLength));
+ ASSERT_EQ(S_OK, import->GetMemberRefProps(memberRef, &parent, &readName[0], (ULONG)readName.capacity(), &readNameLength, &sigBlob, &sigBlobLength));
EXPECT_EQ(W("Foo"), readName.substr(0, readNameLength - 1));
EXPECT_EQ(TokenFromRid(1, mdtTypeDef), parent);
- EXPECT_THAT(std::vector(sigBlob, sigBlob + sigBlobLength), testing::ContainerEq(std::vector(signature.begin(), signature.end())));
+ EXPECT_THAT(std::vector(sigBlob, sigBlob + sigBlobLength), testing::ContainerEq(std::vector(signature.begin(), signature.end())));
ASSERT_EQ(S_OK, emit->SetParent(memberRef, TokenFromRid(2, mdtTypeRef)));
readName.resize(3);
- ASSERT_EQ(S_OK, import->GetMemberRefProps(memberRef, &parent, readName.data(), (ULONG)readName.capacity(), &readNameLength, &sigBlob, &sigBlobLength));
+ ASSERT_EQ(S_OK, import->GetMemberRefProps(memberRef, &parent, &readName[0], (ULONG)readName.capacity(), &readNameLength, &sigBlob, &sigBlobLength));
EXPECT_EQ(W("Foo"), readName.substr(0, readNameLength - 1));
EXPECT_EQ(TokenFromRid(2, mdtTypeRef), parent);
- EXPECT_THAT(std::vector(sigBlob, sigBlob + sigBlobLength), testing::ContainerEq(std::vector(signature.begin(), signature.end())));
+ EXPECT_THAT(std::vector(sigBlob, sigBlob + sigBlobLength), testing::ContainerEq(std::vector(signature.begin(), signature.end())));
}
\ No newline at end of file
diff --git a/src/native/dnmd/test/emit/methoddef.cpp b/src/native/dnmd/test/emit/methoddef.cpp
index d6ab94839c42e2..d30e0f0011eecf 100644
--- a/src/native/dnmd/test/emit/methoddef.cpp
+++ b/src/native/dnmd/test/emit/methoddef.cpp
@@ -4,17 +4,17 @@
TEST(MethodDef, Define)
{
- dncp::com_ptr emit;
+ minipal::com_ptr emit;
ASSERT_NO_FATAL_FAILURE(CreateEmit(emit));
mdMethodDef methodDef;
// TypeDef,1 is the type.
- std::array sig = { (uint8_t)IMAGE_CEE_CS_CALLCONV_DEFAULT, (uint8_t)0, (uint8_t)ELEMENT_TYPE_VOID };
+ std::array sig = { (uint8_t)IMAGE_CEE_CS_CALLCONV_DEFAULT, (uint8_t)0, (uint8_t)ELEMENT_TYPE_VOID };
ULONG rva = 0x424242;
ASSERT_EQ(S_OK, emit->DefineMethod(TokenFromRid(1, mdtTypeDef), W("Foo"), mdStatic, sig.data(), (ULONG)sig.size(), rva, 0, &methodDef));
ASSERT_EQ(1, RidFromToken(methodDef));
ASSERT_EQ(mdtMethodDef, TypeFromToken(methodDef));
- dncp::com_ptr import;
+ minipal::com_ptr import;
ASSERT_EQ(S_OK, emit->QueryInterface(IID_IMetaDataImport, (void**)&import));
mdTypeDef type;
@@ -27,37 +27,37 @@ TEST(MethodDef, Define)
ULONG sigBlobLength;
ULONG codeRVA;
DWORD implFlags;
- ASSERT_EQ(S_OK, import->GetMethodProps(methodDef, &type, readName.data(), (ULONG)readName.capacity(), &readNameLength, &attr, &sigBlob, &sigBlobLength, &codeRVA, &implFlags));
+ ASSERT_EQ(S_OK, import->GetMethodProps(methodDef, &type, &readName[0], (ULONG)readName.capacity(), &readNameLength, &attr, &sigBlob, &sigBlobLength, &codeRVA, &implFlags));
EXPECT_EQ(W("Foo"), readName.substr(0, readNameLength - 1));
EXPECT_EQ(mdStatic, attr);
EXPECT_EQ(rva, codeRVA);
EXPECT_EQ(0, implFlags);
- EXPECT_THAT(std::vector(sigBlob, sigBlob + sigBlobLength), testing::ContainerEq(std::vector(sig.begin(), sig.end())));
+ EXPECT_THAT(std::vector(sigBlob, sigBlob + sigBlobLength), testing::ContainerEq(std::vector(sig.begin(), sig.end())));
}
TEST(MethodDef, DefineWithInvalidType)
{
- dncp::com_ptr emit;
+ minipal::com_ptr emit;
ASSERT_NO_FATAL_FAILURE(CreateEmit(emit));
mdMethodDef methodDef;
- std::array sig = { (uint8_t)IMAGE_CEE_CS_CALLCONV_DEFAULT, (uint8_t)0, (uint8_t)ELEMENT_TYPE_VOID };
+ std::array sig = { (uint8_t)IMAGE_CEE_CS_CALLCONV_DEFAULT, (uint8_t)0, (uint8_t)ELEMENT_TYPE_VOID };
ULONG rva = 0x424242;
ASSERT_EQ(CLDB_E_FILE_CORRUPT, emit->DefineMethod(TokenFromRid(2, mdtTypeDef), W("Foo"), mdStatic, sig.data(), (ULONG)sig.size(), rva, 0, &methodDef));
}
TEST(MethodDef, SetRva)
{
- dncp::com_ptr emit;
+ minipal::com_ptr emit;
ASSERT_NO_FATAL_FAILURE(CreateEmit(emit));
mdMethodDef methodDef;
- std::array sig = { (uint8_t)IMAGE_CEE_CS_CALLCONV_DEFAULT, (uint8_t)0, (uint8_t)ELEMENT_TYPE_VOID };
+ std::array sig = { (uint8_t)IMAGE_CEE_CS_CALLCONV_DEFAULT, (uint8_t)0, (uint8_t)ELEMENT_TYPE_VOID };
ULONG rva = 0x424242;
ASSERT_EQ(S_OK, emit->DefineMethod(TokenFromRid(1, mdtTypeDef), W("Foo"), mdStatic, sig.data(), (ULONG)sig.size(), rva, 0, &methodDef));
ASSERT_EQ(1, RidFromToken(methodDef));
ASSERT_EQ(mdtMethodDef, TypeFromToken(methodDef));
- dncp::com_ptr import;
+ minipal::com_ptr import;
ASSERT_EQ(S_OK, emit->QueryInterface(IID_IMetaDataImport, (void**)&import));
ULONG newRva = 0x123456;
@@ -73,26 +73,26 @@ TEST(MethodDef, SetRva)
ULONG sigBlobLength;
ULONG codeRVA;
DWORD implFlags;
- ASSERT_EQ(S_OK, import->GetMethodProps(methodDef, &type, readName.data(), (ULONG)readName.capacity(), &readNameLength, &attr, &sigBlob, &sigBlobLength, &codeRVA, &implFlags));
+ ASSERT_EQ(S_OK, import->GetMethodProps(methodDef, &type, &readName[0], (ULONG)readName.capacity(), &readNameLength, &attr, &sigBlob, &sigBlobLength, &codeRVA, &implFlags));
EXPECT_EQ(W("Foo"), readName.substr(0, readNameLength - 1));
EXPECT_EQ(mdStatic, attr);
EXPECT_EQ(newRva, codeRVA);
EXPECT_EQ(0, implFlags);
- EXPECT_THAT(std::vector(sigBlob, sigBlob + sigBlobLength), testing::ContainerEq(std::vector(sig.begin(), sig.end())));
+ EXPECT_THAT(std::vector(sigBlob, sigBlob + sigBlobLength), testing::ContainerEq(std::vector(sig.begin(), sig.end())));
}
TEST(MethodDef, SetProps)
{
- dncp::com_ptr emit;
+ minipal::com_ptr emit;
ASSERT_NO_FATAL_FAILURE(CreateEmit(emit));
mdMethodDef methodDef;
- std::array sig = { (uint8_t)IMAGE_CEE_CS_CALLCONV_DEFAULT, (uint8_t)0, (uint8_t)ELEMENT_TYPE_VOID };
+ std::array sig = { (uint8_t)IMAGE_CEE_CS_CALLCONV_DEFAULT, (uint8_t)0, (uint8_t)ELEMENT_TYPE_VOID };
ULONG rva = 0x424242;
ASSERT_EQ(S_OK, emit->DefineMethod(TokenFromRid(1, mdtTypeDef), W("Foo"), mdStatic, sig.data(), (ULONG)sig.size(), rva, 0, &methodDef));
ASSERT_EQ(1, RidFromToken(methodDef));
ASSERT_EQ(mdtMethodDef, TypeFromToken(methodDef));
- dncp::com_ptr import;
+ minipal::com_ptr import;
ASSERT_EQ(S_OK, emit->QueryInterface(IID_IMetaDataImport, (void**)&import));
ULONG newRva = 0x123456;
@@ -108,10 +108,10 @@ TEST(MethodDef, SetProps)
ULONG sigBlobLength;
ULONG codeRVA;
DWORD implFlags;
- ASSERT_EQ(S_OK, import->GetMethodProps(methodDef, &type, readName.data(), (ULONG)readName.capacity(), &readNameLength, &attr, &sigBlob, &sigBlobLength, &codeRVA, &implFlags));
+ ASSERT_EQ(S_OK, import->GetMethodProps(methodDef, &type, &readName[0], (ULONG)readName.capacity(), &readNameLength, &attr, &sigBlob, &sigBlobLength, &codeRVA, &implFlags));
EXPECT_EQ(W("Foo"), readName.substr(0, readNameLength - 1));
EXPECT_EQ(mdPublic, attr);
EXPECT_EQ(newRva, codeRVA);
EXPECT_EQ(miForwardRef, implFlags);
- EXPECT_THAT(std::vector(sigBlob, sigBlob + sigBlobLength), testing::ContainerEq(std::vector(sig.begin(), sig.end())));
+ EXPECT_THAT(std::vector