<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>windows::basic_stream_handle::lowest_layer_type</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="../../../boost_asio.html" title="Boost.Asio">
<link rel="up" href="../windows__basic_stream_handle.html" title="windows::basic_stream_handle">
<link rel="prev" href="lowest_layer/overload2.html" title="windows::basic_stream_handle::lowest_layer (2 of 2 overloads)">
<link rel="next" href="native.html" title="windows::basic_stream_handle::native">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
<td align="center"><a href="../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="lowest_layer/overload2.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../windows__basic_stream_handle.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../boost_asio.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="native.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_asio.reference.windows__basic_stream_handle.lowest_layer_type"></a><a class="link" href="lowest_layer_type.html" title="windows::basic_stream_handle::lowest_layer_type">windows::basic_stream_handle::lowest_layer_type</a>
</h4></div></div></div>
<p>
          <span class="emphasis"><em>Inherited from windows::basic_handle.</em></span>
        </p>
<p>
          <a class="indexterm" name="id1382881"></a> 
A <a class="link" href="../windows__basic_handle.html" title="windows::basic_handle"><code class="computeroutput"><span class="identifier">windows</span><span class="special">::</span><span class="identifier">basic_handle</span></code></a> is always the lowest
          layer.
        </p>
<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">basic_handle</span><span class="special">&lt;</span> <span class="identifier">StreamHandleService</span> <span class="special">&gt;</span> <span class="identifier">lowest_layer_type</span><span class="special">;</span>
</pre>
<a name="boost_asio.reference.windows__basic_stream_handle.lowest_layer_type.types"></a><h6>
<a name="id1382969"></a>
          <a class="link" href="lowest_layer_type.html#boost_asio.reference.windows__basic_stream_handle.lowest_layer_type.types">Types</a>
        </h6>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
                  <p>
                    Name
                  </p>
                </th>
<th>
                  <p>
                    Description
                  </p>
                </th>
</tr></thead>
<tbody>
<tr>
<td>
                  <p>
                    <a class="link" href="../windows__basic_handle/implementation_type.html" title="windows::basic_handle::implementation_type"><span class="bold"><strong>implementation_type</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    The underlying implementation type of I/O object.
                  </p>
                </td>
</tr>
<tr>
<td>
                  <p>
                    <a class="link" href="../windows__basic_handle/lowest_layer_type.html" title="windows::basic_handle::lowest_layer_type"><span class="bold"><strong>lowest_layer_type</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    A basic_handle is always the lowest layer.
                  </p>
                </td>
</tr>
<tr>
<td>
                  <p>
                    <a class="link" href="../windows__basic_handle/native_type.html" title="windows::basic_handle::native_type"><span class="bold"><strong>native_type</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    The native representation of a handle.
                  </p>
                </td>
</tr>
<tr>
<td>
                  <p>
                    <a class="link" href="../windows__basic_handle/service_type.html" title="windows::basic_handle::service_type"><span class="bold"><strong>service_type</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    The type of the service that will be used to provide I/O operations.
                  </p>
                </td>
</tr>
</tbody>
</table></div>
<a name="boost_asio.reference.windows__basic_stream_handle.lowest_layer_type.member_functions"></a><h6>
<a name="id1383144"></a>
          <a class="link" href="lowest_layer_type.html#boost_asio.reference.windows__basic_stream_handle.lowest_layer_type.member_functions">Member
          Functions</a>
        </h6>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
                  <p>
                    Name
                  </p>
                </th>
<th>
                  <p>
                    Description
                  </p>
                </th>
</tr></thead>
<tbody>
<tr>
<td>
                  <p>
                    <a class="link" href="../windows__basic_handle/assign.html" title="windows::basic_handle::assign"><span class="bold"><strong>assign</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    Assign an existing native handle to the handle.
                  </p>
                </td>
</tr>
<tr>
<td>
                  <p>
                    <a class="link" href="../windows__basic_handle/basic_handle.html" title="windows::basic_handle::basic_handle"><span class="bold"><strong>basic_handle</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    Construct a basic_handle without opening it.
                  </p>
                  <p>
                    Construct a basic_handle on an existing native handle.
                  </p>
                </td>
</tr>
<tr>
<td>
                  <p>
                    <a class="link" href="../windows__basic_handle/cancel.html" title="windows::basic_handle::cancel"><span class="bold"><strong>cancel</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    Cancel all asynchronous operations associated with the handle.
                  </p>
                </td>
</tr>
<tr>
<td>
                  <p>
                    <a class="link" href="../windows__basic_handle/close.html" title="windows::basic_handle::close"><span class="bold"><strong>close</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    Close the handle.
                  </p>
                </td>
</tr>
<tr>
<td>
                  <p>
                    <a class="link" href="../windows__basic_handle/get_io_service.html" title="windows::basic_handle::get_io_service"><span class="bold"><strong>get_io_service</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    Get the io_service associated with the object.
                  </p>
                </td>
