diff --git a/app.h b/app.h
index b40394d..0e4ef7c 100644
--- a/app.h
+++ b/app.h
@@ -1,7 +1,7 @@
 /*=============================================================================
 =============================================================================*/
-#define Q_Version 1,1,0,0
-#define InfoVer "1.1"
+#define Q_Version 1,2,0,0
+#define InfoVer "1.2"
 #define InfoCopy "(c)2024"
 
 #ifndef _WIN64
diff --git a/archive.bat b/archive.bat
index 3029395..7ffe65c 100644
--- a/archive.bat
+++ b/archive.bat
@@ -1,7 +1,7 @@
 @echo off
 set RETAIL=1
 rem *** set value ***
-set arcname=runspx11.zip
+set arcname=runspx12.zip
 set readme=runspx.txt
 set srcname=runspxsrc.lzh
 
diff --git a/makefile b/makefile
index e1a3081..ab11a44 100644
--- a/makefile
+++ b/makefile
@@ -1,6 +1,6 @@
 name = run
 
-UseDebug = 1	# 1 なら debug 指定
+UseDebug = 0	# 1 なら debug 指定
 !ifndef UseBCC
 UseBCC = 1	# 1 なら BCC32 , 0 なら CL
 !endif
diff --git a/release/runspx12.zip b/release/runspx12.zip
new file mode 100644
index 0000000..4a42c78
Binary files /dev/null and b/release/runspx12.zip differ
diff --git a/run.h b/run.h
index 71a782f..b20eef1 100644
--- a/run.h
+++ b/run.h
@@ -125,15 +125,16 @@ extern const WCHAR *GetTimeStrings(WCHAR *dest, susie_time_t timestamp);
 typedef struct {
 	BYTE *bits; // ビットマップのイメージ
 	HLOCAL info, bm;
-	HPALETTE hPalette;
+//	HPALETTE hPalette;
 	SIZE size; // 画像の大きさ(DIBの値はトップダウンもあるので使わないこと)
 	BITMAPINFOHEADER *DIB;
+/*
 	DWORD PaletteOffset;
-
 	struct {		// 減色パレット
 		BITMAPINFOHEADER dib2;
 		RGBQUAD rgb2[256];
 	} nb;
+*/
 } HTBMP;
 
 #ifdef __cplusplus
diff --git a/run_code.cpp b/run_code.cpp
index cce1c2c..c9f12fa 100644
--- a/run_code.cpp
+++ b/run_code.cpp
@@ -12,6 +12,7 @@ BOOL CheckHeader(void)
 	HANDLE hFile;
 	int result;
 
+	if ( IsSupported == NULL ) return FALSE;
 	hFile = OpenFileHeader(header);
 	if ( hFile == INVALID_HANDLE_VALUE ) return FALSE;
 
@@ -38,7 +39,7 @@ void SaveDibData(LPCWSTR lpBmpFn, HLOCAL HBInfo, HLOCAL HBm)
 	lpbmh = LocalLock(HBInfo);
 	lpdib = LocalLock(HBm);
 	if ( lpbmh == NULL || lpdib == NULL ||
-		*(size_t *)lpbmh < sizeof(BITMAPCOREHEADER) || *(size_t *)lpbmh > 256 ) {
+		*(DWORD *)lpbmh < sizeof(BITMAPCOREHEADER) || *(DWORD *)lpbmh > 256 ) {
 		printout(L"The plug-in has returned an invalid memory block.\n");
 		LocalUnlock(HBInfo);
 		LocalUnlock(HBm);
@@ -53,7 +54,7 @@ void SaveDibData(LPCWSTR lpBmpFn, HLOCAL HBInfo, HLOCAL HBm)
 		return;
 	}
 
