DkmStackWalkContext.RuntimeWalkNextFramesAndCheckCache 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
| RuntimeWalkNextFramesAndCheckCache(DkmWorkList, UInt32, UInt32, DkmStackHash, DkmCompletionRoutine<DkmRuntimeWalkNextFramesAndCheckCacheAsyncResult>) |
已弃用。 不要使用此方法,它将返回过期的哈希值;改为使用 IDkmMergedMonitorStackWalk164:: RuntimeWalkNextFramesAndCheckCache164。 RuntimeWalkNextFrames () 的版本,它还检查调用堆栈的缓存副本是否仍然有效。 此方法会将新工作项追加到指定的工作列表,并在追加工作项后返回。 工作项的实际处理是异步的。 向调用方发送请求完成后,将收到通过完成例程的通知。 |
| RuntimeWalkNextFramesAndCheckCache(UInt32, UInt32, DkmStackHash, Boolean, DkmStackHash, DkmStackWalkContext, Boolean) |
已弃用。 不要使用此方法,它将返回过期的哈希值;改为使用 IDkmMergedMonitorStackWalk164:: RuntimeWalkNextFramesAndCheckCache164。 RuntimeWalkNextFrames () 的版本,它还检查调用堆栈的缓存副本是否仍然有效。 |
RuntimeWalkNextFramesAndCheckCache(DkmWorkList, UInt32, UInt32, DkmStackHash, DkmCompletionRoutine<DkmRuntimeWalkNextFramesAndCheckCacheAsyncResult>)
已弃用。 不要使用此方法,它将返回过期的哈希值;改为使用 IDkmMergedMonitorStackWalk164:: RuntimeWalkNextFramesAndCheckCache164。 RuntimeWalkNextFrames () 的版本,它还检查调用堆栈的缓存副本是否仍然有效。
此方法会将新工作项追加到指定的工作列表,并在追加工作项后返回。 工作项的实际处理是异步的。 向调用方发送请求完成后,将收到通过完成例程的通知。
public:
void RuntimeWalkNextFramesAndCheckCache(Microsoft::VisualStudio::Debugger::DkmWorkList ^ WorkList, System::UInt32 RequestSizeHintIfCacheIsValid, System::UInt32 RequestSizeHintIfCacheIsInvalid, Microsoft::VisualStudio::Debugger::CallStack::DkmStackHash ^ CachedHash, Microsoft::VisualStudio::Debugger::DkmCompletionRoutine<Microsoft::VisualStudio::Debugger::CallStack::DkmRuntimeWalkNextFramesAndCheckCacheAsyncResult> ^ CompletionRoutine);
public void RuntimeWalkNextFramesAndCheckCache (Microsoft.VisualStudio.Debugger.DkmWorkList WorkList, uint RequestSizeHintIfCacheIsValid, uint RequestSizeHintIfCacheIsInvalid, Microsoft.VisualStudio.Debugger.CallStack.DkmStackHash CachedHash, Microsoft.VisualStudio.Debugger.DkmCompletionRoutine<Microsoft.VisualStudio.Debugger.CallStack.DkmRuntimeWalkNextFramesAndCheckCacheAsyncResult> CompletionRoutine);
member this.RuntimeWalkNextFramesAndCheckCache : Microsoft.VisualStudio.Debugger.DkmWorkList * uint32 * uint32 * Microsoft.VisualStudio.Debugger.CallStack.DkmStackHash * Microsoft.VisualStudio.Debugger.DkmCompletionRoutine<Microsoft.VisualStudio.Debugger.CallStack.DkmRuntimeWalkNextFramesAndCheckCacheAsyncResult> -> unit
Public Sub RuntimeWalkNextFramesAndCheckCache (WorkList As DkmWorkList, RequestSizeHintIfCacheIsValid As UInteger, RequestSizeHintIfCacheIsInvalid As UInteger, CachedHash As DkmStackHash, CompletionRoutine As DkmCompletionRoutine(Of DkmRuntimeWalkNextFramesAndCheckCacheAsyncResult))
参数
- WorkList
- DkmWorkList
要将新工作项追加到的工作项。
- RequestSizeHintIfCacheIsValid
- UInt32
中RequestSizeHintIfCacheIsValid 是调用方所需的帧数的提示。 此值被视为提示,因为此 API 可以返回尚未遍历的帧,因此此 API 返回的值可能大于或小于提示值。 如果缓存有效,请求大小提示为0表示不执行任何堆栈遍历。
- RequestSizeHintIfCacheIsInvalid
- UInt32
中RequestSizeHintIfCacheIsInvalid 是调用方所需的帧数的提示。 此值被视为提示,因为此 API 可以返回尚未遍历的帧,因此此 API 返回的值可能大于或小于提示值。
- CachedHash
- DkmStackHash
[In,可选]缓存的调用堆栈哈希,如果缓存仍然有效,则不会遍历堆栈。 此参数可选。 如果为 null,则仍将计算实际哈希并执行堆栈审核,但会跳过将实际哈希与缓存的哈希值进行比较来取消堆栈遍历。
- CompletionRoutine
- DkmCompletionRoutine<DkmRuntimeWalkNextFramesAndCheckCacheAsyncResult>
请求完成时要触发的例程。 如果请求成功追加到工作列表中,则将始终激发 (包括) 取消操作时。 如果追加工作项失败,此操作永远不会激发。
适用于
RuntimeWalkNextFramesAndCheckCache(UInt32, UInt32, DkmStackHash, Boolean, DkmStackHash, DkmStackWalkContext, Boolean)
已弃用。 不要使用此方法,它将返回过期的哈希值;改为使用 IDkmMergedMonitorStackWalk164:: RuntimeWalkNextFramesAndCheckCache164。 RuntimeWalkNextFrames () 的版本,它还检查调用堆栈的缓存副本是否仍然有效。
public:
cli::array <Microsoft::VisualStudio::Debugger::CallStack::DkmStackWalkFrame ^> ^ RuntimeWalkNextFramesAndCheckCache(System::UInt32 RequestSizeHintIfCacheIsValid, System::UInt32 RequestSizeHintIfCacheIsInvalid, Microsoft::VisualStudio::Debugger::CallStack::DkmStackHash ^ CachedHash, [Runtime::InteropServices::Out] bool % EndOfStack, [Runtime::InteropServices::Out] Microsoft::VisualStudio::Debugger::CallStack::DkmStackHash ^ % ActualStackHash, [Runtime::InteropServices::Out] Microsoft::VisualStudio::Debugger::CallStack::DkmStackWalkContext ^ % ActualStackWalkContext, [Runtime::InteropServices::Out] bool % IsCacheValid);
public Microsoft.VisualStudio.Debugger.CallStack.DkmStackWalkFrame[] RuntimeWalkNextFramesAndCheckCache (uint RequestSizeHintIfCacheIsValid, uint RequestSizeHintIfCacheIsInvalid, Microsoft.VisualStudio.Debugger.CallStack.DkmStackHash CachedHash, out bool EndOfStack, out Microsoft.VisualStudio.Debugger.CallStack.DkmStackHash ActualStackHash, out Microsoft.VisualStudio.Debugger.CallStack.DkmStackWalkContext ActualStackWalkContext, out bool IsCacheValid);
member this.RuntimeWalkNextFramesAndCheckCache : uint32 * uint32 * Microsoft.VisualStudio.Debugger.CallStack.DkmStackHash * bool * DkmStackHash * DkmStackWalkContext * bool -> Microsoft.VisualStudio.Debugger.CallStack.DkmStackWalkFrame[]
Public Function RuntimeWalkNextFramesAndCheckCache (RequestSizeHintIfCacheIsValid As UInteger, RequestSizeHintIfCacheIsInvalid As UInteger, CachedHash As DkmStackHash, ByRef EndOfStack As Boolean, ByRef ActualStackHash As DkmStackHash, ByRef ActualStackWalkContext As DkmStackWalkContext, ByRef IsCacheValid As Boolean) As DkmStackWalkFrame()
参数
- RequestSizeHintIfCacheIsValid
- UInt32
中RequestSizeHintIfCacheIsValid 是调用方所需的帧数的提示。 此值被视为提示,因为此 API 可以返回尚未遍历的帧,因此此 API 返回的值可能大于或小于提示值。 如果缓存有效,请求大小提示为0表示不执行任何堆栈遍历。
- RequestSizeHintIfCacheIsInvalid
- UInt32
中RequestSizeHintIfCacheIsInvalid 是调用方所需的帧数的提示。 此值被视为提示,因为此 API 可以返回尚未遍历的帧,因此此 API 返回的值可能大于或小于提示值。
- CachedHash
- DkmStackHash
[In,可选]缓存的调用堆栈哈希,如果缓存仍然有效,则不会遍历堆栈。 此参数可选。 如果为 null,则仍将计算实际哈希并执行堆栈审核,但会跳过将实际哈希与缓存的哈希值进行比较来取消堆栈遍历。
- EndOfStack
- Boolean
弄如果监视器到达堆栈的末尾,则返回 true。
- ActualStackHash
- DkmStackHash
[Out,Optional]调用堆栈的实际哈希。 对于不支持调用堆栈哈希处理的运行时,这可能为 NULL。
- ActualStackWalkContext
- DkmStackWalkContext
弄稍后可用于继续执行的 DkmStackWalkContext 对象。 如果缓存有效,则这是原始上下文。 如果缓存无效,将为新的 DkmStackWalkContext 对象。
- IsCacheValid
- Boolean
弄如果缓存有效,则为 True; 否则为 false。
返回
弄遍历帧的数组。 对于,未解析的帧,InstructionAddress 和 Description 都将为 null。