Дамп памяти (снимок состояния оперативной, содержащий отладочную информацию) — то, что часто оказывается наиболее полезными при возникновении синего экрана смерти (BSoD) для диагностики причин возникновения ошибок и их исправления. Дамп памяти сохраняется в файл C:\Windows\MEMORY.DMP, а мини дампы (малый дамп памяти) — в папку C:\Windows\Minidump (подробнее об этом далее в статье).
Автоматическое создание и сохранение дампов памяти не всегда включено в Windows 10, и в инструкциях на тему исправления тех или иных ошибок BSoD мне время от времени приходится описывать и путь включения автоматического сохранения дампов памяти в системе для последующего просмотра в BlueScreenView и аналогах — потому и было решено написать отдельное руководство именно о том, как включить автоматическое создание дампа памяти при ошибках системы, чтобы в дальнейшем ссылаться на него.
Настройка создания дампов памяти при ошибках Windows 10
Для того, чтобы включить автоматическое сохранение файла дампа памяти системных ошибок достаточно выполнить следующие простые шаги.
- Зайдите в панель управления (для этого в Windows 10 вы можете начать набирать «Панель управления» в поиске на панели задач), если в панели управления в поле «Просмотр» включено «Категории», установите «Значки» и откройте пункт «Система».
- В меню слева выберите пункт «Дополнительные параметры системы».
- На вкладке «Дополнительно» в разделе «Загрузка и восстановление» нажмите кнопку «Параметры».
- Параметры создания и сохранения дампов памяти находятся в разделе «Отказ системы». По умолчанию включены опции записи в системный журнал, автоматической перезагрузки и замены существующего дампа памяти, создается «Автоматический дамп памяти», хранящийся в %SystemRoot%\MEMORY.DMP (т.е. файл MEMORY.DMP внутри системной папки Windows). Параметры для включения автоматического создания дампов памяти, используемые по умолчанию вы также можете увидеть на скриншоте ниже.
Опция «Автоматический дамп памяти» сохраняет снимок памяти ядра Windows 10 с необходимой отладочной информацией, а также память, выделенную для устройств, драйверов и ПО, работающего на уровне ядра. Также, при выборе автоматического дампа памяти, в папке C:\Windows\Minidump сохраняются малые дампы памяти. В большинстве случаев этот параметр оптимален.
Помимо «Автоматический дамп памяти» в параметрах сохранения отладочной информации есть и другие варианты:
- Полный дамп памяти — содержит полный снимок оперативной памяти Windows. Т.е. размер файла дампа памяти MEMORY.DMP будет равен объему используемой (занятой) оперативной памяти на момент появления ошибки. Обычному пользователю обычно не требуется.
- Дамп памяти ядра — содержит те же данные что и «Автоматический дамп памяти», по сути это одна и та же опция, за исключением того, как Windows устанавливает размер файла подкачки в случае выбора одной из них. В общем случае вариант «Автоматический» подходит лучше (подробнее для интересующихся, на английском — здесь.)
- Малый дамп памяти — создание только мини дампов в C:\Windows\Minidump. При выборе данной опции сохраняются файлы по 256 Кб, содержащие базовую информацию о синем экране смерти, списке загруженных драйверов, процессах. В большинстве случаев при непрофессиональном использовании (например, как в инструкциях на этом сайте по исправлению ошибок BSoD в Windows 10), используется именно малый дамп памяти. Например, при диагностике причины синего экрана смерти в BlueScreenView используются файлы мини дампов. Однако в некоторых случаях может потребоваться и полный (автоматический) дамп памяти — часто службы поддержки ПО при возникновении неполадок (предположительно вызванных этим ПО) могут просить предоставить именно его.
Дополнительная информация
В случае, если вам нужно удалить дамп памяти, вы можете сделать это вручную, удалив файл MEMORY.DMP в системной папке Windows и файлы, содержащиеся в папке Minidump. Также можно использовать утилиту «Очистка диска» Windows (нажать клавиши Win+R, ввести cleanmgr и нажать Enter). В «Очистке диска» нажмите кнопку «Очистить системные файлы», а затем в списке отметьте файла дампа памяти для системных ошибок, чтобы удалить их (при отсутствии таких пунктов можно предположить, что дампы памяти пока не создавались).
Ну и в завершение о том, почему может быть отключено создание дампов памяти (или отключаться само после включения): чаще всего причиной являются программы для очистки компьютера и оптимизации работы системы, а также софт для оптимизации работы SSD, который также может отключать их создание.
Статья обновлена: 07 июля 2022
ID: 3055
Статья неприменима к Windows Vista SP1 и ниже.
После установки продукта «Лаборатории Касперского» могут возникнуть ситуации, при которых операционная система «зависает». Например, при загрузке компьютера или при запуске сторонней программы. Причиной может быть конфликт программы «Лаборатории Касперского» со сторонним программным обеспечением, либо с драйверами комплектующих вашего компьютера.
При возникновении такой проблемы:
- Настройте запись полного дампа памяти в операционной системе.
- Получите полный дамп памяти.
- Отправьте полный дамп памяти в «Лабораторию Касперского».
Как настроить запись полного дампа памяти в Windows 7, 8, 8.1, 10
Как настроить запись полного дампа памяти в Windows 11
Как получить полный дамп памяти
Как отправить дамп в техническую поддержку «Лаборатории Касперского»
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
When you encounter a nightmare as Blue screen issue and try to get rid of it, you need to provide a full memory dump of the system. These files are quite large and indicate the root cause of the bugs and problems. So, in this article, we will discuss two ways to Collect Memory Dump Files in Windows 11 or 10.
To create memory dump when the blue screen of death occurs certain configuration is required. These files have copies of computer memory at the instant of crashing. It helps to find and solve the issues that caused the system to crash. Generally, stopping errors mostly occur due to malfunctioning hardware drivers. Rest causes include hardware issues and Microsoft codes.
Ways to Configure System to Collect Memory Dump Files in Windows 11 and 10
Here is how to Configure System to Collect Memory Dump Files in Windows 11 or 10 –
Through System Properties
Step-1: Click Taskbar search box and type Advanced system settings.
Step-2: Press Enter.
Step-3: Be on the Advanced tab on the System Properties box. Here, click the Settings button that appears in the section namely Startup and Recovery.
Step-4: In the new window, click the drop-down below the option Write debugging information. Depending upon your requirement, choose the preferred option accordingly. Click OK.
Using DumpConfigurator tool
- Click on DumpConfigurator tool link and it will start downloading the utility. Now, go to the Downloads folder on your device and extract the contents of the zip file.
- Double-click on sourceCode folder.
- Again extract the items of sourceCode folder and double-click on the file DumpConfigurator.hta.
- In case you come across Open File Security Warning dialog, click Run to continue.
- On the Windows Memory Dump Configuration Editor, click the button Elevate this HTA (see snapshot). Click Yes on the prompt of UAC.
- Click Auto Config Kernel as shown in the picture below.
- Restart Windows 10 PC for the modifications to become effective.
- Now, get access to the Services and locate Automatic System Restart Services (ASR). Double-click on it and then disable and stop it. This is necessary to prevent dump files from being written.
Types of memory dump files
- Complete Memory dump: It is the largest of all the “memory dumps”. It contains all the data used by the Windows at the time of crashing.
- Kernel Memory dump: It is quite smaller than complete “memory dump”. It does not contains unallocated memory and only consists of memory available in the kernel and HAL as well.
- Small memory dump: This does not provide detailed and contains very little details about the system crash. It is the smallest of all the dump file types and occupies only 256 KB.
The memory dump file is saved at the below-given locations.
Dump file type | Location |
(none) | %SystemRoot%\MEMORY.DMP (inactive, or greyed out) |
Small memory dump file (256kb) | %SystemRoot%\Minidump |
Kernel memory dump file | %SystemRoot%\MEMORY.DMP |
Complete memory dump file | %SystemRoot%\MEMORY.DMP |
Automatic memory dump file | %SystemRoot%\MEMORY.DMP |
Active memory dump file | %SystemRoot%\MEMORY.DMP |
That’s all!
В момент критического сбоя операционная система Windows прерывает работу и показывает синий экран смерти (BSOD). Содержимое оперативной памяти и вся информация о возникшей ошибке записывается в файл подкачки. При следующей загрузке Windows создается аварийный дамп c отладочной информацией на основе сохраненных данных. В системном журнале событий создается запись о критической ошибке.
Внимание! Аварийный дамп не создается, если отказала дисковая подсистема или критическая ошибка возникла на начальной стадии загрузки Windows.
Содержание:
- Типы аварийных дампов памяти Windows
- Как включить создание дампа памяти в Windows?
- Установка WinDBG в Windows
- Настройка ассоциации .dmp файлов с WinDBG
- Настройка сервера отладочных символов в WinDBG
- Анализ аварийного дампа памяти в WinDBG
Типы аварийных дампов памяти Windows
На примере актуальной операционной системы Windows 10 (Windows Server 2016) рассмотрим основные типы дампов памяти, которые может создавать система:
- Мини дамп памяти (Small memory dump) (256 КБ). Этот тип файла включает минимальный объем информации. Он содержит только сообщение об ошибке BSOD, информацию о драйверах, процессах, которые были активны в момент сбоя, а также какой процесс или поток ядра вызвал сбой.
- Дамп памяти ядра (Kernel memory dump). Как правило, небольшой по размеру — одна треть объема физической памяти. Дамп памяти ядра является более подробным, чем мини дамп. Он содержит информацию о драйверах и программах в режиме ядра, включает память, выделенную ядру Windows и аппаратному уровню абстракции (HAL), а также память, выделенную драйверам и другим программам в режиме ядра.
- Полный дамп памяти (Complete memory dump). Самый большой по объему и требует памяти, равной оперативной памяти вашей системы плюс 1MB, необходимый Windows для создания этого файла.
- Автоматический дамп памяти (Automatic memory dump). Соответствует дампу памяти ядра с точки зрения информации. Отличается только тем, сколько места он использует для создания файла дампа. Этот тип файлов не существовал в Windows 7. Он был добавлен в Windows 8.
- Активный дамп памяти (Active memory dump). Этот тип отсеивает элементы, которые не могут определить причину сбоя системы. Это было добавлено в Windows 10 и особенно полезно, если вы используете виртуальную машину, или если ваша система является хостом Hyper-V.
Как включить создание дампа памяти в Windows?
С помощью Win+Pause откройте окно с параметрами системы, выберите «Дополнительные параметры системы» (Advanced system settings). Во вкладке «Дополнительно» (Advanced), раздел «Загрузка и восстановление» (Startup and Recovery) нажмите кнопку «Параметры» (Settings). В открывшемся окне настройте действия при отказе системы. Поставьте галку в чек-боксе «Записать события в системный журнал» (Write an event to the system log), выберите тип дампа, который должен создаваться при сбое системы. Если в чек-боксе «Заменять существующий файл дампа» (Overwrite any existing file) поставить галку, то файл будет перезаписываться при каждом сбое. Лучше эту галку снять, тогда у вас будет больше информации для анализа. Отключите также автоматическую перезагрузку системы (Automatically restart).
В большинстве случаев для анализа причины BSOD вам будет достаточно малого дампа памяти.
Теперь при возникновении BSOD вы сможете проанализировать файл дампа и найти причину сбоев. Мини дамп по умолчанию сохраняется в папке %systemroot%\minidump. Для анализа файла дампа рекомендую воспользоваться программой WinDBG (Microsoft Kernel Debugger).
Установка WinDBG в Windows
Утилита WinDBG входит в «Пакет SDK для Windows 10» (Windows 10 SDK). Скачать можно здесь.
Файл называется winsdksetup.exe, размер 1,3 МБ.
WinDBG для Windows7 и более ранних систем включен в состав пакета «Microsoft Windows SDK for Windows 7 and .NET Framework 4». Скачать можно здесь.
Запустите установку и выберите, что именно нужно сделать – установить пакет на этот компьютер или загрузить для установки на другие компьютеры. Установим пакет на локальный компьютер.
Можете установить весь пакет, но для установки только инструмента отладки выберите Debugging Tools for Windows.
После установки ярлыки WinDBG можно найти в стартовом меню.
Настройка ассоциации .dmp файлов с WinDBG
Для того, чтобы открывать файлы дампов простым кликом, сопоставьте расширение .dmp с утилитой WinDBG.
- Откройте командную строку от имени администратора и выполните команды для 64-разрядной системы:
cd C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
windbg.exe –IA
для 32-разрядной системы:
C:\Program Files (x86)\Windows Kits\10\Debuggers\x86
windbg.exe –IA - В результате типы файлов: .DMP, .HDMP, .MDMP, .KDMP, .WEW – будут сопоставлены с WinDBG.
Настройка сервера отладочных символов в WinDBG
Отладочные символы (debug-символы или symbol files) – это блоки данных, генерируемые в процессе компиляции программы совместно с исполняемым файлом. В таких блоках данных содержится информация о именах переменных, вызываемых функциях, библиотеках и т.д. Эти данные не нужны при выполнении программы, но полезные при ее отладке. Компоненты Microsoft компилируются с символами, распространяемыми через Microsoft Symbol Server.
Настройте WinDBG на использование Microsoft Symbol Server:
- Откройте WinDBG;
- Перейдите в меню File –> Symbol File Path;
- Пропишите строку, содержащую URL для загрузки символов отладки с сайта Microsoft и папку для сохранения кэша:
SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/symbols
В примере кэш загружается в папку E:\Sym_WinDBG, можете указать любую. - Не забывайте сохранить изменения в меню File –> Save WorkSpace;
WinDBG произведет поиск символов в локальной папке и, если не обнаружит в ней необходимых символов, то самостоятельно загрузит символы с указанного сайта. Если вы хотите добавить собственную папку с символами, то можно сделать это так:
SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/symbols;c:\Symbols
Если подключение к интернету отсутствует, то загрузите предварительно пакет символов с ресурса Windows Symbol Packages.
Анализ аварийного дампа памяти в WinDBG
Отладчик WinDBG открывает файл дампа и загружает необходимые символы для отладки из локальной папки или из интернета. Во время этого процесса вы не можете использовать WinDBG. Внизу окна (в командной строке отладчика) появляется надпись Debugee not connected.
Команды вводятся в командную строку, расположенную внизу окна.
Самое главное, на что нужно обратить внимание – это код ошибки, который всегда указывается в шестнадцатеричном значении и имеет вид 0xXXXXXXXX (указываются в одном из вариантов — STOP: 0x0000007B, 02.07.2019 0008F, 0x8F). В нашем примере код ошибки 0х139.
Полный справочник ошибок можно посмотреть здесь.
Отладчик предлагает выполнить команду !analyze -v, достаточно навести указатель мыши на ссылку и кликнуть. Для чего нужна эта команда?
- Она выполняет предварительный анализ дампа памяти и предоставляет подробную информацию для начала анализа.
- Эта команда отобразит STOP-код и символическое имя ошибки.
- Она показывает стек вызовов команд, которые привели к аварийному завершению.
- Кроме того, здесь отображаются неисправности IP-адреса, процессов и регистров.
- Команда может предоставить готовые рекомендации по решению проблемы.
Основные моменты, на которые вы должны обратить внимание при анализе после выполнения команды !analyze –v (листинг неполный).
1: kd>
!analyze -v
*****************************************************************************
* *
* Bugcheck Analysis *
* *
*****************************************************************************
Символическое имя STOP-ошибки (BugCheck)
KERNEL_SECURITY_CHECK_FAILURE (139)
Описание ошибки (Компонент ядра повредил критическую структуру данных. Это повреждение потенциально может позволить злоумышленнику получить контроль над этой машиной):
A kernel component has corrupted a critical data structure. The corruption could potentially allow a malicious user to gain control of this machine.
Аргументы ошибки:
Arguments:
Arg1: 0000000000000003, A LIST_ENTRY has been corrupted (i.e. double remove).
Arg2: ffffd0003a20d5d0, Address of the trap frame for the exception that caused the bugcheck
Arg3: ffffd0003a20d528, Address of the exception record for the exception that caused the bugcheck
Arg4: 0000000000000000, Reserved
Debugging Details:
------------------
Счетчик показывает сколько раз система упала с аналогичной ошибкой:
CUSTOMER_CRASH_COUNT: 1
Основная категория текущего сбоя:
DEFAULT_BUCKET_ID: FAIL_FAST_CORRUPT_LIST_ENTRY
Код STOP-ошибки в сокращенном формате:
BUGCHECK_STR: 0x139
Процесс, во время исполнения которого произошел сбой (не обязательно причина ошибки, просто в момент сбоя в памяти выполнялся этот процесс):
PROCESS_NAME: sqlservr.exe
CURRENT_IRQL: 2
Расшифровка кода ошибки: В этом приложении система обнаружила переполнение буфера стека, что может позволить злоумышленнику получить контроль над этим приложением.
ERROR_CODE: (NTSTATUS) 0xc0000409 - The system detected an overrun of a stack-based buffer in this application. This overrun could potentially allow a malicious user to gain control of this application.
EXCEPTION_CODE: (NTSTATUS) 0xc0000409 - The system detected an overrun of a stack-based buffer in this application. This overrun could potentially allow a malicious user to gain control of this application.
Последний вызов в стеке:
LAST_CONTROL_TRANSFER: from fffff8040117d6a9 to fffff8040116b0a0
Стек вызовов в момент сбоя:
STACK_TEXT:
ffffd000`3a20d2a8 fffff804`0117d6a9 : 00000000`00000139 00000000`00000003 ffffd000`3a20d5d0 ffffd000`3a20d528 : nt!KeBugCheckEx
ffffd000`3a20d2b0 fffff804`0117da50 : ffffe000`f3ab9080 ffffe000`fc37e001 ffffd000`3a20d5d0 fffff804`0116e2a2 : nt!KiBugCheckDispatch+0x69
ffffd000`3a20d3f0 fffff804`0117c150 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiFastFailDispatch+0xd0
ffffd000`3a20d5d0 fffff804`01199482 : ffffc000`701ba270 ffffc000`00000001 000000ea`73f68040 fffff804`000006f9 : nt!KiRaiseSecurityCheckFailure+0x3d0
ffffd000`3a20d760 fffff804`014a455d : 00000000`00000001 ffffd000`3a20d941 ffffe000`fcacb000 ffffd000`3a20d951 : nt! ?? ::FNODOBFM::`string'+0x17252
ffffd000`3a20d8c0 fffff804`013a34ac : 00000000`00000004 00000000`00000000 ffffd000`3a20d9d8 ffffe001`0a34c600 : nt!IopSynchronousServiceTail+0x379
ffffd000`3a20d990 fffff804`0117d313 : ffffffff`fffffffe 00000000`00000000 00000000`00000000 000000eb`a0cf1380 : nt!NtWriteFile+0x694
ffffd000`3a20da90 00007ffb`475307da : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiSystemServiceCopyEnd+0x13
000000ee`f25ed2b8 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : 0x00007ffb`475307da
Участок кода, где возникла ошибка:
FOLLOWUP_IP:
nt!KiFastFailDispatch+d0
fffff804`0117da50 c644242000 mov byte ptr [rsp+20h],0
FAULT_INSTR_CODE: 202444c6
SYMBOL_STACK_INDEX: 2
SYMBOL_NAME: nt!KiFastFailDispatch+d0
FOLLOWUP_NAME: MachineOwner
Имя модуля в таблице объектов ядра. Если анализатору удалось обнаружить проблемный драйвер, имя отображается в полях MODULE_NAME и IMAGE_NAME:
MODULE_NAME: nt
IMAGE_NAME: ntkrnlmp.exe
Если кликнете по ссылке модуля (nt), то увидите подробную информацию о пути и других свойствах модуля. Находите указанный файл, и изучаете его свойства.
1: kd>
lmvm nt
Browse full module list
Loaded symbol image file: ntkrnlmp.exe
Mapped memory image file: C:\ProgramData\dbg\sym\ntoskrnl.exe\5A9A2147787000\ntoskrnl.exe
Image path: ntkrnlmp.exe
Image name: ntkrnlmp.exe
InternalName: ntkrnlmp.exe
OriginalFilename: ntkrnlmp.exe
ProductVersion: 6.3.9600.18946
FileVersion: 6.3.9600.18946 (winblue_ltsb_escrow.180302-1800)
В приведенном примере анализ указал на файл ядра ntkrnlmp.exe. Когда анализ дампа памяти указывает на системный драйвер (например, win32k.sys) или файл ядра (как в нашем примере ntkrnlmp.exe), вероятнее всего данный файл не является причиной проблемы. Очень часто оказывается, что проблема кроется в драйвере устройства, настройках BIOS или в неисправности оборудования.
Если вы увидели, что BSOD возник из-за стороннего драйвера, его имя будет указано в значениях MODULE_NAME и IMAGE_NAME.
Например:
Image path: \SystemRoot\system32\drivers\cmudaxp.sys
Image name: cmudaxp.sys
Откройте свойсва файла драйвера и проверьте его версию. В большинстве случаев проблема с драйверами решается их обнвовлением.
On Windows 10, a crash dump file is usually created automatically with the information about the system memory when a critical error happens, which you can then use to analyze and determine the reason for the issue.
Although these files are generated automatically, it may also be necessary to make them manually. For example, when the app is not responding, you have to send details to technical support for analysis and troubleshooting purposes. Or if you are building an application and need to find out why it’s using a lot of system resources, such as processor and memory.
Regardless of the reason, Windows 10 gives you at least two ways to create an app crash dump file using Task Manager and Command Prompt with the ProcDump tool.
This guide will walk you through two ways to create a crash dump file for an application on Windows 10.
How to create crash dump file with Task Manager
To create a crash dump file with Task Manager, use these steps:
- Open Start.
- Search for Task Manager and click the top result to open the app.
- Click the Processes tab.
- Right-click the application or process and select the «Create dump file» option.
- Click the Open file location button.
- Right-click the .dmp file and select the Cut option.
- Navigate to the folder you want to store the file.
- Right-click the folder and select the Paste option.
Once you complete the steps, the dump error file will be created. You can use these instructions if you need to open the file to diagnose the problem.
How to create cash dump file with Command Prompt
Alternatively, you can also use ProcDump, a command-line tool available through the Microsoft Sysinternals website that allows you to monitor a program for processor spikes and generate a crash dump, which you can use to determine the cause of the problem. However, you can also use this tool to create crash dumps with Command Prompt manually.
All the latest news, reviews, and guides for Windows and Xbox diehards.
To create an app crash dump file with command lines, use these steps:
- Open the Microsoft Sysinternals website.
- Click the Download ProcDump option to save the file on your computer.
- Open the zip file containing the ProcDump tool and extract its content.
- Open Start.
- Search for Command Prompt, right-click the top result, and select the Run as administrator option.
- Type the following command to open the ProcDump folder and press Enter: cd C:\PATH\TO\APP\Procdump
In the command, update the path with the folder location with ProcDump files.
- Type the following command to create a (mini) dump file of a running application and press Enter: procdump APP-NAME
In the command, replace APP-NAME with the executable name of the app. This example creates a dump error file for File Explorer: procdump explorer
- (Optional) Type the following command to create a dump file using the process ID and press Enter: procdump PROCESS-ID
In the command, replace PROCESS-ID with the actual ID of the process or application. This example creates a dump error file for File Explorer with the process ID of 6112: procdump 6112
- Quick tip: You can always find the process ID (PID) of an application in the «Details» tab of Task Manager or using the tasklist command.
- Type the following command to create a full dump file for an application and press Enter: procdump -ma APP-OR-PID
In the command, replace APP-OR-PID for the name or process ID of the app. This example creates a full dump file for File Explorer: procdump -ma explorer
- Quick note: A full dump file contains everything available in memory related to the application. In contrast, a mini dump file is only several megabytes in size, and it includes basic information about the application.
- Confirm the location of the .dmp file.
After you complete the steps, the crash dump file will be created (usually) in the folder with the ProcDump files.
We are focusing this guide on the basics of creating a crash dump file, but you can use procdump /? to learn about all the options available with the utility.
More resources
For more helpful articles, coverage, and answers to common questions about Windows 10 and Windows 11, visit the following resources:
- Windows 11 on Windows Central — All you need to know
- Windows 10 on Windows Central — All you need to know
Mauro Huculak has been a Windows How-To Expert contributor for WindowsCentral.com for nearly a decade and has over 15 years of experience writing comprehensive guides. He also has an IT background and has achieved different professional certifications from Microsoft, Cisco, VMware, and CompTIA. He has been recognized as a Microsoft MVP for many years.