3.3.4.13 Server Application Registers a Share

The calling application provides a share in SHARE_INFO_503_I structure as specified in [MS-SRVS] section 2.2.4.27 to register a share. The server MUST validate the SHARE_INFO_503_I structure as specified in [MS-SRVS] section 3.1.4.7. If any member in the structure is invalid, the server MUST return STATUS_INVALID_PARAMETER to the calling application. The server MUST look up the Share in the ShareList, where shi503_servername matches Share.ServerName and shi503_netname matches Share.Name. If a matching Share is found, the server MUST fail the call with an implementation-dependent error. Otherwise, the server MUST create a new Share with the following value set and insert it into ShareList and return STATUS_SUCCESS.

  • Share.Name MUST be set to shi503_netname.

  • Share.Type MUST be set to shi503_type. The server SHOULD<245> set STYPE_CLUSTER_FS, STYPE_CLUSTER_SOFS, and STYPE_CLUSTER_DFS as specified in [MS-SRVS] section 2.2.2.4 in an implementation-defined manner.

  • Share.Remark MUST be set to shi503_remark.

  • Share.LocalPath MUST be set to shi503_path.

  • Share.ServerName MUST be set to the shi503_servername.

  • Share.FileSecurity MUST be set to shi503_security_descriptor.

  • Share.MaxUses MUST be set to shi503_max_uses.

  • Share.CurrentUses MUST be set to 0.

  • Share.CscFlags MUST be set to 0.

  • Share.IsDfs MUST be set to FALSE.

  • Share.DoAccessBasedDirectoryEnumeration MUST be set to FALSE.

  • Share.AllowNamespaceCaching MUST be set to FALSE.

  • Share.ForceSharedDelete MUST be set to FALSE.

  • Share.RestrictExclusiveOpens MUST be set to FALSE.

  • Share.ForceLevel2Oplock MUST be set to FALSE.

  • Share.HashEnabled MUST be set to FALSE.

  • If the server implements the SMB 3.x dialect family, Share.EncryptData MUST be set to FALSE.

  • If the server implements the SMB 3.1.1 dialect, Share.CompressData MUST be set to FALSE.

If Share.Name is equal to "IPC$" or Share.Type does not have the STYPE_SPECIAL bit set, as specified in [MS-SRVS] section 2.2.2.4, then Share.ConnectSecurity SHOULD be set to a security descriptor allowing all users. Otherwise, Share.ConnectSecurity SHOULD be set to a security descriptor allowing only administrators.

If the server implements the SMB 3.x dialect family, Share.CATimeout MUST be set to an implementation-specific value.<246>