{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Блоги: заметки с тегом windows",
    "_rss_description": "Автоматически собираемая лента заметок, написанных в блогах на Эгее",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": false,
    "_itunes_explicit": "no",
    "home_page_url": "https:\/\/blogengine.me\/blogs\/tags\/windows\/",
    "feed_url": "https:\/\/blogengine.me\/blogs\/tags\/windows\/json\/",
    "icon": false,
    "authors": [
        {
            "name": "Илья Бирман",
            "url": "https:\/\/blogengine.me\/blogs\/",
            "avatar": false
        }
    ],
    "items": [
        {
            "id": "119208",
            "url": "https:\/\/bolknote.ru\/all\/114\/",
            "title": "WinAPI и PHP",
            "content_html": "<p>Так случилось, что в <a href=\"http:\/\/www.php.net\">PHP<\/a> существует три модуля расширения — два для PHP4 и один для PHP5, позволяющих обращаться к Windows API. Способы их вызова различны, плюс ко всему, положение усугубляется тем, что модули расширения имеют одинаковые имена, документация есть только по первому из них, тогда как в комплект PHP включается второй.<\/p>\n<p>Ниже — результат моей потребности выяснить как же это всё работает. Прежде всего стоит заметить, что w32api не работает с mod_php, если старая версия вызывает ошибку при попытке повторного вызова в то же child, то новая вызывает ошибку сразу. В режиме CGI и с PHP5 я таких экспериментов не проводил.<\/p>\n<p>Итак, ниже — реализация функции link (hard link) для Windows NT. Под CLI пример работает как с PHP5, так и с PHP4. Конечно, для того, чтобы пример заработал, нужна файловая система, поддерживающая hard links. Под моей NTFS5 (Windows XP) ссылки ставятся.<\/p>\n<pre class=\"e2-text-code\"><code class=\"php\">\/\/ Written by Evgeny Stepanischev (aka BOLK)\r\nif (PHP_OS == &#039;WINNT&#039;) {\r\n    \/\/ Модуль расширения FFI для PHP5\r\n    if (extension_loaded(&#039;ffi&#039;) || intval(PHP_VERSION) &gt;= 5 &amp;&amp; @dl(&#039;php_ffi.dll&#039;)) {\r\n        function link($target, $link) {\r\n            $api = &amp; new ffi(&quot;[lib=&#039;kernel32.dll&#039;] int &quot; . &quot;CreateHardLinkA( char *link, char *target, long *attr);&quot;);\r\n            return (bool)$api-&gt;CreateHardLinkA($link, $target, NULL);\r\n        }\r\n    } else\r\n    \/\/ Модуль расширения w32API для PHP4\r\n    if (extension_loaded(&#039;w32api&#039;) || @dl(&#039;php_w32api.dll&#039;)) {\r\n        \/\/ Старая версия модуля\r\n        if (function_exists(&#039;w32api_register_function&#039;)) {\r\n            if (!function_exists(&#039;CreateHardLinkA&#039;)) {\r\n                @w32api_register_function(&#039;kernel32.dll&#039;, &#039;CreateHardLinkA&#039;, &#039;bool&#039;);\r\n            }\r\n            if (function_exists(&#039;CreateHardLinkA&#039;)) {\r\n                function link($target, $link) {\r\n                    return CreateHardLinkA($link, $target, NULL);\r\n                }\r\n            }\r\n        } else {\r\n            \/\/ Новая (примерно с версии PHP 4.3.0)\r\n            function link($target, $link) {\r\n                $api = &amp; new win32;\r\n                $api-&gt;registerfunction(&quot;bool CreateHardLinkA&quot; . &quot;(string &amp;link, string &amp;target) From kernel32.dll&quot;);\r\n                return $api-&gt;CreateHardLinkA($link, $target);\r\n            }\r\n        }\r\n    }\r\n}<\/code><\/pre>",
            "date_published": "2004-08-24T21:00:00+05:00",
            "date_modified": "2023-05-08T21:35:13+05:00",
            "tags": [
                "php",
                "prog",
                "windows",
                "программирование"
            ],
            "author": {
                "name": "Евгений Степанищев",
                "url": "https:\/\/bolknote.ru\/",
                "avatar": "https:\/\/bolknote.ru\/pictures\/userpic\/userpic@2x.jpg?1760600028"
            },
            "_date_published_rfc2822": "Tue, 24 Aug 2004 21:00:00 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "119208",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        }
    ],
    "_e2_version": 4079,
    "_e2_ua_string": "Aegea 11.0 (v4079e)"
}