1e41f4b71Sopenharmony_ci# Globalization Subsystem Changelog
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci## cl.resourceManager.1 Change in the Meaning of the Return Value for the API Used to Obtain the rawfile Descriptor
4e41f4b71Sopenharmony_ci
5e41f4b71Sopenharmony_ciChanged the meaning of the return value for the API used to obtain the rawfile descriptor after the non-decompression feature is added in this version. The change in the meaning of the return value, namely, **descriptor: RawFileDescriptor {fd, offset, length}**, is described as follows:
6e41f4b71Sopenharmony_ci
7e41f4b71Sopenharmony_ci**Before change:**
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ci**fd**: file descriptor for accessing the rawfile.
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ci**offset**: offset for accessing the rawfile. In this case, the value is **0**.
12e41f4b71Sopenharmony_ci
13e41f4b71Sopenharmony_ci**length**: size of the rawfile to access.
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ci**After change:**
16e41f4b71Sopenharmony_ci
17e41f4b71Sopenharmony_ci**fd**: file descriptor for accessing the HAP where the rawfile is located.
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci**offset**: offset of the accessed rawfile relative to the HAP.
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ci**length**: size of the rawfile to access.
22e41f4b71Sopenharmony_ci
23e41f4b71Sopenharmony_ci**Change Impact**
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ciIn versions earlier than 4.0.2.2, the rawfile can be accessed only through **fd**. In version 4.0.2.2 or later, the rawfile can be accessed only through **{fd, offset, and length}**.
26e41f4b71Sopenharmony_ci
27e41f4b71Sopenharmony_ci**Key API/Component Changes**
28e41f4b71Sopenharmony_ci
29e41f4b71Sopenharmony_ci| **Original API**                           | 
30e41f4b71Sopenharmony_ci| ----------------                         | 
31e41f4b71Sopenharmony_ci| getRawFd(path: string, callback: AsyncCallback\<RawFileDescriptor>): void   | 
32e41f4b71Sopenharmony_ci| getRawFd(path: string): Promise\<RawFileDescriptor>  |
33e41f4b71Sopenharmony_ci| getRawFileDescriptor(path: string, callback: AsyncCallback\<RawFileDescriptor>): void|
34e41f4b71Sopenharmony_ci| getRawFileDescriptor(path: string): Promise\<RawFileDescriptor>|
35e41f4b71Sopenharmony_ci||
36e41f4b71Sopenharmony_ci
37e41f4b71Sopenharmony_ci**Sample Code**
38e41f4b71Sopenharmony_ci
39e41f4b71Sopenharmony_ciThe following is an example of calling the **getRawFd** API:
40e41f4b71Sopenharmony_ci```
41e41f4b71Sopenharmony_citry {
42e41f4b71Sopenharmony_ci    this.context.resourceManager.getRawFd("test.ogg", (error, value) => {
43e41f4b71Sopenharmony_ci        if (error != null) {
44e41f4b71Sopenharmony_ci            console.log(`callback getRawFd failed error code: ${error.code}, message: ${error.message}.`);
45e41f4b71Sopenharmony_ci        } else {
46e41f4b71Sopenharmony_ci            let fileDescriptor = {
47e41f4b71Sopenharmony_ci                fd = value.fd,
48e41f4b71Sopenharmony_ci                offset = value.offset,
49e41f4b71Sopenharmony_ci                length = value.length
50e41f4b71Sopenharmony_ci            }
51e41f4b71Sopenharmony_ci            this.avPlayer.fdSrc(fileDescriptor); // Take the audio player as an example. When calling fdSrc, pass fileDescriptor in addition to fd.
52e41f4b71Sopenharmony_ci        }
53e41f4b71Sopenharmony_ci    });
54e41f4b71Sopenharmony_ci  } catch (error) {
55e41f4b71Sopenharmony_ci      console.error(`callback getRawFd failed, error code: ${error.code}, message: ${error.message}.`)
56e41f4b71Sopenharmony_ci  };
57e41f4b71Sopenharmony_ci```
58