Boost.Asio uses native_handle_type, which is a wrapper class for the
underlying socket type. In the case of Windows this is SOCKET. However,
you probably need to go via a intermediary variable:
boost::asio::windows::stream_handle::native_handle_type handle(zfd);
boost::asio::windows::stream_handle io(ios, handle);
Disclaimer: I have not compiled it. You may need to include something
from detail to make it work, or it may not work at all ;-)