100 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			100 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|  | // Licensed to the .NET Foundation under one or more agreements.
 | ||
|  | // The .NET Foundation licenses this file to you under the MIT license.
 | ||
|  | 
 | ||
|  | #ifndef __NETHOST_H__
 | ||
|  | #define __NETHOST_H__
 | ||
|  | 
 | ||
|  | #include <stddef.h>
 | ||
|  | 
 | ||
|  | #ifdef _WIN32
 | ||
|  |     #ifdef NETHOST_EXPORT
 | ||
|  |         #define NETHOST_API __declspec(dllexport)
 | ||
|  |     #else
 | ||
|  |         // Consuming the nethost as a static library
 | ||
|  |         // Shouldn't export attempt to dllimport.
 | ||
|  |         #ifdef NETHOST_USE_AS_STATIC
 | ||
|  |             #define NETHOST_API 
 | ||
|  |         #else
 | ||
|  |             #define NETHOST_API __declspec(dllimport)
 | ||
|  |         #endif
 | ||
|  |     #endif
 | ||
|  | 
 | ||
|  |     #define NETHOST_CALLTYPE __stdcall
 | ||
|  |     #ifdef _WCHAR_T_DEFINED
 | ||
|  |         typedef wchar_t char_t; | ||
|  |     #else
 | ||
|  |         typedef unsigned short char_t; | ||
|  |     #endif
 | ||
|  | #else
 | ||
|  |     #ifdef NETHOST_EXPORT
 | ||
|  |         #define NETHOST_API __attribute__((__visibility__("default")))
 | ||
|  |     #else
 | ||
|  |         #define NETHOST_API
 | ||
|  |     #endif
 | ||
|  | 
 | ||
|  |     #define NETHOST_CALLTYPE
 | ||
|  |     typedef char char_t; | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | extern "C" { | ||
|  | #endif
 | ||
|  | 
 | ||
|  | // Parameters for get_hostfxr_path
 | ||
|  | //
 | ||
|  | // Fields:
 | ||
|  | //   size
 | ||
|  | //     Size of the struct. This is used for versioning.
 | ||
|  | //
 | ||
|  | //   assembly_path
 | ||
|  | //     Path to the compenent's assembly.
 | ||
|  | //     If specified, hostfxr is located as if the assembly_path is the apphost
 | ||
|  | //
 | ||
|  | //   dotnet_root
 | ||
|  | //     Path to directory containing the dotnet executable.
 | ||
|  | //     If specified, hostfxr is located as if an application is started using
 | ||
|  | //     'dotnet app.dll', which means it will be searched for under the dotnet_root
 | ||
|  | //     path and the assembly_path is ignored.
 | ||
|  | //
 | ||
|  | struct get_hostfxr_parameters { | ||
|  |     size_t size; | ||
|  |     const char_t *assembly_path; | ||
|  |     const char_t *dotnet_root; | ||
|  | }; | ||
|  | 
 | ||
|  | //
 | ||
|  | // Get the path to the hostfxr library
 | ||
|  | //
 | ||
|  | // Parameters:
 | ||
|  | //   buffer
 | ||
|  | //     Buffer that will be populated with the hostfxr path, including a null terminator.
 | ||
|  | //
 | ||
|  | //   buffer_size
 | ||
|  | //     [in] Size of buffer in char_t units.
 | ||
|  | //     [out] Size of buffer used in char_t units. If the input value is too small
 | ||
|  | //           or buffer is nullptr, this is populated with the minimum required size
 | ||
|  | //           in char_t units for a buffer to hold the hostfxr path
 | ||
|  | //
 | ||
|  | //   get_hostfxr_parameters
 | ||
|  | //     Optional. Parameters that modify the behaviour for locating the hostfxr library.
 | ||
|  | //     If nullptr, hostfxr is located using the enviroment variable or global registration
 | ||
|  | //
 | ||
|  | // Return value:
 | ||
|  | //   0 on success, otherwise failure
 | ||
|  | //   0x80008098 - buffer is too small (HostApiBufferTooSmall)
 | ||
|  | //
 | ||
|  | // Remarks:
 | ||
|  | //   The full search for the hostfxr library is done on every call. To minimize the need
 | ||
|  | //   to call this function multiple times, pass a large buffer (e.g. PATH_MAX).
 | ||
|  | //
 | ||
|  | NETHOST_API int NETHOST_CALLTYPE get_hostfxr_path( | ||
|  |     char_t * buffer, | ||
|  |     size_t * buffer_size, | ||
|  |     const struct get_hostfxr_parameters *parameters); | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | } // extern "C"
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #endif // __NETHOST_H__
 |