3.2.4.2.29.5 EnumFileScreens (Opnum 11)

The EnumFileScreens method returns all the file screens from the List of Persisted File Screens (section 3.2.1.3) that fall under the specified path.

 [id(FSRM_DISPID_FILESCREEN_MANAGER | 0x03)] HRESULT EnumFileScreens(
   [in, defaultvalue(L"")] BSTR path,
   [in, defaultvalue(FsrmEnumOptions_None)] 
     FsrmEnumOptions options,
   [out, retval] IFsrmCommittableCollection** fileScreens
 );

path: Contains the path for which to limit the return of file screens.

options: Contains the FsrmEnumOptions (section 2.2.1.2.5) to use when enumerating the file screens.

fileScreens: Pointer to an IFsrmCommittableCollection interface pointer (section 3.2.4.2.3) that upon completion contains pointers to every file screen belonging to a path related to the path specified by the wildcards entered in path. The caller MUST release the collection when the caller is done with it.

Return Values: The method MUST return zero on success, or a nonzero error code on failure.

Return value/code

Description

0x80045301

FSRM_E_NOT_FOUND

A file screen has not been applied to the specified directories.

0x80070057

E_INVALIDARG

The fileScreens parameter is NULL.

0x80045311

FSRM_E_NOT_SUPPORTED

This options parameter contains invalid FsrmEnumOptions (section 2.2.1.2.5) values.

Upon receiving this message, the server MUST validate parameters:

  • If fileScreens is NULL, the server MUST return E_INVALIDARG.

  • If options contains FsrmEnumOptions_Asynchronous or any value other than what is specified in section 2.2.1.2.5, the server MUST return FSRM_E_NOT_SUPPORTED.

Upon successful validation of parameters, the server MUST perform the following actions:

  • Create a new List of Non-Persisted File Screen Instances (section 3.2.1.3).

  • Populate the List of Non-Persisted File Screen Instances with Non-Persisted File Screen Instances (section 3.2.1.3.1.2) copied from the Persisted File Screens (section 3.2.1.3.1.1) in the List of Persisted File Screens according to the following rules:

    • If path ends with "\*", the server MUST populate this List of Non-Persisted File Screen Instances with a copy of every Persisted File Screen from the List of Persisted File Screens that belongs to an immediate subdirectory of path.

    • If path ends with "\...", the server MUST populate this List of Non-Persisted File Screen Instances with a copy of every Persisted File Screen from the List of Persisted File Screens that recursively belongs to a subdirectory of path.

    • If path does not end with "\*" or "\...", the server MUST populate this List of Non-Persisted File Screen Instances with a copy of only the file screen for path.

    • If a file screen does not exist for path, the server MUST return S_OK and MUST set fileScreenExceptions to an empty IFsrmCommittableCollection.

  • Populate fileScreens with the IFsrmFileScreen interface pointer (section 3.2.4.2.27) of every Non-Persisted File Screen Instance in this List of Non-Persisted File Screen Instances.