-	if ( (bmh_bytes = *(size_t *)lpbmh) < sizeof(BITMAPINFOHEADER) ){ /* OS/2 format */
+	if ( (bmh_bytes = *(DWORD *)lpbmh) < sizeof(BITMAPINFOHEADER) ){ /* OS/2 format */
 		LPBITMAPCOREHEADER lpbmch = (LPBITMAPCOREHEADER)lpbmh;
 		if ( lpbmch->bcBitCount <= 8 ){
 			bmh_bytes += sizeof(RGBTRIPLE) << lpbmch->bcBitCount;
diff --git a/run_sub.cpp b/run_sub.cpp
index db7ba86..b83a12e 100644
--- a/run_sub.cpp
+++ b/run_sub.cpp
@@ -217,7 +217,7 @@ void USEFASTCALL printout(const WCHAR *str)
 
 void printoutf(const WCHAR *message, ...)
 {
-	WCHAR buf[0x800];
+	WCHAR buf[0x500];
 	va_list argptr;
 
 	va_start(argptr, message);
@@ -227,7 +227,7 @@ void printoutf(const WCHAR *message, ...)
 
 void printoutfColor(DWORD color, const WCHAR *message, ...)
 {
-	WCHAR buf[0x800];
+	WCHAR buf[0x500];
 	va_list argptr;
 
 	SetColor(color);
@@ -282,8 +282,17 @@ const WCHAR *GetTimeStrings(WCHAR *dest, susie_time_t timestamp)
 	return dest;
 }
 
-#define PrintAPIload(name) printout( (name == NULL) ? L" x" : L" A");printout( (name##W == NULL) ? L" x " UNICODESTR(#name) L"\r\n" : L" W " UNICODESTR(#name) L"\r\n");
-#define PrintAPIload1(name) printout( (name == NULL) ? L" x   " UNICODESTR(#name) L"\r\n" : L" O   " UNICODESTR(#name) L"\r\n");
+typedef void (__stdcall * SUSIEAPI)(void);
+void PrintAPIloadMain(SUSIEAPI funcA, SUSIEAPI funcW, const WCHAR *funcname)
+{
+	printoutf(L" %c %c %s\t\n",
+		(funcA == NULL) ? 'x' : 'A',
+		(funcW == NULL) ? 'x' : 'W',
+		funcname);
+}
+
+#define PrintAPIload(name) PrintAPIloadMain((SUSIEAPI)name, (SUSIEAPI)name##W, UNICODESTR(#name))
+#define PrintAPIload1(name) printoutf(L" %c   " UNICODESTR(#name) L"\r\n", (name == NULL) ? 'x' : 'O');
 
 void ShowAPIlist(void)
 {
@@ -324,87 +333,6 @@ HANDLE OpenFileHeader(char *header)
 
 const WCHAR PixSeqence[] = L"\x1b[38;2;%d;%d;%dm\x1b[48;2;%d;%d;%dm\u2584";
 
-/* DIBのヘッダからパレットを作成する */
-HPALETTE DIBtoPalette(HTBMP *hTbmp, int maxY)
-{
-	struct {
-		WORD palVersion;
-		WORD palNumEntries;
-		PALETTEENTRY palPalEntry[256];
-	} lPal;
-	PALETTEENTRY *ppal;
-	RGBQUAD *rgb;
-	int r, g, b;
-	DWORD ClrUsed;
-	BYTE *src, *dst;
-	BITMAPINFOHEADER *dib;
-
-	dib = hTbmp->DIB;
-	ClrUsed = dib->biClrUsed ? dib->biClrUsed : (DWORD)(1 << dib->biBitCount);
-	lPal.palNumEntries = (WORD)ClrUsed;
-	lPal.palVersion = 0x300;
-	ppal = lPal.palPalEntry;
-	if ( ClrUsed > 256 ){	//フルカラー画像は全体に散らばったパレットを作成
-		HDC hDC;
-		int VideoBits;
-
-		hDC = GetDC(NULL);
-		VideoBits = GetDeviceCaps(hDC, BITSPIXEL);
-		ReleaseDC(NULL, hDC);
-		if ( VideoBits > 8 ) return NULL; // 画面が256超なのでそのまま表示可能
-
-		rgb = hTbmp->nb.rgb2;
-		lPal.palNumEntries = 6 * 6 * 6;
-		for( b = 0 ; b <= 255 ; b += 51 ){
-			for(g = 0 ; g <= 255 ; g += 51){
-				for(r = 0 ; r <= 255 ; r += 51, ppal++){
-					rgb->rgbRed = ppal->peRed     = (BYTE)r;
-					rgb->rgbGreen = ppal->peGreen = (BYTE)g;
-					rgb->rgbBlue = ppal->peBlue   = (BYTE)b;
-					rgb->rgbReserved = ppal->peFlags = 0;
-					rgb++;
-				}
-			}
-		}
-
-		if ( dib->biBitCount == 24 ){
-			int x, y;
-
-			src = dst = hTbmp->bits;
-			dib->biSizeImage = hTbmp->size.cx * maxY;
-			for ( y = 0; y < maxY ; y++ ){
-				for ( x = 0; x < dib->biWidth ; x++ ){
-					r = ((*(src++) + 25) / 51);	// red
-					g = ((*(src++) + 25) / 51);	// green
-												// blue
-					*dst++ = (BYTE)(r * 36 + g * 6 + ((*(src++) +25) / 51));
-				}
-				src += (4 - ALIGNMENT_BITS(src)) & 3;
-				dst += (4 - ALIGNMENT_BITS(dst)) & 3;
-			}
-			dib->biBitCount = 8;
-			dib->biCompression = BI_RGB;
-			dib->biClrUsed = 6*6*6;
-			dib->biClrImportant = 0;
-			hTbmp->nb.dib2 = *dib;
-			hTbmp->DIB = &hTbmp->nb.dib2;
-		}
-	}else{
-		DWORD ci;
-
-		rgb = (LPRGBQUAD)((BYTE *)hTbmp->DIB + hTbmp->PaletteOffset);
-		if ( IsBadReadPtr(rgb, ClrUsed * sizeof(RGBQUAD)) ) return NULL;
-
-		for ( ci = 0; ci < ClrUsed; ci++, rgb++, ppal++ ){
-			ppal->peRed = rgb->rgbRed;
-			ppal->peGreen = rgb->rgbGreen;
-			ppal->peBlue = rgb->rgbBlue;
-			ppal->peFlags = 0;
-		}
-	}
-	return CreatePalette((LOGPALETTE *)&lPal);
-}
-
 BOOL InitBMP(HTBMP *hTbmp)
 {
 	int palette;
@@ -414,7 +342,7 @@ BOOL InitBMP(HTBMP *hTbmp)
 	if ( (hTbmp->DIB = (BITMAPINFOHEADER *)LocalLock(hTbmp->info)) == NULL ) goto error;
 	if ( (hTbmp->bits = (BYTE *)LocalLock(hTbmp->bm)) == NULL ) goto error;
 
-	hTbmp->hPalette = NULL;
+//	hTbmp->hPalette = NULL;
 
 	offset = hTbmp->DIB->biSize;
 	color = hTbmp->DIB->biBitCount;
@@ -422,7 +350,7 @@ BOOL InitBMP(HTBMP *hTbmp)
 	if ( (offset < (sizeof(BITMAPINFOHEADER) + 12) ) && (hTbmp->DIB->biCompression == BI_BITFIELDS) ){
 		offset += 12;	// 16/32bit のときはビット割り当てがある
 	}
-	hTbmp->PaletteOffset = offset;
+//	hTbmp->PaletteOffset = offset;
 #pragma warning(suppress: 6297) // color は 8以下で、DWORD を越えることがない
 	offset += palette ? palette * (DWORD)sizeof(RGBQUAD) :
 			((color <= 8) ? (DWORD)(1 << color) * (DWORD)sizeof(RGBQUAD) : 0);
@@ -438,11 +366,12 @@ BOOL InitBMP(HTBMP *hTbmp)
 	if ( hTbmp->size.cy < 0 ) hTbmp->size.cy = -hTbmp->size.cy; // トップダウン
 	if ( palette && (color <= 8) ) hTbmp->DIB->biClrUsed = 1 << color;
 
-	hTbmp->hPalette = DIBtoPalette(hTbmp, hTbmp->size.cy);
+	// ShowImageToConsole では hPalette を使わないので省略
+//	hTbmp->hPalette = DIBtoPalette(hTbmp, hTbmp->size.cy);
 	return TRUE;
 error:
 	hTbmp->DIB = NULL;
-	hTbmp->hPalette = NULL;
+//	hTbmp->hPalette = NULL;
 	return FALSE;
 }
 
@@ -513,11 +442,9 @@ BOOL ShowImageToConsole(HLOCAL HBInfo, HLOCAL HBm)
 
 	hDestBMP = CreateDIBSection(NULL, &bmpinfo, DIB_RGB_COLORS, &lpBits, NULL, 0);
 
-	// 元画像を複写
 	hOldDstBMP = SelectObject(hDstDC, hDestBMP);
 	SetStretchBltMode(hDstDC, HALFTONE);
 
-	// 追加画像を複写
 	StretchDIBits(hDstDC,
 			0, 0, bmpinfo.bmiHeader.biWidth, bmpinfo.bmiHeader.biHeight,
 			0, 0, hTbmp.size.cx, hTbmp.size.cy,
diff --git a/run_test.cpp b/run_test.cpp
index 4f24f51..f5d0c1b 100644
--- a/run_test.cpp
+++ b/run_test.cpp
@@ -75,7 +75,6 @@ void PluginResult(int result)
 void LoadSourceImage(void)
 {
 	HANDLE hFile;
-	DWORD sizeL, sizeH, size;
 
 	if ( testmem == testmem_zerosize ){
 		SourceSize = 0;
@@ -97,16 +96,20 @@ void LoadSourceImage(void)
 			FILE_SHARE_WRITE | FILE_SHARE_READ, NULL,
 			OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL);
 	if ( hFile != INVALID_HANDLE_VALUE ){
-		SourceSize = sizeL = GetFileSize(hFile, &sizeH);
-		SourceAllocSize = sizeL + 256;
+		LARGE_INTEGER filesize;
+		DWORD size;
+
+		GetFileSizeEx(hFile, &filesize);
+		SourceSize = filesize.u.LowPart;
+		SourceAllocSize = filesize.u.LowPart + 256;
 		if ( testmem < 0 ){
-			testmem = (sizeH == 0) && (sizeL <= MAX_TEST_ON_MEMORY);
+			testmem = filesize.QuadPart <= MAX_TEST_ON_MEMORY;
 		}
 		if ( testmem ){
 			SourceImage = (char *)malloc(SourceAllocSize);
 			CompareSourceImage = (char *)malloc(SourceAllocSize);
 			memset(SourceImage, WRITECHECK_BYTE, SourceAllocSize);
-			ReadFile(hFile, SourceImage, sizeL, &size, NULL);
+			ReadFile(hFile, SourceImage, filesize.u.LowPart, &size, NULL);
 			memcpy(CompareSourceImage, SourceImage, SourceAllocSize);
 		}else{
 			printout(L"*ソースファイルが大きいためチェックできない\r\n");
@@ -587,7 +590,15 @@ void TestGetPluginInfo(void)
 			#define INFOBUFCHECKLEN 500
 			char bufA[INFOBUFLEN];
 			WCHAR bufW[INFOBUFLEN], cbuf[32], *memo;
-			int result, result_checklen;
+			int result, result_checklen, result_susielen;
+
+			if ( infono >= 2 ){
+				result_susielen = 255;
+			}else if ( infono == 1 ){
+				result_susielen = 128;
+			}else{
+				result_susielen = 8;
+			}
 
 			if ( unicode == FALSE ){
 				if ( infono >= 1 ){
@@ -605,21 +616,12 @@ void TestGetPluginInfo(void)
 
 				memset(bufA, WRITECHECK_BYTE, sizeof(bufA));
 				result = GetPluginInfo(infono, bufA, INFOBUFCHECKLEN);
-
 				if ( result == 0 ){
 					TestGetPluginInfo_noinfo(infono);
 					break;
 				}
-				if ( result > INFOBUFCHECKLEN ){
-					ShowComment(L" ● infono=%d: 戻り値(%d)が指定最大値(%d)超\r\n", infono, result, INFOBUFCHECKLEN);
-					result = INFOBUFCHECKLEN - 1;
-				}
 				bufA[INFOBUFLEN - 1] = '\0';
 				result_checklen = strlen(bufA);
-				if ( result_checklen > result ){
-					ShowComment(L" ● infono=%d: buf の末尾が \\0 でない\r\n", infono);
-					bufA[result] = '\0';
-				}
 				AnsiToUnicode(bufA, bufW, INFOBUFCHECKLEN);
 			}else{
 				if ( infono >= 1 ){
@@ -642,15 +644,19 @@ void TestGetPluginInfo(void)
 					TestGetPluginInfo_noinfo(infono);
 					break;
 				}
-				if ( result > INFOBUFCHECKLEN ){
-					ShowComment(L" ● infono=%d: 戻り値(%d)が指定最大値(%d)超\r\n", infono, result, INFOBUFCHECKLEN);
-					result = INFOBUFCHECKLEN - 1;
-				}
 				bufW[INFOBUFLEN - 1] = '\0';
 				result_checklen = strlenW(bufW);
-				if ( result_checklen > result ){
-					ShowComment(L" ● infono=%d: buf の末尾が \\0 でない\r\n", infono);
-				}
+			}
+
+			if ( result > INFOBUFCHECKLEN ){
+				ShowComment(L" ● infono=%d: 戻り値(%d)が指定最大値(%d)超\r\n", infono, result, INFOBUFCHECKLEN);
+				result = INFOBUFCHECKLEN - 1;
+			}
+			if ( result_checklen > result ){
+				ShowComment(L" ● infono=%d: buf の末尾が \\0 でない\r\n", infono);
+			}
+			if ( result_checklen >= result_susielen ){
+				ShowComment(L" ● infono=%d: Susie(%d)では扱えない長さ\r\n", infono, result_susielen);
 			}
 
 			memo = L"";
@@ -714,7 +720,10 @@ void TestIsSupported(void)
 
 	for (;; unicode = TRUE){
 		if ( unicode == FALSE ){ // ansi
-			if ( IsSupported == NULL ) continue;
+			if ( IsSupported == NULL ){
+				ShowComment(L" ● IsSupported が存在しない\r\n");
+				continue;
+			}
 
 			PrintAPIname("IsSupported(LPCSTR filename, void *dw)");
 			strcpy(bufA, "non-existence");
@@ -1320,7 +1329,7 @@ void TestGetFile(void)
 					}
 				}
 				if ( testmem ){
-					result = GetFile(SourceImage, SourceSize, (LPSTR)&hImage, SUSIE_SOURCE_MEM | SUSIE_DEST_MEM, (FARPROC)SusieProgressCallbackCheck, (LONG_PTR)&sourcenameA);
+					result = GetFile(SourceImage + finfoAptr->position, SourceSize, (LPSTR)&hImage, SUSIE_SOURCE_MEM | SUSIE_DEST_MEM, (FARPROC)SusieProgressCallbackCheck, (LONG_PTR)&sourcenameA);
 					if ( result == SUSIEERROR_NOERROR ){
 						printout(L"Mm");
 						check++;
@@ -1347,7 +1356,7 @@ void TestGetFile(void)
 					result = GetFile(sourcenameA, finfoAptr->position, dest, SUSIE_SOURCE_DISK | SUSIE_DEST_DISK, (FARPROC)SusieProgressCallbackCheck, (LONG_PTR)&sourcenameA);
 					if ( result == SUSIEERROR_NOERROR ){
 						HANDLE hFile;
-						DWORD sizeL, sizeH;
+						LARGE_INTEGER filesize;
 
 						printout(L"Dd");
 						check++;
@@ -1357,10 +1366,10 @@ void TestGetFile(void)
 						if ( hFile == INVALID_HANDLE_VALUE ){
 							ShowComment(L" ● #%d(%hs, file->file) 取得不可\r\n", count, destfile);
 						}else{
-							sizeL = GetFileSize(hFile, &sizeH);
+							GetFileSizeEx(hFile, &filesize);
 							CloseHandle(hFile);
-							if ( sizeL != finfoAptr->filesize ){
-								ShowComment(L" ● #%d(%hs, file->file) ファイルサイズが filesize と不一致(%d != %d)\r\n", count, textA, sizeL, finfoAptr->filesize);
+							if ( filesize.QuadPart != finfoAptr->filesize ){
+								ShowComment(L" ● #%d(%hs, file->file) ファイルサイズが filesize と不一致(%d != %d)\r\n", count, textA, filesize.u.LowPart, finfoAptr->filesize);
 							}else{
 								check_file_file++;
 							}
@@ -1372,7 +1381,7 @@ void TestGetFile(void)
 					result = GetFile(SourceImage, SourceSize, dest, SUSIE_SOURCE_MEM | SUSIE_DEST_DISK, (FARPROC)SusieProgressCallbackCheck, (LONG_PTR)&sourcenameA);
 					if ( result == SUSIEERROR_NOERROR ){
 						HANDLE hFile;
-						DWORD sizeL, sizeH;
+						LARGE_INTEGER filesize;
 
 						printout(L"Md");
 						check++;
@@ -1382,10 +1391,10 @@ void TestGetFile(void)
 						if ( hFile == INVALID_HANDLE_VALUE ){
 							ShowComment(L" ● #%d(%hs, mem->file) 取得不可\r\n", count, destfile);
 						}else{
-							sizeL = GetFileSize(hFile, &sizeH);
+							GetFileSizeEx(hFile, &filesize);
 							CloseHandle(hFile);
-							if ( sizeL != finfoAptr->filesize ){
-								ShowComment(L" ● #%d(%hs, mem->file) ファイルサイズが filesize と不一致(%d != %d )\r\n", count, textA, sizeL, finfoAptr->filesize);
+							if ( filesize.QuadPart != finfoAptr->filesize ){
+								ShowComment(L" ● #%d(%hs, mem->file) ファイルサイズが filesize と不一致(%d != %d )\r\n", count, textA, filesize.u.LowPart, finfoAptr->filesize);
 							}else{
 								check_file_file++;
 							}
@@ -1452,7 +1461,7 @@ void TestGetFile(void)
 					}
 				}
 				if ( testmem ){
-					result = GetFileW((WCHAR *)SourceImage, SourceSize, (LPWSTR)&hImage, SUSIE_SOURCE_MEM | SUSIE_DEST_MEM, (FARPROC)SusieProgressCallbackCheck, (LONG_PTR)&sourcenameA);
+					result = GetFileW((WCHAR *)(char *)(SourceImage + finfoWptr->position), SourceSize, (LPWSTR)&hImage, SUSIE_SOURCE_MEM | SUSIE_DEST_MEM, (FARPROC)SusieProgressCallbackCheck, (LONG_PTR)&sourcenameA);
 					if ( result == SUSIEERROR_NOERROR ){
 						printout(L"Mm");
 						check++;
@@ -1479,7 +1488,7 @@ void TestGetFile(void)
 					result = GetFileW(sourcename, finfoWptr->position, dest, SUSIE_SOURCE_DISK | SUSIE_DEST_DISK, (FARPROC)SusieProgressCallbackCheck, (LONG_PTR)&sourcenameA);
 					if ( result == SUSIEERROR_NOERROR ){
 						HANDLE hFile;
-						DWORD sizeL, sizeH;
+						LARGE_INTEGER filesize;
 
 						printout(L"Dd");
 						check++;
@@ -1489,10 +1498,10 @@ void TestGetFile(void)
 						if ( hFile == INVALID_HANDLE_VALUE ){
 							ShowComment(L" ● #%d(%s, file->file) 取得不可\r\n", count, destfile);
 						}else{
-							sizeL = GetFileSize(hFile, &sizeH);
+							GetFileSizeEx(hFile, &filesize);
 							CloseHandle(hFile);
-							if ( sizeL != finfoWptr->filesize ){
-								ShowComment(L" ● #%d(%s, file->file) ファイルサイズが filesize と不一致(%d != %d)\r\n", count, textW, sizeL, finfoWptr->filesize);
+							if ( filesize.QuadPart != finfoWptr->filesize ){
+								ShowComment(L" ● #%d(%s, file->file) ファイルサイズが filesize と不一致(%d != %d)\r\n", count, textW, filesize.u.LowPart, finfoWptr->filesize);
 							}else{
 								check_file_file++;
 							}
@@ -1503,7 +1512,7 @@ void TestGetFile(void)
 					result = GetFileW((WCHAR *)SourceImage, SourceSize, dest, SUSIE_SOURCE_MEM | SUSIE_DEST_DISK, (FARPROC)SusieProgressCallbackCheck, (LONG_PTR)&sourcenameA);
 					if ( result == SUSIEERROR_NOERROR ){
 						HANDLE hFile;
-						DWORD sizeL, sizeH;
+						LARGE_INTEGER filesize;
 
 						printout(L"Md");
 						check++;
@@ -1512,11 +1521,11 @@ void TestGetFile(void)
 								OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL);
 						if ( hFile == INVALID_HANDLE_VALUE ){
 							ShowComment(L" ● #%d(%s, mem->file) 取得不可\r\n", count, destfile);
-					}else{
-							sizeL = GetFileSize(hFile, &sizeH);
+						}else{
+							GetFileSizeEx(hFile, &filesize);
 							CloseHandle(hFile);
-							if ( sizeL != finfoWptr->filesize ){
-								ShowComment(L" ● #%d(%s, mem->file) ファイルサイズが filesize と不一致(%d != %d)\r\n", count, textW, sizeL, finfoWptr->filesize);
+							if ( filesize.QuadPart != finfoWptr->filesize ){
+								ShowComment(L" ● #%d(%s, mem->file) ファイルサイズが filesize と不一致(%d != %d)\r\n", count, textW, filesize.u.LowPart, finfoWptr->filesize);
 							}else{
 								check_file_file++;
 							}
diff --git a/runspx.txt b/runspx.txt
index 3e430aa..f328bac 100644
--- a/runspx.txt
+++ b/runspx.txt
@@ -1,5 +1,5 @@
  ------------------------------------------------------------------------------
-	runspi / runsph / runspha	Version 1.1 Copyright (c)2024 TORO
+	runspi / runsph / runspha	Version 1.2 Copyright (c)2024 TORO
  ------------------------------------------------------------------------------
 
 	Susie Plug-in を使って画像の取得、書庫展開をしたり、Susie Plug-inの
@@ -130,6 +130,7 @@
 	また、拡張子は .sph としています。詳細は次の場所で公開しています。
 
 	http://toro.d.dooo.jp/dlsphapi.html
+	https://toroidj.github.io/dlsphapi.html
 
 
 //-------------------------------------- DLL 定数
@@ -262,6 +263,9 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
 
 ●履歴
+Version 1.2	2024/03/30
+・GetFileのテストで、ソースがメモリの時の動作がおかしいのを修正
+
 Version 1.1	2024/03/17
 ・書庫の指定ファイル展開の説明の誤記修正と、展開が終わらないことがあるのを修正