#define WM_EXTRACT_SIZE WM_USER+100 #define WM_EXTRACT_PROGRESS WM_USER+101 #define WM_EXTRACT_ERROR WM_USER+102 #define WM_EXTRACT_DONE WM_USER+103 // The maximum possible number of ISO indexes #define MAX_INDEXES 0x7E00 // The location of the PSAR offset in the PBP header #define HEADER_PSAR_OFFSET 0x24 // The location of the ISO indexes in the PSAR #define PSAR_INDEX_OFFSET 0x4000 // The location of the ISO data in the PSAR #define PSAR_ISO_OFFSET 0x100000 // The size of one "block" of the ISO #define ISO_BLOCK_SIZE 0x930 // Struct to store an ISO index typedef struct { int offset; int length; } INDEX; typedef struct { HWND callback; char srcPBP[0xFF]; char dstISO[0xFF]; } ExtractIsoInfo; HANDLE popstripExtract(ExtractIsoInfo info); void popstripCancel(); #pragma once extern int WINAPI popstripInit(INDEX **iso_index, char* pbpFile); //Returns index count extern int WINAPI popstripReadBlock(INDEX *iso_index, int blockNo, unsigned char *out_buffer); extern int WINAPI popstripGetIsoSize(INDEX *iso_index); extern void WINAPI popstripFinal(INDEX **iso_index);