3.1.4.18.8 EnumerateSRPLevels (Opnum 10)

This method is called by a client to get an enumeration of software restriction policy (see section 3.1.1.1.9) trust levels supported by the server.

 HRESULT EnumerateSRPLevels(
   [in] LCID Locale,
   [out] int* cLevels,
   [out, size_is(,*cLevels)] SRPLevelInfo** aSRPLevels
 );

Locale: The language code identifier, as specified in [MS-LCID], for the language into which the descriptive strings for each level are to be translated, if possible.

cLevels: A pointer to a variable that, upon successful completion, MUST be set to the number of elements in aSRPLevels.

aSRPLevels: A pointer to a variable that, upon successful completion, MUST be set to an array of SRPLevelInfo (section 2.2.6) structures representing the software restriction policy levels that the server defines.

Return Values: This method MUST return S_OK (0x00000000) on success, and a failure result, as specified in [MS-ERREF] section 2.1, on failure. All failure results MUST be treated identically.

The server SHOULD, by some implementation-specific mechanism, attempt to translate the names of the software restriction policy levels it supports to the language specified by Locale, and SHOULD fall back to a default language if it cannot.

The server then MUST attempt to set the values referenced by the out parameters as follows: The server MUST attempt to set the value referenced by cLevels to the number of software restriction policy levels the server supports, and the value referenced by aSRPLevels to an array of SRPLevelInfo structures, each of which describes a software restriction policy level, and fail the call if it cannot.