|virtual AKRESULT||Open (const AkOSChar *in_pszFileName, AkOpenMode in_eOpenMode, AkFileSystemFlags *in_pFlags, bool &io_bSyncOpen, AkFileDesc &io_fileDesc)=0|
|virtual AKRESULT||Open (AkFileID in_fileID, AkOpenMode in_eOpenMode, AkFileSystemFlags *in_pFlags, bool &io_bSyncOpen, AkFileDesc &io_fileDesc)=0|
|Virtual destructor on interface to avoid warnings.
File location resolver interface. There is one and only one File Location Resolver that is registered to the Stream Manager (using AK::StreamMgr::SetFileLocationResolver()). Its purpose is to map a file name or ID to 1) a streaming device / I/O hook; 2) a valid file descriptor (AkFileDesc) usable by the I/O hook. When your Low-Level I/O submodule uses a single device, you should create a standalone I/O hook which implements one of the I/O hooks defined above (blocking or deferred), as well as the File Location Resolver. You then register this object to the Stream Manager as the File Location Resolver. If you wish to create multiple devices, then you should have a separate object that implements AK::StreamMgr::IAkFileLocationResolver and registers to the Stream Manager as such. This object will be used to dispatch the file open request to the appropriate device. The strategy you will use to select the correct device is up to you to implement. You may also implement a set of hooks that delegate opening to the next device when they can't find the file requested (like a chain of responsiblity pattern), although this will likely be less efficient.