Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir dizi yöntem için yerel değişkenlerin düzenini alır.
Sözdizimi
int GetLocalVariablelayout(
uint ulAppDomainID,
Guid guidModule,
uint cMethods,
int[] rgMethodTokens,
out IStream pStreamLayout
);
Parametreler
ulAppDomainID
[in] Uygulama etki alanının tanımlayıcısı.
guidModule
[in] Modülün benzersiz tanımlayıcısı.
cMethods
[in] Dizideki rgMethodTokens yöntem belirteçlerinin sayısı.
rgMethodTokens
[in] Yöntem belirteçleri dizisi.
pStreamLayout
[out] Değişken düzenini içeren bir metin akışı.
İade Değeri
Başarılı olursa döndürür S_OK; aksi takdirde bir hata kodu döndürür.
Örnek
Aşağıdaki örnek, IDebugComPlusSymbolProvider arabirimini kullanıma sunan bir CDebugSymbolProvider nesnesi için bu yöntemin nasıl uygulandığını gösterir.
HRESULT CDebugSymbolProvider::GetLocalVariablelayout(
ULONG32 ulAppDomainID,
GUID guidModule,
ULONG32 cMethods,
_mdToken rgMethodTokens[],
IStream** ppStreamLayout)
{
HRESULT hr = S_OK;
METHOD_ENTRY(CDebugSymbolProvider::GetLocalVariablelayout);
CComPtr<ISymUnmanagedReader> symReader;
IfFailRet(GetSymUnmanagedReader(ulAppDomainID, guidModule, (IUnknown **) &symReader));
CComPtr<IStream> stream;
IfFailRet(CreateStreamOnHGlobal(NULL, true, &stream));
for (ULONG32 iMethod = 0; iMethod < cMethods; iMethod += 1)
{
CComPtr<ISymUnmanagedMethod> method;
IfFailRet(symReader->GetMethod(rgMethodTokens[iMethod], &method));
CComPtr<ISymUnmanagedScope> rootScope;
IfFailRet(method->GetRootScope(&rootScope));
//
// Add the method's variables to the stream
//
IfFailRet(AddScopeToStream(rootScope, 0, stream));
// do end of method marker
ULONG32 depth = 0xFFFFFFFF;
ULONG cb = 0;
IfFailRet(stream->Write(&depth, sizeof(depth), &cb));
}
LARGE_INTEGER pos;
pos.QuadPart = 0;
IfFailRet(stream->Seek(pos, STREAM_SEEK_SET, 0));
*ppStreamLayout = stream.Detach();
METHOD_EXIT(CDebugSymbolProvider::GetLocalVariablelayout, hr);
return hr;
}