This directory contains a sample project for using Capstone from a Windows 
driver. Open cs_driver.sln with Visual Studio 2017 or newer and see cs_driver.c
for details.

For prerequisites to compile Capstone for drivers, see COMPILE_MSVC.TXT.
