Backup

Overview of the Backup technology.

To develop Backup, you need these headers:

For programming guidance for this technology, see:

Enumerations

 
JOB_OBJECT_NET_RATE_CONTROL_FLAGS

Specifies types of scheduling policies for network rate control.
LOGICAL_PROCESSOR_RELATIONSHIP

Represents the relationship between the processor set identified in the corresponding SYSTEM_LOGICAL_PROCESSOR_INFORMATION or SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX structure.
PROCESS_MITIGATION_POLICY

Represents the different process mitigation policies.
PROCESSOR_CACHE_TYPE

Represents the type of processor cache identified in the corresponding CACHE_DESCRIPTOR structure.

Functions

 
_InlineInterlockedAdd

Performs an atomic addition operation on the specified LONG values. The operation is performed with acquire memory ordering semantics.
_InlineInterlockedAdd64

Performs an atomic addition operation on the specified LONG64 values.
_interlockedbittestandreset

Tests the specified bit of the specified LONG value and sets it to 0. The operation is atomic.
_interlockedbittestandreset64

Tests the specified bit of the specified LONG64 value and sets it to 0. The operation is atomic.
_interlockedbittestandset

Tests the specified bit of the specified LONG value and sets it to 1. The operation is atomic.
_interlockedbittestandset64

Tests the specified bit of the specified LONG64 value and sets it to 1. The operation is atomic.
AddIntegrityLabelToBoundaryDescriptor

Adds a new required security identifier (SID) to the specified boundary descriptor.
BackupRead

Back up a file or directory, including the security information.
BackupSeek

Seeks forward in a data stream initially accessed by using the BackupRead or BackupWrite function.
BackupWrite

Restore a file or directory that was backed up using BackupRead.
BindIoCompletionCallback

Associates the I/O completion port owned by the thread pool with the specified file handle. On completion of an I/O request involving this file, a non-I/O worker thread will execute the specified callback function.
ConvertFiberToThread

Converts the current fiber into a thread.
ConvertThreadToFiber

Converts the current thread into a fiber. You must convert a thread into a fiber before you can schedule other fibers. (ConvertThreadToFiber)
ConvertThreadToFiberEx

Converts the current thread into a fiber. You must convert a thread into a fiber before you can schedule other fibers. (ConvertThreadToFiberEx)
CreateBoundaryDescriptorA

The CreateBoundaryDescriptorA (ANSI) function (winbase.h) creates a boundary descriptor.
CreateFiber

Allocates a fiber object, assigns it a stack, and sets up execution to begin at the specified start address, typically the fiber function. This function does not schedule the fiber. (CreateFiber)
CreateFiberEx

Allocates a fiber object, assigns it a stack, and sets up execution to begin at the specified start address, typically the fiber function. This function does not schedule the fiber. (CreateFiberEx)
CreateJobObjectA

Creates or opens a job object. (CreateJobObjectA)
CreateProcessWithLogonW

Creates a new process and its primary thread. Then the new process runs the specified executable file in the security context of the specified credentials (user, domain, and password). It can optionally load the user profile for a specified user.
CreateProcessWithTokenW

Creates a new process and its primary thread. The new process runs in the security context of the specified token. It can optionally load the user profile for the specified user.
CreateSemaphoreA

Creates or opens a named or unnamed semaphore object. (CreateSemaphoreA)
CreateSemaphoreExA

Creates or opens a named or unnamed semaphore object and returns a handle to the object. (CreateSemaphoreExA)
CreateTapePartition

Reformats a tape.
CreateUmsCompletionList

Creates a user-mode scheduling (UMS) completion list.
CreateUmsThreadContext

Creates a user-mode scheduling (UMS) thread context to represent a UMS worker thread.
DeleteFiber

Deletes an existing fiber.
DeleteUmsCompletionList

Deletes the specified user-mode scheduling (UMS) completion list. The list must be empty.
DeleteUmsThreadContext

Deletes the specified user-mode scheduling (UMS) thread context. The thread must be terminated.
DequeueUmsCompletionListItems

Retrieves user-mode scheduling (UMS) worker threads from the specified UMS completion list.
DestroyThreadpoolEnvironment

Deletes the specified callback environment. Call this function when the callback environment is no longer needed for creating new thread pool objects. (DestroyThreadpoolEnvironment)
EnterUmsSchedulingMode

Converts the calling thread into a user-mode scheduling (UMS) scheduler thread.
EraseTape

Erases all or part of a tape.
ExecuteUmsThread

