6 Appendix A: Full IDL
For ease of implementation, the full IDL is provided below, where "ms-dtyp.idl" refers to the IDL found in [MS-DTYP] section 5. The syntax uses the IDL syntax extensions defined in [MS-RPCE] section 2.2.4 and [MS-RPCE] section 3.1.1.5.1. For example, as noted in [MS-RPCE] section 2.2.4.9, a pointer_default declaration is not required and pointer_default(unique) is assumed.
-
import "ms-dtyp.idl"; [ uuid(A8E0653C-2744-4389-A61D-7373DF8B2292), version(1.0), ms_union, pointer_default(unique) ] interface FileServerVssAgent { typedef struct _FSSAGENT_SHARE_MAPPING_1 { GUID ShadowCopySetId; GUID ShadowCopyId; [string] LPWSTR ShareNameUNC; [string] LPWSTR ShadowCopyShareName; LONGLONG CreationTimestamp; } FSSAGENT_SHARE_MAPPING_1, *PFSSAGENT_SHARE_MAPPING_1; typedef [switch_type(unsigned long)] union _FSSAGENT_SHARE_MAPPING { [case(1)] PFSSAGENT_SHARE_MAPPING_1 ShareMapping1; [default] ; } FSSAGENT_SHARE_MAPPING, *PFSSAGENT_SHARE_MAPPING; DWORD GetSupportedVersion ( [out] DWORD *MinVersion, [out] DWORD *MaxVersion); DWORD SetContext ( [in] handle_t hBinding, [in] unsigned long Context); DWORD StartShadowCopySet ( [in] handle_t hBinding, [in] GUID ClientShadowCopySetId, [out] GUID *pShadowCopySetId); DWORD AddToShadowCopySet ( [in] handle_t hBinding, [in] GUID ClientShadowCopyId, [in] GUID ShadowCopySetId, [in] [string] LPWSTR ShareName, [out] GUID *pShadowCopyId); DWORD CommitShadowCopySet ( [in] handle_t hBinding, [in] GUID ShadowCopySetId, [in] unsigned long TimeOutInMilliseconds); DWORD ExposeShadowCopySet ( [in] handle_t hBinding, [in] GUID ShadowCopySetId, [in] unsigned long TimeOutInMilliseconds); DWORD RecoveryCompleteShadowCopySet ( [in] handle_t hBinding, [in] GUID ShadowCopySetId); DWORD AbortShadowCopySet ( [in] handle_t hBinding, [in] GUID ShadowCopySetId); DWORD IsPathSupported ( [in] handle_t hBinding, [in] [string] LPWSTR ShareName, [out] BOOL* SupportedByThisProvider, [out] [string] LPWSTR* OwnerMachineName); DWORD IsPathShadowCopied ( [in] handle_t hBinding, [in] [string] LPWSTR ShareName, [out] BOOL* ShadowCopyPresent, [out] long* ShadowCopyCompatibility); DWORD GetShareMapping ( [in] handle_t hBinding, [in] GUID ShadowCopyId, [in] GUID ShadowCopySetId, [in] [string] LPWSTR ShareName, [in] DWORD Level, [out] [switch_is(Level)] PFSSAGENT_SHARE_MAPPING ShareMapping); DWORD DeleteShareMapping ( [in] handle_t hBinding, [in] GUID ShadowCopySetId, [in] GUID ShadowCopyId, [in] [string] LPWSTR ShareName); DWORD PrepareShadowCopySet ( [in] handle_t hBinding, [in] GUID ShadowCopySetId, [in] unsigned long TimeOutInMilliseconds); }