<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
<!-- saved from url=(0013)about:internet -->
<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style xmlns="" type="text/css">
    /* This style sets a margin around the entire page */
        html, body {
            margin: 10px;
        }

        p {
            font: normal 16px verdana, sans-serif;
            margin: 0;
            padding-bottom:12px;
        }

        h1 {
            font: bold 25px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        h2 {
            font: bold 19px verdana, sans-serif;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        h3 {
            font: bold 19px verdana, sans-serif !important;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        li {
            font: normal 16px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 18px;
            padding-top: 0;
            padding-bottom: 0;
        }

        .pdparam {
            font: italic 16px verdana, sans-serif;
        }

                .term {
                        font: italic 16px verdana, sans-serif;
                        font-weight: normal;
                }

                .type {
                        font: normal 16px verdana, sans-serif !important;
                }

                .parameter {
                        font-style: italic;
                        }

        a:link, a:visited {
            color: blue;
            text-decoration: none;
            font: normal 16px;
        }

        a:hover {
            background-color: #FFFF99;
            font: normal 16px;
        }

        div.funcsynopsis {
            text-align: left;
            background-color: #e6e6e6;
            font: normal 16px verdana, sans-serif;
                        padding-top: 10px;
                        padding-bottom: 10px;
        }

        div.funcsynopsis table {
            border-collapse: separate;
            font: normal 16px verdana, sans-serif;
        }

        div.funcsynopsis td {
            background-color: #e6e6e6;
            border: 0 solid #000;
            padding: 1px;
            font: normal 16px verdana, sans-serif;
        }

        div.refsect1 {
            font-family: verdana, sans-serif;
            font-size: 16px;
        }

        code.constant {
            font: normal 16px courier new, monospace !important;
        }

                span.errorname {
            font: normal 16px verdana, sans-serif !important;
        }

        code.function {
            font: bold 16px verdana, sans-serif !important;
        }

        b.fsfunc {
            font: bold 16px verdana, sans-serif !important;
        }

        code.varname {
            font: italic 16px verdana, sans-serif;
        }

        code.replaceable {
            font: italic 16px courier new, monospace;
        }

        code.funcdef {
            font: normal 16px verdana, sans-serif !important;
        }

        .citerefentry {
            font: normal 16px verdana, sans-serif !important;
        }

        .parameter {
            font-style: italic;
        }

        code.fsfunc {
            font: normal 16px verdana, sans-serif !important;
        }

        /* PARAMETER: This style controls spacing between the terms in Parameter section */
        dt {
            margin-top: 15px;
        }

        /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
        div.refsect1 table {
            width: 100%;
                        margin-top: 10px;
            background-color: #FFF;
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
                        font: normal 16px verdana, sans-serif;
        }

        div.refsect1 th {
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
            font: bold 16px verdana, sans-serif;
        }

        div.refsect1 td {
            background-color: #FFF;
            padding: 5px;
            vertical-align: text-top;
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
            font: normal 16px verdana, sans-serif;
        }

                  div.refsect1 p{
            font: normal 16px verdana, sans-serif;
            margin-top: 8px;
            margin-bottom: 8px;
            padding-top: 0;
            padding-bottom: 0;
        }


        /* EXAMPLE: These styles apply only to the Example section */
        div.refsect2 {
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 table {
            margin-top: 0;
            background-color: #e6e6e6;
            width: 100%;
            border: 0 solid #000;
            padding: 2px;
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 td {
            background-color: #e6e6e6;
            font: normal 16px courier new, monospace !important;
                        white-space:pre;
        }

        /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
        div.refsect3 {
            font: normal 11px verdana, sans-serif;
            margin-top: 50px;
            margin-bottom: 20px;
            padding-top: 0;
            padding-bottom: 0;
        }

</style>
    <title>clGetMemObjectInfo</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
    <meta name="keywords" content="         &#10;                clGetMemObjectInfo&#10;            " />
  </head>
  <body>
    <div class="refentry">
      <a id="id-1"></a>
      <div class="titlepage"></div>
      <div xmlns="" class="refnamediv">
        <a xmlns="http://www.w3.org/1999/xhtml" id="clGetMemObjectInfo"></a>
        <h1>     
            clGetMemObjectInfo
        </h1>
        <p>          
            Used to get information that is common to all memory objects (buffer and image objects).
        </p>
      </div>
      <div class="refsynopsisdiv">
        <h2></h2>
        <div class="funcsynopsis">
          <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
            <tr valign="bottom">
              <td>
                <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">
                    <a class="link" href="scalarDataTypes.html" target="_top">cl_int</a>
 <strong class="fsfunc">clGetMemObjectInfo</strong>
                (</code>
                <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="_top">cl_mem</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">memobj</var>, </td>
              </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="enums.html#cl_mem_info" target="_top">cl_mem_info</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">param_name</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="_top">size_t</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">param_value_size</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="_top">void</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*param_value</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="_top">size_t</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*param_value_size_ret</var><code>)</code></td>
            </tr>
          </table>
        </div>
      </div>
      <div class="refsect1">
        <a id="parameters"></a>
        <h2>Parameters</h2>
        <div class="variablelist">
          <dl class="variablelist">
            <dt>
              <span class="term">
                    <code class="varname">
                        memobj
                    </code>
                </span>
            </dt>
            <dd>
              <p> 
                        Specifies the memory object being queried.
                    </p>
            </dd>
            <dt>
              <span class="term">
                    <code class="varname">
                        param_name
                    </code>
                </span>
            </dt>
            <dd>
              <p>
                        Specifies the information to query. The list of supported <code class="varname">param_name</code> types and the
                        information returned in <code class="varname">param_value</code> by <code class="function">clGetMemObjectInfo</code> is described 
                        in the table below.
                    </p>
              <div class="informaltable">
                <table border="1">
                  <colgroup>
                    <col align="left" class="col1" />
                    <col align="left" class="col2" />
                    <col align="left" class="col3" />
                  </colgroup>
                  <thead>
                    <tr>
                      <th align="left">cl_mem_info</th>
                      <th align="left">Return Type</th>
                      <th align="left">Info. returned in <code class="varname">param_value</code></th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_TYPE</code>
                      </td>
                      <td align="left">cl_mem_object_type</td>
                      <td align="left">
                                        Returns one of the following values:
                                        
                                        <p><code class="constant">CL_MEM_OBJECT_BUFFER</code> if
                                        <code class="varname">memobj</code> is created with 
                                            <a class="citerefentry" href="clCreateBuffer.html"><span class="citerefentry"><span class="refentrytitle">clCreateBuffer</span></span></a> or
                                            <a class="citerefentry" href="clCreateSubBuffer.html"><span class="citerefentry"><span class="refentrytitle">clCreateSubBuffer</span></span></a>,</p>

                                        <p><code class="constant">CL_MEM_OBJECT_IMAGE2D</code> if
                                        <code class="varname">memobj</code> is a 2D image object, or</p>
                                        
                                        <p><code class="constant">CL_MEM_OBJECT_IMAGE3D</code> if
                                        <code class="varname">memobj</code> is a 3D image object.</p>
                                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_FLAGS</code>
                      </td>
                      <td align="left">cl_mem_flags</td>
                      <td align="left">
                                        Returns the <code class="varname">flags</code> argument value
specified when <code class="varname">memobj</code> is created with                                        <a class="citerefentry" href="clCreateBuffer.html"><span class="citerefentry"><span class="refentrytitle">clCreateBuffer</span></span></a>,     
<a class="citerefentry" href="clCreateSubBuffer.html"><span class="citerefentry"><span class="refentrytitle">clCreateSubBuffer</span></span></a>,                                  <a class="citerefentry" href="clCreateImage2D.html"><span class="citerefentry"><span class="refentrytitle">clCreateImage2D</span></span></a>, or <a class="citerefentry" href="clCreateImage3D.html"><span class="citerefentry"><span class="refentrytitle">clCreateImage3D</span></span></a>.
                                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_SIZE</code>
                      </td>
                      <td align="left">size_t</td>
                      <td align="left">
                                        Return actual size of the data store associated with <code class="varname">memobj</code> in bytes.
                                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_HOST_PTR</code>
                      </td>
                      <td align="left">void *</td>
                      <td align="left">
                                        Return the <code class="varname">host_ptr</code> argument value specified when <code class="varname">memobj</code> is created.
                                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_MAP_COUNT</code>
                      </td>
                      <td align="left">cl_uint</td>
                      <td align="left">
                                        Map count. The map count returned should be considered immediately stale. It is unsuitable for general use in applications. This feature is provided for debugging.
                                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_REFERENCE_COUNT</code>
                      </td>
                      <td align="left">cl_uint</td>
                      <td align="left">
                                        Return <code class="varname">memobj</code> reference count. The reference count returned should be considered immediately stale. It is unsuitable for general use in
                                        applications. This feature is provided for identifying memory leaks.
                                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_CONTEXT</code>
                      </td>
                      <td align="left">cl_context</td>
                      <td align="left">
                                        Return context specified when memory object is created.
                                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_ASSOCIATED_MEMOBJECT</code>
                      </td>
                      <td align="left">cl_mem</td>
                      <td align="left">
                                        Return memory object from which <code class="varname">memobj</code> is created.
                                        <p> This returns the memory object specified as <code class="varname">buffer</code> 
                                        argument to <a class="citerefentry" href="clCreateSubBuffer.html"><span class="citerefentry"><span class="refentrytitle">clCreateSubBuffer</span></span></a>.</p>
                                        <p>Otherwise a NULL value is returned. </p>
                                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_OFFSET</code>
                      </td>
                      <td align="left">size_t</td>
                      <td align="left">
                                        Return offset if <code class="varname">memobj</code> is a sub-buffer object created using 
                                        <a class="citerefentry" href="clCreateSubBuffer.html"><span class="citerefentry"><span class="refentrytitle">clCreateSubBuffer</span></span></a>.
                                        <p>This return 0 if <code class="varname">memobj</code> is not a subbuffer object.</p>
                                    </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_D3D10_RESOURCE_KHR</code>
                      </td>
                      <td align="left">ID3D10Resource *</td>
                      <td align="left">
                                         The propery being queried (if the 
                                        <a class="citerefentry" href="cl_khr_d3d10_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d10_sharing</span></span></a> 
                                        extension is enabled). If <code class="varname">memobj</code> was created using
<a class="citerefentry" href="clCreateFromD3D10BufferKHR.html"><span class="citerefentry"><span class="refentrytitle">clCreateFromD3D10BufferKHR</span></span></a>,
<a class="citerefentry" href="clCreateFromD3D10Texture2DKHR.html"><span class="citerefentry"><span class="refentrytitle">clCreateFromD3D10Texture2DKHR</span></span></a>,
or <a class="citerefentry" href="clCreateFromD3D10Texture3DKHR.html"><span class="citerefentry"><span class="refentrytitle">clCreateFromD3D10Texture3DKHR</span></span></a>,
returns the resource argument specified
when <code class="varname">memobj</code> was created.
                                    </td>
                    </tr>
                  </tbody>
                </table>
              </div>
            </dd>
            <dt>
              <span class="term">
                    <code class="varname">
                        param_value
                    </code>
                </span>
            </dt>
            <dd>
              <p>
                        A pointer to memory where the appropriate result being queried is returned. If <code class="varname">param_value</code> is NULL, it is ignored.
                    </p>
            </dd>
            <dt>
              <span class="term">
                    <code class="varname">
                        param_value_size
                    </code>
                </span>
            </dt>
            <dd>
              <p>
                        Used to specify the size in bytes of memory pointed to by <code class="varname">param_value</code>.
                        This size must be greater than or equal to size of return type as described in the table above.
                    </p>
            </dd>
            <dt>
              <span class="term">
                    <code class="varname">
                        param_value_size_ret
                    </code>
                </span>
            </dt>
            <dd>
              <p>
                        Returns the actual size in bytes of data being queried by <code class="varname">param_value</code>. If <code class="varname">param_value_size_ret</code> is NULL, it is ignored.
                    </p>
            </dd>
          </dl>
        </div>
      </div>
      <div class="refsect1">
        <a id="errors"></a>
        <h2>Errors</h2>
        <p>
        Returns <span class="errorname">CL_SUCCESS</span> if the function is executed successfully.
        Otherwise, it returns one of the following errors:</p>
        <div class="itemizedlist">
          <ul class="itemizedlist" style="list-style-type: disc; ">
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_VALUE</span> if <code class="varname">param_name</code> is not valid, or if size 
                in bytes specified by <code class="varname">param_value_size</code> is less than the size of return type as 
                described in the table above and <code class="varname">param_value</code> is not NULL.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_D3D10_RESOURCE_KHR</span> If the 
                <a class="citerefentry" href="cl_khr_d3d10_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d10_sharing</span></span></a> 
                extension is enabled and if <code class="varname">param_name</code> is 
                CL_MEM_D3D10_RESOURCE_KHR and <code class="varname">memobj</code> was not created by the function 
                <a class="citerefentry" href="clCreateFromD3D10BufferKHR.html"><span class="citerefentry"><span class="refentrytitle">clCreateFromD3D10BufferKHR</span></span></a>, 
                <a class="citerefentry" href="clCreateFromD3D10Texture2DKHR.html"><span class="citerefentry"><span class="refentrytitle">clCreateFromD3D10Texture2DKHR</span></span></a>, or
                <a class="citerefentry" href="clCreateFromD3D10Texture3DKHR.html"><span class="citerefentry"><span class="refentrytitle">clCreateFromD3D10Texture3DKHR</span></span></a>.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_MEM_OBJECT</span> if <code class="varname">memobj</code> is a not a valid memory object.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_OUT_OF_RESOURCES</span> if there is a failure to allocate resources required by the 
                OpenCL implementation on the device.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_OUT_OF_HOST_MEMORY</span> if there is a failure to allocate resources required by the 
                OpenCL implementation on the host.
            </li>
          </ul>
        </div>
      </div>
      <div class="refsect1">
        <a id="specification"></a>
        <h2>Specification</h2>
        <p>
            <img src="pdficon_small1.gif" />
            
                      
            <a href="http://www.khronos.org/registry/cl/specs/opencl-1.1.pdf#page=101" target="OpenCL Spec">OpenCL Specification</a>
        </p>
      </div>
      <div class="refsect1">
        <a id="seealso"></a>
        <h2>Also see</h2>
        <p>
            <a class="citerefentry" href="clGetImageInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetImageInfo</span></span></a>
        </p>
      </div>
      <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>Copyright © 2007-2010 The Khronos Group Inc.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.
</div>
    </div>
  </body>
</html>
