ATL Attribute Provider Errors

The table below lists the errors that the ATL Attribute Provider (ATLPROV) is known to be capable of issuing in version 7.00.9466.0. Text for each error message is reproduced from the corresponding resource string in the executable, with placeholders resolved as much as possible in the style of the product documentation.

Error numbers that the product documentation does not list among the ATL Provider Errors and Warnings are highlighted yellow. There are only two, and one of these is obviously never meant to occur (and Microsoft perhaps does not even realise that it can). That the product documentation’s list is so close to complete is remarkable only because it is so unusual. For rather many error numbers, the product documentation provides no more detail than does this page’s list: it reproduces the message text, but with no additional comment. One error, ATL2234, is listed by the product documentation but is omitted here because it actually occurs as a warning (and is therefore listed here among the ATL Warnings).

ATL errors feed back to the compiler as error C2338. The message text for the compiler error then gives the ATL details, citing an attribute as well as showing the ATL error number and the ATL message text:

position : error C2338: attribute
        Atl Attribute Provider : error ATLnumber: message

Given that this compiler error is so plainly described as originating with the ATL Attribute Provider, it perhaps does not matter that C2338 does not appear in the product documentation’s list of C/C++ Build Errors.

Error Message
ATL0 Unknown error #number
ATL2004 Out of memory processing attributes.
ATL2007 Requires inclusion of header header.h.
ATL2010 Undeclared identifier "id".
ATL2011 Only 1 inline unnamed attribute allowed per scope.
ATL2012 Missing attribute db_accessor(num).
ATL2013 class "class" contains a COLUMN_MAP. Attribute cannot be used on the class
ATL2014 class "class" contains a PARAM_MAP. Attribute cannot be used on the class
ATL2015 Attribute cannot be used on a class that has constructor and/or destructor
ATL2020 Unknown root key format, no acceptable root key found in "key"
ATL2021 Subkey syntax - (\) not allowed in values
ATL2023 Attribute should be used with a real array with storage backing it and not just a simple pointer.
ATL2024 Attribute should be used with a 4 byte storage data type for a DWORD key.
ATL2025 Failed to compile RGS, Unknown Root key "key" specified.
ATL2026 Failed to compile RGS, Syntax error - expecting a {, found "string".
ATL2027 Failed to compile RGS, Out of memory.
ATL2028 Failed to compile RGS, RGS tree contains unparseable constructs.
ATL2029 Failed to compile RGS, Syntax error - [!ifexist] not followed by [!endif]
ATL2030 Failed to compile RGS, Syntax error - closing ')' not found to match '(' in ifexist block.
ATL2031 Failed to compile RGS, Syntax error - illegal else without matching if.
ATL2032 Failed to compile RGS, Attribute "attr" specified in the script not found in attribute block.
ATL2033 Failed to compile RGS, Value "value" specified in script not found in attribute block.
ATL2034 Failed to compile RGS, Script file "filename" not found.
ATL2050 Attribute cannot be specified on a class that indirectly derives from CComCoClass.
ATL2054 Unknown interface "interface" used with attribute.
ATL2055 Interface "interface" does not have a UUID associated with it.
ATL2056 Derive from either "class1" or "class2", not both.
ATL2057 Derive from either "class" or "template<class>", not both.
ATL2070 "symbol" cannot be used in attributed project
ATL2100 Cannot have more than one default counter per perf_object: "object" already has a default counter
ATL2102 Must define either a name_res/help_res or a namestring/helpstring.
ATL2103 Cannot have a perf_counter without a perf_object class.
ATL2104 Must define one perf counter type. Use either countertype or countertype_string
ATL2105 Invalid Counter Type: "type". Only the following counters are supported through countertype_string: counter, timer, bulk_count, text, rawcount, value, rate, fraction, base, elapsed, queuelen, histogram, precision.
 For other counters, use the countertype parameter with the perf counter type value.
ATL2107 Replacement methods that have parameters must use simple types or specify the parse_func parameter to tag_name.
ATL2108 "sdl" parameter requires "soap_handler" attribute
ATL2109 Invalid number of indirections. For default parameter handling, one indirection is required for the replacement method.
ATL2112 Using the tag_name attribute with the parse_func parameter requires that the function take the parsed arguments as a parameter
ATL2200 Invalid struct field
ATL2201 Indirections not supported on soap headers
ATL2202 Out parameters must be pointers
ATL2203 soap_handler class must expose at least one method using soap_method
ATL2204 Parameters with more than one indirection must have a size_is attribute
ATL2205 "method" is not an interface method. SOAP methods must be introduced by an interface.
ATL2206 "string" is not valid. The string cannot contain '<' or '>'
ATL2207 "param" parameter of method "method" has too many indirections. Fixed size arrays cannot have indirections.
ATL2209 "param" parameter of method "method" has an illegal size_is attribute. The size_is attribute is only allowed on variable length out arrays.
ATL2210 "param" parameter of method "method" has more than size_is parameter. Only one dimensional variable length arrays are supported.
ATL2211 "param" parameter of method "method" is missing a size_is attribute. Variable length out arrays require the size_is attribute.
ATL2212 The "size" size_is parameter for the "param" parameter of method "method" must be an out parameter.
ATL2213 "param" parameter of method "method" has too many indirections. In parameters cannot have more than 1 indirection.
ATL2214 "param" parameter of method "method" has too many indirections. Out parameters cannot have more than 2 indirections.
ATL2215 "param" parameter of method "method" has an illegal size_is attribute. The size_is attribute is only allowed on variable length arrays.
ATL2216 SOAP methods cannot have parameters that are templatized
ATL2217 Cannot process "name": SOAP methods that have parameters with base classes are not supported in this version.
ATL2218 Cannot process "name": SOAP methods cannot have parameters that are templatized
ATL2219 Cannot process "struct", failure at field "field": SOAP structs cannot have fields that are templatized
ATL2220 Failed processing "string"
ATL2221 SOAP headers can only be simple types.
ATL2222 Cannot process "field": struct/class fields cannot have indirections.
ATL2223 Cannot process: "name": SOAP methods with SAFEARRAY parameters are not supported.
ATL2225 Cannot process: "union": unions are not supported.
ATL2227 Cannot process: "name" of method "method" : soap_header value does not match any member variable.
ATL2228 Cannot process: "name" of method "method" : soap_header values must reference public member variables.
ATL2229 Cannot process: "struct" : cannot marshal structs with private members.
ATL2230 soap_header attribute requires soap_method attribute.
ATL2231 Cannot have multiple soap_headers with the same name: "name".
ATL2232 Cannot have multiple "in" soap_headers referencing the same value: "value".
ATL2235 Cannot process soap_header "header" of method "method" : fixed-size arrays cannot be used in a SOAP header directly; please wrap the array in a struct.
ATL2236 invalid use of retval on method "method" : a retval parameter must be the last parameter on the method.
ATL2237 ATL Server does not support style="style" with use="use".
ATL2238 Unrecognized style: "style". Legal values are: "document" and "rpc".
ATL2239 Unrecognized use: "use". Legal values are: "literal" and "encoded".
ATL2240 "field" field of struct "struct" has too many indirections. Fixed size arrays cannot have indirections.
ATL2241 Cannot process: "name" : size_is field "size" has invalid type "type".
ATL2242 Cannot process: "name" : field "field" has too many indirections.
ATL2243 Cannot process: "name" : size_is field "field" does not exist.
ATL2244 Cannot process: "name" : field "field" requires size_is attribute.
ATL2245 Cannot process: "name" : multidimensional arrays are not supported with style="document" and use="literal", please use style="rpc" and use="encoded".
ATL2246 The "size" size_is parameter for the "param" parameter of method "method" must be an in parameter.
ATL2247 Cannot process: "name" : size_is parameter "size" does not exist.
ATL2248 Cannot process: "name" : SOAP methods cannot have unnamed parameters.
ATL2249 "name" is not a valid soap_handler name. The value must be a valid C++ identifier.