Значит и программа такая должна быть для обычного пользователя?
1. Почему же всё-таки CRC32 файла вне зависимости от расширения не рассчитывается в то время, когда остальные алгоритмы работают исправно?
2. Что означает результат "FFFFFFFF"?
3. Как альтернативными путями рассчитать CRC32 файла в 11-12 Мб?
4. Что можно изменить в файле, если результаты расчёта его CRC32 равны FFFFFFFF?
Предполагаю, что в файле заложена какая-то мина, которая мешает срабатыванию алгоритма CRC32 и зацикливает его. Или я не прав? Это только мои домыслы.
Мы то сами не разработчики ни разу да и в технологии шарим "поверхностно"
if($error === null){}
предпочтительный (иногда он обязательный по стандартам), тк вариант if(!$error){}
— это авто-приведение к bool:!$any
можно использовать комфортно, когда вы (и программа) уверена, что работает либо с объектом, либо с bool function func($arg1, $arg2 = null) {}
$refFunc = new ReflectionFunction('func');
print $refFunc->getNumberOfParameters(); // 2
print $refFunc->getNumberOfRequiredParameters(); // 1
__stdcall
обязывает пользователя функции передать параметры функции на стеке по значению, но освобождает его чистить стек после вызова. Стек от параметров чистит сама вызванная функция.BOOL (__stdcall *)(HANDLE, PBOOL)
на bool (__stdcall *)(void*, bool*)
компилятор думает об одном размере стека, а код функции - о других.__stdcall
свой результат передает через регистр. регистр используется целочисленный или вещественный. Для целочисленного регистра используется правило продвижения типа. Это означает, что функция, записав значение типа BOOL
(размер 4Б) ничего не испортит пользовательскому коду, который прочитает из регистра все 4Б с учетом правила продвижения.bool*
) передается в использование как указатель на четырехбайтовое целое (BOOL*
или PBOOL
). Вызываемая функция ведь имеет сигнатуру BOOL (__stdcall *)(HANDLE, PBOOL)
и со вторым параметром работает как с 4Б целым по указателю.isWow64
и был поломан в результате вызова IsWow64Process
с параметром неподходящей длины. Измени тип isWow64
на BOOL
и все станет нормально, даже хендл "kernel32.dll"
потом сможешь нормально освободить. Есть приложение написанное мной на С#...Приложение запускается с сетевого ресурса..даже странно что работало. сетевое расположение не является доверенным* для среды исполнения .Net
«Инцидент с AS7007». Первый раз интернет сломался в апреле 1997. В ПО одного роутера из автономной системы 7007 была ошибка. В какой-то момент роутер проанонсировал соседям свою внутреннюю таблицу маршрутизации и отправил половину сети в black hole.
«Пакистан против YouTube». В 2008 году бравые ребята из Пакистана решили заблокировать у себя YouTube. Сделали они это настолько хорошо, что без котиков осталось полмира.
«Захват префиксов VISA, MasterCard и Symantec компанией Ростелеком». В 2017 году Ростелеком по ошибке начал анонсировать префиксы VISA, MasterCard и Symantec. В результате финансовый трафик направился через каналы, которые контролирует провайдер. Утечка продолжалась недолго, но финансовым компаниям было неприятно.
«Google против Японии». В августе 2017 Google начал анонсировать в части своих аплинков префиксы крупных японских провайдеров NTT и KDDI. Трафик отправился в Google как транзитный, скорее всего, по ошибке. Так как Google это не провайдер и транзитный трафик не пропускает, то значительная часть Японии осталась без Интернета.
«DV LINK захватил префиксы Google, Apple, Facebook, Microsoft». В том же 2017 российский провайдер DV LINK начал зачем-то анонсировать сети Google, Apple, Facebook, Microsoft и некоторых других крупных игроков.
«eNet из США захватил префиксы AWS Route53 и MyEtherwallet». В 2018 году провайдер из Огайо или кто-то из его клиентов проанонсировал сети Amazon Route53 и криптокошелька MyEtherwallet. Атака прошла успешно: даже несмотря на самоподписанный сертификат, предупреждение о котором появлялось пользователю при заходе на сайт MyEtherwallet, многие кошельки угнали и украли часть криптовалюты.
Подобных инцидентов только за 2017 год было больше 14 000! Сеть все еще децентрализованная, поэтому ломается не все и не у всех. Но инциденты происходят тысячами, и все они связаны с протоколом BGP, на котором работает интернет.