Runs the specified UMS worker thread.
GetActiveProcessorCount

Returns the number of active processors in a processor group or in the system.
GetActiveProcessorGroupCount

Returns the number of active processor groups in the system.
GetCurrentFiber

Retrieves the address of the current fiber.
GetCurrentUmsThread

Returns the user-mode scheduling (UMS) thread context of the calling UMS thread.
GetEnvironmentVariable

The GetEnvironmentVariable function (winbase.h) retrieves the contents of the specified variable from the environment block of the calling process.
GetFiberData

Retrieves the fiber data associated with the current fiber.
GetMaximumProcessorCount

Returns the maximum number of logical processors that a processor group or the system can have.
GetMaximumProcessorGroupCount

Returns the maximum number of processor groups that the system can have.
GetNextUmsListItem

Returns the next user-mode scheduling (UMS) thread context in a list of thread contexts.
GetNumaAvailableMemoryNode

Retrieves the amount of memory available in the specified node.
GetNumaAvailableMemoryNodeEx

Retrieves the amount of memory that is available in a node specified as a USHORT value.
GetNumaNodeNumberFromHandle

Retrieves the NUMA node associated with the file or I/O device represented by the specified file handle.
GetNumaNodeProcessorMask

Retrieves the processor mask for the specified node.
GetNumaProcessorNode

Retrieves the node number for the specified processor.
GetNumaProcessorNodeEx

Retrieves the node number as a USHORT value for the specified logical processor.
GetNumaProximityNode

Retrieves the NUMA node number that corresponds to the specified proximity domain identifier.
GetProcessAffinityMask

Retrieves the process affinity mask for the specified process and the system affinity mask for the system.
GetProcessIoCounters

Retrieves accounting information for all I/O operations performed by the specified process.
GetTapeParameters

Retrieves information that describes the tape or the tape drive.
GetTapePosition

Retrieves the current address of the tape, in logical or absolute blocks.
GetTapeStatus

Determines whether the tape device is ready to process tape commands.
GetUmsCompletionListEvent

Retrieves a handle to the event associated with the specified user-mode scheduling (UMS) completion list.
GetUmsSystemThreadInformation

Queries whether the specified thread is a UMS scheduler thread, a UMS worker thread, or a non-UMS thread.
HasOverlappedIoCompleted

Provides a high performance test operation that can be used to poll for the completion of an outstanding I/O operation.
InitializeThreadpoolEnvironment

Initializes a callback environment.
InterlockedAdd

Performs an atomic addition operation on the specified LONG values.
InterlockedAnd

Performs an atomic AND operation on the specified LONG values.
InterlockedAnd16

Performs an atomic AND operation on the specified SHORT values.
InterlockedAnd64

Performs an atomic AND operation on the specified LONGLONG values.
InterlockedAnd8

Performs an atomic AND operation on the specified char values.
InterlockedCompareExchange

Performs an atomic compare-and-exchange operation on the specified values. The function compares two specified 32-bit values and exchanges with another 32-bit value based on the outcome of the comparison.
InterlockedCompareExchange128

Performs an atomic compare-and-exchange operation on the specified values. The function compares two specified 128-bit values and exchanges with another 128-bit value based on the outcome of the comparison.
InterlockedCompareExchange16

Performs an atomic compare-and-exchange operation on the specified values. The function compares two specified 16-bit values and exchanges with another 16-bit value based on the outcome of the comparison.
InterlockedCompareExchange64

Performs an atomic compare-and-exchange operation on the specified values. The function compares two specified 64-bit values and exchanges with another 64-bit value based on the outcome of the comparison.
InterlockedCompareExchangePointer

Performs an atomic compare-and-exchange operation on the specified values. The function compares two specified pointer values and exchanges with another pointer value based on the outcome of the comparison.
InterlockedDecrement

Decrements (decreases by one) the value of the specified 32-bit variable as an atomic operation.
InterlockedDecrement16

Decrements (decreases by one) the value of the specified 16-bit variable as an atomic operation.
InterlockedDecrement64

Decrements (decreases by one) the value of the specified 64-bit variable as an atomic operation.
InterlockedExchange

Sets a 32-bit variable to the specified value as an atomic operation.
InterlockedExchange16

Sets a 16-bit variable to the specified value as an atomic operation.
InterlockedExchange64

Sets a 64-bit variable to the specified value as an atomic operation.
InterlockedExchange8

Sets an 8-bit variable to the specified value as an atomic operation.
InterlockedExchangeAdd

Performs an atomic addition of two 32-bit values.
InterlockedExchangeAdd64