</tr>
<tr>
<td>
                  <p>
                    <a class="link" href="../windows__basic_handle/io_service.html" title="windows::basic_handle::io_service"><span class="bold"><strong>io_service</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    (Deprecated: use get_io_service().) Get the io_service associated
                    with the object.
                  </p>
                </td>
</tr>
<tr>
<td>
                  <p>
                    <a class="link" href="../windows__basic_handle/is_open.html" title="windows::basic_handle::is_open"><span class="bold"><strong>is_open</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    Determine whether the handle is open.
                  </p>
                </td>
</tr>
<tr>
<td>
                  <p>
                    <a class="link" href="../windows__basic_handle/lowest_layer.html" title="windows::basic_handle::lowest_layer"><span class="bold"><strong>lowest_layer</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    Get a reference to the lowest layer.
                  </p>
                  <p>
                    Get a const reference to the lowest layer.
                  </p>
                </td>
</tr>
<tr>
<td>
                  <p>
                    <a class="link" href="../windows__basic_handle/native.html" title="windows::basic_handle::native"><span class="bold"><strong>native</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    Get the native handle representation.
                  </p>
                </td>
</tr>
</tbody>
</table></div>
<a name="boost_asio.reference.windows__basic_stream_handle.lowest_layer_type.protected_member_functions"></a><h6>
<a name="id1383474"></a>
          <a class="link" href="lowest_layer_type.html#boost_asio.reference.windows__basic_stream_handle.lowest_layer_type.protected_member_functions">Protected
          Member Functions</a>
        </h6>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
                  <p>
                    Name
                  </p>
                </th>
<th>
                  <p>
                    Description
                  </p>
                </th>
</tr></thead>
<tbody><tr>
<td>
                  <p>
                    <a class="link" href="../windows__basic_handle/_basic_handle.html" title="windows::basic_handle::~basic_handle"><span class="bold"><strong>~basic_handle</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    Protected destructor to prevent deletion through this type.
                  </p>
                </td>
</tr></tbody>
</table></div>
<a name="boost_asio.reference.windows__basic_stream_handle.lowest_layer_type.protected_data_members"></a><h6>
<a name="id1383563"></a>
          <a class="link" href="lowest_layer_type.html#boost_asio.reference.windows__basic_stream_handle.lowest_layer_type.protected_data_members">Protected
          Data Members</a>
        </h6>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
                  <p>
                    Name
                  </p>
                </th>
<th>
                  <p>
                    Description
                  </p>
                </th>
</tr></thead>
<tbody>
<tr>
<td>
                  <p>
                    <a class="link" href="../windows__basic_handle/implementation.html" title="windows::basic_handle::implementation"><span class="bold"><strong>implementation</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    The underlying implementation of the I/O object.
                  </p>
                </td>
</tr>
<tr>
<td>
                  <p>
                    <a class="link" href="../windows__basic_handle/service.html" title="windows::basic_handle::service"><span class="bold"><strong>service</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    The service associated with the I/O object.
                  </p>
                </td>
</tr>
</tbody>
</table></div>
<p>
          The <a class="link" href="../windows__basic_handle.html" title="windows::basic_handle"><code class="computeroutput"><span class="identifier">windows</span><span class="special">::</span><span class="identifier">basic_handle</span></code></a> class template provides
          the ability to wrap a Windows handle.
        </p>
<a name="boost_asio.reference.windows__basic_stream_handle.lowest_layer_type.thread_safety"></a><h6>
<a name="id1383710"></a>
          <a class="link" href="lowest_layer_type.html#boost_asio.reference.windows__basic_stream_handle.lowest_layer_type.thread_safety">Thread
          Safety</a>
        </h6>
<p>
          <span class="bold"><strong>Distinct</strong></span> <span class="bold"><strong>objects:</strong></span>
          Safe.
        </p>
<p>
          <span class="bold"><strong>Shared</strong></span> <span class="bold"><strong>objects:</strong></span>
          Unsafe.
        </p>
<a name="boost_asio.reference.windows__basic_stream_handle.lowest_layer_type.requirements"></a><h6>
<a name="id1383765"></a>
          <a class="link" href="lowest_layer_type.html#boost_asio.reference.windows__basic_stream_handle.lowest_layer_type.requirements">Requirements</a>
        </h6>
<p>
          <span class="bold"><strong>Header: </strong></span><code class="literal">boost/asio/windows/basic_stream_handle.hpp</code>
        </p>
<p>
          <span class="bold"><strong>Convenience header: </strong></span><code class="literal">boost/asio.hpp</code>
        </p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2003 - 2010 Christopher M. Kohlhoff<p>
        Distributed under the Boost Software License, Version 1.0. (See accompanying
        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
      </p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="lowest_layer/overload2.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../windows__basic_stream_handle.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../boost_asio.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="native.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
