heliosphere-plugin This is a unique ID only sent to Sentry. It can be accessed and sent via support channels to make finding error reports easier. Just XOR with the key. This isn't designed to stop someone dedicated. A list of files expected by the group jsons made by this task. These paths should be relative to the files directory. This is non-null when a directory exists in the Penumbra directory that starts with hs- and ends with the variant/package IDs, and it does not equal the expected mod installation path. Essentially only true for version updates (not reinstalls). Open the mod in Penumbra if it was successfully installed. Runs on framework thread, so no need to call this from within . Reads until hitting the read limit. Note that this does not allow valid reads from the buffer, as it is overwritten with multiple read calls. a buffer of bytes The package ID. Start a task to download updates for this version. An instance of the plugin Task that completes when the download finishes Represents the operation service of the GetBasicInfo GraphQL operation query GetBasicInfo($versionId: UUID!) { getVersion(id: $versionId) { __typename version variant { __typename id name package { __typename id name user { __typename username } images { __typename id } } } basicGroups { __typename name options { __typename name description imagePath } } } } Represents the operation service of the GetBasicInfo GraphQL operation query GetBasicInfo($versionId: UUID!) { getVersion(id: $versionId) { __typename version variant { __typename id name package { __typename id name user { __typename username } images { __typename id } } } basicGroups { __typename name options { __typename name description imagePath } } } } Represents the operation service of the GetBasicInfo GraphQL operation query GetBasicInfo($versionId: UUID!) { getVersion(id: $versionId) { __typename version variant { __typename id name package { __typename id name user { __typename username } images { __typename id } } } basicGroups { __typename name options { __typename name description imagePath } } } } Represents the operation service of the DownloadTask GraphQL operation query DownloadTask($versionId: UUID!, $key: String, $downloadKind: DownloadKind!) { getVersion(id: $versionId) { __typename version batched batches defaultOption { __typename fileSwaps } variant { __typename id name package { __typename id name tagline description tags { __typename slug } user { __typename id username } images { __typename id } } } groups { __typename standard { __typename name description priority defaultSettings groupType originalIndex options { __typename hsId name description priority fileSwaps manipulations isDefault } } imc { __typename name description priority defaultSettings groupType identifier allVariants onlyAttributes defaultEntry originalIndex options { __typename name description isDisableSubMod attributeMask } } combining { __typename name description priority defaultSettings groupType originalIndex options { __typename name description isDefault } containers { __typename hsId name gamePaths manipulations fileSwaps } } } neededFiles(downloadKey: $key, downloadKind: $downloadKind) { __typename baseUri modHash files defaultManipulations } } } Represents the operation service of the DownloadTask GraphQL operation query DownloadTask($versionId: UUID!, $key: String, $downloadKind: DownloadKind!) { getVersion(id: $versionId) { __typename version batched batches defaultOption { __typename fileSwaps } variant { __typename id name package { __typename id name tagline description tags { __typename slug } user { __typename id username } images { __typename id } } } groups { __typename standard { __typename name description priority defaultSettings groupType originalIndex options { __typename hsId name description priority fileSwaps manipulations isDefault } } imc { __typename name description priority defaultSettings groupType identifier allVariants onlyAttributes defaultEntry originalIndex options { __typename name description isDisableSubMod attributeMask } } combining { __typename name description priority defaultSettings groupType originalIndex options { __typename name description isDefault } containers { __typename hsId name gamePaths manipulations fileSwaps } } } neededFiles(downloadKey: $key, downloadKind: $downloadKind) { __typename baseUri modHash files defaultManipulations } } } Represents the operation service of the DownloadTask GraphQL operation query DownloadTask($versionId: UUID!, $key: String, $downloadKind: DownloadKind!) { getVersion(id: $versionId) { __typename version batched batches defaultOption { __typename fileSwaps } variant { __typename id name package { __typename id name tagline description tags { __typename slug } user { __typename id username } images { __typename id } } } groups { __typename standard { __typename name description priority defaultSettings groupType originalIndex options { __typename hsId name description priority fileSwaps manipulations isDefault } } imc { __typename name description priority defaultSettings groupType identifier allVariants onlyAttributes defaultEntry originalIndex options { __typename name description isDisableSubMod attributeMask } } combining { __typename name description priority defaultSettings groupType originalIndex options { __typename name description isDefault } containers { __typename hsId name gamePaths manipulations fileSwaps } } } neededFiles(downloadKey: $key, downloadKind: $downloadKind) { __typename baseUri modHash files defaultManipulations } } } Represents the operation service of the GetNewestVersionInfoMulti GraphQL operation query GetNewestVersionInfoMulti($ids: [UUID!]!) { variants(ids: $ids) { __typename id ... VariantInfo } } fragment VariantInfo on Variant { name package { __typename name } versions(limit: 1) { __typename id version changelog basicGroups { __typename name options { __typename name } } } } Represents the operation service of the GetNewestVersionInfoMulti GraphQL operation query GetNewestVersionInfoMulti($ids: [UUID!]!) { variants(ids: $ids) { __typename id ... VariantInfo } } fragment VariantInfo on Variant { name package { __typename name } versions(limit: 1) { __typename id version changelog basicGroups { __typename name options { __typename name } } } } Represents the operation service of the GetNewestVersionInfoMulti GraphQL operation query GetNewestVersionInfoMulti($ids: [UUID!]!) { variants(ids: $ids) { __typename id ... VariantInfo } } fragment VariantInfo on Variant { name package { __typename name } versions(limit: 1) { __typename id version changelog basicGroups { __typename name options { __typename name } } } } Represents the operation service of the ConvertVariantId GraphQL operation query ConvertVariantId($oldId: Int!) { convertVariantId(id: $oldId) } Represents the operation service of the ConvertVariantId GraphQL operation query ConvertVariantId($oldId: Int!) { convertVariantId(id: $oldId) } Represents the operation service of the ConvertVariantId GraphQL operation query ConvertVariantId($oldId: Int!) { convertVariantId(id: $oldId) } Represents the operation service of the GetVersions GraphQL operation query GetVersions($packageId: UUID!) { package(id: $packageId) { __typename variants { __typename id name versions { __typename id version changelog } } } } Represents the operation service of the GetVersions GraphQL operation query GetVersions($packageId: UUID!) { package(id: $packageId) { __typename variants { __typename id name versions { __typename id version changelog } } } } Represents the operation service of the GetVersions GraphQL operation query GetVersions($packageId: UUID!) { package(id: $packageId) { __typename variants { __typename id name versions { __typename id version changelog } } } } Represents the operation service of the MultiVariantInstall GraphQL operation query MultiVariantInstall($packageId: UUID!) { package(id: $packageId) { __typename name user { __typename username } images { __typename id } variants { __typename id name versions(limit: 1) { __typename id version basicGroups { __typename name options { __typename name description imagePath } } installerImages { __typename baseUri images } } } } } Represents the operation service of the MultiVariantInstall GraphQL operation query MultiVariantInstall($packageId: UUID!) { package(id: $packageId) { __typename name user { __typename username } images { __typename id } variants { __typename id name versions(limit: 1) { __typename id version basicGroups { __typename name options { __typename name description imagePath } } installerImages { __typename baseUri images } } } } } Represents the operation service of the MultiVariantInstall GraphQL operation query MultiVariantInstall($packageId: UUID!) { package(id: $packageId) { __typename name user { __typename username } images { __typename id } variants { __typename id name versions(limit: 1) { __typename id version basicGroups { __typename name options { __typename name description imagePath } } installerImages { __typename baseUri images } } } } } Represents the operation service of the GetVariant GraphQL operation query GetVariant($versionId: UUID!) { getVersion(id: $versionId) { __typename variant { __typename id name } } } Represents the operation service of the GetVariant GraphQL operation query GetVariant($versionId: UUID!) { getVersion(id: $versionId) { __typename variant { __typename id name } } } Represents the operation service of the GetVariant GraphQL operation query GetVariant($versionId: UUID!) { getVersion(id: $versionId) { __typename variant { __typename id name } } } Represents the operation service of the GetNewestVersionInfo GraphQL operation query GetNewestVersionInfo($variantId: UUID!) { variant(id: $variantId) { __typename ... VariantInfo } } fragment VariantInfo on Variant { name package { __typename name } versions(limit: 1) { __typename id version changelog basicGroups { __typename name options { __typename name } } } } Represents the operation service of the GetNewestVersionInfo GraphQL operation query GetNewestVersionInfo($variantId: UUID!) { variant(id: $variantId) { __typename ... VariantInfo } } fragment VariantInfo on Variant { name package { __typename name } versions(limit: 1) { __typename id version changelog basicGroups { __typename name options { __typename name } } } } Represents the operation service of the GetNewestVersionInfo GraphQL operation query GetNewestVersionInfo($variantId: UUID!) { variant(id: $variantId) { __typename ... VariantInfo } } fragment VariantInfo on Variant { name package { __typename name } versions(limit: 1) { __typename id version changelog basicGroups { __typename name options { __typename name } } } } Represents the operation service of the GetNewestVersionInfoAllVariants GraphQL operation query GetNewestVersionInfoAllVariants($packageId: UUID!) { package(id: $packageId) { __typename variants { __typename id name versions(limit: 1) { __typename id version } } } } Represents the operation service of the GetNewestVersionInfoAllVariants GraphQL operation query GetNewestVersionInfoAllVariants($packageId: UUID!) { package(id: $packageId) { __typename variants { __typename id name versions(limit: 1) { __typename id version } } } } Represents the operation service of the GetNewestVersionInfoAllVariants GraphQL operation query GetNewestVersionInfoAllVariants($packageId: UUID!) { package(id: $packageId) { __typename variants { __typename id name versions(limit: 1) { __typename id version } } } } Represents the operation service of the Importer GraphQL operation query Importer($versionId: UUID!, $key: String) { getVersion(id: $versionId) { __typename neededFiles(downloadKey: $key) { __typename files } } } Represents the operation service of the Importer GraphQL operation query Importer($versionId: UUID!, $key: String) { getVersion(id: $versionId) { __typename neededFiles(downloadKey: $key) { __typename files } } } Represents the operation service of the Importer GraphQL operation query Importer($versionId: UUID!, $key: String) { getVersion(id: $versionId) { __typename neededFiles(downloadKey: $key) { __typename files } } } Represents the operation service of the CheckVanityUrl GraphQL operation query CheckVanityUrl($slug: String!) { checkVanityUrl(kind: MOD, slug: $slug) } Represents the operation service of the CheckVanityUrl GraphQL operation query CheckVanityUrl($slug: String!) { checkVanityUrl(kind: MOD, slug: $slug) } Represents the operation service of the CheckVanityUrl GraphQL operation query CheckVanityUrl($slug: String!) { checkVanityUrl(kind: MOD, slug: $slug) } Represents the operation service of the ConvertVersionId GraphQL operation query ConvertVersionId($oldId: Int!) { convertVersionId(id: $oldId) } Represents the operation service of the ConvertVersionId GraphQL operation query ConvertVersionId($oldId: Int!) { convertVersionId(id: $oldId) } Represents the operation service of the ConvertVersionId GraphQL operation query ConvertVersionId($oldId: Int!) { convertVersionId(id: $oldId) } Represents the HeliosphereClient GraphQL client Represents the HeliosphereClient GraphQL client Returns an immutable Dictionary of "external" Heliosphere mods. External mods are mods installed via means other than the plugin. Specifically, these are mods that are in directories not starting with "hs-" and that contain a heliosphere.json file. Same as but returns an empty Dictionary if accessing the data would have blocked. Gets the mod directory from Penumbra. Will open a warning popup to users who have not set Penumbra up correctly. The mod directory true if the mod directory is valid, false if invalid or Penumbra's IPC could not be contacted A dictionary of option group names and lists of enabled option names. Attempt to add a download to the download queue. This can fail (and therefore return null) if a download for the same version is already in the queue. download to add cancellation token the running download task or null Read and deserialise JSON from a HTTP request to a C# type. Request to read from The type to attempt deserialisation to If the input data was valid data: the deserialised object/array "null": null invalid data: null true if import succeeded, false if not started/failed Draw this drawable. DrawStatus to determine if the drawable is finished The drawable is finished drawing forever. The method will never be called again. The method should continue to be called for another frame. Copy files to the clipboard as if they were copied in Explorer. Full paths to files to be copied. Returns true on success. Try to open a file for shared reading. If the file doesn't exist, returns null.
Throws the same exceptions as aside from and .
path to open FileStream if the file exists
Create a file at the given path. See . path to file to create FileStream of created file The fill level of the leaky bucket. Number of bytes read multiplied by . Dispose the internal and return the data. This marks the instance as disposed, so will do nothing. Previously-guarded data If this instance is already disposed Returns the relative path of child to parent provided that parent is an actual parent of child. If parent is not a parent of child, null is returned. Wait until returns true for a path. Path to check Maximum time to wait before returning (default: 5 seconds) Time to wait between each check (default: 100 milliseconds) Final result of Find out which processes have a lock on the specified file. Path of the file. Processes locking the file Start a child span as low in the hierarchy as possible. name of the span operation true if this span should not be set as the child of the current lowest span a span that must be disposed A pointer to a null-terminated, constant character string. A pointer to the first character in the string. The content should be considered readonly, as it was typed as constant in the SDK. Gets the number of characters up to the first null character (exclusive). Returns a with a copy of this character array, up to the first null character (exclusive). A , or if is . Returns a span of the characters in this string, up to the first null character (exclusive). Returns a span of the characters in this string, up to the first null character (exclusive). The length of the inline array. Gets a ref to an individual element of the inline array. ⚠ Important ⚠: When this struct is on the stack, do not let the returned reference outlive the stack frame that defines it. Gets this inline array as a span. ⚠ Important ⚠: When this struct is on the stack, do not let the returned span outlive the stack frame that defines it. Gets this inline array as a span. ⚠ Important ⚠: When this struct is on the stack, do not let the returned span outlive the stack frame that defines it. Copies the fixed array to a new string up to the specified length regardless of whether there are null terminating characters. Thrown when is less than 0 or greater than . Copies the fixed array to a new string, stopping before the first null terminator character or at the end of the fixed array (whichever is shorter). The length of the inline array. Gets a ref to an individual element of the inline array. ⚠ Important ⚠: When this struct is on the stack, do not let the returned reference outlive the stack frame that defines it. Gets this inline array as a span. ⚠ Important ⚠: When this struct is on the stack, do not let the returned span outlive the stack frame that defines it. Gets this inline array as a span. ⚠ Important ⚠: When this struct is on the stack, do not let the returned span outlive the stack frame that defines it. Copies the fixed array to a new string up to the specified length regardless of whether there are null terminating characters. Thrown when is less than 0 or greater than . Copies the fixed array to a new string, stopping before the first null terminator character or at the end of the fixed array (whichever is shorter). Describes the current status of an application that is acted upon by the Restart Manager. The constants of RM_APP_STATUS can be combined with OR operators. The combination describes the history of actions taken by Restart Manager on the application. The application is in a state that is not described by any other enumerated state. The application is currently running. The Restart Manager has stopped the application. An action outside the Restart Manager has stopped the application. The Restart Manager has restarted the application. The Restart Manager encountered an error when stopping the application. The Restart Manager encountered an error when restarting the application. Shutdown is masked by a filter. Restart is masked by a filter. Specifies the type of application that is described by the RM_PROCESS_INFO structure. Learn more about this API from docs.microsoft.com. The application cannot be classified as any other type. An application of this type can only be shut down by a forced shutdown. A Windows application run as a stand-alone process that displays a top-level window. A Windows application that does not run as a stand-alone process and does not display a top-level window. The application is a Windows service. The application is Windows Explorer. The application is a stand-alone console application. A system restart is required to complete the installation because a process cannot be shut down. The process cannot be shut down because of the following reasons. The process may be a critical process. The current user may not have permission to shut down the process. The process may belong to the primary installer that started the Restart Manager. Describes an application that is to be registered with the Restart Manager. Learn more about this API from docs.microsoft.com. Contains an RM_UNIQUE_PROCESS structure that uniquely identifies the application by its PID and the time the process began. If the process is a service, this parameter returns the long name for the service. If the process is not a service, this parameter returns the user-friendly name for the application. If the process is a critical process, and the installer is run with elevated privileges, this parameter returns the name of the executable file of the critical process. If the process is a critical process, and the installer is run as a service, this parameter returns the long name of the critical process. If the process is a service, this is the short name for the service. This member is not used if the process is not a service. Contains an RM_APP_TYPE enumeration value that specifies the type of application as RmUnknownApp, RmMainWindow, RmOtherWindow, RmService, RmExplorer or RmCritical. Contains the Terminal Services session ID of the process. If the terminal session of the process cannot be determined, the value of this member is set to RM_INVALID_SESSION (-1). This member is not used if the process is a service or a system critical process. Read more on docs.microsoft.com. TRUE if the application can be restarted by the Restart Manager; otherwise, FALSE. This member is always TRUE if the process is a service. This member is always FALSE if the process is a critical system process. Read more on docs.microsoft.com. Describes the reasons a restart of the system is needed. Learn more about this API from docs.microsoft.com. A system restart is not required. The current user does not have sufficient privileges to shut down one or more processes. Read more on docs.microsoft.com. One or more processes are running in another Terminal Services session. Read more on docs.microsoft.com. A system restart is needed because one or more processes to be shut down are critical processes. A system restart is needed because one or more services to be shut down are critical services. A system restart is needed because the current process must be shut down. Uniquely identifies a process by its PID and the time the process began. The RM_UNIQUE_PROCESS structure can be used to uniquely identify an application in an RM_PROCESS_INFO structure or registered with the Restart Manager session by the RmRegisterResources function. The product identifier (PID). The creation time of the process. The time is provided as a FILETIME structure that is returned by the lpCreationTime parameter of the GetProcessTimes function. Defines the CF_HDROP clipboard format. The data that follows is a double null-terminated list of file names. Learn more about this API from docs.microsoft.com. Type: DWORD The offset of the file list from the beginning of this structure, in bytes. Read more on docs.microsoft.com. Type: POINT The drop point. The coordinates depend on fNC. Read more on docs.microsoft.com. Type: BOOL A nonclient area flag. If this member is TRUE, pt specifies the screen coordinates of a point in a window's nonclient area. If it is FALSE, pt specifies the client coordinates of a point in the client area. Read more on docs.microsoft.com. Type: BOOL A value that indicates whether the file contains ANSI or Unicode characters. If the value is zero, the file contains ANSI characters. Otherwise, it contains Unicode characters. Read more on docs.microsoft.com. Represents a Win32 handle that can be closed with . Contains extern methods from "KERNEL32.dll". Contains extern methods from "rstrtmgr.dll". Contains extern methods from "USER32.dll". Closes an open object handle. A valid handle to an open object. If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. If the application is running under a debugger, the function will throw an exception if it receives either a handle value that is not valid or a pseudo-handle value. This can happen if you close a handle twice, or if you call CloseHandle on a handle returned by the FindFirstFile function instead of calling the FindClose function. The CloseHandle function closes handles to the following objects: This doc was truncated. Read more on docs.microsoft.com. Frees the specified global memory object and invalidates its handle. A handle to the global memory object. This handle is returned by either the GlobalAlloc or GlobalReAlloc function. It is not safe to free memory allocated with LocalAlloc. Read more on docs.microsoft.com. If the function succeeds, the return value is NULL. If the function fails, the return value is equal to a handle to the global memory object. To get extended error information, call GetLastError. If the process examines or modifies the memory after it has been freed, heap corruption may occur or an access violation exception (EXCEPTION_ACCESS_VIOLATION) may be generated. The GlobalFree function will free a locked memory object. A locked memory object has a lock count greater than zero. The GlobalLock function locks a global memory object and increments the lock count by one. The GlobalUnlock function unlocks it and decrements the lock count by one. To get the lock count of a global memory object, use the GlobalFlags function. If an application is running under a debug version of the system, GlobalFree will issue a message that tells you that a locked object is being freed. If you are debugging the application, GlobalFree will enter a breakpoint just before freeing a locked object. This allows you to verify the intended behavior, then continue execution. Read more on docs.microsoft.com. Allocates the specified number of bytes from the heap. (GlobalAlloc) The number of bytes to allocate. If this parameter is zero and the uFlags parameter specifies GMEM_MOVEABLE, the function returns a handle to a memory object that is marked as discarded. If the function succeeds, the return value is a handle to the newly allocated memory object. If the function fails, the return value is NULL. To get extended error information, call GetLastError. Windows memory management does not provide a separate local heap and global heap. Therefore, the GlobalAlloc and LocalAlloc functions are essentially the same. The movable-memory flags GHND and GMEM_MOVABLE add unnecessary overhead and require locking to be used safely. They should be avoided unless documentation specifically states that they should be used. New applications should use the heap functions to allocate and manage memory unless the documentation specifically states that a global function should be used. For example, the global functions are still used with Dynamic Data Exchange (DDE), the clipboard functions, and OLE data objects. If the GlobalAlloc function succeeds, it allocates at least the amount of memory requested. If the actual amount allocated is greater than the amount requested, the process can use the entire amount. To determine the actual number of bytes allocated, use the GlobalSize function. If the heap does not contain sufficient free space to satisfy the request, GlobalAlloc returns NULL. Because NULL is used to indicate an error, virtual address zero is never allocated. It is, therefore, easy to detect the use of a NULL pointer. Memory allocated with this function is guaranteed to be aligned on an 8-byte boundary. To execute dynamically generated code, use the VirtualAlloc function to allocate memory and the VirtualProtect function to grant PAGE_EXECUTE access. To free the memory, use the GlobalFree function. It is not safe to free memory allocated with GlobalAlloc using LocalFree. Read more on docs.microsoft.com. Locks a global memory object and returns a pointer to the first byte of the object's memory block. A handle to the global memory object. This handle is returned by either the GlobalAlloc or GlobalReAlloc function. Read more on docs.microsoft.com. If the function succeeds, the return value is a pointer to the first byte of the memory block. If the function fails, the return value is NULL. To get extended error information, call GetLastError. The internal data structures for each memory object include a lock count that is initially zero. For movable memory objects, GlobalLock increments the count by one, and the GlobalUnlock function decrements the count by one. Each successful call that a process makes to GlobalLock for an object must be matched by a corresponding call to GlobalUnlock. Locked memory will not be moved or discarded, unless the memory object is reallocated by using the GlobalReAlloc function. The memory block of a locked memory object remains locked until its lock count is decremented to zero, at which time it can be moved or discarded. Memory objects allocated with GMEM_FIXED always have a lock count of zero. For these objects, the value of the returned pointer is equal to the value of the specified handle. If the specified memory block has been discarded or if the memory block has a zero-byte size, this function returns NULL. Discarded objects always have a lock count of zero. Read more on docs.microsoft.com. Decrements the lock count associated with a memory object that was allocated with GMEM_MOVEABLE. A handle to the global memory object. This handle is returned by either the GlobalAlloc or GlobalReAlloc function. Read more on docs.microsoft.com. If the memory object is still locked after decrementing the lock count, the return value is a nonzero value. If the memory object is unlocked after decrementing the lock count, the function returns zero and GetLastError returns NO_ERROR. If the function fails, the return value is zero and GetLastError returns a value other than NO_ERROR. The internal data structures for each memory object include a lock count that is initially zero. For movable memory objects, the GlobalLock function increments the count by one, and GlobalUnlock decrements the count by one. For each call that a process makes to GlobalLock for an object, it must eventually call GlobalUnlock. Locked memory will not be moved or discarded, unless the memory object is reallocated by using the GlobalReAlloc function. The memory block of a locked memory object remains locked until its lock count is decremented to zero, at which time it can be moved or discarded. Memory objects allocated with GMEM_FIXED always have a lock count of zero. If the specified memory block is fixed memory, this function returns TRUE. If the memory object is already unlocked, GlobalUnlock returns FALSE and GetLastError reports ERROR_NOT_LOCKED. A process should not rely on the return value to determine the number of times it must subsequently call GlobalUnlock for a memory object. Read more on docs.microsoft.com. Establishes a hard link between an existing file and a new file. (Unicode) The name of the new file. This parameter may include the path but cannot specify the name of a directory. In the ANSI version of this function, the name is limited to MAX_PATH characters. To extend this limit to 32,767 wide characters, call the Unicode version of the function and prepend "\\\\?\\" to the path. For more information, see Naming a File. If you pass a name longer than MAX_PATH characters to the ANSI version of this function or to the Unicode version of this function without prepending "\\\\?\\" to the path, the function returns ERROR_PATH_NOT_FOUND.
Tip  Starting with Windows 10, version 1607, for the unicode version of this function (CreateHardLinkW), you can opt-in to remove the MAX_PATH limitation without prepending "\\?\". See the "Maximum Path Length Limitation" section of Naming Files, Paths, and Namespaces for details.
 
