{"id":4533,"date":"2015-12-21T12:57:32","date_gmt":"2015-12-21T12:57:32","guid":{"rendered":"http:\/\/anthroponaute.fr\/blog-informatique\/?p=4533"},"modified":"2015-12-22T10:19:35","modified_gmt":"2015-12-22T10:19:35","slug":"recuperer-le-nombre-de-coeurs-de-votre-processeur","status":"publish","type":"post","link":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/?p=4533","title":{"rendered":"R\u00e9cup\u00e9rer le nombre de c\u0153urs et d&rsquo;autres informations de votre processeur"},"content":{"rendered":"<p><a href=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/wp-content\/uploads\/2015\/12\/gulftowndie.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-4535\" src=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/wp-content\/uploads\/2015\/12\/gulftowndie.jpg\" alt=\"gulftowndie\" width=\"477\" height=\"253\" srcset=\"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2015\/12\/gulftowndie.jpg 614w, https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2015\/12\/gulftowndie-300x159.jpg 300w\" sizes=\"(max-width: 477px) 100vw, 477px\" \/><\/a><\/p>\n<p><strong>Intro :<\/strong><\/p>\n<p>Il peut \u00eatre utile de conna\u00eetre le nombre de c\u0153ur de votre processeur afin d&rsquo;optimiser vos applications utilisant des processus l\u00e9gers.<\/p>\n<p>On peut obtenir aussi les information des caches associ\u00e9s au CPU.<\/p>\n<p><strong>Pr\u00e9requis :<\/strong><\/p>\n<p>&#8211; Savoir lire du C++<\/p>\n<p><strong>Explications :<\/strong><\/p>\n<p>Voici le fichier d&rsquo;en-t\u00eate CPUInfo.h :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#ifndef CPU_INFO_H\r\n#define CPU_INFO_H\r\n\r\n#include &lt;Windows.h&gt;\r\n#include &lt;iostream&gt;\r\n\r\n#include &quot;Defines.h&quot;\r\n#include &quot;Types.h&quot;\r\n\r\ntypedef bool (WINAPI *LPFN_GLPI)(PSYSTEM_LOGICAL_PROCESSOR_INFORMATION, PDWORD);\r\n\r\nclass CPUInfo\u00a0\u00a0 \u00a0\r\n{\r\npublic:\r\n\u00a0\u00a0 \u00a0CPUInfo();\r\n\u00a0\u00a0 \u00a0virtual ~CPUInfo();\r\n\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0bool Initialize();\r\n\r\n\u00a0\u00a0 \u00a0uint16 GetLogicalProcessorCount();\r\n\u00a0\u00a0 \u00a0uint16 GetPhysicalProcessorCount();\r\n\r\n\u00a0\u00a0 \u00a0uint16 GetSystemProcessorCount();\r\n\r\n\u00a0\u00a0 \u00a0uint16 GetL1CacheCount();\r\n\u00a0\u00a0 \u00a0uint16 GetL2CacheCount();\r\n\u00a0\u00a0 \u00a0uint16 GetL3CacheCount();\r\n\r\nprivate:\r\n\u00a0\u00a0 \u00a0void ParseSystemProcessorCount();\r\n\u00a0\u00a0 \u00a0bool ParseProcessorData();\r\n\u00a0\u00a0 \u00a0uint32 CountBits(uint64 bitMask);\r\n\r\nprivate:\r\n\u00a0\u00a0 \u00a0uint16 m_iPhysicalProcessorCount;\r\n\u00a0\u00a0 \u00a0uint16 m_iLogicalProcessorCount;\r\n\u00a0\u00a0 \u00a0uint16 m_iProcessorCoreCount;\r\n\r\n\u00a0\u00a0 \u00a0uint16 m_iProcessorL1CacheCount;\r\n\u00a0\u00a0 \u00a0uint16 m_iProcessorL2CacheCount;\r\n\u00a0\u00a0 \u00a0uint16 m_iProcessorL3CacheCount;\r\n\r\n\u00a0\u00a0 \u00a0size_t m_iProcessorL1CacheSize;\r\n\u00a0\u00a0 \u00a0size_t m_iProcessorL2CacheSize;\r\n\u00a0\u00a0 \u00a0size_t m_iProcessorL3CacheSize;\r\n};\r\n\r\n#endif\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Voici le fichier source CPUInfo.cpp :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include &quot;CPUInfo.h&quot;\r\n\r\nCPUInfo::CPUInfo() :\r\nm_iProcessorCoreCount(0),\r\nm_iPhysicalProcessorCount(0),\r\nm_iLogicalProcessorCount(0),\r\nm_iProcessorL1CacheCount(0),\r\nm_iProcessorL2CacheCount(0),\r\nm_iProcessorL3CacheCount(0),\r\nm_iProcessorL1CacheSize(0),\r\nm_iProcessorL2CacheSize(0),\r\nm_iProcessorL3CacheSize(0)\r\n{\r\n}\r\n\r\nCPUInfo::~CPUInfo()\r\n{\r\n}\r\n\r\nbool CPUInfo::Initialize()\r\n{\r\n\u00a0\u00a0 \u00a0if (!ParseProcessorData())\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return false;\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0ParseSystemProcessorCount();\r\n\r\n\u00a0\u00a0 \u00a0return true;\r\n}\r\n\r\nbool CPUInfo::ParseProcessorData()\r\n{\r\n\u00a0\u00a0 \u00a0m_iLogicalProcessorCount = 0;\r\n\u00a0\u00a0 \u00a0m_iPhysicalProcessorCount = 0;\r\n\r\n\u00a0\u00a0\u00a0 LPFN_GLPI Glpi;\r\n\r\n\u00a0\u00a0\u00a0 Glpi = (LPFN_GLPI) GetProcAddress(GetModuleHandle(TEXT(&quot;kernel32&quot;)),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &quot;GetLogicalProcessorInformation&quot;);\r\n\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0if (Glpi == nullptr)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/* La fonction qui permet d'obtenir les informations\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 du CPU n'est pas support\u00e9e *\/\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return false;\r\n\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0\u00a0 bool bDone = false;\r\n\r\n\u00a0\u00a0\u00a0 PSYSTEM_LOGICAL_PROCESSOR_INFORMATION pBuffer = nullptr;\r\n\u00a0\u00a0 \u00a0DWORD iReturnLength = 0;\r\n\r\n\u00a0\u00a0\u00a0 while (!bDone)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 bool bSucess = Glpi(pBuffer, &amp;iReturnLength);\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if (!bSucess)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if (pBuffer)\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 free(pBuffer);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 pBuffer = (PSYSTEM_LOGICAL_PROCESSOR_INFORMATION) malloc(iReturnLength);\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if (pBuffer == nullptr)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Echec de l'allocation\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return false;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 else\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Erreur inconnu\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return false;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 else\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0bDone = true;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0\u00a0 DWORD iByteOffset = 0;\r\n\u00a0\u00a0\u00a0 PSYSTEM_LOGICAL_PROCESSOR_INFORMATION ptr = pBuffer;\r\n\u00a0\u00a0 \u00a0PCACHE_DESCRIPTOR pCache = nullptr;\r\n\r\n\u00a0\u00a0\u00a0 while (iByteOffset + sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION) &lt;= iReturnLength)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0switch (ptr-&gt;Relationship)\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0case RelationProcessorCore:\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ Nombre de processeurs physiques\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0m_iPhysicalProcessorCount++;\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ Nombre de processeurs logiques (ceux utilisable par le syst\u00e8me)\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0m_iLogicalProcessorCount += CountBits(ptr-&gt;ProcessorMask);\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0break;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0case RelationCache:\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0pCache = &amp;ptr-&gt;Cache;\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (pCache-&gt;Level == 1)\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0m_iProcessorL1CacheCount++;\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0m_iProcessorL1CacheSize = pCache-&gt;Size;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0else if (pCache-&gt;Level == 2)\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0m_iProcessorL2CacheCount++;\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0m_iProcessorL2CacheSize = pCache-&gt;Size;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0else if (pCache-&gt;Level == 3)\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0m_iProcessorL3CacheCount++;\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0m_iProcessorL3CacheSize = pCache-&gt;Size;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0break;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 iByteOffset += sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ptr++;\r\n\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0\u00a0 free (pBuffer);\r\n\r\n\u00a0\u00a0 \u00a0return true;\r\n}\r\n\r\nuint32 CPUInfo::CountBits(uint64 bitMask)\r\n{\r\n\u00a0\u00a0 \u00a0DWORD c = 0;\r\n\r\n\u00a0\u00a0 \u00a0while (bitMask != 0)\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0c += (bitMask &amp; 1L);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0bitMask &gt;&gt;= 1;\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0\u00a0 return c;\r\n}\r\n\r\nvoid CPUInfo::ParseSystemProcessorCount()\r\n{\r\n\u00a0\u00a0 \u00a0SYSTEM_INFO si;\r\n\u00a0\u00a0 \u00a0GetSystemInfo(&amp;si);\r\n\r\n\u00a0\u00a0 \u00a0m_iProcessorCoreCount = (uint16) si.dwNumberOfProcessors;\r\n}\r\n\r\nuint16 CPUInfo::GetSystemProcessorCount()\r\n{\r\n\u00a0\u00a0 \u00a0return m_iProcessorCoreCount;\r\n}\r\n\r\nuint16 CPUInfo::GetPhysicalProcessorCount()\r\n{\r\n\u00a0\u00a0 \u00a0return m_iPhysicalProcessorCount;\r\n}\r\n\r\nuint16 CPUInfo::GetLogicalProcessorCount()\r\n{\r\n\u00a0\u00a0 \u00a0return m_iLogicalProcessorCount;\r\n}\r\n\r\nuint16 CPUInfo::GetL1CacheCount()\r\n{\r\n\u00a0\u00a0 \u00a0return m_iProcessorL1CacheCount;\r\n}\r\n\r\nuint16 CPUInfo::GetL2CacheCount()\r\n{\r\n\u00a0\u00a0 \u00a0return m_iProcessorL2CacheCount;\r\n}\r\n\r\nuint16 CPUInfo::GetL3CacheCount()\r\n{\r\n\u00a0\u00a0 \u00a0return m_iProcessorL3CacheCount;\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>R\u00e9sum\u00e9 :<\/strong><\/p>\n<p>Nous avons pr\u00e9senter une m\u00e9thode pour obtenir le nombre de c\u0153ur(s) de votre CPU.<\/p>\n<p><strong>R\u00e9f\u00e9rences :<\/strong><\/p>\n<p>&#8211; http:\/\/blogs.media-tips.com\/bernard.opic\/2007\/09\/03\/compter-le-nombre-de-1-dans-la-forme-binaire-d-un-nombre\/<\/p>\n<p>&#8211; https:\/\/msdn.microsoft.com\/fr-fr\/library\/windows\/desktop\/ms683194%28v=vs.85%29.aspx<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Intro : Il peut \u00eatre utile de conna\u00eetre le nombre de c\u0153ur de votre processeur afin d&rsquo;optimiser vos applications utilisant des processus l\u00e9gers. On peut obtenir aussi les information des caches associ\u00e9s au CPU. Pr\u00e9requis : &#8211; Savoir lire du C++ Explications : Voici le fichier d&rsquo;en-t\u00eate CPUInfo.h : &nbsp; Voici le fichier source CPUInfo.cpp [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[10],"tags":[],"_links":{"self":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/4533"}],"collection":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4533"}],"version-history":[{"count":15,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/4533\/revisions"}],"predecessor-version":[{"id":4557,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/4533\/revisions\/4557"}],"wp:attachment":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4533"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4533"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}