Training
Module
Explore Windows architecture - Training
This module provides information about the operating system’s architecture and supported devices. It also describes the desktop support environment and troubleshooting terminology.
This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Overview of the Backup technology.
To develop Backup, you need these headers:
For programming guidance for this technology, see:
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. |
_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. |
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. |
Training
Module
Explore Windows architecture - Training
This module provides information about the operating system’s architecture and supported devices. It also describes the desktop support environment and troubleshooting terminology.