Performs an atomic addition of two 64-bit values.
InterlockedExchangePointer

Atomically exchanges a pair of addresses.
InterlockedExchangeSubtract

Performs an atomic subtraction of two values.
InterlockedIncrement

Increments (increases by one) the value of the specified 32-bit variable as an atomic operation.
InterlockedIncrement16

Increments (increases by one) the value of the specified 16-bit variable as an atomic operation.
InterlockedIncrement64

Increments (increases by one) the value of the specified 64-bit variable as an atomic operation.
InterlockedOr

Performs an atomic OR operation on the specified LONG values.
InterlockedOr16

Performs an atomic OR operation on the specified SHORT values.
InterlockedOr64

Performs an atomic OR operation on the specified LONGLONG values.
InterlockedOr8

Performs an atomic OR operation on the specified char values.
InterlockedXor

Performs an atomic XOR operation on the specified LONG values.
InterlockedXor16

Performs an atomic XOR operation on the specified SHORT values.
InterlockedXor64

Performs an atomic XOR operation on the specified LONGLONG values.
InterlockedXor8

Performs an atomic XOR operation on the specified char values.
MemoryBarrier

Creates a hardware memory barrier (fence) that prevents the CPU from re-ordering read and write operations. It may also prevent the compiler from re-ordering read and write operations.
OpenJobObjectA

Opens an existing job object. (OpenJobObjectA)
PAPCFUNC

An application-defined completion routine. Specify this address when calling the QueueUserAPC function.
PFIBER_START_ROUTINE

An application-defined function used with the CreateFiber function. It serves as the starting address for a fiber.
PFLS_CALLBACK_FUNCTION

An application-defined function. If the FLS slot is in use, FlsCallback is called on fiber deletion, thread exit, and when an FLS index is freed.
PreFetchCacheLine

Indicates to the processor that a cache line will be needed in the near future.
PrepareTape

Prepares the tape to be accessed or removed.
PulseEvent

Sets the specified event object to the signaled state and then resets it to the nonsignaled state after releasing the appropriate number of waiting threads.
QueryFullProcessImageNameA

Retrieves the full name of the executable image for the specified process. (ANSI)
QueryFullProcessImageNameW

Retrieves the full name of the executable image for the specified process. (Unicode)
QueryUmsThreadInformation

Retrieves information about the specified user-mode scheduling (UMS) worker thread.
RegisterWaitForSingleObject

Directs a wait thread in the thread pool to wait on the object.
RTL_UMS_SCHEDULER_ENTRY_POINT

The application-defined user-mode scheduling (UMS) scheduler entry point function associated with a UMS completion list.
RtlFirstEntrySList

Retrieves the first entry in a singly linked list. Access to the list is synchronized on a multiprocessor system.
RtlInitializeSListHead

Initializes the head of a singly linked list. (RtlInitializeSListHead)
RtlInterlockedFlushSList

Removes all items from a singly linked list. Access to the list is synchronized on a multiprocessor system. (RtlInterlockedFlushSList)
RtlInterlockedPopEntrySList

Removes an item from the front of a singly linked list. Access to the list is synchronized on a multiprocessor system. (RtlInterlockedPopEntrySList)
RtlInterlockedPushEntrySList

Inserts an item at the front of a singly linked list. Access to the list is synchronized on a multiprocessor system. (RtlInterlockedPushEntrySList)
RtlQueryDepthSList

Retrieves the number of entries in the specified singly linked list. (RtlQueryDepthSList)
SetEnvironmentVariable

The SetEnvironmentVariable function (winbase.h) sets the contents of the specified environment variable for the current process.
SetProcessAffinityMask

Sets a processor affinity mask for the threads of the specified process.
SetTapeParameters

Specifies the block size of a tape or configures the tape device.
SetTapePosition

Sets the tape position on the specified device.
SetThreadAffinityMask

Sets a processor affinity mask for the specified thread.
SetThreadpoolCallbackCleanupGroup

Associates the specified cleanup group with the specified callback environment. (SetThreadpoolCallbackCleanupGroup)
SetThreadpoolCallbackLibrary

Ensures that the specified DLL remains loaded as long as there are outstanding callbacks. (SetThreadpoolCallbackLibrary)
SetThreadpoolCallbackPersistent

Specifies that the callback should run on a persistent thread. (SetThreadpoolCallbackPersistent)
SetThreadpoolCallbackPool

Sets the thread pool to be used when generating callbacks.
SetThreadpoolCallbackPriority

