1# oh_file_share.h 2<!--Kit: Core File Kit--> 3<!--Subsystem: FileManagement--> 4<!--Owner: @lvzhenjie; @hongjin-li_admin--> 5<!--Designer: @chenxi0605; @JerryH1011--> 6<!--Tester: @leiyuqian--> 7<!--Adviser: @foryourself--> 8 9## 概述 10 11提供基于URI的文件及目录授予持久化权限、权限激活、权限查询等方法。 12 13**库:** libohfileshare.so 14 15**系统能力:** SystemCapability.FileManagement.AppFileService.FolderAuthorization 16 17**起始版本:** 12 18 19**相关模块:** [fileShare](capi-fileshare.md) 20 21## 汇总 22 23### 结构体 24 25| 名称 | typedef关键字 | 描述 | 26| -- | -- | -- | 27| [FileShare_PolicyErrorResult](capi-fileshare-fileshare-policyerrorresult.md) | FileShare_PolicyErrorResult | 授予或使能权限失败的URI策略结果。 | 28| [FileShare_PolicyInfo](capi-fileshare-fileshare-policyinfo.md) | FileShare_PolicyInfo | 需要授予或使能权限URI的策略信息。 | 29 30### 枚举 31 32| 名称 | typedef关键字 | 描述 | 33| -- | -- | -- | 34| [FileShare_OperationMode](#fileshare_operationmode) | FileShare_OperationMode | URI操作模式枚举值。 | 35| [FileShare_PolicyErrorCode](#fileshare_policyerrorcode) | FileShare_PolicyErrorCode | 授予或使能权限策略失败的URI对应的错误码枚举值。 | 36 37### 函数 38 39| 名称 | 描述 | 40| -- | -- | 41| [FileManagement_ErrCode OH_FileShare_PersistPermission(const FileShare_PolicyInfo *policies, unsigned int policyNum,FileShare_PolicyErrorResult **result, unsigned int *resultNum)](#oh_fileshare_persistpermission) | 对所选择的多个文件或目录URI持久化授权。 | 42| [FileManagement_ErrCode OH_FileShare_RevokePermission(const FileShare_PolicyInfo *policies, unsigned int policyNum,FileShare_PolicyErrorResult **result, unsigned int *resultNum)](#oh_fileshare_revokepermission) | 对所选择的多个文件或目录URI取消持久化授权。 | 43| [FileManagement_ErrCode OH_FileShare_ActivatePermission(const FileShare_PolicyInfo *policies, unsigned int policyNum,FileShare_PolicyErrorResult **result, unsigned int *resultNum)](#oh_fileshare_activatepermission) | 使能多个已经持久化授权的文件或目录。 | 44| [FileManagement_ErrCode OH_FileShare_DeactivatePermission(const FileShare_PolicyInfo *policies, unsigned int policyNum,FileShare_PolicyErrorResult **result, unsigned int *resultNum)](#oh_fileshare_deactivatepermission) | 取消使能持久化授权过的多个文件或目录。 | 45| [FileManagement_ErrCode OH_FileShare_CheckPersistentPermission(const FileShare_PolicyInfo *policies, unsigned int policyNum, bool **result, unsigned int *resultNum)](#oh_fileshare_checkpersistentpermission) | 校验所选择的多个文件或目录URI的持久化授权。 | 46| [void OH_FileShare_ReleasePolicyErrorResult(FileShare_PolicyErrorResult *errorResult, unsigned int resultNum)](#oh_fileshare_releasepolicyerrorresult) | 释放FileShare_PolicyErrorResult指针指向的内存资源。 | 47 48## 枚举类型说明 49 50### FileShare_OperationMode 51 52``` 53enum FileShare_OperationMode 54``` 55 56**描述** 57 58URI操作模式枚举值。 59 60**起始版本:** 12 61 62| 枚举项 | 描述 | 63| -- | -- | 64| READ_MODE = 1 << 0 | 读取权限。 | 65| WRITE_MODE = 1 << 1 | 写入权限。 | 66 67### FileShare_PolicyErrorCode 68 69``` 70enum FileShare_PolicyErrorCode 71``` 72 73**描述** 74 75授予或使能权限策略失败的URI对应的错误码枚举值。 76 77**起始版本:** 12 78 79| 枚举项 | 描述 | 80| -- | -- | 81| PERSISTENCE_FORBIDDEN = 1 | URI禁止被持久化。 | 82| INVALID_MODE = 2 | 无效的模式。 | 83| INVALID_PATH = 3 | 无效路径。 | 84| PERMISSION_NOT_PERSISTED = 4 | 权限没有被持久化。 | 85 86 87## 函数说明 88 89### OH_FileShare_PersistPermission() 90 91``` 92FileManagement_ErrCode OH_FileShare_PersistPermission(const FileShare_PolicyInfo *policies, unsigned int policyNum,FileShare_PolicyErrorResult **result, unsigned int *resultNum) 93``` 94 95**描述** 96 97对所选择的多个文件或目录URI持久化授权。 98 99**需要权限:** ohos.permission.FILE_ACCESS_PERSIST 100 101**起始版本:** 12 102 103 104**参数:** 105 106| 参数项 | 描述 | 107| -- | -- | 108| [const FileShare_PolicyInfo](capi-fileshare-fileshare-policyinfo.md) *policies | 一个指向FileShare_PolicyInfo实例的指针。 | 109| unsigned int policyNum | FileShare_PolicyInfo实例数组的大小。 | 110| [FileShare_PolicyErrorResult](capi-fileshare-fileshare-policyerrorresult.md) **result | FileShare_PolicyErrorResult数组指针。请使用OH_FileShare_ReleasePolicyErrorResult()进行资源释放。 | 111| unsigned int *resultNum | FileShare_PolicyErrorResult数组大小。 | 112 113**返回:** 114 115| 类型 | 说明 | 116| -- | -- | 117| [FileManagement_ErrCode](capi-error-code-h.md#filemanagement_errcode) | 返回FileManagement模块错误码[FileManagement_ErrCode](capi-error-code-h.md#filemanagement_errcode)。<br> E_PARAMS 401 - 输入参数无效。可能的原因有:<br> 1. 参数policies或参数result或参数resultNum为空指针;<br> 2. 参数policyNum值为0或者超过最大长度(500);<br> 3. 参数policies中携带的uri为空或者length为0或者uri的长度与length不一致。<br> E_DEVICE_NOT_SUPPORT 801 - 当前设备类型不支持此接口。<br> E_PERMISSION 201 - 接口权限校验失败。<br> E_ENOMEM 13900011 - 分配或者拷贝内存失败。<br> E_EPERM 13900001 - 操作不被允许。<br> E_UNKNOWN_ERROR 13900042 - 内部未知错误,调用其它部件返回的除以上错误之外的其它错误。<br> E_NO_ERROR 0 - 接口调用成功。 | 118 119### OH_FileShare_RevokePermission() 120 121``` 122FileManagement_ErrCode OH_FileShare_RevokePermission(const FileShare_PolicyInfo *policies, unsigned int policyNum,FileShare_PolicyErrorResult **result, unsigned int *resultNum) 123``` 124 125**描述** 126 127对所选择的多个文件或目录URI取消持久化授权。 128 129**需要权限:** ohos.permission.FILE_ACCESS_PERSIST 130 131**起始版本:** 12 132 133 134**参数:** 135 136| 参数项 | 描述 | 137| -- | -- | 138| [const FileShare_PolicyInfo](capi-fileshare-fileshare-policyinfo.md) *policies | 一个指向FileShare_PolicyInfo实例的指针。 | 139| unsigned int policyNum | FileShare_PolicyInfo实例数组的大小。 | 140| [FileShare_PolicyErrorResult](capi-fileshare-fileshare-policyerrorresult.md) **result | FileShare_PolicyErrorResult数组指针。请使用OH_FileShare_ReleasePolicyErrorResult()进行资源释放。 | 141| unsigned int *resultNum | FileShare_PolicyErrorResult数组大小。 | 142 143**返回:** 144 145| 类型 | 说明 | 146| -- | -- | 147| [FileManagement_ErrCode](capi-error-code-h.md#filemanagement_errcode) | 返回FileManagement模块错误码[FileManagement_ErrCode](capi-error-code-h.md#filemanagement_errcode)。<br> E_PARAMS 401 - 输入参数无效。可能的原因有:1. 参数policies或参数result或参数resultNum为空指针;<br> 2. 参数policyNum值为0或者超过最大长度(500);3. 参数policies中携带的uri为空或者length为0或者uri的长度与length不一致。<br> E_DEVICE_NOT_SUPPORT 801 - 当前设备类型不支持此接口。<br> E_PERMISSION 201 - 接口权限校验失败。<br> E_ENOMEM 13900011 - 分配或者拷贝内存失败。<br> E_EPERM 13900001 - 操作不被允许。<br> E_UNKNOWN_ERROR 13900042 - 内部未知错误,调用其它部件返回的除以上错误之外的其它错误。<br> E_NO_ERROR - 接口调用成功。 | 148 149### OH_FileShare_ActivatePermission() 150 151``` 152FileManagement_ErrCode OH_FileShare_ActivatePermission(const FileShare_PolicyInfo *policies, unsigned int policyNum,FileShare_PolicyErrorResult **result, unsigned int *resultNum) 153``` 154 155**描述** 156 157使能多个已经持久化授权的文件或目录。 158 159**需要权限:** ohos.permission.FILE_ACCESS_PERSIST 160 161**起始版本:** 12 162 163 164**参数:** 165 166| 参数项 | 描述 | 167| -- | -- | 168| [const FileShare_PolicyInfo](capi-fileshare-fileshare-policyinfo.md) *policies | 一个指向FileShare_PolicyInfo实例的指针。 | 169| unsigned int policyNum | FileShare_PolicyInfo实例数组的大小。 | 170| [FileShare_PolicyErrorResult](capi-fileshare-fileshare-policyerrorresult.md) **result | FileShare_PolicyErrorResult数组指针。请使用OH_FileShare_ReleasePolicyErrorResult()进行资源释放。 | 171| unsigned int *resultNum | FileShare_PolicyErrorResult数组大小。 | 172 173**返回:** 174 175| 类型 | 说明 | 176| -- | -- | 177| [FileManagement_ErrCode](capi-error-code-h.md#filemanagement_errcode) | 返回FileManagement模块错误码[FileManagement_ErrCode](capi-error-code-h.md#filemanagement_errcode)。<br> E_PARAMS 401 - 输入参数无效。可能的原因有:<br> 1. 参数policies或参数result或参数resultNum为空指针;<br> 2. 参数policyNum值为0或者超过最大长度(500);<br> 3. 参数policies中携带的uri为空或者length为0或者uri的长度与length不一致。<br> E_DEVICE_NOT_SUPPORT 801 - 当前设备类型不支持此接口。<br> E_PERMISSION 201 - 接口权限校验失败。<br> E_ENOMEM 13900011 - 分配或者拷贝内存失败。<br> E_EPERM 13900001 - 操作不被允许。<br> E_UNKNOWN_ERROR 13900042 - 内部未知错误,调用其它部件返回的除以上错误之外的其它错误。<br> E_NO_ERROR 0 - 接口调用成功。 | 178 179### OH_FileShare_DeactivatePermission() 180 181``` 182FileManagement_ErrCode OH_FileShare_DeactivatePermission(const FileShare_PolicyInfo *policies, unsigned int policyNum,FileShare_PolicyErrorResult **result, unsigned int *resultNum) 183``` 184 185**描述** 186 187取消使能持久化授权过的多个文件或目录。 188 189**需要权限:** ohos.permission.FILE_ACCESS_PERSIST 190 191**起始版本:** 12 192 193 194**参数:** 195 196| 参数项 | 描述 | 197| -- | -- | 198| [const FileShare_PolicyInfo](capi-fileshare-fileshare-policyinfo.md) *policies | 一个指向FileShare_PolicyInfo实例的指针。 | 199| unsigned int policyNum | FileShare_PolicyInfo实例数组的大小。 | 200| [FileShare_PolicyErrorResult](capi-fileshare-fileshare-policyerrorresult.md) **result | FileShare_PolicyErrorResult数组指针。请使用OH_FileShare_ReleasePolicyErrorResult()进行资源释放。 | 201| unsigned int *resultNum | FileShare_PolicyErrorResult数组大小。 | 202 203**返回:** 204 205| 类型 | 说明 | 206| -- | -- | 207| [FileManagement_ErrCode](capi-error-code-h.md#filemanagement_errcode) | 返回FileManagement模块错误码[FileManagement_ErrCode](capi-error-code-h.md#filemanagement_errcode)。<br> E_PARAMS 401 - 输入参数无效。可能的原因有:<br> 1. 参数policies或参数result或参数resultNum为空指针;<br> 2. 参数policyNum值为0或者超过最大长度(500);<br> 3. 参数policies中携带的uri为空或者length为0或者uri的长度与length不一致。<br> E_DEVICE_NOT_SUPPORT 801 - 当前设备类型不支持此接口。<br> E_PERMISSION 201 - 接口权限校验失败。<br> E_ENOMEM 13900011 - 分配或者拷贝内存失败。<br> E_EPERM 13900001 - 操作不被允许。<br> E_UNKNOWN_ERROR 13900042 - 内部未知错误,调用其它部件返回的除以上错误之外的其它错误。<br> E_NO_ERROR - 接口调用成功。 | 208 209### OH_FileShare_CheckPersistentPermission() 210 211``` 212FileManagement_ErrCode OH_FileShare_CheckPersistentPermission(const FileShare_PolicyInfo *policies, unsigned int policyNum, bool **result, unsigned int *resultNum) 213``` 214 215**描述** 216 217校验所选择的多个文件或目录URI的持久化授权。 218 219**需要权限:** ohos.permission.FILE_ACCESS_PERSIST 220 221**起始版本:** 12 222 223 224**参数:** 225 226| 参数项 | 描述 | 227| -- | -- | 228| [const FileShare_PolicyInfo](capi-fileshare-fileshare-policyinfo.md) *policies | 一个指向FileShare_PolicyInfo实例的指针。 | 229| unsigned int policyNum | FileShare_PolicyInfo实例数组的大小。 | 230| bool **result | 授权校验结果指针。请引用头文件malloc.h并使用free()进行资源释放。 | 231| unsigned int *resultNum | 校验结果数组的大小。 | 232 233**返回:** 234 235| 类型 | 说明 | 236| -- | -- | 237| [FileManagement_ErrCode](capi-error-code-h.md#filemanagement_errcode) | 返回FileManagement模块错误码[FileManagement_ErrCode](capi-error-code-h.md#filemanagement_errcode)。<br> E_PARAMS 401 - 输入参数无效。可能的原因有:<br> 1. 参数policies或参数result或参数resultNum为空指针;<br> 2. 参数policyNum值为0或者超过最大长度(500);<br> 3. 参数policies中携带的uri为空或者length为0或者uri的长度与length不一致。<br> E_DEVICE_NOT_SUPPORT 801 - 当前设备类型不支持此接口。<br> E_PERMISSION 201 - 接口权限校验失败。<br> E_ENOMEM 13900011 - 分配或者拷贝内存失败。<br> E_EPERM 13900001 - 操作不被允许。可能的原因为policies中携带的所有uri都不符合规范或者uri转换出来的路径不存在。<br> E_UNKNOWN_ERROR 13900042 - 内部未知错误,调用其它部件返回的除以上错误之外的其它错误。<br> E_NO_ERROR 0 - 接口调用成功。 | 238 239### OH_FileShare_ReleasePolicyErrorResult() 240 241``` 242void OH_FileShare_ReleasePolicyErrorResult(FileShare_PolicyErrorResult *errorResult, unsigned int resultNum) 243``` 244 245**描述** 246 247释放FileShare_PolicyErrorResult指针指向的内存资源。 248 249**起始版本:** 12 250 251 252**参数:** 253 254| 参数项 | 描述 | 255| -- | -- | 256| [FileShare_PolicyErrorResult](capi-fileshare-fileshare-policyerrorresult.md) *errorResult | 一个指向FileShare_PolicyErrorResult实例的指针。 | 257| unsigned int resultNum | FileShare_PolicyErrorResult实例数组的大小。 | 258 259 260