Udostępnij za pośrednictwem


BP_RESOLUTION_LOCATION

Określa strukturę lokalizacji rozpoznawania punktu przerwania.

Składnia

public struct BP_RESOLUTION_LOCATION {
    public uint   bpType;
    public IntPtr unionmember1;
    public IntPtr unionmember2;
    public IntPtr unionmember3;
    public uint   unionmember4;
};

Członkowie

bpType
Wartość z wyliczenia BP_TYPE , która określa sposób interpretowania bpResLocation unii lub unionmemberX członków.

bpResLocation.bpresCode
[Tylko C++ ] Zawiera strukturę BP_RESOLUTION_CODE , jeśli bpType = BPT_CODE.

bpResLocation.bpresData
[Tylko C++ ] Zawiera strukturę BP_RESOLUTION_DATA , jeśli bpType = BPT_DATA.

bpResLocation.unused
[Tylko C++ ] Symbol zastępczy.

unionmember1
[Tylko C# ] Zobacz uwagi dotyczące interpretacji.

unionmember2
[Tylko C# ] Zobacz uwagi dotyczące interpretacji.

unionmember3
[Tylko C# ] Zobacz uwagi dotyczące interpretacji.

unionmember4
[Tylko C# ] Zobacz uwagi dotyczące interpretacji.

Uwagi

Ta struktura jest elementem członkowskim struktur BP_ERROR_RESOLUTION_INFO i BP_RESOLUTION_INFO .

[Tylko C# ] Składowe unionmemberX są interpretowane zgodnie z poniższą tabelą. Spójrz w dół lewej kolumny dla bpType wartości, a następnie w poprzek, aby określić, co każdy unionmemberX element członkowski reprezentuje i odpowiednio marshaling unionmemberX . Zobacz Przykład, aby zapoznać się ze sposobem interpretowania tej struktury w języku C#.

bpLocationType unionmember1 unionmember2 unionmember3 unionmember4
BPT_CODE IDebugCodeContext2 - - -
BPT_DATA string (wyrażenie danych) string (nazwa funkcji) string (nazwa obrazu) enum_BP_RES_DATA_FLAGS

Przykład

W tym przykładzie pokazano, jak interpretować BP_RESOLUTION_LOCATION strukturę w języku C#.

using System;
using System.Runtime.Interop.Services;
using Microsoft.VisualStudio.Debugger.Interop;

namespace MyPackage
{
    public class MyClass
    {
        public void Interpret(BP_RESOLUTION_LOCATION bprl)
        {
            if (bprl.bpType == (uint)enum_BP_TYPE.BPT_CODE)
            {
                IDebugCodeContext2 pContext = (IDebugCodeContext2)Marshal.GetObjectForIUnknown(bp.unionmember1);
            }
            else if (bprl.bpType == (uint)enum_BP_TYPE.BPT_DATA)
            {
                string dataExpression = Marshal.PtrToStringBSTR(bp.unionmember3);
                string functionName = Marshal.PtrToStringBSTR(bp.unionmember2);
                string imageName = Marshal.PtrToStringBSTR(bp.unionmember3);
                enum_BP_RES_DATA_FLAGS numElements = (enum_BP_RES_DATA_FLAGS)bp.unionmember4;
            }
        }
    }
}

Wymagania

Nagłówek: msdbg.h

Przestrzeń nazw: Microsoft.VisualStudio.Debugger.Interop

Zestaw: Microsoft.VisualStudio.Debugger.Interop.dll

Zobacz też