Specifies the priority of a callback function relative to other work items in the same thread pool. (SetThreadpoolCallbackPriority)
SetThreadpoolCallbackRunsLong

Indicates that callbacks associated with this callback environment may not return quickly. (SetThreadpoolCallbackRunsLong)
SetUmsThreadInformation

Sets application-specific context information for the specified user-mode scheduling (UMS) worker thread.
SwitchToFiber

Schedules a fiber. The function must be called on a fiber.
TpDestroyCallbackEnviron

Deletes the specified callback environment. Call this function when the callback environment is no longer needed for creating new thread pool objects. (TpDestroyCallbackEnviron)
TpInitializeCallbackEnviron

Initializes a callback environment for the thread pool.
TpSetCallbackActivationContext

Assigns an activation context to the callback environment.
TpSetCallbackCleanupGroup

Associates the specified cleanup group with the specified callback environment. (TpSetCallbackCleanupGroup)
TpSetCallbackFinalizationCallback

Indicates a function to call when the callback environment is finalized.
TpSetCallbackLongFunction

Indicates that callbacks associated with this callback environment may not return quickly. (TpSetCallbackLongFunction)
TpSetCallbackNoActivationContext

Indicates that the callback environment has no activation context.
TpSetCallbackPersistent

Specifies that the callback should run on a persistent thread. (TpSetCallbackPersistent)
TpSetCallbackPriority

Specifies the priority of a callback function relative to other work items in the same thread pool. (TpSetCallbackPriority)
TpSetCallbackRaceWithDll

Ensures that the specified DLL remains loaded as long as there are outstanding callbacks. (TpSetCallbackRaceWithDll)
TpSetCallbackThreadpool

Assigns a thread pool to a callback environment.
UmsThreadYield

Yields control to the user-mode scheduling (UMS) scheduler thread on which the calling UMS worker thread is running.
UnregisterWait

Cancels a registered wait operation issued by the RegisterWaitForSingleObject function. (UnregisterWait)
WinExec

Runs the specified application.
WriteTapemark

Writes a specified number of filemarks, setmarks, short filemarks, or long filemarks to a tape device.
YieldProcessor

Signals to the processor to give resources to threads that are waiting for them.

Structures

 
CACHE_DESCRIPTOR

Describes the cache attributes.
CACHE_RELATIONSHIP

Describes cache attributes. This structure is used with the GetLogicalProcessorInformationEx function.
GROUP_AFFINITY

Represents a processor group-specific affinity, such as the affinity of a thread.
GROUP_RELATIONSHIP

Represents information about processor groups. This structure is used with the GetLogicalProcessorInformationEx function.
IO_COUNTERS

Contains I/O accounting information for a process or a job object.
JOBOBJECT_ASSOCIATE_COMPLETION_PORT

Contains information used to associate a completion port with a job.
JOBOBJECT_BASIC_ACCOUNTING_INFORMATION

Contains basic accounting information for a job object.
JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION

Contains basic accounting and I/O accounting information for a job object.
JOBOBJECT_BASIC_LIMIT_INFORMATION

Contains basic limit information for a job object.
JOBOBJECT_BASIC_PROCESS_ID_LIST

Contains the process identifier list for a job object.
JOBOBJECT_BASIC_UI_RESTRICTIONS

Contains basic user-interface restrictions for a job object.
JOBOBJECT_CPU_RATE_CONTROL_INFORMATION

Contains CPU rate control information for a job object. This structure is used by the SetInformationJobObject and QueryInformationJobObject functions with the JobObjectCpuRateControlInformation information class.
JOBOBJECT_END_OF_JOB_TIME_INFORMATION

Specifies the action the system will perform when an end-of-job time limit is exceeded.
JOBOBJECT_EXTENDED_LIMIT_INFORMATION

Contains basic and extended limit information for a job object.
JOBOBJECT_LIMIT_VIOLATION_INFORMATION

Contains information about resource notification limits that have been exceeded for a job object. This structure is used with the QueryInformationJobObject function with the JobObjectLimitViolationInformation information class.
JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2

Contains extended information about resource notification limits that have been exceeded for a job object. This structure is used with the QueryInformationJobObject function with the JobObjectLimitViolationInformation2 information class.
JOBOBJECT_NET_RATE_CONTROL_INFORMATION

Contains information used to control the network traffic for a job. This structure is used by the SetInformationJobObject and QueryInformationJobObject functions with the JobObjectNetRateControlInformation information class.
JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION

Contains information about notification limits for a job object. This structure is used by the SetInformationJobObject and QueryInformationJobObject functions with the JobObjectNotificationLimitInformation information class.
JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2

Contains extended information about notification limits for a job object. This structure is used by the SetInformationJobObject and QueryInformationJobObject functions with the JobObjectNotificationLimitInformation2 information class.
JOBOBJECT_SECURITY_LIMIT_INFORMATION

Contains the security limitations for a job object.
NUMA_NODE_RELATIONSHIP

Represents information about a NUMA node in a processor group. This structure is used with the GetLogicalProcessorInformationEx function.
PROCESS_MITIGATION_ASLR_POLICY

Contains process mitigation policy settings for Address Space Randomization Layout (ASLR).
PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY

Contains process mitigation policy settings for the loading of images depending on the signatures for the image.
PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY

Contains process mitigation policy settings for Control Flow Guard (CFG).
PROCESS_MITIGATION_DEP_POLICY

Contains process mitigation policy settings for data execution prevention (DEP).
PROCESS_MITIGATION_DYNAMIC_CODE_POLICY

Contains process mitigation policy settings for restricting dynamic code generation and modification.
PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY

Contains process mitigation policy settings for legacy extension point DLLs.
PROCESS_MITIGATION_FONT_DISABLE_POLICY

Contains process mitigation policy settings for the loading of non-system fonts.
PROCESS_MITIGATION_IMAGE_LOAD_POLICY

Contains process mitigation policy settings for the loading of images from a remote device.
PROCESS_MITIGATION_REDIRECTION_TRUST_POLICY

Contains process mitigation policy settings for the ???.
PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY

This data structure provides the status of process policies that are related to the mitigation of side channels. This can include side channel attacks involving speculative execution and page combining.
PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY

Used to impose new behavior on handle references that are not valid.
PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY

Used to impose restrictions on what system calls can be invoked by a process.
PROCESSOR_GROUP_INFO

Represents the number and affinity of processors in a processor group.
PROCESSOR_NUMBER

Represents a logical processor in a processor group.
PROCESSOR_RELATIONSHIP

Represents information about affinity within a processor group. This structure is used with the GetLogicalProcessorInformationEx function.
SINGLE_LIST_ENTRY

Represents an item in a singly linked list.S
SLIST_ENTRY

Represents an item in a singly linked list. (SLIST_ENTRY)
STARTUPINFOEXA

Specifies the window station, desktop, standard handles, and attributes for a new process. It is used with the CreateProcess and CreateProcessAsUser functions. (ANSI)
STARTUPINFOEXW

Specifies the window station, desktop, standard handles, and attributes for a new process. It is used with the CreateProcess and CreateProcessAsUser functions. (Unicode)
SYSTEM_CPU_SET_INFORMATION

This structure is returned by GetSystemCpuSetInformation. It is used to enumerate the CPU Sets on the system and determine their current state.
SYSTEM_LOGICAL_PROCESSOR_INFORMATION

Describes the relationship between the specified processor set. This structure is used with the GetLogicalProcessorInformation function.
SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX

Contains information about the relationships of logical processors and related hardware. The GetLogicalProcessorInformationEx function uses this structure.
TAPE_ERASE

Describes the partition to be erased.
TAPE_GET_DRIVE_PARAMETERS

Describes the tape drive. It is used by the GetTapeParameters function.
TAPE_GET_MEDIA_PARAMETERS

Describes the tape in the tape drive. It is used by the GetTapeParametersfunction.
TAPE_GET_POSITION

Describes the position of the tape.
TAPE_PREPARE

Describes how to prepare the tape.
TAPE_SET_DRIVE_PARAMETERS

Describes the tape drive. It is used by the SetTapeParametersfunction.
TAPE_SET_MEDIA_PARAMETERS

Describes the tape in the tape drive. It is used by the SetTapeParametersfunction.
TAPE_SET_POSITION

Describes how and where to position the tape.
TAPE_WRITE_MARKS

Describes the type and number of tapemarks to write.
UMS_CREATE_THREAD_ATTRIBUTES

Specifies attributes for a user-mode scheduling (UMS) worker thread.
UMS_SCHEDULER_STARTUP_INFO

Specifies attributes for a user-mode scheduling (UMS) scheduler thread.
UMS_SYSTEM_THREAD_INFORMATION

Specifies a UMS scheduler thread, UMS worker thread, or non-UMS thread. The GetUmsSystemThreadInformation function uses this structure.
WIN32_STREAM_ID

Contains stream data.