Read more on docs.microsoft.com. The name of the existing file. This parameter may include the path cannot specify the name of a directory. In the ANSI version of this function, the name is limited to MAX_PATH characters. To extend this limit to 32,767 wide characters, call the Unicode version of the function and prepend "\\\\?\\" to the path. For more information, see Naming a File. If you pass a name longer than MAX_PATH characters to the ANSI version of this function or to the Unicode version of this function without prepending "\\\\?\\" to the path, the function returns ERROR_PATH_NOT_FOUND.
Tip  Starting with Windows 10, version 1607, for the unicode version of this function (CreateHardLinkW), you can opt-in to remove the MAX_PATH limitation without prepending "\\?\". See the "Maximum Path Length Limitation" section of Naming Files, Paths, and Namespaces for details.
 
Read more on docs.microsoft.com. Reserved; must be NULL. If the function succeeds, the return value is nonzero. If the function fails, the return value is zero (0). To get extended error information, call GetLastError. The maximum number of hard links that can be created with this function is 1023 per file. If more than 1023 links are created for a file, an error results. If you pass a name longer than MAX_PATH characters to the *lpFileName* or *lpExistingFileName* parameter of the ANSI version of this function or to the Unicode version of this function without prepending "\\\\?\\" to the path, the function returns ERROR_PATH_NOT_FOUND. Any directory entry for a file that is created with CreateFile or CreateHardLink is a hard link to an associated file. An additional hard link that is created with the CreateHardLink function allows you to have multiple directory entries for a file, that is, multiple hard links to the same file, which can be different names in the same directory, or the same or different names in different directories. However, all hard links to a file must be on the same volume. Because hard links are only directory entries for a file, many changes to that file are instantly visible to applications that access it through the hard links that reference it. However, the directory entry size and attribute information is updated only for the link through which the change was made. The security descriptor belongs to the file to which a hard link points. The link itself is only a directory entry, and does not have a security descriptor. Therefore, when you change the security descriptor of a hard link, you a change the security descriptor of the underlying file, and all hard links that point to the file allow the newly specified access. You cannot give a file different security descriptors on a per-hard-link basis. This function does not modify the security descriptor of the file to be linked to, even if security descriptor information is passed in the lpSecurityAttributes parameter. Use DeleteFile to delete hard links. You can delete them in any order regardless of the order in which they are created. Flags, attributes, access, and sharing that are specified in CreateFile operate on a per-file basis. That is, if you open a file that does not allow sharing, another application cannot share the file by creating a new hard link to the file. When you create a hard link on the NTFS file system, the file attribute information in the directory entry is refreshed only when the file is opened, or when GetFileInformationByHandle is called with the handle of a specific file. Symbolic link behavior—If the path points to a symbolic link, the function creates a hard link to the symbolic link. In Windows 8 and Windows Server 2012, this function is supported by the following technologies. This doc was truncated. Read more on docs.microsoft.com.
Starts a new Restart Manager session. A pointer to the handle of a Restart Manager session. The session handle can be passed in subsequent calls to the Restart Manager API. Reserved. This parameter should be 0. A null-terminated string that contains the session key to the new session. The string must be allocated before calling the RmStartSession function. This is the most recent error received. The function can return one of the system error codes that are defined in Winerror.h. This doc was truncated. The RmStartSession function returns an error if a session with the same session key already exists. The RmStartSession function should be called by the primary installer that controls the user interface or that controls the installation sequence of multiple patches in an update. A secondary installer can join an existing Restart Manager session by calling the RmJoinSession function with the session handle and session key returned from the RmStartSession function call of the primary installer. Read more on docs.microsoft.com. Ends the Restart Manager session. A handle to an existing Restart Manager session. This is the most recent error received. The function can return one of the system error codes that are defined in Winerror.h. This doc was truncated. Learn more about this API from docs.microsoft.com. Registers resources to a Restart Manager session. A handle to an existing Restart Manager session. The number of files being registered. An array of null-terminated strings of full filename paths. This parameter can be NULL if nFiles is 0. The number of processes being registered. An array of RM_UNIQUE_PROCESS structures. This parameter can be NULL if nApplications is 0. The number of services to be registered. An array of null-terminated strings of service short names. This parameter can be NULL if nServices is 0. This is the most recent error received. The function can return one of the system error codes that are defined in Winerror.h. This doc was truncated. Each call to the RmRegisterResources function performs relatively expensive write operations. Do not call this function once per file, instead group related files together into components and register these together. Gets a list of all applications and services that are currently using resources that have been registered with the Restart Manager session. A handle to an existing Restart Manager session. A pointer to an array size necessary to receive RM_PROCESS_INFO structures required to return information for all affected applications and services. A pointer to the total number of RM_PROCESS_INFO structures in an array and number of structures filled. An array of RM_PROCESS_INFO structures that list the applications and services using resources that have been registered with the session. Pointer to location that receives a value of the RM_REBOOT_REASON enumeration that describes the reason a system restart is needed. This is the most recent error received. The function can return one of the system error codes that are defined in Winerror.h. This doc was truncated. Learn more about this API from docs.microsoft.com. Opens the clipboard for examination and prevents other applications from modifying the clipboard content. Type: HWND A handle to the window to be associated with the open clipboard. If this parameter is NULL, the open clipboard is associated with the current task. Read more on docs.microsoft.com. Type: BOOL If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. OpenClipboard fails if another window has the clipboard open. An application should call the CloseClipboard function after every successful call to OpenClipboard. The window identified by the hWndNewOwner parameter does not become the clipboard owner unless the EmptyClipboard function is called. If an application calls OpenClipboard with hwnd set to NULL, EmptyClipboard sets the clipboard owner to NULL; this causes SetClipboardData to fail. Read more on docs.microsoft.com. Places data on the clipboard in a specified clipboard format. Type: UINT The clipboard format. This parameter can be a registered format or any of the standard clipboard formats. For more information, see Standard Clipboard Formats and Registered Clipboard Formats. Read more on docs.microsoft.com. Type: HANDLE A handle to the data in the specified format. This parameter can be NULL, indicating that the window provides data in the specified clipboard format (renders the format) upon request; this is known as [delayed rendering](/windows/win32/dataxchg/clipboard-operations#delayed-rendering). If a window delays rendering, it must process the [WM_RENDERFORMAT](/windows/win32/dataxchg/wm-renderformat) and [WM_RENDERALLFORMATS](/windows/win32/dataxchg/wm-renderallformats) messages. If SetClipboardData succeeds, the system owns the object identified by the hMem parameter. The application may not write to or free the data once ownership has been transferred to the system, but it can lock and read from the data until the CloseClipboard function is called. (The memory must be unlocked before the Clipboard is closed.) If the hMem parameter identifies a memory object, the object must have been allocated using the function with the GMEM_MOVEABLE flag. Read more on docs.microsoft.com. Type: HANDLE If the function succeeds, the return value is the handle to the data. If the function fails, the return value is NULL. To get extended error information, call GetLastError. Windows 8: Bitmaps to be shared with Windows Store app apps must be in the CF_BITMAP format (device-dependent bitmap). If an application calls SetClipboardData in response to WM_RENDERFORMAT or WM_RENDERALLFORMATS, the application should not use the handle after SetClipboardData has been called. If an application calls OpenClipboard with hwnd set to NULL, EmptyClipboard sets the clipboard owner to NULL; this causes SetClipboardData to fail. The system performs implicit data format conversions between certain clipboard formats when an application calls the GetClipboardData function. For example, if the CF_OEMTEXT format is on the clipboard, a window can retrieve data in the CF_TEXT format. The format on the clipboard is converted to the requested format on demand. For more information, see Synthesized Clipboard Formats. Read more on docs.microsoft.com. Closes the clipboard. Type: BOOL If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. When the window has finished examining or changing the clipboard, close the clipboard by calling CloseClipboard. This enables other windows to access the clipboard. Do not place an object on the clipboard after calling CloseClipboard. Read more on docs.microsoft.com. The SECURITY_ATTRIBUTES structure contains the security descriptor for an object and specifies whether the handle retrieved by specifying this structure is inheritable. The size, in bytes, of this structure. Set this value to the size of the **SECURITY\_ATTRIBUTES** structure. A pointer to a [**SECURITY\_DESCRIPTOR**](../winnt/ns-winnt-security_descriptor.md) structure that controls access to the object. If the value of this member is **NULL**, the object is assigned the default security descriptor associated with the [*access token*](/windows/win32/secauthz/access-tokens) of the calling process. This is not the same as granting access to everyone by assigning a **NULL** [*discretionary access control list*](/windows/win32/secauthz/dacls-and-aces) (DACL). By default, the default DACL in the access token of a process allows access only to the user represented by the access token. For information about creating a security descriptor, see [Creating a Security Descriptor](/windows/win32/secauthz/creating-a-security-descriptor-for-a-new-object-in-c--). Read more on docs.microsoft.com. A Boolean value that specifies whether the returned handle is inherited when a new process is created. If this member is **TRUE**, the new process inherits the handle.