Что нового

Проверка работы кода в x64 системах

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Если у кого-нибудь есть возможность проверить следующий код в Windows 7x64 и в Windows 8.1x64, то проверьте, пожалуйста, что вернет функция.
Код:
Opt('MustDeclareVars', 1)

ConsoleWrite(_MyTestFunc() & @LF)

Func _MyTestFunc()
	Local $v_Str = '0x6D61646D61736C6573D9EBDC5E3BF8C3916F6C342FCBDA5C3CF1901E284D950253339124A4C03F8C225C459E265F27FA4D89C05531C057565383EC088B4C241C8B7C2420C70100000000C74104000000008844' & _
			'010883C0013D0001000075F28D910001000031DB8954240489C831D2891C2489CEEB32C704240100000031ED0FB648080FB61C2F8D2C198D5415000FB6D20FB66C160889EB88580883C001884C16083B442404' & _
			'74128B0C24394C24247EC58B2C2483042401EBC583C4085B5E5F5DC2100089DB5557565383EC088B5424248B44241C8B6C242085D28B188B48047E5B31D2895C2404892C248B5C240483C30181E3FF00000089' & _
			'5C24040FB67418088B6C24048D0C0E0FB6C90FB67C080889FB885C280889F38D343781E6FF000000885C08080FB67430088B3C2489F3301C1783C2013B54242475B089EB891889480483C4085B5E5F5DC21000', _
			$a_Res, $p_Buffer, $t_Buffer, $t_Res, $a_Control[11][2] = [[10],[3148972506],[3651784029],[1573982460],[3894650271],[2509431867],[1824359067],[2543896107],[2083769154],[3978250416],[2895760431]]

	Do
		$a_Res = DllCall('kernel32.dll', 'ptr', 'VirtualAlloc', 'ptr', 0, 'ulong_ptr', 604, 'dword', 0x00001000, 'dword', 0x00000040);$MEM_COMMIT = 0x00001000, $PAGE_EXECUTE_READWRITE = 0x00000040
		If (@error) Or (Not $a_Res[0]) Then ExitLoop
		$p_Buffer = $a_Res[0]
		$t_Buffer = DllStructCreate('byte[604]', $p_Buffer)
		If @error Then ExitLoop
		DllStructSetData($t_Buffer, 1, Binary($v_Str))
		If @error Then ExitLoop
		$v_Str = 0
		$a_Res = DllCall('user32.dll', 'lresult', 'CallWindowProc', 'ptr', $p_Buffer + 49, 'hwnd', $p_Buffer + 332, 'uint', $p_Buffer, 'wparam', 9, 'lparam', 0)
		If (@error) Or (Not $a_Res[0]) Then ExitLoop
		$a_Res = DllCall('user32.dll', 'lresult', 'CallWindowProc', 'ptr', $p_Buffer + 196, 'hwnd', $p_Buffer + 332, 'uint', $p_Buffer + 9, 'wparam', 40, 'lparam', 0)
		If (@error) Or (Not $a_Res[0]) Then ExitLoop
		$t_Res = DllStructCreate('dword[10]', $p_Buffer + 9)
		For $i = 1 To $a_Control[0][0]
			$a_Control[$i][1] = DllStructGetData($t_Res, 1, $i)
		Next
	Until 1
	If $p_Buffer Then DllCall('kernel32.dll', 'int', 'VirtualFree', 'ptr', $p_Buffer, 'ulong_ptr', 0, 'dword', 0x00008000);$MEM_RELEASE = 0x00008000
	For $i = 1 To $a_Control[0][0]
		If $a_Control[$i][0] <> $a_Control[$i][1] Then Return False
	Next
	Return True
EndFunc   ;==>_MyTestFunc
 
Автор
madmasles

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
WSWR,
Спасибо.
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
в 32-битном исполнении возвращает True, в 64-битном - программу клинит :smile:. система завершает работу программы.
в подробностях написано
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: 2 - копия.exe
Версия приложения: 0.0.0.0
Отметка времени приложения: 535f68a8
Имя модуля с ошибкой: StackHash_686b
Версия модуля с ошибкой: 0.0.0.0
Отметка времени модуля с ошибкой: 00000000
Код исключения: c0000005
Смещение исключения: 0000000000190044
Версия ОС: 6.1.7601.2.1.0.256.1
Код языка: 1049
Дополнительные сведения 1: 686b
Дополнительные сведения 2: 686b365555913b50f29874a59b82f72e
Дополнительные сведения 3: eb80
Дополнительные сведения 4: eb808c3f07e0a257d7ddd1c2e263cd06
 

Вложения

  • Безымянный.jpg
    Безымянный.jpg
    42.1 КБ · Просмотры: 11
Верх