Skip to content

Annotate DbgEng/DbgModel APIs that can return S_FALSE with CanReturnMultipleSuccessValues.#2216

Open
takubokudori wants to merge 2 commits intomicrosoft:mainfrom
takubokudori:dbgapi
Open

Annotate DbgEng/DbgModel APIs that can return S_FALSE with CanReturnMultipleSuccessValues.#2216
takubokudori wants to merge 2 commits intomicrosoft:mainfrom
takubokudori:dbgapi

Conversation

@takubokudori
Copy link

@takubokudori takubokudori commented Feb 14, 2026

Since these DbgEng/DbgModel APIs may return S_OK and S_FALSE, they should be annotated with CanReturnMultipleSuccessValues.

GetOutputLinePrefix(Wide), GetEventFilterCommand(Wide), and GetEventFilterText(Wide) do not mention S_FALSE in the documentation, but they may return S_FALSE.
Like other APIs, they return S_FALSE when BufferSize is not big enough.

References:

https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/dbgeng/
https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/dbgmodel/

# dbgeng.h
IDebugAdvanced2::FindSourceFileAndToken
IDebugAdvanced2::GetSourceFileInformation
IDebugAdvanced2::GetSymbolInformation
IDebugAdvanced2::GetSystemObjectInformation
IDebugAdvanced2::Request
IDebugAdvanced3::FindSourceFileAndToken
IDebugAdvanced3::FindSourceFileAndTokenWide
IDebugAdvanced3::GetSourceFileInformation
IDebugAdvanced3::GetSourceFileInformationWide
IDebugAdvanced3::GetSymbolInformation
IDebugAdvanced3::GetSymbolInformationWide
IDebugAdvanced3::GetSystemObjectInformation
IDebugAdvanced3::Request
IDebugAdvanced4::FindSourceFileAndToken
IDebugAdvanced4::FindSourceFileAndTokenWide
IDebugAdvanced4::GetSourceFileInformation
IDebugAdvanced4::GetSourceFileInformationWide
IDebugAdvanced4::GetSymbolInformation
IDebugAdvanced4::GetSymbolInformationWide
IDebugAdvanced4::GetSymbolInformationWideEx
IDebugAdvanced4::GetSystemObjectInformation
IDebugAdvanced4::Request
IDebugBreakpoint::GetCommand
IDebugBreakpoint::GetOffsetExpression
IDebugBreakpoint2::GetCommand
IDebugBreakpoint2::GetCommandWide
IDebugBreakpoint2::GetOffsetExpression
IDebugBreakpoint2::GetOffsetExpressionWide
IDebugBreakpoint3::GetCommand
IDebugBreakpoint3::GetCommandWide
IDebugBreakpoint3::GetOffsetExpression
IDebugBreakpoint3::GetOffsetExpressionWide
IDebugClient::DispatchCallbacks
IDebugClient::GetExitCode
IDebugClient::GetIdentity
IDebugClient::GetKernelConnectionOptions
IDebugClient::GetOutputLinePrefix
IDebugClient::GetRunningProcessDescription
IDebugClient::GetRunningProcessSystemIdByExecutableName
IDebugClient2::DispatchCallbacks
IDebugClient2::GetExitCode
IDebugClient2::GetIdentity
IDebugClient2::GetKernelConnectionOptions
IDebugClient2::GetOutputLinePrefix
IDebugClient2::GetRunningProcessDescription
IDebugClient2::GetRunningProcessSystemIdByExecutableName
IDebugClient2::IsKernelDebuggerEnabled
IDebugClient2::WaitForProcessServerEnd
IDebugClient3::DispatchCallbacks
IDebugClient3::GetExitCode
IDebugClient3::GetIdentity
IDebugClient3::GetKernelConnectionOptions
IDebugClient3::GetOutputLinePrefix
IDebugClient3::GetRunningProcessDescription
IDebugClient3::GetRunningProcessDescriptionWide
IDebugClient3::GetRunningProcessSystemIdByExecutableName
IDebugClient3::GetRunningProcessSystemIdByExecutableNameWide
IDebugClient3::IsKernelDebuggerEnabled
IDebugClient3::WaitForProcessServerEnd
IDebugClient4::DispatchCallbacks
IDebugClient4::GetExitCode
IDebugClient4::GetIdentity
IDebugClient4::GetKernelConnectionOptions
IDebugClient4::GetOutputLinePrefix
IDebugClient4::GetRunningProcessDescription
IDebugClient4::GetRunningProcessDescriptionWide
IDebugClient4::GetRunningProcessSystemIdByExecutableName
IDebugClient4::GetRunningProcessSystemIdByExecutableNameWide
IDebugClient4::IsKernelDebuggerEnabled
IDebugClient4::WaitForProcessServerEnd
IDebugClient5::DispatchCallbacks
IDebugClient5::GetExitCode
IDebugClient5::GetIdentity
IDebugClient5::GetIdentityWide
IDebugClient5::GetKernelConnectionOptions
IDebugClient5::GetKernelConnectionOptionsWide
IDebugClient5::GetOutputLinePrefix
IDebugClient5::GetOutputLinePrefixWide
IDebugClient5::GetRunningProcessDescription
IDebugClient5::GetRunningProcessDescriptionWide
IDebugClient5::GetRunningProcessSystemIdByExecutableName
IDebugClient5::GetRunningProcessSystemIdByExecutableNameWide
IDebugClient5::IsKernelDebuggerEnabled
IDebugClient5::WaitForProcessServerEnd
IDebugClient6::DispatchCallbacks
IDebugClient6::GetExitCode
IDebugClient6::GetIdentity
IDebugClient6::GetIdentityWide
IDebugClient6::GetKernelConnectionOptions
IDebugClient6::GetKernelConnectionOptionsWide
IDebugClient6::GetOutputLinePrefix
IDebugClient6::GetOutputLinePrefixWide
IDebugClient6::GetRunningProcessDescription
IDebugClient6::GetRunningProcessDescriptionWide
IDebugClient6::GetRunningProcessSystemIdByExecutableName
IDebugClient6::GetRunningProcessSystemIdByExecutableNameWide
IDebugClient6::IsKernelDebuggerEnabled
IDebugClient6::WaitForProcessServerEnd
IDebugClient7::DispatchCallbacks
IDebugClient7::GetExitCode
IDebugClient7::GetIdentity
IDebugClient7::GetIdentityWide
IDebugClient7::GetKernelConnectionOptions
IDebugClient7::GetKernelConnectionOptionsWide
IDebugClient7::GetOutputLinePrefix
IDebugClient7::GetOutputLinePrefixWide
IDebugClient7::GetRunningProcessDescription
IDebugClient7::GetRunningProcessDescriptionWide
IDebugClient7::GetRunningProcessSystemIdByExecutableName
IDebugClient7::GetRunningProcessSystemIdByExecutableNameWide
IDebugClient7::IsKernelDebuggerEnabled
IDebugClient7::WaitForProcessServerEnd
IDebugControl::Disassemble
IDebugControl::GetBreakpointParameters
IDebugControl::GetEventFilterCommand
IDebugControl::GetEventFilterText
IDebugControl::GetInterrupt
IDebugControl::GetLastEventInformation
IDebugControl::GetLogFile
IDebugControl::GetProcessorTypeNames
IDebugControl::GetPromptText
IDebugControl::GetSystemVersion
IDebugControl::Input
IDebugControl::IsPointer64Bit
IDebugControl::ReturnInput
IDebugControl::WaitForEvent
IDebugControl2::Disassemble
IDebugControl2::GetBreakpointParameters
IDebugControl2::GetEventFilterCommand
IDebugControl2::GetEventFilterText
IDebugControl2::GetInterrupt
IDebugControl2::GetLastEventInformation
IDebugControl2::GetLogFile
IDebugControl2::GetProcessorTypeNames
IDebugControl2::GetPromptText
IDebugControl2::GetSystemVersion
IDebugControl2::Input
IDebugControl2::IsPointer64Bit
IDebugControl2::ReturnInput
IDebugControl2::WaitForEvent
IDebugControl3::Disassemble
IDebugControl3::GetBreakpointParameters
IDebugControl3::GetEventFilterCommand
IDebugControl3::GetEventFilterText
IDebugControl3::GetExpressionSyntaxNames
IDebugControl3::GetInterrupt
IDebugControl3::GetLastEventInformation
IDebugControl3::GetLogFile
IDebugControl3::GetNumberEvents
IDebugControl3::GetProcessorTypeNames
IDebugControl3::GetPromptText
IDebugControl3::GetSystemVersion
IDebugControl3::Input
IDebugControl3::IsPointer64Bit
IDebugControl3::ReturnInput
IDebugControl3::WaitForEvent
IDebugControl4::Disassemble
IDebugControl4::DisassembleWide
IDebugControl4::GetBreakpointParameters
IDebugControl4::GetEventFilterCommand
IDebugControl4::GetEventFilterCommandWide
IDebugControl4::GetEventFilterText
IDebugControl4::GetEventFilterTextWide
IDebugControl4::GetExpressionSyntaxNames
IDebugControl4::GetExpressionSyntaxNamesWide
IDebugControl4::GetInterrupt
IDebugControl4::GetLastEventInformation
IDebugControl4::GetLastEventInformationWide
IDebugControl4::GetLogFile
IDebugControl4::GetLogFile2
IDebugControl4::GetLogFile2Wide
IDebugControl4::GetLogFileWide
IDebugControl4::GetNumberEvents
IDebugControl4::GetProcessorTypeNames
IDebugControl4::GetProcessorTypeNamesWide
IDebugControl4::GetPromptText
IDebugControl4::GetPromptTextWide
IDebugControl4::GetSystemVersion
IDebugControl4::GetSystemVersionString
IDebugControl4::GetSystemVersionStringWide
IDebugControl4::Input
IDebugControl4::InputWide
IDebugControl4::IsPointer64Bit
IDebugControl4::ReturnInput
IDebugControl4::ReturnInputWide
IDebugControl4::WaitForEvent
IDebugControl5::Disassemble
IDebugControl5::DisassembleWide
IDebugControl5::GetBreakpointParameters
IDebugControl5::GetEventFilterCommand
IDebugControl5::GetEventFilterCommandWide
IDebugControl5::GetEventFilterText
IDebugControl5::GetEventFilterTextWide
IDebugControl5::GetExpressionSyntaxNames
IDebugControl5::GetExpressionSyntaxNamesWide
IDebugControl5::GetInterrupt
IDebugControl5::GetLastEventInformation
IDebugControl5::GetLastEventInformationWide
IDebugControl5::GetLogFile
IDebugControl5::GetLogFile2
IDebugControl5::GetLogFile2Wide
IDebugControl5::GetLogFileWide
IDebugControl5::GetNumberEvents
IDebugControl5::GetProcessorTypeNames
IDebugControl5::GetProcessorTypeNamesWide
IDebugControl5::GetPromptText
IDebugControl5::GetPromptTextWide
IDebugControl5::GetSystemVersion
IDebugControl5::GetSystemVersionString
IDebugControl5::GetSystemVersionStringWide
IDebugControl5::Input
IDebugControl5::InputWide
IDebugControl5::IsPointer64Bit
IDebugControl5::ReturnInput
IDebugControl5::ReturnInputWide
IDebugControl5::WaitForEvent
IDebugControl6::Disassemble
IDebugControl6::DisassembleWide
IDebugControl6::GetBreakpointParameters
IDebugControl6::GetEventFilterCommand
IDebugControl6::GetEventFilterCommandWide
IDebugControl6::GetEventFilterText
IDebugControl6::GetEventFilterTextWide
IDebugControl6::GetExpressionSyntaxNames
IDebugControl6::GetExpressionSyntaxNamesWide
IDebugControl6::GetInterrupt
IDebugControl6::GetLastEventInformation
IDebugControl6::GetLastEventInformationWide
IDebugControl6::GetLogFile
IDebugControl6::GetLogFile2
IDebugControl6::GetLogFile2Wide
IDebugControl6::GetLogFileWide
IDebugControl6::GetNumberEvents
IDebugControl6::GetProcessorTypeNames
IDebugControl6::GetProcessorTypeNamesWide
IDebugControl6::GetPromptText
IDebugControl6::GetPromptTextWide
IDebugControl6::GetSystemVersion
IDebugControl6::GetSystemVersionString
IDebugControl6::GetSystemVersionStringWide
IDebugControl6::Input
IDebugControl6::InputWide
IDebugControl6::IsPointer64Bit
IDebugControl6::ReturnInput
IDebugControl6::ReturnInputWide
IDebugControl6::WaitForEvent
IDebugControl7::Disassemble
IDebugControl7::DisassembleWide
IDebugControl7::GetBreakpointParameters
IDebugControl7::GetEventFilterCommand
IDebugControl7::GetEventFilterCommandWide
IDebugControl7::GetEventFilterText
IDebugControl7::GetEventFilterTextWide
IDebugControl7::GetExpressionSyntaxNames
IDebugControl7::GetExpressionSyntaxNamesWide
IDebugControl7::GetInterrupt
IDebugControl7::GetLastEventInformation
IDebugControl7::GetLastEventInformationWide
IDebugControl7::GetLogFile
IDebugControl7::GetLogFile2
IDebugControl7::GetLogFile2Wide
IDebugControl7::GetLogFileWide
IDebugControl7::GetNumberEvents
IDebugControl7::GetProcessorTypeNames
IDebugControl7::GetProcessorTypeNamesWide
IDebugControl7::GetPromptText
IDebugControl7::GetPromptTextWide
IDebugControl7::GetSystemVersion
IDebugControl7::GetSystemVersionString
IDebugControl7::GetSystemVersionStringWide
IDebugControl7::Input
IDebugControl7::InputWide
IDebugControl7::IsPointer64Bit
IDebugControl7::ReturnInput
IDebugControl7::ReturnInputWide
IDebugControl7::WaitForEvent
IDebugDataSpaces3::GetNextTagged
IDebugDataSpaces4::GetNextTagged
IDebugDataSpaces4::ReadMultiByteStringVirtual
IDebugDataSpaces4::ReadMultiByteStringVirtualWide
IDebugDataSpaces4::ReadUnicodeStringVirtual
IDebugDataSpaces4::ReadUnicodeStringVirtualWide
IDebugRegisters::GetDescription
IDebugRegisters2::GetDescription
IDebugRegisters2::GetDescriptionWide
IDebugSymbolGroup::ExpandSymbol
IDebugSymbolGroup::GetSymbolName
IDebugSymbolGroup2::ExpandSymbol
IDebugSymbolGroup2::GetSymbolName
IDebugSymbolGroup2::GetSymbolNameWide
IDebugSymbolGroup2::GetSymbolTypeName
IDebugSymbolGroup2::GetSymbolTypeNameWide
IDebugSymbolGroup2::GetSymbolValueText
IDebugSymbolGroup2::GetSymbolValueTextWide
IDebugSymbols::GetImagePath
IDebugSymbols::GetLineByOffset
IDebugSymbols::GetModuleByIndex
IDebugSymbols::GetModuleNames
IDebugSymbols::GetNameByOffset
IDebugSymbols::GetNearNameByOffset
IDebugSymbols::GetNextSymbolMatch
IDebugSymbols::GetOffsetByName
IDebugSymbols::GetSourceFileLineOffsets
IDebugSymbols::GetSourcePath
IDebugSymbols::GetSymbolPath
IDebugSymbols::GetTypeName
IDebugSymbols::ReadTypedDataPhysical
IDebugSymbols::ReadTypedDataVirtual
IDebugSymbols::SetScope
IDebugSymbols::WriteTypedDataPhysical
IDebugSymbols::WriteTypedDataVirtual
IDebugSymbols2::GetConstantName
IDebugSymbols2::GetFieldName
IDebugSymbols2::GetImagePath
IDebugSymbols2::GetLineByOffset
IDebugSymbols2::GetModuleByIndex
IDebugSymbols2::GetModuleNameString
IDebugSymbols2::GetModuleNames
IDebugSymbols2::GetModuleVersionInformation
IDebugSymbols2::GetNameByOffset
IDebugSymbols2::GetNearNameByOffset
IDebugSymbols2::GetNextSymbolMatch
IDebugSymbols2::GetOffsetByName
IDebugSymbols2::GetSourceFileLineOffsets
IDebugSymbols2::GetSourcePath
IDebugSymbols2::GetSymbolPath
IDebugSymbols2::GetTypeName
IDebugSymbols2::ReadTypedDataPhysical
IDebugSymbols2::ReadTypedDataVirtual
IDebugSymbols2::SetScope
IDebugSymbols2::WriteTypedDataPhysical
IDebugSymbols2::WriteTypedDataVirtual
IDebugSymbols3::GetConstantName
IDebugSymbols3::GetConstantNameWide
IDebugSymbols3::GetFieldName
IDebugSymbols3::GetFieldNameWide
IDebugSymbols3::GetFunctionEntryByOffset
IDebugSymbols3::GetImagePath
IDebugSymbols3::GetImagePathWide
IDebugSymbols3::GetLineByOffset
IDebugSymbols3::GetLineByOffsetWide
IDebugSymbols3::GetModuleByIndex
IDebugSymbols3::GetModuleNameString
IDebugSymbols3::GetModuleNameStringWide
IDebugSymbols3::GetModuleNames
IDebugSymbols3::GetModuleVersionInformation
IDebugSymbols3::GetModuleVersionInformationWide
IDebugSymbols3::GetNameByOffset
IDebugSymbols3::GetNameByOffsetWide
IDebugSymbols3::GetNearNameByOffset
IDebugSymbols3::GetNearNameByOffsetWide
IDebugSymbols3::GetNextSymbolMatch
IDebugSymbols3::GetNextSymbolMatchWide
IDebugSymbols3::GetOffsetByName
IDebugSymbols3::GetOffsetByNameWide
IDebugSymbols3::GetSourceEntriesByLine
IDebugSymbols3::GetSourceEntriesByLineWide
IDebugSymbols3::GetSourceFileLineOffsets
IDebugSymbols3::GetSourceFileLineOffsetsWide
IDebugSymbols3::GetSourcePath
IDebugSymbols3::GetSourcePathWide
IDebugSymbols3::GetSymbolPath
IDebugSymbols3::GetSymbolPathWide
IDebugSymbols3::GetTypeName
IDebugSymbols3::GetTypeNameWide
IDebugSymbols3::ReadTypedDataPhysical
IDebugSymbols3::ReadTypedDataVirtual
IDebugSymbols3::SetScope
IDebugSymbols3::WriteTypedDataPhysical
IDebugSymbols3::WriteTypedDataVirtual
IDebugSymbols4::GetConstantName
IDebugSymbols4::GetConstantNameWide
IDebugSymbols4::GetFieldName
IDebugSymbols4::GetFieldNameWide
IDebugSymbols4::GetFunctionEntryByOffset
IDebugSymbols4::GetImagePath
IDebugSymbols4::GetImagePathWide
IDebugSymbols4::GetLineByOffset
IDebugSymbols4::GetLineByOffsetWide
IDebugSymbols4::GetModuleByIndex
IDebugSymbols4::GetModuleNameString
IDebugSymbols4::GetModuleNameStringWide
IDebugSymbols4::GetModuleNames
IDebugSymbols4::GetModuleVersionInformation
IDebugSymbols4::GetModuleVersionInformationWide
IDebugSymbols4::GetNameByOffset
IDebugSymbols4::GetNameByOffsetWide
IDebugSymbols4::GetNearNameByOffset
IDebugSymbols4::GetNearNameByOffsetWide
IDebugSymbols4::GetNextSymbolMatch
IDebugSymbols4::GetNextSymbolMatchWide
IDebugSymbols4::GetOffsetByName
IDebugSymbols4::GetOffsetByNameWide
IDebugSymbols4::GetSourceEntriesByLine
IDebugSymbols4::GetSourceEntriesByLineWide
IDebugSymbols4::GetSourceFileLineOffsets
IDebugSymbols4::GetSourceFileLineOffsetsWide
IDebugSymbols4::GetSourcePath
IDebugSymbols4::GetSourcePathWide
IDebugSymbols4::GetSymbolPath
IDebugSymbols4::GetSymbolPathWide
IDebugSymbols4::GetTypeName
IDebugSymbols4::GetTypeNameWide
IDebugSymbols4::ReadTypedDataPhysical
IDebugSymbols4::ReadTypedDataVirtual
IDebugSymbols4::SetScope
IDebugSymbols4::WriteTypedDataPhysical
IDebugSymbols4::WriteTypedDataVirtual
IDebugSymbols5::GetConstantName
IDebugSymbols5::GetConstantNameWide
IDebugSymbols5::GetFieldName
IDebugSymbols5::GetFieldNameWide
IDebugSymbols5::GetFunctionEntryByOffset
IDebugSymbols5::GetImagePath
IDebugSymbols5::GetImagePathWide
IDebugSymbols5::GetLineByOffset
IDebugSymbols5::GetLineByOffsetWide
IDebugSymbols5::GetModuleByIndex
IDebugSymbols5::GetModuleNameString
IDebugSymbols5::GetModuleNameStringWide
IDebugSymbols5::GetModuleNames
IDebugSymbols5::GetModuleVersionInformation
IDebugSymbols5::GetModuleVersionInformationWide
IDebugSymbols5::GetNameByOffset
IDebugSymbols5::GetNameByOffsetWide
IDebugSymbols5::GetNearNameByOffset
IDebugSymbols5::GetNearNameByOffsetWide
IDebugSymbols5::GetNextSymbolMatch
IDebugSymbols5::GetNextSymbolMatchWide
IDebugSymbols5::GetOffsetByName
IDebugSymbols5::GetOffsetByNameWide
IDebugSymbols5::GetSourceEntriesByLine
IDebugSymbols5::GetSourceEntriesByLineWide
IDebugSymbols5::GetSourceFileLineOffsets
IDebugSymbols5::GetSourceFileLineOffsetsWide
IDebugSymbols5::GetSourcePath
IDebugSymbols5::GetSourcePathWide
IDebugSymbols5::GetSymbolPath
IDebugSymbols5::GetSymbolPathWide
IDebugSymbols5::GetTypeName
IDebugSymbols5::GetTypeNameWide
IDebugSymbols5::ReadTypedDataPhysical
IDebugSymbols5::ReadTypedDataVirtual
IDebugSymbols5::SetScope
IDebugSymbols5::WriteTypedDataPhysical
IDebugSymbols5::WriteTypedDataVirtual
IDebugSystemObjects::GetCurrentProcessExecutableName
IDebugSystemObjects2::GetCurrentProcessExecutableName
IDebugSystemObjects3::GetCurrentProcessExecutableName
IDebugSystemObjects4::GetCurrentProcessExecutableName
IDebugSystemObjects4::GetCurrentProcessExecutableNameWide
# dbgmodel.h
IActionEnumerator::GetNext
IDebugHostMemory::ReadBytes
IDebugHostMemory::WriteBytes

@takubokudori
Copy link
Author

@microsoft-github-policy-service agree

@takubokudori takubokudori marked this pull request as draft February 14, 2026 14:41
@takubokudori takubokudori marked this pull request as ready for review February 14, 2026 16:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant