<trclass="memdesc:namespacecrashpad_1_1internal"><tdclass="mdescLeft"> </td><tdclass="mdescRight">The internal namespace, not for public use. <br/></td></tr>
<trclass="memdesc:a0997574e7522725516242d78632ed686"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns a function pointer to a named function in a library without requiring that it be found. <ahref="#a0997574e7522725516242d78632ed686">More...</a><br/></td></tr>
<trclass="memdesc:ae87bc4c8800c7e6f35c06bf48cb636f3"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns a function pointer to a named function in a library, requiring that it be found. <ahref="#ae87bc4c8800c7e6f35c06bf48cb636f3">More...</a><br/></td></tr>
<trclass="memdesc:aa982a8cad0e72cddf1989d135db3c338"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns a function pointer to a named function in a library. <ahref="namespacecrashpad_1_1internal.html#aa982a8cad0e72cddf1989d135db3c338">More...</a><br/></td></tr>
<trclass="memdesc:a334a660002ce6e6f06432ccf7d3cc50f"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Returns a function pointer to a named function in a library. <ahref="namespacecrashpad_1_1internal.html#a334a660002ce6e6f06432ccf7d3cc50f">More...</a><br/></td></tr>
<p>Returns a function pointer to a named function in a library without requiring that it be found. </p>
<p>If the library or function cannot be found, this will return <code>nullptr</code>. This macro is intended to be used to access functions that may not be available at runtime.</p>
<p>This macro returns a properly-typed function pointer. It is expected to be used in this way: </p><divclass="fragment"><divclass="line"><spanclass="keyword">static</span><spanclass="keyword">const</span><spanclass="keyword">auto</span> get_named_pipe_client_process_id =</div><divclass="line"><aclass="code"href="get__function_8h.html#a0997574e7522725516242d78632ed686">GET_FUNCTION</a>(L<spanclass="stringliteral">"kernel32.dll"</span>, ::GetNamedPipeClientProcessId);</div><divclass="line"><spanclass="keywordflow">if</span> (get_named_pipe_client_process_id) {</div><divclass="line"> BOOL rv = get_named_pipe_client_process_id(pipe, &client_process_id);</div><divclass="line">}</div></div><!-- fragment --><p>This accesses <em>library</em> by calling <code>LoadLibrary()</code> and is subject to the same restrictions as that function. Notably, it can’t be used from a <code>DllMain()</code> entry point.</p>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">library</td><td>The library to search in. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">function</td><td>The function to search for. A leading <code>::</code> is recommended when a wrapper function of the same name is present.</td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A pointer to the requested function on success, or <code>nullptr</code> on failure.</dd></dl>
<dlclass="section see"><dt>See also</dt><dd><aclass="el"href="get__function_8h.html#ae87bc4c8800c7e6f35c06bf48cb636f3"title="Returns a function pointer to a named function in a library, requiring that it be found...">GET_FUNCTION_REQUIRED</a></dd></dl>
<p>Returns a function pointer to a named function in a library, requiring that it be found. </p>
<p>If the library or function cannot be found, this will trigger a <code>DCHECK</code> assertion. This macro is intended to be used to access functions that are always expected to be available at runtime but which are not present in any import library.</p>
<p>This macro returns a properly-typed function pointer. It is expected to be used in this way: </p><divclass="fragment"><divclass="line"><spanclass="keyword">static</span><spanclass="keyword">const</span><spanclass="keyword">auto</span> nt_query_object =</div><divclass="line"><aclass="code"href="get__function_8h.html#ae87bc4c8800c7e6f35c06bf48cb636f3">GET_FUNCTION_REQUIRED</a>(L<spanclass="stringliteral">"ntdll.dll"</span>, ::NtQueryObject);</div><divclass="line">NTSTATUS status =</div><divclass="line"> nt_query_object(handle, type, &info, info_length, &return_length);</div></div><!-- fragment --><p>This accesses <em>library</em> by calling <code>LoadLibrary()</code> and is subject to the same restrictions as that function. Notably, it can’t be used from a <code>DllMain()</code> entry point.</p>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">library</td><td>The library to search in. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">function</td><td>The function to search for. A leading <code>::</code> is recommended when a wrapper function of the same name is present.</td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>A pointer to the requested function.</dd></dl>
<dlclass="section see"><dt>See also</dt><dd><aclass="el"href="get__function_8h.html#a0997574e7522725516242d78632ed686"title="Returns a function pointer to a named function in a library without requiring that it be found...">GET_FUNCTION</a></dd></dl>