| 132 | // pcbLengthNeeded - Receives number of bytes necessary to store the information |
| 133 | |
| 134 | bool STORMAPI SFileGetFileInfo( |
| 135 | HANDLE hMpqOrFile, |
| 136 | SFileInfoClass InfoClass, |
| 137 | void * pvFileInfo, |
| 138 | DWORD cbFileInfo, |
| 139 | LPDWORD pcbLengthNeeded) |
| 140 | { |
| 141 | MPQ_SIGNATURE_INFO SignatureInfo; |
| 142 | TMPQArchive * ha = NULL; |
| 143 | TFileEntry * pFileEntry = NULL; |
| 144 | ULONGLONG Int64Value = 0; |
| 145 | ULONGLONG ByteOffset = 0; |
| 146 | TMPQFile * hf = NULL; |
| 147 | void * pvSrcFileInfo = NULL; |
| 148 | DWORD cbSrcFileInfo = 0; |
| 149 | DWORD dwInt32Value = 0; |
| 150 | int nInfoType = SFILE_INFO_TYPE_INVALID_HANDLE; |
| 151 | int nError = ERROR_SUCCESS; |
| 152 | |
| 153 | switch(InfoClass) |
| 154 | { |
| 155 | case SFileMpqFileName: |
| 156 | ha = IsValidMpqHandle(hMpqOrFile); |
| 157 | if(ha != NULL) |
| 158 | { |
| 159 | pvSrcFileInfo = (void *)FileStream_GetFileName(ha->pStream); |
| 160 | cbSrcFileInfo = (DWORD)(_tcslen((TCHAR *)pvSrcFileInfo) + 1) * sizeof(TCHAR); |
| 161 | nInfoType = SFILE_INFO_TYPE_DIRECT_POINTER; |
| 162 | } |
| 163 | break; |
| 164 | |
| 165 | case SFileMpqStreamBitmap: |
| 166 | ha = IsValidMpqHandle(hMpqOrFile); |
| 167 | if(ha != NULL) |
| 168 | return FileStream_GetBitmap(ha->pStream, pvFileInfo, cbFileInfo, pcbLengthNeeded); |
| 169 | break; |
| 170 | |
| 171 | case SFileMpqUserDataOffset: |
| 172 | ha = IsValidMpqHandle(hMpqOrFile); |
| 173 | if(ha != NULL) |
| 174 | { |
| 175 | nInfoType = SFILE_INFO_TYPE_NOT_FOUND; |
| 176 | if(ha->pUserData != NULL) |
| 177 | { |
| 178 | pvSrcFileInfo = &ha->UserDataPos; |
| 179 | cbSrcFileInfo = sizeof(ULONGLONG); |
| 180 | nInfoType = SFILE_INFO_TYPE_DIRECT_POINTER; |
| 181 | } |
| 182 | } |
| 183 | break; |
| 184 | |
| 185 | case SFileMpqUserDataHeader: |
| 186 | ha = IsValidMpqHandle(hMpqOrFile); |
| 187 | if(ha != NULL) |
| 188 | { |
| 189 | nInfoType = SFILE_INFO_TYPE_NOT_FOUND; |
| 190 | if(ha->pUserData != NULL) |
| 191 | { |
nothing calls this directly
no test coverage detected