1# FileShare 2 3 4## 概述 5 6此模块提供文件分享功能,以授权对其他应用程序具有读写权限的公共目录文件的统一资源标识符(URI)。 7 8**起始版本:** 12 9 10 11## 汇总 12 13 14### 文件 15 16| 名称 | 描述 | 17| -------- | -------- | 18| [oh_file_share.h](oh__file__share_8h.md) | 提供基于URI的文件及目录授予持久化权限、权限激活、权限查询等方法。 | 19 20 21### 结构体 22 23| 名称 | 描述 | 24| -------- | -------- | 25| struct [FileShare_PolicyErrorResult](_file_share___policy_error_result.md) | 授予或使能权限失败的URI策略结果。 | 26| struct [FileShare_PolicyInfo](_file_share___policy_info.md) | 需要授予或使能权限URI的策略信息。 | 27 28 29### 类型定义 30 31| 名称 | 描述 | 32| -------- | -------- | 33| typedef enum [FileShare_OperationMode](#fileshare_operationmode-1) [FileShare_OperationMode](#fileshare_operationmode) | URI操作模式枚举值。 | 34| typedef enum [FileShare_PolicyErrorCode](#fileshare_policyerrorcode-1) [FileShare_PolicyErrorCode](#fileshare_policyerrorcode) | 授予或使能权限策略失败的URI对应的错误码枚举值。 | 35| typedef struct [FileShare_PolicyErrorResult](_file_share___policy_error_result.md) [FileShare_PolicyErrorResult](#fileshare_policyerrorresult) | 授予或使能权限失败的URI策略结果。 | 36| typedef struct [FileShare_PolicyInfo](_file_share___policy_info.md) [FileShare_PolicyInfo](#fileshare_policyinfo) | 需要授予或使能权限URI的策略信息。 | 37 38 39### 枚举 40 41| 名称 | 描述 | 42| -------- | -------- | 43| [FileShare_OperationMode](#fileshare_operationmode) {<br/>READ_MODE = 1 << 0,<br/>WRITE_MODE = 1 << 1<br/>} | URI操作模式枚举值。 | 44| [FileShare_PolicyErrorCode](#fileshare_policyerrorcode) {<br/>PERSISTENCE_FORBIDDEN = 1,<br/>INVALID_MODE = 2,<br/>INVALID_PATH = 3,<br/>PERMISSION_NOT_PERSISTED = 4<br/>} | 授予或使能权限策略失败的URI对应的错误码枚举值。 | 45 46 47### 函数 48 49| 名称 | 描述 | 50| -------- | -------- | 51| [FileManagement_ErrCode](_file_i_o.md#filemanagement_errcode) [OH_FileShare_PersistPermission](#oh_fileshare_persistpermission) (const [FileShare_PolicyInfo](_file_share___policy_info.md) \*policies, unsigned int policyNum, [FileShare_PolicyErrorResult](_file_share___policy_error_result.md) \*\*result, unsigned int \*resultNum) | 对所选择的多个文件或目录URI持久化授权。 | 52| [FileManagement_ErrCode](_file_i_o.md#filemanagement_errcode) [OH_FileShare_RevokePermission](#oh_fileshare_revokepermission) (const [FileShare_PolicyInfo](_file_share___policy_info.md) \*policies, unsigned int policyNum, [FileShare_PolicyErrorResult](_file_share___policy_error_result.md) \*\*result, unsigned int \*resultNum) | 对所选择的多个文件或目录URI取消持久化授权。 | 53| [FileManagement_ErrCode](_file_i_o.md#filemanagement_errcode) [OH_FileShare_ActivatePermission](#oh_fileshare_activatepermission) (const [FileShare_PolicyInfo](_file_share___policy_info.md) \*policies, unsigned int policyNum, [FileShare_PolicyErrorResult](_file_share___policy_error_result.md) \*\*result, unsigned int \*resultNum) | 使能多个已经持久化授权的文件或目录。 | 54| [FileManagement_ErrCode](_file_i_o.md#filemanagement_errcode) [OH_FileShare_DeactivatePermission](#oh_fileshare_deactivatepermission) (const [FileShare_PolicyInfo](_file_share___policy_info.md) \*policies, unsigned int policyNum, [FileShare_PolicyErrorResult](_file_share___policy_error_result.md) \*\*result, unsigned int \*resultNum) | 取消使能持久化授权过的多个文件或目录。 | 55| [FileManagement_ErrCode](_file_i_o.md#filemanagement_errcode) [OH_FileShare_CheckPersistentPermission](#oh_fileshare_checkpersistentpermission) (const [FileShare_PolicyInfo](_file_share___policy_info.md) \*policies, unsigned int policyNum, bool \*\*result, unsigned int \*resultNum) | 校验所选择的多个文件或目录URI的持久化授权。 | 56| void [OH_FileShare_ReleasePolicyErrorResult](#oh_fileshare_releasepolicyerrorresult) ([FileShare_PolicyErrorResult](_file_share___policy_error_result.md) \*errorResult, unsigned int resultNum) | 释放FileShare_PolicyErrorResult指针指向的内存资源。 | 57 58 59## 类型定义说明 60 61 62### FileShare_OperationMode 63 64``` 65typedef enum FileShare_OperationMode FileShare_OperationMode 66``` 67 68**描述** 69 70URI操作模式枚举值。 71 72**起始版本:** 12 73 74 75### FileShare_PolicyErrorCode 76 77``` 78typedef enum FileShare_PolicyErrorCode FileShare_PolicyErrorCode 79``` 80 81**描述** 82 83授予或使能权限策略失败的URI对应的错误码枚举值。 84 85**起始版本:** 12 86 87 88### FileShare_PolicyErrorResult 89 90``` 91typedef struct FileShare_PolicyErrorResult FileShare_PolicyErrorResult 92``` 93 94**描述** 95 96授予或使能权限失败的URI策略结果。 97 98**起始版本:** 12 99 100 101### FileShare_PolicyInfo 102 103``` 104typedef struct FileShare_PolicyInfo FileShare_PolicyInfo 105``` 106 107**描述** 108 109需要授予或使能权限URI的策略信息。 110 111**起始版本:** 12 112 113 114## 枚举类型说明 115 116 117### FileShare_OperationMode 118 119``` 120enum FileShare_OperationMode 121``` 122 123**描述** 124 125URI操作模式枚举值。 126 127**起始版本:** 12 128 129| 枚举值 | 描述 | 130| -------- | -------- | 131| READ_MODE | 读取权限。 | 132| WRITE_MODE | 写入权限。 | 133 134 135### FileShare_PolicyErrorCode 136 137``` 138enum FileShare_PolicyErrorCode 139``` 140 141**描述** 142 143授予或使能权限策略失败的URI对应的错误码枚举值。 144 145**起始版本:** 12 146 147| 枚举值 | 描述 | 148| -------- | -------- | 149| PERSISTENCE_FORBIDDEN | URI禁止被持久化。 | 150| INVALID_MODE | 无效的模式。 | 151| INVALID_PATH | 无效路径。 | 152| PERMISSION_NOT_PERSISTED | 权限没有被持久化。 | 153 154 155## 函数说明 156 157 158### OH_FileShare_ActivatePermission() 159 160``` 161FileManagement_ErrCode OH_FileShare_ActivatePermission (const FileShare_PolicyInfo *policies, unsigned int policyNum, FileShare_PolicyErrorResult **result, unsigned int *resultNum ) 162``` 163 164**描述** 165 166使能多个已经持久化授权的文件或目录。 167 168**起始版本:** 12 169 170**参数:** 171 172| 名称 | 描述 | 173| -------- | -------- | 174| policies | 一个指向FileShare_PolicyInfo实例的指针。 | 175| policyNum | FileShare_PolicyInfo实例数组的大小。 | 176| result | FileShare_PolicyErrorResult数组指针。请使用OH_FileShare_ReleasePolicyErrorResult()进行资源释放。 | 177| resultNum | FileShare_PolicyErrorResult数组大小。 | 178 179**需要权限:** 180 181ohos.permission.FILE_ACCESS_PERSIST 182 183**返回:** 184 185返回FileManagement模块错误码[FileManagement_ErrCode](_file_i_o.md#filemanagement_errcode-1)。 186**E_PARAMS** 401 - 输入参数无效。可能的原因有: 1871.参数policies或参数result或参数resultNum为空指针; 1882.参数policyNum值为0或者超过最大长度(500); 1893.参数policies中携带的uri为空或者length为0或者uri的长度与length不一致。 190 191**E_DEVICE_NOT_SUPPORT** 801 - 当前设备类型不支持此接口。 192**E_PERMISSION** 201 - 接口权限校验失败。 193**E_ENOMEM** 13900011 - 分配或者拷贝内存失败。 194**E_EPERM** 13900001 - 操作不被允许。 195**E_UNKNOWN_ERROR** 13900042 - 内部未知错误,调用其它部件返回的除以上错误之外的其它错误。 196**E_NO_ERROR** 0 - 接口调用成功。 197 198### OH_FileShare_CheckPersistentPermission() 199 200``` 201FileManagement_ErrCode OH_FileShare_CheckPersistentPermission (const FileShare_PolicyInfo *policies, unsigned int policyNum, bool **result, unsigned int *resultNum ) 202``` 203 204**描述** 205 206校验所选择的多个文件或目录URI的持久化授权。 207 208**起始版本:** 12 209 210**参数:** 211 212| 名称 | 描述 | 213| -------- | -------- | 214| policies | 一个指向FileShare_PolicyInfo实例的指针。 | 215| policyNum | FileShare_PolicyInfo实例数组的大小。 | 216| result | 授权校验结果指针。请引用头文件malloc.h并使用free()进行资源释放。 | 217| resultNum | 校验结果数组的大小。| 218 219**需要权限:** 220 221ohos.permission.FILE_ACCESS_PERSIST 222 223**返回:** 224 225返回FileManagement模块错误码[FileManagement_ErrCode](_file_i_o.md#filemanagement_errcode-1)。 226**E_PARAMS** 401 - 输入参数无效。可能的原因有: 2271.参数policies或参数result或参数resultNum为空指针; 2282.参数policyNum值为0或者超过最大长度(500); 2293.参数policies中携带的uri为空或者length为0或者uri的长度与length不一致。 230 231**E_DEVICE_NOT_SUPPORT** 801 - 当前设备类型不支持此接口。 232**E_PERMISSION** 201 - 接口权限校验失败。 233**E_ENOMEM** 13900011 - 分配或者拷贝内存失败。 234**E_EPERM** 13900001 - 操作不被允许。可能的原因为policies中携带的所有uri都不符合规范或者uri转换出来的路径不存在。 235**E_UNKNOWN_ERROR** 13900042 - 内部未知错误,调用其它部件返回的除以上错误之外的其它错误。 236**E_NO_ERROR** 0 - 接口调用成功。 237 238 239### OH_FileShare_DeactivatePermission() 240 241``` 242FileManagement_ErrCode OH_FileShare_DeactivatePermission (const FileShare_PolicyInfo *policies, unsigned int policyNum, FileShare_PolicyErrorResult **result, unsigned int *resultNum ) 243``` 244 245**描述** 246 247取消使能持久化授权过的多个文件或目录。 248 249**起始版本:** 12 250 251**参数:** 252 253| 名称 | 描述 | 254| -------- | -------- | 255| policies | 一个指向FileShare_PolicyInfo实例的指针。 | 256| policyNum | FileShare_PolicyInfo实例数组的大小。 | 257| result | FileShare_PolicyErrorResult数组指针。请使用OH_FileShare_ReleasePolicyErrorResult()进行资源释放。 | 258| resultNum | FileShare_PolicyErrorResult数组大小。 | 259 260**需要权限:** 261 262ohos.permission.FILE_ACCESS_PERSIST 263 264**返回:** 265 266返回FileManagement模块错误码[FileManagement_ErrCode](_file_i_o.md#filemanagement_errcode-1)。 267**E_PARAMS** 401 - 输入参数无效。可能的原因有: 2681.参数policies或参数result或参数resultNum为空指针; 2692.参数policyNum值为0或者超过最大长度(500); 2703.参数policies中携带的uri为空或者length为0或者uri的长度与length不一致。 271 272**E_DEVICE_NOT_SUPPORT** 801 - 当前设备类型不支持此接口。 273**E_PERMISSION** 201 - 接口权限校验失败。 274**E_ENOMEM** 13900011 - 分配或者拷贝内存失败。 275**E_EPERM** 13900001 - 操作不被允许。 276**E_UNKNOWN_ERROR** 13900042 - 内部未知错误,调用其它部件返回的除以上错误之外的其它错误。 277**E_NO_ERROR** 0 - 接口调用成功。 278 279 280### OH_FileShare_PersistPermission() 281 282``` 283FileManagement_ErrCode OH_FileShare_PersistPermission (const FileShare_PolicyInfo *policies, unsigned int policyNum, FileShare_PolicyErrorResult **result, unsigned int *resultNum ) 284``` 285 286**描述** 287 288对所选择的多个文件或目录URI持久化授权。 289 290**起始版本:** 12 291 292**参数:** 293 294| 名称 | 描述 | 295| -------- | -------- | 296| policies | 一个指向FileShare_PolicyInfo实例的指针。 | 297| policyNum | FileShare_PolicyInfo实例数组的大小。 | 298| result | FileShare_PolicyErrorResult数组指针。请使用OH_FileShare_ReleasePolicyErrorResult()进行资源释放。 | 299| resultNum | FileShare_PolicyErrorResult数组大小。 | 300 301**需要权限:** 302 303ohos.permission.FILE_ACCESS_PERSIST 304 305**返回:** 306 307返回FileManagement模块错误码[FileManagement_ErrCode](_file_i_o.md#filemanagement_errcode-1)。 308**E_PARAMS** 401 - 输入参数无效。可能的原因有: 3091.参数policies或参数result或参数resultNum为空指针; 3102.参数policyNum值为0或者超过最大长度(500); 3113.参数policies中携带的uri为空或者length为0或者uri的长度与length不一致。 312 313**E_DEVICE_NOT_SUPPORT** 801 - 当前设备类型不支持此接口。 314**E_PERMISSION** 201 - 接口权限校验失败。 315**E_ENOMEM** 13900011 - 分配或者拷贝内存失败。 316**E_EPERM** 13900001 - 操作不被允许。 317**E_UNKNOWN_ERROR** 13900042 - 内部未知错误,调用其它部件返回的除以上错误之外的其它错误。 318**E_NO_ERROR** 0 - 接口调用成功。 319 320 321### OH_FileShare_ReleasePolicyErrorResult() 322 323``` 324void OH_FileShare_ReleasePolicyErrorResult (FileShare_PolicyErrorResult *errorResult, unsigned int resultNum ) 325``` 326 327**描述** 328 329释放FileShare_PolicyErrorResult指针指向的内存资源。 330 331**起始版本:** 12 332 333**参数:** 334 335| 名称 | 描述 | 336| -------- | -------- | 337| errorResult | 一个指向FileShare_PolicyErrorResult实例的指针。 | 338| resultNum | FileShare_PolicyErrorResult实例数组的大小。 | 339 340 341### OH_FileShare_RevokePermission() 342 343``` 344FileManagement_ErrCode OH_FileShare_RevokePermission (const FileShare_PolicyInfo *policies, unsigned int policyNum, FileShare_PolicyErrorResult **result, unsigned int *resultNum ) 345``` 346 347**描述** 348对所选择的多个文件或目录URI取消持久化授权。 349 350**起始版本**:12 351 352**参数:** 353 354| 名称 | 描述 | 355| -------- | -------- | 356| policies | 一个指向FileShare_PolicyInfo实例的指针。 | 357| policyNum | FileShare_PolicyInfo实例数组的大小。 | 358| result | FileShare_PolicyErrorResult数组指针。请使用OH_FileShare_ReleasePolicyErrorResult()进行资源释放。 | 359| resultNum | FileShare_PolicyErrorResult数组大小。 | 360 361**需要权限:** 362 363ohos.permission.FILE_ACCESS_PERSIST 364 365**返回:** 366 367返回FileManagement模块错误码[FileManagement_ErrCode](_file_i_o.md#filemanagement_errcode-1)。 368**E_PARAMS** 401 - 输入参数无效。可能的原因有: 3691.参数policies或参数result或参数resultNum为空指针; 3702.参数policyNum值为0或者超过最大长度(500); 3713.参数policies中携带的uri为空或者length为0或者uri的长度与length不一致。 372 373**E_DEVICE_NOT_SUPPORT** 801 - 当前设备类型不支持此接口。 374**E_PERMISSION** 201 - 接口权限校验失败。 375**E_ENOMEM** 13900011 - 分配或者拷贝内存失败。 376**E_EPERM** 13900001 - 操作不被允许。 377**E_UNKNOWN_ERROR** 13900042 - 内部未知错误,调用其它部件返回的除以上错误之外的其它错误。 378**E_NO_ERROR** 0 - 接口调用成功。 379