2.1 KiB
MsQuicOpenVersion function
Opens a new handle to the MsQuic library and returns a version specific API table.
Syntax
_IRQL_requires_max_(PASSIVE_LEVEL)
_Pre_defensive_
QUIC_STATUS
QUIC_API
MsQuicOpenVersion(
_In_ uint32_t Version,
_Out_ const QUIC_API_TABLE** QuicApi
);
Parameters
Version
The API Version to use.
QuicApi
On success, returns a pointer to the API function table.
Return Value
The function returns a QUIC_STATUS. The app may use QUIC_FAILED
or QUIC_SUCCEEDED
to determine if the function failed or succeeded.
Remarks
This function is the entry point for the MsQuic API. This function may be called multiple times to get multiple new function tables, but this is generally unnecessary. An app should only need call this once. A single QuicApi
may be shared and safely used by multiple callers on parallel threads.
For every successful call to MsQuicOpenVersion the app must call MsQuicClose, passing in the function table from QuicApi when the app is done with it.
Calls to MsQuicOpenVersion and MsQuicClose increment and decrement reference counts on the library. The addition of the first reference count initializes the global state and the removal of the last reference count cleans up the global state. Since both of these operations are not light weight it's highly recommended that an app does not open and close very frequently.
MsQuicOpenVersion may dynamically load other dependencies, so it must not be called from DllMain on Windows.
MsQuicOpenVersion takes a version number to indicate which version of the API to use. Newer versions of the library will support older versions of the API for binary compatibility. The MsQuicOpen2 definition in msquic.h now forwards to MsQuicOpenVersion
MsQuicOpenVersion and MsQuicClose are not thread-safe if the caller is statically linking MsQuic, and therefore must not be called in parallel.