除批注 函数参数和返回值外,还可以批注所有功能的属性。
功能性批注
下面的批注整体应用于函数并描述其行为方式以及它希望为 true。
批注 |
描述 |
---|---|
_Called_from_function_class_(name) |
未打算单独的突出;相反,它是要使用的谓词与 _When_ 批注。有关更多信息,请参见指定何时以及在何处应用批注。 name 参数同时出现在某些功能的声明一个 _Function_class_ 批注的任意字符串。_Called_from_function_class_ 返回非零,如果当前分析的功能批注使用具有 name的相同值的 _Function_class_ ;否则,它返回零。 |
_Check_return_ |
说明一个返回值并指出,调用方应当检查它。如果函数在无效上下文,调用编写检查器报告错误。 |
_Function_class_(name) |
name 参数是由用户指定的任意字符串。它存在从其他命名空间不同的命名空间。函数、函数指针,或更 usefully-a 函数指针类型可以被指定为属于一个或多个功能选件类。 |
_Raises_SEH_exception_ |
说明始终引发结构化异常处理程序 (SEH) 异常,受 _When_ 和 _On_failure_ 情况的函数。有关更多信息,请参见指定何时以及在何处应用批注。 |
_Maybe_raises_SEH_exception_ |
说明可以选择引发 SEH 异常,受 _When_ 和 _On_failure_ 情况的函数。 |
_Must_inspect_result_ |
批注所有输出值,包括返回值、参数和全局变量。如果在批注的对象值以后不会检查,则分析器报告错误。“测试”包含是否使用一个条件表达式,分配给输出参数或全局,或作为参数。对于返回值,_Must_inspect_result_ 提示 _Check_return_。 |
_Use_decl_annotations_ |
在函数定义 (也称为函数体) 使用在注释位置列表在该标头。当使用时 _Use_decl_annotations_,显示在同一函数的范围标头使用的批注,则还显示在具有 _Use_decl_annotations_ 批注的定义。 |
成功或失败批注
函数会失败,并且,时,它时,其结果可能无法完成或产生不同,因此当函数成功时。在下面的批注列表提供表示方法失败行为。若要使用这些批注,必须使它们确定成功;因此,需要 _Success_ 批注。请注意 NTSTATUS 和 HRESULT 已具有一个 _Success_ 批注生成到;但是,因此,如果在 NTSTATUS 或 HRESULT指定您的 _Success_ 批注,它重写了内置批注。
批注 |
描述 |
---|---|
_Always_(anno_list) |
为 anno_list _On_failure_(anno_list)等效项;即 anno_list 的批注将该功能是否成功。 |
_On_failure_(anno_list) |
通过在 typedef 的 _Return_type_success_ 将使用,只有 + 当 _Success_ 还用于显式批注功能任何或隐式。当 _On_failure_ 批注存在于函数参数或返回值时,在 (anno) 的每个批注的 anno_list 的行为,就象代码作为 _When_(!expr, anno),expr 是由参数为必需的 _Success_ 批注。这意味着 _Success_ 的提示应用于所有后期状态的不适用 _On_failure_。 |
_Return_type_success_(expr) |
适用于 typedef。指示返回该类型,并且不显式将 _Success_ 的所有功能说明,就好像它们具有 _Success_(expr)。_Return_type_success_ 在函数或函数指针的 typedef 不能使用。 |
_Success_(expr) |
expr 需要为 rvalue 的表达式。当 _Success_ 批注存在于函数声明或定义时,每个批注 (anno) 在函数和在后期状态行为,就象代码作为 _When_(expr, anno)。_Success_ 批注在一个函数只能使用,而不是在其参数或返回类型。可以最多具有在函数的一个 _Success_ 批注,因此,它无法在任何 _When_、_At_或 _Group_。有关更多信息,请参见指定何时以及在何处应用批注。 |