diff options
Diffstat (limited to 'lib')
917 files changed, 30803 insertions, 11129 deletions
diff --git a/lib/compiler/objcopy.zig b/lib/compiler/objcopy.zig index 67926be335..7772b8f290 100644 --- a/lib/compiler/objcopy.zig +++ b/lib/compiler/objcopy.zig @@ -1285,7 +1285,7 @@ const ElfFileHelper = struct { for (consolidated.items) |cmd| { switch (cmd) { .write_data => |data| { - var iovec = [_]std.os.iovec_const{.{ .iov_base = data.data.ptr, .iov_len = data.data.len }}; + var iovec = [_]std.posix.iovec_const{.{ .iov_base = data.data.ptr, .iov_len = data.data.len }}; try out_file.pwritevAll(&iovec, data.out_offset); }, .copy_range => |range| { diff --git a/lib/compiler/resinator/main.zig b/lib/compiler/resinator/main.zig index b01d720c8c..10ffafcfc7 100644 --- a/lib/compiler/resinator/main.zig +++ b/lib/compiler/resinator/main.zig @@ -26,7 +26,7 @@ pub fn main() !void { if (args.len < 2) { try renderErrorMessage(stderr.writer(), stderr_config, .err, "expected zig lib dir as first argument", .{}); - std.os.exit(1); + std.process.exit(1); } const zig_lib_dir = args[1]; var cli_args = args[2..]; @@ -62,7 +62,7 @@ pub fn main() !void { var options = cli.parse(allocator, cli_args, &cli_diagnostics) catch |err| switch (err) { error.ParseError => { try error_handler.emitCliDiagnostics(allocator, cli_args, &cli_diagnostics); - std.os.exit(1); + std.process.exit(1); }, else => |e| return e, }; @@ -117,7 +117,7 @@ pub fn main() !void { }, } try error_handler.emitMessage(allocator, .note, "to disable auto includes, use the option /:auto-includes none", .{}); - std.os.exit(1); + std.process.exit(1); }, }; @@ -153,16 +153,16 @@ pub fn main() !void { preprocess.preprocess(&comp, preprocessed_buf.writer(), argv.items, maybe_dependencies_list) catch |err| switch (err) { error.GeneratedSourceError => { try error_handler.emitAroDiagnostics(allocator, "failed during preprocessor setup (this is always a bug):", &comp); - std.os.exit(1); + std.process.exit(1); }, // ArgError can occur if e.g. the .rc file is not found error.ArgError, error.PreprocessError => { try error_handler.emitAroDiagnostics(allocator, "failed during preprocessing:", &comp); - std.os.exit(1); + std.process.exit(1); }, error.StreamTooLong => { try error_handler.emitMessage(allocator, .err, "failed during preprocessing: maximum file size exceeded", .{}); - std.os.exit(1); + std.process.exit(1); }, error.OutOfMemory => |e| return e, }; @@ -171,7 +171,7 @@ pub fn main() !void { } else { break :full_input std.fs.cwd().readFileAlloc(allocator, options.input_filename, std.math.maxInt(usize)) catch |err| { try error_handler.emitMessage(allocator, .err, "unable to read input file path '{s}': {s}", .{ options.input_filename, @errorName(err) }); - std.os.exit(1); + std.process.exit(1); }; } }; @@ -191,14 +191,14 @@ pub fn main() !void { const final_input = removeComments(mapping_results.result, mapping_results.result, &mapping_results.mappings) catch |err| switch (err) { error.InvalidSourceMappingCollapse => { try error_handler.emitMessage(allocator, .err, "failed during comment removal; this is a known bug", .{}); - std.os.exit(1); + std.process.exit(1); }, else => |e| return e, }; var output_file = std.fs.cwd().createFile(options.output_filename, .{}) catch |err| { try error_handler.emitMessage(allocator, .err, "unable to create output file '{s}': {s}", .{ options.output_filename, @errorName(err) }); - std.os.exit(1); + std.process.exit(1); }; var output_file_closed = false; defer if (!output_file_closed) output_file.close(); @@ -231,7 +231,7 @@ pub fn main() !void { output_file_closed = true; // Failing to delete is not really a big deal, so swallow any errors std.fs.cwd().deleteFile(options.output_filename) catch {}; - std.os.exit(1); + std.process.exit(1); }, else => |e| return e, }; @@ -247,7 +247,7 @@ pub fn main() !void { if (options.depfile_path) |depfile_path| { var depfile = std.fs.cwd().createFile(depfile_path, .{}) catch |err| { try error_handler.emitMessage(allocator, .err, "unable to create depfile '{s}': {s}", .{ depfile_path, @errorName(err) }); - std.os.exit(1); + std.process.exit(1); }; defer depfile.close(); diff --git a/lib/compiler_rt/emutls.zig b/lib/compiler_rt/emutls.zig index db14ad04ee..111193934a 100644 --- a/lib/compiler_rt/emutls.zig +++ b/lib/compiler_rt/emutls.zig @@ -7,7 +7,7 @@ const std = @import("std"); const builtin = @import("builtin"); const common = @import("common.zig"); -const abort = std.os.abort; +const abort = std.posix.abort; const assert = std.debug.assert; const expect = std.testing.expect; diff --git a/lib/libc/mingw/crt/crtdll.c b/lib/libc/mingw/crt/crtdll.c index e264d4e964..88450ce9f7 100644 --- a/lib/libc/mingw/crt/crtdll.c +++ b/lib/libc/mingw/crt/crtdll.c @@ -35,10 +35,10 @@ extern void __cdecl _initterm(_PVFV *,_PVFV *); extern void __main (); extern void _pei386_runtime_relocator (void); -extern _CRTALLOC(".CRT$XIA") _PIFV __xi_a[]; -extern _CRTALLOC(".CRT$XIZ") _PIFV __xi_z[]; -extern _CRTALLOC(".CRT$XCA") _PVFV __xc_a[]; -extern _CRTALLOC(".CRT$XCZ") _PVFV __xc_z[]; +extern _PIFV __xi_a[]; +extern _PIFV __xi_z[]; +extern _PVFV __xc_a[]; +extern _PVFV __xc_z[]; /* TLS initialization hook. */ @@ -142,7 +142,7 @@ WINBOOL WINAPI DllMainCRTStartup (HANDLE, DWORD, LPVOID); int __mingw_init_ehandler (void); #endif -__attribute__((used)) /* required due to bug in gcc / ld */ +__attribute__((used)) /* required due to GNU LD bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30300 */ WINBOOL WINAPI DllMainCRTStartup (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) { diff --git a/lib/libc/mingw/crt/crtexe.c b/lib/libc/mingw/crt/crtexe.c index 03bda59120..9d51268786 100644 --- a/lib/libc/mingw/crt/crtexe.c +++ b/lib/libc/mingw/crt/crtexe.c @@ -50,10 +50,10 @@ extern _CRTIMP void __cdecl _initterm(_PVFV *, _PVFV *); static int __cdecl check_managed_app (void); -extern _CRTALLOC(".CRT$XIA") _PIFV __xi_a[]; -extern _CRTALLOC(".CRT$XIZ") _PIFV __xi_z[]; -extern _CRTALLOC(".CRT$XCA") _PVFV __xc_a[]; -extern _CRTALLOC(".CRT$XCZ") _PVFV __xc_z[]; +extern _PIFV __xi_a[]; +extern _PIFV __xi_z[]; +extern _PVFV __xc_a[]; +extern _PVFV __xc_z[]; /* TLS initialization hook. */ @@ -146,7 +146,7 @@ static int __tmainCRTStartup (void); int WinMainCRTStartup (void); -__attribute__((used)) /* required due to bug in gcc / ld */ +__attribute__((used)) /* required due to GNU LD bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30300 */ int WinMainCRTStartup (void) { int ret = 255; @@ -177,7 +177,7 @@ int mainCRTStartup (void); int __mingw_init_ehandler (void); #endif -__attribute__((used)) /* required due to bug in gcc / ld */ +__attribute__((used)) /* required due to GNU LD bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30300 */ int mainCRTStartup (void) { int ret = 255; diff --git a/lib/libc/mingw/def-include/msvcrt-common.def.in b/lib/libc/mingw/def-include/msvcrt-common.def.in index b68964db0d..9728b5ab86 100644 --- a/lib/libc/mingw/def-include/msvcrt-common.def.in +++ b/lib/libc/mingw/def-include/msvcrt-common.def.in @@ -35,17 +35,19 @@ ADD_UNDERSCORE(execv) ADD_UNDERSCORE(execve) ADD_UNDERSCORE(execvp) ADD_UNDERSCORE(execvpe) +ADD_UNDERSCORE(fcloseall) ADD_UNDERSCORE(fcvt) ADD_UNDERSCORE(fdopen) ADD_UNDERSCORE(fgetchar) ADD_UNDERSCORE(fgetwchar) ADD_UNDERSCORE(filelength) ADD_UNDERSCORE(fileno) -; fpreset) +; Alias fpreset is set in CRT_fp10.c and CRT_fp8.c. +; ADD_UNDERSCORE(fpreset) ADD_UNDERSCORE(fputchar) ADD_UNDERSCORE(fputwchar) -;fstat) -;ftime) +; ADD_UNDERSCORE(fstat) +; ADD_UNDERSCORE(ftime) ADD_UNDERSCORE(gcvt) ADD_UNDERSCORE(getch) ADD_UNDERSCORE(getche) @@ -90,7 +92,7 @@ ADD_UNDERSCORE(spawnv) ADD_UNDERSCORE(spawnve) ADD_UNDERSCORE(spawnvp) ADD_UNDERSCORE(spawnvpe) -;stat) +; ADD_UNDERSCORE(stat) #ifndef UCRTBASE ADD_UNDERSCORE(strcmpi) #endif @@ -134,13 +136,13 @@ ADD_UNDERSCORE(y0) ADD_UNDERSCORE(y1) ADD_UNDERSCORE(yn) ADD_UNDERSCORE(chgsign) -;scalb +; ADD_UNDERSCORE(scalb) ADD_UNDERSCORE(finite) ADD_UNDERSCORE(fpclass) ; C99 functions -;cabs +; ADD_UNDERSCORE(cabs) ADD_UNDERSCORE(hypot) -;logb +; ADD_UNDERSCORE(logb) ADD_UNDERSCORE(nextafter) #ifndef UCRTBASE diff --git a/lib/libc/mingw/lib-common/acledit.def b/lib/libc/mingw/lib-common/acledit.def index da55b74007..5d29e73a5d 100644 --- a/lib/libc/mingw/lib-common/acledit.def +++ b/lib/libc/mingw/lib-common/acledit.def @@ -9,7 +9,6 @@ EXPORTS EditAuditInfo EditOwnerInfo EditPermissionInfo -DllMain FMExtensionProcW SedDiscretionaryAclEditor SedSystemAclEditor diff --git a/lib/libc/mingw/lib-common/api-ms-win-appmodel-runtime-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-appmodel-runtime-l1-1-0.def new file mode 100644 index 0000000000..f2117fb201 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-appmodel-runtime-l1-1-0.def @@ -0,0 +1,37 @@ +LIBRARY api-ms-win-appmodel-runtime-l1-1-0 + +EXPORTS + +ClosePackageInfo +CreateDeviceAccessInstance +GetApplicationUserModelId +GetCurrentApplicationUserModelId +GetCurrentPackageFamilyName +GetCurrentPackageFullName +GetCurrentPackageId +GetCurrentPackageInfo +GetCurrentPackagePath +GetPackageFamilyName +GetPackageFullName +GetPackageId +GetPackageInfo +GetPackagePath +GetPackagesByPackageFamily +OpenPackageInfoByFullName +PackageFamilyNameFromFullName +PackageFamilyNameFromId +PackageFullNameFromId +PackageIdFromFullName +PackageNameAndPublisherIdFromFamilyName +ProcessTrackerInsertOrWait +ProcessTrackerRemove +TokenBindingDeleteAllBindings +TokenBindingDeleteBinding +TokenBindingGenerateBinding +TokenBindingGenerateID +TokenBindingGenerateIDForUri +TokenBindingGenerateMessage +TokenBindingGetHighestSupportedVersion +TokenBindingGetKeyTypesClient +TokenBindingGetKeyTypesServer +TokenBindingVerifyMessage diff --git a/lib/libc/mingw/lib-common/api-ms-win-appmodel-runtime-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-appmodel-runtime-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..a22ea4d350 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-appmodel-runtime-l1-1-0_windowsapp.def @@ -0,0 +1,25 @@ +LIBRARY api-ms-win-appmodel-runtime-l1-1-0 + +EXPORTS + +ClosePackageInfo +CreateDeviceAccessInstance +GetApplicationUserModelId +GetCurrentApplicationUserModelId +GetCurrentPackageFamilyName +GetCurrentPackageFullName +GetCurrentPackageId +GetCurrentPackageInfo +GetCurrentPackagePath +GetPackageFamilyName +GetPackageFullName +GetPackageId +GetPackageInfo +GetPackagePath +GetPackagesByPackageFamily +OpenPackageInfoByFullName +PackageFamilyNameFromFullName +PackageFamilyNameFromId +PackageFullNameFromId +PackageIdFromFullName +PackageNameAndPublisherIdFromFamilyName diff --git a/lib/libc/mingw/lib-common/api-ms-win-appmodel-runtime-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-appmodel-runtime-l1-1-1.def new file mode 100644 index 0000000000..6dfe386d51 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-appmodel-runtime-l1-1-1.def @@ -0,0 +1,20 @@ +LIBRARY api-ms-win-appmodel-runtime-l1-1-1 + +EXPORTS + +FindPackagesByPackageFamily +FormatApplicationUserModelId +GetApplicationUserModelIdFromToken +GetPackageApplicationIds +GetPackageFamilyNameFromToken +GetPackageFullNameFromToken +GetPackagePathByFullName +GetStagedPackageOrigin +GetStagedPackagePathByFullName +OpenPackageInfoByFullNameForUser +ParseApplicationUserModelId +VerifyApplicationUserModelId +VerifyPackageFamilyName +VerifyPackageFullName +VerifyPackageId +VerifyPackageRelativeApplicationId diff --git a/lib/libc/mingw/lib-common/api-ms-win-appmodel-runtime-l1-1-1_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-appmodel-runtime-l1-1-1_windowsapp.def new file mode 100644 index 0000000000..8cbafa6a6a --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-appmodel-runtime-l1-1-1_windowsapp.def @@ -0,0 +1,19 @@ +LIBRARY api-ms-win-appmodel-runtime-l1-1-1 + +EXPORTS + +FindPackagesByPackageFamily +FormatApplicationUserModelId +GetApplicationUserModelIdFromToken +GetPackageApplicationIds +GetPackageFamilyNameFromToken +GetPackageFullNameFromToken +GetPackagePathByFullName +GetStagedPackagePathByFullName +OpenPackageInfoByFullNameForUser +ParseApplicationUserModelId +VerifyApplicationUserModelId +VerifyPackageFamilyName +VerifyPackageFullName +VerifyPackageId +VerifyPackageRelativeApplicationId diff --git a/lib/libc/mingw/lib-common/api-ms-win-appmodel-runtime-l1-1-2.def b/lib/libc/mingw/lib-common/api-ms-win-appmodel-runtime-l1-1-2.def new file mode 100644 index 0000000000..ff5158c833 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-appmodel-runtime-l1-1-2.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-appmodel-runtime-l1-1-2 + +EXPORTS + +AppPolicyGetClrCompat +AppPolicyGetCreateFileAccess +AppPolicyGetLifecycleManagement +AppPolicyGetMediaFoundationCodecLoading +AppPolicyGetProcessTerminationMethod +AppPolicyGetShowDeveloperDiagnostic +AppPolicyGetThreadInitializationType +AppPolicyGetWindowingModel diff --git a/lib/libc/mingw/lib-common/api-ms-win-appmodel-runtime-l1-1-3.def b/lib/libc/mingw/lib-common/api-ms-win-appmodel-runtime-l1-1-3.def new file mode 100644 index 0000000000..8294812aa3 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-appmodel-runtime-l1-1-3.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-appmodel-runtime-l1-1-3 + +EXPORTS + +GetCurrentPackageInfo2 +GetCurrentPackagePath2 +GetPackageInfo2 +GetPackagePathByFullName2 +GetStagedPackagePathByFullName2 diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-apiquery-l2-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-apiquery-l2-1-0.def new file mode 100644 index 0000000000..b5cdfb7181 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-apiquery-l2-1-0.def @@ -0,0 +1,15 @@ +LIBRARY api-ms-win-core-apiquery-l2-1-0 + +EXPORTS + +IsApiSetImplemented +TokenBindingDeleteAllBindings +TokenBindingDeleteBinding +TokenBindingGenerateBinding +TokenBindingGenerateID +TokenBindingGenerateIDForUri +TokenBindingGenerateMessage +TokenBindingGetHighestSupportedVersion +TokenBindingGetKeyTypesClient +TokenBindingGetKeyTypesServer +TokenBindingVerifyMessage diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-atoms-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-atoms-l1-1-0.def new file mode 100644 index 0000000000..9355a3bbe9 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-atoms-l1-1-0.def @@ -0,0 +1,21 @@ +LIBRARY api-ms-win-core-atoms-l1-1-0 + +EXPORTS + +AddAtomA +AddAtomW +DeleteAtom +FindAtomA +FindAtomW +GetAtomNameA +GetAtomNameW +GlobalAddAtomA +GlobalAddAtomExA +GlobalAddAtomExW +GlobalAddAtomW +GlobalDeleteAtom +GlobalFindAtomA +GlobalFindAtomW +GlobalGetAtomNameA +GlobalGetAtomNameW +InitAtomTable diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-atoms-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-atoms-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..61a034a455 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-atoms-l1-1-0_windowsapp.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-core-atoms-l1-1-0 + +EXPORTS + +AddAtomA +AddAtomW +DeleteAtom +FindAtomA +FindAtomW +GetAtomNameA +GetAtomNameW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-backgroundtask-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-backgroundtask-l1-1-0.def new file mode 100644 index 0000000000..e0d183e0d7 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-backgroundtask-l1-1-0.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-backgroundtask-l1-1-0 + +EXPORTS + +RaiseCustomSystemEventTrigger diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-calendar-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-calendar-l1-1-0.def new file mode 100644 index 0000000000..489c518323 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-calendar-l1-1-0.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-core-calendar-l1-1-0 + +EXPORTS + +AdjustCalendarDate +ConvertCalDateTimeToSystemTime +ConvertSystemTimeToCalDateTime +GetCalendarDateFormatEx +GetCalendarSupportedDateRange +IsCalendarLeapYear +UpdateCalendarDayOfWeek diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-com-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-com-l1-1-0.def new file mode 100644 index 0000000000..2bf089c9bf --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-com-l1-1-0.def @@ -0,0 +1,84 @@ +LIBRARY api-ms-win-core-com-l1-1-0 + +EXPORTS + +CLSIDFromProgID +CLSIDFromString +CoAddRefServerProcess +CoAllowUnmarshalerCLSID +CoCancelCall +CoCopyProxy +CoCreateFreeThreadedMarshaler +CoCreateGuid +CoCreateInstance +CoCreateInstanceEx +CoCreateInstanceFromApp +CoDecodeProxy +CoDecrementMTAUsage +CoDisableCallCancellation +CoDisconnectContext +CoDisconnectObject +CoEnableCallCancellation +CoFreeUnusedLibraries +CoFreeUnusedLibrariesEx +CoGetApartmentType +CoGetCallContext +CoGetCallerTID +CoGetCancelObject +CoGetClassObject +CoGetContextToken +CoGetCurrentLogicalThreadId +CoGetCurrentProcess +CoGetDefaultContext +CoGetInterfaceAndReleaseStream +CoGetMalloc +CoGetMarshalSizeMax +CoGetObjectContext +CoGetPSClsid +CoGetStandardMarshal +CoGetStdMarshalEx +CoGetTreatAsClass +CoImpersonateClient +CoIncrementMTAUsage +CoInitializeEx +CoInitializeSecurity +CoInvalidateRemoteMachineBindings +CoIsHandlerConnected +CoLockObjectExternal +CoMarshalHresult +CoMarshalInterface +CoMarshalInterThreadInterfaceInStream +CoQueryAuthenticationServices +CoQueryClientBlanket +CoQueryProxyBlanket +CoRegisterClassObject +CoRegisterPSClsid +CoRegisterSurrogate +CoReleaseMarshalData +CoReleaseServerProcess +CoResumeClassObjects +CoRevertToSelf +CoRevokeClassObject +CoSetCancelObject +CoSetProxyBlanket +CoSuspendClassObjects +CoSwitchCallContext +CoTaskMemAlloc +CoTaskMemFree +CoTaskMemRealloc +CoTestCancel +CoUninitialize +CoUnmarshalHresult +CoUnmarshalInterface +CoWaitForMultipleHandles +CoWaitForMultipleObjects +CreateStreamOnHGlobal +FreePropVariantArray +GetHGlobalFromStream +IIDFromString +ProgIDFromCLSID +PropVariantClear +PropVariantCopy +StringFromCLSID +StringFromGUID2 +StringFromIID diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-com-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-com-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..4814f8748d --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-com-l1-1-0_windowsapp.def @@ -0,0 +1,57 @@ +LIBRARY api-ms-win-core-com-l1-1-0 + +EXPORTS + +CLSIDFromProgID +CLSIDFromString +CoAddRefServerProcess +CoCreateFreeThreadedMarshaler +CoCreateGuid +CoCreateInstance +CoCreateInstanceEx +CoCreateInstanceFromApp +CoDecrementMTAUsage +CoDisconnectObject +CoFreeUnusedLibraries +CoFreeUnusedLibrariesEx +CoGetApartmentType +CoGetClassObject +CoGetContextToken +CoGetCurrentLogicalThreadId +CoGetInterfaceAndReleaseStream +CoGetMalloc +CoGetMarshalSizeMax +CoGetObjectContext +CoGetStandardMarshal +CoIncrementMTAUsage +CoInitializeEx +CoInitializeSecurity +CoLockObjectExternal +CoMarshalInterface +CoMarshalInterThreadInterfaceInStream +CoRegisterClassObject +CoRegisterPSClsid +CoReleaseMarshalData +CoReleaseServerProcess +CoResumeClassObjects +CoRevokeClassObject +CoSetProxyBlanket +CoSuspendClassObjects +CoSwitchCallContext +CoTaskMemAlloc +CoTaskMemFree +CoTaskMemRealloc +CoUninitialize +CoUnmarshalInterface +CoWaitForMultipleHandles +CoWaitForMultipleObjects +CreateStreamOnHGlobal +FreePropVariantArray +GetHGlobalFromStream +IIDFromString +ProgIDFromCLSID +PropVariantClear +PropVariantCopy +StringFromCLSID +StringFromGUID2 +StringFromIID diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-com-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-com-l1-1-1.def new file mode 100644 index 0000000000..2b71894406 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-com-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-com-l1-1-1 + +EXPORTS + +CoRegisterActivationFilter +RoGetAgileReference diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-com-l1-1-1_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-com-l1-1-1_windowsapp.def new file mode 100644 index 0000000000..98f5d0b443 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-com-l1-1-1_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-com-l1-1-1 + +EXPORTS + +RoGetAgileReference diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-com-l1-1-2.def b/lib/libc/mingw/lib-common/api-ms-win-core-com-l1-1-2.def new file mode 100644 index 0000000000..9259c8d019 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-com-l1-1-2.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-com-l1-1-2 + +EXPORTS + +CLSIDFromProgIDEx +CoFileTimeNow diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-com-l1-1-3.def b/lib/libc/mingw/lib-common/api-ms-win-core-com-l1-1-3.def new file mode 100644 index 0000000000..9b58f9c1ea --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-com-l1-1-3.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-com-l1-1-3 + +EXPORTS + +CoRegisterDeviceCatalog +CoRevokeDeviceCatalog diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-com-l2-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-com-l2-1-1.def new file mode 100644 index 0000000000..9c75cc8a6c --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-com-l2-1-1.def @@ -0,0 +1,25 @@ +LIBRARY api-ms-win-core-com-l2-1-1 + +EXPORTS + +CreateILockBytesOnHGlobal +FmtIdToPropStgName +GetConvertStg +GetHGlobalFromILockBytes +PropStgNameToFmtId +ReadClassStg +ReadClassStm +StgCreateDocfile +StgCreateDocfileOnILockBytes +StgCreatePropSetStg +StgCreatePropStg +StgCreateStorageEx +StgIsStorageFile +StgIsStorageILockBytes +StgOpenPropStg +StgOpenStorage +StgOpenStorageEx +StgOpenStorageOnILockBytes +StgSetTimes +WriteClassStg +WriteClassStm diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-com-midlproxystub-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-com-midlproxystub-l1-1-0.def new file mode 100644 index 0000000000..5c76541ad5 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-com-midlproxystub-l1-1-0.def @@ -0,0 +1,77 @@ +LIBRARY api-ms-win-core-com-midlproxystub-l1-1-0 + +EXPORTS + +CStdAsyncStubBuffer_AddRef +CStdAsyncStubBuffer_Connect +CStdAsyncStubBuffer_Disconnect +CStdAsyncStubBuffer_Invoke +CStdAsyncStubBuffer_QueryInterface +CStdAsyncStubBuffer_Release +CStdAsyncStubBuffer2_Connect +CStdAsyncStubBuffer2_Disconnect +CStdAsyncStubBuffer2_Release +CStdStubBuffer2_Connect +CStdStubBuffer2_CountRefs +CStdStubBuffer2_Disconnect +CStdStubBuffer2_QueryInterface +NdrProxyForwardingFunction10 +NdrProxyForwardingFunction11 +NdrProxyForwardingFunction12 +NdrProxyForwardingFunction13 +NdrProxyForwardingFunction14 +NdrProxyForwardingFunction15 +NdrProxyForwardingFunction16 +NdrProxyForwardingFunction17 +NdrProxyForwardingFunction18 +NdrProxyForwardingFunction19 +NdrProxyForwardingFunction20 +NdrProxyForwardingFunction21 +NdrProxyForwardingFunction22 +NdrProxyForwardingFunction23 +NdrProxyForwardingFunction24 +NdrProxyForwardingFunction25 +NdrProxyForwardingFunction26 +NdrProxyForwardingFunction27 +NdrProxyForwardingFunction28 +NdrProxyForwardingFunction29 +NdrProxyForwardingFunction3 +NdrProxyForwardingFunction30 +NdrProxyForwardingFunction31 +NdrProxyForwardingFunction32 +NdrProxyForwardingFunction4 +NdrProxyForwardingFunction5 +NdrProxyForwardingFunction6 +NdrProxyForwardingFunction7 +NdrProxyForwardingFunction8 +NdrProxyForwardingFunction9 +ObjectStublessClient10 +ObjectStublessClient11 +ObjectStublessClient12 +ObjectStublessClient13 +ObjectStublessClient14 +ObjectStublessClient15 +ObjectStublessClient16 +ObjectStublessClient17 +ObjectStublessClient18 +ObjectStublessClient19 +ObjectStublessClient20 +ObjectStublessClient21 +ObjectStublessClient22 +ObjectStublessClient23 +ObjectStublessClient24 +ObjectStublessClient25 +ObjectStublessClient26 +ObjectStublessClient27 +ObjectStublessClient28 +ObjectStublessClient29 +ObjectStublessClient3 +ObjectStublessClient30 +ObjectStublessClient31 +ObjectStublessClient32 +ObjectStublessClient4 +ObjectStublessClient5 +ObjectStublessClient6 +ObjectStublessClient7 +ObjectStublessClient8 +ObjectStublessClient9 diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-comm-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-comm-l1-1-0.def new file mode 100644 index 0000000000..70e3f03f41 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-comm-l1-1-0.def @@ -0,0 +1,22 @@ +LIBRARY api-ms-win-core-comm-l1-1-0 + +EXPORTS + +ClearCommBreak +ClearCommError +EscapeCommFunction +GetCommConfig +GetCommMask +GetCommModemStatus +GetCommProperties +GetCommState +GetCommTimeouts +PurgeComm +SetCommBreak +SetCommConfig +SetCommMask +SetCommState +SetCommTimeouts +SetupComm +TransmitCommChar +WaitCommEvent diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-comm-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-comm-l1-1-1.def new file mode 100644 index 0000000000..4b7efde4a1 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-comm-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-comm-l1-1-1 + +EXPORTS + +OpenCommPort diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-comm-l1-1-2.def b/lib/libc/mingw/lib-common/api-ms-win-core-comm-l1-1-2.def new file mode 100644 index 0000000000..5d6b8afd78 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-comm-l1-1-2.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-comm-l1-1-2 + +EXPORTS + +GetCommPorts diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-console-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-console-l1-1-0.def new file mode 100644 index 0000000000..03c9a91c17 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-console-l1-1-0.def @@ -0,0 +1,17 @@ +LIBRARY api-ms-win-core-console-l1-1-0 + +EXPORTS + +AllocConsole +GetConsoleCP +GetConsoleMode +GetConsoleOutputCP +GetNumberOfConsoleInputEvents +ReadConsoleA +ReadConsoleInputA +ReadConsoleInputW +ReadConsoleW +SetConsoleCtrlHandler +SetConsoleMode +WriteConsoleA +WriteConsoleW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-console-l1-2-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-console-l1-2-0.def new file mode 100644 index 0000000000..22520b064a --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-console-l1-2-0.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-console-l1-2-0 + +EXPORTS + +AttachConsole +FreeConsole +PeekConsoleInputA +PeekConsoleInputW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-console-l1-2-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-console-l1-2-1.def new file mode 100644 index 0000000000..4e8e304408 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-console-l1-2-1.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-console-l1-2-1 + +EXPORTS + +ClosePseudoConsole +CreatePseudoConsole +ResizePseudoConsole diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-console-l2-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-console-l2-1-0.def new file mode 100644 index 0000000000..eb74431cdd --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-console-l2-1-0.def @@ -0,0 +1,37 @@ +LIBRARY api-ms-win-core-console-l2-1-0 + +EXPORTS + +CreateConsoleScreenBuffer +FillConsoleOutputAttribute +FillConsoleOutputCharacterA +FillConsoleOutputCharacterW +FlushConsoleInputBuffer +GenerateConsoleCtrlEvent +GetConsoleCursorInfo +GetConsoleScreenBufferInfo +GetConsoleScreenBufferInfoEx +GetLargestConsoleWindowSize +ReadConsoleOutputA +ReadConsoleOutputAttribute +ReadConsoleOutputCharacterA +ReadConsoleOutputCharacterW +ReadConsoleOutputW +ScrollConsoleScreenBufferA +ScrollConsoleScreenBufferW +SetConsoleActiveScreenBuffer +SetConsoleCP +SetConsoleCursorInfo +SetConsoleCursorPosition +SetConsoleOutputCP +SetConsoleScreenBufferInfoEx +SetConsoleScreenBufferSize +SetConsoleTextAttribute +SetConsoleWindowInfo +WriteConsoleInputA +WriteConsoleInputW +WriteConsoleOutputA +WriteConsoleOutputAttribute +WriteConsoleOutputCharacterA +WriteConsoleOutputCharacterW +WriteConsoleOutputW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-console-l2-2-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-console-l2-2-0.def new file mode 100644 index 0000000000..282dae772a --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-console-l2-2-0.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-core-console-l2-2-0 + +EXPORTS + +GetConsoleOriginalTitleA +GetConsoleOriginalTitleW +GetConsoleTitleA +GetConsoleTitleW +SetConsoleTitleA +SetConsoleTitleW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-console-l3-2-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-console-l3-2-0.def new file mode 100644 index 0000000000..ca873297e3 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-console-l3-2-0.def @@ -0,0 +1,36 @@ +LIBRARY api-ms-win-core-console-l3-2-0 + +EXPORTS + +AddConsoleAliasA +AddConsoleAliasW +ExpungeConsoleCommandHistoryA +ExpungeConsoleCommandHistoryW +GetConsoleAliasA +GetConsoleAliasesA +GetConsoleAliasesLengthA +GetConsoleAliasesLengthW +GetConsoleAliasesW +GetConsoleAliasExesA +GetConsoleAliasExesLengthA +GetConsoleAliasExesLengthW +GetConsoleAliasExesW +GetConsoleAliasW +GetConsoleCommandHistoryA +GetConsoleCommandHistoryLengthA +GetConsoleCommandHistoryLengthW +GetConsoleCommandHistoryW +GetConsoleDisplayMode +GetConsoleFontSize +GetConsoleHistoryInfo +GetConsoleProcessList +GetConsoleSelectionInfo +GetConsoleWindow +GetCurrentConsoleFont +GetCurrentConsoleFontEx +GetNumberOfConsoleMouseButtons +SetConsoleDisplayMode +SetConsoleHistoryInfo +SetConsoleNumberOfCommandsA +SetConsoleNumberOfCommandsW +SetCurrentConsoleFontEx diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-datetime-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-datetime-l1-1-0.def new file mode 100644 index 0000000000..cb767e9972 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-datetime-l1-1-0.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-datetime-l1-1-0 + +EXPORTS + +GetDateFormatA +GetDateFormatW +GetTimeFormatA +GetTimeFormatW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-datetime-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-datetime-l1-1-1.def new file mode 100644 index 0000000000..6e5075a0e1 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-datetime-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-datetime-l1-1-1 + +EXPORTS + +GetDateFormatEx +GetTimeFormatEx diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-datetime-l1-1-2.def b/lib/libc/mingw/lib-common/api-ms-win-core-datetime-l1-1-2.def new file mode 100644 index 0000000000..53ee9abc69 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-datetime-l1-1-2.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-datetime-l1-1-2 + +EXPORTS + +GetDurationFormatEx diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-debug-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-debug-l1-1-0.def new file mode 100644 index 0000000000..83422517c1 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-debug-l1-1-0.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-debug-l1-1-0 + +EXPORTS + +DebugBreak +IsDebuggerPresent +OutputDebugStringA +OutputDebugStringW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-debug-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-debug-l1-1-1.def new file mode 100644 index 0000000000..f8d4dc1145 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-debug-l1-1-1.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-debug-l1-1-1 + +EXPORTS + +CheckRemoteDebuggerPresent +ContinueDebugEvent +DebugActiveProcess +DebugActiveProcessStop +WaitForDebugEvent diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-debug-l1-1-2.def b/lib/libc/mingw/lib-common/api-ms-win-core-debug-l1-1-2.def new file mode 100644 index 0000000000..fbf92375ed --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-debug-l1-1-2.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-debug-l1-1-2 + +EXPORTS + +WaitForDebugEventEx diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-debug-minidump-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-debug-minidump-l1-1-0.def new file mode 100644 index 0000000000..3da31d6517 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-debug-minidump-l1-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-debug-minidump-l1-1-0 + +EXPORTS + +MiniDumpReadDumpStream +MiniDumpWriteDump diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-delayload-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-delayload-l1-1-0.def new file mode 100644 index 0000000000..89de2e52a0 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-delayload-l1-1-0.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-delayload-l1-1-0 + +EXPORTS + +DelayLoadFailureHook diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-delayload-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-delayload-l1-1-1.def new file mode 100644 index 0000000000..4de11487ed --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-delayload-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-delayload-l1-1-1 + +EXPORTS + +ResolveDelayLoadedAPI +ResolveDelayLoadsFromDll diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-enclave-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-enclave-l1-1-0.def new file mode 100644 index 0000000000..df5edbe301 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-enclave-l1-1-0.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-enclave-l1-1-0 + +EXPORTS + +CreateEnclave +InitializeEnclave +IsEnclaveTypeSupported +LoadEnclaveData diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-enclave-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-enclave-l1-1-1.def new file mode 100644 index 0000000000..8141addf38 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-enclave-l1-1-1.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-enclave-l1-1-1 + +EXPORTS + +CallEnclave +DeleteEnclave +LoadEnclaveImageA +LoadEnclaveImageW +TerminateEnclave diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-errorhandling-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-errorhandling-l1-1-0.def new file mode 100644 index 0000000000..1b7f655223 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-errorhandling-l1-1-0.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-core-errorhandling-l1-1-0 + +EXPORTS + +GetErrorMode +GetLastError +RaiseException +SetErrorMode +SetLastError +SetUnhandledExceptionFilter +UnhandledExceptionFilter diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-errorhandling-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-errorhandling-l1-1-1.def new file mode 100644 index 0000000000..8387d4dc6c --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-errorhandling-l1-1-1.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-errorhandling-l1-1-1 + +EXPORTS + +AddVectoredContinueHandler +AddVectoredExceptionHandler +RemoveVectoredContinueHandler +RemoveVectoredExceptionHandler +RestoreLastError diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-errorhandling-l1-1-1_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-errorhandling-l1-1-1_windowsapp.def new file mode 100644 index 0000000000..7d93581c21 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-errorhandling-l1-1-1_windowsapp.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-errorhandling-l1-1-1 + +EXPORTS + +AddVectoredExceptionHandler +RemoveVectoredExceptionHandler diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-errorhandling-l1-1-2.def b/lib/libc/mingw/lib-common/api-ms-win-core-errorhandling-l1-1-2.def new file mode 100644 index 0000000000..2b29a8db66 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-errorhandling-l1-1-2.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-errorhandling-l1-1-2 + +EXPORTS + +RaiseFailFastException diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-errorhandling-l1-1-3.def b/lib/libc/mingw/lib-common/api-ms-win-core-errorhandling-l1-1-3.def new file mode 100644 index 0000000000..c876fe7d38 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-errorhandling-l1-1-3.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-errorhandling-l1-1-3 + +EXPORTS + +FatalAppExitA +FatalAppExitW +GetThreadErrorMode +SetThreadErrorMode +TerminateProcessOnMemoryExhaustion diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-errorhandling-l1-1-3_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-errorhandling-l1-1-3_windowsapp.def new file mode 100644 index 0000000000..9891cc42cf --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-errorhandling-l1-1-3_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-errorhandling-l1-1-3 + +EXPORTS + +FatalAppExitA +FatalAppExitW +GetThreadErrorMode +SetThreadErrorMode diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-featurestaging-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-featurestaging-l1-1-0.def new file mode 100644 index 0000000000..9ad6c2ad38 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-featurestaging-l1-1-0.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-featurestaging-l1-1-0 + +EXPORTS + +GetFeatureEnabledState +RecordFeatureError +RecordFeatureUsage +SubscribeFeatureStateChangeNotification +UnsubscribeFeatureStateChangeNotification diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-featurestaging-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-featurestaging-l1-1-1.def new file mode 100644 index 0000000000..c9bc941a1d --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-featurestaging-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-featurestaging-l1-1-1 + +EXPORTS + +GetFeatureVariant diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-fibers-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-fibers-l1-1-0.def new file mode 100644 index 0000000000..58094ce7cf --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-fibers-l1-1-0.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-fibers-l1-1-0 + +EXPORTS + +FlsAlloc +FlsFree +FlsGetValue +FlsSetValue diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-fibers-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-fibers-l1-1-1.def new file mode 100644 index 0000000000..0d6151a24a --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-fibers-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-fibers-l1-1-1 + +EXPORTS + +IsThreadAFiber diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-fibers-l2-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-fibers-l2-1-0.def new file mode 100644 index 0000000000..9e90974dcf --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-fibers-l2-1-0.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-fibers-l2-1-0 + +EXPORTS + +ConvertFiberToThread +ConvertThreadToFiber +CreateFiber +DeleteFiber +SwitchToFiber diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-fibers-l2-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-fibers-l2-1-0_windowsapp.def new file mode 100644 index 0000000000..18368fae74 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-fibers-l2-1-0_windowsapp.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-fibers-l2-1-0 + +EXPORTS + +ConvertFiberToThread +DeleteFiber +SwitchToFiber diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-fibers-l2-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-fibers-l2-1-1.def new file mode 100644 index 0000000000..51c0d944b1 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-fibers-l2-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-fibers-l2-1-1 + +EXPORTS + +ConvertThreadToFiberEx +CreateFiberEx diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-file-ansi-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-file-ansi-l1-1-0.def new file mode 100644 index 0000000000..7caaffe33e --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-file-ansi-l1-1-0.def @@ -0,0 +1,13 @@ +LIBRARY api-ms-win-core-file-ansi-l1-1-0 + +EXPORTS + +DefineDosDeviceA +DeleteVolumeMountPointA +FindFirstVolumeA +FindNextVolumeA +GetLogicalDriveStringsA +GetVolumeNameForVolumeMountPointA +GetVolumePathNameA +GetVolumePathNamesForVolumeNameA +QueryDosDeviceA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-file-ansi-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-file-ansi-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..8ce52bcca9 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-file-ansi-l1-1-0_windowsapp.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-file-ansi-l1-1-0 + +EXPORTS + +DeleteVolumeMountPointA +FindFirstVolumeA +FindNextVolumeA +GetLogicalDriveStringsA +GetVolumePathNameA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-file-ansi-l2-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-file-ansi-l2-1-0.def new file mode 100644 index 0000000000..e20372724c --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-file-ansi-l2-1-0.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-file-ansi-l2-1-0 + +EXPORTS + +CopyFileExA +CreateDirectoryExA +CreateSymbolicLinkA +MoveFileWithProgressA +ReplaceFileA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-file-ansi-l2-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-file-ansi-l2-1-0_windowsapp.def new file mode 100644 index 0000000000..715f933096 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-file-ansi-l2-1-0_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-file-ansi-l2-1-0 + +EXPORTS + +CopyFileExA +CreateDirectoryExA +MoveFileWithProgressA +ReplaceFileA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-file-fromapp-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-file-fromapp-l1-1-0.def new file mode 100644 index 0000000000..d5b2c33d11 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-file-fromapp-l1-1-0.def @@ -0,0 +1,15 @@ +LIBRARY api-ms-win-core-file-fromapp-l1-1-0 + +EXPORTS + +CopyFileFromAppW +CreateDirectoryFromAppW +CreateFile2FromAppW +CreateFileFromAppW +DeleteFileFromAppW +FindFirstFileExFromAppW +GetFileAttributesExFromAppW +MoveFileFromAppW +RemoveDirectoryFromAppW +ReplaceFileFromAppW +SetFileAttributesFromAppW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-file-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-file-l1-1-0.def new file mode 100644 index 0000000000..2a377aeac8 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-file-l1-1-0.def @@ -0,0 +1,79 @@ +LIBRARY api-ms-win-core-file-l1-1-0 + +EXPORTS + +CompareFileTime +CreateDirectoryA +CreateDirectoryW +CreateFileA +CreateFileW +DefineDosDeviceW +DeleteFileA +DeleteFileW +DeleteVolumeMountPointW +FileTimeToLocalFileTime +FindClose +FindCloseChangeNotification +FindFirstChangeNotificationA +FindFirstChangeNotificationW +FindFirstFileA +FindFirstFileExA +FindFirstFileExW +FindFirstFileW +FindFirstVolumeW +FindNextChangeNotification +FindNextFileA +FindNextFileW +FindNextVolumeW +FindVolumeClose +FlushFileBuffers +GetDiskFreeSpaceA +GetDiskFreeSpaceExA +GetDiskFreeSpaceExW +GetDiskFreeSpaceW +GetDriveTypeA +GetDriveTypeW +GetFileAttributesA +GetFileAttributesExA +GetFileAttributesExW +GetFileAttributesW +GetFileInformationByHandle +GetFileSize +GetFileSizeEx +GetFileTime +GetFileType +GetFinalPathNameByHandleA +GetFinalPathNameByHandleW +GetFullPathNameA +GetFullPathNameW +GetLogicalDrives +GetLogicalDriveStringsW +GetLongPathNameA +GetLongPathNameW +GetShortPathNameW +GetTempFileNameW +GetVolumeInformationByHandleW +GetVolumeInformationW +GetVolumePathNameW +LocalFileTimeToFileTime +LockFile +LockFileEx +QueryDosDeviceW +ReadFile +ReadFileEx +ReadFileScatter +RemoveDirectoryA +RemoveDirectoryW +SetEndOfFile +SetFileAttributesA +SetFileAttributesW +SetFileInformationByHandle +SetFilePointer +SetFilePointerEx +SetFileTime +SetFileValidData +UnlockFile +UnlockFileEx +WriteFile +WriteFileEx +WriteFileGather diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-file-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-file-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..fb547c7527 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-file-l1-1-0_windowsapp.def @@ -0,0 +1,77 @@ +LIBRARY api-ms-win-core-file-l1-1-0 + +EXPORTS + +CompareFileTime +CreateDirectoryA +CreateDirectoryW +CreateFileA +CreateFileW +DeleteFileA +DeleteFileW +DeleteVolumeMountPointW +FileTimeToLocalFileTime +FindClose +FindCloseChangeNotification +FindFirstChangeNotificationA +FindFirstChangeNotificationW +FindFirstFileA +FindFirstFileExA +FindFirstFileExW +FindFirstFileW +FindFirstVolumeW +FindNextChangeNotification +FindNextFileA +FindNextFileW +FindNextVolumeW +FindVolumeClose +FlushFileBuffers +GetDiskFreeSpaceA +GetDiskFreeSpaceExA +GetDiskFreeSpaceExW +GetDiskFreeSpaceW +GetDriveTypeA +GetDriveTypeW +GetFileAttributesA +GetFileAttributesExA +GetFileAttributesExW +GetFileAttributesW +GetFileInformationByHandle +GetFileSize +GetFileSizeEx +GetFileTime +GetFileType +GetFinalPathNameByHandleA +GetFinalPathNameByHandleW +GetFullPathNameA +GetFullPathNameW +GetLogicalDrives +GetLogicalDriveStringsW +GetLongPathNameA +GetLongPathNameW +GetShortPathNameW +GetTempFileNameW +GetVolumeInformationByHandleW +GetVolumeInformationW +GetVolumePathNameW +LocalFileTimeToFileTime +LockFile +LockFileEx +ReadFile +ReadFileEx +ReadFileScatter +RemoveDirectoryA +RemoveDirectoryW +SetEndOfFile +SetFileAttributesA +SetFileAttributesW +SetFileInformationByHandle +SetFilePointer +SetFilePointerEx +SetFileTime +SetFileValidData +UnlockFile +UnlockFileEx +WriteFile +WriteFileEx +WriteFileGather diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-file-l1-2-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-file-l1-2-0.def new file mode 100644 index 0000000000..f66dc8765b --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-file-l1-2-0.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-file-l1-2-0 + +EXPORTS + +CreateFile2 +GetTempPathW +GetVolumeNameForVolumeMountPointW +GetVolumePathNamesForVolumeNameW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-file-l1-2-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-file-l1-2-1.def new file mode 100644 index 0000000000..5d1e45028f --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-file-l1-2-1.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-file-l1-2-1 + +EXPORTS + +GetCompressedFileSizeA +GetCompressedFileSizeW +SetFileIoOverlappedRange diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-file-l1-2-2.def b/lib/libc/mingw/lib-common/api-ms-win-core-file-l1-2-2.def new file mode 100644 index 0000000000..5ef8f9461a --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-file-l1-2-2.def @@ -0,0 +1,14 @@ +LIBRARY api-ms-win-core-file-l1-2-2 + +EXPORTS + +AreFileApisANSI +FindFirstFileNameW +FindFirstStreamW +FindNextFileNameW +FindNextStreamW +GetTempFileNameA +GetTempPathA +GetVolumeInformationA +SetFileApisToANSI +SetFileApisToOEM diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-file-l1-2-2_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-file-l1-2-2_windowsapp.def new file mode 100644 index 0000000000..10b71c9bec --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-file-l1-2-2_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-file-l1-2-2 + +EXPORTS + +AreFileApisANSI +GetTempFileNameA +GetTempPathA +GetVolumeInformationA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-file-l1-2-3.def b/lib/libc/mingw/lib-common/api-ms-win-core-file-l1-2-3.def new file mode 100644 index 0000000000..661ebc4f7a --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-file-l1-2-3.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-file-l1-2-3 + +EXPORTS + +GetDiskSpaceInformationA +GetDiskSpaceInformationW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-file-l2-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-file-l2-1-0.def new file mode 100644 index 0000000000..550b9cd669 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-file-l2-1-0.def @@ -0,0 +1,15 @@ +LIBRARY api-ms-win-core-file-l2-1-0 + +EXPORTS + +CopyFile2 +CopyFileExW +CreateDirectoryExW +CreateHardLinkW +CreateSymbolicLinkW +GetFileInformationByHandleEx +MoveFileExW +MoveFileWithProgressW +ReadDirectoryChangesW +ReOpenFile +ReplaceFileW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-file-l2-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-file-l2-1-1.def new file mode 100644 index 0000000000..a362f060de --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-file-l2-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-file-l2-1-1 + +EXPORTS + +OpenFileById diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-file-l2-1-2.def b/lib/libc/mingw/lib-common/api-ms-win-core-file-l2-1-2.def new file mode 100644 index 0000000000..a01581d9f5 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-file-l2-1-2.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-file-l2-1-2 + +EXPORTS + +CopyFileW +CreateHardLinkA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-file-l2-1-2_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-file-l2-1-2_windowsapp.def new file mode 100644 index 0000000000..2bcfe4d54f --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-file-l2-1-2_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-file-l2-1-2 + +EXPORTS + +CopyFileW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-file-l2-1-3.def b/lib/libc/mingw/lib-common/api-ms-win-core-file-l2-1-3.def new file mode 100644 index 0000000000..abeeef4021 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-file-l2-1-3.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-file-l2-1-3 + +EXPORTS + +ReadDirectoryChangesExW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-firmware-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-firmware-l1-1-0.def new file mode 100644 index 0000000000..a935244efc --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-firmware-l1-1-0.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-core-firmware-l1-1-0 + +EXPORTS + +GetFirmwareEnvironmentVariableA +GetFirmwareEnvironmentVariableExA +GetFirmwareEnvironmentVariableExW +GetFirmwareEnvironmentVariableW +SetFirmwareEnvironmentVariableA +SetFirmwareEnvironmentVariableExA +SetFirmwareEnvironmentVariableExW +SetFirmwareEnvironmentVariableW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-handle-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-handle-l1-1-0.def new file mode 100644 index 0000000000..ae6df29659 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-handle-l1-1-0.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-handle-l1-1-0 + +EXPORTS + +CloseHandle +CompareObjectHandles +DuplicateHandle +GetHandleInformation +SetHandleInformation diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-heap-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-heap-l1-1-0.def new file mode 100644 index 0000000000..36855dcf98 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-heap-l1-1-0.def @@ -0,0 +1,19 @@ +LIBRARY api-ms-win-core-heap-l1-1-0 + +EXPORTS + +GetProcessHeap +GetProcessHeaps +HeapAlloc +HeapCompact +HeapCreate +HeapDestroy +HeapFree +HeapLock +HeapQueryInformation +HeapReAlloc +HeapSetInformation +HeapSize +HeapUnlock +HeapValidate +HeapWalk diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-heap-l2-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-heap-l2-1-0.def new file mode 100644 index 0000000000..f78a08de27 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-heap-l2-1-0.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-core-heap-l2-1-0 + +EXPORTS + +GlobalAlloc +GlobalFree +LocalAlloc +LocalFree +LocalLock +LocalReAlloc +LocalUnlock diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-heap-l2-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-heap-l2-1-0_windowsapp.def new file mode 100644 index 0000000000..8db6ba16ce --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-heap-l2-1-0_windowsapp.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-heap-l2-1-0 + +EXPORTS + +GlobalAlloc +GlobalFree +LocalAlloc +LocalFree +LocalReAlloc diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-heap-obsolete-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-heap-obsolete-l1-1-0.def new file mode 100644 index 0000000000..3402d7e220 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-heap-obsolete-l1-1-0.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-core-heap-obsolete-l1-1-0 + +EXPORTS + +GlobalFlags +GlobalHandle +GlobalLock +GlobalReAlloc +GlobalSize +GlobalUnlock +LocalFlags +LocalSize diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-heap-obsolete-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-heap-obsolete-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..ba2dcc6d40 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-heap-obsolete-l1-1-0_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-heap-obsolete-l1-1-0 + +EXPORTS + +GlobalLock +GlobalReAlloc +GlobalSize +GlobalUnlock diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-interlocked-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-interlocked-l1-1-0.def new file mode 100644 index 0000000000..b3a441e0af --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-interlocked-l1-1-0.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-interlocked-l1-1-0 + +EXPORTS + +InitializeSListHead +InterlockedFlushSList +InterlockedPopEntrySList +InterlockedPushEntrySList +QueryDepthSList diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-interlocked-l1-2-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-interlocked-l1-2-0.def new file mode 100644 index 0000000000..eb0ff81fbb --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-interlocked-l1-2-0.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-interlocked-l1-2-0 + +EXPORTS + +InterlockedPushListSListEx diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-io-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-io-l1-1-0.def new file mode 100644 index 0000000000..8fd77c911d --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-io-l1-1-0.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-core-io-l1-1-0 + +EXPORTS + +CancelIoEx +CreateIoCompletionPort +DeviceIoControl +GetOverlappedResult +GetQueuedCompletionStatus +GetQueuedCompletionStatusEx +PostQueuedCompletionStatus diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-io-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-io-l1-1-1.def new file mode 100644 index 0000000000..41668ee7ac --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-io-l1-1-1.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-io-l1-1-1 + +EXPORTS + +CancelIo +CancelSynchronousIo +GetOverlappedResultEx diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-io-l1-1-1_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-io-l1-1-1_windowsapp.def new file mode 100644 index 0000000000..69b913f0b5 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-io-l1-1-1_windowsapp.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-io-l1-1-1 + +EXPORTS + +CancelIo +GetOverlappedResultEx diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-job-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-job-l1-1-0.def new file mode 100644 index 0000000000..cbd2a18a83 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-job-l1-1-0.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-job-l1-1-0 + +EXPORTS + +IsProcessInJob diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-job-l2-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-job-l2-1-0.def new file mode 100644 index 0000000000..7f4e9d2a3a --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-job-l2-1-0.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-core-job-l2-1-0 + +EXPORTS + +AssignProcessToJobObject +CreateJobObjectW +OpenJobObjectW +QueryInformationJobObject +SetInformationJobObject +TerminateJobObject diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-job-l2-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-job-l2-1-0_windowsapp.def new file mode 100644 index 0000000000..b044e6515b --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-job-l2-1-0_windowsapp.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-job-l2-1-0 + +EXPORTS + +AssignProcessToJobObject +CreateJobObjectW +SetInformationJobObject diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-job-l2-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-job-l2-1-1.def new file mode 100644 index 0000000000..89c0e1c0a5 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-job-l2-1-1.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-job-l2-1-1 + +EXPORTS + +FreeMemoryJobObject +QueryIoRateControlInformationJobObject +SetIoRateControlInformationJobObject diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-ansi-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-ansi-l1-1-0.def new file mode 100644 index 0000000000..c00819bbc9 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-ansi-l1-1-0.def @@ -0,0 +1,15 @@ +LIBRARY api-ms-win-core-kernel32-legacy-ansi-l1-1-0 + +EXPORTS + +AddLocalAlternateComputerNameA +CreateFileMappingNumaA +CreateFileTransactedA +CreateJobObjectA +FindFirstVolumeMountPointA +FindNextVolumeMountPointA +GetFileAttributesTransactedA +OpenJobObjectA +SetDllDirectoryA +SetVolumeLabelA +SetVolumeMountPointA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-ansi-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-ansi-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..3d8b7710c2 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-ansi-l1-1-0_windowsapp.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-kernel32-legacy-ansi-l1-1-0 + +EXPORTS + +SetDllDirectoryA +SetVolumeLabelA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-0.def new file mode 100644 index 0000000000..43be046ccc --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-0.def @@ -0,0 +1,41 @@ +LIBRARY api-ms-win-core-kernel32-legacy-l1-1-0 + +EXPORTS + +AddLocalAlternateComputerNameW +BackupRead +BackupWrite +BindIoCompletionCallback +CopyFileA +CreateFileMappingA +CreateFileTransactedW +CreateMailslotA +CreateNamedPipeA +DnsHostnameToComputerNameW +DosDateTimeToFileTime +FileTimeToDosDateTime +FindResourceA +FindResourceExA +GetComputerNameA +GetComputerNameW +GetMaximumProcessorGroupCount +GetNamedPipeClientProcessId +GetNamedPipeServerProcessId +GetShortPathNameA +GetStartupInfoA +GetSystemPowerStatus +GetTapeParameters +GetThreadSelectorEntry +GlobalMemoryStatus +MoveFileA +MoveFileExA +MoveFileW +OpenFile +PulseEvent +RegisterWaitForSingleObject +SetFileCompletionNotificationModes +SetHandleCount +SetMailslotInfo +SetVolumeLabelW +UnregisterWait +WTSGetActiveConsoleSessionId diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..75d3067a02 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-0_windowsapp.def @@ -0,0 +1,23 @@ +LIBRARY api-ms-win-core-kernel32-legacy-l1-1-0 + +EXPORTS + +CopyFileA +CreateFileMappingA +CreateNamedPipeA +DosDateTimeToFileTime +FileTimeToDosDateTime +FindResourceA +GetComputerNameA +GetComputerNameW +GetShortPathNameA +GetStartupInfoA +GetSystemPowerStatus +GlobalMemoryStatus +MoveFileA +MoveFileExA +MoveFileW +RegisterWaitForSingleObject +SetFileCompletionNotificationModes +SetVolumeLabelW +UnregisterWait diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-1.def new file mode 100644 index 0000000000..0c2b46057f --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-1.def @@ -0,0 +1,18 @@ +LIBRARY api-ms-win-core-kernel32-legacy-l1-1-1 + +EXPORTS + +FindFirstVolumeMountPointW +FindNextVolumeMountPointW +FindVolumeMountPointClose +GetFileAttributesTransactedW +GetFirmwareType +GetNumaAvailableMemoryNodeEx +GetNumaNodeProcessorMask +GetNumaProcessorNodeEx +PowerClearRequest +PowerCreateRequest +PowerSetRequest +SetDllDirectoryW +SetVolumeMountPointW +VerifyVersionInfoW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-1_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-1_windowsapp.def new file mode 100644 index 0000000000..55f945c1af --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-1_windowsapp.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-kernel32-legacy-l1-1-1 + +EXPORTS + +SetDllDirectoryW +VerifyVersionInfoW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-2.def b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-2.def new file mode 100644 index 0000000000..9f6dcf4170 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-2.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-core-kernel32-legacy-l1-1-2 + +EXPORTS + +GetBinaryTypeW +Module32First +Module32Next +OpenFileMappingA +Process32First +Process32Next +SetTermsrvAppInstallMode +VerifyVersionInfoA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-2_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-2_windowsapp.def new file mode 100644 index 0000000000..75f2f22356 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-2_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-kernel32-legacy-l1-1-2 + +EXPORTS + +OpenFileMappingA +Process32First +Process32Next +VerifyVersionInfoA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-3.def b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-3.def new file mode 100644 index 0000000000..09be6d56ee --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-3.def @@ -0,0 +1,18 @@ +LIBRARY api-ms-win-core-kernel32-legacy-l1-1-3 + +EXPORTS + +CopyFileTransactedW +CreateDirectoryTransactedW +CreateHardLinkTransactedW +CreateMailslotW +CreateSymbolicLinkTransactedW +DeleteFileTransactedW +FindFirstFileTransactedW +GetBinaryTypeA +GetCompressedFileSizeTransactedW +GetFullPathNameTransactedW +GetLongPathNameTransactedW +MoveFileTransactedW +RemoveDirectoryTransactedW +SetFileAttributesTransactedW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-4.def b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-4.def new file mode 100644 index 0000000000..fc043034f4 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-4.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-kernel32-legacy-l1-1-4 + +EXPORTS + +GetMailslotInfo diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-5.def b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-5.def new file mode 100644 index 0000000000..82a4c3f246 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-5.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-kernel32-legacy-l1-1-5 + +EXPORTS + +GetDllDirectoryW +SetThreadExecutionState diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-5_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-5_windowsapp.def new file mode 100644 index 0000000000..7cee34b81d --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-5_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-kernel32-legacy-l1-1-5 + +EXPORTS + +SetThreadExecutionState diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-6.def b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-6.def new file mode 100644 index 0000000000..daa567cc11 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-kernel32-legacy-l1-1-6.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-kernel32-legacy-l1-1-6 + +EXPORTS + +GetDevicePowerState +GetMaximumProcessorCount diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-largeinteger-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-largeinteger-l1-1-0.def new file mode 100644 index 0000000000..c7ca573bdc --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-largeinteger-l1-1-0.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-largeinteger-l1-1-0 + +EXPORTS + +MulDiv diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-libraryloader-l1-2-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-libraryloader-l1-2-0.def new file mode 100644 index 0000000000..5fac717b33 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-libraryloader-l1-2-0.def @@ -0,0 +1,33 @@ +LIBRARY api-ms-win-core-libraryloader-l1-2-0 + +EXPORTS + +AddDllDirectory +DisableThreadLibraryCalls +EnumResourceLanguagesExA +EnumResourceLanguagesExW +EnumResourceNamesExA +EnumResourceNamesExW +EnumResourceTypesExA +EnumResourceTypesExW +FindResourceExW +FindStringOrdinal +FreeLibrary +FreeLibraryAndExitThread +FreeResource +GetModuleFileNameA +GetModuleFileNameW +GetModuleHandleA +GetModuleHandleExA +GetModuleHandleExW +GetModuleHandleW +GetProcAddress +LoadLibraryExA +LoadLibraryExW +LoadResource +LoadStringA +LoadStringW +LockResource +RemoveDllDirectory +SetDefaultDllDirectories +SizeofResource diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-libraryloader-l1-2-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-libraryloader-l1-2-0_windowsapp.def new file mode 100644 index 0000000000..d3119e5563 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-libraryloader-l1-2-0_windowsapp.def @@ -0,0 +1,27 @@ +LIBRARY api-ms-win-core-libraryloader-l1-2-0 + +EXPORTS + +AddDllDirectory +DisableThreadLibraryCalls +FindResourceExW +FindStringOrdinal +FreeLibrary +FreeLibraryAndExitThread +FreeResource +GetModuleFileNameA +GetModuleFileNameW +GetModuleHandleA +GetModuleHandleExA +GetModuleHandleExW +GetModuleHandleW +GetProcAddress +LoadLibraryExA +LoadLibraryExW +LoadResource +LoadStringA +LoadStringW +LockResource +RemoveDllDirectory +SetDefaultDllDirectories +SizeofResource diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-libraryloader-l1-2-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-libraryloader-l1-2-1.def new file mode 100644 index 0000000000..03a8767073 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-libraryloader-l1-2-1.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-libraryloader-l1-2-1 + +EXPORTS + +FindResourceW +LoadLibraryA +LoadLibraryW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-libraryloader-l1-2-2.def b/lib/libc/mingw/lib-common/api-ms-win-core-libraryloader-l1-2-2.def new file mode 100644 index 0000000000..39da1b608d --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-libraryloader-l1-2-2.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-libraryloader-l1-2-2 + +EXPORTS + +EnumResourceNamesW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-libraryloader-l2-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-libraryloader-l2-1-0.def new file mode 100644 index 0000000000..eba35f6ad8 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-libraryloader-l2-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-libraryloader-l2-1-0 + +EXPORTS + +LoadPackagedLibrary +QueryOptionalDelayLoadedAPI diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-localization-ansi-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-localization-ansi-l1-1-0.def new file mode 100644 index 0000000000..da7260f77f --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-localization-ansi-l1-1-0.def @@ -0,0 +1,22 @@ +LIBRARY api-ms-win-core-localization-ansi-l1-1-0 + +EXPORTS + +EnumCalendarInfoA +EnumCalendarInfoExA +EnumDateFormatsA +EnumDateFormatsExA +EnumLanguageGroupLocalesA +EnumSystemCodePagesA +EnumSystemLanguageGroupsA +EnumTimeFormatsA +EnumUILanguagesA +FoldStringA +GetCalendarInfoA +GetCPInfoExA +GetCurrencyFormatA +GetGeoInfoA +GetNumberFormatA +GetStringTypeExA +SetCalendarInfoA +SetLocaleInfoA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-localization-ansi-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-localization-ansi-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..6028463568 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-localization-ansi-l1-1-0_windowsapp.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-core-localization-ansi-l1-1-0 + +EXPORTS + +EnumUILanguagesA +FoldStringA +GetCalendarInfoA +GetStringTypeExA +SetCalendarInfoA +SetLocaleInfoA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-localization-l1-2-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-localization-l1-2-0.def new file mode 100644 index 0000000000..4ae8956300 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-localization-l1-2-0.def @@ -0,0 +1,63 @@ +LIBRARY api-ms-win-core-localization-l1-2-0 + +EXPORTS + +ConvertDefaultLocale +EnumSystemGeoID +EnumSystemLocalesA +EnumSystemLocalesW +FindNLSString +FindNLSStringEx +FormatMessageA +FormatMessageW +GetACP +GetCalendarInfoEx +GetCalendarInfoW +GetCPInfo +GetCPInfoExW +GetFileMUIInfo +GetFileMUIPath +GetGeoInfoW +GetLocaleInfoA +GetLocaleInfoEx +GetLocaleInfoW +GetNLSVersion +GetNLSVersionEx +GetOEMCP +GetProcessPreferredUILanguages +GetSystemDefaultLangID +GetSystemDefaultLCID +GetSystemPreferredUILanguages +GetThreadLocale +GetThreadPreferredUILanguages +GetThreadUILanguage +GetUILanguageInfo +GetUserDefaultLangID +GetUserDefaultLCID +GetUserDefaultLocaleName +GetUserGeoID +GetUserPreferredUILanguages +IdnToAscii +IdnToUnicode +IsDBCSLeadByte +IsDBCSLeadByteEx +IsNLSDefinedString +IsValidCodePage +IsValidLanguageGroup +IsValidLocale +IsValidLocaleName +IsValidNLSVersion +LCMapStringA +LCMapStringEx +LCMapStringW +LocaleNameToLCID +ResolveLocaleName +SetCalendarInfoW +SetLocaleInfoW +SetProcessPreferredUILanguages +SetThreadLocale +SetThreadPreferredUILanguages +SetThreadUILanguage +SetUserGeoID +VerLanguageNameA +VerLanguageNameW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-localization-l1-2-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-localization-l1-2-0_windowsapp.def new file mode 100644 index 0000000000..de9a0c16bf --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-localization-l1-2-0_windowsapp.def @@ -0,0 +1,62 @@ +LIBRARY api-ms-win-core-localization-l1-2-0 + +EXPORTS + +ConvertDefaultLocale +EnumSystemGeoID +EnumSystemLocalesA +EnumSystemLocalesW +FindNLSString +FindNLSStringEx +FormatMessageA +FormatMessageW +GetACP +GetCalendarInfoEx +GetCalendarInfoW +GetCPInfo +GetCPInfoExW +GetFileMUIInfo +GetFileMUIPath +GetGeoInfoW +GetLocaleInfoA +GetLocaleInfoEx +GetLocaleInfoW +GetNLSVersion +GetNLSVersionEx +GetOEMCP +GetProcessPreferredUILanguages +GetSystemDefaultLangID +GetSystemDefaultLCID +GetSystemPreferredUILanguages +GetThreadLocale +GetThreadPreferredUILanguages +GetThreadUILanguage +GetUILanguageInfo +GetUserDefaultLangID +GetUserDefaultLCID +GetUserDefaultLocaleName +GetUserGeoID +GetUserPreferredUILanguages +IdnToAscii +IdnToUnicode +IsDBCSLeadByte +IsDBCSLeadByteEx +IsNLSDefinedString +IsValidCodePage +IsValidLanguageGroup +IsValidLocale +IsValidLocaleName +IsValidNLSVersion +LCMapStringA +LCMapStringEx +LCMapStringW +LocaleNameToLCID +ResolveLocaleName +SetCalendarInfoW +SetLocaleInfoW +SetProcessPreferredUILanguages +SetThreadLocale +SetThreadPreferredUILanguages +SetThreadUILanguage +VerLanguageNameA +VerLanguageNameW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-localization-l1-2-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-localization-l1-2-1.def new file mode 100644 index 0000000000..71012cae89 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-localization-l1-2-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-localization-l1-2-1 + +EXPORTS + +EnumSystemLocalesEx diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-localization-l1-2-2.def b/lib/libc/mingw/lib-common/api-ms-win-core-localization-l1-2-2.def new file mode 100644 index 0000000000..aad38fecb2 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-localization-l1-2-2.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-localization-l1-2-2 + +EXPORTS + +GetSystemDefaultLocaleName +LCIDToLocaleName diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-localization-l1-2-3.def b/lib/libc/mingw/lib-common/api-ms-win-core-localization-l1-2-3.def new file mode 100644 index 0000000000..2e310a9c3a --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-localization-l1-2-3.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-localization-l1-2-3 + +EXPORTS + +EnumSystemGeoNames +GetGeoInfoEx +GetUserDefaultGeoName +SetUserGeoName diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-localization-l1-2-4.def b/lib/libc/mingw/lib-common/api-ms-win-core-localization-l1-2-4.def new file mode 100644 index 0000000000..a3f69f39a8 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-localization-l1-2-4.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-localization-l1-2-4 + +EXPORTS + +RestoreThreadPreferredUILanguages +SetThreadPreferredUILanguages2 diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-localization-l2-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-localization-l2-1-0.def new file mode 100644 index 0000000000..00307d4954 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-localization-l2-1-0.def @@ -0,0 +1,16 @@ +LIBRARY api-ms-win-core-localization-l2-1-0 + +EXPORTS + +EnumCalendarInfoExEx +EnumCalendarInfoExW +EnumCalendarInfoW +EnumDateFormatsExEx +EnumDateFormatsExW +EnumDateFormatsW +EnumSystemCodePagesW +EnumTimeFormatsEx +EnumTimeFormatsW +GetCurrencyFormatEx +GetCurrencyFormatW +GetNumberFormatEx diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-localization-l2-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-localization-l2-1-0_windowsapp.def new file mode 100644 index 0000000000..42abb8784c --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-localization-l2-1-0_windowsapp.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-core-localization-l2-1-0 + +EXPORTS + +EnumCalendarInfoExEx +EnumCalendarInfoW +EnumDateFormatsExEx +EnumSystemCodePagesW +EnumTimeFormatsEx +GetCurrencyFormatEx +GetCurrencyFormatW +GetNumberFormatEx diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-localization-obsolete-l1-2-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-localization-obsolete-l1-2-0.def new file mode 100644 index 0000000000..130780154d --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-localization-obsolete-l1-2-0.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-core-localization-obsolete-l1-2-0 + +EXPORTS + +CompareStringA +EnumLanguageGroupLocalesW +EnumSystemLanguageGroupsW +EnumUILanguagesW +GetNumberFormatW +GetStringTypeA +GetSystemDefaultUILanguage +GetUserDefaultUILanguage diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-localization-obsolete-l1-2-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-localization-obsolete-l1-2-0_windowsapp.def new file mode 100644 index 0000000000..47dc192de0 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-localization-obsolete-l1-2-0_windowsapp.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-localization-obsolete-l1-2-0 + +EXPORTS + +CompareStringA +EnumUILanguagesW +GetStringTypeA +GetSystemDefaultUILanguage +GetUserDefaultUILanguage diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-0.def new file mode 100644 index 0000000000..fe1afb8b4b --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-0.def @@ -0,0 +1,20 @@ +LIBRARY api-ms-win-core-memory-l1-1-0 + +EXPORTS + +CreateFileMappingW +FlushViewOfFile +MapViewOfFile +MapViewOfFileEx +OpenFileMappingW +ReadProcessMemory +UnmapViewOfFile +VirtualAlloc +VirtualAllocEx +VirtualFree +VirtualFreeEx +VirtualProtect +VirtualProtectEx +VirtualQuery +VirtualQueryEx +WriteProcessMemory diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-1.def new file mode 100644 index 0000000000..07a944aa7c --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-1.def @@ -0,0 +1,20 @@ +LIBRARY api-ms-win-core-memory-l1-1-1 + +EXPORTS + +CreateFileMappingFromApp +CreateFileMappingNumaW +CreateMemoryResourceNotification +GetLargePageMinimum +GetProcessWorkingSetSizeEx +GetSystemFileCacheSize +GetWriteWatch +MapViewOfFileFromApp +PrefetchVirtualMemory +QueryMemoryResourceNotification +ResetWriteWatch +SetProcessWorkingSetSizeEx +SetSystemFileCacheSize +UnmapViewOfFileEx +VirtualLock +VirtualUnlock diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-1_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-1_windowsapp.def new file mode 100644 index 0000000000..194ce4eaf8 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-1_windowsapp.def @@ -0,0 +1,14 @@ +LIBRARY api-ms-win-core-memory-l1-1-1 + +EXPORTS + +CreateFileMappingFromApp +GetLargePageMinimum +GetProcessWorkingSetSizeEx +GetWriteWatch +MapViewOfFileFromApp +ResetWriteWatch +SetProcessWorkingSetSizeEx +UnmapViewOfFileEx +VirtualLock +VirtualUnlock diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-2.def b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-2.def new file mode 100644 index 0000000000..2ad9631037 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-2.def @@ -0,0 +1,15 @@ +LIBRARY api-ms-win-core-memory-l1-1-2 + +EXPORTS + +AllocateUserPhysicalPages +AllocateUserPhysicalPagesNuma +DiscardVirtualMemory +FreeUserPhysicalPages +GetMemoryErrorHandlingCapabilities +MapUserPhysicalPages +OfferVirtualMemory +ReclaimVirtualMemory +RegisterBadMemoryNotification +UnregisterBadMemoryNotification +VirtualAllocExNuma diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-2_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-2_windowsapp.def new file mode 100644 index 0000000000..8cd4da6a14 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-2_windowsapp.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-memory-l1-1-2 + +EXPORTS + +DiscardVirtualMemory +OfferVirtualMemory +ReclaimVirtualMemory diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-3.def b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-3.def new file mode 100644 index 0000000000..2699bd2a2c --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-3.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-memory-l1-1-3 + +EXPORTS + +OpenFileMappingFromApp +SetProcessValidCallTargets +VirtualAllocFromApp +VirtualProtectFromApp diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-4.def b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-4.def new file mode 100644 index 0000000000..f87e72b0c0 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-4.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-memory-l1-1-4 + +EXPORTS + +QueryVirtualMemoryInformation diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-5.def b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-5.def new file mode 100644 index 0000000000..f468baa0ad --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-5.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-memory-l1-1-5 + +EXPORTS + +MapViewOfFileNuma2 +UnmapViewOfFile2 +VirtualUnlockEx diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-5_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-5_windowsapp.def new file mode 100644 index 0000000000..0a0ed7e860 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-5_windowsapp.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-memory-l1-1-5 + +EXPORTS + +UnmapViewOfFile2 +VirtualUnlockEx diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-6.def b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-6.def new file mode 100644 index 0000000000..1c357027bd --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-6.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-memory-l1-1-6 + +EXPORTS + +MapViewOfFile3 +MapViewOfFile3FromApp +VirtualAlloc2 +VirtualAlloc2FromApp diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-6_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-6_windowsapp.def new file mode 100644 index 0000000000..4b55a7d908 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-6_windowsapp.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-memory-l1-1-6 + +EXPORTS + +MapViewOfFile3FromApp +VirtualAlloc2FromApp diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-7.def b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-7.def new file mode 100644 index 0000000000..2ff99b18d9 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-7.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-memory-l1-1-7 + +EXPORTS + +CreateFileMapping2 +SetProcessValidCallTargetsForMappedView diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-7_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-7_windowsapp.def new file mode 100644 index 0000000000..a18fe2eab9 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-memory-l1-1-7_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-memory-l1-1-7 + +EXPORTS + +SetProcessValidCallTargetsForMappedView diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-namedpipe-ansi-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-namedpipe-ansi-l1-1-0.def new file mode 100644 index 0000000000..cab65a5c8c --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-namedpipe-ansi-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-namedpipe-ansi-l1-1-0 + +EXPORTS + +GetNamedPipeClientComputerNameA +GetNamedPipeHandleStateA +WaitNamedPipeA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-namedpipe-ansi-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-namedpipe-ansi-l1-1-1.def new file mode 100644 index 0000000000..f22081930a --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-namedpipe-ansi-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-namedpipe-ansi-l1-1-1 + +EXPORTS + +CallNamedPipeA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-namedpipe-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-namedpipe-l1-1-0.def new file mode 100644 index 0000000000..30fe0888a7 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-namedpipe-l1-1-0.def @@ -0,0 +1,14 @@ +LIBRARY api-ms-win-core-namedpipe-l1-1-0 + +EXPORTS + +ConnectNamedPipe +CreateNamedPipeW +CreatePipe +DisconnectNamedPipe +GetNamedPipeClientComputerNameW +ImpersonateNamedPipeClient +PeekNamedPipe +SetNamedPipeHandleState +TransactNamedPipe +WaitNamedPipeW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-namedpipe-l1-2-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-namedpipe-l1-2-1.def new file mode 100644 index 0000000000..f2c2339916 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-namedpipe-l1-2-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-namedpipe-l1-2-1 + +EXPORTS + +GetNamedPipeHandleStateW +GetNamedPipeInfo diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-namedpipe-l1-2-2.def b/lib/libc/mingw/lib-common/api-ms-win-core-namedpipe-l1-2-2.def new file mode 100644 index 0000000000..b194275ba5 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-namedpipe-l1-2-2.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-namedpipe-l1-2-2 + +EXPORTS + +CallNamedPipeW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-namespace-ansi-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-namespace-ansi-l1-1-0.def new file mode 100644 index 0000000000..fa16fade6d --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-namespace-ansi-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-namespace-ansi-l1-1-0 + +EXPORTS + +CreateBoundaryDescriptorA +CreatePrivateNamespaceA +OpenPrivateNamespaceA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-namespace-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-namespace-l1-1-0.def new file mode 100644 index 0000000000..38613de60d --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-namespace-l1-1-0.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-core-namespace-l1-1-0 + +EXPORTS + +AddSIDToBoundaryDescriptor +ClosePrivateNamespace +CreateBoundaryDescriptorW +CreatePrivateNamespaceW +DeleteBoundaryDescriptor +OpenPrivateNamespaceW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-normalization-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-normalization-l1-1-0.def new file mode 100644 index 0000000000..55da3d3117 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-normalization-l1-1-0.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-normalization-l1-1-0 + +EXPORTS + +GetStringScripts +IdnToNameprepUnicode +IsNormalizedString +NormalizeString +VerifyScripts diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-path-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-path-l1-1-0.def new file mode 100644 index 0000000000..42ca163355 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-path-l1-1-0.def @@ -0,0 +1,26 @@ +LIBRARY api-ms-win-core-path-l1-1-0 + +EXPORTS + +PathAllocCanonicalize +PathAllocCombine +PathCchAddBackslash +PathCchAddBackslashEx +PathCchAddExtension +PathCchAppend +PathCchAppendEx +PathCchCanonicalize +PathCchCanonicalizeEx +PathCchCombine +PathCchCombineEx +PathCchFindExtension +PathCchIsRoot +PathCchRemoveBackslash +PathCchRemoveBackslashEx +PathCchRemoveExtension +PathCchRemoveFileSpec +PathCchRenameExtension +PathCchSkipRoot +PathCchStripPrefix +PathCchStripToRoot +PathIsUNCEx diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-perfcounters-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-perfcounters-l1-1-0.def new file mode 100644 index 0000000000..33b59b6e25 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-perfcounters-l1-1-0.def @@ -0,0 +1,18 @@ +LIBRARY api-ms-win-core-perfcounters-l1-1-0 + +EXPORTS + +PerfCreateInstance +PerfDecrementULongCounterValue +PerfDecrementULongLongCounterValue +PerfDeleteInstance +PerfIncrementULongCounterValue +PerfIncrementULongLongCounterValue +PerfQueryInstance +PerfSetCounterRefValue +PerfSetCounterSetInfo +PerfSetULongCounterValue +PerfSetULongLongCounterValue +PerfStartProvider +PerfStartProviderEx +PerfStopProvider diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-privateprofile-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-privateprofile-l1-1-0.def new file mode 100644 index 0000000000..fc5581fe1a --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-privateprofile-l1-1-0.def @@ -0,0 +1,18 @@ +LIBRARY api-ms-win-core-privateprofile-l1-1-0 + +EXPORTS + +GetPrivateProfileIntA +GetPrivateProfileIntW +GetPrivateProfileSectionW +GetPrivateProfileStringA +GetPrivateProfileStringW +GetProfileIntA +GetProfileIntW +GetProfileSectionA +GetProfileSectionW +GetProfileStringA +GetProfileStringW +WritePrivateProfileSectionA +WritePrivateProfileStringA +WritePrivateProfileStringW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-privateprofile-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-privateprofile-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..9ada645eab --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-privateprofile-l1-1-0_windowsapp.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-privateprofile-l1-1-0 + +EXPORTS + +GetPrivateProfileIntA +GetPrivateProfileStringA +GetPrivateProfileStringW +WritePrivateProfileStringA +WritePrivateProfileStringW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-privateprofile-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-privateprofile-l1-1-1.def new file mode 100644 index 0000000000..27fdfc399a --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-privateprofile-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-privateprofile-l1-1-1 + +EXPORTS + +GetPrivateProfileSectionA +WritePrivateProfileSectionW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-privateprofile-l1-1-1_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-privateprofile-l1-1-1_windowsapp.def new file mode 100644 index 0000000000..3238a609d1 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-privateprofile-l1-1-1_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-privateprofile-l1-1-1 + +EXPORTS + +GetPrivateProfileSectionA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-processenvironment-ansi-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-processenvironment-ansi-l1-1-0.def new file mode 100644 index 0000000000..3dc3ca3292 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-processenvironment-ansi-l1-1-0.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-processenvironment-ansi-l1-1-0 + +EXPORTS + +SetEnvironmentStringsA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-processenvironment-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-processenvironment-l1-1-0.def new file mode 100644 index 0000000000..332eb4813d --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-processenvironment-l1-1-0.def @@ -0,0 +1,25 @@ +LIBRARY api-ms-win-core-processenvironment-l1-1-0 + +EXPORTS + +ExpandEnvironmentStringsA +ExpandEnvironmentStringsW +FreeEnvironmentStringsA +FreeEnvironmentStringsW +GetCommandLineA +GetCommandLineW +GetCurrentDirectoryA +GetCurrentDirectoryW +GetEnvironmentStrings +GetEnvironmentStringsW +GetEnvironmentVariableA +GetEnvironmentVariableW +GetStdHandle +SearchPathW +SetCurrentDirectoryA +SetCurrentDirectoryW +SetEnvironmentStringsW +SetEnvironmentVariableA +SetEnvironmentVariableW +SetStdHandle +SetStdHandleEx diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-processenvironment-l1-2-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-processenvironment-l1-2-0.def new file mode 100644 index 0000000000..f864f2ff6a --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-processenvironment-l1-2-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-processenvironment-l1-2-0 + +EXPORTS + +NeedCurrentDirectoryForExePathA +NeedCurrentDirectoryForExePathW +SearchPathA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-processenvironment-l1-2-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-processenvironment-l1-2-0_windowsapp.def new file mode 100644 index 0000000000..0987083d1f --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-processenvironment-l1-2-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-processenvironment-l1-2-0 + +EXPORTS + +SearchPathA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-processsnapshot-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-processsnapshot-l1-1-0.def new file mode 100644 index 0000000000..77c533ea5a --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-processsnapshot-l1-1-0.def @@ -0,0 +1,14 @@ +LIBRARY api-ms-win-core-processsnapshot-l1-1-0 + +EXPORTS + +PssCaptureSnapshot +PssDuplicateSnapshot +PssFreeSnapshot +PssQuerySnapshot +PssWalkMarkerCreate +PssWalkMarkerFree +PssWalkMarkerGetPosition +PssWalkMarkerSeekToBeginning +PssWalkMarkerSetPosition +PssWalkSnapshot diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-processthreads-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-processthreads-l1-1-0.def new file mode 100644 index 0000000000..f2d3b5d0d8 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-processthreads-l1-1-0.def @@ -0,0 +1,53 @@ +LIBRARY api-ms-win-core-processthreads-l1-1-0 + +EXPORTS + +CreateProcessA +CreateProcessAsUserW +CreateProcessW +CreateRemoteThread +CreateRemoteThreadEx +CreateThread +DeleteProcThreadAttributeList +ExitProcess +ExitThread +FlushProcessWriteBuffers +GetCurrentProcess +GetCurrentProcessId +GetCurrentThread +GetCurrentThreadId +GetExitCodeProcess +GetExitCodeThread +GetPriorityClass +GetProcessId +GetProcessIdOfThread +GetProcessTimes +GetProcessVersion +GetStartupInfoW +GetThreadId +GetThreadPriority +GetThreadPriorityBoost +InitializeProcThreadAttributeList +OpenProcessToken +OpenThread +OpenThreadToken +ProcessIdToSessionId +QueryProcessAffinityUpdateMode +QueueUserAPC +ResumeThread +SetPriorityClass +SetProcessAffinityUpdateMode +SetProcessShutdownParameters +SetThreadPriority +SetThreadPriorityBoost +SetThreadStackGuarantee +SetThreadToken +SuspendThread +SwitchToThread +TerminateProcess +TerminateThread +TlsAlloc +TlsFree +TlsGetValue +TlsSetValue +UpdateProcThreadAttribute diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-processthreads-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-processthreads-l1-1-1.def new file mode 100644 index 0000000000..b3f1baa78c --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-processthreads-l1-1-1.def @@ -0,0 +1,18 @@ +LIBRARY api-ms-win-core-processthreads-l1-1-1 + +EXPORTS + +FlushInstructionCache +GetCurrentProcessorNumber +GetCurrentProcessorNumberEx +GetCurrentThreadStackLimits +GetProcessHandleCount +GetProcessMitigationPolicy +GetThreadContext +GetThreadIdealProcessorEx +GetThreadTimes +IsProcessorFeaturePresent +OpenProcess +SetProcessMitigationPolicy +SetThreadContext +SetThreadIdealProcessorEx diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-processthreads-l1-1-2.def b/lib/libc/mingw/lib-common/api-ms-win-core-processthreads-l1-1-2.def new file mode 100644 index 0000000000..a6559cd60c --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-processthreads-l1-1-2.def @@ -0,0 +1,13 @@ +LIBRARY api-ms-win-core-processthreads-l1-1-2 + +EXPORTS + +GetProcessPriorityBoost +GetSystemTimes +GetThreadInformation +GetThreadIOPendingFlag +IsProcessCritical +QueryProtectedPolicy +SetProcessPriorityBoost +SetProtectedPolicy +SetThreadInformation diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-processthreads-l1-1-2_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-processthreads-l1-1-2_windowsapp.def new file mode 100644 index 0000000000..d2e7dc236c --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-processthreads-l1-1-2_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-processthreads-l1-1-2 + +EXPORTS + +GetProcessPriorityBoost +GetSystemTimes +SetProcessPriorityBoost +SetThreadInformation diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-processthreads-l1-1-3.def b/lib/libc/mingw/lib-common/api-ms-win-core-processthreads-l1-1-3.def new file mode 100644 index 0000000000..23040a6ec7 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-processthreads-l1-1-3.def @@ -0,0 +1,16 @@ +LIBRARY api-ms-win-core-processthreads-l1-1-3 + +EXPORTS + +CreateProcessAsUserA +GetProcessDefaultCpuSets +GetProcessInformation +GetProcessShutdownParameters +GetSystemCpuSetInformation +GetThreadDescription +GetThreadSelectedCpuSets +SetProcessDefaultCpuSets +SetProcessInformation +SetThreadDescription +SetThreadIdealProcessor +SetThreadSelectedCpuSets diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-processthreads-l1-1-3_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-processthreads-l1-1-3_windowsapp.def new file mode 100644 index 0000000000..e1a430593d --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-processthreads-l1-1-3_windowsapp.def @@ -0,0 +1,15 @@ +LIBRARY api-ms-win-core-processthreads-l1-1-3 + +EXPORTS + +CreateProcessAsUserA +GetProcessDefaultCpuSets +GetProcessInformation +GetSystemCpuSetInformation +GetThreadDescription +GetThreadSelectedCpuSets +SetProcessDefaultCpuSets +SetProcessInformation +SetThreadDescription +SetThreadIdealProcessor +SetThreadSelectedCpuSets diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-processthreads-l1-1-4.def b/lib/libc/mingw/lib-common/api-ms-win-core-processthreads-l1-1-4.def new file mode 100644 index 0000000000..4f85d27a4d --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-processthreads-l1-1-4.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-processthreads-l1-1-4 + +EXPORTS + +SetProcessDynamicEHContinuationTargets +SetProcessDynamicEnforcedCetCompatibleRanges diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-processtopology-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-processtopology-l1-1-0.def new file mode 100644 index 0000000000..ccbf79d96f --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-processtopology-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-processtopology-l1-1-0 + +EXPORTS + +GetProcessGroupAffinity +GetThreadGroupAffinity +SetThreadGroupAffinity diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-processtopology-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-processtopology-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..a9f01daa49 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-processtopology-l1-1-0_windowsapp.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-processtopology-l1-1-0 + +EXPORTS + +GetThreadGroupAffinity +SetThreadGroupAffinity diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-processtopology-obsolete-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-processtopology-obsolete-l1-1-0.def new file mode 100644 index 0000000000..6f54d0b28b --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-processtopology-obsolete-l1-1-0.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-processtopology-obsolete-l1-1-0 + +EXPORTS + +GetActiveProcessorCount +GetProcessAffinityMask +GetProcessIoCounters +SetProcessAffinityMask +SetThreadAffinityMask diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-processtopology-obsolete-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-processtopology-obsolete-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..ab09b2eafd --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-processtopology-obsolete-l1-1-0_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-processtopology-obsolete-l1-1-0 + +EXPORTS + +GetProcessAffinityMask +GetProcessIoCounters +SetProcessAffinityMask +SetThreadAffinityMask diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-processtopology-obsolete-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-processtopology-obsolete-l1-1-1.def new file mode 100644 index 0000000000..191d165cb5 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-processtopology-obsolete-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-processtopology-obsolete-l1-1-1 + +EXPORTS + +GetActiveProcessorGroupCount diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-profile-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-profile-l1-1-0.def new file mode 100644 index 0000000000..9272dad7bf --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-profile-l1-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-profile-l1-1-0 + +EXPORTS + +QueryPerformanceCounter +QueryPerformanceFrequency diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-psapi-ansi-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-psapi-ansi-l1-1-0.def new file mode 100644 index 0000000000..cb308c02d5 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-psapi-ansi-l1-1-0.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-core-psapi-ansi-l1-1-0 + +EXPORTS + +K32EnumPageFilesA +K32GetDeviceDriverBaseNameA +K32GetDeviceDriverFileNameA +K32GetMappedFileNameA +K32GetModuleBaseNameA +K32GetModuleFileNameExA +K32GetProcessImageFileNameA +QueryFullProcessImageNameA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-psapi-ansi-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-psapi-ansi-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..468fa6bf40 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-psapi-ansi-l1-1-0_windowsapp.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-psapi-ansi-l1-1-0 + +EXPORTS + +K32GetModuleBaseNameA +K32GetModuleFileNameExA +QueryFullProcessImageNameA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-psapi-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-psapi-l1-1-0.def new file mode 100644 index 0000000000..ed96c1bffa --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-psapi-l1-1-0.def @@ -0,0 +1,25 @@ +LIBRARY api-ms-win-core-psapi-l1-1-0 + +EXPORTS + +K32EmptyWorkingSet +K32EnumDeviceDrivers +K32EnumPageFilesW +K32EnumProcesses +K32EnumProcessModules +K32EnumProcessModulesEx +K32GetDeviceDriverBaseNameW +K32GetDeviceDriverFileNameW +K32GetMappedFileNameW +K32GetModuleBaseNameW +K32GetModuleFileNameExW +K32GetModuleInformation +K32GetPerformanceInfo +K32GetProcessImageFileNameW +K32GetProcessMemoryInfo +K32GetWsChanges +K32GetWsChangesEx +K32InitializeProcessForWsWatch +K32QueryWorkingSet +K32QueryWorkingSetEx +QueryFullProcessImageNameW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-psapi-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-psapi-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..920bc315ad --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-psapi-l1-1-0_windowsapp.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-core-psapi-l1-1-0 + +EXPORTS + +K32EnumProcesses +K32GetModuleBaseNameW +K32GetModuleFileNameExW +K32GetModuleInformation +K32GetProcessMemoryInfo +K32QueryWorkingSet +K32QueryWorkingSetEx +QueryFullProcessImageNameW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-psm-appnotify-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-psm-appnotify-l1-1-0.def new file mode 100644 index 0000000000..fbddce139b --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-psm-appnotify-l1-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-psm-appnotify-l1-1-0 + +EXPORTS + +RegisterAppStateChangeNotification +UnregisterAppStateChangeNotification diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-quirks-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-quirks-l1-1-0.def new file mode 100644 index 0000000000..820bae79f9 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-quirks-l1-1-0.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-core-quirks-l1-1-0 + +EXPORTS + +QuirkGetData +QuirkGetData2 +QuirkIsEnabled +QuirkIsEnabled2 +QuirkIsEnabled3 +QuirkIsEnabledForPackage +QuirkIsEnabledForPackage2 +QuirkIsEnabledForProcess diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-quirks-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-quirks-l1-1-1.def new file mode 100644 index 0000000000..bb1da215e0 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-quirks-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-quirks-l1-1-1 + +EXPORTS + +QuirkIsEnabledForPackage3 +QuirkIsEnabledForPackage4 diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-realtime-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-realtime-l1-1-0.def new file mode 100644 index 0000000000..52f6851e1f --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-realtime-l1-1-0.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-realtime-l1-1-0 + +EXPORTS + +QueryIdleProcessorCycleTime +QueryIdleProcessorCycleTimeEx +QueryProcessCycleTime +QueryThreadCycleTime +QueryUnbiasedInterruptTime diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-realtime-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-realtime-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..3ea1592fa6 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-realtime-l1-1-0_windowsapp.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-realtime-l1-1-0 + +EXPORTS + +QueryThreadCycleTime +QueryUnbiasedInterruptTime diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-realtime-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-realtime-l1-1-1.def new file mode 100644 index 0000000000..1fa142c3b7 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-realtime-l1-1-1.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-realtime-l1-1-1 + +EXPORTS + +QueryInterruptTime +QueryInterruptTimePrecise +QueryUnbiasedInterruptTimePrecise diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-realtime-l1-1-2.def b/lib/libc/mingw/lib-common/api-ms-win-core-realtime-l1-1-2.def new file mode 100644 index 0000000000..a00ee64ca5 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-realtime-l1-1-2.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-realtime-l1-1-2 + +EXPORTS + +ConvertAuxiliaryCounterToPerformanceCounter +ConvertPerformanceCounterToAuxiliaryCounter +QueryAuxiliaryCounterFrequency diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-registry-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-registry-l1-1-0.def new file mode 100644 index 0000000000..2f01992ed4 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-registry-l1-1-0.def @@ -0,0 +1,47 @@ +LIBRARY api-ms-win-core-registry-l1-1-0 + +EXPORTS + +RegCloseKey +RegCopyTreeW +RegCreateKeyExA +RegCreateKeyExW +RegDeleteKeyExA +RegDeleteKeyExW +RegDeleteTreeA +RegDeleteTreeW +RegDeleteValueA +RegDeleteValueW +RegDisablePredefinedCacheEx +RegEnumKeyExA +RegEnumKeyExW +RegEnumValueA +RegEnumValueW +RegFlushKey +RegGetKeySecurity +RegGetValueA +RegGetValueW +RegLoadAppKeyA +RegLoadAppKeyW +RegLoadKeyA +RegLoadKeyW +RegLoadMUIStringA +RegLoadMUIStringW +RegNotifyChangeKeyValue +RegOpenCurrentUser +RegOpenKeyExA +RegOpenKeyExW +RegOpenUserClassesRoot +RegQueryInfoKeyA +RegQueryInfoKeyW +RegQueryValueExA +RegQueryValueExW +RegRestoreKeyA +RegRestoreKeyW +RegSaveKeyExA +RegSaveKeyExW +RegSetKeySecurity +RegSetValueExA +RegSetValueExW +RegUnLoadKeyA +RegUnLoadKeyW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-registry-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-registry-l1-1-1.def new file mode 100644 index 0000000000..fab2e1bd9a --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-registry-l1-1-1.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-registry-l1-1-1 + +EXPORTS + +RegDeleteKeyValueA +RegDeleteKeyValueW +RegSetKeyValueA +RegSetKeyValueW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-registry-l1-1-2.def b/lib/libc/mingw/lib-common/api-ms-win-core-registry-l1-1-2.def new file mode 100644 index 0000000000..4494f001f1 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-registry-l1-1-2.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-registry-l1-1-2 + +EXPORTS + +RegQueryMultipleValuesA +RegQueryMultipleValuesW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-registry-l2-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-registry-l2-1-0.def new file mode 100644 index 0000000000..81c833c2fd --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-registry-l2-1-0.def @@ -0,0 +1,31 @@ +LIBRARY api-ms-win-core-registry-l2-1-0 + +EXPORTS + +RegConnectRegistryA +RegConnectRegistryW +RegCopyTreeA +RegCreateKeyA +RegCreateKeyTransactedA +RegCreateKeyTransactedW +RegCreateKeyW +RegDeleteKeyA +RegDeleteKeyTransactedA +RegDeleteKeyTransactedW +RegDeleteKeyW +RegDisablePredefinedCache +RegEnumKeyA +RegEnumKeyW +RegOpenKeyA +RegOpenKeyTransactedA +RegOpenKeyTransactedW +RegOpenKeyW +RegOverridePredefKey +RegQueryValueA +RegQueryValueW +RegReplaceKeyA +RegReplaceKeyW +RegSaveKeyA +RegSaveKeyW +RegSetValueA +RegSetValueW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-rtlsupport-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-rtlsupport-l1-1-0.def new file mode 100644 index 0000000000..79478fe9ba --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-rtlsupport-l1-1-0.def @@ -0,0 +1,17 @@ +LIBRARY api-ms-win-core-rtlsupport-l1-1-0 + +EXPORTS + +RtlAddFunctionTable +RtlCaptureContext +RtlCaptureStackBackTrace +RtlCompareMemory +RtlDeleteFunctionTable +RtlInstallFunctionTableCallback +RtlLookupFunctionEntry +RtlPcToFileHeader +RtlRaiseException +RtlRestoreContext +RtlUnwind +RtlUnwindEx +RtlVirtualUnwind diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-rtlsupport-l1-2-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-rtlsupport-l1-2-0.def new file mode 100644 index 0000000000..7d59326feb --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-rtlsupport-l1-2-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-rtlsupport-l1-2-0 + +EXPORTS + +RtlAddGrowableFunctionTable +RtlDeleteGrowableFunctionTable +RtlGrowFunctionTable diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-rtlsupport-l1-2-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-rtlsupport-l1-2-0_windowsapp.def new file mode 100644 index 0000000000..06e121bdc4 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-rtlsupport-l1-2-0_windowsapp.def @@ -0,0 +1,4 @@ +LIBRARY api-ms-win-core-rtlsupport-l1-2-0 + +EXPORTS + diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-rtlsupport-l1-2-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-rtlsupport-l1-2-1.def new file mode 100644 index 0000000000..a69c2cb834 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-rtlsupport-l1-2-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-rtlsupport-l1-2-1 + +EXPORTS + +RtlCaptureContext2 diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-shutdown-ansi-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-shutdown-ansi-l1-1-0.def new file mode 100644 index 0000000000..2f338c1b9d --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-shutdown-ansi-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-shutdown-ansi-l1-1-0 + +EXPORTS + +AbortSystemShutdownA +InitiateSystemShutdownA +InitiateSystemShutdownExA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-shutdown-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-shutdown-l1-1-0.def new file mode 100644 index 0000000000..fdba470b44 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-shutdown-l1-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-shutdown-l1-1-0 + +EXPORTS + +AbortSystemShutdownW +InitiateSystemShutdownExW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-shutdown-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-shutdown-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..25800d1243 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-shutdown-l1-1-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-shutdown-l1-1-0 + +EXPORTS + +InitiateSystemShutdownExW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-shutdown-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-shutdown-l1-1-1.def new file mode 100644 index 0000000000..b9c2fe609f --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-shutdown-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-shutdown-l1-1-1 + +EXPORTS + +InitiateShutdownW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-sidebyside-ansi-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-sidebyside-ansi-l1-1-0.def new file mode 100644 index 0000000000..39a01ee536 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-sidebyside-ansi-l1-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-sidebyside-ansi-l1-1-0 + +EXPORTS + +CreateActCtxA +FindActCtxSectionStringA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-sidebyside-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-sidebyside-l1-1-0.def new file mode 100644 index 0000000000..b7b4933920 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-sidebyside-l1-1-0.def @@ -0,0 +1,15 @@ +LIBRARY api-ms-win-core-sidebyside-l1-1-0 + +EXPORTS + +ActivateActCtx +AddRefActCtx +CreateActCtxW +DeactivateActCtx +FindActCtxSectionGuid +FindActCtxSectionStringW +GetCurrentActCtx +QueryActCtxSettingsW +QueryActCtxW +ReleaseActCtx +ZombifyActCtx diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-slapi-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-slapi-l1-1-0.def new file mode 100644 index 0000000000..89413f9f12 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-slapi-l1-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-slapi-l1-1-0 + +EXPORTS + +SLQueryLicenseValueFromApp +SLQueryLicenseValueFromApp2 diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-state-helpers-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-state-helpers-l1-1-0.def new file mode 100644 index 0000000000..98141534a7 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-state-helpers-l1-1-0.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-state-helpers-l1-1-0 + +EXPORTS + +GetRegistryValueWithFallbackW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-string-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-string-l1-1-0.def new file mode 100644 index 0000000000..82770efa8c --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-string-l1-1-0.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-core-string-l1-1-0 + +EXPORTS + +CompareStringEx +CompareStringOrdinal +CompareStringW +FoldStringW +GetStringTypeExW +GetStringTypeW +MultiByteToWideChar +WideCharToMultiByte diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-string-l2-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-string-l2-1-0.def new file mode 100644 index 0000000000..1fca00a5c5 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-string-l2-1-0.def @@ -0,0 +1,14 @@ +LIBRARY api-ms-win-core-string-l2-1-0 + +EXPORTS + +CharLowerBuffW +CharLowerW +CharNextW +CharPrevW +CharUpperBuffW +CharUpperW +IsCharAlphaNumericW +IsCharAlphaW +IsCharLowerW +IsCharUpperW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-string-l2-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-string-l2-1-0_windowsapp.def new file mode 100644 index 0000000000..a9445193c3 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-string-l2-1-0_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-string-l2-1-0 + +EXPORTS + +CharLowerBuffW +CharLowerW +CharNextW +CharUpperW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-string-l2-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-string-l2-1-1.def new file mode 100644 index 0000000000..6eddf1e132 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-string-l2-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-string-l2-1-1 + +EXPORTS + +SHLoadIndirectString diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-string-obsolete-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-string-obsolete-l1-1-0.def new file mode 100644 index 0000000000..0a825e4a1f --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-string-obsolete-l1-1-0.def @@ -0,0 +1,14 @@ +LIBRARY api-ms-win-core-string-obsolete-l1-1-0 + +EXPORTS + +lstrcatW +lstrcmpA +lstrcmpiA +lstrcmpiW +lstrcmpW +lstrcpynA +lstrcpynW +lstrcpyW +lstrlenA +lstrlenW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-string-obsolete-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-string-obsolete-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..ecc48e0e22 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-string-obsolete-l1-1-0_windowsapp.def @@ -0,0 +1,13 @@ +LIBRARY api-ms-win-core-string-obsolete-l1-1-0 + +EXPORTS + +lstrcatW +lstrcmpA +lstrcmpiA +lstrcmpiW +lstrcmpW +lstrcpynW +lstrcpyW +lstrlenA +lstrlenW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-string-obsolete-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-string-obsolete-l1-1-1.def new file mode 100644 index 0000000000..ff51775bf1 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-string-obsolete-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-string-obsolete-l1-1-1 + +EXPORTS + +lstrcatA +lstrcpyA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-stringansi-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-stringansi-l1-1-0.def new file mode 100644 index 0000000000..209d06d8fa --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-stringansi-l1-1-0.def @@ -0,0 +1,16 @@ +LIBRARY api-ms-win-core-stringansi-l1-1-0 + +EXPORTS + +CharLowerA +CharLowerBuffA +CharNextA +CharNextExA +CharPrevA +CharPrevExA +CharUpperA +CharUpperBuffA +IsCharAlphaA +IsCharAlphaNumericA +IsCharLowerA +IsCharUpperA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-stringansi-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-stringansi-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..08fc2160cf --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-stringansi-l1-1-0_windowsapp.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-stringansi-l1-1-0 + +EXPORTS + +CharLowerA +CharNextA +CharNextExA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-synch-ansi-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-synch-ansi-l1-1-0.def new file mode 100644 index 0000000000..f466b268e7 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-synch-ansi-l1-1-0.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-core-synch-ansi-l1-1-0 + +EXPORTS + +CreateSemaphoreA +CreateSemaphoreExA +CreateWaitableTimerA +CreateWaitableTimerExA +OpenMutexA +OpenSemaphoreA +OpenWaitableTimerA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-synch-ansi-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-synch-ansi-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..311d40d6fe --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-synch-ansi-l1-1-0_windowsapp.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-core-synch-ansi-l1-1-0 + +EXPORTS + +CreateSemaphoreA +CreateSemaphoreExA +CreateWaitableTimerA +CreateWaitableTimerExA +OpenMutexA +OpenWaitableTimerA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-synch-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-synch-l1-1-0.def new file mode 100644 index 0000000000..3d89c6969a --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-synch-l1-1-0.def @@ -0,0 +1,45 @@ +LIBRARY api-ms-win-core-synch-l1-1-0 + +EXPORTS + +AcquireSRWLockExclusive +AcquireSRWLockShared +CancelWaitableTimer +CreateEventA +CreateEventExA +CreateEventExW +CreateEventW +CreateMutexA +CreateMutexExA +CreateMutexExW +CreateMutexW +CreateSemaphoreExW +CreateWaitableTimerExW +DeleteCriticalSection +EnterCriticalSection +InitializeCriticalSection +InitializeCriticalSectionAndSpinCount +InitializeCriticalSectionEx +InitializeSRWLock +LeaveCriticalSection +OpenEventA +OpenEventW +OpenMutexW +OpenSemaphoreW +OpenWaitableTimerW +ReleaseMutex +ReleaseSemaphore +ReleaseSRWLockExclusive +ReleaseSRWLockShared +ResetEvent +SetCriticalSectionSpinCount +SetEvent +SetWaitableTimer +SetWaitableTimerEx +SleepEx +TryAcquireSRWLockExclusive +TryAcquireSRWLockShared +TryEnterCriticalSection +WaitForMultipleObjectsEx +WaitForSingleObject +WaitForSingleObjectEx diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-synch-l1-2-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-synch-l1-2-0.def new file mode 100644 index 0000000000..4a2f4f9251 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-synch-l1-2-0.def @@ -0,0 +1,21 @@ +LIBRARY api-ms-win-core-synch-l1-2-0 + +EXPORTS + +DeleteSynchronizationBarrier +EnterSynchronizationBarrier +InitializeConditionVariable +InitializeSynchronizationBarrier +InitOnceBeginInitialize +InitOnceComplete +InitOnceExecuteOnce +InitOnceInitialize +SignalObjectAndWait +Sleep +SleepConditionVariableCS +SleepConditionVariableSRW +WaitOnAddress +WakeAllConditionVariable +WakeByAddressAll +WakeByAddressSingle +WakeConditionVariable diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-synch-l1-2-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-synch-l1-2-1.def new file mode 100644 index 0000000000..3b1a79f3f3 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-synch-l1-2-1.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-synch-l1-2-1 + +EXPORTS + +CreateSemaphoreW +CreateWaitableTimerW +WaitForMultipleObjects diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-1-0.def new file mode 100644 index 0000000000..e1dee65297 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-1-0.def @@ -0,0 +1,26 @@ +LIBRARY api-ms-win-core-sysinfo-l1-1-0 + +EXPORTS + +GetComputerNameExA +GetComputerNameExW +GetLocalTime +GetLogicalProcessorInformation +GetLogicalProcessorInformationEx +GetSystemDirectoryA +GetSystemDirectoryW +GetSystemInfo +GetSystemTime +GetSystemTimeAdjustment +GetSystemTimeAsFileTime +GetSystemWindowsDirectoryA +GetSystemWindowsDirectoryW +GetTickCount +GetTickCount64 +GetVersion +GetVersionExA +GetVersionExW +GetWindowsDirectoryA +GetWindowsDirectoryW +GlobalMemoryStatusEx +SetLocalTime diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-0.def new file mode 100644 index 0000000000..9b93fd3d7c --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-0.def @@ -0,0 +1,13 @@ +LIBRARY api-ms-win-core-sysinfo-l1-2-0 + +EXPORTS + +EnumSystemFirmwareTables +GetNativeSystemInfo +GetOsSafeBootMode +GetProductInfo +GetSystemFirmwareTable +GetSystemTimePreciseAsFileTime +SetComputerNameExW +SetSystemTime +VerSetConditionMask diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-0_windowsapp.def new file mode 100644 index 0000000000..3e6d943153 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-0_windowsapp.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-core-sysinfo-l1-2-0 + +EXPORTS + +EnumSystemFirmwareTables +GetNativeSystemInfo +GetProductInfo +GetSystemFirmwareTable +GetSystemTimePreciseAsFileTime +SetSystemTime +VerSetConditionMask diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-1.def new file mode 100644 index 0000000000..77b44ba000 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-1.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-sysinfo-l1-2-1 + +EXPORTS + +DnsHostnameToComputerNameExW +GetPhysicallyInstalledSystemMemory +InstallELAMCertificateInfo +SetComputerNameEx2W +SetSystemTimeAdjustment diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-1_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-1_windowsapp.def new file mode 100644 index 0000000000..5a946d4865 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-1_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-sysinfo-l1-2-1 + +EXPORTS + +GetPhysicallyInstalledSystemMemory diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-2.def b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-2.def new file mode 100644 index 0000000000..5f4dfe10b3 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-2.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-sysinfo-l1-2-2 + +EXPORTS + +GetProcessorSystemCycleTime diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-3.def b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-3.def new file mode 100644 index 0000000000..90e42f15e5 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-3.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-sysinfo-l1-2-3 + +EXPORTS + +GetIntegratedDisplaySize +GetOsManufacturingMode +SetComputerNameA +SetComputerNameExA +SetComputerNameW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-3_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-3_windowsapp.def new file mode 100644 index 0000000000..e9228b5c5f --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-3_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-sysinfo-l1-2-3 + +EXPORTS + +GetIntegratedDisplaySize diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-4.def b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-4.def new file mode 100644 index 0000000000..4d28cb64ee --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-4.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-sysinfo-l1-2-4 + +EXPORTS + +GetSystemTimeAdjustmentPrecise +SetSystemTimeAdjustmentPrecise diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-5.def b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-5.def new file mode 100644 index 0000000000..2e66ec3a87 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-5.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-sysinfo-l1-2-5 + +EXPORTS + +GetSystemLeapSecondInformation diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-6.def b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-6.def new file mode 100644 index 0000000000..3557c8d92c --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-sysinfo-l1-2-6.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-sysinfo-l1-2-6 + +EXPORTS + +IsUserCetAvailableInEnvironment diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-systemtopology-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-systemtopology-l1-1-0.def new file mode 100644 index 0000000000..ae1ec5b33b --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-systemtopology-l1-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-systemtopology-l1-1-0 + +EXPORTS + +GetNumaHighestNodeNumber +GetNumaNodeProcessorMaskEx diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-systemtopology-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-systemtopology-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..c47c8f7af6 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-systemtopology-l1-1-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-systemtopology-l1-1-0 + +EXPORTS + +GetNumaHighestNodeNumber diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-systemtopology-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-systemtopology-l1-1-1.def new file mode 100644 index 0000000000..c4f707147b --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-systemtopology-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-systemtopology-l1-1-1 + +EXPORTS + +GetNumaProximityNodeEx diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-threadpool-l1-2-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-threadpool-l1-2-0.def new file mode 100644 index 0000000000..788e88e05d --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-threadpool-l1-2-0.def @@ -0,0 +1,41 @@ +LIBRARY api-ms-win-core-threadpool-l1-2-0 + +EXPORTS + +CallbackMayRunLong +CancelThreadpoolIo +CloseThreadpool +CloseThreadpoolCleanupGroup +CloseThreadpoolCleanupGroupMembers +CloseThreadpoolIo +CloseThreadpoolTimer +CloseThreadpoolWait +CloseThreadpoolWork +CreateThreadpool +CreateThreadpoolCleanupGroup +CreateThreadpoolIo +CreateThreadpoolTimer +CreateThreadpoolWait +CreateThreadpoolWork +DisassociateCurrentThreadFromCallback +FreeLibraryWhenCallbackReturns +IsThreadpoolTimerSet +LeaveCriticalSectionWhenCallbackReturns +QueryThreadpoolStackInformation +ReleaseMutexWhenCallbackReturns +ReleaseSemaphoreWhenCallbackReturns +SetEventWhenCallbackReturns +SetThreadpoolStackInformation +SetThreadpoolThreadMaximum +SetThreadpoolThreadMinimum +SetThreadpoolTimer +SetThreadpoolTimerEx +SetThreadpoolWait +SetThreadpoolWaitEx +StartThreadpoolIo +SubmitThreadpoolWork +TrySubmitThreadpoolCallback +WaitForThreadpoolIoCallbacks +WaitForThreadpoolTimerCallbacks +WaitForThreadpoolWaitCallbacks +WaitForThreadpoolWorkCallbacks diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-threadpool-legacy-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-threadpool-legacy-l1-1-0.def new file mode 100644 index 0000000000..7238be0bb8 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-threadpool-legacy-l1-1-0.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-core-threadpool-legacy-l1-1-0 + +EXPORTS + +ChangeTimerQueueTimer +CreateTimerQueue +CreateTimerQueueTimer +DeleteTimerQueueEx +DeleteTimerQueueTimer +QueueUserWorkItem +UnregisterWaitEx diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-timezone-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-timezone-l1-1-0.def new file mode 100644 index 0000000000..cb988a2cff --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-timezone-l1-1-0.def @@ -0,0 +1,17 @@ +LIBRARY api-ms-win-core-timezone-l1-1-0 + +EXPORTS + +EnumDynamicTimeZoneInformation +FileTimeToSystemTime +GetDynamicTimeZoneInformation +GetDynamicTimeZoneInformationEffectiveYears +GetTimeZoneInformation +GetTimeZoneInformationForYear +SetDynamicTimeZoneInformation +SetTimeZoneInformation +SystemTimeToFileTime +SystemTimeToTzSpecificLocalTime +SystemTimeToTzSpecificLocalTimeEx +TzSpecificLocalTimeToSystemTime +TzSpecificLocalTimeToSystemTimeEx diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-timezone-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-timezone-l1-1-1.def new file mode 100644 index 0000000000..03f9b99b49 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-timezone-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-timezone-l1-1-1 + +EXPORTS + +LocalFileTimeToLocalSystemTime +LocalSystemTimeToLocalFileTime diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-toolhelp-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-toolhelp-l1-1-0.def new file mode 100644 index 0000000000..419f0d8e68 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-toolhelp-l1-1-0.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-core-toolhelp-l1-1-0 + +EXPORTS + +CreateToolhelp32Snapshot +Module32FirstW +Module32NextW +Process32FirstW +Process32NextW +Thread32First +Thread32Next diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-toolhelp-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-toolhelp-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..0e031ec067 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-toolhelp-l1-1-0_windowsapp.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-toolhelp-l1-1-0 + +EXPORTS + +CreateToolhelp32Snapshot +Process32FirstW +Process32NextW +Thread32First +Thread32Next diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-toolhelp-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-toolhelp-l1-1-1.def new file mode 100644 index 0000000000..1a999f8802 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-toolhelp-l1-1-1.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-toolhelp-l1-1-1 + +EXPORTS + +Heap32First +Heap32ListFirst +Heap32ListNext +Heap32Next diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-url-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-url-l1-1-0.def new file mode 100644 index 0000000000..77ad596baf --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-url-l1-1-0.def @@ -0,0 +1,42 @@ +LIBRARY api-ms-win-core-url-l1-1-0 + +EXPORTS + +GetAcceptLanguagesA +GetAcceptLanguagesW +HashData +IsInternetESCEnabled +ParseURLA +ParseURLW +PathCreateFromUrlA +PathCreateFromUrlAlloc +PathCreateFromUrlW +PathIsURLA +PathIsURLW +UrlApplySchemeA +UrlApplySchemeW +UrlCanonicalizeA +UrlCanonicalizeW +UrlCombineA +UrlCombineW +UrlCompareA +UrlCompareW +UrlCreateFromPathA +UrlCreateFromPathW +UrlEscapeA +UrlEscapeW +UrlFixupW +UrlGetLocationA +UrlGetLocationW +UrlGetPartA +UrlGetPartW +UrlHashA +UrlHashW +UrlIsA +UrlIsNoHistoryA +UrlIsNoHistoryW +UrlIsOpaqueA +UrlIsOpaqueW +UrlIsW +UrlUnescapeA +UrlUnescapeW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-url-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-url-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..480df242f6 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-url-l1-1-0_windowsapp.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-url-l1-1-0 + +EXPORTS + +GetAcceptLanguagesA +GetAcceptLanguagesW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-util-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-util-l1-1-0.def new file mode 100644 index 0000000000..ccec54b30d --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-util-l1-1-0.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-util-l1-1-0 + +EXPORTS + +Beep +DecodePointer +DecodeSystemPointer +EncodePointer +EncodeSystemPointer diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-util-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-util-l1-1-1.def new file mode 100644 index 0000000000..c562107565 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-util-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-util-l1-1-1 + +EXPORTS + +DecodeRemotePointer +EncodeRemotePointer diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-version-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-version-l1-1-0.def new file mode 100644 index 0000000000..4aaf83294e --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-version-l1-1-0.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-version-l1-1-0 + +EXPORTS + +GetFileVersionInfoExW +GetFileVersionInfoSizeExW +VerFindFileW +VerQueryValueW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-version-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-version-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..6dc9f6bc57 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-version-l1-1-0_windowsapp.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-version-l1-1-0 + +EXPORTS + +GetFileVersionInfoExW +GetFileVersionInfoSizeExW +VerQueryValueW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-version-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-version-l1-1-1.def new file mode 100644 index 0000000000..b0239bce5e --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-version-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-version-l1-1-1 + +EXPORTS + +GetFileVersionInfoSizeW +GetFileVersionInfoW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-version-l1-1-1_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-version-l1-1-1_windowsapp.def new file mode 100644 index 0000000000..f9cdfe925b --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-version-l1-1-1_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-version-l1-1-1 + +EXPORTS + +GetFileVersionInfoW diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-versionansi-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-versionansi-l1-1-0.def new file mode 100644 index 0000000000..cfc0ebd4b1 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-versionansi-l1-1-0.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-versionansi-l1-1-0 + +EXPORTS + +GetFileVersionInfoExA +GetFileVersionInfoSizeExA +VerFindFileA +VerQueryValueA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-versionansi-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-versionansi-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..bd69fd6f98 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-versionansi-l1-1-0_windowsapp.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-versionansi-l1-1-0 + +EXPORTS + +GetFileVersionInfoExA +GetFileVersionInfoSizeExA +VerQueryValueA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-versionansi-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-versionansi-l1-1-1.def new file mode 100644 index 0000000000..a1bf1a314f --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-versionansi-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-versionansi-l1-1-1 + +EXPORTS + +GetFileVersionInfoA +GetFileVersionInfoSizeA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-versionansi-l1-1-1_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-versionansi-l1-1-1_windowsapp.def new file mode 100644 index 0000000000..eb58d917c1 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-versionansi-l1-1-1_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-versionansi-l1-1-1 + +EXPORTS + +GetFileVersionInfoA diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-windowsceip-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-windowsceip-l1-1-0.def new file mode 100644 index 0000000000..0283b75ff9 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-windowsceip-l1-1-0.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-windowsceip-l1-1-0 + +EXPORTS + +CeipIsOptedIn diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-windowserrorreporting-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-windowserrorreporting-l1-1-0.def new file mode 100644 index 0000000000..0fef348e44 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-windowserrorreporting-l1-1-0.def @@ -0,0 +1,16 @@ +LIBRARY api-ms-win-core-windowserrorreporting-l1-1-0 + +EXPORTS + +GetApplicationRecoveryCallback +GetApplicationRestartSettings +WerGetFlags +WerpNotifyLoadStringResource +WerpNotifyUseStringResource +WerRegisterFile +WerRegisterMemoryBlock +WerRegisterRuntimeExceptionModule +WerSetFlags +WerUnregisterFile +WerUnregisterMemoryBlock +WerUnregisterRuntimeExceptionModule diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-windowserrorreporting-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-windowserrorreporting-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..f29d62e824 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-windowserrorreporting-l1-1-0_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-windowserrorreporting-l1-1-0 + +EXPORTS + +WerRegisterFile +WerRegisterMemoryBlock +WerUnregisterFile +WerUnregisterMemoryBlock diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-windowserrorreporting-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-windowserrorreporting-l1-1-1.def new file mode 100644 index 0000000000..08d8c28206 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-windowserrorreporting-l1-1-1.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-core-windowserrorreporting-l1-1-1 + +EXPORTS + +WerRegisterAdditionalProcess +WerRegisterCustomMetadata +WerRegisterExcludedMemoryBlock +WerUnregisterAdditionalProcess +WerUnregisterCustomMetadata +WerUnregisterExcludedMemoryBlock diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-windowserrorreporting-l1-1-2.def b/lib/libc/mingw/lib-common/api-ms-win-core-windowserrorreporting-l1-1-2.def new file mode 100644 index 0000000000..6870da1379 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-windowserrorreporting-l1-1-2.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-windowserrorreporting-l1-1-2 + +EXPORTS + +WerRegisterAppLocalDump +WerUnregisterAppLocalDump diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-windowserrorreporting-l1-1-3.def b/lib/libc/mingw/lib-common/api-ms-win-core-windowserrorreporting-l1-1-3.def new file mode 100644 index 0000000000..b69ef5ecd8 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-windowserrorreporting-l1-1-3.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-windowserrorreporting-l1-1-3 + +EXPORTS + +RegisterApplicationRestart +UnregisterApplicationRestart diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-winrt-error-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-error-l1-1-0.def new file mode 100644 index 0000000000..e84af147f4 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-error-l1-1-0.def @@ -0,0 +1,15 @@ +LIBRARY api-ms-win-core-winrt-error-l1-1-0 + +EXPORTS + +GetRestrictedErrorInfo +RoCaptureErrorContext +RoFailFastWithErrorContext +RoGetErrorReportingFlags +RoOriginateError +RoOriginateErrorW +RoResolveRestrictedErrorInfoReference +RoSetErrorReportingFlags +RoTransformError +RoTransformErrorW +SetRestrictedErrorInfo diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-winrt-error-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-error-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..18a607b8a8 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-error-l1-1-0_windowsapp.def @@ -0,0 +1,14 @@ +LIBRARY api-ms-win-core-winrt-error-l1-1-0 + +EXPORTS + +GetRestrictedErrorInfo +RoCaptureErrorContext +RoFailFastWithErrorContext +RoGetErrorReportingFlags +RoOriginateError +RoOriginateErrorW +RoSetErrorReportingFlags +RoTransformError +RoTransformErrorW +SetRestrictedErrorInfo diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-winrt-error-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-error-l1-1-1.def new file mode 100644 index 0000000000..282d8aab6f --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-error-l1-1-1.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-core-winrt-error-l1-1-1 + +EXPORTS + +IsErrorPropagationEnabled +RoClearError +RoGetMatchingRestrictedErrorInfo +RoInspectCapturedStackBackTrace +RoInspectThreadErrorInfo +RoOriginateLanguageException +RoReportFailedDelegate +RoReportUnhandledError diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-winrt-error-l1-1-1_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-error-l1-1-1_windowsapp.def new file mode 100644 index 0000000000..75be68abec --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-error-l1-1-1_windowsapp.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-core-winrt-error-l1-1-1 + +EXPORTS + +IsErrorPropagationEnabled +RoClearError +RoGetMatchingRestrictedErrorInfo +RoOriginateLanguageException +RoReportFailedDelegate +RoReportUnhandledError diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-winrt-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-l1-1-0.def new file mode 100644 index 0000000000..9e841a5a7f --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-l1-1-0.def @@ -0,0 +1,13 @@ +LIBRARY api-ms-win-core-winrt-l1-1-0 + +EXPORTS + +RoActivateInstance +RoGetActivationFactory +RoGetApartmentIdentifier +RoInitialize +RoRegisterActivationFactories +RoRegisterForApartmentShutdown +RoRevokeActivationFactories +RoUninitialize +RoUnregisterForApartmentShutdown diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-winrt-registration-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-registration-l1-1-0.def new file mode 100644 index 0000000000..a7ad121a9a --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-registration-l1-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-winrt-registration-l1-1-0 + +EXPORTS + +RoGetActivatableClassRegistration +RoGetServerActivatableClasses diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-winrt-robuffer-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-robuffer-l1-1-0.def new file mode 100644 index 0000000000..8e6e25f30a --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-robuffer-l1-1-0.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-winrt-robuffer-l1-1-0 + +EXPORTS + +RoGetBufferMarshaler diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-winrt-roparameterizediid-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-roparameterizediid-l1-1-0.def new file mode 100644 index 0000000000..b09d4444d2 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-roparameterizediid-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-winrt-roparameterizediid-l1-1-0 + +EXPORTS + +RoFreeParameterizedTypeExtra +RoGetParameterizedTypeInstanceIID +RoParameterizedTypeExtraGetTypeSignature diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-winrt-string-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-string-l1-1-0.def new file mode 100644 index 0000000000..c1636e1c64 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-string-l1-1-0.def @@ -0,0 +1,31 @@ +LIBRARY api-ms-win-core-winrt-string-l1-1-0 + +EXPORTS + +HSTRING_UserFree +HSTRING_UserFree64 +HSTRING_UserMarshal +HSTRING_UserMarshal64 +HSTRING_UserSize +HSTRING_UserSize64 +HSTRING_UserUnmarshal +HSTRING_UserUnmarshal64 +WindowsCompareStringOrdinal +WindowsConcatString +WindowsCreateString +WindowsCreateStringReference +WindowsDeleteString +WindowsDeleteStringBuffer +WindowsDuplicateString +WindowsGetStringLen +WindowsGetStringRawBuffer +WindowsInspectString +WindowsIsStringEmpty +WindowsPreallocateStringBuffer +WindowsPromoteStringBuffer +WindowsReplaceString +WindowsStringHasEmbeddedNull +WindowsSubstring +WindowsSubstringWithSpecifiedLength +WindowsTrimStringEnd +WindowsTrimStringStart diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-winrt-string-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-string-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..127d74961b --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-string-l1-1-0_windowsapp.def @@ -0,0 +1,30 @@ +LIBRARY api-ms-win-core-winrt-string-l1-1-0 + +EXPORTS + +HSTRING_UserFree +HSTRING_UserFree64 +HSTRING_UserMarshal +HSTRING_UserMarshal64 +HSTRING_UserSize +HSTRING_UserSize64 +HSTRING_UserUnmarshal +HSTRING_UserUnmarshal64 +WindowsCompareStringOrdinal +WindowsConcatString +WindowsCreateString +WindowsCreateStringReference +WindowsDeleteString +WindowsDeleteStringBuffer +WindowsDuplicateString +WindowsGetStringLen +WindowsGetStringRawBuffer +WindowsIsStringEmpty +WindowsPreallocateStringBuffer +WindowsPromoteStringBuffer +WindowsReplaceString +WindowsStringHasEmbeddedNull +WindowsSubstring +WindowsSubstringWithSpecifiedLength +WindowsTrimStringEnd +WindowsTrimStringStart diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-winrt-string-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-string-l1-1-1.def new file mode 100644 index 0000000000..9254c0b478 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-winrt-string-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-winrt-string-l1-1-1 + +EXPORTS + +WindowsInspectString2 diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-wow64-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-wow64-l1-1-0.def new file mode 100644 index 0000000000..b873d0cf46 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-wow64-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-wow64-l1-1-0 + +EXPORTS + +IsWow64Process +Wow64DisableWow64FsRedirection +Wow64RevertWow64FsRedirection diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-wow64-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-wow64-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..38eebd2e30 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-wow64-l1-1-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-wow64-l1-1-0 + +EXPORTS + +IsWow64Process diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-wow64-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-wow64-l1-1-1.def new file mode 100644 index 0000000000..9d710148f1 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-wow64-l1-1-1.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-core-wow64-l1-1-1 + +EXPORTS + +GetSystemWow64Directory2A +GetSystemWow64Directory2W +GetSystemWow64DirectoryA +GetSystemWow64DirectoryW +IsWow64Process2 +Wow64SetThreadDefaultGuestMachine diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-wow64-l1-1-1_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-wow64-l1-1-1_windowsapp.def new file mode 100644 index 0000000000..6ab135ba6e --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-wow64-l1-1-1_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-wow64-l1-1-1 + +EXPORTS + +IsWow64Process2 diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-wow64-l1-1-2.def b/lib/libc/mingw/lib-common/api-ms-win-core-wow64-l1-1-2.def new file mode 100644 index 0000000000..8d852059d7 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-wow64-l1-1-2.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-wow64-l1-1-2 + +EXPORTS + +IsWow64GuestMachineSupported diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-wow64-l1-1-3.def b/lib/libc/mingw/lib-common/api-ms-win-core-wow64-l1-1-3.def new file mode 100644 index 0000000000..66878c6932 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-wow64-l1-1-3.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-wow64-l1-1-3 + +EXPORTS + +Wow64GetThreadContext +Wow64SetThreadContext +Wow64SuspendThread diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-xstate-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-xstate-l1-1-0.def new file mode 100644 index 0000000000..1ab5c8fd65 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-xstate-l1-1-0.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-core-xstate-l1-1-0 + +EXPORTS + +RtlCopyExtendedContext +RtlGetEnabledExtendedFeatures +RtlGetExtendedContextLength +RtlGetExtendedFeaturesMask +RtlInitializeExtendedContext +RtlLocateExtendedFeature +RtlLocateLegacyContext +RtlSetExtendedFeaturesMask diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-xstate-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-xstate-l1-1-1.def new file mode 100644 index 0000000000..792b649cac --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-xstate-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-xstate-l1-1-1 + +EXPORTS + +RtlCopyContext diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-xstate-l1-1-2.def b/lib/libc/mingw/lib-common/api-ms-win-core-xstate-l1-1-2.def new file mode 100644 index 0000000000..e264d589ab --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-xstate-l1-1-2.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-xstate-l1-1-2 + +EXPORTS + +RtlLocateExtendedFeature2 diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-xstate-l1-1-3.def b/lib/libc/mingw/lib-common/api-ms-win-core-xstate-l1-1-3.def new file mode 100644 index 0000000000..436f7fc5f2 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-xstate-l1-1-3.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-xstate-l1-1-3 + +EXPORTS + +RtlGetExtendedContextLength2 +RtlInitializeExtendedContext2 diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-xstate-l2-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-core-xstate-l2-1-0.def new file mode 100644 index 0000000000..91e211e55d --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-xstate-l2-1-0.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-core-xstate-l2-1-0 + +EXPORTS + +CopyContext +GetEnabledXStateFeatures +GetXStateFeaturesMask +InitializeContext +LocateXStateFeature +SetXStateFeaturesMask diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-xstate-l2-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-core-xstate-l2-1-0_windowsapp.def new file mode 100644 index 0000000000..90d693cf89 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-xstate-l2-1-0_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-xstate-l2-1-0 + +EXPORTS + +GetEnabledXStateFeatures +GetXStateFeaturesMask +InitializeContext +LocateXStateFeature diff --git a/lib/libc/mingw/lib-common/api-ms-win-core-xstate-l2-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-core-xstate-l2-1-1.def new file mode 100644 index 0000000000..53e6a64b19 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-core-xstate-l2-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-xstate-l2-1-1 + +EXPORTS + +InitializeContext2 diff --git a/lib/libc/mingw/lib-common/api-ms-win-crt-conio-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-crt-conio-l1-1-0.def new file mode 100644 index 0000000000..b9a9df6a65 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-crt-conio-l1-1-0.def @@ -0,0 +1,38 @@ +LIBRARY api-ms-win-crt-conio-l1-1-0 + +EXPORTS + +__conio_common_vcprintf +__conio_common_vcprintf_p +__conio_common_vcprintf_s +__conio_common_vcscanf +__conio_common_vcwprintf +__conio_common_vcwprintf_p +__conio_common_vcwprintf_s +__conio_common_vcwscanf +_cgets +_cgets_s +_cgetws +_cgetws_s +_cputs +_cputws +_getch +getch == _getch +_getch_nolock +_getche +getche == _getche +_getche_nolock +_getwch +_getwch_nolock +_getwche +_getwche_nolock +_putch +putch == _putch +_putch_nolock +_putwch +_putwch_nolock +_ungetch +ungetch == _ungetch +_ungetch_nolock +_ungetwch +_ungetwch_nolock diff --git a/lib/libc/mingw/lib-common/api-ms-win-crt-convert-l1-1-0.def.in b/lib/libc/mingw/lib-common/api-ms-win-crt-convert-l1-1-0.def.in new file mode 100644 index 0000000000..c172b0969e --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-crt-convert-l1-1-0.def.in @@ -0,0 +1,136 @@ +LIBRARY api-ms-win-crt-convert-l1-1-0 + +EXPORTS + +#include "func.def.in" + +__toascii +toascii == __toascii +_atodbl +_atodbl_l +_atof_l +_atoflt +_atoflt_l +_atoi64 +_atoi64_l +_atoi_l +_atol_l +_atoldbl +_atoldbl_l +_atoll_l +_ecvt +ecvt == _ecvt +_ecvt_s +_fcvt +fcvt == _fcvt +_fcvt_s +_gcvt +gcvt == _gcvt +_gcvt_s +_i64toa +_i64toa_s +_i64tow +_i64tow_s +_itoa +itoa == _itoa +_itoa_s +_itow +_itow_s +_ltoa +ltoa == _ltoa +_ltoa_s +_ltow +_ltow_s +_strtod_l +_strtof_l +_strtoi64 +_strtoi64_l +_strtoimax_l +_strtol_l +_strtold_l +_strtoll_l +_strtoui64 +_strtoui64_l +_strtoul_l +_strtoull_l +_strtoumax_l +_ui64toa +_ui64toa_s +_ui64tow +_ui64tow_s +_ultoa +_ultoa_s +_ultow +_ultow_s +_wcstod_l +_wcstof_l +_wcstoi64 +_wcstoi64_l +_wcstoimax_l +_wcstol_l +_wcstold_l +_wcstoll_l +_wcstombs_l +_wcstombs_s_l +_wcstoui64 +_wcstoui64_l +_wcstoul_l +_wcstoull_l +_wcstoumax_l +_wctomb_l +_wctomb_s_l +_wtof +_wtof_l +_wtoi +_wtoi64 +_wtoi64_l +_wtoi_l +_wtol +_wtol_l +_wtoll +_wtoll_l +atof +atoi +atol +atoll +btowc +c16rtomb +c32rtomb +mbrtoc16 +mbrtoc32 +mbrtowc +mbsrtowcs +mbsrtowcs_s +mbstowcs +mbstowcs_s +mbtowc +strtod +strtof +strtoimax +strtol +; Can't use long double functions from the CRT on x86 +F_ARM_ANY(strtold) +strtoll +strtoul +strtoull +strtoumax +wcrtomb +wcrtomb_s +wcsrtombs +wcsrtombs_s +wcstod +wcstof +wcstoimax +wcstol +; Can't use long double functions from the CRT on x86 +F_ARM_ANY(wcstold) +wcstoll +wcstombs +wcstombs_s +wcstoul +wcstoull +wcstoumax +wctob +wctomb +wctomb_s +wctrans diff --git a/lib/libc/mingw/lib-common/api-ms-win-crt-environment-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-crt-environment-l1-1-0.def new file mode 100644 index 0000000000..5969bb1fbd --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-crt-environment-l1-1-0.def @@ -0,0 +1,24 @@ +LIBRARY api-ms-win-crt-environment-l1-1-0 + +EXPORTS + +__p__environ +__p__wenviron +_dupenv_s +_putenv +putenv == _putenv +_putenv_s +_searchenv +searchenv == _searchenv +_searchenv_s +_wdupenv_s +_wgetcwd +_wgetdcwd +_wgetenv +_wgetenv_s +_wputenv +_wputenv_s +_wsearchenv +_wsearchenv_s +getenv +getenv_s diff --git a/lib/libc/mingw/lib-common/api-ms-win-crt-filesystem-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-crt-filesystem-l1-1-0.def new file mode 100644 index 0000000000..45ae728baf --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-crt-filesystem-l1-1-0.def @@ -0,0 +1,79 @@ +LIBRARY api-ms-win-crt-filesystem-l1-1-0 + +EXPORTS + +_access +; access is provided as an alias for __mingw_access +; access == _access +_access_s +_chdir +chdir == _chdir +_chdrive +_chmod +chmod == _chmod +_findclose +_findfirst == _findfirst64 +_findfirst32 +_findfirst32i64 +_findfirst64 +_findfirst64i32 +_findnext == _findnext64 +_findnext32 +_findnext32i64 +_findnext64 +_findnext64i32 +_fstat32 +_fstat32i64 +_fstat64 +_fstat64i32 +_fullpath +_getdiskfree +_getdrive +_getdrives +_lock_file +_makepath +_makepath_s +_mkdir +mkdir == _mkdir +_rmdir +rmdir == _rmdir +_splitpath +_splitpath_s +_stat32 +_stat32i64 +_stat64 +_stat64i32 +_umask +umask == _umask +_umask_s +_unlink +unlink == _unlink +_unlock_file +_waccess +_waccess_s +_wchdir +_wchmod +_wfindfirst32 +_wfindfirst32i64 +_wfindfirst64 +_wfindfirst64i32 +_wfindnext32 +_wfindnext32i64 +_wfindnext64 +_wfindnext64i32 +_wfullpath +_wmakepath +_wmakepath_s +_wmkdir +_wremove +_wrename +_wrmdir +_wsplitpath +_wsplitpath_s +_wstat32 +_wstat32i64 +_wstat64 +_wstat64i32 +_wunlink +remove +rename diff --git a/lib/libc/mingw/lib-common/api-ms-win-crt-heap-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-crt-heap-l1-1-0.def new file mode 100644 index 0000000000..fd793fe824 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-crt-heap-l1-1-0.def @@ -0,0 +1,32 @@ +LIBRARY api-ms-win-crt-heap-l1-1-0 + +EXPORTS + +_aligned_free +_aligned_malloc +_aligned_msize +_aligned_offset_malloc +_aligned_offset_realloc +_aligned_offset_recalloc +_aligned_realloc +_aligned_recalloc +_callnewh +_calloc_base +_expand +_free_base +_get_heap_handle +_heapchk +_heapmin +_heapwalk +heapwalk == _heapwalk +_malloc_base +_msize +_query_new_handler +_query_new_mode +_realloc_base +_recalloc +_set_new_mode +calloc +free +malloc +realloc diff --git a/lib/libc/mingw/lib-common/api-ms-win-crt-locale-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-crt-locale-l1-1-0.def new file mode 100644 index 0000000000..e1dba6ce09 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-crt-locale-l1-1-0.def @@ -0,0 +1,25 @@ +LIBRARY api-ms-win-crt-locale-l1-1-0 + +EXPORTS + +___lc_codepage_func +___lc_collate_cp_func +___lc_locale_name_func +___mb_cur_max_func +___mb_cur_max_l_func +__initialize_lconv_for_unsigned_char +__lconv_init == __initialize_lconv_for_unsigned_char +__pctype_func +__pwctype_func +_configthreadlocale +_create_locale +_free_locale +_get_current_locale +_getmbcp +_lock_locales +_setmbcp +_unlock_locales +_wcreate_locale +_wsetlocale +localeconv +setlocale diff --git a/lib/libc/mingw/lib-common/api-ms-win-crt-math-l1-1-0.def.in b/lib/libc/mingw/lib-common/api-ms-win-crt-math-l1-1-0.def.in new file mode 100644 index 0000000000..9493e57113 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-crt-math-l1-1-0.def.in @@ -0,0 +1,384 @@ +LIBRARY api-ms-win-crt-math-l1-1-0 + +EXPORTS + +#include "func.def.in" + +#ifdef DEF_I386 +_CIacos +_CIasin +_CIatan +_CIatan2 +_CIcos +_CIcosh +_CIexp +_CIfmod +_CIlog +_CIlog10 +_CIpow +_CIsin +_CIsinh +_CIsqrt +_CItan +_CItanh +#endif +_Cbuild +_Cmulcc +_Cmulcr +_FCbuild +_FCmulcc +_FCmulcr +_LCbuild +_LCmulcc +_LCmulcr +#ifdef DEF_I386 +__libm_sse2_acos +__libm_sse2_acosf +__libm_sse2_asin +__libm_sse2_asinf +__libm_sse2_atan +__libm_sse2_atan2 +__libm_sse2_atanf +__libm_sse2_cos +__libm_sse2_cosf +__libm_sse2_exp +__libm_sse2_expf +__libm_sse2_log +__libm_sse2_log10 +__libm_sse2_log10f +__libm_sse2_logf +__libm_sse2_pow +__libm_sse2_powf +__libm_sse2_sin +__libm_sse2_sinf +__libm_sse2_tan +__libm_sse2_tanf +#endif +__setusermatherr +; DATA set manually +_cabs DATA +_chgsign +chgsign == _chgsign +_chgsignf +_copysign +_copysignf +_d_int +_dclass +_dexp +_dlog +_dnorm +_dpcomp +_dpoly +_dscale +_dsign +_dsin +_dtest +_dunscale +_except1 +_fd_int +_fdclass +_fdexp +_fdlog +_fdnorm +_fdopen +fdopen == _fdopen +_fdpcomp +_fdpoly +_fdscale +_fdsign +_fdsin +_fdtest +_fdunscale +_finite +finite == _finite +F_NON_I386(_finitef) +_fpclass +fpclass == _fpclass +_fpclassf +F_I386(_ftol) +_get_FMA3_enable +_hypot +_hypotf +_isnan +F_X64(_isnanf) +_j0 +j0 == _j0 +_j1 +j1 == _j1 +_jn +jn == _jn +_ld_int +_ldclass +_ldexp +_ldlog +_ldpcomp +_ldpoly +_ldscale +_ldsign +_ldsin +_ldtest +_ldunscale +#ifdef DEF_I386 +_libm_sse2_acos_precise +_libm_sse2_asin_precise +_libm_sse2_atan_precise +_libm_sse2_cos_precise +_libm_sse2_exp_precise +_libm_sse2_log10_precise +_libm_sse2_log_precise +_libm_sse2_pow_precise +_libm_sse2_sin_precise +_libm_sse2_sqrt_precise +_libm_sse2_tan_precise +#endif +_logb +F_NON_I386(_logbf) +_nextafter +F_X64(_nextafterf) +_scalb +F_X64(_scalbf) +F64(_set_FMA3_enable) +F_I386(_set_SSE2_enable) +_y0 +y0 == _y0 +_y1 +y1 == _y1 +_yn +yn == _yn +acos +F_NON_I386(acosf) +F_ARM_ANY(acosl == acos) +acosh +acoshf +acoshl F_X86_ANY(DATA) +asin +F_NON_I386(asinf) +F_ARM_ANY(asinl == asin) +asinh +asinhf +asinhl F_X86_ANY(DATA) +atan +atan2 +F_NON_I386(atan2f) +F_ARM_ANY(atan2l == atan2) +F_NON_I386(atanf) +F_ARM_ANY(atanl == atan) +atanh +atanhf +atanhl F_X86_ANY(DATA) +cabs +cabsf +cabsl +cacos +cacosf +cacosh +cacoshf +cacoshl +cacosl +carg +cargf +cargl +casin +casinf +casinh +casinhf +casinhl +casinl +catan +catanf +catanh +catanhf +catanhl +catanl +cbrt +cbrtf +cbrtl F_X86_ANY(DATA) +ccos +ccosf +ccosh +ccoshf +ccoshl +ccosl +ceil +F_NON_I386(ceilf) +F_ARM_ANY(ceill == ceil) +cexp +cexpf +cexpl +cimag +cimagf +cimagl +clog +clog10 +clog10f +clog10l +clogf +clogl +conj +conjf +conjl +copysign +copysignf +copysignl F_X86_ANY(DATA) +cos +F_NON_I386(cosf) +F_ARM_ANY(cosl == cos) +cosh +F_NON_I386(coshf) +cpow +cpowf +cpowl +cproj +cprojf +cprojl +creal +crealf +creall +csin +csinf +csinh +csinhf +csinhl +csinl +csqrt +csqrtf +csqrtl +ctan +ctanf +ctanh +ctanhf +ctanhl +ctanl +erf +erfc +erfcf +erfcl F_X86_ANY(DATA) +erff +erfl F_X86_ANY(DATA) +exp +exp2 +exp2f +exp2l F_X86_ANY(DATA) +F_NON_I386(expf) +F_ARM_ANY(expl == exp) +expm1 +expm1f +expm1l F_X86_ANY(DATA) +fabs +F_ARM_ANY(fabsf) +fdim +fdimf +fdiml F_X86_ANY(DATA) +floor +F_NON_I386(floorf) +F_ARM_ANY(floorl == floor) +fma +fmaf +fmal F_X86_ANY(DATA) +fmax +fmaxf +fmaxl F_X86_ANY(DATA) +fmin +fminf +fminl F_X86_ANY(DATA) +fmod +F_NON_I386(fmodf) +F_ARM_ANY(fmodl == fmod) +frexp +hypot +ilogb +ilogbf +ilogbl F_X86_ANY(DATA) +ldexp +; The UCRT lgamma functions don't set/provide the signgam variable like +; the mingw ones do. Therefore prefer the libmingwex version instead. +lgamma DATA +lgammaf DATA +lgammal DATA +llrint +llrintf +llrintl F_X86_ANY(DATA) +llround +llroundf +llroundl F_X86_ANY(DATA) +log +log10 +F_NON_I386(log10f) +F_ARM_ANY(log10l == log10) +log1p +log1pf +log1pl F_X86_ANY(DATA) +log2 +log2f +log2l F_X86_ANY(DATA) +logb +logbf +logbl F_X86_ANY(DATA) +F_NON_I386(logf) +F_ARM_ANY(logl == log) +lrint +lrintf +lrintl F_X86_ANY(DATA) +lround +lroundf +lroundl F_X86_ANY(DATA) +modf +F_NON_I386(modff) +nan +nanf +nanl F_X86_ANY(DATA) +nearbyint +nearbyintf +nearbyintl F_X86_ANY(DATA) +nextafter +nextafterf +nextafterl F_X86_ANY(DATA) +; All of the nexttoward functions take the second parameter as long doubke, +; making them unusable for x86. +nexttoward F_X86_ANY(DATA) +nexttowardf F_X86_ANY(DATA) +nexttowardl F_X86_ANY(DATA) +norm +normf +norml +pow +F_NON_I386(powf) +F_ARM_ANY(powl == pow) +remainder +remainderf +remainderl F_X86_ANY(DATA) +remquo +remquof +remquol F_X86_ANY(DATA) +rint +rintf +rintl F_X86_ANY(DATA) +round +roundf +roundl F_X86_ANY(DATA) +scalbln +scalblnf +scalblnl F_X86_ANY(DATA) +scalbn +scalbnf +scalbnl F_X86_ANY(DATA) +sin +F_NON_I386(sinf) +F_ARM_ANY(sinl == sin) +; if we implement sinh, we can set it DATA only. +sinh +F_NON_I386(sinhf) +sqrt +F_NON_I386(sqrtf) +tan +F_NON_I386(tanf) +F_ARM_ANY(tanl == tan) +; if we implement tanh, we can set it to DATA only. +tanh +F_NON_I386(tanhf) +tgamma +tgammaf +tgammal F_X86_ANY(DATA) +trunc +truncf +truncl F_X86_ANY(DATA) diff --git a/lib/libc/mingw/lib-common/api-ms-win-crt-multibyte-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-crt-multibyte-l1-1-0.def new file mode 100644 index 0000000000..86d22500ba --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-crt-multibyte-l1-1-0.def @@ -0,0 +1,205 @@ +LIBRARY api-ms-win-crt-multibyte-l1-1-0 + +EXPORTS + +__p__mbcasemap +__p__mbctype +_ismbbalnum +_ismbbalnum_l +_ismbbalpha +_ismbbalpha_l +_ismbbblank +_ismbbblank_l +_ismbbgraph +_ismbbgraph_l +_ismbbkalnum +_ismbbkalnum_l +_ismbbkana +_ismbbkana_l +_ismbbkprint +_ismbbkprint_l +_ismbbkpunct +_ismbbkpunct_l +_ismbblead +_ismbblead_l +_ismbbprint +_ismbbprint_l +_ismbbpunct +_ismbbpunct_l +_ismbbtrail +_ismbbtrail_l +_ismbcalnum +_ismbcalnum_l +_ismbcalpha +_ismbcalpha_l +_ismbcblank +_ismbcblank_l +_ismbcdigit +_ismbcdigit_l +_ismbcgraph +_ismbcgraph_l +_ismbchira +_ismbchira_l +_ismbckata +_ismbckata_l +_ismbcl0 +_ismbcl0_l +_ismbcl1 +_ismbcl1_l +_ismbcl2 +_ismbcl2_l +_ismbclegal +_ismbclegal_l +_ismbclower +_ismbclower_l +_ismbcprint +_ismbcprint_l +_ismbcpunct +_ismbcpunct_l +_ismbcspace +_ismbcspace_l +_ismbcsymbol +_ismbcsymbol_l +_ismbcupper +_ismbcupper_l +_ismbslead +_ismbslead_l +_ismbstrail +_ismbstrail_l +_mbbtombc +_mbbtombc_l +_mbbtype +_mbbtype_l +; DATA added manually +_mbcasemap DATA +_mbccpy +_mbccpy_l +_mbccpy_s +_mbccpy_s_l +_mbcjistojms +_mbcjistojms_l +_mbcjmstojis +_mbcjmstojis_l +_mbclen +_mbclen_l +_mbctohira +_mbctohira_l +_mbctokata +_mbctokata_l +_mbctolower +_mbctolower_l +_mbctombb +_mbctombb_l +_mbctoupper +_mbctoupper_l +_mblen_l +_mbsbtype +_mbsbtype_l +_mbscat_s +_mbscat_s_l +_mbschr +_mbschr_l +_mbscmp +_mbscmp_l +_mbscoll +_mbscoll_l +_mbscpy_s +_mbscpy_s_l +_mbscspn +_mbscspn_l +_mbsdec +_mbsdec_l +_mbsdup +_mbsicmp +_mbsicmp_l +_mbsicoll +_mbsicoll_l +_mbsinc +_mbsinc_l +_mbslen +_mbslen_l +_mbslwr +_mbslwr_l +_mbslwr_s +_mbslwr_s_l +_mbsnbcat +_mbsnbcat_l +_mbsnbcat_s +_mbsnbcat_s_l +_mbsnbcmp +_mbsnbcmp_l +_mbsnbcnt +_mbsnbcnt_l +_mbsnbcoll +_mbsnbcoll_l +_mbsnbcpy +_mbsnbcpy_l +_mbsnbcpy_s +_mbsnbcpy_s_l +_mbsnbicmp +_mbsnbicmp_l +_mbsnbicoll +_mbsnbicoll_l +_mbsnbset +_mbsnbset_l +_mbsnbset_s +_mbsnbset_s_l +_mbsncat +_mbsncat_l +_mbsncat_s +_mbsncat_s_l +_mbsnccnt +_mbsnccnt_l +_mbsncmp +_mbsncmp_l +_mbsncoll +_mbsncoll_l +_mbsncpy +_mbsncpy_l +_mbsncpy_s +_mbsncpy_s_l +_mbsnextc +_mbsnextc_l +_mbsnicmp +_mbsnicmp_l +_mbsnicoll +_mbsnicoll_l +_mbsninc +_mbsninc_l +_mbsnlen +_mbsnlen_l +_mbsnset +_mbsnset_l +_mbsnset_s +_mbsnset_s_l +_mbspbrk +_mbspbrk_l +_mbsrchr +_mbsrchr_l +_mbsrev +_mbsrev_l +_mbsset +_mbsset_l +_mbsset_s +_mbsset_s_l +_mbsspn +_mbsspn_l +_mbsspnp +_mbsspnp_l +_mbsstr +_mbsstr_l +_mbstok +_mbstok_l +_mbstok_s +_mbstok_s_l +_mbstowcs_l +_mbstowcs_s_l +_mbstrlen +_mbstrlen_l +_mbstrnlen +_mbstrnlen_l +_mbsupr +_mbsupr_l +_mbsupr_s +_mbsupr_s_l +_mbtowc_l diff --git a/lib/libc/mingw/lib-common/api-ms-win-crt-private-l1-1-0.def.in b/lib/libc/mingw/lib-common/api-ms-win-crt-private-l1-1-0.def.in new file mode 100644 index 0000000000..669638b905 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-crt-private-l1-1-0.def.in @@ -0,0 +1,1174 @@ +LIBRARY api-ms-win-crt-private-l1-1-0 + +EXPORTS + +#include "func.def.in" + +_CreateFrameInfo +F_I386(_CxxThrowException@8) +F_NON_I386(_CxxThrowException) +F_I386(_EH_prolog) +_FindAndUnlinkFrame +_GetImageBase +_GetThrowImageBase +_IsExceptionObjectToBeDestroyed +_NLG_Dispatch2 +_NLG_Return +_NLG_Return2 +_SetImageBase +_SetThrowImageBase +_SetWinRTOutOfMemoryExceptionCallback +__AdjustPointer +__BuildCatchObject +__BuildCatchObjectHelper +F_NON_I386(__C_specific_handler) +__CxxDetectRethrow +__CxxExceptionFilter +__CxxFrameHandler +__CxxFrameHandler2 +__CxxFrameHandler3 +F_I386(__CxxLongjmpUnwind@4) +__CxxQueryExceptionSize +__CxxRegisterExceptionObject +__CxxUnregisterExceptionObject +__DestructExceptionObject +__FrameUnwindFilter +__GetPlatformExceptionInfo +__NLG_Dispatch2 +__NLG_Return2 +__RTCastToVoid +__RTDynamicCast +__RTtypeid +__TypeMatch +__current_exception +__current_exception_context +__dcrt_get_wide_environment_from_os +__dcrt_initial_narrow_environment +__intrinsic_abnormal_termination +__intrinsic_setjmp +F64(__intrinsic_setjmpex) +__processing_throw +__report_gsfailure +__std_exception_copy +__std_exception_destroy +__std_type_info_compare +__std_type_info_destroy_list +__std_type_info_hash +__std_type_info_name +__unDName +__unDNameEx +__uncaught_exception +F_I386(_chkesp) +F_I386(_except_handler2) +F_I386(_except_handler3) +F_I386(_except_handler4_common) +_get_purecall_handler +_get_unexpected +F_I386(_global_unwind2) +_is_exception_typeof +F_X64(_local_unwind) +F_I386(_local_unwind2) +F_I386(_local_unwind4) +F_I386(_longjmpex) +_o__CIacos +_o__CIasin +_o__CIatan +_o__CIatan2 +_o__CIcos +_o__CIcosh +_o__CIexp +_o__CIfmod +_o__CIlog +_o__CIlog10 +_o__CIpow +_o__CIsin +_o__CIsinh +_o__CIsqrt +_o__CItan +_o__CItanh +_o__Getdays +_o__Getmonths +_o__Gettnames +_o__Strftime +_o__W_Getdays +_o__W_Getmonths +_o__W_Gettnames +_o__Wcsftime +_o___acrt_iob_func +_o___conio_common_vcprintf +_o___conio_common_vcprintf_p +_o___conio_common_vcprintf_s +_o___conio_common_vcscanf +_o___conio_common_vcwprintf +_o___conio_common_vcwprintf_p +_o___conio_common_vcwprintf_s +_o___conio_common_vcwscanf +_o___daylight +_o___dstbias +_o___fpe_flt_rounds +_o___libm_sse2_acos +_o___libm_sse2_acosf +_o___libm_sse2_asin +_o___libm_sse2_asinf +_o___libm_sse2_atan +_o___libm_sse2_atan2 +_o___libm_sse2_atanf +_o___libm_sse2_cos +_o___libm_sse2_cosf +_o___libm_sse2_exp +_o___libm_sse2_expf +_o___libm_sse2_log +_o___libm_sse2_log10 +_o___libm_sse2_log10f +_o___libm_sse2_logf +_o___libm_sse2_pow +_o___libm_sse2_powf +_o___libm_sse2_sin +_o___libm_sse2_sinf +_o___libm_sse2_tan +_o___libm_sse2_tanf +_o___p___argc +_o___p___argv +_o___p___wargv +_o___p__acmdln +_o___p__commode +_o___p__environ +_o___p__fmode +_o___p__mbcasemap +_o___p__mbctype +_o___p__pgmptr +_o___p__wcmdln +_o___p__wenviron +_o___p__wpgmptr +_o___pctype_func +_o___pwctype_func +_o___stdio_common_vfprintf +_o___stdio_common_vfprintf_p +_o___stdio_common_vfprintf_s +_o___stdio_common_vfscanf +_o___stdio_common_vfwprintf +_o___stdio_common_vfwprintf_p +_o___stdio_common_vfwprintf_s +_o___stdio_common_vfwscanf +_o___stdio_common_vsnprintf_s +_o___stdio_common_vsnwprintf_s +_o___stdio_common_vsprintf +_o___stdio_common_vsprintf_p +_o___stdio_common_vsprintf_s +_o___stdio_common_vsscanf +_o___stdio_common_vswprintf +_o___stdio_common_vswprintf_p +_o___stdio_common_vswprintf_s +_o___stdio_common_vswscanf +_o___timezone +_o___tzname +_o___wcserror +_o__access +_o__access_s +_o__aligned_free +_o__aligned_malloc +_o__aligned_msize +_o__aligned_offset_malloc +_o__aligned_offset_realloc +_o__aligned_offset_recalloc +_o__aligned_realloc +_o__aligned_recalloc +_o__atodbl +_o__atodbl_l +_o__atof_l +_o__atoflt +_o__atoflt_l +_o__atoi64 +_o__atoi64_l +_o__atoi_l +_o__atol_l +_o__atoldbl +_o__atoldbl_l +_o__atoll_l +_o__beep +_o__beginthread +_o__beginthreadex +_o__cabs +_o__callnewh +_o__calloc_base +_o__cgets +_o__cgets_s +_o__cgetws +_o__cgetws_s +_o__chdir +_o__chdrive +_o__chmod +_o__chsize +_o__chsize_s +_o__close +_o__commit +_o__configure_wide_argv +_o__cputs +_o__cputws +_o__creat +_o__create_locale +_o__ctime32_s +_o__ctime64_s +_o__cwait +_o__d_int +_o__dclass +_o__difftime32 +_o__difftime64 +_o__dlog +_o__dnorm +_o__dpcomp +_o__dpoly +_o__dscale +_o__dsign +_o__dsin +_o__dtest +_o__dunscale +_o__dup +_o__dup2 +_o__dupenv_s +_o__ecvt +_o__ecvt_s +_o__endthread +_o__endthreadex +_o__eof +_o__errno +_o__except1 +_o__execute_onexit_table +_o__execv +_o__execve +_o__execvp +_o__execvpe +_o__expand +_o__fclose_nolock +_o__fcloseall +_o__fcvt +_o__fcvt_s +_o__fd_int +_o__fdclass +_o__fdexp +_o__fdlog +_o__fdopen +_o__fdpcomp +_o__fdpoly +_o__fdscale +_o__fdsign +_o__fdsin +_o__fflush_nolock +_o__fgetc_nolock +_o__fgetchar +_o__fgetwc_nolock +_o__fgetwchar +_o__filelength +_o__filelengthi64 +_o__fileno +_o__findclose +_o__findfirst32 +_o__findfirst32i64 +_o__findfirst64 +_o__findfirst64i32 +_o__findnext32 +_o__findnext32i64 +_o__findnext64 +_o__findnext64i32 +_o__flushall +_o__fpclass +_o__fpclassf +_o__fputc_nolock +_o__fputchar +_o__fputwc_nolock +_o__fputwchar +_o__fread_nolock +_o__fread_nolock_s +_o__free_base +_o__free_locale +_o__fseek_nolock +_o__fseeki64 +_o__fseeki64_nolock +_o__fsopen +_o__fstat32 +_o__fstat32i64 +_o__fstat64 +_o__fstat64i32 +_o__ftell_nolock +_o__ftelli64 +_o__ftelli64_nolock +_o__ftime32 +_o__ftime32_s +_o__ftime64 +_o__ftime64_s +_o__fullpath +_o__futime32 +_o__futime64 +_o__fwrite_nolock +_o__gcvt +_o__gcvt_s +_o__get_daylight +_o__get_doserrno +_o__get_dstbias +_o__get_errno +_o__get_fmode +_o__get_heap_handle +_o__get_invalid_parameter_handler +_o__get_narrow_winmain_command_line +_o__get_osfhandle +_o__get_pgmptr +_o__get_stream_buffer_pointers +_o__get_terminate +_o__get_thread_local_invalid_parameter_handler +_o__get_timezone +_o__get_tzname +_o__get_wide_winmain_command_line +_o__get_wpgmptr +_o__getc_nolock +_o__getch +_o__getch_nolock +_o__getche +_o__getche_nolock +_o__getcwd +_o__getdcwd +_o__getdiskfree +_o__getdllprocaddr +_o__getdrive +_o__getdrives +_o__getmbcp +_o__getsystime +_o__getw +_o__getwc_nolock +_o__getwch +_o__getwch_nolock +_o__getwche +_o__getwche_nolock +_o__getws +_o__getws_s +_o__gmtime32 +_o__gmtime32_s +_o__gmtime64 +_o__gmtime64_s +_o__heapchk +_o__heapmin +_o__hypot +_o__hypotf +_o__i64toa +_o__i64toa_s +_o__i64tow +_o__i64tow_s +_o__initialize_onexit_table +_o__invalid_parameter_noinfo +_o__invalid_parameter_noinfo_noreturn +_o__isatty +_o__isctype +_o__isctype_l +_o__isleadbyte_l +_o__ismbbalnum +_o__ismbbalnum_l +_o__ismbbalpha +_o__ismbbalpha_l +_o__ismbbblank +_o__ismbbblank_l +_o__ismbbgraph +_o__ismbbgraph_l +_o__ismbbkalnum +_o__ismbbkalnum_l +_o__ismbbkana +_o__ismbbkana_l +_o__ismbbkprint +_o__ismbbkprint_l +_o__ismbbkpunct +_o__ismbbkpunct_l +_o__ismbblead +_o__ismbblead_l +_o__ismbbprint +_o__ismbbprint_l +_o__ismbbpunct +_o__ismbbpunct_l +_o__ismbbtrail +_o__ismbbtrail_l +_o__ismbcalnum +_o__ismbcalnum_l +_o__ismbcalpha +_o__ismbcalpha_l +_o__ismbcblank +_o__ismbcblank_l +_o__ismbcdigit +_o__ismbcdigit_l +_o__ismbcgraph +_o__ismbcgraph_l +_o__ismbchira +_o__ismbchira_l +_o__ismbckata +_o__ismbckata_l +_o__ismbcl0 +_o__ismbcl0_l +_o__ismbcl1 +_o__ismbcl1_l +_o__ismbcl2 +_o__ismbcl2_l +_o__ismbclegal +_o__ismbclegal_l +_o__ismbclower +_o__ismbclower_l +_o__ismbcprint +_o__ismbcprint_l +_o__ismbcpunct +_o__ismbcpunct_l +_o__ismbcspace +_o__ismbcspace_l +_o__ismbcsymbol +_o__ismbcsymbol_l +_o__ismbcupper +_o__ismbcupper_l +_o__ismbslead +_o__ismbslead_l +_o__ismbstrail +_o__ismbstrail_l +_o__iswctype_l +_o__itoa +_o__itoa_s +_o__itow +_o__itow_s +_o__j0 +_o__j1 +_o__jn +_o__kbhit +_o__ld_int +_o__ldclass +_o__ldexp +_o__ldlog +_o__ldpcomp +_o__ldpoly +_o__ldscale +_o__ldsign +_o__ldsin +_o__ldtest +_o__ldunscale +_o__lfind +_o__lfind_s +_o__libm_sse2_acos_precise +_o__libm_sse2_asin_precise +_o__libm_sse2_atan_precise +_o__libm_sse2_cos_precise +_o__libm_sse2_exp_precise +_o__libm_sse2_log10_precise +_o__libm_sse2_log_precise +_o__libm_sse2_pow_precise +_o__libm_sse2_sin_precise +_o__libm_sse2_sqrt_precise +_o__libm_sse2_tan_precise +_o__loaddll +_o__localtime32 +_o__localtime32_s +_o__localtime64 +_o__localtime64_s +_o__lock_file +_o__locking +_o__logb +_o__logbf +_o__lsearch +_o__lsearch_s +_o__lseek +_o__lseeki64 +_o__ltoa +_o__ltoa_s +_o__ltow +_o__ltow_s +_o__makepath +_o__makepath_s +_o__malloc_base +_o__mbbtombc +_o__mbbtombc_l +_o__mbbtype +_o__mbbtype_l +_o__mbccpy +_o__mbccpy_l +_o__mbccpy_s +_o__mbccpy_s_l +_o__mbcjistojms +_o__mbcjistojms_l +_o__mbcjmstojis +_o__mbcjmstojis_l +_o__mbclen +_o__mbclen_l +_o__mbctohira +_o__mbctohira_l +_o__mbctokata +_o__mbctokata_l +_o__mbctolower +_o__mbctolower_l +_o__mbctombb +_o__mbctombb_l +_o__mbctoupper +_o__mbctoupper_l +_o__mblen_l +_o__mbsbtype +_o__mbsbtype_l +_o__mbscat_s +_o__mbscat_s_l +_o__mbschr +_o__mbschr_l +_o__mbscmp +_o__mbscmp_l +_o__mbscoll +_o__mbscoll_l +_o__mbscpy_s +_o__mbscpy_s_l +_o__mbscspn +_o__mbscspn_l +_o__mbsdec +_o__mbsdec_l +_o__mbsicmp +_o__mbsicmp_l +_o__mbsicoll +_o__mbsicoll_l +_o__mbsinc +_o__mbsinc_l +_o__mbslen +_o__mbslen_l +_o__mbslwr +_o__mbslwr_l +_o__mbslwr_s +_o__mbslwr_s_l +_o__mbsnbcat +_o__mbsnbcat_l +_o__mbsnbcat_s +_o__mbsnbcat_s_l +_o__mbsnbcmp +_o__mbsnbcmp_l +_o__mbsnbcnt +_o__mbsnbcnt_l +_o__mbsnbcoll +_o__mbsnbcoll_l +_o__mbsnbcpy +_o__mbsnbcpy_l +_o__mbsnbcpy_s +_o__mbsnbcpy_s_l +_o__mbsnbicmp +_o__mbsnbicmp_l +_o__mbsnbicoll +_o__mbsnbicoll_l +_o__mbsnbset +_o__mbsnbset_l +_o__mbsnbset_s +_o__mbsnbset_s_l +_o__mbsncat +_o__mbsncat_l +_o__mbsncat_s +_o__mbsncat_s_l +_o__mbsnccnt +_o__mbsnccnt_l +_o__mbsncmp +_o__mbsncmp_l +_o__mbsncoll +_o__mbsncoll_l +_o__mbsncpy +_o__mbsncpy_l +_o__mbsncpy_s +_o__mbsncpy_s_l +_o__mbsnextc +_o__mbsnextc_l +_o__mbsnicmp +_o__mbsnicmp_l +_o__mbsnicoll +_o__mbsnicoll_l +_o__mbsninc +_o__mbsninc_l +_o__mbsnlen +_o__mbsnlen_l +_o__mbsnset +_o__mbsnset_l +_o__mbsnset_s +_o__mbsnset_s_l +_o__mbspbrk +_o__mbspbrk_l +_o__mbsrchr +_o__mbsrchr_l +_o__mbsrev +_o__mbsrev_l +_o__mbsset +_o__mbsset_l +_o__mbsset_s +_o__mbsset_s_l +_o__mbsspn +_o__mbsspn_l +_o__mbsspnp +_o__mbsspnp_l +_o__mbsstr +_o__mbsstr_l +_o__mbstok +_o__mbstok_l +_o__mbstok_s +_o__mbstok_s_l +_o__mbstowcs_l +_o__mbstowcs_s_l +_o__mbstrlen +_o__mbstrlen_l +_o__mbstrnlen +_o__mbstrnlen_l +_o__mbsupr +_o__mbsupr_l +_o__mbsupr_s +_o__mbsupr_s_l +_o__mbtowc_l +_o__memicmp +_o__memicmp_l +_o__mkdir +_o__mkgmtime32 +_o__mkgmtime64 +_o__mktemp +_o__mktemp_s +_o__mktime32 +_o__mktime64 +_o__msize +_o__nextafter +_o__nextafterf +_o__open_osfhandle +_o__pclose +_o__pipe +_o__popen +_o__putc_nolock +_o__putch +_o__putch_nolock +_o__putenv +_o__putenv_s +_o__putw +_o__putwc_nolock +_o__putwch +_o__putwch_nolock +_o__putws +_o__read +_o__realloc_base +_o__recalloc +_o__register_onexit_function +_o__resetstkoflw +_o__rmdir +_o__rmtmp +_o__scalb +_o__scalbf +_o__searchenv +_o__searchenv_s +_o__set_abort_behavior +_o__set_doserrno +_o__set_errno +_o__set_invalid_parameter_handler +_o__set_new_handler +_o__set_new_mode +_o__set_thread_local_invalid_parameter_handler +_o__seterrormode +_o__setmbcp +_o__setmode +_o__setsystime +_o__sleep +_o__sopen +_o__sopen_dispatch +_o__sopen_s +_o__spawnv +_o__spawnve +_o__spawnvp +_o__spawnvpe +_o__splitpath +_o__splitpath_s +_o__stat32 +_o__stat32i64 +_o__stat64 +_o__stat64i32 +_o__strcoll_l +_o__strdate +_o__strdate_s +_o__strdup +_o__strerror +_o__strerror_s +_o__strftime_l +_o__stricmp +_o__stricmp_l +_o__stricoll +_o__stricoll_l +_o__strlwr +_o__strlwr_l +_o__strlwr_s +_o__strlwr_s_l +_o__strncoll +_o__strncoll_l +_o__strnicmp +_o__strnicmp_l +_o__strnicoll +_o__strnicoll_l +_o__strnset_s +_o__strset_s +_o__strtime +_o__strtime_s +_o__strtod_l +_o__strtof_l +_o__strtoi64 +_o__strtoi64_l +_o__strtol_l +_o__strtold_l +_o__strtoll_l +_o__strtoui64 +_o__strtoui64_l +_o__strtoul_l +_o__strtoull_l +_o__strupr +_o__strupr_l +_o__strupr_s +_o__strupr_s_l +_o__strxfrm_l +_o__swab +_o__tell +_o__telli64 +_o__timespec32_get +_o__timespec64_get +_o__tolower +_o__tolower_l +_o__toupper +_o__toupper_l +_o__towlower_l +_o__towupper_l +_o__tzset +_o__ui64toa +_o__ui64toa_s +_o__ui64tow +_o__ui64tow_s +_o__ultoa +_o__ultoa_s +_o__ultow +_o__ultow_s +_o__umask +_o__umask_s +_o__ungetc_nolock +_o__ungetch +_o__ungetch_nolock +_o__ungetwc_nolock +_o__ungetwch +_o__ungetwch_nolock +_o__unlink +_o__unloaddll +_o__unlock_file +_o__utime32 +_o__utime64 +_o__waccess +_o__waccess_s +_o__wasctime +_o__wasctime_s +_o__wchdir +_o__wchmod +_o__wcreat +_o__wcreate_locale +_o__wcscoll_l +_o__wcsdup +_o__wcserror +_o__wcserror_s +_o__wcsftime_l +_o__wcsicmp +_o__wcsicmp_l +_o__wcsicoll +_o__wcsicoll_l +_o__wcslwr +_o__wcslwr_l +_o__wcslwr_s +_o__wcslwr_s_l +_o__wcsncoll +_o__wcsncoll_l +_o__wcsnicmp +_o__wcsnicmp_l +_o__wcsnicoll +_o__wcsnicoll_l +_o__wcsnset +_o__wcsnset_s +_o__wcsset +_o__wcsset_s +_o__wcstod_l +_o__wcstof_l +_o__wcstoi64 +_o__wcstoi64_l +_o__wcstol_l +_o__wcstold_l +_o__wcstoll_l +_o__wcstombs_l +_o__wcstombs_s_l +_o__wcstoui64 +_o__wcstoui64_l +_o__wcstoul_l +_o__wcstoull_l +_o__wcsupr +_o__wcsupr_l +_o__wcsupr_s +_o__wcsupr_s_l +_o__wcsxfrm_l +_o__wctime32 +_o__wctime32_s +_o__wctime64 +_o__wctime64_s +_o__wctomb_l +_o__wctomb_s_l +_o__wdupenv_s +_o__wexecv +_o__wexecve +_o__wexecvp +_o__wexecvpe +_o__wfdopen +_o__wfindfirst32 +_o__wfindfirst32i64 +_o__wfindfirst64 +_o__wfindfirst64i32 +_o__wfindnext32 +_o__wfindnext32i64 +_o__wfindnext64 +_o__wfindnext64i32 +_o__wfopen +_o__wfopen_s +_o__wfreopen +_o__wfreopen_s +_o__wfsopen +_o__wfullpath +_o__wgetcwd +_o__wgetdcwd +_o__wgetenv +_o__wgetenv_s +_o__wmakepath +_o__wmakepath_s +_o__wmkdir +_o__wmktemp +_o__wmktemp_s +_o__wperror +_o__wpopen +_o__wputenv +_o__wputenv_s +_o__wremove +_o__wrename +_o__write +_o__wrmdir +_o__wsearchenv +_o__wsearchenv_s +_o__wsetlocale +_o__wsopen_dispatch +_o__wsopen_s +_o__wspawnv +_o__wspawnve +_o__wspawnvp +_o__wspawnvpe +_o__wsplitpath +_o__wsplitpath_s +_o__wstat32 +_o__wstat32i64 +_o__wstat64 +_o__wstat64i32 +_o__wstrdate +_o__wstrdate_s +_o__wstrtime +_o__wstrtime_s +_o__wsystem +_o__wtmpnam_s +_o__wtof +_o__wtof_l +_o__wtoi +_o__wtoi64 +_o__wtoi64_l +_o__wtoi_l +_o__wtol +_o__wtol_l +_o__wtoll +_o__wtoll_l +_o__wunlink +_o__wutime32 +_o__wutime64 +_o__y0 +_o__y1 +_o__yn +_o_abort +_o_acos +_o_acosf +_o_acosh +_o_acoshf +_o_acoshl +_o_asctime +_o_asctime_s +_o_asin +_o_asinf +_o_asinh +_o_asinhf +_o_asinhl +_o_atan +_o_atan2 +_o_atan2f +_o_atanf +_o_atanh +_o_atanhf +_o_atanhl +_o_atof +_o_atoi +_o_atol +_o_atoll +_o_bsearch +_o_bsearch_s +_o_btowc +_o_calloc +_o_cbrt +_o_cbrtf +_o_ceil +_o_ceilf +_o_clearerr +_o_clearerr_s +_o_cos +_o_cosf +_o_cosh +_o_coshf +_o_erf +_o_erfc +_o_erfcf +_o_erfcl +_o_erff +_o_erfl +_o_exp +_o_exp2 +_o_exp2f +_o_exp2l +_o_expf +_o_fabs +_o_fclose +_o_feof +_o_ferror +_o_fflush +_o_fgetc +_o_fgetpos +_o_fgets +_o_fgetwc +_o_fgetws +_o_floor +_o_floorf +_o_fma +_o_fmaf +_o_fmal +_o_fmod +_o_fmodf +_o_fopen +_o_fopen_s +_o_fputc +_o_fputs +_o_fputwc +_o_fputws +_o_fread +_o_fread_s +_o_free +_o_freopen +_o_freopen_s +_o_frexp +_o_fseek +_o_fsetpos +_o_ftell +_o_fwrite +_o_getc +_o_getchar +_o_getenv +_o_getenv_s +_o_gets +_o_gets_s +_o_getwc +_o_getwchar +_o_hypot +_o_is_wctype +_o_isalnum +_o_isalpha +_o_isblank +_o_iscntrl +_o_isdigit +_o_isgraph +_o_isleadbyte +_o_islower +_o_isprint +_o_ispunct +_o_isspace +_o_isupper +_o_iswalnum +_o_iswalpha +_o_iswascii +_o_iswblank +_o_iswcntrl +_o_iswctype +_o_iswdigit +_o_iswgraph +_o_iswlower +_o_iswprint +_o_iswpunct +_o_iswspace +_o_iswupper +_o_iswxdigit +_o_isxdigit +_o_ldexp +_o_lgamma +_o_lgammaf +_o_lgammal +_o_llrint +_o_llrintf +_o_llrintl +_o_llround +_o_llroundf +_o_llroundl +_o_localeconv +_o_log +_o_log10 +_o_log10f +_o_log1p +_o_log1pf +_o_log1pl +_o_log2 +_o_log2f +_o_log2l +_o_logb +_o_logbf +_o_logbl +_o_logf +_o_lrint +_o_lrintf +_o_lrintl +_o_lround +_o_lroundf +_o_lroundl +_o_malloc +_o_mblen +_o_mbrlen +_o_mbrtoc16 +_o_mbrtoc32 +_o_mbrtowc +_o_mbsrtowcs +_o_mbsrtowcs_s +_o_mbstowcs +_o_mbstowcs_s +_o_mbtowc +_o_memset +_o_modf +_o_modff +_o_nan +_o_nanf +_o_nanl +_o_nearbyint +_o_nearbyintf +_o_nearbyintl +_o_nextafter +_o_nextafterf +_o_nextafterl +_o_nexttoward +_o_nexttowardf +_o_nexttowardl +_o_pow +_o_powf +_o_putc +_o_putchar +_o_puts +_o_putwc +_o_putwchar +_o_qsort +_o_qsort_s +_o_raise +_o_rand +_o_rand_s +_o_realloc +_o_remainder +_o_remainderf +_o_remainderl +_o_remove +_o_remquo +_o_remquof +_o_remquol +_o_rewind +_o_rint +_o_rintf +_o_rintl +_o_round +_o_roundf +_o_roundl +_o_scalbln +_o_scalblnf +_o_scalblnl +_o_scalbn +_o_scalbnf +_o_scalbnl +_o_set_terminate +_o_setbuf +_o_setvbuf +_o_sin +_o_sinf +_o_sinh +_o_sinhf +_o_sqrt +_o_sqrtf +_o_srand +_o_strcat_s +_o_strcoll +_o_strcpy_s +_o_strerror +_o_strerror_s +_o_strftime +_o_strncat_s +_o_strncpy_s +_o_strtod +_o_strtof +_o_strtok +_o_strtok_s +_o_strtol +_o_strtold +_o_strtoll +_o_strtoul +_o_strtoull +_o_system +_o_tan +_o_tanf +_o_tanh +_o_tanhf +_o_terminate +_o_tgamma +_o_tgammaf +_o_tgammal +_o_tmpfile_s +_o_tmpnam_s +_o_tolower +_o_toupper +_o_towlower +_o_towupper +_o_ungetc +_o_ungetwc +_o_wcrtomb +_o_wcrtomb_s +_o_wcscat_s +_o_wcscoll +_o_wcscpy +_o_wcscpy_s +_o_wcsftime +_o_wcsncat_s +_o_wcsncpy_s +_o_wcsrtombs +_o_wcsrtombs_s +_o_wcstod +_o_wcstof +_o_wcstok +_o_wcstok_s +_o_wcstol +_o_wcstold +_o_wcstoll +_o_wcstombs +_o_wcstombs_s +_o_wcstoul +_o_wcstoull +_o_wctob +_o_wctomb +_o_wctomb_s +_o_wmemcpy_s +_o_wmemmove_s +_purecall +F_I386(_seh_longjmp_unwind@4) +F_I386(_seh_longjmp_unwind4@4) +_set_purecall_handler +_set_se_translator +F_I386(_setjmp3) +longjmp +memchr +memcmp +memcpy +memmove +set_unexpected +F_X64(setjmp) +strchr +strrchr +strstr +unexpected +wcschr +wcsrchr +wcsstr diff --git a/lib/libc/mingw/lib-common/api-ms-win-crt-process-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-crt-process-l1-1-0.def new file mode 100644 index 0000000000..dafa456a52 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-crt-process-l1-1-0.def @@ -0,0 +1,57 @@ +LIBRARY api-ms-win-crt-process-l1-1-0 + +EXPORTS + +_beep +_cwait +cwait == _cwait +_execl +execl == _execl +_execle +execle == _execle +_execlp +execlp == _execlp +_execlpe +execlpe == _execlpe +_execv +execv == _execv +_execve +execve == _execve +_execvp +execvp == _execvp +_execvpe +execvpe == _execvpe +_loaddll +_spawnl +spawnl == _spawnl +_spawnle +spawnle == _spawnle +_spawnlp +spawnlp == _spawnlp +_spawnlpe +spawnlpe == _spawnlpe +_spawnv +spawnv == _spawnv +_spawnve +spawnve == _spawnve +_spawnvp +spawnvp == _spawnvp +_spawnvpe +spawnvpe == _spawnvpe +_unloaddll +_wexecl +_wexecle +_wexeclp +_wexeclpe +_wexecv +_wexecve +_wexecvp +_wexecvpe +_wspawnl +_wspawnle +_wspawnlp +_wspawnlpe +_wspawnv +_wspawnve +_wspawnvp +_wspawnvpe diff --git a/lib/libc/mingw/lib-common/api-ms-win-crt-runtime-l1-1-0.def.in b/lib/libc/mingw/lib-common/api-ms-win-crt-runtime-l1-1-0.def.in new file mode 100644 index 0000000000..ea310d426f --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-crt-runtime-l1-1-0.def.in @@ -0,0 +1,120 @@ +LIBRARY api-ms-win-crt-runtime-l1-1-0 + +EXPORTS + +#include "func.def.in" + +_Exit +F_I386(__control87_2) +__doserrno +__fpe_flt_rounds +__fpecode +__p___argc +__p___argv +__p___wargv +__p__acmdln +__p__pgmptr +__p__wcmdln +__p__wpgmptr +__pxcptinfoptrs +__sys_errlist +__sys_nerr +__threadhandle +__threadid +__wcserror +__wcserror_s +; DATA set manually +_assert +_beginthread +_beginthreadex +_c_exit +_cexit +_clearfp +_configure_narrow_argv +_configure_wide_argv +_control87 +_controlfp +_controlfp_s +_crt_at_quick_exit +_crt_atexit +_crt_debugger_hook +_endthread +_endthreadex +_errno +_execute_onexit_table +_exit +F_NON_I386(_fpieee_flt) +; DATA added manually +_fpreset DATA +_get_doserrno +_get_errno +_get_initial_narrow_environment +_get_initial_wide_environment +_get_invalid_parameter_handler +_get_narrow_winmain_command_line +_get_pgmptr +_get_terminate +_get_thread_local_invalid_parameter_handler +_get_wide_winmain_command_line +_get_wpgmptr +_getdllprocaddr +_getpid +getpid == _getpid +_initialize_narrow_environment +_initialize_onexit_table +_initialize_wide_environment +_initterm +_initterm_e +_invalid_parameter_noinfo +_invalid_parameter_noinfo_noreturn +_invoke_watson +_query_app_type +_register_onexit_function +_register_thread_local_exe_atexit_callback +_resetstkoflw +_seh_filter_dll +_seh_filter_exe +_set_abort_behavior +_set_app_type +__set_app_type == _set_app_type +_set_controlfp +_set_doserrno +_set_errno +_set_error_mode +_set_invalid_parameter_handler +_set_new_handler +_set_thread_local_invalid_parameter_handler +_seterrormode +_sleep +_statusfp +F_I386(_statusfp2) +_strerror +_strerror_s +_wassert +_wcserror +_wcserror_s +_wperror +_wsystem +abort +exit +; Don't use the float env functions from UCRT; fesetround doesn't seem to have +; any effect on the FPU control word as required by other libmingwex math +; routines. +feclearexcept DATA +fegetenv DATA +fegetexceptflag DATA +fegetround DATA +feholdexcept DATA +fesetenv DATA +fesetexceptflag DATA +fesetround DATA +fetestexcept DATA +perror +quick_exit +raise +set_terminate +signal +strerror +strerror_s +system +terminate diff --git a/lib/libc/mingw/lib-common/api-ms-win-crt-stdio-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-crt-stdio-l1-1-0.def new file mode 100644 index 0000000000..cdfc2362b6 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-crt-stdio-l1-1-0.def @@ -0,0 +1,194 @@ +LIBRARY api-ms-win-crt-stdio-l1-1-0 + +EXPORTS + +__acrt_iob_func +__p__commode +__p__fmode +__stdio_common_vfprintf +__stdio_common_vfprintf_p +__stdio_common_vfprintf_s +__stdio_common_vfscanf +__stdio_common_vfwprintf +__stdio_common_vfwprintf_p +__stdio_common_vfwprintf_s +__stdio_common_vfwscanf +__stdio_common_vsnprintf_s +__stdio_common_vsnwprintf_s +__stdio_common_vsprintf +__stdio_common_vsprintf_p +__stdio_common_vsprintf_s +__stdio_common_vsscanf +__stdio_common_vswprintf +__stdio_common_vswprintf_p +__stdio_common_vswprintf_s +__stdio_common_vswscanf +_chsize +chsize == _chsize +_chsize_s +_close +close == _close +_commit +_creat +creat == _creat +_dup +dup == _dup +_dup2 +dup2 == _dup2 +_eof +eof == _eof +_fclose_nolock +_fcloseall +fcloseall == _fcloseall +_fflush_nolock +_fgetc_nolock +_fgetchar +fgetchar == _fgetchar +_fgetwc_nolock +_fgetwchar +fgetwchar == _fgetwchar +_filelength +filelength == _filelength +_filelengthi64 +_fileno +fileno == _fileno +_flushall +_fputc_nolock +_fputchar +fputchar == _fputchar +_fputwc_nolock +_fputwchar +fputwchar == _fputwchar +_fread_nolock +_fread_nolock_s +_fseek_nolock +_fseeki64 +_fseeki64_nolock +_fsopen +_ftell_nolock +_ftelli64 +_ftelli64_nolock +_fwrite_nolock +_get_fmode +_get_osfhandle +_get_printf_count_output +_get_stream_buffer_pointers +_getc_nolock +_getcwd +getcwd == _getcwd +_getdcwd +_getmaxstdio +_getw +getw == _getw +_getwc_nolock +_getws +_getws_s +_isatty +isatty == _isatty +_kbhit +kbhit == _kbhit +_locking +_lseek +lseek == _lseek +_lseeki64 +_mktemp +mktemp == _mktemp +_mktemp_s +_open +open == _open +_open_osfhandle +_pclose +pclose == _pclose +_pipe +_popen +popen == _popen +_putc_nolock +_putw +putw == _putw +_putwc_nolock +_putws +_read +read == _read +_rmtmp +rmtmp == _rmtmp +_set_fmode +_set_printf_count_output +_setmaxstdio +_setmode +setmode == _setmode +_sopen +sopen == _sopen +_sopen_dispatch +_sopen_s +_tell +tell == _tell +_telli64 +_tempnam +tempnam == _tempnam +_ungetc_nolock +_ungetwc_nolock +_wcreat +_wfdopen +_wfopen +_wfopen_s +_wfreopen +_wfreopen_s +_wfsopen +_wmktemp +_wmktemp_s +_wopen +_wpopen +wpopen == _wpopen +_write +write == _write +_wsopen +_wsopen_dispatch +_wsopen_s +_wtempnam +_wtmpnam +_wtmpnam_s +clearerr +clearerr_s +fclose +feof +ferror +fflush +fgetc +fgetpos +fgets +fgetwc +fgetws +fopen +fopen_s +fputc +fputs +fputwc +fputws +fread +fread_s +freopen +freopen_s +fseek +fsetpos +ftell +fwrite +getc +getchar +gets +gets_s +getwc +getwchar +putc +putchar +puts +putwc +putwchar +rewind +setbuf +setvbuf +tmpfile +tmpfile_s +tmpnam +tmpnam_s +ungetc +ungetwc diff --git a/lib/libc/mingw/lib-common/api-ms-win-crt-string-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-crt-string-l1-1-0.def new file mode 100644 index 0000000000..dcce58dbc3 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-crt-string-l1-1-0.def @@ -0,0 +1,211 @@ +LIBRARY api-ms-win-crt-string-l1-1-0 + +EXPORTS + +__isascii +isascii == __isascii +__iscsym +iscsym == __iscsym +__iscsymf +iscsymf == __iscsymf +__iswcsym +__iswcsymf +__strncnt +__wcsncnt +_isalnum_l +_isalpha_l +_isblank_l +_iscntrl_l +_isctype +_isctype_l +_isdigit_l +_isgraph_l +_isleadbyte_l +_islower_l +_isprint_l +_ispunct_l +_isspace_l +_isupper_l +_iswalnum_l +_iswalpha_l +_iswblank_l +_iswcntrl_l +_iswcsym_l +_iswcsymf_l +_iswctype_l +_iswdigit_l +_iswgraph_l +_iswlower_l +_iswprint_l +_iswpunct_l +_iswspace_l +_iswupper_l +_iswxdigit_l +_isxdigit_l +_memccpy +memccpy == _memccpy +_memicmp +memicmp == _memicmp +_memicmp_l +_strcoll_l +_strdup +strdup == _strdup +_stricmp +_strcmpi == _stricmp +strcmpi == _stricmp +stricmp == _stricmp +strcasecmp == _stricmp +_stricmp_l +_stricoll +stricoll == _stricoll +_stricoll_l +_strlwr +strlwr == _strlwr +_strlwr_l +_strlwr_s +_strlwr_s_l +_strncoll +_strncoll_l +_strnicmp +strnicmp == _strnicmp +strncasecmp == _strnicmp +_strnicmp_l +_strnicoll +_strnicoll_l +_strnset +strnset == _strnset +_strnset_s +_strrev +strrev == _strrev +_strset +strset == _strset +_strset_s +_strupr +strupr == _strupr +_strupr_l +_strupr_s +_strupr_s_l +_strxfrm_l +_tolower +_tolower_l +_toupper +_toupper_l +_towlower_l +_towupper_l +_wcscoll_l +_wcsdup +wcsdup == _wcsdup +_wcsicmp +wcsicmp == _wcsicmp +wcscmpi == _wcsicmp +_wcsicmp_l +_wcsicoll +wcsicoll == _wcsicoll +_wcsicoll_l +_wcslwr +wcslwr == _wcslwr +_wcslwr_l +_wcslwr_s +_wcslwr_s_l +_wcsncoll +_wcsncoll_l +_wcsnicmp +wcsnicmp == _wcsnicmp +_wcsnicmp_l +_wcsnicoll +_wcsnicoll_l +_wcsnset +wcsnset == _wcsnset +_wcsnset_s +_wcsrev +wcsrev == _wcsrev +_wcsset +wcsset == _wcsset +_wcsset_s +_wcsupr +wcsupr == _wcsupr +_wcsupr_l +_wcsupr_s +_wcsupr_s_l +_wcsxfrm_l +_wctype +is_wctype +isalnum +isalpha +isblank +iscntrl +isdigit +isgraph +isleadbyte +islower +isprint +ispunct +isspace +isupper +iswalnum +iswalpha +iswascii +iswblank +iswcntrl +iswctype +iswdigit +iswgraph +iswlower +iswprint +iswpunct +iswspace +iswupper +iswxdigit +isxdigit +mblen +mbrlen +memcpy_s +memmove_s +memset +strcat +strcat_s +strcmp +strcoll +strcpy +strcpy_s +strcspn +strlen +strncat +strncat_s +strncmp +strncpy +strncpy_s +; strnlen replaced by emu +strpbrk +strspn +strtok +strtok_s +strxfrm +tolower +toupper +towctrans +towlower +towupper +wcscat +wcscat_s +wcscmp +wcscoll +wcscpy +wcscpy_s +wcscspn +wcslen +wcsncat +wcsncat_s +wcsncmp +wcsncpy +wcsncpy_s +; We provide replacement implementation in libmingwex +wcsnlen DATA +wcspbrk +wcsspn +wcstok +wcstok_s +wcsxfrm +wctype +wmemcpy_s +wmemmove_s diff --git a/lib/libc/mingw/lib-common/api-ms-win-crt-time-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-crt-time-l1-1-0.def new file mode 100644 index 0000000000..0e30b11271 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-crt-time-l1-1-0.def @@ -0,0 +1,89 @@ +LIBRARY api-ms-win-crt-time-l1-1-0 + +EXPORTS + +__daylight +__dstbias +__timezone +__tzname +_ctime32 +_ctime32_s +_ctime64 +_ctime64_s +_difftime32 +_difftime64 +_ftime == _ftime64 +_ftime32 +_ftime32_s +_ftime64 +_ftime64_s +_futime == _futime64 +_futime32 +_futime64 +_get_daylight +_get_dstbias +_get_timezone +_get_tzname +_getsystime +_Getdays +_Getmonths +_Gettnames +_gmtime32 +_gmtime32_s +_gmtime64 +_gmtime64_s +_localtime32 +_localtime32_s +_localtime64 +_localtime64_s +_mkgmtime32 +_mkgmtime64 +_mktime32 +_mktime64 +_setsystime +_strdate +_strdate_s +_Strftime +_strftime_l +_strtime +_strtime_s +_time32 +_time64 +_timespec32_get +_timespec64_get +; This is wrapped in the compat code. +_tzset DATA +_utime == _utime64 +utime == _utime64 +_utime32 +_utime64 +_W_Getdays +_W_Getmonths +_W_Gettnames +_wasctime +_wasctime_s +_Wcsftime +_wcsftime_l +_wctime32 +_wctime32_s +_wctime64 +_wctime64_s +_wstrdate +_wstrdate_s +_wstrtime +_wstrtime_s +_wutime == _wutime64 +_wutime32 +_wutime64 +asctime +asctime_s +clock +strftime +wcsftime +; These functions may satisfy configure scripts. +ctime == _ctime64 +gmtime == _gmtime64 +localtime == _localtime64 +mktime == _mktime64 +time == _time64 +timespec_get == _timespec64_get diff --git a/lib/libc/mingw/lib-common/api-ms-win-crt-utility-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-crt-utility-l1-1-0.def new file mode 100644 index 0000000000..6013445323 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-crt-utility-l1-1-0.def @@ -0,0 +1,37 @@ +LIBRARY api-ms-win-crt-utility-l1-1-0 + +EXPORTS + +_abs64 +_byteswap_uint64 +_byteswap_ulong +_byteswap_ushort +_lfind +lfind == _lfind +_lfind_s +_lrotl +_lrotr +_lsearch +lsearch == _lsearch +_lsearch_s +_rotl +_rotl64 +_rotr +_rotr64 +_swab +swab == _swab +abs +bsearch +bsearch_s +div +imaxabs +imaxdiv +labs +ldiv +llabs +lldiv +qsort +qsort_s +rand +rand_s +srand diff --git a/lib/libc/mingw/lib-common/api-ms-win-devices-config-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-devices-config-l1-1-1.def new file mode 100644 index 0000000000..e84ca03ac7 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-devices-config-l1-1-1.def @@ -0,0 +1,43 @@ +LIBRARY api-ms-win-devices-config-l1-1-1 + +EXPORTS + +CM_Delete_Class_Key +CM_Delete_Device_Interface_KeyW +CM_Delete_DevNode_Key +CM_Disable_DevNode +CM_Enable_DevNode +CM_Get_Child +CM_Get_Class_Property_Keys +CM_Get_Class_PropertyW +CM_Get_Class_Registry_PropertyW +CM_Get_Depth +CM_Get_Device_ID_List_SizeW +CM_Get_Device_ID_ListW +CM_Get_Device_ID_Size +CM_Get_Device_IDW +CM_Get_Device_Interface_List_SizeW +CM_Get_Device_Interface_ListW +CM_Get_Device_Interface_Property_KeysW +CM_Get_Device_Interface_PropertyW +CM_Get_DevNode_Property_Keys +CM_Get_DevNode_PropertyW +CM_Get_DevNode_Registry_PropertyW +CM_Get_DevNode_Status +CM_Get_Parent +CM_Get_Sibling +CM_Locate_DevNodeW +CM_MapCrToWin32Err +CM_Open_Class_KeyW +CM_Open_Device_Interface_KeyW +CM_Open_DevNode_Key +CM_Query_And_Remove_SubTreeW +CM_Register_Notification +CM_Set_Class_PropertyW +CM_Set_Class_Registry_PropertyW +CM_Set_Device_Interface_PropertyW +CM_Set_DevNode_PropertyW +CM_Set_DevNode_Registry_PropertyW +CM_Setup_DevNode +CM_Uninstall_DevNode +CM_Unregister_Notification diff --git a/lib/libc/mingw/lib-common/api-ms-win-devices-config-l1-1-1_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-devices-config-l1-1-1_windowsapp.def new file mode 100644 index 0000000000..f9d52afdc0 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-devices-config-l1-1-1_windowsapp.def @@ -0,0 +1,17 @@ +LIBRARY api-ms-win-devices-config-l1-1-1 + +EXPORTS + +CM_Get_Device_ID_List_SizeW +CM_Get_Device_ID_ListW +CM_Get_Device_IDW +CM_Get_Device_Interface_List_SizeW +CM_Get_Device_Interface_ListW +CM_Get_Device_Interface_PropertyW +CM_Get_DevNode_PropertyW +CM_Get_DevNode_Status +CM_Get_Parent +CM_Locate_DevNodeW +CM_MapCrToWin32Err +CM_Register_Notification +CM_Unregister_Notification diff --git a/lib/libc/mingw/lib-common/api-ms-win-devices-config-l1-1-2.def b/lib/libc/mingw/lib-common/api-ms-win-devices-config-l1-1-2.def new file mode 100644 index 0000000000..626857b66e --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-devices-config-l1-1-2.def @@ -0,0 +1,18 @@ +LIBRARY api-ms-win-devices-config-l1-1-2 + +EXPORTS + +CM_Delete_Device_Interface_KeyA +CM_Get_Class_Registry_PropertyA +CM_Get_Device_ID_List_SizeA +CM_Get_Device_ID_ListA +CM_Get_Device_IDA +CM_Get_Device_Interface_List_SizeA +CM_Get_Device_Interface_ListA +CM_Get_DevNode_Registry_PropertyA +CM_Locate_DevNodeA +CM_Open_Class_KeyA +CM_Open_Device_Interface_KeyA +CM_Query_And_Remove_SubTreeA +CM_Set_Class_Registry_PropertyA +CM_Set_DevNode_Registry_PropertyA diff --git a/lib/libc/mingw/lib-common/api-ms-win-devices-config-l1-1-2_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-devices-config-l1-1-2_windowsapp.def new file mode 100644 index 0000000000..eb9a440e8d --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-devices-config-l1-1-2_windowsapp.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-devices-config-l1-1-2 + +EXPORTS + +CM_Get_Device_Interface_List_SizeA +CM_Get_Device_Interface_ListA diff --git a/lib/libc/mingw/lib-common/api-ms-win-devices-query-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-devices-query-l1-1-0.def new file mode 100644 index 0000000000..d40aa188b6 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-devices-query-l1-1-0.def @@ -0,0 +1,14 @@ +LIBRARY api-ms-win-devices-query-l1-1-0 + +EXPORTS + +DevCloseObjectQuery +DevCreateObjectQuery +DevCreateObjectQueryFromId +DevCreateObjectQueryFromIds +DevFindProperty +DevFreeObjectProperties +DevFreeObjects +DevGetObjectProperties +DevGetObjects +DevSetObjectProperties diff --git a/lib/libc/mingw/lib-common/api-ms-win-devices-query-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-devices-query-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..5d1c7fffe5 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-devices-query-l1-1-0_windowsapp.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-devices-query-l1-1-0 + +EXPORTS + +DevCloseObjectQuery +DevCreateObjectQuery diff --git a/lib/libc/mingw/lib-common/api-ms-win-devices-query-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-devices-query-l1-1-1.def new file mode 100644 index 0000000000..837d289ec0 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-devices-query-l1-1-1.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-devices-query-l1-1-1 + +EXPORTS + +DevCreateObjectQueryEx +DevCreateObjectQueryFromIdEx +DevCreateObjectQueryFromIdsEx +DevGetObjectPropertiesEx +DevGetObjectsEx diff --git a/lib/libc/mingw/lib-common/api-ms-win-devices-swdevice-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-devices-swdevice-l1-1-0.def new file mode 100644 index 0000000000..f6cc7201b6 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-devices-swdevice-l1-1-0.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-devices-swdevice-l1-1-0 + +EXPORTS + +SwDeviceClose +SwDeviceCreate +SwDeviceInterfacePropertySet +SwDeviceInterfaceRegister +SwDeviceInterfaceSetState +SwDevicePropertySet +SwMemFree diff --git a/lib/libc/mingw/lib-common/api-ms-win-devices-swdevice-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-devices-swdevice-l1-1-1.def new file mode 100644 index 0000000000..4557ce32a5 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-devices-swdevice-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-devices-swdevice-l1-1-1 + +EXPORTS + +SwDeviceGetLifetime +SwDeviceSetLifetime diff --git a/lib/libc/mingw/lib-common/api-ms-win-downlevel-advapi32-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-downlevel-advapi32-l1-1-0.def new file mode 100644 index 0000000000..4eb6a3b76a --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-downlevel-advapi32-l1-1-0.def @@ -0,0 +1,164 @@ +LIBRARY api-ms-win-downlevel-advapi32-l1-1-0 + +EXPORTS + +AccessCheck +AccessCheckAndAuditAlarmW +AccessCheckByType +AccessCheckByTypeAndAuditAlarmW +AccessCheckByTypeResultList +AccessCheckByTypeResultListAndAuditAlarmByHandleW +AccessCheckByTypeResultListAndAuditAlarmW +AddAccessAllowedAce +AddAccessAllowedAceEx +AddAccessAllowedObjectAce +AddAccessDeniedAce +AddAccessDeniedAceEx +AddAccessDeniedObjectAce +AddAce +AddAuditAccessAce +AddAuditAccessAceEx +AddAuditAccessObjectAce +AddMandatoryAce +AdjustTokenGroups +AdjustTokenPrivileges +AllocateAndInitializeSid +AllocateLocallyUniqueId +AreAllAccessesGranted +AreAnyAccessesGranted +CheckTokenMembership +ConvertToAutoInheritPrivateObjectSecurity +CopySid +CreatePrivateObjectSecurity +CreatePrivateObjectSecurityEx +CreatePrivateObjectSecurityWithMultipleInheritance +CreateProcessAsUserW +CreateRestrictedToken +CreateWellKnownSid +DeleteAce +DestroyPrivateObjectSecurity +DuplicateToken +DuplicateTokenEx +EqualDomainSid +EqualPrefixSid +EqualSid +EventActivityIdControl +EventEnabled +EventProviderEnabled +EventRegister +EventUnregister +EventWrite +EventWriteEx +EventWriteString +EventWriteTransfer +FindFirstFreeAce +FreeSid +GetAce +GetAclInformation +GetFileSecurityW +GetKernelObjectSecurity +GetLengthSid +GetPrivateObjectSecurity +GetSecurityDescriptorControl +GetSecurityDescriptorDacl +GetSecurityDescriptorGroup +GetSecurityDescriptorLength +GetSecurityDescriptorOwner +GetSecurityDescriptorRMControl +GetSecurityDescriptorSacl +GetSidIdentifierAuthority +GetSidLengthRequired +GetSidSubAuthority +GetSidSubAuthorityCount +GetTokenInformation +GetTraceEnableFlags +GetTraceEnableLevel +GetTraceLoggerHandle +GetWindowsAccountDomainSid +ImpersonateAnonymousToken +ImpersonateLoggedOnUser +ImpersonateNamedPipeClient +ImpersonateSelf +InitializeAcl +InitializeSecurityDescriptor +InitializeSid +IsTokenRestricted +IsValidAcl +IsValidSecurityDescriptor +IsValidSid +IsWellKnownSid +MakeAbsoluteSD +MakeSelfRelativeSD +MapGenericMask +ObjectCloseAuditAlarmW +ObjectDeleteAuditAlarmW +ObjectOpenAuditAlarmW +ObjectPrivilegeAuditAlarmW +OpenProcessToken +OpenThreadToken +PrivilegeCheck +PrivilegedServiceAuditAlarmW +QuerySecurityAccessMask +RegCloseKey +RegCopyTreeW +RegCreateKeyExA +RegCreateKeyExW +RegDeleteKeyExA +RegDeleteKeyExW +RegDeleteTreeA +RegDeleteTreeW +RegDeleteValueA +RegDeleteValueW +RegDisablePredefinedCacheEx +RegEnumKeyExA +RegEnumKeyExW +RegEnumValueA +RegEnumValueW +RegFlushKey +RegGetKeySecurity +RegGetValueA +RegGetValueW +RegLoadAppKeyA +RegLoadAppKeyW +RegLoadKeyA +RegLoadKeyW +RegLoadMUIStringA +RegLoadMUIStringW +RegNotifyChangeKeyValue +RegOpenCurrentUser +RegOpenKeyExA +RegOpenKeyExW +RegOpenUserClassesRoot +RegQueryInfoKeyA +RegQueryInfoKeyW +RegQueryValueExA +RegQueryValueExW +RegRestoreKeyA +RegRestoreKeyW +RegSaveKeyExA +RegSaveKeyExW +RegSetKeySecurity +RegSetValueExA +RegSetValueExW +RegUnLoadKeyA +RegUnLoadKeyW +RegisterTraceGuidsW +RevertToSelf +SetAclInformation +SetFileSecurityW +SetKernelObjectSecurity +SetPrivateObjectSecurity +SetPrivateObjectSecurityEx +SetSecurityAccessMask +SetSecurityDescriptorControl +SetSecurityDescriptorDacl +SetSecurityDescriptorGroup +SetSecurityDescriptorOwner +SetSecurityDescriptorRMControl +SetSecurityDescriptorSacl +SetThreadToken +SetTokenInformation +TraceEvent +TraceMessage +TraceMessageVa +UnregisterTraceGuids diff --git a/lib/libc/mingw/lib-common/api-ms-win-downlevel-advapi32-l2-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-downlevel-advapi32-l2-1-0.def new file mode 100644 index 0000000000..d625083fa7 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-downlevel-advapi32-l2-1-0.def @@ -0,0 +1,92 @@ +LIBRARY api-ms-win-downlevel-advapi32-l2-1-0 + +EXPORTS + +ChangeServiceConfig2A +ChangeServiceConfig2W +ChangeServiceConfigA +ChangeServiceConfigW +CloseServiceHandle +CloseTrace +ControlService +ControlServiceExA +ControlServiceExW +ControlTraceA +ControlTraceW +ConvertSecurityDescriptorToStringSecurityDescriptorW +ConvertSidToStringSidW +ConvertStringSecurityDescriptorToSecurityDescriptorW +ConvertStringSidToSidW +CreateServiceA +CreateServiceW +CredDeleteA +CredDeleteW +CredEnumerateA +CredEnumerateW +CredFindBestCredentialA +CredFindBestCredentialW +CredFree +CredGetSessionTypes +CredGetTargetInfoA +CredGetTargetInfoW +CredIsMarshaledCredentialW +CredIsProtectedA +CredIsProtectedW +CredMarshalCredentialA +CredMarshalCredentialW +CredProtectA +CredProtectW +CredReadA +CredReadDomainCredentialsA +CredReadDomainCredentialsW +CredReadW +CredUnmarshalCredentialA +CredUnmarshalCredentialW +CredUnprotectA +CredUnprotectW +CredWriteA +CredWriteDomainCredentialsA +CredWriteDomainCredentialsW +CredWriteW +DeleteService +EnableTraceEx2 +EnumDependentServicesW +EnumServicesStatusExW +EnumerateTraceGuidsEx +EventAccessControl +EventAccessQuery +EventAccessRemove +NotifyServiceStatusChangeA +NotifyServiceStatusChangeW +OpenSCManagerA +OpenSCManagerW +OpenServiceA +OpenServiceW +OpenTraceW +ProcessTrace +QueryAllTracesA +QueryAllTracesW +QueryServiceConfig2A +QueryServiceConfig2W +QueryServiceConfigA +QueryServiceConfigW +QueryServiceObjectSecurity +QueryServiceStatus +QueryServiceStatusEx +RegisterServiceCtrlHandlerA +RegisterServiceCtrlHandlerExA +RegisterServiceCtrlHandlerExW +RegisterServiceCtrlHandlerW +RegisterTraceGuidsA +RemoveTraceCallback +SetServiceObjectSecurity +SetServiceStatus +SetTraceCallback +StartServiceA +StartServiceCtrlDispatcherA +StartServiceCtrlDispatcherW +StartServiceW +StartTraceA +StartTraceW +StopTraceW +TraceSetInformation diff --git a/lib/libc/mingw/lib-common/api-ms-win-downlevel-normaliz-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-downlevel-normaliz-l1-1-0.def new file mode 100644 index 0000000000..54005208e6 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-downlevel-normaliz-l1-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-downlevel-normaliz-l1-1-0 + +EXPORTS + +IdnToAscii +IdnToUnicode diff --git a/lib/libc/mingw/lib-common/api-ms-win-downlevel-ole32-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-downlevel-ole32-l1-1-0.def new file mode 100644 index 0000000000..3ef7fbb93f --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-downlevel-ole32-l1-1-0.def @@ -0,0 +1,84 @@ +LIBRARY api-ms-win-downlevel-ole32-l1-1-0 + +EXPORTS + +CLSIDFromProgID +CLSIDFromString +CoAddRefServerProcess +CoCancelCall +CoCopyProxy +CoCreateFreeThreadedMarshaler +CoCreateGuid +CoCreateInstance +CoCreateInstanceEx +CoDisableCallCancellation +CoDisconnectContext +CoDisconnectObject +CoEnableCallCancellation +CoFreeUnusedLibraries +CoFreeUnusedLibrariesEx +CoGetApartmentType +CoGetCallContext +CoGetCallerTID +CoGetCancelObject +CoGetClassObject +CoGetContextToken +CoGetCurrentLogicalThreadId +CoGetCurrentProcess +CoGetDefaultContext +CoGetInterfaceAndReleaseStream +CoGetMalloc +CoGetMarshalSizeMax +CoGetObjectContext +CoGetPSClsid +CoGetStandardMarshal +CoGetStdMarshalEx +CoGetTreatAsClass +CoImpersonateClient +CoInitializeEx +CoInitializeSecurity +CoInvalidateRemoteMachineBindings +CoIsHandlerConnected +CoLockObjectExternal +CoMarshalHresult +CoMarshalInterThreadInterfaceInStream +CoMarshalInterface +CoQueryAuthenticationServices +CoQueryClientBlanket +CoQueryProxyBlanket +CoRegisterClassObject +CoRegisterInitializeSpy +CoRegisterMessageFilter +CoRegisterPSClsid +CoRegisterSurrogate +CoReleaseMarshalData +CoReleaseServerProcess +CoResumeClassObjects +CoRevertToSelf +CoRevokeClassObject +CoRevokeInitializeSpy +CoSetCancelObject +CoSetProxyBlanket +CoSuspendClassObjects +CoSwitchCallContext +CoTaskMemAlloc +CoTaskMemFree +CoTaskMemRealloc +CoTestCancel +CoUninitialize +CoUnmarshalHresult +CoUnmarshalInterface +CoWaitForMultipleHandles +CreateErrorInfo +CreateStreamOnHGlobal +FreePropVariantArray +GetErrorInfo +GetHGlobalFromStream +IIDFromString +ProgIDFromCLSID +PropVariantClear +PropVariantCopy +SetErrorInfo +StringFromCLSID +StringFromGUID2 +StringFromIID diff --git a/lib/libc/mingw/lib-common/api-ms-win-downlevel-shell32-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-downlevel-shell32-l1-1-0.def new file mode 100644 index 0000000000..f9c1f41d72 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-downlevel-shell32-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-downlevel-shell32-l1-1-0 + +EXPORTS + +CommandLineToArgvW +GetCurrentProcessExplicitAppUserModelID +SetCurrentProcessExplicitAppUserModelID diff --git a/lib/libc/mingw/lib-common/api-ms-win-downlevel-shlwapi-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-downlevel-shlwapi-l1-1-0.def new file mode 100644 index 0000000000..f892f5053b --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-downlevel-shlwapi-l1-1-0.def @@ -0,0 +1,175 @@ +LIBRARY api-ms-win-downlevel-shlwapi-l1-1-0 + +EXPORTS + +GetAcceptLanguagesW +HashData +IsCharSpaceA +IsCharSpaceW +IsInternetESCEnabled +ParseURLW +PathAddBackslashA +PathAddBackslashW +PathAddExtensionA +PathAddExtensionW +PathAppendA +PathAppendW +PathCanonicalizeA +PathCanonicalizeW +PathCombineA +PathCombineW +PathCommonPrefixA +PathCommonPrefixW +PathCreateFromUrlAlloc +PathCreateFromUrlW +PathFileExistsA +PathFileExistsW +PathFindExtensionA +PathFindExtensionW +PathFindFileNameA +PathFindFileNameW +PathFindNextComponentA +PathFindNextComponentW +PathGetArgsA +PathGetArgsW +PathGetCharTypeA +PathGetCharTypeW +PathGetDriveNumberA +PathGetDriveNumberW +PathIsFileSpecA +PathIsFileSpecW +PathIsLFNFileSpecA +PathIsLFNFileSpecW +PathIsPrefixA +PathIsPrefixW +PathIsRelativeA +PathIsRelativeW +PathIsRootA +PathIsRootW +PathIsSameRootA +PathIsSameRootW +PathIsUNCA +PathIsUNCServerA +PathIsUNCServerShareA +PathIsUNCServerShareW +PathIsUNCServerW +PathIsUNCW +PathIsURLW +PathMatchSpecA +PathMatchSpecExA +PathMatchSpecExW +PathMatchSpecW +PathParseIconLocationA +PathParseIconLocationW +PathQuoteSpacesA +PathQuoteSpacesW +PathRelativePathToA +PathRelativePathToW +PathRemoveBackslashA +PathRemoveBackslashW +PathRemoveBlanksA +PathRemoveBlanksW +PathRemoveExtensionA +PathRemoveExtensionW +PathRemoveFileSpecA +PathRemoveFileSpecW +PathRenameExtensionA +PathRenameExtensionW +PathSearchAndQualifyA +PathSearchAndQualifyW +PathSkipRootA +PathSkipRootW +PathStripPathA +PathStripPathW +PathStripToRootA +PathStripToRootW +PathUnExpandEnvStringsA +PathUnExpandEnvStringsW +PathUnquoteSpacesA +PathUnquoteSpacesW +QISearch +SHLoadIndirectString +SHRegCloseUSKey +SHRegDeleteUSValueA +SHRegDeleteUSValueW +SHRegEnumUSKeyA +SHRegEnumUSKeyW +SHRegGetBoolUSValueA +SHRegGetBoolUSValueW +SHRegGetUSValueA +SHRegGetUSValueW +SHRegOpenUSKeyA +SHRegOpenUSKeyW +SHRegQueryUSValueA +SHRegQueryUSValueW +SHRegSetUSValueA +SHRegSetUSValueW +StrCSpnA +StrCSpnIA +StrCSpnIW +StrCSpnW +StrCatBuffA +StrCatBuffW +StrCatChainW +StrChrA +StrChrIA +StrChrIW +StrChrNIW +StrChrNW +StrChrW +StrCmpCA +StrCmpCW +StrCmpICA +StrCmpICW +StrCmpIW +StrCmpLogicalW +StrCmpNA +StrCmpNCA +StrCmpNCW +StrCmpNIA +StrCmpNICA +StrCmpNICW +StrCmpNIW +StrCmpNW +StrCmpW +StrCpyNW +StrDupA +StrDupW +StrIsIntlEqualA +StrIsIntlEqualW +StrPBrkA +StrPBrkW +StrRChrA +StrRChrIA +StrRChrIW +StrRChrW +StrRStrIA +StrRStrIW +StrSpnA +StrSpnW +StrStrA +StrStrIA +StrStrIW +StrStrNIW +StrStrNW +StrStrW +StrToInt64ExA +StrToInt64ExW +StrToIntA +StrToIntExA +StrToIntExW +StrToIntW +StrTrimA +StrTrimW +UrlApplySchemeW +UrlCanonicalizeW +UrlCombineA +UrlCombineW +UrlCreateFromPathW +UrlEscapeW +UrlFixupW +UrlGetLocationW +UrlGetPartW +UrlIsW +UrlUnescapeA +UrlUnescapeW diff --git a/lib/libc/mingw/lib-common/api-ms-win-downlevel-shlwapi-l2-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-downlevel-shlwapi-l2-1-0.def new file mode 100644 index 0000000000..0135be820c --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-downlevel-shlwapi-l2-1-0.def @@ -0,0 +1,65 @@ +LIBRARY api-ms-win-downlevel-shlwapi-l2-1-0 + +EXPORTS + +IStream_Copy +IStream_Read +IStream_ReadStr +IStream_Reset +IStream_Size +IStream_Write +IStream_WriteStr +IUnknown_AtomicRelease +IUnknown_GetSite +IUnknown_QueryService +IUnknown_Set +IUnknown_SetSite +IsOS +SHAnsiToAnsi +SHAnsiToUnicode +SHCopyKeyA +SHCopyKeyW +SHCreateMemStream +SHCreateStreamOnFileA +SHCreateStreamOnFileEx +SHCreateStreamOnFileW +SHCreateThread +SHCreateThreadRef +SHCreateThreadWithHandle +SHDeleteEmptyKeyA +SHDeleteEmptyKeyW +SHDeleteKeyA +SHDeleteKeyW +SHDeleteValueA +SHDeleteValueW +SHEnumKeyExA +SHEnumKeyExW +SHEnumValueA +SHEnumValueW +SHGetThreadRef +SHGetValueA +SHGetValueW +SHOpenRegStream2A +SHOpenRegStream2W +SHOpenRegStreamA +SHOpenRegStreamW +SHQueryInfoKeyA +SHQueryInfoKeyW +SHQueryValueExA +SHQueryValueExW +SHRegDuplicateHKey +SHRegGetIntW +SHRegGetPathA +SHRegGetPathW +SHRegGetValueA +SHRegGetValueW +SHRegSetPathA +SHRegSetPathW +SHReleaseThreadRef +SHSetThreadRef +SHSetValueA +SHSetValueW +SHStrDupA +SHStrDupW +SHUnicodeToAnsi +SHUnicodeToUnicode diff --git a/lib/libc/mingw/lib-common/api-ms-win-downlevel-user32-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-downlevel-user32-l1-1-0.def new file mode 100644 index 0000000000..494abc85cd --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-downlevel-user32-l1-1-0.def @@ -0,0 +1,28 @@ +LIBRARY api-ms-win-downlevel-user32-l1-1-0 + +EXPORTS + +CharLowerA +CharLowerBuffA +CharLowerBuffW +CharLowerW +CharNextA +CharNextExA +CharNextW +CharPrevA +CharPrevExA +CharPrevW +CharUpperA +CharUpperBuffA +CharUpperBuffW +CharUpperW +IsCharAlphaA +IsCharAlphaNumericA +IsCharAlphaNumericW +IsCharAlphaW +IsCharLowerA +IsCharLowerW +IsCharUpperA +IsCharUpperW +LoadStringA +LoadStringW diff --git a/lib/libc/mingw/lib-common/api-ms-win-downlevel-version-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-downlevel-version-l1-1-0.def new file mode 100644 index 0000000000..fb362e73df --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-downlevel-version-l1-1-0.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-downlevel-version-l1-1-0 + +EXPORTS + +GetFileVersionInfoExW +GetFileVersionInfoSizeExW +VerFindFileA +VerFindFileW +VerQueryValueA +VerQueryValueW diff --git a/lib/libc/mingw/lib-common/api-ms-win-eventing-classicprovider-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-eventing-classicprovider-l1-1-0.def new file mode 100644 index 0000000000..a29da8792d --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-eventing-classicprovider-l1-1-0.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-eventing-classicprovider-l1-1-0 + +EXPORTS + +GetTraceEnableFlags +GetTraceEnableLevel +GetTraceLoggerHandle +RegisterTraceGuidsW +TraceEvent +TraceMessage +TraceMessageVa +UnregisterTraceGuids diff --git a/lib/libc/mingw/lib-common/api-ms-win-eventing-classicprovider-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-eventing-classicprovider-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..3b44d50b26 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-eventing-classicprovider-l1-1-0_windowsapp.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-eventing-classicprovider-l1-1-0 + +EXPORTS + +GetTraceEnableFlags +GetTraceEnableLevel +GetTraceLoggerHandle +RegisterTraceGuidsW +TraceMessage +UnregisterTraceGuids diff --git a/lib/libc/mingw/lib-common/api-ms-win-eventing-consumer-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-eventing-consumer-l1-1-0.def new file mode 100644 index 0000000000..847e6be991 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-eventing-consumer-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-eventing-consumer-l1-1-0 + +EXPORTS + +CloseTrace +OpenTraceW +ProcessTrace diff --git a/lib/libc/mingw/lib-common/api-ms-win-eventing-consumer-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-eventing-consumer-l1-1-1.def new file mode 100644 index 0000000000..8b44e3f2f1 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-eventing-consumer-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-eventing-consumer-l1-1-1 + +EXPORTS + +QueryTraceProcessingHandle diff --git a/lib/libc/mingw/lib-common/api-ms-win-eventing-controller-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-eventing-controller-l1-1-0.def new file mode 100644 index 0000000000..21f5f8030b --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-eventing-controller-l1-1-0.def @@ -0,0 +1,15 @@ +LIBRARY api-ms-win-eventing-controller-l1-1-0 + +EXPORTS + +ControlTraceW +EnableTraceEx2 +EnumerateTraceGuidsEx +EventAccessControl +EventAccessQuery +EventAccessRemove +QueryAllTracesW +StartTraceW +StopTraceW +TraceQueryInformation +TraceSetInformation diff --git a/lib/libc/mingw/lib-common/api-ms-win-eventing-controller-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-eventing-controller-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..f25d5fe6f6 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-eventing-controller-l1-1-0_windowsapp.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-eventing-controller-l1-1-0 + +EXPORTS + +ControlTraceW +EnableTraceEx2 +EnumerateTraceGuidsEx +StartTraceW +StopTraceW diff --git a/lib/libc/mingw/lib-common/api-ms-win-eventing-legacy-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-eventing-legacy-l1-1-0.def new file mode 100644 index 0000000000..4136b54e24 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-eventing-legacy-l1-1-0.def @@ -0,0 +1,18 @@ +LIBRARY api-ms-win-eventing-legacy-l1-1-0 + +EXPORTS + +ControlTraceA +EnableTrace +EnableTraceEx +EnumerateTraceGuids +FlushTraceA +FlushTraceW +OpenTraceA +QueryAllTracesA +QueryTraceA +QueryTraceW +StartTraceA +StopTraceA +UpdateTraceA +UpdateTraceW diff --git a/lib/libc/mingw/lib-common/api-ms-win-eventing-legacy-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-eventing-legacy-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..4ba798155d --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-eventing-legacy-l1-1-0_windowsapp.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-eventing-legacy-l1-1-0 + +EXPORTS + +ControlTraceA +EnableTrace +EnableTraceEx +FlushTraceW +OpenTraceA +QueryTraceW +StartTraceA diff --git a/lib/libc/mingw/lib-common/api-ms-win-eventing-obsolete-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-eventing-obsolete-l1-1-0.def new file mode 100644 index 0000000000..c9c5230c0d --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-eventing-obsolete-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-eventing-obsolete-l1-1-0 + +EXPORTS + +RegisterTraceGuidsA +RemoveTraceCallback +SetTraceCallback diff --git a/lib/libc/mingw/lib-common/api-ms-win-eventing-obsolete-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-eventing-obsolete-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..cdf58edcac --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-eventing-obsolete-l1-1-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-eventing-obsolete-l1-1-0 + +EXPORTS + +RegisterTraceGuidsA diff --git a/lib/libc/mingw/lib-common/api-ms-win-eventing-provider-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-eventing-provider-l1-1-0.def new file mode 100644 index 0000000000..a54e760470 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-eventing-provider-l1-1-0.def @@ -0,0 +1,14 @@ +LIBRARY api-ms-win-eventing-provider-l1-1-0 + +EXPORTS + +EventActivityIdControl +EventEnabled +EventProviderEnabled +EventRegister +EventSetInformation +EventUnregister +EventWrite +EventWriteEx +EventWriteString +EventWriteTransfer diff --git a/lib/libc/mingw/lib-common/api-ms-win-eventing-tdh-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-eventing-tdh-l1-1-0.def new file mode 100644 index 0000000000..22c1c0a02e --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-eventing-tdh-l1-1-0.def @@ -0,0 +1,16 @@ +LIBRARY api-ms-win-eventing-tdh-l1-1-0 + +EXPORTS + +TdhEnumerateManifestProviderEvents +TdhEnumerateProviderFieldInformation +TdhEnumerateProviders +TdhFormatProperty +TdhGetEventInformation +TdhGetEventMapInformation +TdhGetManifestEventInformation +TdhGetProperty +TdhGetPropertySize +TdhLoadManifest +TdhQueryProviderFieldInformation +TdhUnloadManifest diff --git a/lib/libc/mingw/lib-common/api-ms-win-eventing-tdh-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-eventing-tdh-l1-1-1.def new file mode 100644 index 0000000000..5de7c09704 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-eventing-tdh-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-eventing-tdh-l1-1-1 + +EXPORTS + +TdhLoadManifestFromMemory +TdhUnloadManifestFromMemory diff --git a/lib/libc/mingw/lib-common/api-ms-win-eventlog-legacy-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-eventlog-legacy-l1-1-0.def new file mode 100644 index 0000000000..7b83c13159 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-eventlog-legacy-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-eventlog-legacy-l1-1-0 + +EXPORTS + +DeregisterEventSource +RegisterEventSourceW +ReportEventW diff --git a/lib/libc/mingw/lib-common/api-ms-win-gaming-deviceinformation-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-gaming-deviceinformation-l1-1-0.def new file mode 100644 index 0000000000..35f1de3263 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-gaming-deviceinformation-l1-1-0.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-gaming-deviceinformation-l1-1-0 + +EXPORTS + +GetGamingDeviceModelInformation diff --git a/lib/libc/mingw/lib-common/api-ms-win-gaming-expandedresources-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-gaming-expandedresources-l1-1-0.def new file mode 100644 index 0000000000..f5914c1908 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-gaming-expandedresources-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-gaming-expandedresources-l1-1-0 + +EXPORTS + +GetExpandedResourceExclusiveCpuCount +HasExpandedResources +ReleaseExclusiveCpuSets diff --git a/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-0.def new file mode 100644 index 0000000000..aa949963d0 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-0.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-gaming-tcui-l1-1-0 + +EXPORTS + +ProcessPendingGameUI +ShowChangeFriendRelationshipUI +ShowGameInviteUI +ShowPlayerPickerUI +ShowProfileCardUI +ShowTitleAchievementsUI +TryCancelPendingGameUI diff --git a/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-1.def new file mode 100644 index 0000000000..465e804477 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-gaming-tcui-l1-1-1 + +EXPORTS + +CheckGamingPrivilegeSilently +CheckGamingPrivilegeWithUI diff --git a/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-2.def b/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-2.def new file mode 100644 index 0000000000..1ed04cbcd3 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-2.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-gaming-tcui-l1-1-2 + +EXPORTS + +CheckGamingPrivilegeSilentlyForUser +CheckGamingPrivilegeWithUIForUser +ShowChangeFriendRelationshipUIForUser +ShowGameInviteUIForUser +ShowPlayerPickerUIForUser +ShowProfileCardUIForUser +ShowTitleAchievementsUIForUser diff --git a/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-3.def b/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-3.def new file mode 100644 index 0000000000..4fcb4732ad --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-3.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-gaming-tcui-l1-1-3 + +EXPORTS + +ShowGameInviteUIWithContext +ShowGameInviteUIWithContextForUser diff --git a/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-4.def b/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-4.def new file mode 100644 index 0000000000..c6762ba634 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-gaming-tcui-l1-1-4.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-gaming-tcui-l1-1-4 + +EXPORTS + +ShowCustomizeUserProfileUI +ShowCustomizeUserProfileUIForUser +ShowFindFriendsUI +ShowFindFriendsUIForUser +ShowGameInfoUI +ShowGameInfoUIForUser +ShowUserSettingsUI +ShowUserSettingsUIForUser diff --git a/lib/libc/mingw/lib-common/api-ms-win-mm-time-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-mm-time-l1-1-0.def new file mode 100644 index 0000000000..825b661926 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-mm-time-l1-1-0.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-mm-time-l1-1-0 + +EXPORTS + +timeBeginPeriod +timeEndPeriod +timeGetDevCaps +timeGetSystemTime +timeGetTime diff --git a/lib/libc/mingw/lib-common/api-ms-win-mm-time-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-mm-time-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..721c037ba0 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-mm-time-l1-1-0_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-mm-time-l1-1-0 + +EXPORTS + +timeBeginPeriod +timeEndPeriod +timeGetDevCaps +timeGetTime diff --git a/lib/libc/mingw/lib-common/api-ms-win-net-isolation-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-net-isolation-l1-1-0.def new file mode 100644 index 0000000000..8e6762e931 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-net-isolation-l1-1-0.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-net-isolation-l1-1-0 + +EXPORTS + +NetworkIsolationDiagnoseConnectFailureAndGetInfo +NetworkIsolationEnumAppContainers +NetworkIsolationFreeAppContainers +NetworkIsolationGetAppContainerConfig +NetworkIsolationRegisterForAppContainerChanges +NetworkIsolationSetAppContainerConfig +NetworkIsolationSetupAppContainerBinaries +NetworkIsolationUnregisterForAppContainerChanges diff --git a/lib/libc/mingw/lib-common/api-ms-win-net-isolation-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-net-isolation-l1-1-1.def new file mode 100644 index 0000000000..225eaae93a --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-net-isolation-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-net-isolation-l1-1-1 + +EXPORTS + +NetworkIsolationDiagnoseConnectFailure diff --git a/lib/libc/mingw/lib-common/api-ms-win-ntuser-sysparams-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-ntuser-sysparams-l1-1-0.def new file mode 100644 index 0000000000..a8d93982c4 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-ntuser-sysparams-l1-1-0.def @@ -0,0 +1,16 @@ +LIBRARY api-ms-win-ntuser-sysparams-l1-1-0 + +EXPORTS + +ChangeDisplaySettingsExW +DisplayConfigGetDeviceInfo +DisplayConfigSetDeviceInfo +EnumDisplayDevicesW +EnumDisplayMonitors +EnumDisplaySettingsExW +EnumDisplaySettingsW +GetDisplayConfigBufferSizes +GetMonitorInfoW +GetSystemMetrics +QueryDisplayConfig +SystemParametersInfoW diff --git a/lib/libc/mingw/lib-common/api-ms-win-ntuser-sysparams-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-ntuser-sysparams-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..b10283ba8d --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-ntuser-sysparams-l1-1-0_windowsapp.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-ntuser-sysparams-l1-1-0 + +EXPORTS + +EnumDisplayDevicesW +EnumDisplayMonitors +EnumDisplaySettingsExW +GetMonitorInfoW +GetSystemMetrics +SystemParametersInfoW diff --git a/lib/libc/mingw/lib-common/api-ms-win-oobe-notification-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-oobe-notification-l1-1-0.def new file mode 100644 index 0000000000..42c5584aa1 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-oobe-notification-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-oobe-notification-l1-1-0 + +EXPORTS + +OOBEComplete +RegisterWaitUntilOOBECompleted +UnregisterWaitUntilOOBECompleted diff --git a/lib/libc/mingw/lib-common/api-ms-win-perf-legacy-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-perf-legacy-l1-1-0.def new file mode 100644 index 0000000000..7b666748ed --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-perf-legacy-l1-1-0.def @@ -0,0 +1,13 @@ +LIBRARY api-ms-win-perf-legacy-l1-1-0 + +EXPORTS + +PerfAddCounters +PerfCloseQueryHandle +PerfDeleteCounters +PerfEnumerateCounterSet +PerfEnumerateCounterSetInstances +PerfOpenQueryHandle +PerfQueryCounterData +PerfQueryCounterInfo +PerfQueryCounterSetRegistrationInfo diff --git a/lib/libc/mingw/lib-common/api-ms-win-power-base-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-power-base-l1-1-0.def new file mode 100644 index 0000000000..501399bf30 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-power-base-l1-1-0.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-power-base-l1-1-0 + +EXPORTS + +CallNtPowerInformation +GetPwrCapabilities +PowerDeterminePlatformRoleEx +PowerRegisterSuspendResumeNotification +PowerUnregisterSuspendResumeNotification diff --git a/lib/libc/mingw/lib-common/api-ms-win-power-base-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-power-base-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..0885049eb3 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-power-base-l1-1-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-power-base-l1-1-0 + +EXPORTS + +CallNtPowerInformation diff --git a/lib/libc/mingw/lib-common/api-ms-win-power-limitsmanagement-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-power-limitsmanagement-l1-1-0.def new file mode 100644 index 0000000000..a78b308937 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-power-limitsmanagement-l1-1-0.def @@ -0,0 +1,14 @@ +LIBRARY api-ms-win-power-limitsmanagement-l1-1-0 + +EXPORTS + +PowerCloseEnvironmentalMonitor +PowerCloseLimitsMitigation +PowerCloseLimitsPolicy +PowerRegisterEnvironmentalMonitor +PowerRegisterLimitsMitigation +PowerRegisterLimitsPolicy +PowerReportLimitsEvent +PowerUpdateEnvironmentalMonitorState +PowerUpdateEnvironmentalMonitorThresholds +PowerUpdateLimitsMitigation diff --git a/lib/libc/mingw/lib-common/api-ms-win-power-setting-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-power-setting-l1-1-0.def new file mode 100644 index 0000000000..5971710b68 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-power-setting-l1-1-0.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-power-setting-l1-1-0 + +EXPORTS + +PowerGetActiveScheme +PowerReadACValue +PowerReadDCValue +PowerSetActiveScheme +PowerSettingRegisterNotification +PowerSettingUnregisterNotification +PowerWriteACValueIndex +PowerWriteDCValueIndex diff --git a/lib/libc/mingw/lib-common/api-ms-win-power-setting-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-power-setting-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..09875816f1 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-power-setting-l1-1-0_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-power-setting-l1-1-0 + +EXPORTS + +PowerGetActiveScheme +PowerReadACValue +PowerSettingRegisterNotification +PowerSettingUnregisterNotification diff --git a/lib/libc/mingw/lib-common/api-ms-win-power-setting-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-power-setting-l1-1-1.def new file mode 100644 index 0000000000..e82011e304 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-power-setting-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-power-setting-l1-1-1 + +EXPORTS + +PowerRegisterForEffectivePowerModeNotifications +PowerUnregisterFromEffectivePowerModeNotifications diff --git a/lib/libc/mingw/lib-common/api-ms-win-ro-typeresolution-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-ro-typeresolution-l1-1-0.def new file mode 100644 index 0000000000..d6d95e7a82 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-ro-typeresolution-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-ro-typeresolution-l1-1-0 + +EXPORTS + +RoGetMetaDataFile +RoParseTypeName +RoResolveNamespace diff --git a/lib/libc/mingw/lib-common/api-ms-win-ro-typeresolution-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-ro-typeresolution-l1-1-1.def new file mode 100644 index 0000000000..bcb10a2c4d --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-ro-typeresolution-l1-1-1.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-ro-typeresolution-l1-1-1 + +EXPORTS + +RoCreateNonAgilePropertySet +RoCreatePropertySetSerializer +RoIsApiContractMajorVersionPresent +RoIsApiContractPresent diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-appcontainer-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-security-appcontainer-l1-1-0.def new file mode 100644 index 0000000000..b93763ce44 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-appcontainer-l1-1-0.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-security-appcontainer-l1-1-0 + +EXPORTS + +GetAppContainerNamedObjectPath diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-base-ansi-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-security-base-ansi-l1-1-0.def new file mode 100644 index 0000000000..e61daf15fa --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-base-ansi-l1-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-security-base-ansi-l1-1-0 + +EXPORTS + +GetFileSecurityA +SetFileSecurityA diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-base-ansi-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-security-base-ansi-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..3cce783655 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-base-ansi-l1-1-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-security-base-ansi-l1-1-0 + +EXPORTS + +SetFileSecurityA diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-base-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-security-base-l1-1-0.def new file mode 100644 index 0000000000..6749536513 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-base-l1-1-0.def @@ -0,0 +1,99 @@ +LIBRARY api-ms-win-security-base-l1-1-0 + +EXPORTS + +AccessCheck +AccessCheckAndAuditAlarmW +AccessCheckByType +AccessCheckByTypeAndAuditAlarmW +AccessCheckByTypeResultList +AccessCheckByTypeResultListAndAuditAlarmByHandleW +AccessCheckByTypeResultListAndAuditAlarmW +AddAccessAllowedAce +AddAccessAllowedAceEx +AddAccessAllowedObjectAce +AddAccessDeniedAce +AddAccessDeniedAceEx +AddAccessDeniedObjectAce +AddAce +AddAuditAccessAce +AddAuditAccessAceEx +AddAuditAccessObjectAce +AddMandatoryAce +AdjustTokenGroups +AdjustTokenPrivileges +AllocateAndInitializeSid +AllocateLocallyUniqueId +AreAllAccessesGranted +AreAnyAccessesGranted +CheckTokenMembership +ConvertToAutoInheritPrivateObjectSecurity +CopySid +CreatePrivateObjectSecurity +CreatePrivateObjectSecurityEx +CreatePrivateObjectSecurityWithMultipleInheritance +CreateRestrictedToken +CreateWellKnownSid +DeleteAce +DestroyPrivateObjectSecurity +DuplicateToken +DuplicateTokenEx +EqualDomainSid +EqualPrefixSid +EqualSid +FindFirstFreeAce +FreeSid +GetAce +GetAclInformation +GetFileSecurityW +GetKernelObjectSecurity +GetLengthSid +GetPrivateObjectSecurity +GetSecurityDescriptorControl +GetSecurityDescriptorDacl +GetSecurityDescriptorGroup +GetSecurityDescriptorLength +GetSecurityDescriptorOwner +GetSecurityDescriptorRMControl +GetSecurityDescriptorSacl +GetSidIdentifierAuthority +GetSidLengthRequired +GetSidSubAuthority +GetSidSubAuthorityCount +GetTokenInformation +GetWindowsAccountDomainSid +ImpersonateAnonymousToken +ImpersonateLoggedOnUser +ImpersonateSelf +InitializeAcl +InitializeSecurityDescriptor +InitializeSid +IsTokenRestricted +IsValidAcl +IsValidSecurityDescriptor +IsValidSid +IsWellKnownSid +MakeAbsoluteSD +MakeSelfRelativeSD +MapGenericMask +ObjectCloseAuditAlarmW +ObjectDeleteAuditAlarmW +ObjectOpenAuditAlarmW +ObjectPrivilegeAuditAlarmW +PrivilegeCheck +PrivilegedServiceAuditAlarmW +QuerySecurityAccessMask +RevertToSelf +SetAclInformation +SetFileSecurityW +SetKernelObjectSecurity +SetPrivateObjectSecurity +SetPrivateObjectSecurityEx +SetSecurityAccessMask +SetSecurityDescriptorControl +SetSecurityDescriptorDacl +SetSecurityDescriptorGroup +SetSecurityDescriptorOwner +SetSecurityDescriptorRMControl +SetSecurityDescriptorSacl +SetTokenInformation diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-base-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-security-base-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..e4fd623c89 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-base-l1-1-0_windowsapp.def @@ -0,0 +1,59 @@ +LIBRARY api-ms-win-security-base-l1-1-0 + +EXPORTS + +AddAccessAllowedAce +AddAccessAllowedAceEx +AddAce +AddMandatoryAce +AdjustTokenGroups +AdjustTokenPrivileges +AllocateAndInitializeSid +AllocateLocallyUniqueId +CheckTokenMembership +CopySid +CreateWellKnownSid +DeleteAce +DuplicateToken +DuplicateTokenEx +EqualDomainSid +EqualSid +FreeSid +GetAce +GetAclInformation +GetFileSecurityW +GetKernelObjectSecurity +GetLengthSid +GetSecurityDescriptorControl +GetSecurityDescriptorDacl +GetSecurityDescriptorGroup +GetSecurityDescriptorLength +GetSecurityDescriptorOwner +GetSecurityDescriptorRMControl +GetSecurityDescriptorSacl +GetSidIdentifierAuthority +GetSidLengthRequired +GetSidSubAuthority +GetSidSubAuthorityCount +GetTokenInformation +GetWindowsAccountDomainSid +ImpersonateLoggedOnUser +InitializeAcl +InitializeSecurityDescriptor +InitializeSid +IsValidAcl +IsValidSecurityDescriptor +IsValidSid +IsWellKnownSid +MakeAbsoluteSD +MakeSelfRelativeSD +RevertToSelf +SetFileSecurityW +SetKernelObjectSecurity +SetSecurityDescriptorControl +SetSecurityDescriptorDacl +SetSecurityDescriptorGroup +SetSecurityDescriptorOwner +SetSecurityDescriptorRMControl +SetSecurityDescriptorSacl +SetTokenInformation diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-base-l1-2-0.def b/lib/libc/mingw/lib-common/api-ms-win-security-base-l1-2-0.def new file mode 100644 index 0000000000..b3556934bc --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-base-l1-2-0.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-security-base-l1-2-0 + +EXPORTS + +AddResourceAttributeAce +AddScopedPolicyIDAce +CheckTokenCapability +CheckTokenMembershipEx +GetAppContainerAce +GetCachedSigningLevel +SetCachedSigningLevel diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-base-l1-2-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-security-base-l1-2-0_windowsapp.def new file mode 100644 index 0000000000..53f8b1fa68 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-base-l1-2-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-security-base-l1-2-0 + +EXPORTS + +CheckTokenMembershipEx diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-base-l1-2-1.def b/lib/libc/mingw/lib-common/api-ms-win-security-base-l1-2-1.def new file mode 100644 index 0000000000..1ae03b20b6 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-base-l1-2-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-security-base-l1-2-1 + +EXPORTS + +CveEventWrite diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-base-l1-2-2.def b/lib/libc/mingw/lib-common/api-ms-win-security-base-l1-2-2.def new file mode 100644 index 0000000000..65ec23a0de --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-base-l1-2-2.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-security-base-l1-2-2 + +EXPORTS + +DeriveCapabilitySidsFromName diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-cpwl-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-security-cpwl-l1-1-0.def new file mode 100644 index 0000000000..14dfe5ebe6 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-cpwl-l1-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-security-cpwl-l1-1-0 + +EXPORTS + +CreateProcessWithLogonW +CreateProcessWithTokenW diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-cpwl-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-security-cpwl-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..508b4b047a --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-cpwl-l1-1-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-security-cpwl-l1-1-0 + +EXPORTS + +CreateProcessWithLogonW diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-credentials-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-security-credentials-l1-1-0.def new file mode 100644 index 0000000000..e20e52888c --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-credentials-l1-1-0.def @@ -0,0 +1,33 @@ +LIBRARY api-ms-win-security-credentials-l1-1-0 + +EXPORTS + +CredDeleteA +CredDeleteW +CredEnumerateA +CredEnumerateW +CredFindBestCredentialA +CredFindBestCredentialW +CredFree +CredGetSessionTypes +CredGetTargetInfoA +CredGetTargetInfoW +CredIsMarshaledCredentialW +CredIsProtectedA +CredIsProtectedW +CredMarshalCredentialA +CredMarshalCredentialW +CredProtectA +CredProtectW +CredReadA +CredReadDomainCredentialsA +CredReadDomainCredentialsW +CredReadW +CredUnmarshalCredentialA +CredUnmarshalCredentialW +CredUnprotectA +CredUnprotectW +CredWriteA +CredWriteDomainCredentialsA +CredWriteDomainCredentialsW +CredWriteW diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-cryptoapi-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-security-cryptoapi-l1-1-0.def new file mode 100644 index 0000000000..e9249362fb --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-cryptoapi-l1-1-0.def @@ -0,0 +1,43 @@ +LIBRARY api-ms-win-security-cryptoapi-l1-1-0 + +EXPORTS + +CryptAcquireContextA +CryptAcquireContextW +CryptContextAddRef +CryptCreateHash +CryptDecrypt +CryptDeriveKey +CryptDestroyHash +CryptDestroyKey +CryptDuplicateHash +CryptDuplicateKey +CryptEncrypt +CryptEnumProvidersA +CryptEnumProvidersW +CryptEnumProviderTypesA +CryptEnumProviderTypesW +CryptExportKey +CryptGenKey +CryptGenRandom +CryptGetDefaultProviderA +CryptGetDefaultProviderW +CryptGetHashParam +CryptGetKeyParam +CryptGetProvParam +CryptGetUserKey +CryptHashData +CryptHashSessionKey +CryptImportKey +CryptReleaseContext +CryptSetHashParam +CryptSetKeyParam +CryptSetProviderA +CryptSetProviderExA +CryptSetProviderExW +CryptSetProviderW +CryptSetProvParam +CryptSignHashA +CryptSignHashW +CryptVerifySignatureA +CryptVerifySignatureW diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-cryptoapi-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-security-cryptoapi-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..ebeeda2c54 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-cryptoapi-l1-1-0_windowsapp.def @@ -0,0 +1,35 @@ +LIBRARY api-ms-win-security-cryptoapi-l1-1-0 + +EXPORTS + +CryptAcquireContextA +CryptAcquireContextW +CryptCreateHash +CryptDecrypt +CryptDeriveKey +CryptDestroyHash +CryptDestroyKey +CryptDuplicateKey +CryptEncrypt +CryptEnumProvidersA +CryptEnumProvidersW +CryptExportKey +CryptGenKey +CryptGenRandom +CryptGetDefaultProviderA +CryptGetDefaultProviderW +CryptGetHashParam +CryptGetKeyParam +CryptGetProvParam +CryptGetUserKey +CryptHashData +CryptImportKey +CryptReleaseContext +CryptSetHashParam +CryptSetKeyParam +CryptSetProviderW +CryptSetProvParam +CryptSignHashA +CryptSignHashW +CryptVerifySignatureA +CryptVerifySignatureW diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-isolatedcontainer-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-security-isolatedcontainer-l1-1-0.def new file mode 100644 index 0000000000..f9ae366998 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-isolatedcontainer-l1-1-0.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-security-isolatedcontainer-l1-1-0 + +EXPORTS + +IsProcessInIsolatedContainer diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-isolatedcontainer-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-security-isolatedcontainer-l1-1-1.def new file mode 100644 index 0000000000..c54c65d08c --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-isolatedcontainer-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-security-isolatedcontainer-l1-1-1 + +EXPORTS + +IsProcessInWDAGContainer diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-lsalookup-ansi-l2-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-security-lsalookup-ansi-l2-1-0.def new file mode 100644 index 0000000000..a9f218a42c --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-lsalookup-ansi-l2-1-0.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-security-lsalookup-ansi-l2-1-0 + +EXPORTS + +LookupAccountNameA +LookupAccountSidA +LookupPrivilegeDisplayNameA +LookupPrivilegeNameA +LookupPrivilegeValueA diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-lsalookup-l2-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-security-lsalookup-l2-1-0.def new file mode 100644 index 0000000000..1e19a1946a --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-lsalookup-l2-1-0.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-security-lsalookup-l2-1-0 + +EXPORTS + +LookupAccountNameW +LookupAccountSidW +LookupPrivilegeDisplayNameW +LookupPrivilegeNameW +LookupPrivilegeValueW +LsaEnumerateTrustedDomains diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-lsalookup-l2-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-security-lsalookup-l2-1-0_windowsapp.def new file mode 100644 index 0000000000..b4f67c882a --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-lsalookup-l2-1-0_windowsapp.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-security-lsalookup-l2-1-0 + +EXPORTS + +LookupAccountNameW +LookupAccountSidW +LookupPrivilegeDisplayNameW +LookupPrivilegeNameW +LookupPrivilegeValueW diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-lsalookup-l2-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-security-lsalookup-l2-1-1.def new file mode 100644 index 0000000000..0a5a79ca9e --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-lsalookup-l2-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-security-lsalookup-l2-1-1 + +EXPORTS + +LsaManageSidNameMapping diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-lsapolicy-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-security-lsapolicy-l1-1-0.def new file mode 100644 index 0000000000..f7d83c0ef1 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-lsapolicy-l1-1-0.def @@ -0,0 +1,17 @@ +LIBRARY api-ms-win-security-lsapolicy-l1-1-0 + +EXPORTS + +LsaAddAccountRights +LsaClose +LsaEnumerateAccountRights +LsaEnumerateAccountsWithUserRight +LsaFreeMemory +LsaLookupNames2 +LsaLookupSids +LsaLookupSids2 +LsaOpenPolicy +LsaQueryInformationPolicy +LsaRemoveAccountRights +LsaRetrievePrivateData +LsaSetInformationPolicy diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-lsapolicy-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-security-lsapolicy-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..4ce53a0560 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-lsapolicy-l1-1-0_windowsapp.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-security-lsapolicy-l1-1-0 + +EXPORTS + +LsaClose +LsaFreeMemory +LsaLookupNames2 +LsaLookupSids +LsaOpenPolicy diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-provider-ansi-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-security-provider-ansi-l1-1-0.def new file mode 100644 index 0000000000..1ca75cce24 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-provider-ansi-l1-1-0.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-security-provider-ansi-l1-1-0 + +EXPORTS + +GetExplicitEntriesFromAclA +GetNamedSecurityInfoA +SetEntriesInAclA +SetNamedSecurityInfoA diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-provider-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-security-provider-l1-1-0.def new file mode 100644 index 0000000000..ed1285545e --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-provider-l1-1-0.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-security-provider-l1-1-0 + +EXPORTS + +GetExplicitEntriesFromAclW +GetNamedSecurityInfoW +GetSecurityInfo +SetEntriesInAclW +SetNamedSecurityInfoW +SetSecurityInfo diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-sddl-ansi-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-security-sddl-ansi-l1-1-0.def new file mode 100644 index 0000000000..7c042f5405 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-sddl-ansi-l1-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-security-sddl-ansi-l1-1-0 + +EXPORTS + +ConvertSidToStringSidA +ConvertStringSidToSidA diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-sddl-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-security-sddl-l1-1-0.def new file mode 100644 index 0000000000..ff71f3f8e0 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-sddl-l1-1-0.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-security-sddl-l1-1-0 + +EXPORTS + +ConvertSecurityDescriptorToStringSecurityDescriptorW +ConvertSidToStringSidW +ConvertStringSecurityDescriptorToSecurityDescriptorW +ConvertStringSidToSidW diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-systemfunctions-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-security-systemfunctions-l1-1-0.def new file mode 100644 index 0000000000..cd1588ad70 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-systemfunctions-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-security-systemfunctions-l1-1-0 + +EXPORTS + +SystemFunction036 +SystemFunction040 +SystemFunction041 diff --git a/lib/libc/mingw/lib-common/api-ms-win-security-systemfunctions-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-security-systemfunctions-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..e10a70d874 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-security-systemfunctions-l1-1-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-security-systemfunctions-l1-1-0 + +EXPORTS + +SystemFunction036 diff --git a/lib/libc/mingw/lib-common/api-ms-win-service-core-ansi-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-service-core-ansi-l1-1-0.def new file mode 100644 index 0000000000..ec245fe311 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-service-core-ansi-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-service-core-ansi-l1-1-0 + +EXPORTS + +EnumServicesStatusExA +GetServiceDisplayNameA +GetServiceKeyNameA diff --git a/lib/libc/mingw/lib-common/api-ms-win-service-core-ansi-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-service-core-ansi-l1-1-1.def new file mode 100644 index 0000000000..a894dfd169 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-service-core-ansi-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-service-core-ansi-l1-1-1 + +EXPORTS + +EnumDependentServicesA diff --git a/lib/libc/mingw/lib-common/api-ms-win-service-core-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-service-core-l1-1-0.def new file mode 100644 index 0000000000..1cefff147d --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-service-core-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-service-core-l1-1-0 + +EXPORTS + +RegisterServiceCtrlHandlerExW +SetServiceStatus +StartServiceCtrlDispatcherW diff --git a/lib/libc/mingw/lib-common/api-ms-win-service-core-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-service-core-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..f6098ac558 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-service-core-l1-1-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-service-core-l1-1-0 + +EXPORTS + +RegisterServiceCtrlHandlerExW diff --git a/lib/libc/mingw/lib-common/api-ms-win-service-core-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-service-core-l1-1-1.def new file mode 100644 index 0000000000..b0576c9f54 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-service-core-l1-1-1.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-service-core-l1-1-1 + +EXPORTS + +EnumDependentServicesW +EnumServicesStatusExW +QueryServiceDynamicInformation diff --git a/lib/libc/mingw/lib-common/api-ms-win-service-core-l1-1-2.def b/lib/libc/mingw/lib-common/api-ms-win-service-core-l1-1-2.def new file mode 100644 index 0000000000..372096b392 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-service-core-l1-1-2.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-service-core-l1-1-2 + +EXPORTS + +GetServiceDisplayNameW +GetServiceKeyNameW diff --git a/lib/libc/mingw/lib-common/api-ms-win-service-core-l1-1-3.def b/lib/libc/mingw/lib-common/api-ms-win-service-core-l1-1-3.def new file mode 100644 index 0000000000..071cb49c86 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-service-core-l1-1-3.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-service-core-l1-1-3 + +EXPORTS + +GetServiceRegistryStateKey diff --git a/lib/libc/mingw/lib-common/api-ms-win-service-core-l1-1-4.def b/lib/libc/mingw/lib-common/api-ms-win-service-core-l1-1-4.def new file mode 100644 index 0000000000..a8d4321e41 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-service-core-l1-1-4.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-service-core-l1-1-4 + +EXPORTS + +GetServiceDirectory diff --git a/lib/libc/mingw/lib-common/api-ms-win-service-management-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-service-management-l1-1-0.def new file mode 100644 index 0000000000..3cc1821a6a --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-service-management-l1-1-0.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-service-management-l1-1-0 + +EXPORTS + +CloseServiceHandle +ControlServiceExW +CreateServiceW +DeleteService +OpenSCManagerW +OpenServiceW +StartServiceW diff --git a/lib/libc/mingw/lib-common/api-ms-win-service-management-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-service-management-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..6b3400bdd1 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-service-management-l1-1-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-service-management-l1-1-0 + +EXPORTS + +OpenSCManagerW diff --git a/lib/libc/mingw/lib-common/api-ms-win-service-management-l2-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-service-management-l2-1-0.def new file mode 100644 index 0000000000..57c5113fa4 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-service-management-l2-1-0.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-service-management-l2-1-0 + +EXPORTS + +ChangeServiceConfig2W +ChangeServiceConfigW +NotifyServiceStatusChangeW +QueryServiceConfig2W +QueryServiceConfigW +QueryServiceObjectSecurity +QueryServiceStatusEx +SetServiceObjectSecurity diff --git a/lib/libc/mingw/lib-common/api-ms-win-service-winsvc-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-service-winsvc-l1-1-0.def new file mode 100644 index 0000000000..36afb129ca --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-service-winsvc-l1-1-0.def @@ -0,0 +1,20 @@ +LIBRARY api-ms-win-service-winsvc-l1-1-0 + +EXPORTS + +ChangeServiceConfig2A +ChangeServiceConfigA +ControlService +ControlServiceExA +CreateServiceA +NotifyServiceStatusChangeA +OpenSCManagerA +OpenServiceA +QueryServiceConfig2A +QueryServiceConfigA +QueryServiceStatus +RegisterServiceCtrlHandlerA +RegisterServiceCtrlHandlerExA +RegisterServiceCtrlHandlerW +StartServiceA +StartServiceCtrlDispatcherA diff --git a/lib/libc/mingw/lib-common/api-ms-win-service-winsvc-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-service-winsvc-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..35809ff2fb --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-service-winsvc-l1-1-0_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-service-winsvc-l1-1-0 + +EXPORTS + +OpenSCManagerA +RegisterServiceCtrlHandlerA +RegisterServiceCtrlHandlerExA +RegisterServiceCtrlHandlerW diff --git a/lib/libc/mingw/lib-common/api-ms-win-shcore-obsolete-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-shcore-obsolete-l1-1-0.def new file mode 100644 index 0000000000..155b211d8b --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-shcore-obsolete-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-shcore-obsolete-l1-1-0 + +EXPORTS + +CommandLineToArgvW +SHStrDupA +SHStrDupW diff --git a/lib/libc/mingw/lib-common/api-ms-win-shcore-obsolete-l1-1-0_windowsapp.def b/lib/libc/mingw/lib-common/api-ms-win-shcore-obsolete-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..67c40c9538 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-shcore-obsolete-l1-1-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-shcore-obsolete-l1-1-0 + +EXPORTS + +CommandLineToArgvW diff --git a/lib/libc/mingw/lib-common/api-ms-win-shcore-path-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-shcore-path-l1-1-0.def new file mode 100644 index 0000000000..80bfb94f4c --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-shcore-path-l1-1-0.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-shcore-path-l1-1-0 + +EXPORTS + +PathBuildRootA +PathBuildRootW +PathIsNetworkPathA +PathIsNetworkPathW diff --git a/lib/libc/mingw/lib-common/api-ms-win-shcore-registry-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-shcore-registry-l1-1-0.def new file mode 100644 index 0000000000..70bfde759b --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-shcore-registry-l1-1-0.def @@ -0,0 +1,32 @@ +LIBRARY api-ms-win-shcore-registry-l1-1-0 + +EXPORTS + +SHCopyKeyA +SHCopyKeyW +SHDeleteEmptyKeyA +SHDeleteEmptyKeyW +SHDeleteKeyA +SHDeleteKeyW +SHDeleteValueA +SHDeleteValueW +SHEnumKeyExA +SHEnumKeyExW +SHEnumValueA +SHEnumValueW +SHGetValueA +SHGetValueW +SHQueryInfoKeyA +SHQueryInfoKeyW +SHQueryValueExA +SHQueryValueExW +SHRegDuplicateHKey +SHRegGetIntW +SHRegGetPathA +SHRegGetPathW +SHRegGetValueA +SHRegGetValueW +SHRegSetPathA +SHRegSetPathW +SHSetValueA +SHSetValueW diff --git a/lib/libc/mingw/lib-common/api-ms-win-shcore-registry-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-shcore-registry-l1-1-1.def new file mode 100644 index 0000000000..9db533f7d5 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-shcore-registry-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-shcore-registry-l1-1-1 + +EXPORTS + +SHRegGetValueFromHKCUHKLM diff --git a/lib/libc/mingw/lib-common/api-ms-win-shcore-scaling-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-shcore-scaling-l1-1-0.def new file mode 100644 index 0000000000..aafcac2734 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-shcore-scaling-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-shcore-scaling-l1-1-0 + +EXPORTS + +GetScaleFactorForDevice +RegisterScaleChangeNotifications +RevokeScaleChangeNotifications diff --git a/lib/libc/mingw/lib-common/api-ms-win-shcore-scaling-l1-1-1.def b/lib/libc/mingw/lib-common/api-ms-win-shcore-scaling-l1-1-1.def new file mode 100644 index 0000000000..03f6c1980f --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-shcore-scaling-l1-1-1.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-shcore-scaling-l1-1-1 + +EXPORTS + +GetDpiForMonitor +GetProcessDpiAwareness +GetScaleFactorForMonitor +RegisterScaleChangeEvent +SetProcessDpiAwareness +UnregisterScaleChangeEvent diff --git a/lib/libc/mingw/lib-common/api-ms-win-shcore-scaling-l1-1-2.def b/lib/libc/mingw/lib-common/api-ms-win-shcore-scaling-l1-1-2.def new file mode 100644 index 0000000000..29b20d2dca --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-shcore-scaling-l1-1-2.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-shcore-scaling-l1-1-2 + +EXPORTS + +GetDpiForShellUIComponent diff --git a/lib/libc/mingw/lib-common/api-ms-win-shcore-stream-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-shcore-stream-l1-1-0.def new file mode 100644 index 0000000000..2d8534d9e4 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-shcore-stream-l1-1-0.def @@ -0,0 +1,19 @@ +LIBRARY api-ms-win-shcore-stream-l1-1-0 + +EXPORTS + +IStream_Copy +IStream_Read +IStream_ReadStr +IStream_Reset +IStream_Size +IStream_Write +IStream_WriteStr +SHCreateMemStream +SHCreateStreamOnFileA +SHCreateStreamOnFileEx +SHCreateStreamOnFileW +SHOpenRegStream2A +SHOpenRegStream2W +SHOpenRegStreamA +SHOpenRegStreamW diff --git a/lib/libc/mingw/lib-common/api-ms-win-shcore-stream-winrt-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-shcore-stream-winrt-l1-1-0.def new file mode 100644 index 0000000000..c0ed75874b --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-shcore-stream-winrt-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-shcore-stream-winrt-l1-1-0 + +EXPORTS + +CreateRandomAccessStreamOnFile +CreateRandomAccessStreamOverStream +CreateStreamOverRandomAccessStream diff --git a/lib/libc/mingw/lib-common/api-ms-win-shcore-sysinfo-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-shcore-sysinfo-l1-1-0.def new file mode 100644 index 0000000000..f5654b5c4e --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-shcore-sysinfo-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-shcore-sysinfo-l1-1-0 + +EXPORTS + +GetCurrentProcessExplicitAppUserModelID +IsOS +SetCurrentProcessExplicitAppUserModelID diff --git a/lib/libc/mingw/lib-common/api-ms-win-shcore-unicodeansi-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-shcore-unicodeansi-l1-1-0.def new file mode 100644 index 0000000000..90f5ec35a3 --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-shcore-unicodeansi-l1-1-0.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-shcore-unicodeansi-l1-1-0 + +EXPORTS + +SHAnsiToAnsi +SHAnsiToUnicode +SHUnicodeToAnsi +SHUnicodeToUnicode diff --git a/lib/libc/mingw/lib-common/api-ms-win-shell-shdirectory-l1-1-0.def b/lib/libc/mingw/lib-common/api-ms-win-shell-shdirectory-l1-1-0.def new file mode 100644 index 0000000000..862bba88ec --- /dev/null +++ b/lib/libc/mingw/lib-common/api-ms-win-shell-shdirectory-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-shell-shdirectory-l1-1-0 + +EXPORTS + +SHCreateDirectory +SHCreateDirectoryExA +SHCreateDirectoryExW diff --git a/lib/libc/mingw/lib-common/htui.def b/lib/libc/mingw/lib-common/htui.def index a778a275bd..24c3f057dd 100644 --- a/lib/libc/mingw/lib-common/htui.def +++ b/lib/libc/mingw/lib-common/htui.def @@ -6,7 +6,6 @@ ; LIBRARY htUI.dll EXPORTS -DllMain HTUI_ColorAdjustment HTUI_ColorAdjustmentA HTUI_ColorAdjustmentW diff --git a/lib/libc/mingw/lib-common/keymgr.def b/lib/libc/mingw/lib-common/keymgr.def index db865ef3e2..039d846003 100644 --- a/lib/libc/mingw/lib-common/keymgr.def +++ b/lib/libc/mingw/lib-common/keymgr.def @@ -7,7 +7,6 @@ LIBRARY KEYMGR.dll EXPORTS CPlApplet -DllMain KRShowKeyMgr PRShowRestoreFromMsginaW PRShowRestoreWizardExW diff --git a/lib/libc/mingw/lib-common/photowiz.def b/lib/libc/mingw/lib-common/photowiz.def index 057a165138..3298eea87a 100644 --- a/lib/libc/mingw/lib-common/photowiz.def +++ b/lib/libc/mingw/lib-common/photowiz.def @@ -10,6 +10,5 @@ UsePPWForPrintTo DllCanUnloadNow DllGetClassObject DllInstall -DllMain DllRegisterServer DllUnregisterServer diff --git a/lib/libc/mingw/lib-common/prntvpt.def b/lib/libc/mingw/lib-common/prntvpt.def index 5a2d512897..efaa3a0100 100644 --- a/lib/libc/mingw/lib-common/prntvpt.def +++ b/lib/libc/mingw/lib-common/prntvpt.def @@ -18,7 +18,6 @@ ConvertPrintTicketToDevModeThunk ConvertPrintTicketToDevModeThunk2 DllCanUnloadNow DllGetClassObject -DllMain DllRegisterServer DllUnregisterServer GetDeviceDefaultPrintTicketThunk diff --git a/lib/libc/mingw/lib-common/shlwapi.def b/lib/libc/mingw/lib-common/shlwapi.def index 850fa7f920..a298a912ff 100644 --- a/lib/libc/mingw/lib-common/shlwapi.def +++ b/lib/libc/mingw/lib-common/shlwapi.def @@ -5,103 +5,84 @@ ; LIBRARY "SHLWAPI.dll" EXPORTS -ParseURLA -ParseURLW -SHAllocShared -SHLockShared -SHUnlockShared -SHFreeShared -SHCreateMemStream -GetAcceptLanguagesA -GetAcceptLanguagesW -SHCreateThread -IsCharSpaceW -StrCmpNCA -StrCmpNCW -StrCmpNICA -StrCmpNICW -StrCmpCA -StrCmpCW -StrCmpICA -StrCmpICW -IUnknown_QueryStatus -IUnknown_Exec -ConnectToConnectionPoint -IUnknown_AtomicRelease -IUnknown_GetWindow -IUnknown_SetSite -IUnknown_QueryService -IStream_Read -SHMessageBoxCheckA -SHMessageBoxCheckW -IUnknown_Set -SHStripMneumonicA -SHIsChildOrSelf -IStream_Write -IStream_Reset -IStream_Size -SHAnsiToUnicode -SHUnicodeToAnsi -SHUnicodeToAnsiCP -QISearch -SHStripMneumonicW -SHPinDllOfCLSID -IUnknown_GetSite -GUIDFromStringW -WhichPlatform -SHCreateWorkerWindowW -SHRegGetIntW -SHPackDispParamsV -SHAnsiToAnsi -SHUnicodeToUnicode -SHFormatDateTimeA -SHFormatDateTimeW -MLLoadLibraryA -MLLoadLibraryW -ShellMessageBoxW -MLFreeLibrary -SHSendMessageBroadcastA -SHSendMessageBroadcastW -IsOS -PathFileExistsAndAttributesW -UrlFixupW -SHRunIndirectRegClientCommand -SHLoadIndirectString -IStream_ReadPidl -IStream_WritePidl -SHGetViewStatePropertyBag -IsInternetESCEnabled -SHPropertyBag_ReadStrAlloc -IStream_Copy -DelayLoadFailureHook -SHPropertyBag_WriteBSTR +AssocCopyVerbs AssocCreate AssocGetPerceivedType AssocIsDangerous +AssocMakeApplicationByKeyW +AssocMakeProgid AssocQueryKeyA AssocQueryKeyW AssocQueryStringA AssocQueryStringByKeyA AssocQueryStringByKeyW AssocQueryStringW +CalculateAspectRatio +CharUpperNoDBCSW ChrCmpIA ChrCmpIW ColorAdjustLuma ColorHLSToRGB -IStream_ReadStr -IStream_WriteStr ColorRGBToHLS +ConnectToConnectionPoint +DelayLoadFailureHook DllGetVersion +DoesStringRoundTripW +DupWideToAnsi +FDSA_DeleteItem +FDSA_Initialize +FDSA_InsertItem +FixSlashesAndColonW +GetAcceptLanguagesA +GetAcceptLanguagesW GetMenuPosFromID +GUIDFromStringW HashData -SHCreateThreadWithHandle IntlStrEqWorkerA IntlStrEqWorkerW IsCharSpaceA +IsCharSpaceW +IShellFolder_GetDisplayNameOf +IShellFolder_ParseDisplayName +IsInternetESCEnabled +IsOS +IStream_Copy +IStream_Read +IStream_ReadPidl +IStream_ReadStr +IStream_Reset +IStream_Size +IStream_Write +IStream_WritePidl +IStream_WriteStr +IUnknown_AtomicRelease +IUnknown_CPContainerInvokeIndirect +IUnknown_EnableModeless +IUnknown_Exec +IUnknown_GetSite +IUnknown_GetWindow +IUnknown_HasFocusIO +IUnknown_OnFocusChangeIS +IUnknown_QueryService +IUnknown_QueryServiceExec +IUnknown_QueryServiceForWebBrowserApp +IUnknown_QueryServicePropertyBag +IUnknown_QueryStatus +IUnknown_Set +IUnknown_SetOwner +IUnknown_SetSite +IUnknown_TranslateAcceleratorIO +IUnknown_UIActivateIO +MayExecForward +MayQSForward +MIME_GetExtensionW +MLFreeLibrary +MLLoadLibraryA +MLLoadLibraryW +ParseURLA +ParseURLW PathAddBackslashA PathAddBackslashW -SHRegGetValueFromHKCUHKLM -SHRegGetBoolValueFromHKCUHKLM PathAddExtensionA PathAddExtensionW PathAppendA @@ -122,6 +103,10 @@ PathCreateFromUrlA PathCreateFromUrlAlloc PathCreateFromUrlW PathFileExistsA +PathFileExistsAndAttributesA +PathFileExistsAndAttributesW +PathFileExistsDefExtAndAttributesW +PathFileExistsDefExtW PathFileExistsW PathFindExtensionA PathFindExtensionW @@ -130,6 +115,7 @@ PathFindFileNameW PathFindNextComponentA PathFindNextComponentW PathFindOnPathA +PathFindOnPathExW PathFindOnPathW PathFindSuffixArrayA PathFindSuffixArrayW @@ -205,23 +191,38 @@ PathStripPathA PathStripPathW PathStripToRootA PathStripToRootW -PathUnExpandEnvStringsA -PathUnExpandEnvStringsW PathUndecorateA PathUndecorateW +PathUnExpandEnvStringsA +PathUnExpandEnvStringsForUserW +PathUnExpandEnvStringsW PathUnmakeSystemFolderA PathUnmakeSystemFolderW PathUnquoteSpacesA PathUnquoteSpacesW +QISearch +QuerySourceCreateFromKey +SHAddDataBlock +SHAllocShared +SHAnsiToAnsi +SHAnsiToUnicode SHAutoComplete +SHClearViewStatePropertyBag SHCopyKeyA SHCopyKeyW +SHCreateMemStream +SHCreatePropertyBagOnProfileSection +SHCreatePropertyBagOnRegKey +SHCreatePropertyStoreOnXML SHCreateShellPalette SHCreateStreamOnFileA SHCreateStreamOnFileEx SHCreateStreamOnFileW SHCreateStreamWrapper +SHCreateThread SHCreateThreadRef +SHCreateThreadWithHandle +SHCreateWorkerWindowW SHDeleteEmptyKeyA SHDeleteEmptyKeyW SHDeleteKeyA @@ -230,23 +231,63 @@ SHDeleteOrphanKeyA SHDeleteOrphanKeyW SHDeleteValueA SHDeleteValueW +ShellMessageBoxA +ShellMessageBoxW SHEnumKeyExA SHEnumKeyExW SHEnumValueA SHEnumValueW +SHExpandEnvironmentStringsAlloc +SHExpandEnvironmentStringsForUserW +SHFillRectClr +SHFindDataBlock +SHFormatDateTimeA +SHFormatDateTimeW +SHForwardContextMenuMsg +SHFreeDataBlockList +SHFreeShared +SHGetCurColorRes +SHGetFileDescriptionW +SHGetIniStringW SHGetInverseCMAP +SHGetMenuFromID +SHGetPerScreenResName +SHGetRestriction +SHGetShellKeyEx SHGetThreadRef SHGetValueA SHGetValueW +SHGetViewStatePropertyBag +SHInvokeCommand +SHInvokeCommandOnContextMenu +SHInvokeCommandOnContextMenuEx +SHInvokeCommandWithFlagsAndSite +SHInvokeDefaultCommand +SHIsChildOrSelf +SHIsExpandableFolder SHIsLowMemoryMachine +SHLoadFromPropertyBag +SHLoadIndirectString +SHLoadMenuPopup +SHLockShared +SHMenuIndexFromID +SHMessageBoxCheckA +SHMessageBoxCheckExW +SHMessageBoxCheckW SHOpenRegStream2A SHOpenRegStream2W SHOpenRegStreamA SHOpenRegStreamW +SHPackDispParamsV +SHPinDllOfCLSID +SHPropertyBag_ReadStrAlloc +SHPropertyBag_WriteBSTR SHQueryInfoKeyA SHQueryInfoKeyW SHQueryValueExA SHQueryValueExW +SHQueueUserWorkItem +SHReadDataBlockList SHRegCloseUSKey SHRegCreateUSKeyA SHRegCreateUSKeyW @@ -261,12 +302,17 @@ SHRegEnumUSValueA SHRegEnumUSValueW SHRegGetBoolUSValueA SHRegGetBoolUSValueW +SHRegGetBoolValueFromHKCUHKLM +SHRegGetIntW SHRegGetPathA SHRegGetPathW SHRegGetUSValueA SHRegGetUSValueW SHRegGetValueA +SHRegGetValueFromHKCUHKLM SHRegGetValueW +SHRegisterClassW +SHRegisterValidateTemplate SHRegOpenUSKeyA SHRegOpenUSKeyW SHRegQueryInfoUSKeyA @@ -279,19 +325,36 @@ SHRegSetUSValueA SHRegSetUSValueW SHRegWriteUSValueA SHRegWriteUSValueW -SHRegisterValidateTemplate SHReleaseThreadRef +SHRemoveDataBlock +SHRemoveDefaultDialogFont +SHRestrictionLookup +SHRunIndirectRegClientCommand +SHSendMessageBroadcastA +SHSendMessageBroadcastW +SHSetDefaultDialogFont +SHSetIniStringW SHSetThreadRef SHSetValueA SHSetValueW +SHSetWindowBits +SHSimulateDrop SHSkipJunction SHStrDupA SHStrDupW -ShellMessageBoxA -StrCSpnA -StrCSpnIA -StrCSpnIW -StrCSpnW +SHStringFromGUIDW +SHStripMneumonicA +SHStripMneumonicW +SHUnicodeToAnsi +SHUnicodeToAnsiCP +SHUnicodeToUnicode +SHUnlockShared +SHWeakQueryInterface +SHWeakReleaseInterface +SHWriteDataBlockList +SKAllocValueW +SKGetValueW +SKSetValueW StrCatBuffA StrCatBuffW StrCatChainW @@ -302,15 +365,27 @@ StrChrIW StrChrNIW StrChrNW StrChrW +StrCmpCA +StrCmpCW +StrCmpICA +StrCmpICW StrCmpIW StrCmpLogicalW StrCmpNA +StrCmpNCA +StrCmpNCW StrCmpNIA +StrCmpNICA +StrCmpNICW StrCmpNIW StrCmpNW StrCmpW StrCpyNW StrCpyW +StrCSpnA +StrCSpnIA +StrCSpnIW +StrCSpnW StrDupA StrDupW StrFormatByteSize64A @@ -331,13 +406,13 @@ StrRChrA StrRChrIA StrRChrIW StrRChrW -StrRStrIA -StrRStrIW StrRetToBSTR StrRetToBufA StrRetToBufW StrRetToStrA StrRetToStrW +StrRStrIA +StrRStrIW StrSpnA StrSpnW StrStrA @@ -366,6 +441,7 @@ UrlCreateFromPathA UrlCreateFromPathW UrlEscapeA UrlEscapeW +UrlFixupW UrlGetLocationA UrlGetLocationW UrlGetPartA @@ -380,7 +456,9 @@ UrlIsOpaqueW UrlIsW UrlUnescapeA UrlUnescapeW +WhichPlatform wnsprintfA wnsprintfW wvnsprintfA wvnsprintfW +ZoneCheckUrlExW diff --git a/lib/libc/mingw/lib-common/wsmsvc.def b/lib/libc/mingw/lib-common/wsmsvc.def new file mode 100644 index 0000000000..ced290c77d --- /dev/null +++ b/lib/libc/mingw/lib-common/wsmsvc.def @@ -0,0 +1,3675 @@ +LIBRARY "WsmSvc.DLL" +EXPORTS +??0?$AutoCleanup@V?$AutoDelete@D@@PEAD@@QEAA@PEAD@Z +??0?$AutoCleanup@V?$AutoDelete@G@@PEAG@@QEAA@PEAG@Z +??0?$AutoCleanup@V?$AutoDelete@UIPRange@CWSManIPFilter@@@@PEAUIPRange@CWSManIPFilter@@@@QEAA@PEAUIPRange@CWSManIPFilter@@@Z +??0?$AutoCleanup@V?$AutoDelete@U_SID@@@@PEAU_SID@@@@QEAA@PEAU_SID@@@Z +??0?$AutoCleanup@V?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@PEAU_WSMAN_STREAM_ID_SET@@@@QEAA@PEAU_WSMAN_STREAM_ID_SET@@@Z +??0?$AutoCleanup@V?$AutoDelete@V?$Handle@VISubscription@@@@@@PEAV?$Handle@VISubscription@@@@@@QEAA@PEAV?$Handle@VISubscription@@@@@Z +??0?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@PEAV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEAA@PEAV?$SafeMap_Iterator@VStringKeyCI@@K@@@Z +??0?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@PEAV?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@QEAA@PEAV?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@Z +??0?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PEAVCCertMapping@@@@@@PEAV?$SafeSet@PEAVCCertMapping@@@@@@QEAA@PEAV?$SafeSet@PEAVCCertMapping@@@@@Z +??0?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PEAVCShellUriSettings@@@@@@PEAV?$SafeSet@PEAVCShellUriSettings@@@@@@QEAA@PEAV?$SafeSet@PEAVCShellUriSettings@@@@@Z +??0?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@PEAV?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@QEAA@PEAV?$SafeSet_Iterator@PEAVCListenerOperation@@@@@Z +??0?$AutoCleanup@V?$AutoDelete@V?$SimpleStack@VCListenerOperation@@@@@@PEAV?$SimpleStack@VCListenerOperation@@@@@@QEAA@PEAV?$SimpleStack@VCListenerOperation@@@@@Z +??0?$AutoCleanup@V?$AutoDelete@V?$SimpleStack@VShellHostEntry@@@@@@PEAV?$SimpleStack@VShellHostEntry@@@@@@QEAA@PEAV?$SimpleStack@VShellHostEntry@@@@@Z +??0?$AutoCleanup@V?$AutoDelete@V?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@@PEAV?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@@QEAA@PEAV?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@Z +??0?$AutoCleanup@V?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@PEAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@QEAA@PEAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@Z +??0?$AutoCleanup@V?$AutoDelete@V?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@@@PEAV?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@@@QEAA@PEAV?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@@Z +??0?$AutoCleanup@V?$AutoDelete@V?$vector@PEAVIServiceConfigObserver@@V?$transport_allocator@PEAVIServiceConfigObserver@@@@@std@@@@PEAV?$vector@PEAVIServiceConfigObserver@@V?$transport_allocator@PEAVIServiceConfigObserver@@@@@std@@@@QEAA@PEAV?$vector@PEAVIServiceConfigObserver@@V?$transport_allocator@PEAVIServiceConfigObserver@@@@@std@@@Z +??0?$AutoCleanup@V?$AutoDelete@VAdminSid@CSecurity@@@@PEAVAdminSid@CSecurity@@@@QEAA@PEAVAdminSid@CSecurity@@@Z +??0?$AutoCleanup@V?$AutoDelete@VBlockedRecord@@@@PEAVBlockedRecord@@@@QEAA@PEAVBlockedRecord@@@Z +??0?$AutoCleanup@V?$AutoDelete@VCBaseConfigCache@@@@PEAVCBaseConfigCache@@@@QEAA@PEAVCBaseConfigCache@@@Z +??0?$AutoCleanup@V?$AutoDelete@VCCertMapping@@@@PEAVCCertMapping@@@@QEAA@PEAVCCertMapping@@@Z +??0?$AutoCleanup@V?$AutoDelete@VCConfigChangeSource@@@@PEAVCConfigChangeSource@@@@QEAA@PEAVCConfigChangeSource@@@Z +??0?$AutoCleanup@V?$AutoDelete@VCListenerSettings@@@@PEAVCListenerSettings@@@@QEAA@PEAVCListenerSettings@@@Z +??0?$AutoCleanup@V?$AutoDelete@VCObserverConfigChangeErrors@@@@PEAVCObserverConfigChangeErrors@@@@QEAA@PEAVCObserverConfigChangeErrors@@@Z +??0?$AutoCleanup@V?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PEAVCServiceWatcher@CServiceConfigCache@@@@QEAA@PEAVCServiceWatcher@CServiceConfigCache@@@Z +??0?$AutoCleanup@V?$AutoDelete@VCShellUriSettings@@@@PEAVCShellUriSettings@@@@QEAA@PEAVCShellUriSettings@@@Z +??0?$AutoCleanup@V?$AutoDelete@VCWSManEPR@@@@PEAVCWSManEPR@@@@QEAA@PEAVCWSManEPR@@@Z +??0?$AutoCleanup@V?$AutoDelete@VCWSManResource@@@@PEAVCWSManResource@@@@QEAA@PEAVCWSManResource@@@Z +??0?$AutoCleanup@V?$AutoDelete@VCertHash@@@@PEAVCertHash@@@@QEAA@PEAVCertHash@@@Z +??0?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PEAVConfigUpdate@@@@QEAA@PEAVConfigUpdate@@@Z +??0?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@QEAA@PEAVEnumSinkEx@@@Z +??0?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoDelete@VEventHandler@WSMan@@@@PEAVEventHandler@WSMan@@@@QEAA@PEAVEventHandler@WSMan@@@Z +??0?$AutoCleanup@V?$AutoDelete@VExpiredOperationIdRecord@@@@PEAVExpiredOperationIdRecord@@@@QEAA@PEAVExpiredOperationIdRecord@@@Z +??0?$AutoCleanup@V?$AutoDelete@VGPApiManager@@@@PEAVGPApiManager@@@@QEAA@PEAVGPApiManager@@@Z +??0?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@QEAA@PEAVGeneralSinkEx@@@Z +??0?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoDelete@VIChannelObserverFactory@@@@PEAVIChannelObserverFactory@@@@QEAA@PEAVIChannelObserverFactory@@@Z +??0?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PEAVIQueryDASHSMASHInterface@@@@QEAA@PEAVIQueryDASHSMASHInterface@@@Z +??0?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PEAVIQueryDASHSMASHInterface@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PEAVISpecification@@@@QEAA@PEAVISpecification@@@Z +??0?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PEAVISpecification@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoDelete@VInteractiveSid@CSecurity@@@@PEAVInteractiveSid@CSecurity@@@@QEAA@PEAVInteractiveSid@CSecurity@@@Z +??0?$AutoCleanup@V?$AutoDelete@VIpHlpApiDllLoader@@@@PEAVIpHlpApiDllLoader@@@@QEAA@PEAVIpHlpApiDllLoader@@@Z +??0?$AutoCleanup@V?$AutoDelete@VMachineName@@@@PEAVMachineName@@@@QEAA@PEAVMachineName@@@Z +??0?$AutoCleanup@V?$AutoDelete@VNetworkServiceSid@CSecurity@@@@PEAVNetworkServiceSid@CSecurity@@@@QEAA@PEAVNetworkServiceSid@CSecurity@@@Z +??0?$AutoCleanup@V?$AutoDelete@VNtDsApiDllLoader@@@@PEAVNtDsApiDllLoader@@@@QEAA@PEAVNtDsApiDllLoader@@@Z +??0?$AutoCleanup@V?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@QEAA@PEAVOptionValue@SessionOptions@Client@WSMan@@@Z +??0?$AutoCleanup@V?$AutoDelete@VPacketCreator@@@@PEAVPacketCreator@@@@QEAA@PEAVPacketCreator@@@Z +??0?$AutoCleanup@V?$AutoDelete@VPacketParser@@@@PEAVPacketParser@@@@QEAA@PEAVPacketParser@@@Z +??0?$AutoCleanup@V?$AutoDelete@VResources@Locale@@@@PEAVResources@Locale@@@@QEAA@PEAVResources@Locale@@@Z +??0?$AutoCleanup@V?$AutoDelete@VRunAsConfiguration@@@@PEAVRunAsConfiguration@@@@QEAA@PEAVRunAsConfiguration@@@Z +??0?$AutoCleanup@V?$AutoDelete@VSecurityEntry@Catalog@@@@PEAVSecurityEntry@Catalog@@@@QEAA@PEAVSecurityEntry@Catalog@@@Z +??0?$AutoCleanup@V?$AutoDelete@VSendPacketArgs@RobustConnectionBuffer@@@@PEAVSendPacketArgs@RobustConnectionBuffer@@@@QEAA@PEAVSendPacketArgs@RobustConnectionBuffer@@@Z +??0?$AutoCleanup@V?$AutoDelete@VServiceSoapProcessor@@@@PEAVServiceSoapProcessor@@@@QEAA@PEAVServiceSoapProcessor@@@Z +??0?$AutoCleanup@V?$AutoDelete@VShell32DllLoader@@@@PEAVShell32DllLoader@@@@QEAA@PEAVShell32DllLoader@@@Z +??0?$AutoCleanup@V?$AutoDelete@VShlWApiDllLoader@@@@PEAVShlWApiDllLoader@@@@QEAA@PEAVShlWApiDllLoader@@@Z +??0?$AutoCleanup@V?$AutoDelete@VSubscriptionEnumerator@@@@PEAVSubscriptionEnumerator@@@@QEAA@PEAVSubscriptionEnumerator@@@Z +??0?$AutoCleanup@V?$AutoDelete@VSubscriptionManager@@@@PEAVSubscriptionManager@@@@QEAA@PEAVSubscriptionManager@@@Z +??0?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PEAVTSTRBUFFER@@@@QEAA@PEAVTSTRBUFFER@@@Z +??0?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PEAVTSTRBUFFER@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoDelete@VUniqueStringOverflow@@@@PEAVUniqueStringOverflow@@@@QEAA@PEAVUniqueStringOverflow@@@Z +??0?$AutoCleanup@V?$AutoDelete@VUser32DllLoader@@@@PEAVUser32DllLoader@@@@QEAA@PEAVUser32DllLoader@@@Z +??0?$AutoCleanup@V?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@PEAVWSMANCONFIGTABLE_IDENTITY@@@@QEAA@PEAVWSMANCONFIGTABLE_IDENTITY@@@Z +??0?$AutoCleanup@V?$AutoDelete@VWSManMemCryptManager@@@@PEAVWSManMemCryptManager@@@@QEAA@PEAVWSManMemCryptManager@@@Z +??0?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PEAVWmiEnumContext@@@@QEAA@PEAVWmiEnumContext@@@Z +??0?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PEAVWmiEnumContext@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PEAVXmlReader@@@@QEAA@PEAVXmlReader@@@Z +??0?$AutoCleanup@V?$AutoDeleteVector@$$CBG@@PEBG@@QEAA@PEBG@Z +??0?$AutoCleanup@V?$AutoDeleteVector@D@@PEAD@@QEAA@PEAD@Z +??0?$AutoCleanup@V?$AutoDeleteVector@E@@PEAE@@QEAA@PEAE@Z +??0?$AutoCleanup@V?$AutoDeleteVector@E@@PEAE@@QEAA@XZ +??0?$AutoCleanup@V?$AutoDeleteVector@G@@PEAG@@QEAA@PEAG@Z +??0?$AutoCleanup@V?$AutoDeleteVector@G@@PEAG@@QEAA@XZ +??0?$AutoCleanup@V?$AutoDeleteVector@H@@PEAH@@QEAA@PEAH@Z +??0?$AutoCleanup@V?$AutoDeleteVector@PEAG@@PEAPEAG@@QEAA@PEAPEAG@Z +??0?$AutoCleanup@V?$AutoDeleteVector@PEAG@@PEAPEAG@@QEAA@XZ +??0?$AutoCleanup@V?$AutoDeleteVector@PEBG@@PEAPEBG@@QEAA@PEAPEBG@Z +??0?$AutoCleanup@V?$AutoDeleteVector@PEBG@@PEAPEBG@@QEAA@XZ +??0?$AutoCleanup@V?$AutoDeleteVector@U_CONFIG_UPDATE@@@@PEAU_CONFIG_UPDATE@@@@QEAA@PEAU_CONFIG_UPDATE@@@Z +??0?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PEAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QEAA@PEAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@Z +??0?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PEAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PEAU_WINRS_RUN_COMMAND_ARG@@@@QEAA@PEAU_WINRS_RUN_COMMAND_ARG@@@Z +??0?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PEAU_WINRS_RUN_COMMAND_ARG@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoDeleteVector@U_WSMAN_OPTION@@@@PEAU_WSMAN_OPTION@@@@QEAA@PEAU_WSMAN_OPTION@@@Z +??0?$AutoCleanup@V?$AutoDeleteVector@X@@PEAX@@QEAA@PEAX@Z +??0?$AutoCleanup@V?$AutoFree@E@@PEAE@@QEAA@PEAE@Z +??0?$AutoCleanup@V?$AutoLocklessItemRecycle@VPacket@@@@PEAVPacket@@@@QEAA@PEAVPacket@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIAppHostAdminManager@@@@PEAUIAppHostAdminManager@@@@QEAA@PEAUIAppHostAdminManager@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIAppHostChildElementCollection@@@@PEAUIAppHostChildElementCollection@@@@QEAA@PEAUIAppHostChildElementCollection@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIAppHostConfigException@@@@PEAUIAppHostConfigException@@@@QEAA@PEAUIAppHostConfigException@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIAppHostElement@@@@PEAUIAppHostElement@@@@QEAA@PEAUIAppHostElement@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIAppHostElementCollection@@@@PEAUIAppHostElementCollection@@@@QEAA@PEAUIAppHostElementCollection@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIAppHostProperty@@@@PEAUIAppHostProperty@@@@QEAA@PEAUIAppHostProperty@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIAppHostPropertyCollection@@@@PEAUIAppHostPropertyCollection@@@@QEAA@PEAUIAppHostPropertyCollection@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PEAUIClientSecurity@@@@QEAA@PEAUIClientSecurity@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PEAUIClientSecurity@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PEAUIEnumWbemClassObject@@@@QEAA@PEAUIEnumWbemClassObject@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PEAUIEnumWbemClassObject@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PEAUIErrorInfo@@@@QEAA@PEAUIErrorInfo@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PEAUIErrorInfo@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PEAUIUnknown@@@@QEAA@PEAUIUnknown@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PEAUIUnknown@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PEAUIWbemClassObject@@@@QEAA@PEAUIWbemClassObject@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PEAUIWbemClassObject@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PEAUIWbemContext@@@@QEAA@PEAUIWbemContext@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PEAUIWbemContext@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PEAUIWbemLocator@@@@QEAA@PEAUIWbemLocator@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PEAUIWbemLocator@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PEAUIWbemObjectTextSrc@@@@QEAA@PEAUIWbemObjectTextSrc@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PEAUIWbemObjectTextSrc@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PEAUIWbemPath@@@@QEAA@PEAUIWbemPath@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PEAUIWbemPath@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PEAUIWbemPathKeyList@@@@QEAA@PEAUIWbemPathKeyList@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PEAUIWbemPathKeyList@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PEAUIWbemQualifierSet@@@@QEAA@PEAUIWbemQualifierSet@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PEAUIWbemQualifierSet@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PEAUIWbemQuery@@@@QEAA@PEAUIWbemQuery@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PEAUIWbemQuery@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PEAUIWbemServices@@@@QEAA@PEAUIWbemServices@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PEAUIWbemServices@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoRelease@VApplication@Client@WSMan@@@@PEAVApplication@Client@WSMan@@@@QEAA@PEAVApplication@Client@WSMan@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCBaseConfigCache@@@@PEAVCBaseConfigCache@@@@QEAA@PEAVCBaseConfigCache@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PEAVCClientConfigSettings@@@@QEAA@PEAVCClientConfigSettings@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCCommonConfigSettings@@@@PEAVCCommonConfigSettings@@@@QEAA@PEAVCCommonConfigSettings@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@PEAVCConfigCacheMap@CBaseConfigCache@@@@QEAA@PEAVCConfigCacheMap@CBaseConfigCache@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PEAVCConfigManager@@@@QEAA@PEAVCConfigManager@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCRemoteOperation@@@@PEAVCRemoteOperation@@@@QEAA@PEAVCRemoteOperation@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PEAVCRemoteSession@@@@QEAA@PEAVCRemoteSession@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PEAVCRequestContext@@@@QEAA@PEAVCRequestContext@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCServiceCommonConfigSettings@@@@PEAVCServiceCommonConfigSettings@@@@QEAA@PEAVCServiceCommonConfigSettings@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCServiceConfigCache@@@@PEAVCServiceConfigCache@@@@QEAA@PEAVCServiceConfigCache@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCServiceConfigSettings@@@@PEAVCServiceConfigSettings@@@@QEAA@PEAVCServiceConfigSettings@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PEAVCWSManEPR@@@@QEAA@PEAVCWSManEPR@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PEAVCWSManEPR@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyCache@@@@PEAVCWSManGroupPolicyCache@@@@QEAA@PEAVCWSManGroupPolicyCache@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyManager@@@@PEAVCWSManGroupPolicyManager@@@@QEAA@PEAVCWSManGroupPolicyManager@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCWSManObject@@@@PEAVCWSManObject@@@@QEAA@PEAVCWSManObject@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PEAVCWSManResource@@@@QEAA@PEAVCWSManResource@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PEAVCWinRSPluginConfigCache@@@@QEAA@PEAVCWinRSPluginConfigCache@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PEAVCWinRSPluginConfigCache@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigSettings@@@@PEAVCWinRSPluginConfigSettings@@@@QEAA@PEAVCWinRSPluginConfigSettings@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCommand@Client@WSMan@@@@PEAVCommand@Client@WSMan@@@@QEAA@PEAVCommand@Client@WSMan@@@Z +??0?$AutoCleanup@V?$AutoRelease@VConfigNotification@@@@PEAVConfigNotification@@@@QEAA@PEAVConfigNotification@@@Z +??0?$AutoCleanup@V?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@PEAVConnectShellOperation@Client@WSMan@@@@QEAA@PEAVConnectShellOperation@Client@WSMan@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@PEAVCreateShellOperation@Client@WSMan@@@@QEAA@PEAVCreateShellOperation@Client@WSMan@@@Z +??0?$AutoCleanup@V?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@PEAVDeleteShellOperation@Client@WSMan@@@@QEAA@PEAVDeleteShellOperation@Client@WSMan@@@Z +??0?$AutoCleanup@V?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@PEAVDisconnectOperation@Client@WSMan@@@@QEAA@PEAVDisconnectOperation@Client@WSMan@@@Z +??0?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@QEAA@PEAVEnumSinkEx@@@Z +??0?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@QEAA@PEAVGeneralSinkEx@@@Z +??0?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoRelease@VIISConfigSettings@@@@PEAVIISConfigSettings@@@@QEAA@PEAVIISConfigSettings@@@Z +??0?$AutoCleanup@V?$AutoRelease@VIPCSoapProcessor@@@@PEAVIPCSoapProcessor@@@@QEAA@PEAVIPCSoapProcessor@@@Z +??0?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PEAVIRequestContext@@@@QEAA@PEAVIRequestContext@@@Z +??0?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PEAVIRequestContext@@@@QEAA@XZ +??0?$AutoCleanup@V?$AutoRelease@VISubscription@@@@PEAVISubscription@@@@QEAA@PEAVISubscription@@@Z +??0?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PEAVInboundRequestDetails@@@@QEAA@PEAVInboundRequestDetails@@@Z +??0?$AutoCleanup@V?$AutoRelease@VReceiveOperation@Client@WSMan@@@@PEAVReceiveOperation@Client@WSMan@@@@QEAA@PEAVReceiveOperation@Client@WSMan@@@Z +??0?$AutoCleanup@V?$AutoRelease@VReconnectOperation@Client@WSMan@@@@PEAVReconnectOperation@Client@WSMan@@@@QEAA@PEAVReconnectOperation@Client@WSMan@@@Z +??0?$AutoCleanup@V?$AutoRelease@VSendOperation@Client@WSMan@@@@PEAVSendOperation@Client@WSMan@@@@QEAA@PEAVSendOperation@Client@WSMan@@@Z +??0?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PEAVShell@Client@WSMan@@@@QEAA@PEAVShell@Client@WSMan@@@Z +??0?$AutoCleanup@V?$AutoRelease@VShellInfo@@@@PEAVShellInfo@@@@QEAA@PEAVShellInfo@@@Z +??0?$AutoCleanup@V?$AutoRelease@VSignalOperation@Client@WSMan@@@@PEAVSignalOperation@Client@WSMan@@@@QEAA@PEAVSignalOperation@Client@WSMan@@@Z +??0?$AutoCleanup@V?$AutoRelease@VUserRecord@@@@PEAVUserRecord@@@@QEAA@PEAVUserRecord@@@Z +??0?$AutoCleanup@V?$AutoRelease@VWSManHttpListener@@@@PEAVWSManHttpListener@@@@QEAA@PEAVWSManHttpListener@@@Z +??0?$AutoCleanup@V?$AutoReleaseEx@VHostMappingTableEntry@@@@PEAVHostMappingTableEntry@@@@QEAA@PEAVHostMappingTableEntry@@@Z +??0?$AutoCleanup@V?$AutoReleaseEx@VShell@Client@WSMan@@@@PEAVShell@Client@WSMan@@@@QEAA@PEAVShell@Client@WSMan@@@Z +??0?$AutoCleanup@VAutoBstr@@PEAG@@QEAA@PEAG@Z +??0?$AutoCleanup@VAutoBstr@@PEAG@@QEAA@XZ +??0?$AutoCleanup@VAutoBstrNoAlloc@@PEAG@@QEAA@PEAG@Z +??0?$AutoCleanup@VAutoBstrNoAlloc@@PEAG@@QEAA@XZ +??0?$AutoCleanup@VAutoCertContext@@PEBU_CERT_CONTEXT@@@@QEAA@PEBU_CERT_CONTEXT@@@Z +??0?$AutoCleanup@VAutoCertContext@@PEBU_CERT_CONTEXT@@@@QEAA@XZ +??0?$AutoCleanup@VAutoChainContext@@PEBU_CERT_CHAIN_CONTEXT@@@@QEAA@PEBU_CERT_CHAIN_CONTEXT@@@Z +??0?$AutoCleanup@VAutoChainContext@@PEBU_CERT_CHAIN_CONTEXT@@@@QEAA@XZ +??0?$AutoCleanup@VAutoCoTaskMemFree@@PEAX@@QEAA@PEAX@Z +??0?$AutoCleanup@VAutoCoTaskMemFree@@PEAX@@QEAA@XZ +??0?$AutoCleanup@VAutoFwXmlCloseParser@@PEAX@@QEAA@PEAX@Z +??0?$AutoCleanup@VAutoFwXmlCloseParser@@PEAX@@QEAA@XZ +??0?$AutoCleanup@VAutoHandle@@PEAX@@QEAA@PEAX@Z +??0?$AutoCleanup@VAutoHandle@@PEAX@@QEAA@XZ +??0?$AutoCleanup@VAutoImpersonateUser@@PEAX@@QEAA@PEAX@Z +??0?$AutoCleanup@VAutoImpersonateUser@@PEAX@@QEAA@XZ +??0?$AutoCleanup@VAutoLibrary@@PEAUHINSTANCE__@@@@QEAA@PEAUHINSTANCE__@@@Z +??0?$AutoCleanup@VAutoLibrary@@PEAUHINSTANCE__@@@@QEAA@XZ +??0?$AutoCleanup@VAutoLocalFree@@PEAX@@QEAA@PEAX@Z +??0?$AutoCleanup@VAutoLocalFree@@PEAX@@QEAA@XZ +??0?$AutoCleanup@VAutoMIClass@@PEAU_MI_Class@@@@QEAA@PEAU_MI_Class@@@Z +??0?$AutoCleanup@VAutoMIClass@@PEAU_MI_Class@@@@QEAA@XZ +??0?$AutoCleanup@VAutoMIInstance@@PEAU_MI_Instance@@@@QEAA@PEAU_MI_Instance@@@Z +??0?$AutoCleanup@VAutoMIInstance@@PEAU_MI_Instance@@@@QEAA@XZ +??0?$AutoCleanup@VAutoObject@@PEAUWSMAN_OBJECT@@@@QEAA@PEAUWSMAN_OBJECT@@@Z +??0?$AutoCleanup@VAutoObject@@PEAUWSMAN_OBJECT@@@@QEAA@XZ +??0?$AutoCleanup@VAutoRegKey@@PEAUHKEY__@@@@QEAA@PEAUHKEY__@@@Z +??0?$AutoCleanup@VAutoRegKey@@PEAUHKEY__@@@@QEAA@XZ +??0?$AutoCleanup@VAutoSecurityDescriptor@@PEAX@@QEAA@PEAX@Z +??0?$AutoCleanup@VAutoSecurityDescriptor@@PEAX@@QEAA@XZ +??0?$AutoCleanup@VAutoWaitHandle@@PEAX@@QEAA@PEAX@Z +??0?$AutoCleanup@VAutoWaitHandle@@PEAX@@QEAA@XZ +??0?$AutoDelete@D@@QEAA@XZ +??0?$AutoDelete@G@@QEAA@PEAG@Z +??0?$AutoDelete@G@@QEAA@XZ +??0?$AutoDelete@UIPRange@CWSManIPFilter@@@@QEAA@XZ +??0?$AutoDelete@U_SID@@@@QEAA@PEAU_SID@@@Z +??0?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@QEAA@PEAU_WSMAN_STREAM_ID_SET@@@Z +??0?$AutoDelete@V?$Handle@VISubscription@@@@@@QEAA@PEAV?$Handle@VISubscription@@@@@Z +??0?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEAA@XZ +??0?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@QEAA@XZ +??0?$AutoDelete@V?$SafeSet@PEAVCCertMapping@@@@@@QEAA@PEAV?$SafeSet@PEAVCCertMapping@@@@@Z +??0?$AutoDelete@V?$SafeSet@PEAVCCertMapping@@@@@@QEAA@XZ +??0?$AutoDelete@V?$SafeSet@PEAVCShellUriSettings@@@@@@QEAA@PEAV?$SafeSet@PEAVCShellUriSettings@@@@@Z +??0?$AutoDelete@V?$SafeSet@PEAVCShellUriSettings@@@@@@QEAA@XZ +??0?$AutoDelete@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@QEAA@XZ +??0?$AutoDelete@V?$SimpleStack@VCListenerOperation@@@@@@QEAA@XZ +??0?$AutoDelete@V?$SimpleStack@VShellHostEntry@@@@@@QEAA@XZ +??0?$AutoDelete@V?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@@QEAA@PEAV?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@Z +??0?$AutoDelete@V?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@@QEAA@XZ +??0?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@QEAA@XZ +??0?$AutoDelete@V?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@@@QEAA@XZ +??0?$AutoDelete@V?$vector@PEAVIServiceConfigObserver@@V?$transport_allocator@PEAVIServiceConfigObserver@@@@@std@@@@QEAA@XZ +??0?$AutoDelete@VAdminSid@CSecurity@@@@QEAA@PEAVAdminSid@CSecurity@@@Z +??0?$AutoDelete@VBlockedRecord@@@@QEAA@XZ +??0?$AutoDelete@VCBaseConfigCache@@@@QEAA@PEAVCBaseConfigCache@@@Z +??0?$AutoDelete@VCCertMapping@@@@QEAA@PEAVCCertMapping@@@Z +??0?$AutoDelete@VCConfigChangeSource@@@@QEAA@XZ +??0?$AutoDelete@VCListenerSettings@@@@QEAA@PEAVCListenerSettings@@@Z +??0?$AutoDelete@VCObserverConfigChangeErrors@@@@QEAA@XZ +??0?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@QEAA@PEAVCServiceWatcher@CServiceConfigCache@@@Z +??0?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@QEAA@XZ +??0?$AutoDelete@VCShellUriSettings@@@@QEAA@PEAVCShellUriSettings@@@Z +??0?$AutoDelete@VCWSManEPR@@@@QEAA@PEAVCWSManEPR@@@Z +??0?$AutoDelete@VCWSManResource@@@@QEAA@PEAVCWSManResource@@@Z +??0?$AutoDelete@VCWSManResource@@@@QEAA@XZ +??0?$AutoDelete@VCertHash@@@@QEAA@PEAVCertHash@@@Z +??0?$AutoDelete@VCertHash@@@@QEAA@XZ +??0?$AutoDelete@VConfigUpdate@@@@QEAA@PEAVConfigUpdate@@@Z +??0?$AutoDelete@VConfigUpdate@@@@QEAA@XZ +??0?$AutoDelete@VEnumSinkEx@@@@QEAA@PEAVEnumSinkEx@@@Z +??0?$AutoDelete@VEnumSinkEx@@@@QEAA@XZ +??0?$AutoDelete@VEventHandler@WSMan@@@@QEAA@PEAVEventHandler@WSMan@@@Z +??0?$AutoDelete@VExpiredOperationIdRecord@@@@QEAA@PEAVExpiredOperationIdRecord@@@Z +??0?$AutoDelete@VGPApiManager@@@@QEAA@XZ +??0?$AutoDelete@VGeneralSinkEx@@@@QEAA@PEAVGeneralSinkEx@@@Z +??0?$AutoDelete@VGeneralSinkEx@@@@QEAA@XZ +??0?$AutoDelete@VIChannelObserverFactory@@@@QEAA@PEAVIChannelObserverFactory@@@Z +??0?$AutoDelete@VIChannelObserverFactory@@@@QEAA@XZ +??0?$AutoDelete@VIQueryDASHSMASHInterface@@@@QEAA@PEAVIQueryDASHSMASHInterface@@@Z +??0?$AutoDelete@VIQueryDASHSMASHInterface@@@@QEAA@XZ +??0?$AutoDelete@VISpecification@@@@QEAA@PEAVISpecification@@@Z +??0?$AutoDelete@VISpecification@@@@QEAA@XZ +??0?$AutoDelete@VInteractiveSid@CSecurity@@@@QEAA@PEAVInteractiveSid@CSecurity@@@Z +??0?$AutoDelete@VIpHlpApiDllLoader@@@@QEAA@PEAVIpHlpApiDllLoader@@@Z +??0?$AutoDelete@VMachineName@@@@QEAA@PEAVMachineName@@@Z +??0?$AutoDelete@VNetworkServiceSid@CSecurity@@@@QEAA@PEAVNetworkServiceSid@CSecurity@@@Z +??0?$AutoDelete@VNtDsApiDllLoader@@@@QEAA@PEAVNtDsApiDllLoader@@@Z +??0?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@QEAA@PEAVOptionValue@SessionOptions@Client@WSMan@@@Z +??0?$AutoDelete@VPacketCreator@@@@QEAA@PEAVPacketCreator@@@Z +??0?$AutoDelete@VPacketCreator@@@@QEAA@XZ +??0?$AutoDelete@VPacketParser@@@@QEAA@XZ +??0?$AutoDelete@VResources@Locale@@@@QEAA@PEAVResources@Locale@@@Z +??0?$AutoDelete@VRunAsConfiguration@@@@QEAA@PEAVRunAsConfiguration@@@Z +??0?$AutoDelete@VSecurityEntry@Catalog@@@@QEAA@PEAVSecurityEntry@Catalog@@@Z +??0?$AutoDelete@VSendPacketArgs@RobustConnectionBuffer@@@@QEAA@PEAVSendPacketArgs@RobustConnectionBuffer@@@Z +??0?$AutoDelete@VServiceSoapProcessor@@@@QEAA@XZ +??0?$AutoDelete@VShell32DllLoader@@@@QEAA@PEAVShell32DllLoader@@@Z +??0?$AutoDelete@VShlWApiDllLoader@@@@QEAA@PEAVShlWApiDllLoader@@@Z +??0?$AutoDelete@VSubscriptionEnumerator@@@@QEAA@XZ +??0?$AutoDelete@VSubscriptionManager@@@@QEAA@PEAVSubscriptionManager@@@Z +??0?$AutoDelete@VTSTRBUFFER@@@@QEAA@PEAVTSTRBUFFER@@@Z +??0?$AutoDelete@VTSTRBUFFER@@@@QEAA@XZ +??0?$AutoDelete@VUniqueStringOverflow@@@@QEAA@XZ +??0?$AutoDelete@VUser32DllLoader@@@@QEAA@PEAVUser32DllLoader@@@Z +??0?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@QEAA@PEAVWSMANCONFIGTABLE_IDENTITY@@@Z +??0?$AutoDelete@VWSManMemCryptManager@@@@QEAA@PEAVWSManMemCryptManager@@@Z +??0?$AutoDelete@VWmiEnumContext@@@@QEAA@PEAVWmiEnumContext@@@Z +??0?$AutoDelete@VWmiEnumContext@@@@QEAA@XZ +??0?$AutoDelete@VXmlReader@@@@QEAA@PEAVXmlReader@@@Z +??0?$AutoDelete@VXmlReader@@@@QEAA@XZ +??0?$AutoDeleteVector@$$CBG@@QEAA@XZ +??0?$AutoDeleteVector@D@@QEAA@PEAD@Z +??0?$AutoDeleteVector@D@@QEAA@XZ +??0?$AutoDeleteVector@E@@QEAA@PEAE@Z +??0?$AutoDeleteVector@E@@QEAA@XZ +??0?$AutoDeleteVector@G@@QEAA@PEAG@Z +??0?$AutoDeleteVector@G@@QEAA@XZ +??0?$AutoDeleteVector@H@@QEAA@PEAH@Z +??0?$AutoDeleteVector@PEAG@@QEAA@PEAPEAG@Z +??0?$AutoDeleteVector@PEAG@@QEAA@XZ +??0?$AutoDeleteVector@PEBG@@QEAA@PEAPEBG@Z +??0?$AutoDeleteVector@PEBG@@QEAA@XZ +??0?$AutoDeleteVector@U_CONFIG_UPDATE@@@@QEAA@XZ +??0?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QEAA@PEAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@Z +??0?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QEAA@XZ +??0?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@QEAA@PEAU_WINRS_RUN_COMMAND_ARG@@@Z +??0?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@QEAA@XZ +??0?$AutoDeleteVector@U_WSMAN_OPTION@@@@QEAA@PEAU_WSMAN_OPTION@@@Z +??0?$AutoDeleteVector@U_WSMAN_OPTION@@@@QEAA@XZ +??0?$AutoDeleteVector@X@@QEAA@PEAX@Z +??0?$AutoDeleteVector@X@@QEAA@XZ +??0?$AutoFree@E@@QEAA@PEAE@Z +??0?$AutoFree@E@@QEAA@XZ +??0?$AutoLocklessItemRecycle@VPacket@@@@QEAA@PEAVPacket@@@Z +??0?$AutoLocklessItemRecycle@VPacket@@@@QEAA@XZ +??0?$AutoRelease@UIAppHostAdminManager@@@@QEAA@PEAUIAppHostAdminManager@@@Z +??0?$AutoRelease@UIAppHostChildElementCollection@@@@QEAA@XZ +??0?$AutoRelease@UIAppHostConfigException@@@@QEAA@PEAUIAppHostConfigException@@@Z +??0?$AutoRelease@UIAppHostElement@@@@QEAA@PEAUIAppHostElement@@@Z +??0?$AutoRelease@UIAppHostElement@@@@QEAA@XZ +??0?$AutoRelease@UIAppHostElementCollection@@@@QEAA@XZ +??0?$AutoRelease@UIAppHostProperty@@@@QEAA@XZ +??0?$AutoRelease@UIAppHostPropertyCollection@@@@QEAA@XZ +??0?$AutoRelease@UIClientSecurity@@@@QEAA@PEAUIClientSecurity@@@Z +??0?$AutoRelease@UIClientSecurity@@@@QEAA@XZ +??0?$AutoRelease@UIEnumWbemClassObject@@@@QEAA@PEAUIEnumWbemClassObject@@@Z +??0?$AutoRelease@UIEnumWbemClassObject@@@@QEAA@XZ +??0?$AutoRelease@UIErrorInfo@@@@QEAA@PEAUIErrorInfo@@@Z +??0?$AutoRelease@UIErrorInfo@@@@QEAA@XZ +??0?$AutoRelease@UIUnknown@@@@QEAA@PEAUIUnknown@@@Z +??0?$AutoRelease@UIUnknown@@@@QEAA@XZ +??0?$AutoRelease@UIWbemClassObject@@@@QEAA@PEAUIWbemClassObject@@@Z +??0?$AutoRelease@UIWbemClassObject@@@@QEAA@XZ +??0?$AutoRelease@UIWbemContext@@@@QEAA@PEAUIWbemContext@@@Z +??0?$AutoRelease@UIWbemContext@@@@QEAA@XZ +??0?$AutoRelease@UIWbemLocator@@@@QEAA@PEAUIWbemLocator@@@Z +??0?$AutoRelease@UIWbemLocator@@@@QEAA@XZ +??0?$AutoRelease@UIWbemObjectTextSrc@@@@QEAA@PEAUIWbemObjectTextSrc@@@Z +??0?$AutoRelease@UIWbemObjectTextSrc@@@@QEAA@XZ +??0?$AutoRelease@UIWbemPath@@@@QEAA@PEAUIWbemPath@@@Z +??0?$AutoRelease@UIWbemPath@@@@QEAA@XZ +??0?$AutoRelease@UIWbemPathKeyList@@@@QEAA@PEAUIWbemPathKeyList@@@Z +??0?$AutoRelease@UIWbemPathKeyList@@@@QEAA@XZ +??0?$AutoRelease@UIWbemQualifierSet@@@@QEAA@PEAUIWbemQualifierSet@@@Z +??0?$AutoRelease@UIWbemQualifierSet@@@@QEAA@XZ +??0?$AutoRelease@UIWbemQuery@@@@QEAA@PEAUIWbemQuery@@@Z +??0?$AutoRelease@UIWbemQuery@@@@QEAA@XZ +??0?$AutoRelease@UIWbemServices@@@@QEAA@PEAUIWbemServices@@@Z +??0?$AutoRelease@UIWbemServices@@@@QEAA@XZ +??0?$AutoRelease@VApplication@Client@WSMan@@@@QEAA@XZ +??0?$AutoRelease@VCBaseConfigCache@@@@QEAA@PEAVCBaseConfigCache@@@Z +??0?$AutoRelease@VCClientConfigSettings@@@@QEAA@PEAVCClientConfigSettings@@@Z +??0?$AutoRelease@VCClientConfigSettings@@@@QEAA@XZ +??0?$AutoRelease@VCCommonConfigSettings@@@@QEAA@PEAVCCommonConfigSettings@@@Z +??0?$AutoRelease@VCCommonConfigSettings@@@@QEAA@XZ +??0?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@QEAA@PEAVCConfigCacheMap@CBaseConfigCache@@@Z +??0?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@QEAA@XZ +??0?$AutoRelease@VCConfigManager@@@@QEAA@PEAVCConfigManager@@@Z +??0?$AutoRelease@VCConfigManager@@@@QEAA@XZ +??0?$AutoRelease@VCRemoteOperation@@@@QEAA@PEAVCRemoteOperation@@@Z +??0?$AutoRelease@VCRemoteSession@@@@QEAA@PEAVCRemoteSession@@@Z +??0?$AutoRelease@VCRemoteSession@@@@QEAA@XZ +??0?$AutoRelease@VCRequestContext@@@@QEAA@PEAVCRequestContext@@@Z +??0?$AutoRelease@VCRequestContext@@@@QEAA@XZ +??0?$AutoRelease@VCServiceCommonConfigSettings@@@@QEAA@PEAVCServiceCommonConfigSettings@@@Z +??0?$AutoRelease@VCServiceCommonConfigSettings@@@@QEAA@XZ +??0?$AutoRelease@VCServiceConfigCache@@@@QEAA@PEAVCServiceConfigCache@@@Z +??0?$AutoRelease@VCServiceConfigCache@@@@QEAA@XZ +??0?$AutoRelease@VCServiceConfigSettings@@@@QEAA@PEAVCServiceConfigSettings@@@Z +??0?$AutoRelease@VCServiceConfigSettings@@@@QEAA@XZ +??0?$AutoRelease@VCWSManEPR@@@@QEAA@PEAVCWSManEPR@@@Z +??0?$AutoRelease@VCWSManEPR@@@@QEAA@XZ +??0?$AutoRelease@VCWSManGroupPolicyCache@@@@QEAA@PEAVCWSManGroupPolicyCache@@@Z +??0?$AutoRelease@VCWSManGroupPolicyManager@@@@QEAA@PEAVCWSManGroupPolicyManager@@@Z +??0?$AutoRelease@VCWSManObject@@@@QEAA@PEAVCWSManObject@@@Z +??0?$AutoRelease@VCWSManResource@@@@QEAA@PEAVCWSManResource@@@Z +??0?$AutoRelease@VCWSManResource@@@@QEAA@XZ +??0?$AutoRelease@VCWinRSPluginConfigCache@@@@QEAA@PEAVCWinRSPluginConfigCache@@@Z +??0?$AutoRelease@VCWinRSPluginConfigCache@@@@QEAA@XZ +??0?$AutoRelease@VCWinRSPluginConfigSettings@@@@QEAA@PEAVCWinRSPluginConfigSettings@@@Z +??0?$AutoRelease@VCommand@Client@WSMan@@@@QEAA@PEAVCommand@Client@WSMan@@@Z +??0?$AutoRelease@VConfigNotification@@@@QEAA@PEAVConfigNotification@@@Z +??0?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@QEAA@PEAVConnectShellOperation@Client@WSMan@@@Z +??0?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@QEAA@PEAVCreateShellOperation@Client@WSMan@@@Z +??0?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@QEAA@PEAVDeleteShellOperation@Client@WSMan@@@Z +??0?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@QEAA@PEAVDisconnectOperation@Client@WSMan@@@Z +??0?$AutoRelease@VEnumSinkEx@@@@QEAA@PEAVEnumSinkEx@@@Z +??0?$AutoRelease@VEnumSinkEx@@@@QEAA@XZ +??0?$AutoRelease@VGeneralSinkEx@@@@QEAA@PEAVGeneralSinkEx@@@Z +??0?$AutoRelease@VGeneralSinkEx@@@@QEAA@XZ +??0?$AutoRelease@VIISConfigSettings@@@@QEAA@XZ +??0?$AutoRelease@VIPCSoapProcessor@@@@QEAA@PEAVIPCSoapProcessor@@@Z +??0?$AutoRelease@VIRequestContext@@@@QEAA@PEAVIRequestContext@@@Z +??0?$AutoRelease@VIRequestContext@@@@QEAA@XZ +??0?$AutoRelease@VISubscription@@@@QEAA@PEAVISubscription@@@Z +??0?$AutoRelease@VInboundRequestDetails@@@@QEAA@XZ +??0?$AutoRelease@VReceiveOperation@Client@WSMan@@@@QEAA@PEAVReceiveOperation@Client@WSMan@@@Z +??0?$AutoRelease@VReconnectOperation@Client@WSMan@@@@QEAA@PEAVReconnectOperation@Client@WSMan@@@Z +??0?$AutoRelease@VSendOperation@Client@WSMan@@@@QEAA@PEAVSendOperation@Client@WSMan@@@Z +??0?$AutoRelease@VShell@Client@WSMan@@@@QEAA@PEAVShell@Client@WSMan@@@Z +??0?$AutoRelease@VShellInfo@@@@QEAA@XZ +??0?$AutoRelease@VSignalOperation@Client@WSMan@@@@QEAA@PEAVSignalOperation@Client@WSMan@@@Z +??0?$AutoRelease@VUserRecord@@@@QEAA@XZ +??0?$AutoRelease@VWSManHttpListener@@@@QEAA@PEAVWSManHttpListener@@@Z +??0?$AutoReleaseEx@VHostMappingTableEntry@@@@QEAA@XZ +??0?$AutoReleaseEx@VShell@Client@WSMan@@@@QEAA@PEAVShell@Client@WSMan@@@Z +??0?$ILoader@VAdminSid@CSecurity@@@@QEAA@P8AdminSid@CSecurity@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$ILoader@VEventHandler@WSMan@@@@QEAA@P8EventHandler@WSMan@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$ILoader@VInteractiveSid@CSecurity@@@@QEAA@P8InteractiveSid@CSecurity@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$ILoader@VIpHlpApiDllLoader@@@@QEAA@P8IpHlpApiDllLoader@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$ILoader@VMachineName@@@@QEAA@P8MachineName@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$ILoader@VNetworkServiceSid@CSecurity@@@@QEAA@P8NetworkServiceSid@CSecurity@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$ILoader@VNtDsApiDllLoader@@@@QEAA@P8NtDsApiDllLoader@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$ILoader@VResources@Locale@@@@QEAA@P8Resources@Locale@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$ILoader@VShell32DllLoader@@@@QEAA@P8Shell32DllLoader@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$ILoader@VShlWApiDllLoader@@@@QEAA@P8ShlWApiDllLoader@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$ILoader@VSubscriptionManager@@@@QEAA@P8SubscriptionManager@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$ILoader@VUser32DllLoader@@@@QEAA@P8User32DllLoader@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$ILoader@VWSManMemCryptManager@@@@QEAA@P8WSManMemCryptManager@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$Loader@VAdminSid@CSecurity@@$00@@QEAA@XZ +??0?$Loader@VEventHandler@WSMan@@$00@@QEAA@XZ +??0?$Loader@VInteractiveSid@CSecurity@@$00@@QEAA@XZ +??0?$Loader@VIpHlpApiDllLoader@@$00@@QEAA@XZ +??0?$Loader@VMachineName@@$00@@QEAA@XZ +??0?$Loader@VNetworkServiceSid@CSecurity@@$00@@QEAA@XZ +??0?$Loader@VNtDsApiDllLoader@@$00@@QEAA@XZ +??0?$Loader@VResources@Locale@@$0A@@@QEAA@XZ +??0?$Loader@VShell32DllLoader@@$00@@QEAA@XZ +??0?$Loader@VShlWApiDllLoader@@$00@@QEAA@XZ +??0?$Loader@VUser32DllLoader@@$00@@QEAA@XZ +??0?$Loader@VWSManMemCryptManager@@$00@@QEAA@XZ +??0?$LoaderSerializer@VAdminSid@CSecurity@@$00@@QEAA@P8AdminSid@CSecurity@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$LoaderSerializer@VEventHandler@WSMan@@$00@@QEAA@P8EventHandler@WSMan@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$LoaderSerializer@VInteractiveSid@CSecurity@@$00@@QEAA@P8InteractiveSid@CSecurity@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$LoaderSerializer@VIpHlpApiDllLoader@@$00@@QEAA@P8IpHlpApiDllLoader@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$LoaderSerializer@VMachineName@@$00@@QEAA@P8MachineName@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$LoaderSerializer@VNetworkServiceSid@CSecurity@@$00@@QEAA@P8NetworkServiceSid@CSecurity@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$LoaderSerializer@VNtDsApiDllLoader@@$00@@QEAA@P8NtDsApiDllLoader@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$LoaderSerializer@VResources@Locale@@$0A@@@QEAA@P8Resources@Locale@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$LoaderSerializer@VShell32DllLoader@@$00@@QEAA@P8Shell32DllLoader@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$LoaderSerializer@VShlWApiDllLoader@@$00@@QEAA@P8ShlWApiDllLoader@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$LoaderSerializer@VSubscriptionManager@@$01@@QEAA@P8SubscriptionManager@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$LoaderSerializer@VUser32DllLoader@@$00@@QEAA@P8User32DllLoader@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$LoaderSerializer@VWSManMemCryptManager@@$00@@QEAA@P8WSManMemCryptManager@@EAA_NAEAVIRequestContext@@@Z1@Z +??0?$PacketElement@K@PacketParser@@QEAA@XZ +??0?$PacketElement@PEAU_FWXML_ELEMENT@@@PacketParser@@QEAA@XZ +??0?$PacketElement@PEBG@PacketParser@@QEAA@XZ +??0?$PacketElement@_K@PacketParser@@QEAA@XZ +??0?$SafeMap@PEAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PEAVCCertMapping@@@@@@QEAA@XZ +??0?$SafeMap@PEAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@QEAA@XZ +??0?$SafeMap@PEAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PEAVCShellUriSettings@@@@@@QEAA@XZ +??0?$SafeMap@PEAXUEmpty@@V?$SafeSet_Iterator@PEAX@@@@QEAA@XZ +??0?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QEAA@XZ +??0?$SafeMap@UUserKey@@PEAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@@@QEAA@XZ +??0?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QEAA@XZ +??0?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QEAA@XZ +??0?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEAA@XZ +??0?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QEAA@XZ +??0?$SafeMap@VStringKeyStore@@PEAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@@@QEAA@XZ +??0?$SafeMap@VStringKeyStore@@PEAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@@@QEAA@XZ +??0?$SafeMap@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@QEAA@XZ +??0?$SafeMap@_KPEAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@@@QEAA@XZ +??0?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@QEAA@AEAV?$SafeMap@PEAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@@@_N@Z +??0?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@QEAA@AEAV?$SafeMap@PEAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@@@_N@Z +??0?$SafeMap_Iterator@PEAVCShellUriSettings@@UEmpty@@@@QEAA@AEAV?$SafeMap@PEAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PEAVCShellUriSettings@@UEmpty@@@@@@_N@Z +??0?$SafeMap_Iterator@PEAXUEmpty@@@@QEAA@AEAV?$SafeMap@PEAXUEmpty@@V?$SafeMap_Iterator@PEAXUEmpty@@@@@@_N@Z +??0?$SafeMap_Iterator@UPluginKey@@K@@QEAA@AEAV?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@_N@Z +??0?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@QEAA@AEAV?$SafeMap@UUserKey@@PEAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@@@_N@Z +??0?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QEAA@AEAV?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@_N@Z +??0?$SafeMap_Iterator@VKey@Locale@@K@@QEAA@AEAV?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@_N@Z +??0?$SafeMap_Iterator@VStringKeyCI@@K@@QEAA@AEAV?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@_N@Z +??0?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@QEAA@AEAV?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@_N@Z +??0?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@QEAA@AEAV?$SafeMap@VStringKeyStore@@PEAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@@@_N@Z +??0?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@QEAA@AEAV?$SafeMap@VStringKeyStore@@PEAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@@@_N@Z +??0?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@QEAA@AEAV?$SafeMap@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@_N@Z +??0?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@QEAA@AEAV?$SafeMap@_KPEAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@@@_N@Z +??0?$SafeMap_Lock@PEAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@@@QEAA@AEBV?$SafeMap@PEAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@@@_N@Z +??0?$SafeMap_Lock@PEAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PEAVCCertMapping@@@@@@QEAA@AEBV?$SafeMap@PEAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PEAVCCertMapping@@@@@@_N@Z +??0?$SafeMap_Lock@PEAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@@@QEAA@AEBV?$SafeMap@PEAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@@@_N@Z +??0?$SafeMap_Lock@PEAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@QEAA@AEBV?$SafeMap@PEAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@_N@Z +??0?$SafeMap_Lock@PEAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PEAVCShellUriSettings@@UEmpty@@@@@@QEAA@AEBV?$SafeMap@PEAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PEAVCShellUriSettings@@UEmpty@@@@@@_N@Z +??0?$SafeMap_Lock@PEAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PEAVCShellUriSettings@@@@@@QEAA@AEBV?$SafeMap@PEAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PEAVCShellUriSettings@@@@@@_N@Z +??0?$SafeMap_Lock@PEAXUEmpty@@V?$SafeMap_Iterator@PEAXUEmpty@@@@@@QEAA@AEBV?$SafeMap@PEAXUEmpty@@V?$SafeMap_Iterator@PEAXUEmpty@@@@@@_N@Z +??0?$SafeMap_Lock@PEAXUEmpty@@V?$SafeSet_Iterator@PEAX@@@@QEAA@AEBV?$SafeMap@PEAXUEmpty@@V?$SafeSet_Iterator@PEAX@@@@_N@Z +??0?$SafeMap_Lock@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QEAA@AEBV?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@_N@Z +??0?$SafeMap_Lock@UUserKey@@PEAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@@@QEAA@AEBV?$SafeMap@UUserKey@@PEAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@@@_N@Z +??0?$SafeMap_Lock@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QEAA@AEBV?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@_N@Z +??0?$SafeMap_Lock@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QEAA@AEBV?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@_N@Z +??0?$SafeMap_Lock@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEAA@AEBV?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@_N@Z +??0?$SafeMap_Lock@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@QEAA@AEBV?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@_N@Z +??0?$SafeMap_Lock@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QEAA@AEBV?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@_N@Z +??0?$SafeMap_Lock@VStringKeyStore@@PEAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@@@QEAA@AEBV?$SafeMap@VStringKeyStore@@PEAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@@@_N@Z +??0?$SafeMap_Lock@VStringKeyStore@@PEAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@@@QEAA@AEBV?$SafeMap@VStringKeyStore@@PEAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@@@_N@Z +??0?$SafeMap_Lock@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@QEAA@AEBV?$SafeMap@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@_N@Z +??0?$SafeMap_Lock@_KPEAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@@@QEAA@AEBV?$SafeMap@_KPEAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@@@_N@Z +??0?$SafeSet@PEAVCCertMapping@@@@QEAA@XZ +??0?$SafeSet@PEAVCListenerOperation@@@@QEAA@XZ +??0?$SafeSet@PEAVCShellUriSettings@@@@QEAA@XZ +??0?$SafeSet@PEAX@@QEAA@XZ +??0?$SafeSet_Iterator@PEAVCCertMapping@@@@QEAA@AEAV?$SafeMap@PEAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PEAVCCertMapping@@@@@@_N@Z +??0?$SafeSet_Iterator@PEAVCCertMapping@@@@QEAA@AEAV?$SafeSet@PEAVCCertMapping@@@@@Z +??0?$SafeSet_Iterator@PEAVCListenerOperation@@@@QEAA@AEAV?$SafeMap@PEAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@_N@Z +??0?$SafeSet_Iterator@PEAVCListenerOperation@@@@QEAA@AEAV?$SafeSet@PEAVCListenerOperation@@@@@Z +??0?$SafeSet_Iterator@PEAVCShellUriSettings@@@@QEAA@AEAV?$SafeMap@PEAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PEAVCShellUriSettings@@@@@@_N@Z +??0?$SafeSet_Iterator@PEAX@@QEAA@AEAV?$SafeMap@PEAXUEmpty@@V?$SafeSet_Iterator@PEAX@@@@_N@Z +??0?$SimpleQueue@T_LARGE_INTEGER@@@@QEAA@XZ +??0AutoBstr@@QEAA@PEAG@Z +??0AutoBstr@@QEAA@XZ +??0AutoBstrNoAlloc@@QEAA@PEAG@Z +??0AutoBstrNoAlloc@@QEAA@XZ +??0AutoCertContext@@QEAA@PEBU_CERT_CONTEXT@@@Z +??0AutoCertContext@@QEAA@XZ +??0AutoChainContext@@QEAA@PEBU_CERT_CHAIN_CONTEXT@@@Z +??0AutoChainContext@@QEAA@XZ +??0AutoCoTaskMemFree@@QEAA@PEAX@Z +??0AutoCoTaskMemFree@@QEAA@XZ +??0AutoFwXmlCloseParser@@QEAA@PEAX@Z +??0AutoFwXmlCloseParser@@QEAA@XZ +??0AutoHandle@@QEAA@PEAX@Z +??0AutoHandle@@QEAA@XZ +??0AutoImpersonateUser@@QEAA@PEAX@Z +??0AutoImpersonateUser@@QEAA@XZ +??0AutoLibrary@@QEAA@PEAUHINSTANCE__@@@Z +??0AutoLibrary@@QEAA@XZ +??0AutoLocalFree@@QEAA@PEAX@Z +??0AutoLocalFree@@QEAA@XZ +??0AutoMIClass@@QEAA@PEAU_MI_Class@@@Z +??0AutoMIClass@@QEAA@XZ +??0AutoMIInstance@@QEAA@PEAU_MI_Instance@@@Z +??0AutoMIInstance@@QEAA@XZ +??0AutoObject@@QEAA@PEAUWSMAN_OBJECT@@@Z +??0AutoObject@@QEAA@XZ +??0AutoRegKey@@QEAA@PEAUHKEY__@@@Z +??0AutoRegKey@@QEAA@XZ +??0AutoSecurityDescriptor@@QEAA@PEAX@Z +??0AutoSecurityDescriptor@@QEAA@XZ +??0AutoWaitHandle@@QEAA@PEAX@Z +??0AutoWaitHandle@@QEAA@XZ +??0BufferFormatter@@QEAA@PEAEK@Z +??0BufferFormatter@@QEAA@XZ +??0CBaseConfigCache@@IEAA@W4ConfigLocation@CConfigChangeSource@@PEAVFastLock@@PEAVCConfigCacheMap@0@@Z +??0CClientConfigCache@@AEAA@XZ +??0CConfigManager@@AEAA@XZ +??0CErrorContext@@QEAA@_N@Z +??0CRequestContext@@QEAA@PEBG@Z +??0CRequestContext@@QEAA@XZ +??0CResourceAlias@@QEAA@PEBG@Z +??0CServiceConfigCache@@AEAA@XZ +??0CServiceWatcher@CServiceConfigCache@@AEAA@PEAV1@PEAVIServiceConfigObserver@@@Z +??0CWSManCriticalSection@@QEAA@XZ +??0CWSManCriticalSectionWithConditionVar@@QEAA@XZ +??0CWSManEPR@@QEAA@H@Z +??0CWSManGroupPolicyManager@@AEAA@XZ +??0CWSManResource@@QEAA@H@Z +??0CWSManResourceNoResourceUri@@QEAA@H@Z +??0CWSManSecurityUI@@QEAA@XZ +??0CWinRSPluginConfigCache@@AEAA@XZ +??0ChildLifeTimeManager@@QEAA@AEBV0@@Z +??0ChildLifeTimeManager@@QEAA@XZ +??0CircularBufferFormatter@@QEAA@XZ +??0ConfigRegistry@@IEAA@XZ +??0EtwCorrelationHelper@@QEAA@AEBV0@@Z +??0EventHandler@WSMan@@QEAA@XZ +??0ExtendedSemantic@@QEAA@K@Z +??0FastLock@@QEAA@XZ +??0Fragment@PacketParser@@QEAA@XZ +??0IConfigChangeObserver@@QEAA@AEBV0@@Z +??0IConfigChangeObserver@@QEAA@XZ +??0ILifeTimeMgmt@@QEAA@AEBV0@@Z +??0ILifeTimeMgmt@@QEAA@XZ +??0IRequestContext@@IEAA@XZ +??0IWSManGroupPolicyObserver@@QEAA@AEBV0@@Z +??0IWSManGroupPolicyObserver@@QEAA@XZ +??0IWSManGroupPolicyPublisher@@QEAA@AEBV0@@Z +??0IWSManGroupPolicyPublisher@@QEAA@XZ +??0Locale@@QEAA@AEBV0@@Z +??0Locale@@QEAA@PEAVIRequestContext@@@Z +??0Locale@@QEAA@XZ +??0MessageId@PacketParser@@QEAA@XZ +??0NotUnderstandSoapHeader@PacketParser@@QEAA@XZ +??0OnHTTPInitialize@@QEAA@XZ +??0OperationId@PacketParser@@QEAA@XZ +??0OwnLock@@QEAA@AEAVFastLock@@@Z +??0PacketFormatter@@QEAA@XZ +??0PacketParser@@QEAA@XZ +??0RBUFFER@@QEAA@I@Z +??0RBUFFER@@QEAA@PEAEI@Z +??0ReferenceParameters@PacketParser@@QEAA@XZ +??0SBUFFER@@QEAA@XZ +??0SessionId@PacketParser@@QEAA@XZ +??0ShareLock@@QEAA@AEAVFastLock@@@Z +??0SoapSemanticConverter@@QEAA@XZ +??0TSTRBUFFER@@QEAA@XZ +??0UserAuthzRecord@@QEAA@$$QEAV0@@Z +??0UserAuthzRecord@@QEAA@AEBV0@@Z +??0UserAuthzRecord@@QEAA@XZ +??0UserRecord@@QEAA@XZ +??0XmlReader@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@D@@PEAD@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@G@@PEAG@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@UIPRange@CWSManIPFilter@@@@PEAUIPRange@CWSManIPFilter@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@U_SID@@@@PEAU_SID@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@PEAU_WSMAN_STREAM_ID_SET@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$Handle@VISubscription@@@@@@PEAV?$Handle@VISubscription@@@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PEAVCListenerConnect@@PEAV1@@@@@PEAV?$SafeMap_Iterator@PEAVCListenerConnect@@PEAV1@@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PEAVCListenerReceive@@PEAV1@@@@@PEAV?$SafeMap_Iterator@PEAVCListenerReceive@@PEAV1@@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PEAVCListenerSend@@PEAV1@@@@@PEAV?$SafeMap_Iterator@PEAVCListenerSend@@PEAV1@@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PEAVCListenerSignal@@PEAV1@@@@@PEAV?$SafeMap_Iterator@PEAVCListenerSignal@@PEAV1@@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VGuidKey@@PEAVCListenerCommand@@@@@@PEAV?$SafeMap_Iterator@VGuidKey@@PEAVCListenerCommand@@@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@PEAV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@PEAV?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PEAVCCertMapping@@@@@@PEAV?$SafeSet@PEAVCCertMapping@@@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PEAVCShellUriSettings@@@@@@PEAV?$SafeSet@PEAVCShellUriSettings@@@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@PEAV?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PEAVCollector@@@@@@PEAV?$SafeSet_Iterator@PEAVCollector@@@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PEAVHostOperation@@@@@@PEAV?$SafeSet_Iterator@PEAVHostOperation@@@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PEAVListenerSourceSubscription@@@@@@PEAV?$SafeSet_Iterator@PEAVListenerSourceSubscription@@@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SimpleStack@VCListenerOperation@@@@@@PEAV?$SimpleStack@VCListenerOperation@@@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SimpleStack@VShellHostEntry@@@@@@PEAV?$SimpleStack@VShellHostEntry@@@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$queue@PEAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$deque@PEAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$transport_allocator@PEAU_WSMAN_PUBLISHER_EVENT_STRUCT@@@@@std@@@std@@@@PEAV?$queue@PEAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$deque@PEAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$transport_allocator@PEAU_WSMAN_PUBLISHER_EVENT_STRUCT@@@@@std@@@std@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@@PEAV?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@PEAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$vector@PEAVCWSManRequest@@V?$transport_allocator@PEAVCWSManRequest@@@@@std@@@@PEAV?$vector@PEAVCWSManRequest@@V?$transport_allocator@PEAVCWSManRequest@@@@@std@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@@@PEAV?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$vector@PEAVIServiceConfigObserver@@V?$transport_allocator@PEAVIServiceConfigObserver@@@@@std@@@@PEAV?$vector@PEAVIServiceConfigObserver@@V?$transport_allocator@PEAVIServiceConfigObserver@@@@@std@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$vector@PEAVWSManHttpSenderConnection@@V?$transport_allocator@PEAVWSManHttpSenderConnection@@@@@std@@@@PEAV?$vector@PEAVWSManHttpSenderConnection@@V?$transport_allocator@PEAVWSManHttpSenderConnection@@@@@std@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VAdminSid@CSecurity@@@@PEAVAdminSid@CSecurity@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VBlockedRecord@@@@PEAVBlockedRecord@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VCBaseConfigCache@@@@PEAVCBaseConfigCache@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VCCertMapping@@@@PEAVCCertMapping@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VCConfigChangeSource@@@@PEAVCConfigChangeSource@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VCListenerSettings@@@@PEAVCListenerSettings@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VCObserverConfigChangeErrors@@@@PEAVCObserverConfigChangeErrors@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PEAVCServiceWatcher@CServiceConfigCache@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VCShellUriSettings@@@@PEAVCShellUriSettings@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VCWSManEPR@@@@PEAVCWSManEPR@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VCWSManResource@@@@PEAVCWSManResource@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VCertHash@@@@PEAVCertHash@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PEAVConfigUpdate@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VEventHandler@WSMan@@@@PEAVEventHandler@WSMan@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VExpiredOperationIdRecord@@@@PEAVExpiredOperationIdRecord@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VGPApiManager@@@@PEAVGPApiManager@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VIChannelObserverFactory@@@@PEAVIChannelObserverFactory@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PEAVIQueryDASHSMASHInterface@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PEAVISpecification@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VInteractiveSid@CSecurity@@@@PEAVInteractiveSid@CSecurity@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VIpHlpApiDllLoader@@@@PEAVIpHlpApiDllLoader@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VMachineName@@@@PEAVMachineName@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VMasterReceiveData@CListenerReceive@@@@PEAVMasterReceiveData@CListenerReceive@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VNetworkServiceSid@CSecurity@@@@PEAVNetworkServiceSid@CSecurity@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VNtDsApiDllLoader@@@@PEAVNtDsApiDllLoader@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VPacketCreator@@@@PEAVPacketCreator@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VPacketParser@@@@PEAVPacketParser@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VResources@Locale@@@@PEAVResources@Locale@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VRunAsConfiguration@@@@PEAVRunAsConfiguration@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VSecurityEntry@Catalog@@@@PEAVSecurityEntry@Catalog@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VSendPacketArgs@RobustConnectionBuffer@@@@PEAVSendPacketArgs@RobustConnectionBuffer@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VServiceSoapProcessor@@@@PEAVServiceSoapProcessor@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VShell32DllLoader@@@@PEAVShell32DllLoader@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VShlWApiDllLoader@@@@PEAVShlWApiDllLoader@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VSubscriptionEnumerator@@@@PEAVSubscriptionEnumerator@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VSubscriptionManager@@@@PEAVSubscriptionManager@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PEAVTSTRBUFFER@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VUniqueStringOverflow@@@@PEAVUniqueStringOverflow@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VUser32DllLoader@@@@PEAVUser32DllLoader@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@PEAVWSMANCONFIGTABLE_IDENTITY@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VWSManMemCryptManager@@@@PEAVWSManMemCryptManager@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PEAVWmiEnumContext@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PEAVXmlReader@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDeleteVector@$$CBG@@PEBG@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDeleteVector@D@@PEAD@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDeleteVector@E@@PEAE@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDeleteVector@G@@PEAG@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDeleteVector@H@@PEAH@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDeleteVector@PEAG@@PEAPEAG@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDeleteVector@PEBG@@PEAPEBG@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDeleteVector@U_CONFIG_UPDATE@@@@PEAU_CONFIG_UPDATE@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PEAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PEAU_WINRS_RUN_COMMAND_ARG@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDeleteVector@U_WSMAN_OPTION@@@@PEAU_WSMAN_OPTION@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoDeleteVector@X@@PEAX@@QEAA@XZ +??1?$AutoCleanup@V?$AutoFree@E@@PEAE@@QEAA@XZ +??1?$AutoCleanup@V?$AutoLocklessItemRecycle@VPacket@@@@PEAVPacket@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@UIAppHostAdminManager@@@@PEAUIAppHostAdminManager@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@UIAppHostChildElementCollection@@@@PEAUIAppHostChildElementCollection@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@UIAppHostConfigException@@@@PEAUIAppHostConfigException@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@UIAppHostElement@@@@PEAUIAppHostElement@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@UIAppHostElementCollection@@@@PEAUIAppHostElementCollection@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@UIAppHostProperty@@@@PEAUIAppHostProperty@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@UIAppHostPropertyCollection@@@@PEAUIAppHostPropertyCollection@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PEAUIClientSecurity@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PEAUIEnumWbemClassObject@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PEAUIErrorInfo@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PEAUIUnknown@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PEAUIWbemClassObject@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PEAUIWbemContext@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PEAUIWbemLocator@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PEAUIWbemObjectTextSrc@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PEAUIWbemPath@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PEAUIWbemPathKeyList@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PEAUIWbemQualifierSet@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PEAUIWbemQuery@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PEAUIWbemServices@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VApplication@Client@WSMan@@@@PEAVApplication@Client@WSMan@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCBaseConfigCache@@@@PEAVCBaseConfigCache@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCClientConfigCache@@@@PEAVCClientConfigCache@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PEAVCClientConfigSettings@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCCommonConfigSettings@@@@PEAVCCommonConfigSettings@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@PEAVCConfigCacheMap@CBaseConfigCache@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PEAVCConfigManager@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCListenerCommand@@@@PEAVCListenerCommand@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCListenerMasterOperation@@@@PEAVCListenerMasterOperation@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCListenerReceive@@@@PEAVCListenerReceive@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCListenerShell@@@@PEAVCListenerShell@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCRemoteOperation@@@@PEAVCRemoteOperation@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PEAVCRemoteSession@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PEAVCRequestContext@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCServiceCommonConfigSettings@@@@PEAVCServiceCommonConfigSettings@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCServiceConfigCache@@@@PEAVCServiceConfigCache@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCServiceConfigSettings@@@@PEAVCServiceConfigSettings@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PEAVCWSManEPR@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyCache@@@@PEAVCWSManGroupPolicyCache@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyManager@@@@PEAVCWSManGroupPolicyManager@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCWSManObject@@@@PEAVCWSManObject@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PEAVCWSManResource@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCWSManSession@@@@PEAVCWSManSession@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PEAVCWinRSPluginConfigCache@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigSettings@@@@PEAVCWinRSPluginConfigSettings@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCommand@Client@WSMan@@@@PEAVCommand@Client@WSMan@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VConfigNotification@@@@PEAVConfigNotification@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@PEAVConnectShellOperation@Client@WSMan@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@PEAVCreateShellOperation@Client@WSMan@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@PEAVDeleteShellOperation@Client@WSMan@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@PEAVDisconnectOperation@Client@WSMan@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VHostMappingTable@@@@PEAVHostMappingTable@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VIISConfigSettings@@@@PEAVIISConfigSettings@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VIPCSoapProcessor@@@@PEAVIPCSoapProcessor@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PEAVIRequestContext@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VISubscription@@@@PEAVISubscription@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PEAVInboundRequestDetails@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VProxyManager@Client@WSMan@@@@PEAVProxyManager@Client@WSMan@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VProxySelection@Client@WSMan@@@@PEAVProxySelection@Client@WSMan@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VPushSubscribeOperation@@@@PEAVPushSubscribeOperation@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VPushSubscription@@@@PEAVPushSubscription@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VReceiveOperation@Client@WSMan@@@@PEAVReceiveOperation@Client@WSMan@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VReconnectOperation@Client@WSMan@@@@PEAVReconnectOperation@Client@WSMan@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VSendOperation@Client@WSMan@@@@PEAVSendOperation@Client@WSMan@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PEAVShell@Client@WSMan@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VShellInfo@@@@PEAVShellInfo@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VSignalOperation@Client@WSMan@@@@PEAVSignalOperation@Client@WSMan@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VUserRecord@@@@PEAVUserRecord@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoRelease@VWSManHttpListener@@@@PEAVWSManHttpListener@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoReleaseEx@VHostMappingTableEntry@@@@PEAVHostMappingTableEntry@@@@QEAA@XZ +??1?$AutoCleanup@V?$AutoReleaseEx@VShell@Client@WSMan@@@@PEAVShell@Client@WSMan@@@@QEAA@XZ +??1?$AutoCleanup@VAutoBstr@@PEAG@@QEAA@XZ +??1?$AutoCleanup@VAutoBstrNoAlloc@@PEAG@@QEAA@XZ +??1?$AutoCleanup@VAutoCertContext@@PEBU_CERT_CONTEXT@@@@QEAA@XZ +??1?$AutoCleanup@VAutoChainContext@@PEBU_CERT_CHAIN_CONTEXT@@@@QEAA@XZ +??1?$AutoCleanup@VAutoCoTaskMemFree@@PEAX@@QEAA@XZ +??1?$AutoCleanup@VAutoFwXmlCloseParser@@PEAX@@QEAA@XZ +??1?$AutoCleanup@VAutoHandle@@PEAX@@QEAA@XZ +??1?$AutoCleanup@VAutoImpersonateUser@@PEAX@@QEAA@XZ +??1?$AutoCleanup@VAutoLibrary@@PEAUHINSTANCE__@@@@QEAA@XZ +??1?$AutoCleanup@VAutoLocalFree@@PEAX@@QEAA@XZ +??1?$AutoCleanup@VAutoMIClass@@PEAU_MI_Class@@@@QEAA@XZ +??1?$AutoCleanup@VAutoMIInstance@@PEAU_MI_Instance@@@@QEAA@XZ +??1?$AutoCleanup@VAutoObject@@PEAUWSMAN_OBJECT@@@@QEAA@XZ +??1?$AutoCleanup@VAutoRegKey@@PEAUHKEY__@@@@QEAA@XZ +??1?$AutoCleanup@VAutoSecurityDescriptor@@PEAX@@QEAA@XZ +??1?$AutoCleanup@VAutoWaitHandle@@PEAX@@QEAA@XZ +??1?$AutoDelete@D@@QEAA@XZ +??1?$AutoDelete@G@@QEAA@XZ +??1?$AutoDelete@UIPRange@CWSManIPFilter@@@@QEAA@XZ +??1?$AutoDelete@U_SID@@@@QEAA@XZ +??1?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@QEAA@XZ +??1?$AutoDelete@V?$Handle@VISubscription@@@@@@QEAA@XZ +??1?$AutoDelete@V?$SafeMap_Iterator@PEAVCListenerConnect@@PEAV1@@@@@QEAA@XZ +??1?$AutoDelete@V?$SafeMap_Iterator@PEAVCListenerReceive@@PEAV1@@@@@QEAA@XZ +??1?$AutoDelete@V?$SafeMap_Iterator@PEAVCListenerSend@@PEAV1@@@@@QEAA@XZ +??1?$AutoDelete@V?$SafeMap_Iterator@PEAVCListenerSignal@@PEAV1@@@@@QEAA@XZ +??1?$AutoDelete@V?$SafeMap_Iterator@VGuidKey@@PEAVCListenerCommand@@@@@@QEAA@XZ +??1?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEAA@XZ +??1?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@QEAA@XZ +??1?$AutoDelete@V?$SafeSet@PEAVCCertMapping@@@@@@QEAA@XZ +??1?$AutoDelete@V?$SafeSet@PEAVCShellUriSettings@@@@@@QEAA@XZ +??1?$AutoDelete@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@QEAA@XZ +??1?$AutoDelete@V?$SafeSet_Iterator@PEAVCollector@@@@@@QEAA@XZ +??1?$AutoDelete@V?$SafeSet_Iterator@PEAVHostOperation@@@@@@QEAA@XZ +??1?$AutoDelete@V?$SafeSet_Iterator@PEAVListenerSourceSubscription@@@@@@QEAA@XZ +??1?$AutoDelete@V?$SimpleStack@VCListenerOperation@@@@@@QEAA@XZ +??1?$AutoDelete@V?$SimpleStack@VShellHostEntry@@@@@@QEAA@XZ +??1?$AutoDelete@V?$queue@PEAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$deque@PEAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$transport_allocator@PEAU_WSMAN_PUBLISHER_EVENT_STRUCT@@@@@std@@@std@@@@QEAA@XZ +??1?$AutoDelete@V?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@@QEAA@XZ +??1?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@QEAA@XZ +??1?$AutoDelete@V?$vector@PEAVCWSManRequest@@V?$transport_allocator@PEAVCWSManRequest@@@@@std@@@@QEAA@XZ +??1?$AutoDelete@V?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@@@QEAA@XZ +??1?$AutoDelete@V?$vector@PEAVIServiceConfigObserver@@V?$transport_allocator@PEAVIServiceConfigObserver@@@@@std@@@@QEAA@XZ +??1?$AutoDelete@V?$vector@PEAVWSManHttpSenderConnection@@V?$transport_allocator@PEAVWSManHttpSenderConnection@@@@@std@@@@QEAA@XZ +??1?$AutoDelete@VAdminSid@CSecurity@@@@QEAA@XZ +??1?$AutoDelete@VBlockedRecord@@@@QEAA@XZ +??1?$AutoDelete@VCBaseConfigCache@@@@QEAA@XZ +??1?$AutoDelete@VCCertMapping@@@@QEAA@XZ +??1?$AutoDelete@VCConfigChangeSource@@@@QEAA@XZ +??1?$AutoDelete@VCListenerSettings@@@@QEAA@XZ +??1?$AutoDelete@VCObserverConfigChangeErrors@@@@QEAA@XZ +??1?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@QEAA@XZ +??1?$AutoDelete@VCShellUriSettings@@@@QEAA@XZ +??1?$AutoDelete@VCWSManEPR@@@@QEAA@XZ +??1?$AutoDelete@VCWSManResource@@@@QEAA@XZ +??1?$AutoDelete@VCertHash@@@@QEAA@XZ +??1?$AutoDelete@VConfigUpdate@@@@QEAA@XZ +??1?$AutoDelete@VEnumSinkEx@@@@QEAA@XZ +??1?$AutoDelete@VEventHandler@WSMan@@@@QEAA@XZ +??1?$AutoDelete@VExpiredOperationIdRecord@@@@QEAA@XZ +??1?$AutoDelete@VGPApiManager@@@@QEAA@XZ +??1?$AutoDelete@VGeneralSinkEx@@@@QEAA@XZ +??1?$AutoDelete@VIChannelObserverFactory@@@@QEAA@XZ +??1?$AutoDelete@VIQueryDASHSMASHInterface@@@@QEAA@XZ +??1?$AutoDelete@VISpecification@@@@QEAA@XZ +??1?$AutoDelete@VInteractiveSid@CSecurity@@@@QEAA@XZ +??1?$AutoDelete@VIpHlpApiDllLoader@@@@QEAA@XZ +??1?$AutoDelete@VMachineName@@@@QEAA@XZ +??1?$AutoDelete@VMasterReceiveData@CListenerReceive@@@@QEAA@XZ +??1?$AutoDelete@VNetworkServiceSid@CSecurity@@@@QEAA@XZ +??1?$AutoDelete@VNtDsApiDllLoader@@@@QEAA@XZ +??1?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@QEAA@XZ +??1?$AutoDelete@VPacketCreator@@@@QEAA@XZ +??1?$AutoDelete@VPacketParser@@@@QEAA@XZ +??1?$AutoDelete@VResources@Locale@@@@QEAA@XZ +??1?$AutoDelete@VRunAsConfiguration@@@@QEAA@XZ +??1?$AutoDelete@VSecurityEntry@Catalog@@@@QEAA@XZ +??1?$AutoDelete@VSendPacketArgs@RobustConnectionBuffer@@@@QEAA@XZ +??1?$AutoDelete@VServiceSoapProcessor@@@@QEAA@XZ +??1?$AutoDelete@VShell32DllLoader@@@@QEAA@XZ +??1?$AutoDelete@VShlWApiDllLoader@@@@QEAA@XZ +??1?$AutoDelete@VSubscriptionEnumerator@@@@QEAA@XZ +??1?$AutoDelete@VSubscriptionManager@@@@QEAA@XZ +??1?$AutoDelete@VTSTRBUFFER@@@@QEAA@XZ +??1?$AutoDelete@VUniqueStringOverflow@@@@QEAA@XZ +??1?$AutoDelete@VUser32DllLoader@@@@QEAA@XZ +??1?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@QEAA@XZ +??1?$AutoDelete@VWSManMemCryptManager@@@@QEAA@XZ +??1?$AutoDelete@VWmiEnumContext@@@@QEAA@XZ +??1?$AutoDelete@VXmlReader@@@@QEAA@XZ +??1?$AutoDeleteVector@$$CBG@@QEAA@XZ +??1?$AutoDeleteVector@D@@QEAA@XZ +??1?$AutoDeleteVector@E@@QEAA@XZ +??1?$AutoDeleteVector@G@@QEAA@XZ +??1?$AutoDeleteVector@H@@QEAA@XZ +??1?$AutoDeleteVector@PEAG@@QEAA@XZ +??1?$AutoDeleteVector@PEBG@@QEAA@XZ +??1?$AutoDeleteVector@U_CONFIG_UPDATE@@@@QEAA@XZ +??1?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QEAA@XZ +??1?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@QEAA@XZ +??1?$AutoDeleteVector@U_WSMAN_OPTION@@@@QEAA@XZ +??1?$AutoDeleteVector@X@@QEAA@XZ +??1?$AutoFree@E@@QEAA@XZ +??1?$AutoLocklessItemRecycle@VPacket@@@@QEAA@XZ +??1?$AutoRelease@UIAppHostAdminManager@@@@QEAA@XZ +??1?$AutoRelease@UIAppHostChildElementCollection@@@@QEAA@XZ +??1?$AutoRelease@UIAppHostConfigException@@@@QEAA@XZ +??1?$AutoRelease@UIAppHostElement@@@@QEAA@XZ +??1?$AutoRelease@UIAppHostElementCollection@@@@QEAA@XZ +??1?$AutoRelease@UIAppHostProperty@@@@QEAA@XZ +??1?$AutoRelease@UIAppHostPropertyCollection@@@@QEAA@XZ +??1?$AutoRelease@UIClientSecurity@@@@QEAA@XZ +??1?$AutoRelease@UIEnumWbemClassObject@@@@QEAA@XZ +??1?$AutoRelease@UIErrorInfo@@@@QEAA@XZ +??1?$AutoRelease@UIUnknown@@@@QEAA@XZ +??1?$AutoRelease@UIWbemClassObject@@@@QEAA@XZ +??1?$AutoRelease@UIWbemContext@@@@QEAA@XZ +??1?$AutoRelease@UIWbemLocator@@@@QEAA@XZ +??1?$AutoRelease@UIWbemObjectTextSrc@@@@QEAA@XZ +??1?$AutoRelease@UIWbemPath@@@@QEAA@XZ +??1?$AutoRelease@UIWbemPathKeyList@@@@QEAA@XZ +??1?$AutoRelease@UIWbemQualifierSet@@@@QEAA@XZ +??1?$AutoRelease@UIWbemQuery@@@@QEAA@XZ +??1?$AutoRelease@UIWbemServices@@@@QEAA@XZ +??1?$AutoRelease@VApplication@Client@WSMan@@@@QEAA@XZ +??1?$AutoRelease@VCBaseConfigCache@@@@QEAA@XZ +??1?$AutoRelease@VCClientConfigCache@@@@QEAA@XZ +??1?$AutoRelease@VCClientConfigSettings@@@@QEAA@XZ +??1?$AutoRelease@VCCommonConfigSettings@@@@QEAA@XZ +??1?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@QEAA@XZ +??1?$AutoRelease@VCConfigManager@@@@QEAA@XZ +??1?$AutoRelease@VCListenerCommand@@@@QEAA@XZ +??1?$AutoRelease@VCListenerMasterOperation@@@@QEAA@XZ +??1?$AutoRelease@VCListenerReceive@@@@QEAA@XZ +??1?$AutoRelease@VCListenerShell@@@@QEAA@XZ +??1?$AutoRelease@VCRemoteOperation@@@@QEAA@XZ +??1?$AutoRelease@VCRemoteSession@@@@QEAA@XZ +??1?$AutoRelease@VCRequestContext@@@@QEAA@XZ +??1?$AutoRelease@VCServiceCommonConfigSettings@@@@QEAA@XZ +??1?$AutoRelease@VCServiceConfigCache@@@@QEAA@XZ +??1?$AutoRelease@VCServiceConfigSettings@@@@QEAA@XZ +??1?$AutoRelease@VCWSManEPR@@@@QEAA@XZ +??1?$AutoRelease@VCWSManGroupPolicyCache@@@@QEAA@XZ +??1?$AutoRelease@VCWSManGroupPolicyManager@@@@QEAA@XZ +??1?$AutoRelease@VCWSManObject@@@@QEAA@XZ +??1?$AutoRelease@VCWSManResource@@@@QEAA@XZ +??1?$AutoRelease@VCWSManSession@@@@QEAA@XZ +??1?$AutoRelease@VCWinRSPluginConfigCache@@@@QEAA@XZ +??1?$AutoRelease@VCWinRSPluginConfigSettings@@@@QEAA@XZ +??1?$AutoRelease@VCommand@Client@WSMan@@@@QEAA@XZ +??1?$AutoRelease@VConfigNotification@@@@QEAA@XZ +??1?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@QEAA@XZ +??1?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@QEAA@XZ +??1?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@QEAA@XZ +??1?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@QEAA@XZ +??1?$AutoRelease@VEnumSinkEx@@@@QEAA@XZ +??1?$AutoRelease@VGeneralSinkEx@@@@QEAA@XZ +??1?$AutoRelease@VHostMappingTable@@@@QEAA@XZ +??1?$AutoRelease@VIISConfigSettings@@@@QEAA@XZ +??1?$AutoRelease@VIPCSoapProcessor@@@@QEAA@XZ +??1?$AutoRelease@VIRequestContext@@@@QEAA@XZ +??1?$AutoRelease@VISubscription@@@@QEAA@XZ +??1?$AutoRelease@VInboundRequestDetails@@@@QEAA@XZ +??1?$AutoRelease@VProxyManager@Client@WSMan@@@@QEAA@XZ +??1?$AutoRelease@VProxySelection@Client@WSMan@@@@QEAA@XZ +??1?$AutoRelease@VPushSubscribeOperation@@@@QEAA@XZ +??1?$AutoRelease@VPushSubscription@@@@QEAA@XZ +??1?$AutoRelease@VReceiveOperation@Client@WSMan@@@@QEAA@XZ +??1?$AutoRelease@VReconnectOperation@Client@WSMan@@@@QEAA@XZ +??1?$AutoRelease@VSendOperation@Client@WSMan@@@@QEAA@XZ +??1?$AutoRelease@VShell@Client@WSMan@@@@QEAA@XZ +??1?$AutoRelease@VShellInfo@@@@QEAA@XZ +??1?$AutoRelease@VSignalOperation@Client@WSMan@@@@QEAA@XZ +??1?$AutoRelease@VUserRecord@@@@QEAA@XZ +??1?$AutoRelease@VWSManHttpListener@@@@QEAA@XZ +??1?$AutoReleaseEx@VHostMappingTableEntry@@@@QEAA@XZ +??1?$AutoReleaseEx@VShell@Client@WSMan@@@@QEAA@XZ +??1?$ILoader@VAdminSid@CSecurity@@@@QEAA@XZ +??1?$ILoader@VEventHandler@WSMan@@@@QEAA@XZ +??1?$ILoader@VInteractiveSid@CSecurity@@@@QEAA@XZ +??1?$ILoader@VIpHlpApiDllLoader@@@@QEAA@XZ +??1?$ILoader@VMachineName@@@@QEAA@XZ +??1?$ILoader@VNetworkServiceSid@CSecurity@@@@QEAA@XZ +??1?$ILoader@VNtDsApiDllLoader@@@@QEAA@XZ +??1?$ILoader@VResources@Locale@@@@QEAA@XZ +??1?$ILoader@VShell32DllLoader@@@@QEAA@XZ +??1?$ILoader@VShlWApiDllLoader@@@@QEAA@XZ +??1?$ILoader@VSubscriptionManager@@@@QEAA@XZ +??1?$ILoader@VUser32DllLoader@@@@QEAA@XZ +??1?$ILoader@VWSManMemCryptManager@@@@QEAA@XZ +??1?$Loader@VAdminSid@CSecurity@@$00@@QEAA@XZ +??1?$Loader@VEventHandler@WSMan@@$00@@QEAA@XZ +??1?$Loader@VInteractiveSid@CSecurity@@$00@@QEAA@XZ +??1?$Loader@VIpHlpApiDllLoader@@$00@@QEAA@XZ +??1?$Loader@VMachineName@@$00@@QEAA@XZ +??1?$Loader@VNetworkServiceSid@CSecurity@@$00@@QEAA@XZ +??1?$Loader@VNtDsApiDllLoader@@$00@@QEAA@XZ +??1?$Loader@VResources@Locale@@$0A@@@QEAA@XZ +??1?$Loader@VShell32DllLoader@@$00@@QEAA@XZ +??1?$Loader@VShlWApiDllLoader@@$00@@QEAA@XZ +??1?$Loader@VSubscriptionManager@@$01@@QEAA@XZ +??1?$Loader@VUser32DllLoader@@$00@@QEAA@XZ +??1?$Loader@VWSManMemCryptManager@@$00@@QEAA@XZ +??1?$LoaderSerializer@VAdminSid@CSecurity@@$00@@QEAA@XZ +??1?$LoaderSerializer@VEventHandler@WSMan@@$00@@QEAA@XZ +??1?$LoaderSerializer@VInteractiveSid@CSecurity@@$00@@QEAA@XZ +??1?$LoaderSerializer@VIpHlpApiDllLoader@@$00@@QEAA@XZ +??1?$LoaderSerializer@VMachineName@@$00@@QEAA@XZ +??1?$LoaderSerializer@VNetworkServiceSid@CSecurity@@$00@@QEAA@XZ +??1?$LoaderSerializer@VNtDsApiDllLoader@@$00@@QEAA@XZ +??1?$LoaderSerializer@VResources@Locale@@$0A@@@QEAA@XZ +??1?$LoaderSerializer@VShell32DllLoader@@$00@@QEAA@XZ +??1?$LoaderSerializer@VShlWApiDllLoader@@$00@@QEAA@XZ +??1?$LoaderSerializer@VSubscriptionManager@@$01@@QEAA@XZ +??1?$LoaderSerializer@VUser32DllLoader@@$00@@QEAA@XZ +??1?$LoaderSerializer@VWSManMemCryptManager@@$00@@QEAA@XZ +??1?$SafeMap@PEAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PEAVCCertMapping@@@@@@QEAA@XZ +??1?$SafeMap@PEAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@QEAA@XZ +??1?$SafeMap@PEAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PEAVCShellUriSettings@@@@@@QEAA@XZ +??1?$SafeMap@PEAVCollector@@UEmpty@@V?$SafeSet_Iterator@PEAVCollector@@@@@@QEAA@XZ +??1?$SafeMap@PEAVHostOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVHostOperation@@@@@@QEAA@XZ +??1?$SafeMap@PEAVIOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVIOperation@@@@@@QEAA@XZ +??1?$SafeMap@PEAVListenerSourceSubscription@@UEmpty@@V?$SafeSet_Iterator@PEAVListenerSourceSubscription@@@@@@QEAA@XZ +??1?$SafeMap@PEAVPushSubscription@@UEmpty@@V?$SafeSet_Iterator@PEAVPushSubscription@@@@@@QEAA@XZ +??1?$SafeMap@PEAXUEmpty@@V?$SafeSet_Iterator@PEAX@@@@QEAA@XZ +??1?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QEAA@XZ +??1?$SafeMap@UUserKey@@PEAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@@@QEAA@XZ +??1?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QEAA@XZ +??1?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QEAA@XZ +??1?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEAA@XZ +??1?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@QEAA@XZ +??1?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QEAA@XZ +??1?$SafeMap@VStringKeyStore@@PEAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@@@QEAA@XZ +??1?$SafeMap@VStringKeyStore@@PEAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@@@QEAA@XZ +??1?$SafeMap@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@QEAA@XZ +??1?$SafeMap@_KPEAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@@@QEAA@XZ +??1?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@QEAA@XZ +??1?$SafeMap_Iterator@PEAVCListenerConnect@@PEAV1@@@QEAA@XZ +??1?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@QEAA@XZ +??1?$SafeMap_Iterator@PEAVCListenerReceive@@PEAV1@@@QEAA@XZ +??1?$SafeMap_Iterator@PEAVCListenerSend@@PEAV1@@@QEAA@XZ +??1?$SafeMap_Iterator@PEAVCListenerSignal@@PEAV1@@@QEAA@XZ +??1?$SafeMap_Iterator@PEAVCShellUriSettings@@UEmpty@@@@QEAA@XZ +??1?$SafeMap_Iterator@PEAVCollector@@UEmpty@@@@QEAA@XZ +??1?$SafeMap_Iterator@PEAVHostOperation@@UEmpty@@@@QEAA@XZ +??1?$SafeMap_Iterator@PEAVIOperation@@UEmpty@@@@QEAA@XZ +??1?$SafeMap_Iterator@PEAVListenerSourceSubscription@@UEmpty@@@@QEAA@XZ +??1?$SafeMap_Iterator@PEAVPushSubscription@@UEmpty@@@@QEAA@XZ +??1?$SafeMap_Iterator@PEAXUEmpty@@@@QEAA@XZ +??1?$SafeMap_Iterator@UPluginKey@@K@@QEAA@XZ +??1?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@QEAA@XZ +??1?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QEAA@XZ +??1?$SafeMap_Iterator@VGuidKey@@PEAVCListenerCommand@@@@QEAA@XZ +??1?$SafeMap_Iterator@VKey@Locale@@K@@QEAA@XZ +??1?$SafeMap_Iterator@VStringKeyCI@@K@@QEAA@XZ +??1?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@QEAA@XZ +??1?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@QEAA@XZ +??1?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@QEAA@XZ +??1?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@QEAA@XZ +??1?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@QEAA@XZ +??1?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@QEAA@XZ +??1?$SafeMap_Lock@PEAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@@@QEAA@XZ +??1?$SafeMap_Lock@PEAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PEAVCCertMapping@@@@@@QEAA@XZ +??1?$SafeMap_Lock@PEAVCListenerConnect@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerConnect@@PEAV1@@@@@QEAA@XZ +??1?$SafeMap_Lock@PEAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@@@QEAA@XZ +??1?$SafeMap_Lock@PEAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@QEAA@XZ +??1?$SafeMap_Lock@PEAVCListenerReceive@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerReceive@@PEAV1@@@@@QEAA@XZ +??1?$SafeMap_Lock@PEAVCListenerSend@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerSend@@PEAV1@@@@@QEAA@XZ +??1?$SafeMap_Lock@PEAVCListenerSignal@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerSignal@@PEAV1@@@@@QEAA@XZ +??1?$SafeMap_Lock@PEAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PEAVCShellUriSettings@@UEmpty@@@@@@QEAA@XZ +??1?$SafeMap_Lock@PEAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PEAVCShellUriSettings@@@@@@QEAA@XZ +??1?$SafeMap_Lock@PEAVCollector@@UEmpty@@V?$SafeMap_Iterator@PEAVCollector@@UEmpty@@@@@@QEAA@XZ +??1?$SafeMap_Lock@PEAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVHostOperation@@UEmpty@@@@@@QEAA@XZ +??1?$SafeMap_Lock@PEAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVIOperation@@UEmpty@@@@@@QEAA@XZ +??1?$SafeMap_Lock@PEAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PEAVListenerSourceSubscription@@UEmpty@@@@@@QEAA@XZ +??1?$SafeMap_Lock@PEAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PEAVPushSubscription@@UEmpty@@@@@@QEAA@XZ +??1?$SafeMap_Lock@PEAXUEmpty@@V?$SafeMap_Iterator@PEAXUEmpty@@@@@@QEAA@XZ +??1?$SafeMap_Lock@PEAXUEmpty@@V?$SafeSet_Iterator@PEAX@@@@QEAA@XZ +??1?$SafeMap_Lock@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QEAA@XZ +??1?$SafeMap_Lock@UUserKey@@PEAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@@@QEAA@XZ +??1?$SafeMap_Lock@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QEAA@XZ +??1?$SafeMap_Lock@VGuidKey@@PEAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PEAVCListenerCommand@@@@@@QEAA@XZ +??1?$SafeMap_Lock@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QEAA@XZ +??1?$SafeMap_Lock@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEAA@XZ +??1?$SafeMap_Lock@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@QEAA@XZ +??1?$SafeMap_Lock@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@QEAA@XZ +??1?$SafeMap_Lock@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QEAA@XZ +??1?$SafeMap_Lock@VStringKeyStore@@PEAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@@@QEAA@XZ +??1?$SafeMap_Lock@VStringKeyStore@@PEAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@@@QEAA@XZ +??1?$SafeMap_Lock@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@QEAA@XZ +??1?$SafeMap_Lock@_KPEAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@@@QEAA@XZ +??1?$SafeSet@PEAVCCertMapping@@@@QEAA@XZ +??1?$SafeSet@PEAVCListenerOperation@@@@QEAA@XZ +??1?$SafeSet@PEAVCShellUriSettings@@@@QEAA@XZ +??1?$SafeSet@PEAVCollector@@@@QEAA@XZ +??1?$SafeSet@PEAVHostOperation@@@@QEAA@XZ +??1?$SafeSet@PEAVIOperation@@@@QEAA@XZ +??1?$SafeSet@PEAVListenerSourceSubscription@@@@QEAA@XZ +??1?$SafeSet@PEAVPushSubscription@@@@QEAA@XZ +??1?$SafeSet@PEAX@@QEAA@XZ +??1?$SafeSet@VStringKeyCI@@@@QEAA@XZ +??1?$SafeSet_Iterator@PEAVCCertMapping@@@@QEAA@XZ +??1?$SafeSet_Iterator@PEAVCListenerOperation@@@@QEAA@XZ +??1?$SafeSet_Iterator@PEAVCShellUriSettings@@@@QEAA@XZ +??1?$SafeSet_Iterator@PEAVCollector@@@@QEAA@XZ +??1?$SafeSet_Iterator@PEAVHostOperation@@@@QEAA@XZ +??1?$SafeSet_Iterator@PEAVIOperation@@@@QEAA@XZ +??1?$SafeSet_Iterator@PEAVListenerSourceSubscription@@@@QEAA@XZ +??1?$SafeSet_Iterator@PEAVPushSubscription@@@@QEAA@XZ +??1?$SafeSet_Iterator@PEAX@@QEAA@XZ +??1?$SafeSet_Iterator@VStringKeyCI@@@@QEAA@XZ +??1?$SimpleQueue@T_LARGE_INTEGER@@@@QEAA@XZ +??1AutoBstr@@QEAA@XZ +??1AutoBstrNoAlloc@@QEAA@XZ +??1AutoCertContext@@QEAA@XZ +??1AutoChainContext@@QEAA@XZ +??1AutoCoTaskMemFree@@QEAA@XZ +??1AutoFwXmlCloseParser@@QEAA@XZ +??1AutoHandle@@QEAA@XZ +??1AutoImpersonateUser@@QEAA@XZ +??1AutoLibrary@@QEAA@XZ +??1AutoLocalFree@@QEAA@XZ +??1AutoMIClass@@QEAA@XZ +??1AutoMIInstance@@QEAA@XZ +??1AutoObject@@QEAA@XZ +??1AutoRegKey@@QEAA@XZ +??1AutoSecurityDescriptor@@QEAA@XZ +??1AutoWaitHandle@@QEAA@XZ +??1BufferFormatter@@UEAA@XZ +??1CBaseConfigCache@@UEAA@XZ +??1CClientConfigCache@@UEAA@XZ +??1CCommonConfigSettings@@UEAA@XZ +??1CConfigManager@@UEAA@XZ +??1CErrorContext@@UEAA@XZ +??1CRequestContext@@UEAA@XZ +??1CResourceAlias@@QEAA@XZ +??1CServiceConfigCache@@EEAA@XZ +??1CServiceWatcher@CServiceConfigCache@@QEAA@XZ +??1CWSManCriticalSection@@QEAA@XZ +??1CWSManCriticalSectionWithConditionVar@@QEAA@XZ +??1CWSManEPR@@UEAA@XZ +??1CWSManGroupPolicyManager@@EEAA@XZ +??1CWSManResource@@UEAA@XZ +??1CWSManResourceNoResourceUri@@UEAA@XZ +??1CWSManSecurityUI@@QEAA@XZ +??1CWinRSPluginConfigCache@@EEAA@XZ +??1ChildLifeTimeManager@@QEAA@XZ +??1CircularBufferFormatter@@UEAA@XZ +??1ConfigRegistry@@IEAA@XZ +??1EtwCorrelationHelper@@UEAA@XZ +??1EventHandler@WSMan@@QEAA@XZ +??1IConfigChangeObserver@@UEAA@XZ +??1ILifeTimeMgmt@@UEAA@XZ +??1IRequestContext@@UEAA@XZ +??1IWSManGroupPolicyObserver@@UEAA@XZ +??1IWSManGroupPolicyPublisher@@UEAA@XZ +??1MessageId@PacketParser@@QEAA@XZ +??1OnHTTPInitialize@@QEAA@XZ +??1OperationId@PacketParser@@QEAA@XZ +??1OwnLock@@QEAA@XZ +??1PacketParser@@QEAA@XZ +??1RBUFFER@@QEAA@XZ +??1ReferenceParameters@PacketParser@@QEAA@XZ +??1SBUFFER@@QEAA@XZ +??1ShareLock@@QEAA@XZ +??1SoapSemanticConverter@@QEAA@XZ +??1TSTRBUFFER@@QEAA@XZ +??1UserRecord@@QEAA@XZ +??1XmlReader@@QEAA@XZ +??4?$AutoCleanup@V?$AutoDelete@D@@PEAD@@QEAAAEAV?$AutoDelete@D@@PEAD@Z +??4?$AutoCleanup@V?$AutoDelete@G@@PEAG@@QEAAAEAV?$AutoDelete@G@@PEAG@Z +??4?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@PEAV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEAAAEAV?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@PEAV?$SafeMap_Iterator@VStringKeyCI@@K@@@Z +??4?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@PEAV?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@QEAAAEAV?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@PEAV?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@Z +??4?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PEAVCCertMapping@@@@@@PEAV?$SafeSet@PEAVCCertMapping@@@@@@QEAAAEAV?$AutoDelete@V?$SafeSet@PEAVCCertMapping@@@@@@PEAV?$SafeSet@PEAVCCertMapping@@@@@Z +??4?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PEAVCShellUriSettings@@@@@@PEAV?$SafeSet@PEAVCShellUriSettings@@@@@@QEAAAEAV?$AutoDelete@V?$SafeSet@PEAVCShellUriSettings@@@@@@PEAV?$SafeSet@PEAVCShellUriSettings@@@@@Z +??4?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@PEAV?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@QEAAAEAV?$AutoDelete@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@PEAV?$SafeSet_Iterator@PEAVCListenerOperation@@@@@Z +??4?$AutoCleanup@V?$AutoDelete@V?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@@PEAV?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@@QEAAAEAV?$AutoDelete@V?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@@PEAV?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@Z +??4?$AutoCleanup@V?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@PEAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@QEAAAEAV?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@PEAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@Z +??4?$AutoCleanup@V?$AutoDelete@V?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@@@PEAV?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@@@QEAAAEAV?$AutoDelete@V?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@@@PEAV?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@@Z +??4?$AutoCleanup@V?$AutoDelete@V?$vector@PEAVIServiceConfigObserver@@V?$transport_allocator@PEAVIServiceConfigObserver@@@@@std@@@@PEAV?$vector@PEAVIServiceConfigObserver@@V?$transport_allocator@PEAVIServiceConfigObserver@@@@@std@@@@QEAAAEAV?$AutoDelete@V?$vector@PEAVIServiceConfigObserver@@V?$transport_allocator@PEAVIServiceConfigObserver@@@@@std@@@@PEAV?$vector@PEAVIServiceConfigObserver@@V?$transport_allocator@PEAVIServiceConfigObserver@@@@@std@@@Z +??4?$AutoCleanup@V?$AutoDelete@VBlockedRecord@@@@PEAVBlockedRecord@@@@QEAAAEAV?$AutoDelete@VBlockedRecord@@@@PEAVBlockedRecord@@@Z +??4?$AutoCleanup@V?$AutoDelete@VCConfigChangeSource@@@@PEAVCConfigChangeSource@@@@QEAAAEAV?$AutoDelete@VCConfigChangeSource@@@@PEAVCConfigChangeSource@@@Z +??4?$AutoCleanup@V?$AutoDelete@VCObserverConfigChangeErrors@@@@PEAVCObserverConfigChangeErrors@@@@QEAAAEAV?$AutoDelete@VCObserverConfigChangeErrors@@@@PEAVCObserverConfigChangeErrors@@@Z +??4?$AutoCleanup@V?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PEAVCServiceWatcher@CServiceConfigCache@@@@QEAAAEAV?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PEAVCServiceWatcher@CServiceConfigCache@@@Z +??4?$AutoCleanup@V?$AutoDelete@VCWSManResource@@@@PEAVCWSManResource@@@@QEAAAEAV?$AutoDelete@VCWSManResource@@@@PEAVCWSManResource@@@Z +??4?$AutoCleanup@V?$AutoDelete@VCertHash@@@@PEAVCertHash@@@@QEAAAEAV?$AutoDelete@VCertHash@@@@PEAVCertHash@@@Z +??4?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PEAVConfigUpdate@@@@QEAAAEAV?$AutoDelete@VConfigUpdate@@@@PEAVConfigUpdate@@@Z +??4?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@QEAAAEAV?$AutoDelete@VEnumSinkEx@@@@PEAVEnumSinkEx@@@Z +??4?$AutoCleanup@V?$AutoDelete@VGPApiManager@@@@PEAVGPApiManager@@@@QEAAAEAV?$AutoDelete@VGPApiManager@@@@PEAVGPApiManager@@@Z +??4?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@QEAAAEAV?$AutoDelete@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@Z +??4?$AutoCleanup@V?$AutoDelete@VIChannelObserverFactory@@@@PEAVIChannelObserverFactory@@@@QEAAAEAV?$AutoDelete@VIChannelObserverFactory@@@@PEAVIChannelObserverFactory@@@Z +??4?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PEAVIQueryDASHSMASHInterface@@@@QEAAAEAV?$AutoDelete@VIQueryDASHSMASHInterface@@@@PEAVIQueryDASHSMASHInterface@@@Z +??4?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PEAVISpecification@@@@QEAAAEAV?$AutoDelete@VISpecification@@@@PEAVISpecification@@@Z +??4?$AutoCleanup@V?$AutoDelete@VPacketCreator@@@@PEAVPacketCreator@@@@QEAAAEAV?$AutoDelete@VPacketCreator@@@@PEAVPacketCreator@@@Z +??4?$AutoCleanup@V?$AutoDelete@VPacketParser@@@@PEAVPacketParser@@@@QEAAAEAV?$AutoDelete@VPacketParser@@@@PEAVPacketParser@@@Z +??4?$AutoCleanup@V?$AutoDelete@VRunAsConfiguration@@@@PEAVRunAsConfiguration@@@@QEAAAEAV?$AutoDelete@VRunAsConfiguration@@@@PEAVRunAsConfiguration@@@Z +??4?$AutoCleanup@V?$AutoDelete@VSecurityEntry@Catalog@@@@PEAVSecurityEntry@Catalog@@@@QEAAAEAV?$AutoDelete@VSecurityEntry@Catalog@@@@PEAVSecurityEntry@Catalog@@@Z +??4?$AutoCleanup@V?$AutoDelete@VServiceSoapProcessor@@@@PEAVServiceSoapProcessor@@@@QEAAAEAV?$AutoDelete@VServiceSoapProcessor@@@@PEAVServiceSoapProcessor@@@Z +??4?$AutoCleanup@V?$AutoDelete@VSubscriptionEnumerator@@@@PEAVSubscriptionEnumerator@@@@QEAAAEAV?$AutoDelete@VSubscriptionEnumerator@@@@PEAVSubscriptionEnumerator@@@Z +??4?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PEAVTSTRBUFFER@@@@QEAAAEAV?$AutoDelete@VTSTRBUFFER@@@@PEAVTSTRBUFFER@@@Z +??4?$AutoCleanup@V?$AutoDelete@VUniqueStringOverflow@@@@PEAVUniqueStringOverflow@@@@QEAAAEAV?$AutoDelete@VUniqueStringOverflow@@@@PEAVUniqueStringOverflow@@@Z +??4?$AutoCleanup@V?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@PEAVWSMANCONFIGTABLE_IDENTITY@@@@QEAAAEAV?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@PEAVWSMANCONFIGTABLE_IDENTITY@@@Z +??4?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PEAVWmiEnumContext@@@@QEAAAEAV?$AutoDelete@VWmiEnumContext@@@@PEAVWmiEnumContext@@@Z +??4?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PEAVXmlReader@@@@QEAAAEAV?$AutoDelete@VXmlReader@@@@PEAVXmlReader@@@Z +??4?$AutoCleanup@V?$AutoDeleteVector@$$CBG@@PEBG@@QEAAAEAV?$AutoDeleteVector@$$CBG@@PEBG@Z +??4?$AutoCleanup@V?$AutoDeleteVector@D@@PEAD@@QEAAAEAV?$AutoDeleteVector@D@@PEAD@Z +??4?$AutoCleanup@V?$AutoDeleteVector@E@@PEAE@@QEAAAEAV?$AutoDeleteVector@E@@PEAE@Z +??4?$AutoCleanup@V?$AutoDeleteVector@G@@PEAG@@QEAAAEAV?$AutoDeleteVector@G@@PEAG@Z +??4?$AutoCleanup@V?$AutoDeleteVector@PEAG@@PEAPEAG@@QEAAAEAV?$AutoDeleteVector@PEAG@@PEAPEAG@Z +??4?$AutoCleanup@V?$AutoDeleteVector@PEBG@@PEAPEBG@@QEAAAEAV?$AutoDeleteVector@PEBG@@PEAPEBG@Z +??4?$AutoCleanup@V?$AutoDeleteVector@U_CONFIG_UPDATE@@@@PEAU_CONFIG_UPDATE@@@@QEAAAEAV?$AutoDeleteVector@U_CONFIG_UPDATE@@@@PEAU_CONFIG_UPDATE@@@Z +??4?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PEAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QEAAAEAV?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PEAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@Z +??4?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PEAU_WINRS_RUN_COMMAND_ARG@@@@QEAAAEAV?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PEAU_WINRS_RUN_COMMAND_ARG@@@Z +??4?$AutoCleanup@V?$AutoDeleteVector@U_WSMAN_OPTION@@@@PEAU_WSMAN_OPTION@@@@QEAAAEAV?$AutoDeleteVector@U_WSMAN_OPTION@@@@PEAU_WSMAN_OPTION@@@Z +??4?$AutoCleanup@V?$AutoDeleteVector@X@@PEAX@@QEAAAEAV?$AutoDeleteVector@X@@PEAX@Z +??4?$AutoCleanup@V?$AutoFree@E@@PEAE@@QEAAAEAV?$AutoFree@E@@PEAE@Z +??4?$AutoCleanup@V?$AutoLocklessItemRecycle@VPacket@@@@PEAVPacket@@@@QEAAAEAV?$AutoLocklessItemRecycle@VPacket@@@@PEAVPacket@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PEAUIClientSecurity@@@@QEAAAEAV?$AutoRelease@UIClientSecurity@@@@PEAUIClientSecurity@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PEAUIEnumWbemClassObject@@@@QEAAAEAV?$AutoRelease@UIEnumWbemClassObject@@@@PEAUIEnumWbemClassObject@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PEAUIErrorInfo@@@@QEAAAEAV?$AutoRelease@UIErrorInfo@@@@PEAUIErrorInfo@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PEAUIUnknown@@@@QEAAAEAV?$AutoRelease@UIUnknown@@@@PEAUIUnknown@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PEAUIWbemClassObject@@@@QEAAAEAV?$AutoRelease@UIWbemClassObject@@@@PEAUIWbemClassObject@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PEAUIWbemContext@@@@QEAAAEAV?$AutoRelease@UIWbemContext@@@@PEAUIWbemContext@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PEAUIWbemLocator@@@@QEAAAEAV?$AutoRelease@UIWbemLocator@@@@PEAUIWbemLocator@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PEAUIWbemObjectTextSrc@@@@QEAAAEAV?$AutoRelease@UIWbemObjectTextSrc@@@@PEAUIWbemObjectTextSrc@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PEAUIWbemPath@@@@QEAAAEAV?$AutoRelease@UIWbemPath@@@@PEAUIWbemPath@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PEAUIWbemPathKeyList@@@@QEAAAEAV?$AutoRelease@UIWbemPathKeyList@@@@PEAUIWbemPathKeyList@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PEAUIWbemQualifierSet@@@@QEAAAEAV?$AutoRelease@UIWbemQualifierSet@@@@PEAUIWbemQualifierSet@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PEAUIWbemQuery@@@@QEAAAEAV?$AutoRelease@UIWbemQuery@@@@PEAUIWbemQuery@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PEAUIWbemServices@@@@QEAAAEAV?$AutoRelease@UIWbemServices@@@@PEAUIWbemServices@@@Z +??4?$AutoCleanup@V?$AutoRelease@VApplication@Client@WSMan@@@@PEAVApplication@Client@WSMan@@@@QEAAAEAV?$AutoRelease@VApplication@Client@WSMan@@@@PEAVApplication@Client@WSMan@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCBaseConfigCache@@@@PEAVCBaseConfigCache@@@@QEAAAEAV?$AutoRelease@VCBaseConfigCache@@@@PEAVCBaseConfigCache@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PEAVCClientConfigSettings@@@@QEAAAEAV?$AutoRelease@VCClientConfigSettings@@@@PEAVCClientConfigSettings@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCCommonConfigSettings@@@@PEAVCCommonConfigSettings@@@@QEAAAEAV?$AutoRelease@VCCommonConfigSettings@@@@PEAVCCommonConfigSettings@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@PEAVCConfigCacheMap@CBaseConfigCache@@@@QEAAAEAV?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@PEAVCConfigCacheMap@CBaseConfigCache@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PEAVCConfigManager@@@@QEAAAEAV?$AutoRelease@VCConfigManager@@@@PEAVCConfigManager@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCRemoteOperation@@@@PEAVCRemoteOperation@@@@QEAAAEAV?$AutoRelease@VCRemoteOperation@@@@PEAVCRemoteOperation@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PEAVCRemoteSession@@@@QEAAAEAV?$AutoRelease@VCRemoteSession@@@@PEAVCRemoteSession@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PEAVCRequestContext@@@@QEAAAEAV?$AutoRelease@VCRequestContext@@@@PEAVCRequestContext@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCServiceCommonConfigSettings@@@@PEAVCServiceCommonConfigSettings@@@@QEAAAEAV?$AutoRelease@VCServiceCommonConfigSettings@@@@PEAVCServiceCommonConfigSettings@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCServiceConfigCache@@@@PEAVCServiceConfigCache@@@@QEAAAEAV?$AutoRelease@VCServiceConfigCache@@@@PEAVCServiceConfigCache@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCServiceConfigSettings@@@@PEAVCServiceConfigSettings@@@@QEAAAEAV?$AutoRelease@VCServiceConfigSettings@@@@PEAVCServiceConfigSettings@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PEAVCWSManEPR@@@@QEAAAEAV?$AutoRelease@VCWSManEPR@@@@PEAVCWSManEPR@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyManager@@@@PEAVCWSManGroupPolicyManager@@@@QEAAAEAV?$AutoRelease@VCWSManGroupPolicyManager@@@@PEAVCWSManGroupPolicyManager@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PEAVCWSManResource@@@@QEAAAEAV?$AutoRelease@VCWSManResource@@@@PEAVCWSManResource@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PEAVCWinRSPluginConfigCache@@@@QEAAAEAV?$AutoRelease@VCWinRSPluginConfigCache@@@@PEAVCWinRSPluginConfigCache@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigSettings@@@@PEAVCWinRSPluginConfigSettings@@@@QEAAAEAV?$AutoRelease@VCWinRSPluginConfigSettings@@@@PEAVCWinRSPluginConfigSettings@@@Z +??4?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@QEAAAEAV?$AutoRelease@VEnumSinkEx@@@@PEAVEnumSinkEx@@@Z +??4?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@QEAAAEAV?$AutoRelease@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@Z +??4?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PEAVIRequestContext@@@@QEAAAEAV?$AutoRelease@VIRequestContext@@@@PEAVIRequestContext@@@Z +??4?$AutoCleanup@V?$AutoRelease@VISubscription@@@@PEAVISubscription@@@@QEAAAEAV?$AutoRelease@VISubscription@@@@PEAVISubscription@@@Z +??4?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PEAVInboundRequestDetails@@@@QEAAAEAV?$AutoRelease@VInboundRequestDetails@@@@PEAVInboundRequestDetails@@@Z +??4?$AutoCleanup@V?$AutoRelease@VUserRecord@@@@PEAVUserRecord@@@@QEAAAEAV?$AutoRelease@VUserRecord@@@@PEAVUserRecord@@@Z +??4?$AutoCleanup@V?$AutoRelease@VWSManHttpListener@@@@PEAVWSManHttpListener@@@@QEAAAEAV?$AutoRelease@VWSManHttpListener@@@@PEAVWSManHttpListener@@@Z +??4?$AutoCleanup@V?$AutoReleaseEx@VShell@Client@WSMan@@@@PEAVShell@Client@WSMan@@@@QEAAAEAV?$AutoReleaseEx@VShell@Client@WSMan@@@@PEAVShell@Client@WSMan@@@Z +??4?$AutoCleanup@VAutoBstr@@PEAG@@QEAAAEAVAutoBstr@@PEAG@Z +??4?$AutoCleanup@VAutoBstrNoAlloc@@PEAG@@QEAAAEAVAutoBstrNoAlloc@@PEAG@Z +??4?$AutoCleanup@VAutoCertContext@@PEBU_CERT_CONTEXT@@@@QEAAAEAVAutoCertContext@@PEBU_CERT_CONTEXT@@@Z +??4?$AutoCleanup@VAutoChainContext@@PEBU_CERT_CHAIN_CONTEXT@@@@QEAAAEAVAutoChainContext@@PEBU_CERT_CHAIN_CONTEXT@@@Z +??4?$AutoCleanup@VAutoCoTaskMemFree@@PEAX@@QEAAAEAVAutoCoTaskMemFree@@PEAX@Z +??4?$AutoCleanup@VAutoFwXmlCloseParser@@PEAX@@QEAAAEAVAutoFwXmlCloseParser@@PEAX@Z +??4?$AutoCleanup@VAutoHandle@@PEAX@@QEAAAEAVAutoHandle@@PEAX@Z +??4?$AutoCleanup@VAutoImpersonateUser@@PEAX@@QEAAAEAVAutoImpersonateUser@@PEAX@Z +??4?$AutoCleanup@VAutoLibrary@@PEAUHINSTANCE__@@@@QEAAAEAVAutoLibrary@@PEAUHINSTANCE__@@@Z +??4?$AutoCleanup@VAutoLocalFree@@PEAX@@QEAAAEAVAutoLocalFree@@PEAX@Z +??4?$AutoCleanup@VAutoMIClass@@PEAU_MI_Class@@@@QEAAAEAVAutoMIClass@@PEAU_MI_Class@@@Z +??4?$AutoCleanup@VAutoMIInstance@@PEAU_MI_Instance@@@@QEAAAEAVAutoMIInstance@@PEAU_MI_Instance@@@Z +??4?$AutoCleanup@VAutoObject@@PEAUWSMAN_OBJECT@@@@QEAAAEAVAutoObject@@PEAUWSMAN_OBJECT@@@Z +??4?$AutoCleanup@VAutoRegKey@@PEAUHKEY__@@@@QEAAAEAVAutoRegKey@@PEAUHKEY__@@@Z +??4?$AutoCleanup@VAutoSecurityDescriptor@@PEAX@@QEAAAEAVAutoSecurityDescriptor@@PEAX@Z +??4?$AutoCleanup@VAutoWaitHandle@@PEAX@@QEAAAEAVAutoWaitHandle@@PEAX@Z +??4?$AutoDelete@D@@QEAAAEAV0@PEAD@Z +??4?$AutoDelete@G@@QEAAAEAV0@PEAG@Z +??4?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEAAAEAV0@PEAV?$SafeMap_Iterator@VStringKeyCI@@K@@@Z +??4?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@QEAAAEAV0@PEAV?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@Z +??4?$AutoDelete@V?$SafeSet@PEAVCCertMapping@@@@@@QEAAAEAV0@PEAV?$SafeSet@PEAVCCertMapping@@@@@Z +??4?$AutoDelete@V?$SafeSet@PEAVCShellUriSettings@@@@@@QEAAAEAV0@PEAV?$SafeSet@PEAVCShellUriSettings@@@@@Z +??4?$AutoDelete@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@QEAAAEAV0@PEAV?$SafeSet_Iterator@PEAVCListenerOperation@@@@@Z +??4?$AutoDelete@V?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@@QEAAAEAV0@PEAV?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@Z +??4?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@QEAAAEAV0@PEAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@Z +??4?$AutoDelete@V?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@@@QEAAAEAV0@PEAV?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@@Z +??4?$AutoDelete@V?$vector@PEAVIServiceConfigObserver@@V?$transport_allocator@PEAVIServiceConfigObserver@@@@@std@@@@QEAAAEAV0@PEAV?$vector@PEAVIServiceConfigObserver@@V?$transport_allocator@PEAVIServiceConfigObserver@@@@@std@@@Z +??4?$AutoDelete@VBlockedRecord@@@@QEAAAEAV0@PEAVBlockedRecord@@@Z +??4?$AutoDelete@VCConfigChangeSource@@@@QEAAAEAV0@PEAVCConfigChangeSource@@@Z +??4?$AutoDelete@VCObserverConfigChangeErrors@@@@QEAAAEAV0@PEAVCObserverConfigChangeErrors@@@Z +??4?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@QEAAAEAV0@PEAVCServiceWatcher@CServiceConfigCache@@@Z +??4?$AutoDelete@VCWSManResource@@@@QEAAAEAV0@PEAVCWSManResource@@@Z +??4?$AutoDelete@VCertHash@@@@QEAAAEAV0@PEAVCertHash@@@Z +??4?$AutoDelete@VConfigUpdate@@@@QEAAAEAV0@PEAVConfigUpdate@@@Z +??4?$AutoDelete@VEnumSinkEx@@@@QEAAAEAV0@PEAVEnumSinkEx@@@Z +??4?$AutoDelete@VGPApiManager@@@@QEAAAEAV0@PEAVGPApiManager@@@Z +??4?$AutoDelete@VGeneralSinkEx@@@@QEAAAEAV0@PEAVGeneralSinkEx@@@Z +??4?$AutoDelete@VIChannelObserverFactory@@@@QEAAAEAV0@PEAVIChannelObserverFactory@@@Z +??4?$AutoDelete@VIQueryDASHSMASHInterface@@@@QEAAAEAV0@PEAVIQueryDASHSMASHInterface@@@Z +??4?$AutoDelete@VISpecification@@@@QEAAAEAV0@PEAVISpecification@@@Z +??4?$AutoDelete@VPacketCreator@@@@QEAAAEAV0@PEAVPacketCreator@@@Z +??4?$AutoDelete@VPacketParser@@@@QEAAAEAV0@PEAVPacketParser@@@Z +??4?$AutoDelete@VRunAsConfiguration@@@@QEAAAEAV0@PEAVRunAsConfiguration@@@Z +??4?$AutoDelete@VSecurityEntry@Catalog@@@@QEAAAEAV0@PEAVSecurityEntry@Catalog@@@Z +??4?$AutoDelete@VServiceSoapProcessor@@@@QEAAAEAV0@PEAVServiceSoapProcessor@@@Z +??4?$AutoDelete@VSubscriptionEnumerator@@@@QEAAAEAV0@PEAVSubscriptionEnumerator@@@Z +??4?$AutoDelete@VTSTRBUFFER@@@@QEAAAEAV0@PEAVTSTRBUFFER@@@Z +??4?$AutoDelete@VUniqueStringOverflow@@@@QEAAAEAV0@PEAVUniqueStringOverflow@@@Z +??4?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@QEAAAEAV0@PEAVWSMANCONFIGTABLE_IDENTITY@@@Z +??4?$AutoDelete@VWmiEnumContext@@@@QEAAAEAV0@PEAVWmiEnumContext@@@Z +??4?$AutoDelete@VXmlReader@@@@QEAAAEAV0@PEAVXmlReader@@@Z +??4?$AutoDeleteVector@$$CBG@@QEAAAEAV0@PEBG@Z +??4?$AutoDeleteVector@D@@QEAAAEAV0@PEAD@Z +??4?$AutoDeleteVector@E@@QEAAAEAV0@PEAE@Z +??4?$AutoDeleteVector@G@@QEAAAEAV0@PEAG@Z +??4?$AutoDeleteVector@PEAG@@QEAAAEAV0@PEAPEAG@Z +??4?$AutoDeleteVector@PEBG@@QEAAAEAV0@PEAPEBG@Z +??4?$AutoDeleteVector@U_CONFIG_UPDATE@@@@QEAAAEAV0@PEAU_CONFIG_UPDATE@@@Z +??4?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QEAAAEAV0@PEAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@Z +??4?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@QEAAAEAV0@PEAU_WINRS_RUN_COMMAND_ARG@@@Z +??4?$AutoDeleteVector@U_WSMAN_OPTION@@@@QEAAAEAV0@PEAU_WSMAN_OPTION@@@Z +??4?$AutoDeleteVector@X@@QEAAAEAV0@PEAX@Z +??4?$AutoFree@E@@QEAAAEAV0@PEAE@Z +??4?$AutoLocklessItemRecycle@VPacket@@@@QEAAAEAV0@PEAVPacket@@@Z +??4?$AutoRelease@UIClientSecurity@@@@QEAAAEAV0@PEAUIClientSecurity@@@Z +??4?$AutoRelease@UIEnumWbemClassObject@@@@QEAAAEAV0@PEAUIEnumWbemClassObject@@@Z +??4?$AutoRelease@UIErrorInfo@@@@QEAAAEAV0@PEAUIErrorInfo@@@Z +??4?$AutoRelease@UIUnknown@@@@QEAAAEAV0@PEAUIUnknown@@@Z +??4?$AutoRelease@UIWbemClassObject@@@@QEAAAEAV0@PEAUIWbemClassObject@@@Z +??4?$AutoRelease@UIWbemContext@@@@QEAAAEAV0@PEAUIWbemContext@@@Z +??4?$AutoRelease@UIWbemLocator@@@@QEAAAEAV0@PEAUIWbemLocator@@@Z +??4?$AutoRelease@UIWbemObjectTextSrc@@@@QEAAAEAV0@PEAUIWbemObjectTextSrc@@@Z +??4?$AutoRelease@UIWbemPath@@@@QEAAAEAV0@PEAUIWbemPath@@@Z +??4?$AutoRelease@UIWbemPathKeyList@@@@QEAAAEAV0@PEAUIWbemPathKeyList@@@Z +??4?$AutoRelease@UIWbemQualifierSet@@@@QEAAAEAV0@PEAUIWbemQualifierSet@@@Z +??4?$AutoRelease@UIWbemQuery@@@@QEAAAEAV0@PEAUIWbemQuery@@@Z +??4?$AutoRelease@UIWbemServices@@@@QEAAAEAV0@PEAUIWbemServices@@@Z +??4?$AutoRelease@VApplication@Client@WSMan@@@@QEAAAEAV0@PEAVApplication@Client@WSMan@@@Z +??4?$AutoRelease@VCBaseConfigCache@@@@QEAAAEAV0@PEAVCBaseConfigCache@@@Z +??4?$AutoRelease@VCClientConfigSettings@@@@QEAAAEAV0@PEAVCClientConfigSettings@@@Z +??4?$AutoRelease@VCCommonConfigSettings@@@@QEAAAEAV0@PEAVCCommonConfigSettings@@@Z +??4?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@QEAAAEAV0@PEAVCConfigCacheMap@CBaseConfigCache@@@Z +??4?$AutoRelease@VCConfigManager@@@@QEAAAEAV0@PEAVCConfigManager@@@Z +??4?$AutoRelease@VCRemoteOperation@@@@QEAAAEAV0@PEAVCRemoteOperation@@@Z +??4?$AutoRelease@VCRemoteSession@@@@QEAAAEAV0@PEAVCRemoteSession@@@Z +??4?$AutoRelease@VCRequestContext@@@@QEAAAEAV0@PEAVCRequestContext@@@Z +??4?$AutoRelease@VCServiceCommonConfigSettings@@@@QEAAAEAV0@PEAVCServiceCommonConfigSettings@@@Z +??4?$AutoRelease@VCServiceConfigCache@@@@QEAAAEAV0@PEAVCServiceConfigCache@@@Z +??4?$AutoRelease@VCServiceConfigSettings@@@@QEAAAEAV0@PEAVCServiceConfigSettings@@@Z +??4?$AutoRelease@VCWSManEPR@@@@QEAAAEAV0@PEAVCWSManEPR@@@Z +??4?$AutoRelease@VCWSManGroupPolicyManager@@@@QEAAAEAV0@PEAVCWSManGroupPolicyManager@@@Z +??4?$AutoRelease@VCWSManResource@@@@QEAAAEAV0@PEAVCWSManResource@@@Z +??4?$AutoRelease@VCWinRSPluginConfigCache@@@@QEAAAEAV0@PEAVCWinRSPluginConfigCache@@@Z +??4?$AutoRelease@VCWinRSPluginConfigSettings@@@@QEAAAEAV0@PEAVCWinRSPluginConfigSettings@@@Z +??4?$AutoRelease@VEnumSinkEx@@@@QEAAAEAV0@PEAVEnumSinkEx@@@Z +??4?$AutoRelease@VGeneralSinkEx@@@@QEAAAEAV0@PEAVGeneralSinkEx@@@Z +??4?$AutoRelease@VIRequestContext@@@@QEAAAEAV0@PEAVIRequestContext@@@Z +??4?$AutoRelease@VISubscription@@@@QEAAAEAV0@PEAVISubscription@@@Z +??4?$AutoRelease@VInboundRequestDetails@@@@QEAAAEAV0@PEAVInboundRequestDetails@@@Z +??4?$AutoRelease@VUserRecord@@@@QEAAAEAV0@PEAVUserRecord@@@Z +??4?$AutoRelease@VWSManHttpListener@@@@QEAAAEAV0@PEAVWSManHttpListener@@@Z +??4?$AutoReleaseEx@VShell@Client@WSMan@@@@QEAAAEAV0@PEAVShell@Client@WSMan@@@Z +??4?$PacketElement@K@PacketParser@@QEAAAEAV01@$$QEAV01@@Z +??4?$PacketElement@K@PacketParser@@QEAAAEAV01@AEBV01@@Z +??4?$PacketElement@PEAU_FWXML_ELEMENT@@@PacketParser@@QEAAAEAV01@$$QEAV01@@Z +??4?$PacketElement@PEAU_FWXML_ELEMENT@@@PacketParser@@QEAAAEAV01@AEBV01@@Z +??4?$PacketElement@PEBG@PacketParser@@QEAAAEAV01@$$QEAV01@@Z +??4?$PacketElement@PEBG@PacketParser@@QEAAAEAV01@AEBV01@@Z +??4?$PacketElement@_K@PacketParser@@QEAAAEAV01@$$QEAV01@@Z +??4?$PacketElement@_K@PacketParser@@QEAAAEAV01@AEBV01@@Z +??4?$SimpleQueue@T_LARGE_INTEGER@@@@QEAAAEAV0@AEBV0@@Z +??4AutoBstr@@QEAAAEAV0@PEAG@Z +??4AutoBstrNoAlloc@@QEAAAEAV0@PEAG@Z +??4AutoCertContext@@QEAAAEAV0@PEBU_CERT_CONTEXT@@@Z +??4AutoChainContext@@QEAAAEAV0@PEBU_CERT_CHAIN_CONTEXT@@@Z +??4AutoCoTaskMemFree@@QEAAAEAV0@PEAX@Z +??4AutoFwXmlCloseParser@@QEAAAEAV0@PEAX@Z +??4AutoHandle@@QEAAAEAV0@PEAX@Z +??4AutoImpersonateUser@@QEAAAEAV0@PEAX@Z +??4AutoLibrary@@QEAAAEAV0@PEAUHINSTANCE__@@@Z +??4AutoLocalFree@@QEAAAEAV0@PEAX@Z +??4AutoMIClass@@QEAAAEAV0@PEAU_MI_Class@@@Z +??4AutoMIInstance@@QEAAAEAV0@PEAU_MI_Instance@@@Z +??4AutoObject@@QEAAAEAV0@PEAUWSMAN_OBJECT@@@Z +??4AutoRegKey@@QEAAAEAV0@PEAUHKEY__@@@Z +??4AutoSecurityDescriptor@@QEAAAEAV0@PEAX@Z +??4AutoWaitHandle@@QEAAAEAV0@PEAX@Z +??4ChildLifeTimeManager@@QEAAAEAV0@AEBV0@@Z +??4ConfigRegistry@@QEAAAEAV0@AEBV0@@Z +??4EtwCorrelationHelper@@QEAAAEAV0@AEBV0@@Z +??4EventLog@@QEAAAEAV0@$$QEAV0@@Z +??4EventLog@@QEAAAEAV0@AEBV0@@Z +??4ExtendedSemantic@@QEAAAEAV0@$$QEAV0@@Z +??4ExtendedSemantic@@QEAAAEAV0@AEBV0@@Z +??4FastLock@@QEAAAEAV0@$$QEAV0@@Z +??4FastLock@@QEAAAEAV0@AEBV0@@Z +??4Fragment@PacketParser@@QEAAAEAV01@$$QEAV01@@Z +??4Fragment@PacketParser@@QEAAAEAV01@AEBV01@@Z +??4IConfigChangeObserver@@QEAAAEAV0@AEBV0@@Z +??4ILifeTimeMgmt@@QEAAAEAV0@AEBV0@@Z +??4IWSManGroupPolicyObserver@@QEAAAEAV0@AEBV0@@Z +??4IWSManGroupPolicyPublisher@@QEAAAEAV0@AEBV0@@Z +??4Locale@@QEAAAEAV0@AEBV0@@Z +??4NotUnderstandSoapHeader@PacketParser@@QEAAAEAV01@$$QEAV01@@Z +??4NotUnderstandSoapHeader@PacketParser@@QEAAAEAV01@AEBV01@@Z +??4PacketFormatter@@QEAAAEAV0@$$QEAV0@@Z +??4PacketFormatter@@QEAAAEAV0@AEBV0@@Z +??4RBUFFER@@QEAAAEAV0@AEBV0@@Z +??4SBUFFER@@QEAAAEAV0@$$QEAV0@@Z +??4SBUFFER@@QEAAAEAV0@AEBV0@@Z +??4SessionId@PacketParser@@QEAAAEAV01@$$QEAV01@@Z +??4SessionId@PacketParser@@QEAAAEAV01@AEBV01@@Z +??4SoapSemanticConverter@@QEAAAEAV0@AEBV0@@Z +??4UserAuthzRecord@@QEAAAEAV0@$$QEAV0@@Z +??4UserAuthzRecord@@QEAAAEAV0@AEBV0@@Z +??6BufferFormatter@@UEAAAEAV0@AEAVBufferFormatterDataFormatDWORD@@@Z +??6BufferFormatter@@UEAAAEAV0@AEAVBufferFormatterDataFormatULONGLONG@@@Z +??6BufferFormatter@@UEAAAEAV0@AEAVBufferFormatterDataPCWSTR@@@Z +??6BufferFormatter@@UEAAAEAV0@AEAVBufferFormatterDataPUCHAR@@@Z +??6BufferFormatter@@UEAAAEAV0@AEAVBufferFormatterDataXmlEscape@@@Z +??6BufferFormatter@@UEAAAEAV0@K@Z +??6BufferFormatter@@UEAAAEAV0@PEAU_FWXML_ELEMENT@@@Z +??7?$AutoCleanup@V?$AutoDelete@G@@PEAG@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PEAVCCertMapping@@@@@@PEAV?$SafeSet@PEAVCCertMapping@@@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PEAVCShellUriSettings@@@@@@PEAV?$SafeSet@PEAVCShellUriSettings@@@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoDelete@V?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@@PEAV?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PEAVConfigUpdate@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PEAVIQueryDASHSMASHInterface@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PEAVISpecification@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoDelete@VRunAsConfiguration@@@@PEAVRunAsConfiguration@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoDelete@VSubscriptionEnumerator@@@@PEAVSubscriptionEnumerator@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PEAVTSTRBUFFER@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PEAVWmiEnumContext@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoDeleteVector@D@@PEAD@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoDeleteVector@E@@PEAE@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoDeleteVector@G@@PEAG@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoDeleteVector@PEAG@@PEAPEAG@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoDeleteVector@PEBG@@PEAPEBG@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PEAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PEAU_WINRS_RUN_COMMAND_ARG@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoDeleteVector@X@@PEAX@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PEAUIClientSecurity@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PEAUIEnumWbemClassObject@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PEAUIErrorInfo@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PEAUIUnknown@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PEAUIWbemClassObject@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PEAUIWbemContext@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PEAUIWbemLocator@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PEAUIWbemObjectTextSrc@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PEAUIWbemPath@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PEAUIWbemPathKeyList@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PEAUIWbemQualifierSet@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PEAUIWbemQuery@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PEAUIWbemServices@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PEAVCClientConfigSettings@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PEAVCConfigManager@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PEAVCRemoteSession@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PEAVCRequestContext@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PEAVCWSManEPR@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PEAVCWSManResource@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PEAVCWinRSPluginConfigCache@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PEAVIRequestContext@@@@QEBA_NXZ +??7?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PEAVInboundRequestDetails@@@@QEBA_NXZ +??7?$AutoCleanup@VAutoBstrNoAlloc@@PEAG@@QEBA_NXZ +??7?$AutoCleanup@VAutoCertContext@@PEBU_CERT_CONTEXT@@@@QEBA_NXZ +??7?$AutoCleanup@VAutoHandle@@PEAX@@QEBA_NXZ +??7?$AutoCleanup@VAutoImpersonateUser@@PEAX@@QEBA_NXZ +??7?$AutoCleanup@VAutoMIClass@@PEAU_MI_Class@@@@QEBA_NXZ +??7?$AutoCleanup@VAutoRegKey@@PEAUHKEY__@@@@QEBA_NXZ +??7?$AutoCleanup@VAutoSecurityDescriptor@@PEAX@@QEBA_NXZ +??A?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QEAAPEAKAEBUPluginKey@@@Z +??A?$SafeMap@UUserKey@@PEAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@@@QEAAPEAPEAVBlockedRecord@@AEBUUserKey@@@Z +??A?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QEAAPEAVCertThumbprintMappedSet@CServiceConfigSettings@@AEBVCertThumbprintKey@@@Z +??A?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEAAPEAKAEBVStringKeyCI@@@Z +??A?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QEAAPEAUUSER_CONTEXT_INFO@WSManHttpListener@@AEBVStringKeyCI@@@Z +??A?$SafeMap@VStringKeyStore@@PEAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@@@QEAAPEAPEAVExpiredOperationIdRecord@@AEBVStringKeyStore@@@Z +??A?$SafeMap@VStringKeyStore@@PEAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@@@QEAAPEAPEAVServerFullDuplexChannel@@AEBVStringKeyStore@@@Z +??A?$SafeMap@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@QEAAPEAPEAVOptionValue@SessionOptions@Client@WSMan@@AEBW4WSManSessionOption@@@Z +??A?$SafeMap@_KPEAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@@@QEAAPEAPEAVSendPacketArgs@RobustConnectionBuffer@@AEB_K@Z +??A?$SafeSet@PEAX@@QEBAPEBQEAXAEBQEAX@Z +??B?$AutoCleanup@V?$AutoDelete@D@@PEAD@@QEAAPEADXZ +??B?$AutoCleanup@V?$AutoDelete@G@@PEAG@@QEAAPEAGXZ +??B?$AutoCleanup@V?$AutoDelete@G@@PEAG@@QEBAQEAGXZ +??B?$AutoCleanup@V?$AutoDelete@UIPRange@CWSManIPFilter@@@@PEAUIPRange@CWSManIPFilter@@@@QEAAPEAUIPRange@CWSManIPFilter@@XZ +??B?$AutoCleanup@V?$AutoDelete@U_SID@@@@PEAU_SID@@@@QEAAPEAU_SID@@XZ +??B?$AutoCleanup@V?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@PEAU_WSMAN_STREAM_ID_SET@@@@QEAAPEAU_WSMAN_STREAM_ID_SET@@XZ +??B?$AutoCleanup@V?$AutoDelete@V?$Handle@VISubscription@@@@@@PEAV?$Handle@VISubscription@@@@@@QEAAPEAV?$Handle@VISubscription@@@@XZ +??B?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@PEAV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEAAPEAV?$SafeMap_Iterator@VStringKeyCI@@K@@XZ +??B?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@PEAV?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@QEAAPEAV?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@XZ +??B?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PEAVCCertMapping@@@@@@PEAV?$SafeSet@PEAVCCertMapping@@@@@@QEAAPEAV?$SafeSet@PEAVCCertMapping@@@@XZ +??B?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PEAVCShellUriSettings@@@@@@PEAV?$SafeSet@PEAVCShellUriSettings@@@@@@QEAAPEAV?$SafeSet@PEAVCShellUriSettings@@@@XZ +??B?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@PEAV?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@QEAAPEAV?$SafeSet_Iterator@PEAVCListenerOperation@@@@XZ +??B?$AutoCleanup@V?$AutoDelete@V?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@@PEAV?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@@QEAAPEAV?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@XZ +??B?$AutoCleanup@V?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@PEAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@QEAAPEAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@XZ +??B?$AutoCleanup@V?$AutoDelete@V?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@@@PEAV?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@@@QEAAPEAV?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@XZ +??B?$AutoCleanup@V?$AutoDelete@V?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@@@PEAV?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@@@QEBAQEAV?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@XZ +??B?$AutoCleanup@V?$AutoDelete@V?$vector@PEAVIServiceConfigObserver@@V?$transport_allocator@PEAVIServiceConfigObserver@@@@@std@@@@PEAV?$vector@PEAVIServiceConfigObserver@@V?$transport_allocator@PEAVIServiceConfigObserver@@@@@std@@@@QEAAPEAV?$vector@PEAVIServiceConfigObserver@@V?$transport_allocator@PEAVIServiceConfigObserver@@@@@std@@XZ +??B?$AutoCleanup@V?$AutoDelete@VAdminSid@CSecurity@@@@PEAVAdminSid@CSecurity@@@@QEAAPEAVAdminSid@CSecurity@@XZ +??B?$AutoCleanup@V?$AutoDelete@VBlockedRecord@@@@PEAVBlockedRecord@@@@QEAAPEAVBlockedRecord@@XZ +??B?$AutoCleanup@V?$AutoDelete@VCBaseConfigCache@@@@PEAVCBaseConfigCache@@@@QEAAPEAVCBaseConfigCache@@XZ +??B?$AutoCleanup@V?$AutoDelete@VCCertMapping@@@@PEAVCCertMapping@@@@QEAAPEAVCCertMapping@@XZ +??B?$AutoCleanup@V?$AutoDelete@VCConfigChangeSource@@@@PEAVCConfigChangeSource@@@@QEAAPEAVCConfigChangeSource@@XZ +??B?$AutoCleanup@V?$AutoDelete@VCListenerSettings@@@@PEAVCListenerSettings@@@@QEAAPEAVCListenerSettings@@XZ +??B?$AutoCleanup@V?$AutoDelete@VCObserverConfigChangeErrors@@@@PEAVCObserverConfigChangeErrors@@@@QEAAPEAVCObserverConfigChangeErrors@@XZ +??B?$AutoCleanup@V?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PEAVCServiceWatcher@CServiceConfigCache@@@@QEAAPEAVCServiceWatcher@CServiceConfigCache@@XZ +??B?$AutoCleanup@V?$AutoDelete@VCShellUriSettings@@@@PEAVCShellUriSettings@@@@QEAAPEAVCShellUriSettings@@XZ +??B?$AutoCleanup@V?$AutoDelete@VCWSManEPR@@@@PEAVCWSManEPR@@@@QEAAPEAVCWSManEPR@@XZ +??B?$AutoCleanup@V?$AutoDelete@VCWSManResource@@@@PEAVCWSManResource@@@@QEAAPEAVCWSManResource@@XZ +??B?$AutoCleanup@V?$AutoDelete@VCertHash@@@@PEAVCertHash@@@@QEAAPEAVCertHash@@XZ +??B?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PEAVConfigUpdate@@@@QEAAPEAVConfigUpdate@@XZ +??B?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@QEAAPEAVEnumSinkEx@@XZ +??B?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@QEBAQEAVEnumSinkEx@@XZ +??B?$AutoCleanup@V?$AutoDelete@VEventHandler@WSMan@@@@PEAVEventHandler@WSMan@@@@QEAAPEAVEventHandler@WSMan@@XZ +??B?$AutoCleanup@V?$AutoDelete@VExpiredOperationIdRecord@@@@PEAVExpiredOperationIdRecord@@@@QEAAPEAVExpiredOperationIdRecord@@XZ +??B?$AutoCleanup@V?$AutoDelete@VGPApiManager@@@@PEAVGPApiManager@@@@QEAAPEAVGPApiManager@@XZ +??B?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@QEAAPEAVGeneralSinkEx@@XZ +??B?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@QEBAQEAVGeneralSinkEx@@XZ +??B?$AutoCleanup@V?$AutoDelete@VIChannelObserverFactory@@@@PEAVIChannelObserverFactory@@@@QEAAPEAVIChannelObserverFactory@@XZ +??B?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PEAVIQueryDASHSMASHInterface@@@@QEAAPEAVIQueryDASHSMASHInterface@@XZ +??B?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PEAVIQueryDASHSMASHInterface@@@@QEBAQEAVIQueryDASHSMASHInterface@@XZ +??B?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PEAVISpecification@@@@QEAAPEAVISpecification@@XZ +??B?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PEAVISpecification@@@@QEBAQEAVISpecification@@XZ +??B?$AutoCleanup@V?$AutoDelete@VInteractiveSid@CSecurity@@@@PEAVInteractiveSid@CSecurity@@@@QEAAPEAVInteractiveSid@CSecurity@@XZ +??B?$AutoCleanup@V?$AutoDelete@VIpHlpApiDllLoader@@@@PEAVIpHlpApiDllLoader@@@@QEAAPEAVIpHlpApiDllLoader@@XZ +??B?$AutoCleanup@V?$AutoDelete@VMachineName@@@@PEAVMachineName@@@@QEAAPEAVMachineName@@XZ +??B?$AutoCleanup@V?$AutoDelete@VNetworkServiceSid@CSecurity@@@@PEAVNetworkServiceSid@CSecurity@@@@QEAAPEAVNetworkServiceSid@CSecurity@@XZ +??B?$AutoCleanup@V?$AutoDelete@VNtDsApiDllLoader@@@@PEAVNtDsApiDllLoader@@@@QEAAPEAVNtDsApiDllLoader@@XZ +??B?$AutoCleanup@V?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@QEAAPEAVOptionValue@SessionOptions@Client@WSMan@@XZ +??B?$AutoCleanup@V?$AutoDelete@VPacketCreator@@@@PEAVPacketCreator@@@@QEAAPEAVPacketCreator@@XZ +??B?$AutoCleanup@V?$AutoDelete@VPacketParser@@@@PEAVPacketParser@@@@QEAAPEAVPacketParser@@XZ +??B?$AutoCleanup@V?$AutoDelete@VResources@Locale@@@@PEAVResources@Locale@@@@QEAAPEAVResources@Locale@@XZ +??B?$AutoCleanup@V?$AutoDelete@VSecurityEntry@Catalog@@@@PEAVSecurityEntry@Catalog@@@@QEAAPEAVSecurityEntry@Catalog@@XZ +??B?$AutoCleanup@V?$AutoDelete@VServiceSoapProcessor@@@@PEAVServiceSoapProcessor@@@@QEAAPEAVServiceSoapProcessor@@XZ +??B?$AutoCleanup@V?$AutoDelete@VShell32DllLoader@@@@PEAVShell32DllLoader@@@@QEAAPEAVShell32DllLoader@@XZ +??B?$AutoCleanup@V?$AutoDelete@VShlWApiDllLoader@@@@PEAVShlWApiDllLoader@@@@QEAAPEAVShlWApiDllLoader@@XZ +??B?$AutoCleanup@V?$AutoDelete@VSubscriptionManager@@@@PEAVSubscriptionManager@@@@QEAAPEAVSubscriptionManager@@XZ +??B?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PEAVTSTRBUFFER@@@@QEAAPEAVTSTRBUFFER@@XZ +??B?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PEAVTSTRBUFFER@@@@QEBAQEAVTSTRBUFFER@@XZ +??B?$AutoCleanup@V?$AutoDelete@VUniqueStringOverflow@@@@PEAVUniqueStringOverflow@@@@QEAAPEAVUniqueStringOverflow@@XZ +??B?$AutoCleanup@V?$AutoDelete@VUser32DllLoader@@@@PEAVUser32DllLoader@@@@QEAAPEAVUser32DllLoader@@XZ +??B?$AutoCleanup@V?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@PEAVWSMANCONFIGTABLE_IDENTITY@@@@QEAAPEAVWSMANCONFIGTABLE_IDENTITY@@XZ +??B?$AutoCleanup@V?$AutoDelete@VWSManMemCryptManager@@@@PEAVWSManMemCryptManager@@@@QEAAPEAVWSManMemCryptManager@@XZ +??B?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PEAVWmiEnumContext@@@@QEAAPEAVWmiEnumContext@@XZ +??B?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PEAVWmiEnumContext@@@@QEBAQEAVWmiEnumContext@@XZ +??B?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PEAVXmlReader@@@@QEAAPEAVXmlReader@@XZ +??B?$AutoCleanup@V?$AutoDeleteVector@$$CBG@@PEBG@@QEAAPEBGXZ +??B?$AutoCleanup@V?$AutoDeleteVector@D@@PEAD@@QEAAPEADXZ +??B?$AutoCleanup@V?$AutoDeleteVector@E@@PEAE@@QEAAPEAEXZ +??B?$AutoCleanup@V?$AutoDeleteVector@E@@PEAE@@QEBAQEAEXZ +??B?$AutoCleanup@V?$AutoDeleteVector@G@@PEAG@@QEAAPEAGXZ +??B?$AutoCleanup@V?$AutoDeleteVector@G@@PEAG@@QEBAQEAGXZ +??B?$AutoCleanup@V?$AutoDeleteVector@H@@PEAH@@QEAAPEAHXZ +??B?$AutoCleanup@V?$AutoDeleteVector@PEAG@@PEAPEAG@@QEAAPEAPEAGXZ +??B?$AutoCleanup@V?$AutoDeleteVector@PEAG@@PEAPEAG@@QEBAQEAPEAGXZ +??B?$AutoCleanup@V?$AutoDeleteVector@PEBG@@PEAPEBG@@QEAAPEAPEBGXZ +??B?$AutoCleanup@V?$AutoDeleteVector@PEBG@@PEAPEBG@@QEBAQEAPEBGXZ +??B?$AutoCleanup@V?$AutoDeleteVector@U_CONFIG_UPDATE@@@@PEAU_CONFIG_UPDATE@@@@QEAAPEAU_CONFIG_UPDATE@@XZ +??B?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PEAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QEAAPEAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@XZ +??B?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PEAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QEBAQEAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@XZ +??B?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PEAU_WINRS_RUN_COMMAND_ARG@@@@QEAAPEAU_WINRS_RUN_COMMAND_ARG@@XZ +??B?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PEAU_WINRS_RUN_COMMAND_ARG@@@@QEBAQEAU_WINRS_RUN_COMMAND_ARG@@XZ +??B?$AutoCleanup@V?$AutoDeleteVector@U_WSMAN_OPTION@@@@PEAU_WSMAN_OPTION@@@@QEAAPEAU_WSMAN_OPTION@@XZ +??B?$AutoCleanup@V?$AutoDeleteVector@X@@PEAX@@QEAAPEAXXZ +??B?$AutoCleanup@V?$AutoFree@E@@PEAE@@QEAAPEAEXZ +??B?$AutoCleanup@V?$AutoFree@E@@PEAE@@QEBAQEAEXZ +??B?$AutoCleanup@V?$AutoLocklessItemRecycle@VPacket@@@@PEAVPacket@@@@QEAAPEAVPacket@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIAppHostChildElementCollection@@@@PEAUIAppHostChildElementCollection@@@@QEAAPEAUIAppHostChildElementCollection@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIAppHostElement@@@@PEAUIAppHostElement@@@@QEAAPEAUIAppHostElement@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIAppHostElementCollection@@@@PEAUIAppHostElementCollection@@@@QEAAPEAUIAppHostElementCollection@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PEAUIClientSecurity@@@@QEAAPEAUIClientSecurity@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PEAUIClientSecurity@@@@QEBAQEAUIClientSecurity@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PEAUIEnumWbemClassObject@@@@QEAAPEAUIEnumWbemClassObject@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PEAUIEnumWbemClassObject@@@@QEBAQEAUIEnumWbemClassObject@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PEAUIErrorInfo@@@@QEAAPEAUIErrorInfo@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PEAUIErrorInfo@@@@QEBAQEAUIErrorInfo@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PEAUIUnknown@@@@QEAAPEAUIUnknown@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PEAUIUnknown@@@@QEBAQEAUIUnknown@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PEAUIWbemClassObject@@@@QEAAPEAUIWbemClassObject@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PEAUIWbemClassObject@@@@QEBAQEAUIWbemClassObject@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PEAUIWbemContext@@@@QEAAPEAUIWbemContext@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PEAUIWbemContext@@@@QEBAQEAUIWbemContext@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PEAUIWbemLocator@@@@QEAAPEAUIWbemLocator@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PEAUIWbemLocator@@@@QEBAQEAUIWbemLocator@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PEAUIWbemObjectTextSrc@@@@QEAAPEAUIWbemObjectTextSrc@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PEAUIWbemObjectTextSrc@@@@QEBAQEAUIWbemObjectTextSrc@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PEAUIWbemPath@@@@QEAAPEAUIWbemPath@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PEAUIWbemPath@@@@QEBAQEAUIWbemPath@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PEAUIWbemPathKeyList@@@@QEAAPEAUIWbemPathKeyList@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PEAUIWbemPathKeyList@@@@QEBAQEAUIWbemPathKeyList@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PEAUIWbemQualifierSet@@@@QEAAPEAUIWbemQualifierSet@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PEAUIWbemQualifierSet@@@@QEBAQEAUIWbemQualifierSet@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PEAUIWbemQuery@@@@QEAAPEAUIWbemQuery@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PEAUIWbemQuery@@@@QEBAQEAUIWbemQuery@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PEAUIWbemServices@@@@QEAAPEAUIWbemServices@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PEAUIWbemServices@@@@QEBAQEAUIWbemServices@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCBaseConfigCache@@@@PEAVCBaseConfigCache@@@@QEAAPEAVCBaseConfigCache@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PEAVCClientConfigSettings@@@@QEAAPEAVCClientConfigSettings@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCCommonConfigSettings@@@@PEAVCCommonConfigSettings@@@@QEAAPEAVCCommonConfigSettings@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@PEAVCConfigCacheMap@CBaseConfigCache@@@@QEAAPEAVCConfigCacheMap@CBaseConfigCache@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PEAVCConfigManager@@@@QEAAPEAVCConfigManager@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PEAVCRemoteSession@@@@QEAAPEAVCRemoteSession@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PEAVCRequestContext@@@@QEAAPEAVCRequestContext@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCServiceCommonConfigSettings@@@@PEAVCServiceCommonConfigSettings@@@@QEAAPEAVCServiceCommonConfigSettings@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCServiceConfigCache@@@@PEAVCServiceConfigCache@@@@QEAAPEAVCServiceConfigCache@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCServiceConfigSettings@@@@PEAVCServiceConfigSettings@@@@QEAAPEAVCServiceConfigSettings@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PEAVCWSManEPR@@@@QEAAPEAVCWSManEPR@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PEAVCWSManEPR@@@@QEBAQEAVCWSManEPR@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyCache@@@@PEAVCWSManGroupPolicyCache@@@@QEAAPEAVCWSManGroupPolicyCache@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyManager@@@@PEAVCWSManGroupPolicyManager@@@@QEAAPEAVCWSManGroupPolicyManager@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCWSManObject@@@@PEAVCWSManObject@@@@QEAAPEAVCWSManObject@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PEAVCWSManResource@@@@QEAAPEAVCWSManResource@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PEAVCWSManResource@@@@QEBAQEAVCWSManResource@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PEAVCWinRSPluginConfigCache@@@@QEAAPEAVCWinRSPluginConfigCache@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PEAVCWinRSPluginConfigCache@@@@QEBAQEAVCWinRSPluginConfigCache@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigSettings@@@@PEAVCWinRSPluginConfigSettings@@@@QEAAPEAVCWinRSPluginConfigSettings@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCommand@Client@WSMan@@@@PEAVCommand@Client@WSMan@@@@QEAAPEAVCommand@Client@WSMan@@XZ +??B?$AutoCleanup@V?$AutoRelease@VConfigNotification@@@@PEAVConfigNotification@@@@QEAAPEAVConfigNotification@@XZ +??B?$AutoCleanup@V?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@PEAVConnectShellOperation@Client@WSMan@@@@QEAAPEAVConnectShellOperation@Client@WSMan@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@PEAVCreateShellOperation@Client@WSMan@@@@QEAAPEAVCreateShellOperation@Client@WSMan@@XZ +??B?$AutoCleanup@V?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@PEAVDeleteShellOperation@Client@WSMan@@@@QEAAPEAVDeleteShellOperation@Client@WSMan@@XZ +??B?$AutoCleanup@V?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@PEAVDisconnectOperation@Client@WSMan@@@@QEAAPEAVDisconnectOperation@Client@WSMan@@XZ +??B?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@QEAAPEAVEnumSinkEx@@XZ +??B?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@QEBAQEAVEnumSinkEx@@XZ +??B?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@QEAAPEAVGeneralSinkEx@@XZ +??B?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@QEBAQEAVGeneralSinkEx@@XZ +??B?$AutoCleanup@V?$AutoRelease@VIISConfigSettings@@@@PEAVIISConfigSettings@@@@QEAAPEAVIISConfigSettings@@XZ +??B?$AutoCleanup@V?$AutoRelease@VIPCSoapProcessor@@@@PEAVIPCSoapProcessor@@@@QEAAPEAVIPCSoapProcessor@@XZ +??B?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PEAVIRequestContext@@@@QEAAPEAVIRequestContext@@XZ +??B?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PEAVIRequestContext@@@@QEBAQEAVIRequestContext@@XZ +??B?$AutoCleanup@V?$AutoRelease@VISubscription@@@@PEAVISubscription@@@@QEAAPEAVISubscription@@XZ +??B?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PEAVInboundRequestDetails@@@@QEAAPEAVInboundRequestDetails@@XZ +??B?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PEAVInboundRequestDetails@@@@QEBAQEAVInboundRequestDetails@@XZ +??B?$AutoCleanup@V?$AutoRelease@VReceiveOperation@Client@WSMan@@@@PEAVReceiveOperation@Client@WSMan@@@@QEAAPEAVReceiveOperation@Client@WSMan@@XZ +??B?$AutoCleanup@V?$AutoRelease@VReconnectOperation@Client@WSMan@@@@PEAVReconnectOperation@Client@WSMan@@@@QEAAPEAVReconnectOperation@Client@WSMan@@XZ +??B?$AutoCleanup@V?$AutoRelease@VSendOperation@Client@WSMan@@@@PEAVSendOperation@Client@WSMan@@@@QEAAPEAVSendOperation@Client@WSMan@@XZ +??B?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PEAVShell@Client@WSMan@@@@QEAAPEAVShell@Client@WSMan@@XZ +??B?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PEAVShell@Client@WSMan@@@@QEBAQEAVShell@Client@WSMan@@XZ +??B?$AutoCleanup@V?$AutoRelease@VSignalOperation@Client@WSMan@@@@PEAVSignalOperation@Client@WSMan@@@@QEAAPEAVSignalOperation@Client@WSMan@@XZ +??B?$AutoCleanup@V?$AutoRelease@VUserRecord@@@@PEAVUserRecord@@@@QEAAPEAVUserRecord@@XZ +??B?$AutoCleanup@V?$AutoRelease@VUserRecord@@@@PEAVUserRecord@@@@QEBAQEAVUserRecord@@XZ +??B?$AutoCleanup@VAutoBstr@@PEAG@@QEAAPEAGXZ +??B?$AutoCleanup@VAutoBstrNoAlloc@@PEAG@@QEAAPEAGXZ +??B?$AutoCleanup@VAutoBstrNoAlloc@@PEAG@@QEBAQEAGXZ +??B?$AutoCleanup@VAutoCertContext@@PEBU_CERT_CONTEXT@@@@QEAAPEBU_CERT_CONTEXT@@XZ +??B?$AutoCleanup@VAutoHandle@@PEAX@@QEAAPEAXXZ +??B?$AutoCleanup@VAutoHandle@@PEAX@@QEBAQEAXXZ +??B?$AutoCleanup@VAutoImpersonateUser@@PEAX@@QEAAPEAXXZ +??B?$AutoCleanup@VAutoImpersonateUser@@PEAX@@QEBAQEAXXZ +??B?$AutoCleanup@VAutoLibrary@@PEAUHINSTANCE__@@@@QEAAPEAUHINSTANCE__@@XZ +??B?$AutoCleanup@VAutoLocalFree@@PEAX@@QEAAPEAXXZ +??B?$AutoCleanup@VAutoMIClass@@PEAU_MI_Class@@@@QEAAPEAU_MI_Class@@XZ +??B?$AutoCleanup@VAutoMIInstance@@PEAU_MI_Instance@@@@QEAAPEAU_MI_Instance@@XZ +??B?$AutoCleanup@VAutoRegKey@@PEAUHKEY__@@@@QEAAPEAUHKEY__@@XZ +??B?$AutoCleanup@VAutoSecurityDescriptor@@PEAX@@QEAAPEAXXZ +??B?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@QEBA_NXZ +??B?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@QEBA_NXZ +??B?$SafeMap_Iterator@PEAVCShellUriSettings@@UEmpty@@@@QEBA_NXZ +??B?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QEBA_NXZ +??B?$SafeMap_Iterator@VKey@Locale@@K@@QEBA_NXZ +??B?$SafeMap_Iterator@VStringKeyCI@@K@@QEBA_NXZ +??B?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@QEBA_NXZ +??B?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@QEBA_NXZ +??B?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@QEBA_NXZ +??C?$AutoCleanup@V?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@PEAU_WSMAN_STREAM_ID_SET@@@@QEAAPEAU_WSMAN_STREAM_ID_SET@@XZ +??C?$AutoCleanup@V?$AutoDelete@V?$Handle@VISubscription@@@@@@PEAV?$Handle@VISubscription@@@@@@QEAAPEAV?$Handle@VISubscription@@@@XZ +??C?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@PEAV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEAAPEAV?$SafeMap_Iterator@VStringKeyCI@@K@@XZ +??C?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@PEAV?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@QEAAPEAV?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@XZ +??C?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PEAVCCertMapping@@@@@@PEAV?$SafeSet@PEAVCCertMapping@@@@@@QEAAPEAV?$SafeSet@PEAVCCertMapping@@@@XZ +??C?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PEAVCShellUriSettings@@@@@@PEAV?$SafeSet@PEAVCShellUriSettings@@@@@@QEAAPEAV?$SafeSet@PEAVCShellUriSettings@@@@XZ +??C?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@PEAV?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@QEAAPEAV?$SafeSet_Iterator@PEAVCListenerOperation@@@@XZ +??C?$AutoCleanup@V?$AutoDelete@V?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@@PEAV?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@@QEAAPEAV?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@XZ +??C?$AutoCleanup@V?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@PEAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@QEAAPEAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@XZ +??C?$AutoCleanup@V?$AutoDelete@V?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@@@PEAV?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@@@QEAAPEAV?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@XZ +??C?$AutoCleanup@V?$AutoDelete@V?$vector@PEAVIServiceConfigObserver@@V?$transport_allocator@PEAVIServiceConfigObserver@@@@@std@@@@PEAV?$vector@PEAVIServiceConfigObserver@@V?$transport_allocator@PEAVIServiceConfigObserver@@@@@std@@@@QEAAPEAV?$vector@PEAVIServiceConfigObserver@@V?$transport_allocator@PEAVIServiceConfigObserver@@@@@std@@XZ +??C?$AutoCleanup@V?$AutoDelete@VBlockedRecord@@@@PEAVBlockedRecord@@@@QEAAPEAVBlockedRecord@@XZ +??C?$AutoCleanup@V?$AutoDelete@VCBaseConfigCache@@@@PEAVCBaseConfigCache@@@@QEAAPEAVCBaseConfigCache@@XZ +??C?$AutoCleanup@V?$AutoDelete@VCCertMapping@@@@PEAVCCertMapping@@@@QEAAPEAVCCertMapping@@XZ +??C?$AutoCleanup@V?$AutoDelete@VCConfigChangeSource@@@@PEAVCConfigChangeSource@@@@QEAAPEAVCConfigChangeSource@@XZ +??C?$AutoCleanup@V?$AutoDelete@VCListenerSettings@@@@PEAVCListenerSettings@@@@QEAAPEAVCListenerSettings@@XZ +??C?$AutoCleanup@V?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PEAVCServiceWatcher@CServiceConfigCache@@@@QEAAPEAVCServiceWatcher@CServiceConfigCache@@XZ +??C?$AutoCleanup@V?$AutoDelete@VCShellUriSettings@@@@PEAVCShellUriSettings@@@@QEAAPEAVCShellUriSettings@@XZ +??C?$AutoCleanup@V?$AutoDelete@VCWSManEPR@@@@PEAVCWSManEPR@@@@QEAAPEAVCWSManEPR@@XZ +??C?$AutoCleanup@V?$AutoDelete@VCWSManResource@@@@PEAVCWSManResource@@@@QEAAPEAVCWSManResource@@XZ +??C?$AutoCleanup@V?$AutoDelete@VCertHash@@@@PEAVCertHash@@@@QEAAPEAVCertHash@@XZ +??C?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PEAVConfigUpdate@@@@QEAAPEAVConfigUpdate@@XZ +??C?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@QEAAPEAVEnumSinkEx@@XZ +??C?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@QEBAQEAVEnumSinkEx@@XZ +??C?$AutoCleanup@V?$AutoDelete@VExpiredOperationIdRecord@@@@PEAVExpiredOperationIdRecord@@@@QEAAPEAVExpiredOperationIdRecord@@XZ +??C?$AutoCleanup@V?$AutoDelete@VGPApiManager@@@@PEAVGPApiManager@@@@QEAAPEAVGPApiManager@@XZ +??C?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@QEAAPEAVGeneralSinkEx@@XZ +??C?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@QEBAQEAVGeneralSinkEx@@XZ +??C?$AutoCleanup@V?$AutoDelete@VIChannelObserverFactory@@@@PEAVIChannelObserverFactory@@@@QEAAPEAVIChannelObserverFactory@@XZ +??C?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PEAVIQueryDASHSMASHInterface@@@@QEAAPEAVIQueryDASHSMASHInterface@@XZ +??C?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PEAVIQueryDASHSMASHInterface@@@@QEBAQEAVIQueryDASHSMASHInterface@@XZ +??C?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PEAVISpecification@@@@QEAAPEAVISpecification@@XZ +??C?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PEAVISpecification@@@@QEBAQEAVISpecification@@XZ +??C?$AutoCleanup@V?$AutoDelete@VMasterReceiveData@CListenerReceive@@@@PEAVMasterReceiveData@CListenerReceive@@@@QEAAPEAVMasterReceiveData@CListenerReceive@@XZ +??C?$AutoCleanup@V?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@QEAAPEAVOptionValue@SessionOptions@Client@WSMan@@XZ +??C?$AutoCleanup@V?$AutoDelete@VPacketCreator@@@@PEAVPacketCreator@@@@QEAAPEAVPacketCreator@@XZ +??C?$AutoCleanup@V?$AutoDelete@VPacketParser@@@@PEAVPacketParser@@@@QEAAPEAVPacketParser@@XZ +??C?$AutoCleanup@V?$AutoDelete@VRunAsConfiguration@@@@PEAVRunAsConfiguration@@@@QEAAPEAVRunAsConfiguration@@XZ +??C?$AutoCleanup@V?$AutoDelete@VSecurityEntry@Catalog@@@@PEAVSecurityEntry@Catalog@@@@QEAAPEAVSecurityEntry@Catalog@@XZ +??C?$AutoCleanup@V?$AutoDelete@VSendPacketArgs@RobustConnectionBuffer@@@@PEAVSendPacketArgs@RobustConnectionBuffer@@@@QEAAPEAVSendPacketArgs@RobustConnectionBuffer@@XZ +??C?$AutoCleanup@V?$AutoDelete@VServiceSoapProcessor@@@@PEAVServiceSoapProcessor@@@@QEAAPEAVServiceSoapProcessor@@XZ +??C?$AutoCleanup@V?$AutoDelete@VSubscriptionEnumerator@@@@PEAVSubscriptionEnumerator@@@@QEAAPEAVSubscriptionEnumerator@@XZ +??C?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PEAVTSTRBUFFER@@@@QEAAPEAVTSTRBUFFER@@XZ +??C?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PEAVTSTRBUFFER@@@@QEBAQEAVTSTRBUFFER@@XZ +??C?$AutoCleanup@V?$AutoDelete@VUniqueStringOverflow@@@@PEAVUniqueStringOverflow@@@@QEAAPEAVUniqueStringOverflow@@XZ +??C?$AutoCleanup@V?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@PEAVWSMANCONFIGTABLE_IDENTITY@@@@QEAAPEAVWSMANCONFIGTABLE_IDENTITY@@XZ +??C?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PEAVWmiEnumContext@@@@QEAAPEAVWmiEnumContext@@XZ +??C?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PEAVWmiEnumContext@@@@QEBAQEAVWmiEnumContext@@XZ +??C?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PEAVXmlReader@@@@QEAAPEAVXmlReader@@XZ +??C?$AutoCleanup@V?$AutoDeleteVector@E@@PEAE@@QEAAPEAEXZ +??C?$AutoCleanup@V?$AutoDeleteVector@E@@PEAE@@QEBAQEAEXZ +??C?$AutoCleanup@V?$AutoDeleteVector@G@@PEAG@@QEAAPEAGXZ +??C?$AutoCleanup@V?$AutoDeleteVector@G@@PEAG@@QEBAQEAGXZ +??C?$AutoCleanup@V?$AutoDeleteVector@PEAG@@PEAPEAG@@QEAAPEAPEAGXZ +??C?$AutoCleanup@V?$AutoDeleteVector@PEAG@@PEAPEAG@@QEBAQEAPEAGXZ +??C?$AutoCleanup@V?$AutoDeleteVector@PEBG@@PEAPEBG@@QEAAPEAPEBGXZ +??C?$AutoCleanup@V?$AutoDeleteVector@PEBG@@PEAPEBG@@QEBAQEAPEBGXZ +??C?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PEAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QEAAPEAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@XZ +??C?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PEAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QEBAQEAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@XZ +??C?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PEAU_WINRS_RUN_COMMAND_ARG@@@@QEAAPEAU_WINRS_RUN_COMMAND_ARG@@XZ +??C?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PEAU_WINRS_RUN_COMMAND_ARG@@@@QEBAQEAU_WINRS_RUN_COMMAND_ARG@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIAppHostAdminManager@@@@PEAUIAppHostAdminManager@@@@QEAAPEAUIAppHostAdminManager@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIAppHostChildElementCollection@@@@PEAUIAppHostChildElementCollection@@@@QEAAPEAUIAppHostChildElementCollection@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIAppHostConfigException@@@@PEAUIAppHostConfigException@@@@QEAAPEAUIAppHostConfigException@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIAppHostElementCollection@@@@PEAUIAppHostElementCollection@@@@QEAAPEAUIAppHostElementCollection@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIAppHostProperty@@@@PEAUIAppHostProperty@@@@QEAAPEAUIAppHostProperty@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIAppHostPropertyCollection@@@@PEAUIAppHostPropertyCollection@@@@QEAAPEAUIAppHostPropertyCollection@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PEAUIClientSecurity@@@@QEAAPEAUIClientSecurity@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PEAUIClientSecurity@@@@QEBAQEAUIClientSecurity@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PEAUIEnumWbemClassObject@@@@QEAAPEAUIEnumWbemClassObject@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PEAUIEnumWbemClassObject@@@@QEBAQEAUIEnumWbemClassObject@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PEAUIErrorInfo@@@@QEAAPEAUIErrorInfo@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PEAUIErrorInfo@@@@QEBAQEAUIErrorInfo@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PEAUIUnknown@@@@QEAAPEAUIUnknown@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PEAUIUnknown@@@@QEBAQEAUIUnknown@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PEAUIWbemClassObject@@@@QEAAPEAUIWbemClassObject@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PEAUIWbemClassObject@@@@QEBAQEAUIWbemClassObject@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PEAUIWbemContext@@@@QEAAPEAUIWbemContext@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PEAUIWbemContext@@@@QEBAQEAUIWbemContext@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PEAUIWbemLocator@@@@QEAAPEAUIWbemLocator@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PEAUIWbemLocator@@@@QEBAQEAUIWbemLocator@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PEAUIWbemObjectTextSrc@@@@QEAAPEAUIWbemObjectTextSrc@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PEAUIWbemObjectTextSrc@@@@QEBAQEAUIWbemObjectTextSrc@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PEAUIWbemPath@@@@QEAAPEAUIWbemPath@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PEAUIWbemPath@@@@QEBAQEAUIWbemPath@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PEAUIWbemPathKeyList@@@@QEAAPEAUIWbemPathKeyList@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PEAUIWbemPathKeyList@@@@QEBAQEAUIWbemPathKeyList@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PEAUIWbemQualifierSet@@@@QEAAPEAUIWbemQualifierSet@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PEAUIWbemQualifierSet@@@@QEBAQEAUIWbemQualifierSet@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PEAUIWbemQuery@@@@QEAAPEAUIWbemQuery@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PEAUIWbemQuery@@@@QEBAQEAUIWbemQuery@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PEAUIWbemServices@@@@QEAAPEAUIWbemServices@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PEAUIWbemServices@@@@QEBAQEAUIWbemServices@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCBaseConfigCache@@@@PEAVCBaseConfigCache@@@@QEAAPEAVCBaseConfigCache@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PEAVCClientConfigSettings@@@@QEAAPEAVCClientConfigSettings@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@PEAVCConfigCacheMap@CBaseConfigCache@@@@QEAAPEAVCConfigCacheMap@CBaseConfigCache@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PEAVCConfigManager@@@@QEAAPEAVCConfigManager@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCListenerReceive@@@@PEAVCListenerReceive@@@@QEAAPEAVCListenerReceive@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PEAVCRemoteSession@@@@QEAAPEAVCRemoteSession@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PEAVCRemoteSession@@@@QEBAQEAVCRemoteSession@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PEAVCRequestContext@@@@QEAAPEAVCRequestContext@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCServiceCommonConfigSettings@@@@PEAVCServiceCommonConfigSettings@@@@QEAAPEAVCServiceCommonConfigSettings@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCServiceConfigCache@@@@PEAVCServiceConfigCache@@@@QEAAPEAVCServiceConfigCache@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCServiceConfigSettings@@@@PEAVCServiceConfigSettings@@@@QEAAPEAVCServiceConfigSettings@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PEAVCWSManEPR@@@@QEAAPEAVCWSManEPR@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PEAVCWSManEPR@@@@QEBAQEAVCWSManEPR@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyCache@@@@PEAVCWSManGroupPolicyCache@@@@QEAAPEAVCWSManGroupPolicyCache@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyManager@@@@PEAVCWSManGroupPolicyManager@@@@QEAAPEAVCWSManGroupPolicyManager@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCWSManObject@@@@PEAVCWSManObject@@@@QEAAPEAVCWSManObject@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PEAVCWSManResource@@@@QEAAPEAVCWSManResource@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PEAVCWinRSPluginConfigCache@@@@QEAAPEAVCWinRSPluginConfigCache@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PEAVCWinRSPluginConfigCache@@@@QEBAQEAVCWinRSPluginConfigCache@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigSettings@@@@PEAVCWinRSPluginConfigSettings@@@@QEAAPEAVCWinRSPluginConfigSettings@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCommand@Client@WSMan@@@@PEAVCommand@Client@WSMan@@@@QEAAPEAVCommand@Client@WSMan@@XZ +??C?$AutoCleanup@V?$AutoRelease@VConfigNotification@@@@PEAVConfigNotification@@@@QEAAPEAVConfigNotification@@XZ +??C?$AutoCleanup@V?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@PEAVConnectShellOperation@Client@WSMan@@@@QEAAPEAVConnectShellOperation@Client@WSMan@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@PEAVCreateShellOperation@Client@WSMan@@@@QEAAPEAVCreateShellOperation@Client@WSMan@@XZ +??C?$AutoCleanup@V?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@PEAVDeleteShellOperation@Client@WSMan@@@@QEAAPEAVDeleteShellOperation@Client@WSMan@@XZ +??C?$AutoCleanup@V?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@PEAVDisconnectOperation@Client@WSMan@@@@QEAAPEAVDisconnectOperation@Client@WSMan@@XZ +??C?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@QEAAPEAVEnumSinkEx@@XZ +??C?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@QEBAQEAVEnumSinkEx@@XZ +??C?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@QEAAPEAVGeneralSinkEx@@XZ +??C?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@QEBAQEAVGeneralSinkEx@@XZ +??C?$AutoCleanup@V?$AutoRelease@VIPCSoapProcessor@@@@PEAVIPCSoapProcessor@@@@QEAAPEAVIPCSoapProcessor@@XZ +??C?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PEAVIRequestContext@@@@QEAAPEAVIRequestContext@@XZ +??C?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PEAVIRequestContext@@@@QEBAQEAVIRequestContext@@XZ +??C?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PEAVInboundRequestDetails@@@@QEAAPEAVInboundRequestDetails@@XZ +??C?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PEAVInboundRequestDetails@@@@QEBAQEAVInboundRequestDetails@@XZ +??C?$AutoCleanup@V?$AutoRelease@VReceiveOperation@Client@WSMan@@@@PEAVReceiveOperation@Client@WSMan@@@@QEAAPEAVReceiveOperation@Client@WSMan@@XZ +??C?$AutoCleanup@V?$AutoRelease@VReconnectOperation@Client@WSMan@@@@PEAVReconnectOperation@Client@WSMan@@@@QEAAPEAVReconnectOperation@Client@WSMan@@XZ +??C?$AutoCleanup@V?$AutoRelease@VSendOperation@Client@WSMan@@@@PEAVSendOperation@Client@WSMan@@@@QEAAPEAVSendOperation@Client@WSMan@@XZ +??C?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PEAVShell@Client@WSMan@@@@QEAAPEAVShell@Client@WSMan@@XZ +??C?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PEAVShell@Client@WSMan@@@@QEBAQEAVShell@Client@WSMan@@XZ +??C?$AutoCleanup@V?$AutoRelease@VSignalOperation@Client@WSMan@@@@PEAVSignalOperation@Client@WSMan@@@@QEAAPEAVSignalOperation@Client@WSMan@@XZ +??C?$AutoCleanup@V?$AutoRelease@VUserRecord@@@@PEAVUserRecord@@@@QEAAPEAVUserRecord@@XZ +??C?$AutoCleanup@V?$AutoRelease@VWSManHttpListener@@@@PEAVWSManHttpListener@@@@QEAAPEAVWSManHttpListener@@XZ +??C?$AutoCleanup@VAutoBstrNoAlloc@@PEAG@@QEAAPEAGXZ +??C?$AutoCleanup@VAutoBstrNoAlloc@@PEAG@@QEBAQEAGXZ +??C?$AutoCleanup@VAutoChainContext@@PEBU_CERT_CHAIN_CONTEXT@@@@QEAAPEBU_CERT_CHAIN_CONTEXT@@XZ +??C?$AutoCleanup@VAutoImpersonateUser@@PEAX@@QEAAPEAXXZ +??C?$AutoCleanup@VAutoImpersonateUser@@PEAX@@QEBAQEAXXZ +??C?$AutoCleanup@VAutoMIClass@@PEAU_MI_Class@@@@QEAAPEAU_MI_Class@@XZ +??C?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@QEBAAEAPEAVExpiredOperationIdRecord@@XZ +??C?$SafeSet_Iterator@PEAVCListenerOperation@@@@QEBAAEBQEAVCListenerOperation@@XZ +??D?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QEBAAEAVCertThumbprintMappedSet@CServiceConfigSettings@@XZ +??D?$SafeMap_Iterator@VKey@Locale@@K@@QEBAAEAKXZ +??D?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@QEBAAEAPEAVExpiredOperationIdRecord@@XZ +??D?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@QEBAAEAPEAVOptionValue@SessionOptions@Client@WSMan@@XZ +??D?$SafeSet_Iterator@PEAVCCertMapping@@@@QEBAAEBQEAVCCertMapping@@XZ +??D?$SafeSet_Iterator@PEAVCListenerOperation@@@@QEBAAEBQEAVCListenerOperation@@XZ +??D?$SafeSet_Iterator@PEAVCShellUriSettings@@@@QEBAAEBQEAVCShellUriSettings@@XZ +??E?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@QEAAXH@Z +??E?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@QEAAXH@Z +??E?$SafeMap_Iterator@PEAVCShellUriSettings@@UEmpty@@@@QEAAXH@Z +??E?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QEAAXH@Z +??E?$SafeMap_Iterator@VStringKeyCI@@K@@QEAAXH@Z +??E?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@QEAAXH@Z +??E?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@QEAAXH@Z +??E?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@QEAAXH@Z +??_7?$SafeMap@PEAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PEAVCCertMapping@@@@@@6B@ DATA +??_7?$SafeMap@PEAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@6B@ DATA +??_7?$SafeMap@PEAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PEAVCShellUriSettings@@@@@@6B@ DATA +??_7?$SafeMap@PEAVCollector@@UEmpty@@V?$SafeSet_Iterator@PEAVCollector@@@@@@6B@ DATA +??_7?$SafeMap@PEAVHostOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVHostOperation@@@@@@6B@ DATA +??_7?$SafeMap@PEAVIOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVIOperation@@@@@@6B@ DATA +??_7?$SafeMap@PEAVListenerSourceSubscription@@UEmpty@@V?$SafeSet_Iterator@PEAVListenerSourceSubscription@@@@@@6B@ DATA +??_7?$SafeMap@PEAVPushSubscription@@UEmpty@@V?$SafeSet_Iterator@PEAVPushSubscription@@@@@@6B@ DATA +??_7?$SafeMap@PEAXUEmpty@@V?$SafeSet_Iterator@PEAX@@@@6B@ DATA +??_7?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@6B@ DATA +??_7?$SafeMap@UUserKey@@PEAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@@@6B@ DATA +??_7?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@6B@ DATA +??_7?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@6B@ DATA +??_7?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@6B@ DATA +??_7?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@6B@ DATA +??_7?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@6B@ DATA +??_7?$SafeMap@VStringKeyStore@@PEAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@@@6B@ DATA +??_7?$SafeMap@VStringKeyStore@@PEAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@@@6B@ DATA +??_7?$SafeMap@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@6B@ DATA +??_7?$SafeMap@_KPEAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@@@6B@ DATA +??_7?$SafeSet@PEAVCCertMapping@@@@6B@ DATA +??_7?$SafeSet@PEAVCListenerOperation@@@@6B@ DATA +??_7?$SafeSet@PEAVCShellUriSettings@@@@6B@ DATA +??_7?$SafeSet@PEAX@@6B@ DATA +??_7BufferFormatter@@6B@ DATA +??_7CBaseConfigCache@@6BIConfigChangeObserver@@@ DATA +??_7CBaseConfigCache@@6BILifeTimeMgmt@@@ DATA +??_7CClientConfigCache@@6BIConfigChangeObserver@@@ DATA +??_7CClientConfigCache@@6BILifeTimeMgmt@@@ DATA +??_7CConfigManager@@6B@ DATA +??_7CErrorContext@@6B@ DATA +??_7CRequestContext@@6BCErrorContext@@@ DATA +??_7CRequestContext@@6BEtwCorrelationHelper@@@ DATA +??_7CServiceConfigCache@@6BIConfigChangeObserver@@@ DATA +??_7CServiceConfigCache@@6BILifeTimeMgmt@@@ DATA +??_7CWSManEPR@@6B@ DATA +??_7CWSManGroupPolicyManager@@6B@ DATA +??_7CWSManResource@@6B@ DATA +??_7CWSManResourceNoResourceUri@@6B@ DATA +??_7CWSManSecurityUI@@6B@ DATA +??_7CWinRSPluginConfigCache@@6BIConfigChangeObserver@@@ DATA +??_7CWinRSPluginConfigCache@@6BILifeTimeMgmt@@@ DATA +??_7CircularBufferFormatter@@6B@ DATA +??_7EtwCorrelationHelper@@6B@ DATA +??_7IConfigChangeObserver@@6B@ DATA +??_7ILifeTimeMgmt@@6B@ DATA +??_7IRequestContext@@6B@ DATA +??_7IWSManGroupPolicyObserver@@6B@ DATA +??_7IWSManGroupPolicyPublisher@@6B@ DATA +??_7PacketParser@@6B@ DATA +??_7UserAuthzRecord@@6B@ DATA +??_7UserRecord@@6B@ DATA +??_FCErrorContext@@QEAAXXZ +??_FRBUFFER@@QEAAXXZ +?Acquire@?$SafeMap@PEAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@@@UEBAXXZ +?Acquire@?$SafeMap@PEAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PEAVCCertMapping@@@@@@UEBAXXZ +?Acquire@?$SafeMap@PEAVCListenerConnect@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerConnect@@PEAV1@@@@@UEBAXXZ +?Acquire@?$SafeMap@PEAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@@@UEBAXXZ +?Acquire@?$SafeMap@PEAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@UEBAXXZ +?Acquire@?$SafeMap@PEAVCListenerReceive@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerReceive@@PEAV1@@@@@UEBAXXZ +?Acquire@?$SafeMap@PEAVCListenerSend@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerSend@@PEAV1@@@@@UEBAXXZ +?Acquire@?$SafeMap@PEAVCListenerSignal@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerSignal@@PEAV1@@@@@UEBAXXZ +?Acquire@?$SafeMap@PEAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PEAVCShellUriSettings@@@@@@UEBAXXZ +?Acquire@?$SafeMap@PEAVCollector@@UEmpty@@V?$SafeMap_Iterator@PEAVCollector@@UEmpty@@@@@@UEBAXXZ +?Acquire@?$SafeMap@PEAVCollector@@UEmpty@@V?$SafeSet_Iterator@PEAVCollector@@@@@@UEBAXXZ +?Acquire@?$SafeMap@PEAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVHostOperation@@UEmpty@@@@@@UEBAXXZ +?Acquire@?$SafeMap@PEAVHostOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVHostOperation@@@@@@UEBAXXZ +?Acquire@?$SafeMap@PEAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVIOperation@@UEmpty@@@@@@UEBAXXZ +?Acquire@?$SafeMap@PEAVIOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVIOperation@@@@@@UEBAXXZ +?Acquire@?$SafeMap@PEAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PEAVListenerSourceSubscription@@UEmpty@@@@@@UEBAXXZ +?Acquire@?$SafeMap@PEAVListenerSourceSubscription@@UEmpty@@V?$SafeSet_Iterator@PEAVListenerSourceSubscription@@@@@@UEBAXXZ +?Acquire@?$SafeMap@PEAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PEAVPushSubscription@@UEmpty@@@@@@UEBAXXZ +?Acquire@?$SafeMap@PEAVPushSubscription@@UEmpty@@V?$SafeSet_Iterator@PEAVPushSubscription@@@@@@UEBAXXZ +?Acquire@?$SafeMap@PEAXUEmpty@@V?$SafeSet_Iterator@PEAX@@@@UEBAXXZ +?Acquire@?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@UEBAXXZ +?Acquire@?$SafeMap@UUserKey@@PEAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@@@UEBAXXZ +?Acquire@?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@UEBAXXZ +?Acquire@?$SafeMap@VGuidKey@@PEAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PEAVCListenerCommand@@@@@@UEBAXXZ +?Acquire@?$SafeMap@VKey@CWmiPtrCache@@VMapping@2@V?$SafeMap_Iterator@VKey@CWmiPtrCache@@VMapping@2@@@@@UEBAXXZ +?Acquire@?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@UEBAXXZ +?Acquire@?$SafeMap@VStringKey@@PEAVListenerEvents@@V?$SafeMap_Iterator@VStringKey@@PEAVListenerEvents@@@@@@UEBAXXZ +?Acquire@?$SafeMap@VStringKey@@PEAVListenerSourceSubscription@@V?$SafeMap_Iterator@VStringKey@@PEAVListenerSourceSubscription@@@@@@UEBAXXZ +?Acquire@?$SafeMap@VStringKey@@UOption@WinRM_OperationOptions@@V?$SafeMap_Iterator@VStringKey@@UOption@WinRM_OperationOptions@@@@@@UEBAXXZ +?Acquire@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@UEBAXXZ +?Acquire@?$SafeMap@VStringKeyCI@@PEAVIISEndpoint@@V?$SafeMap_Iterator@VStringKeyCI@@PEAVIISEndpoint@@@@@@UEBAXXZ +?Acquire@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@UEBAXXZ +?Acquire@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@UEBAXXZ +?Acquire@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@UEBAXXZ +?Acquire@?$SafeMap@VStringKeyStore@@PEAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@@@UEBAXXZ +?Acquire@?$SafeMap@VStringKeyStore@@PEAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@@@UEBAXXZ +?Acquire@?$SafeMap@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@V?$SafeMap_Iterator@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@@@@@UEBAXXZ +?Acquire@?$SafeMap@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@UEBAXXZ +?Acquire@?$SafeMap@_KPEAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@@@UEBAXXZ +?Acquire@?$SafeMap_Lock@PEAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@@@QEAAXXZ +?Acquire@?$SafeMap_Lock@PEAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PEAVCCertMapping@@@@@@QEAAXXZ +?Acquire@?$SafeMap_Lock@PEAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@@@QEAAXXZ +?Acquire@?$SafeMap_Lock@PEAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@QEAAXXZ +?Acquire@?$SafeMap_Lock@PEAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PEAVCShellUriSettings@@UEmpty@@@@@@QEAAXXZ +?Acquire@?$SafeMap_Lock@PEAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PEAVCShellUriSettings@@@@@@QEAAXXZ +?Acquire@?$SafeMap_Lock@PEAXUEmpty@@V?$SafeMap_Iterator@PEAXUEmpty@@@@@@QEAAXXZ +?Acquire@?$SafeMap_Lock@PEAXUEmpty@@V?$SafeSet_Iterator@PEAX@@@@QEAAXXZ +?Acquire@?$SafeMap_Lock@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QEAAXXZ +?Acquire@?$SafeMap_Lock@UUserKey@@PEAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@@@QEAAXXZ +?Acquire@?$SafeMap_Lock@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QEAAXXZ +?Acquire@?$SafeMap_Lock@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QEAAXXZ +?Acquire@?$SafeMap_Lock@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEAAXXZ +?Acquire@?$SafeMap_Lock@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@QEAAXXZ +?Acquire@?$SafeMap_Lock@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QEAAXXZ +?Acquire@?$SafeMap_Lock@VStringKeyStore@@PEAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@@@QEAAXXZ +?Acquire@?$SafeMap_Lock@VStringKeyStore@@PEAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@@@QEAAXXZ +?Acquire@?$SafeMap_Lock@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@QEAAXXZ +?Acquire@?$SafeMap_Lock@_KPEAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@@@QEAAXXZ +?Acquire@CWSManCriticalSection@@QEAAXXZ +?AcquireExclusive@FastLock@@QEAAXXZ +?AcquireShared@FastLock@@QEAAXXZ +?Acquired@?$SafeMap_Lock@PEAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@@@QEAA_NXZ +?Acquired@?$SafeMap_Lock@PEAVCListenerConnect@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerConnect@@PEAV1@@@@@QEAA_NXZ +?Acquired@?$SafeMap_Lock@PEAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@@@QEAA_NXZ +?Acquired@?$SafeMap_Lock@PEAVCListenerReceive@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerReceive@@PEAV1@@@@@QEAA_NXZ +?Acquired@?$SafeMap_Lock@PEAVCListenerSend@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerSend@@PEAV1@@@@@QEAA_NXZ +?Acquired@?$SafeMap_Lock@PEAVCListenerSignal@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerSignal@@PEAV1@@@@@QEAA_NXZ +?Acquired@?$SafeMap_Lock@PEAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PEAVCShellUriSettings@@UEmpty@@@@@@QEAA_NXZ +?Acquired@?$SafeMap_Lock@PEAVCollector@@UEmpty@@V?$SafeMap_Iterator@PEAVCollector@@UEmpty@@@@@@QEAA_NXZ +?Acquired@?$SafeMap_Lock@PEAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVHostOperation@@UEmpty@@@@@@QEAA_NXZ +?Acquired@?$SafeMap_Lock@PEAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVIOperation@@UEmpty@@@@@@QEAA_NXZ +?Acquired@?$SafeMap_Lock@PEAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PEAVListenerSourceSubscription@@UEmpty@@@@@@QEAA_NXZ +?Acquired@?$SafeMap_Lock@PEAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PEAVPushSubscription@@UEmpty@@@@@@QEAA_NXZ +?Acquired@?$SafeMap_Lock@PEAXUEmpty@@V?$SafeMap_Iterator@PEAXUEmpty@@@@@@QEAA_NXZ +?Acquired@?$SafeMap_Lock@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QEAA_NXZ +?Acquired@?$SafeMap_Lock@UUserKey@@PEAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@@@QEAA_NXZ +?Acquired@?$SafeMap_Lock@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QEAA_NXZ +?Acquired@?$SafeMap_Lock@VGuidKey@@PEAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PEAVCListenerCommand@@@@@@QEAA_NXZ +?Acquired@?$SafeMap_Lock@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QEAA_NXZ +?Acquired@?$SafeMap_Lock@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEAA_NXZ +?Acquired@?$SafeMap_Lock@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@QEAA_NXZ +?Acquired@?$SafeMap_Lock@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QEAA_NXZ +?Acquired@?$SafeMap_Lock@VStringKeyStore@@PEAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@@@QEAA_NXZ +?Acquired@?$SafeMap_Lock@VStringKeyStore@@PEAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@@@QEAA_NXZ +?Acquired@?$SafeMap_Lock@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@QEAA_NXZ +?Acquired@?$SafeMap_Lock@_KPEAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@@@QEAA_NXZ +?Add@?$SafeMap@PEAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PEAVCCertMapping@@@@@@QEAA_NAEBQEAVCCertMapping@@AEBUEmpty@@AEAVIRequestContext@@@Z +?Add@?$SafeMap@PEAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@QEAA_NAEBQEAVCListenerOperation@@AEBUEmpty@@AEAVIRequestContext@@@Z +?Add@?$SafeMap@PEAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PEAVCShellUriSettings@@@@@@QEAA_NAEBQEAVCShellUriSettings@@AEBUEmpty@@AEAVIRequestContext@@@Z +?Add@?$SafeMap@PEAXUEmpty@@V?$SafeSet_Iterator@PEAX@@@@QEAA_NAEBQEAXAEBUEmpty@@AEAVIRequestContext@@@Z +?Add@?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QEAA_NAEBUPluginKey@@AEBKAEAVIRequestContext@@@Z +?Add@?$SafeMap@UUserKey@@PEAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@@@QEAA_NAEBUUserKey@@AEBQEAVBlockedRecord@@AEAVIRequestContext@@@Z +?Add@?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QEAA_NAEBVCertThumbprintKey@@AEBVCertThumbprintMappedSet@CServiceConfigSettings@@AEAVIRequestContext@@@Z +?Add@?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QEAA_NAEBVKey@Locale@@AEBKAEAVIRequestContext@@@Z +?Add@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEAA_NAEBVStringKeyCI@@AEBKAEAVIRequestContext@@@Z +?Add@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@QEAA_NAEBVStringKeyCI@@AEBUEmpty@@AEAVIRequestContext@@@Z +?Add@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QEAA_NAEBVStringKeyCI@@AEBUUSER_CONTEXT_INFO@WSManHttpListener@@AEAVIRequestContext@@@Z +?Add@?$SafeMap@VStringKeyStore@@PEAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@@@QEAA_NAEBVStringKeyStore@@AEBQEAVExpiredOperationIdRecord@@AEAVIRequestContext@@@Z +?Add@?$SafeMap@VStringKeyStore@@PEAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@@@QEAA_NAEBVStringKeyStore@@AEBQEAVServerFullDuplexChannel@@AEAVIRequestContext@@@Z +?Add@?$SafeMap@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@QEAA_NAEBW4WSManSessionOption@@AEBQEAVOptionValue@SessionOptions@Client@WSMan@@AEAVIRequestContext@@@Z +?Add@?$SafeMap@_KPEAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@@@QEAA_NAEB_KAEBQEAVSendPacketArgs@RobustConnectionBuffer@@AEAVIRequestContext@@@Z +?Add@?$SafeSet@PEAVCCertMapping@@@@QEAA_NAEBQEAVCCertMapping@@AEAVIRequestContext@@@Z +?Add@?$SafeSet@PEAVCListenerOperation@@@@QEAA_NAEBQEAVCListenerOperation@@AEAVIRequestContext@@@Z +?Add@?$SafeSet@PEAVCShellUriSettings@@@@QEAA_NAEBQEAVCShellUriSettings@@AEAVIRequestContext@@@Z +?Add@?$SafeSet@PEAX@@QEAA_NAEBQEAXAEAVIRequestContext@@@Z +?Add@?$SafeSet@VStringKeyCI@@@@QEAA_NAEBVStringKeyCI@@AEAVIRequestContext@@@Z +?AddDefaultPlugins@ConfigUpdate@@SAHPEAVIRequestContext@@H@Z +?AddKey@CWSManResourceNoResourceUri@@QEAAHPEBG0PEAVIRequestContext@@@Z +?AddMessage@CRequestContext@@AEAAHPEBGPEAPEAD1@Z +?AddOption@CWSManResourceNoResourceUri@@QEAAHPEBG0HPEAVIRequestContext@@@Z +?AddOptionSet@CWSManResourceNoResourceUri@@QEAAHPEAU_WSMAN_OPTION_SET@@PEAVIRequestContext@@@Z +?AddPacket@PacketParser@@QEAA_NPEAVPacket@@_N11@Z +?AddRef@CWSManSecurityUI@@UEAAKXZ +?AddRef@ILifeTimeMgmt@@UEAAJXZ +?AddRef@UserRecord@@QEAA_NAEAVIRequestContext@@@Z +?AddSource@CBaseConfigCache@@IEAAHPEAVIRequestContext@@PEAVCConfigChangeSource@@@Z +?AddToMap@CBaseConfigCache@@AEAAHPEAVIRequestContext@@AEAVAutoLocalFree@@@Z +?Alloc@WSManMemory@@SAPEAX_KHW4_NitsFaultMode@@@Z +?AllocBstr@WSManMemory@@SAPEAGPEBGHH@Z +?AllocBstrLen@WSManMemory@@SAPEAGPEBGIHH@Z +?AllocCache@CClientConfigCache@@CAPEAVCBaseConfigCache@@XZ +?AllocCache@CServiceConfigCache@@CAPEAVCBaseConfigCache@@XZ +?AllocCache@CWinRSPluginConfigCache@@CAPEAVCBaseConfigCache@@XZ +?AllocSysString@TSTRBUFFER@@QEBAJPEAPEAG@Z +?AllowBasic@CCommonConfigSettings@@UEBAHXZ +?AllowClientCertificate@CCommonConfigSettings@@UEBAHXZ +?AllowCredSsp@CCommonConfigSettings@@UEBAHXZ +?AllowKerberos@CCommonConfigSettings@@UEBAHXZ +?AllowNegotiate@CCommonConfigSettings@@UEBAHXZ +?AllowUnencrypted@CCommonConfigSettings@@UEBAHXZ +?Append@SBUFFER@@QEAAJPEAEI@Z +?Append@SBUFFER@@QEAAJPEAV1@@Z +?Append@TSTRBUFFER@@QEAAJPEBG@Z +?Append@TSTRBUFFER@@QEAAJPEBGII@Z +?AppendChar@TSTRBUFFER@@QEAAJG@Z +?AppendEscapeXmlAttribute@TSTRBUFFER@@QEAAJPEBGG@Z +?AppendEscapeXmlContent@TSTRBUFFER@@QEAAJPEBG_N@Z +?AppendXmlElem@TSTRBUFFER@@QEAAJPEBG0HKPEAU_XML_ATTRIB@@@Z +?AppendXmlElemWithNamespace@TSTRBUFFER@@QEAAJPEBG00HKPEAU_XML_ATTRIB@@@Z +?AppendXmlElemWithNamespaceAndPrefix@TSTRBUFFER@@QEAAJPEBG000HKPEAU_XML_ATTRIB@@@Z +?AppendXmlElemWithPrefix@TSTRBUFFER@@QEAAJPEBG00HKPEAU_XML_ATTRIB@@@Z +?AppendXmlEndElem@TSTRBUFFER@@QEAAJPEBG@Z +?AppendXmlEndElemWithPrefix@TSTRBUFFER@@QEAAJPEBG0@Z +?AppendXmlEndFragment@TSTRBUFFER@@QEAAJXZ +?AppendXmlEndItem@TSTRBUFFER@@QEAAJXZ +?AppendXmlStartElem@TSTRBUFFER@@QEAAJPEBGHKPEAU_XML_ATTRIB@@@Z +?AppendXmlStartElemWithNamespace@TSTRBUFFER@@QEAAJPEBG0HKPEAU_XML_ATTRIB@@@Z +?AppendXmlStartElemWithNamespaceAndPrefix@TSTRBUFFER@@QEAAJPEBG00HKPEAU_XML_ATTRIB@@@Z +?AppendXmlStartElemWithNamespaces@TSTRBUFFER@@QEAAJPEBGKPEAU_XML_NAMESPACE_PREFIX@@HKPEAU_XML_ATTRIB@@@Z +?AppendXmlStartElemWithNamespacesAndPrefixes@TSTRBUFFER@@QEAAJPEBG0KPEAU_XML_NAMESPACE_PREFIX@@HKPEAU_XML_ATTRIB@@@Z +?AppendXmlStartElemWithPrefix@TSTRBUFFER@@QEAAJPEBG0HKPEAU_XML_ATTRIB@@@Z +?AppendXmlStartFragment@TSTRBUFFER@@QEAAJXZ +?AppendXmlStartItem@TSTRBUFFER@@QEAAJXZ +?ApplyQuota@UserRecord@@QEAA_NW4OperationType@@AEAVIRequestContext@@PEBVProvider@Catalog@@PEAVCServiceConfigSettings@@@Z +?ApplySecurity@ConfigRegistry@@IEAAHPEAVIRequestContext@@PEAUHKEY__@@PEBG2@Z +?AsReference@?$SafeMap@PEAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PEAVCCertMapping@@@@@@QEAAAEAV1@XZ +?AsReference@?$SafeMap@PEAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@QEAAAEAV1@XZ +?AsReference@?$SafeMap@PEAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PEAVCShellUriSettings@@@@@@QEAAAEAV1@XZ +?AsReference@?$SafeMap@PEAXUEmpty@@V?$SafeSet_Iterator@PEAX@@@@QEAAAEAV1@XZ +?AsReference@?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QEAAAEAV1@XZ +?AsReference@?$SafeMap@UUserKey@@PEAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@@@QEAAAEAV1@XZ +?AsReference@?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QEAAAEAV1@XZ +?AsReference@?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QEAAAEAV1@XZ +?AsReference@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEAAAEAV1@XZ +?AsReference@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QEAAAEAV1@XZ +?AsReference@?$SafeMap@VStringKeyStore@@PEAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@@@QEAAAEAV1@XZ +?AsReference@?$SafeMap@VStringKeyStore@@PEAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@@@QEAAAEAV1@XZ +?AsReference@?$SafeMap@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@QEAAAEAV1@XZ +?AsReference@?$SafeMap@_KPEAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@@@QEAAAEAV1@XZ +?AuthzComplete@UserRecord@@UEAAKPEAX0W4AdministratorType@UserAuthzRecord@@KPEBG@Z +?BOMS@PacketFormatter@@0QBUBOMInfo@1@B DATA +?BeginRevertToSelf@CSecurity@@SAHPEAPEAXK@Z +?BuildFragmentTransfer@CWSManResourceNoResourceUri@@UEAAHAEAVBufferFormatter@@@Z +?BuildOptionSet@CWSManResourceNoResourceUri@@QEAAHAEAVBufferFormatter@@@Z +?BuildSelectorSet@CWSManEPR@@UEAAHAEAVBufferFormatter@@@Z +?BuildSelectorSet@CWSManResourceNoResourceUri@@UEAAHAEAVBufferFormatter@@@Z +?CHARSETS@PacketFormatter@@0QBUCharsetInfo@1@B DATA +?ChangeLogging@CServiceConfigCache@@QEAAXW4ErrorLogging@@@Z +?CheckSharedSSLConfiguration@ConfigRegistry@@IEAAHPEAVIRequestContext@@PEBG1HPEAH@Z +?Clear@?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QEAAXXZ +?Clear@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEAAXXZ +?Clear@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QEAAXXZ +?Clear@?$SafeMap@VStringKeyStore@@PEAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@@@QEAAXXZ +?ClearKeys@CWSManResourceNoResourceUri@@QEAAHXZ +?ClearOptions@CWSManResourceNoResourceUri@@QEAAHXZ +?ClearRegistryKeys@ConfigRegistry@@IEAAHPEAVIRequestContext@@@Z +?ClearSubKeys@@YAHPEAUHKEY__@@PEAVIRequestContext@@@Z +?CompleteWithErrorContext@CRequestContext@@QEAAXPEAU_WSMAN_PLUGIN_REQUEST@@@Z +?Confirm@ExtendedSemantic@@2KB DATA +?Copy@TSTRBUFFER@@QEAAJPEBG@Z +?CopyString@@YAPEAGPEAVIRequestContext@@W4CallSiteId@@PEBG@Z +?CopyString@@YAPEAGPEBGAEBHAEAVIRequestContext@@@Z +?CopyString@MessageId@PacketParser@@QEAAKPEBGH@Z +?CopyTo@CErrorContext@@UEBAXPEAVIRequestContext@@@Z +?CopyTo@CRequestContext@@UEBAXPEAVIRequestContext@@@Z +?CreateActivityId@EventHandler@WSMan@@SAXAEAU_GUID@@@Z +?CreateAnEvent@SoapSemanticConverter@@QEAAKKPEAVSemanticMessage@@AEAVBufferFormatter@@PEAVIRequestContext@@@Z +?CreateAutoConfiguredListener@CConfigManager@@AEAAHPEAVIRequestContext@@PEAVLISTENER_IDENTITY@@@Z +?CreateInstance@?$ILoader@VAdminSid@CSecurity@@@@IEAA_NAEAVIRequestContext@@@Z +?CreateInstance@?$ILoader@VEventHandler@WSMan@@@@IEAA_NAEAVIRequestContext@@@Z +?CreateInstance@?$ILoader@VInteractiveSid@CSecurity@@@@IEAA_NAEAVIRequestContext@@@Z +?CreateInstance@?$ILoader@VIpHlpApiDllLoader@@@@IEAA_NAEAVIRequestContext@@@Z +?CreateInstance@?$ILoader@VMachineName@@@@IEAA_NAEAVIRequestContext@@@Z +?CreateInstance@?$ILoader@VNetworkServiceSid@CSecurity@@@@IEAA_NAEAVIRequestContext@@@Z +?CreateInstance@?$ILoader@VNtDsApiDllLoader@@@@IEAA_NAEAVIRequestContext@@@Z +?CreateInstance@?$ILoader@VResources@Locale@@@@IEAA_NAEAVIRequestContext@@@Z +?CreateInstance@?$ILoader@VShell32DllLoader@@@@IEAA_NAEAVIRequestContext@@@Z +?CreateInstance@?$ILoader@VShlWApiDllLoader@@@@IEAA_NAEAVIRequestContext@@@Z +?CreateInstance@?$ILoader@VSubscriptionManager@@@@IEAA_NAEAVIRequestContext@@@Z +?CreateInstance@?$ILoader@VUser32DllLoader@@@@IEAA_NAEAVIRequestContext@@@Z +?CreateInstance@?$ILoader@VWSManMemCryptManager@@@@IEAA_NAEAVIRequestContext@@@Z +?CreateKey@ConfigRegistry@@IEAAHPEAVIRequestContext@@PEBGPEAPEAUHKEY__@@1KPEAK@Z +?CreateNew@CBaseConfigCache@@CAPEAV1@PEAVIRequestContext@@PEAVCConfigCacheMap@1@P6APEAV1@XZW4ErrorLogging@@H@Z +?CreateProvHost@@YAPEAXPEAUHWND__@@PEAK1PEAJ@Z +?CreateRenderingInformation@CWSManSecurityUI@@AEAAHPEAVIRequestContext@@@Z +?CreateResponse@SoapSemanticConverter@@QEAAKKW4_MI_OperationCallback_ResponseType@@AEAVBufferFormatter@@PEAVIRequestContext@@@Z +?CreateSessionGuid@SessionId@PacketParser@@QEAAKPEBGH@Z +?Data@?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@IEBAAEAV?$STLMap@PEAVCCertMapping@@UEmpty@@@@XZ +?Data@?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@IEBAAEAV?$STLMap@PEAVCListenerOperation@@UEmpty@@@@XZ +?Data@?$SafeMap_Iterator@PEAVCShellUriSettings@@UEmpty@@@@IEBAAEAV?$STLMap@PEAVCShellUriSettings@@UEmpty@@@@XZ +?Data@?$SafeMap_Iterator@PEAXUEmpty@@@@IEBAAEAV?$STLMap@PEAXUEmpty@@@@XZ +?Data@?$SafeMap_Iterator@UPluginKey@@K@@IEBAAEAV?$STLMap@UPluginKey@@K@@XZ +?Data@?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@IEBAAEAV?$STLMap@UUserKey@@PEAVBlockedRecord@@@@XZ +?Data@?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@IEBAAEAV?$STLMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@XZ +?Data@?$SafeMap_Iterator@VKey@Locale@@K@@IEBAAEAV?$STLMap@VKey@Locale@@K@@XZ +?Data@?$SafeMap_Iterator@VStringKeyCI@@K@@IEBAAEAV?$STLMap@VStringKeyCI@@K@@XZ +?Data@?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@IEBAAEAV?$STLMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@XZ +?Data@?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@IEBAAEAV?$STLMap@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@XZ +?Data@?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@IEBAAEAV?$STLMap@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@XZ +?Data@?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@IEBAAEAV?$STLMap@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@XZ +?Data@?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@IEBAAEAV?$STLMap@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@XZ +?DeInitialize@?$SafeMap@PEAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PEAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PEAVCCertMapping@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PEAVCListenerConnect@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerConnect@@PEAV1@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PEAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PEAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PEAVCListenerReceive@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerReceive@@PEAV1@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PEAVCListenerSend@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerSend@@PEAV1@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PEAVCListenerSignal@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerSignal@@PEAV1@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PEAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PEAVCShellUriSettings@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PEAVCollector@@UEmpty@@V?$SafeMap_Iterator@PEAVCollector@@UEmpty@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PEAVCollector@@UEmpty@@V?$SafeSet_Iterator@PEAVCollector@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PEAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVHostOperation@@UEmpty@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PEAVHostOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVHostOperation@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PEAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVIOperation@@UEmpty@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PEAVIOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVIOperation@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PEAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PEAVListenerSourceSubscription@@UEmpty@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PEAVListenerSourceSubscription@@UEmpty@@V?$SafeSet_Iterator@PEAVListenerSourceSubscription@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PEAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PEAVPushSubscription@@UEmpty@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PEAVPushSubscription@@UEmpty@@V?$SafeSet_Iterator@PEAVPushSubscription@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PEAXUEmpty@@V?$SafeSet_Iterator@PEAX@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@UUserKey@@PEAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VGuidKey@@PEAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PEAVCListenerCommand@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VKey@CWmiPtrCache@@VMapping@2@V?$SafeMap_Iterator@VKey@CWmiPtrCache@@VMapping@2@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VStringKey@@PEAVListenerEvents@@V?$SafeMap_Iterator@VStringKey@@PEAVListenerEvents@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VStringKey@@PEAVListenerSourceSubscription@@V?$SafeMap_Iterator@VStringKey@@PEAVListenerSourceSubscription@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VStringKey@@UOption@WinRM_OperationOptions@@V?$SafeMap_Iterator@VStringKey@@UOption@WinRM_OperationOptions@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VStringKeyCI@@PEAVIISEndpoint@@V?$SafeMap_Iterator@VStringKeyCI@@PEAVIISEndpoint@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VStringKeyStore@@PEAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VStringKeyStore@@PEAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@V?$SafeMap_Iterator@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@_KPEAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@@@UEAA_NAEAVIRequestContext@@@Z +?DeInitialize@CWSManGroupPolicyManager@@AEAAHXZ +?DeInitialize@EventHandler@WSMan@@QEAA_NAEAVIRequestContext@@@Z +?Debug@ExtendedSemantic@@2KB DATA +?Decode@PacketFormatter@@QEBAKPEAPEAVPacket@@_N@Z +?DecodeFaultObject@CRequestContext@@AEAAKPEAU_FWXML_ELEMENT@@AEAPEBG11@Z +?DecodeFaultObject@CRequestContext@@AEAAKPEBGKAEAPEBG11@Z +?DecodeFaultObjectProvider@CRequestContext@@AEAAKPEAU_FWXML_ELEMENT@@AEAPEBG1@Z +?DecodeFaultObjectProviderMessage@CRequestContext@@AEAAKPEAU_FWXML_ELEMENT@@AEAPEBG@Z +?DecodeFaultReason@CRequestContext@@AEAAKPEAU_FWXML_ELEMENT@@AEAPEBG@Z +?DecreaseProfileCount@UserRecord@@QEAAXXZ +?DeleteConfigKey@ConfigRegistry@@KAHPEAVIRequestContext@@PEBG1H@Z +?DeleteCredentialsFromCredmanStore@CConfigManager@@SAHPEAVIRequestContext@@PEAG@Z +?DeleteKey@@YAHPEAVIRequestContext@@PEBG1@Z +?DeleteKey@ConfigRegistry@@KAHPEAVIRequestContext@@PEBGH@Z +?DeleteSubkeys@ConfigRegistry@@KAHPEAVIRequestContext@@PEAUHKEY__@@PEBGHH@Z +?DeleteValues@ConfigRegistry@@KAHPEAVIRequestContext@@PEAUHKEY__@@@Z +?Detach@?$AutoCleanup@V?$AutoDelete@G@@PEAG@@QEAAPEAGXZ +?Detach@?$AutoCleanup@V?$AutoDelete@UIPRange@CWSManIPFilter@@@@PEAUIPRange@CWSManIPFilter@@@@QEAAPEAUIPRange@CWSManIPFilter@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@PEAU_WSMAN_STREAM_ID_SET@@@@QEAAPEAU_WSMAN_STREAM_ID_SET@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@V?$Handle@VISubscription@@@@@@PEAV?$Handle@VISubscription@@@@@@QEAAPEAV?$Handle@VISubscription@@@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PEAVCCertMapping@@@@@@PEAV?$SafeSet@PEAVCCertMapping@@@@@@QEAAPEAV?$SafeSet@PEAVCCertMapping@@@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PEAVCShellUriSettings@@@@@@PEAV?$SafeSet@PEAVCShellUriSettings@@@@@@QEAAPEAV?$SafeSet@PEAVCShellUriSettings@@@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@V?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@@PEAV?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@@QEAAPEAV?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VAdminSid@CSecurity@@@@PEAVAdminSid@CSecurity@@@@QEAAPEAVAdminSid@CSecurity@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VBlockedRecord@@@@PEAVBlockedRecord@@@@QEAAPEAVBlockedRecord@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VCBaseConfigCache@@@@PEAVCBaseConfigCache@@@@QEAAPEAVCBaseConfigCache@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VCCertMapping@@@@PEAVCCertMapping@@@@QEAAPEAVCCertMapping@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VCListenerSettings@@@@PEAVCListenerSettings@@@@QEAAPEAVCListenerSettings@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PEAVCServiceWatcher@CServiceConfigCache@@@@QEAAPEAVCServiceWatcher@CServiceConfigCache@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VCShellUriSettings@@@@PEAVCShellUriSettings@@@@QEAAPEAVCShellUriSettings@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VCWSManEPR@@@@PEAVCWSManEPR@@@@QEAAPEAVCWSManEPR@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VCWSManResource@@@@PEAVCWSManResource@@@@QEAAPEAVCWSManResource@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VCertHash@@@@PEAVCertHash@@@@QEAAPEAVCertHash@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PEAVConfigUpdate@@@@QEAAPEAVConfigUpdate@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@QEAAPEAVEnumSinkEx@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VEventHandler@WSMan@@@@PEAVEventHandler@WSMan@@@@QEAAPEAVEventHandler@WSMan@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VExpiredOperationIdRecord@@@@PEAVExpiredOperationIdRecord@@@@QEAAPEAVExpiredOperationIdRecord@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@QEAAPEAVGeneralSinkEx@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PEAVIQueryDASHSMASHInterface@@@@QEAAPEAVIQueryDASHSMASHInterface@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PEAVISpecification@@@@QEAAPEAVISpecification@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VInteractiveSid@CSecurity@@@@PEAVInteractiveSid@CSecurity@@@@QEAAPEAVInteractiveSid@CSecurity@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VIpHlpApiDllLoader@@@@PEAVIpHlpApiDllLoader@@@@QEAAPEAVIpHlpApiDllLoader@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VMachineName@@@@PEAVMachineName@@@@QEAAPEAVMachineName@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VNetworkServiceSid@CSecurity@@@@PEAVNetworkServiceSid@CSecurity@@@@QEAAPEAVNetworkServiceSid@CSecurity@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VNtDsApiDllLoader@@@@PEAVNtDsApiDllLoader@@@@QEAAPEAVNtDsApiDllLoader@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@QEAAPEAVOptionValue@SessionOptions@Client@WSMan@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VResources@Locale@@@@PEAVResources@Locale@@@@QEAAPEAVResources@Locale@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VSecurityEntry@Catalog@@@@PEAVSecurityEntry@Catalog@@@@QEAAPEAVSecurityEntry@Catalog@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VServiceSoapProcessor@@@@PEAVServiceSoapProcessor@@@@QEAAPEAVServiceSoapProcessor@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VShell32DllLoader@@@@PEAVShell32DllLoader@@@@QEAAPEAVShell32DllLoader@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VShlWApiDllLoader@@@@PEAVShlWApiDllLoader@@@@QEAAPEAVShlWApiDllLoader@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VSubscriptionManager@@@@PEAVSubscriptionManager@@@@QEAAPEAVSubscriptionManager@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PEAVTSTRBUFFER@@@@QEAAPEAVTSTRBUFFER@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VUser32DllLoader@@@@PEAVUser32DllLoader@@@@QEAAPEAVUser32DllLoader@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VWSManMemCryptManager@@@@PEAVWSManMemCryptManager@@@@QEAAPEAVWSManMemCryptManager@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PEAVWmiEnumContext@@@@QEAAPEAVWmiEnumContext@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PEAVXmlReader@@@@QEAAPEAVXmlReader@@XZ +?Detach@?$AutoCleanup@V?$AutoDeleteVector@$$CBG@@PEBG@@QEAAPEBGXZ +?Detach@?$AutoCleanup@V?$AutoDeleteVector@D@@PEAD@@QEAAPEADXZ +?Detach@?$AutoCleanup@V?$AutoDeleteVector@E@@PEAE@@QEAAPEAEXZ +?Detach@?$AutoCleanup@V?$AutoDeleteVector@G@@PEAG@@QEAAPEAGXZ +?Detach@?$AutoCleanup@V?$AutoDeleteVector@PEAG@@PEAPEAG@@QEAAPEAPEAGXZ +?Detach@?$AutoCleanup@V?$AutoDeleteVector@PEBG@@PEAPEBG@@QEAAPEAPEBGXZ +?Detach@?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PEAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QEAAPEAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@XZ +?Detach@?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PEAU_WINRS_RUN_COMMAND_ARG@@@@QEAAPEAU_WINRS_RUN_COMMAND_ARG@@XZ +?Detach@?$AutoCleanup@V?$AutoDeleteVector@U_WSMAN_OPTION@@@@PEAU_WSMAN_OPTION@@@@QEAAPEAU_WSMAN_OPTION@@XZ +?Detach@?$AutoCleanup@V?$AutoFree@E@@PEAE@@QEAAPEAEXZ +?Detach@?$AutoCleanup@V?$AutoLocklessItemRecycle@VPacket@@@@PEAVPacket@@@@QEAAPEAVPacket@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PEAUIClientSecurity@@@@QEAAPEAUIClientSecurity@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PEAUIEnumWbemClassObject@@@@QEAAPEAUIEnumWbemClassObject@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PEAUIErrorInfo@@@@QEAAPEAUIErrorInfo@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PEAUIUnknown@@@@QEAAPEAUIUnknown@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PEAUIWbemClassObject@@@@QEAAPEAUIWbemClassObject@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PEAUIWbemContext@@@@QEAAPEAUIWbemContext@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PEAUIWbemLocator@@@@QEAAPEAUIWbemLocator@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PEAUIWbemObjectTextSrc@@@@QEAAPEAUIWbemObjectTextSrc@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PEAUIWbemPath@@@@QEAAPEAUIWbemPath@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PEAUIWbemPathKeyList@@@@QEAAPEAUIWbemPathKeyList@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PEAUIWbemQualifierSet@@@@QEAAPEAUIWbemQualifierSet@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PEAUIWbemQuery@@@@QEAAPEAUIWbemQuery@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PEAUIWbemServices@@@@QEAAPEAUIWbemServices@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VApplication@Client@WSMan@@@@PEAVApplication@Client@WSMan@@@@QEAAPEAVApplication@Client@WSMan@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCBaseConfigCache@@@@PEAVCBaseConfigCache@@@@QEAAPEAVCBaseConfigCache@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PEAVCClientConfigSettings@@@@QEAAPEAVCClientConfigSettings@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCCommonConfigSettings@@@@PEAVCCommonConfigSettings@@@@QEAAPEAVCCommonConfigSettings@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PEAVCConfigManager@@@@QEAAPEAVCConfigManager@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PEAVCRemoteSession@@@@QEAAPEAVCRemoteSession@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PEAVCRequestContext@@@@QEAAPEAVCRequestContext@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCServiceConfigSettings@@@@PEAVCServiceConfigSettings@@@@QEAAPEAVCServiceConfigSettings@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PEAVCWSManEPR@@@@QEAAPEAVCWSManEPR@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyCache@@@@PEAVCWSManGroupPolicyCache@@@@QEAAPEAVCWSManGroupPolicyCache@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyManager@@@@PEAVCWSManGroupPolicyManager@@@@QEAAPEAVCWSManGroupPolicyManager@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCWSManObject@@@@PEAVCWSManObject@@@@QEAAPEAVCWSManObject@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PEAVCWinRSPluginConfigCache@@@@QEAAPEAVCWinRSPluginConfigCache@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigSettings@@@@PEAVCWinRSPluginConfigSettings@@@@QEAAPEAVCWinRSPluginConfigSettings@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCommand@Client@WSMan@@@@PEAVCommand@Client@WSMan@@@@QEAAPEAVCommand@Client@WSMan@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@QEAAPEAVEnumSinkEx@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@QEAAPEAVGeneralSinkEx@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VIPCSoapProcessor@@@@PEAVIPCSoapProcessor@@@@QEAAPEAVIPCSoapProcessor@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PEAVIRequestContext@@@@QEAAPEAVIRequestContext@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VReceiveOperation@Client@WSMan@@@@PEAVReceiveOperation@Client@WSMan@@@@QEAAPEAVReceiveOperation@Client@WSMan@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VSendOperation@Client@WSMan@@@@PEAVSendOperation@Client@WSMan@@@@QEAAPEAVSendOperation@Client@WSMan@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PEAVShell@Client@WSMan@@@@QEAAPEAVShell@Client@WSMan@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VSignalOperation@Client@WSMan@@@@PEAVSignalOperation@Client@WSMan@@@@QEAAPEAVSignalOperation@Client@WSMan@@XZ +?Detach@?$AutoCleanup@VAutoBstrNoAlloc@@PEAG@@QEAAPEAGXZ +?Detach@?$AutoCleanup@VAutoCertContext@@PEBU_CERT_CONTEXT@@@@QEAAPEBU_CERT_CONTEXT@@XZ +?Detach@?$AutoCleanup@VAutoHandle@@PEAX@@QEAAPEAXXZ +?Detach@?$AutoCleanup@VAutoImpersonateUser@@PEAX@@QEAAPEAXXZ +?Detach@?$AutoCleanup@VAutoLocalFree@@PEAX@@QEAAPEAXXZ +?Detach@?$AutoCleanup@VAutoMIClass@@PEAU_MI_Class@@@@QEAAPEAU_MI_Class@@XZ +?Detach@?$AutoCleanup@VAutoMIInstance@@PEAU_MI_Instance@@@@QEAAPEAU_MI_Instance@@XZ +?Detach@?$AutoCleanup@VAutoRegKey@@PEAUHKEY__@@@@QEAAPEAUHKEY__@@XZ +?Detach@?$AutoCleanup@VAutoSecurityDescriptor@@PEAX@@QEAAPEAXXZ +?Detach@?$AutoCleanup@VAutoWaitHandle@@PEAX@@QEAAPEAXXZ +?Detach@BufferFormatter@@QEAAPEAEXZ +?Discard@CServiceWatcher@CServiceConfigCache@@QEAAXXZ +?DoOnChange@CBaseConfigCache@@IEAAXW4ConfigChangeSources@@KW4ConfigChangeSeverityType@@@Z +?DoesThreadOwnLock@CWSManCriticalSection@@QEAAHXZ +?Down@?$LoaderSerializer@VSubscriptionManager@@$01@@AEAAJXZ +?DropData@CircularBufferFormatter@@QEAAXK@Z +?DuplicateCurrentToken@CSecurity@@SAHPEAPEAXKPEAU_SECURITY_ATTRIBUTES@@W4_SECURITY_IMPERSONATION_LEVEL@@W4_TOKEN_TYPE@@H@Z +?EnableAllPrivileges@@YAHPEAPEAE@Z +?Encode@PacketFormatter@@QEBAKPEAPEAVPacket@@@Z +?Encode@PacketFormatter@@QEBAKPEBGKPEAEKPEAPEAEPEAK_N@Z +?EndOfStream@PacketParser@@QEAAXK@Z +?EndRevertToSelf@CSecurity@@SAHPEAX@Z +?EnsureActivityIdOnThread@EventHandler@WSMan@@SAXXZ +?EnsureNoActiveCaches@CClientConfigCache@@SAXXZ +?EnsureNoActiveCaches@CServiceConfigCache@@SAXXZ +?Error@EventLog@@SAXK@Z +?Error@EventLog@@SAXKGPEAPEBG@Z +?Error@EventLog@@SAXKPEBG@Z +?ErrorAction@ExtendedSemantic@@2KB DATA +?EventEnabled@EventHandler@WSMan@@AEAA_NAEBU_EVENT_DESCRIPTOR@@@Z +?EventProviderEnabled@EventHandler@WSMan@@AEAA_NXZ +?EventWrite@EventHandler@WSMan@@AEAAXAEBU_EVENT_DESCRIPTOR@@KPEAU_EVENT_DATA_DESCRIPTOR@@@Z +?ExtractContextId@PacketParser@@QEAAHPEAPEBGKPEBG@Z +?ExtractShellId@PacketParser@@QEAAHPEAVCRequestContext@@PEAGK@Z +?ExtractSidFromToken@CSecurity@@SAHPEAVIRequestContext@@PEAXAEAVAutoLocalFree@@@Z +?FindExisting@CBaseConfigCache@@CAPEAV1@PEAVCConfigCacheMap@1@PEBGW4ErrorLogging@@@Z +?FindMatch@CResourceAlias@@AEAAPEAU_ALIAS_INFORMATION@@PEBG@Z +?First@TSTRBUFFER@@QEBAPEBGXZ +?Format@Locale@@AEBA_NKPEAPEADPEAPEAXPEAGKGW4CallSiteId@@@Z +?FormatDataDescriptor@EventHandler@WSMan@@SAXAEAU_EVENT_DATA_DESCRIPTOR@@AEAG@Z +?FormatDataDescriptor@EventHandler@WSMan@@SAXAEAU_EVENT_DATA_DESCRIPTOR@@AEAJ@Z +?FormatDataDescriptor@EventHandler@WSMan@@SAXAEAU_EVENT_DATA_DESCRIPTOR@@AEAK@Z +?FormatDataDescriptor@EventHandler@WSMan@@SAXAEAU_EVENT_DATA_DESCRIPTOR@@PEBD@Z +?FormatDataDescriptor@EventHandler@WSMan@@SAXAEAU_EVENT_DATA_DESCRIPTOR@@PEBG@Z +?FormatWithFallback@Locale@@AEBA_NKPEAPEAD0PEAPEAXPEAGK@Z +?Free@WSManMemory@@SAXPEAXH@Z +?FreeBstr@WSManMemory@@SAXPEAGHH@Z +?FreeInstance@?$ILoader@VAdminSid@CSecurity@@@@QEAA_NAEAVIRequestContext@@_N@Z +?FreeInstance@?$ILoader@VEventHandler@WSMan@@@@QEAA_NAEAVIRequestContext@@_N@Z +?FreeInstance@?$ILoader@VInteractiveSid@CSecurity@@@@QEAA_NAEAVIRequestContext@@_N@Z +?FreeInstance@?$ILoader@VIpHlpApiDllLoader@@@@QEAA_NAEAVIRequestContext@@_N@Z +?FreeInstance@?$ILoader@VMachineName@@@@QEAA_NAEAVIRequestContext@@_N@Z +?FreeInstance@?$ILoader@VNetworkServiceSid@CSecurity@@@@QEAA_NAEAVIRequestContext@@_N@Z +?FreeInstance@?$ILoader@VNtDsApiDllLoader@@@@QEAA_NAEAVIRequestContext@@_N@Z +?FreeInstance@?$ILoader@VResources@Locale@@@@QEAA_NAEAVIRequestContext@@_N@Z +?FreeInstance@?$ILoader@VShell32DllLoader@@@@QEAA_NAEAVIRequestContext@@_N@Z +?FreeInstance@?$ILoader@VShlWApiDllLoader@@@@QEAA_NAEAVIRequestContext@@_N@Z +?FreeInstance@?$ILoader@VSubscriptionManager@@@@QEAA_NAEAVIRequestContext@@_N@Z +?FreeInstance@?$ILoader@VUser32DllLoader@@@@QEAA_NAEAVIRequestContext@@_N@Z +?FreeInstance@?$ILoader@VWSManMemCryptManager@@@@QEAA_NAEAVIRequestContext@@_N@Z +?FreeInstance@?$LoaderSerializer@VSubscriptionManager@@$01@@QEAA_NAEAVIRequestContext@@_N@Z +?FreeMemory@RBUFFER@@QEAAXXZ +?FreeMemory@SBUFFER@@QEAAXXZ +?FreePacket@PacketParser@@QEAAXXZ +?FreeXmlStructure@PacketParser@@QEAAXXZ +?GenerateTransferId@EventHandler@WSMan@@SAXAEBU_EVENT_DESCRIPTOR@@PEBU_GUID@@1@Z +?GenerateTransferIdImp@EventHandler@WSMan@@AEAAXAEBU_EVENT_DESCRIPTOR@@PEBU_GUID@@1@Z +?GetAccessRights@CWSManSecurityUI@@UEAAJPEBU_GUID@@KPEAPEAU_SI_ACCESS@@PEAK2@Z +?GetAction@PacketParser@@QEBAAEBV?$PacketElement@PEBG@1@XZ +?GetActionType@SoapSemanticConverter@@AEAA_NPEBGPEAW4_MI_OperationCallback_ResponseType@@PEAW4_MI_CallbackMode@@PEAVIRequestContext@@@Z +?GetActivityIdOnCurrentThread@EventHandler@WSMan@@SAXAEAU_GUID@@@Z +?GetBaseUri@CWSManResource@@QEAAPEBGXZ +?GetBomIndex@PacketFormatter@@QEBA?AW4Charset@1@XZ +?GetBookmarkXml@PacketParser@@QEAAAEBV?$PacketElement@PEAU_FWXML_ELEMENT@@@1@XZ +?GetBool@CConfigManager@@QEAAHPEAVIRequestContext@@W4ConfigSetting@@PEAHPEAW4WSManConfigSource@@@Z +?GetBool@CWSManGroupPolicyManager@@QEAAHPEAVIRequestContext@@W4WSManGroupPolicySetting@@PEAHPEAW4WSManGroupPolicySettingState@@@Z +?GetBuffer@BufferFormatter@@UEAAPEAEXZ +?GetBuffer@BufferFormatter@@UEBAPEBEXZ +?GetBuffer@CircularBufferFormatter@@UEAAPEAEXZ +?GetBuffer@CircularBufferFormatter@@UEBAPEBEXZ +?GetBuffer@XmlReader@@QEAAPEBGXZ +?GetBufferLength@PacketParser@@UEAAKXZ +?GetBufferPtr@PacketParser@@UEAAPEAPEAGXZ +?GetBufferSize@BufferFormatter@@QEBAKXZ +?GetCacheCount@CClientConfigCache@@SAKXZ +?GetCacheCount@CServiceConfigCache@@SAKXZ +?GetCalculationSize@BufferFormatter@@UEBAK_N@Z +?GetCalculationSize@CircularBufferFormatter@@UEBAK_N@Z +?GetCharInUse@TSTRBUFFER@@QEBAIXZ +?GetCharset@PacketFormatter@@QEBA?AW4Charset@1@XZ +?GetCharsetLen@PacketFormatter@@QEBAKXZ +?GetCharsetName@PacketFormatter@@QEBAPEBDXZ +?GetChildCount@ChildLifeTimeManager@@QEBAJXZ +?GetConfigCache@CBaseConfigCache@@KAPEAV1@PEAVIRequestContext@@W4ErrorLogging@@P6APEAV1@XZPEAVFastLock@@AEAV?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@H@Z +?GetConfigCache@CClientConfigCache@@SAPEAV1@PEAVIRequestContext@@H@Z +?GetConfigCache@CServiceConfigCache@@SAPEAV1@PEAVIRequestContext@@W4ErrorLogging@@H@Z +?GetConfigCache@CWinRSPluginConfigCache@@SAPEAV1@PEAVIRequestContext@@W4ErrorLogging@@H@Z +?GetConfigManager@CConfigManager@@SAPEAV1@XZ +?GetConfigManagerForCertMapping@CConfigManager@@SAPEAV1@PEAVCERTMAPPING_IDENTITY@@PEAVIRequestContext@@@Z +?GetConfigManagerForListener@CConfigManager@@SAPEAV1@PEAVLISTENER_IDENTITY@@PEAVIRequestContext@@@Z +?GetConfigManagerForShellUri@CConfigManager@@SAPEAV1@PEAVSHELLURI_IDENTITY@@PEAVIRequestContext@@@Z +?GetConfigManagerForTable@CConfigManager@@SAPEAV1@PEAVWSMANCONFIGTABLE_IDENTITY@@PEAVIRequestContext@@@Z +?GetConfigXml@CConfigManager@@QEAAHPEAVIRequestContext@@PEAPEBGPEAPEAVXmlReader@@PEAH@Z +?GetCorrelationId@PacketParser@@QEAAAEAU_GUID@@XZ +?GetCurrentCertMappingIdentity@CConfigManager@@QEAAHPEAVCERTMAPPING_IDENTITY@@PEAVIRequestContext@@@Z +?GetCurrentListenerIdentity@CConfigManager@@QEAAHPEAVLISTENER_IDENTITY@@PEAVIRequestContext@@@Z +?GetCurrentSettings@CBaseConfigCache@@IEAAPEAVCCommonConfigSettings@@PEAVIRequestContext@@@Z +?GetCurrentSettings@CClientConfigCache@@QEAAPEAVCClientConfigSettings@@PEAVIRequestContext@@@Z +?GetCurrentSettings@CServiceConfigCache@@QEAAPEAVCServiceConfigSettings@@PEAVIRequestContext@@@Z +?GetCurrentSettings@CWinRSPluginConfigCache@@QEAAPEAVCWinRSPluginConfigSettings@@PEAVIRequestContext@@@Z +?GetCurrentShellUriIdentity@CConfigManager@@QEAAHPEAVSHELLURI_IDENTITY@@PEAVIRequestContext@@@Z +?GetCurrentTableIdentity@CConfigManager@@QEAAHPEAVWSMANCONFIGTABLE_IDENTITY@@PEAVIRequestContext@@@Z +?GetDataLocale@PacketParser@@QEBAAEBV?$PacketElement@PEBG@1@XZ +?GetDataLocaleHelper@PacketParser@@QEAAAEAVLocale@@XZ +?GetDescriptionElement@SoapSemanticConverter@@QEAAPEAU_FWXML_ELEMENT@@PEAU2@PEAVIRequestContext@@@Z +?GetDestructorIter@?$SafeMap@PEAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PEAVCCertMapping@@@@@@QEAAAEAV?$SafeSet_Iterator@PEAVCCertMapping@@@@XZ +?GetDestructorIter@?$SafeMap@PEAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PEAVCShellUriSettings@@@@@@QEAAAEAV?$SafeSet_Iterator@PEAVCShellUriSettings@@@@XZ +?GetDestructorIter@?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QEAAAEAV?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@XZ +?GetDestructorIter@?$SafeMap@VStringKeyStore@@PEAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@@@QEAAAEAV?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@XZ +?GetDestructorIter@?$SafeMap@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@QEAAAEAV?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@XZ +?GetDialect@Fragment@PacketParser@@QEBAPEBGXZ +?GetError@BufferFormatter@@QEBAKXZ +?GetErrorCode@CErrorContext@@UEBAKXZ +?GetEventType@SoapSemanticConverter@@AEAAKPEBGPEAVIRequestContext@@@Z +?GetEventTypeAndResponseElement@SoapSemanticConverter@@AEAAPEAU_FWXML_ELEMENT@@PEAU2@PEAKPEAVIRequestContext@@@Z +?GetExtendedErrorString@CErrorContext@@UEAAPEAGXZ +?GetExtendedErrorString@CRequestContext@@UEAAPEAGXZ +?GetFaultToXml@PacketParser@@QEBAAEBVReferenceParameters@1@XZ +?GetFaultXML@CErrorContext@@UEBAPEBGXZ +?GetFaultXML@CRequestContext@@UEBAPEBGXZ +?GetFaultXMLPrivate@CRequestContext@@AEAAXPEAPEAD0KHKKPEBG11@Z +?GetFirstConfigManagerForCertMapping@CConfigManager@@SAPEAV1@PEBG@Z +?GetFirstConfigManagerForListener@CConfigManager@@SAPEAV1@PEBG@Z +?GetFirstConfigManagerForShellUri@CConfigManager@@SAPEAV1@PEBG@Z +?GetFirstConfigManagerForTable@CConfigManager@@SAPEAV1@W4WSMANTableConfigType@@PEBG@Z +?GetFormat@PacketFormatter@@QEBA?AW4Charset@1@XZ +?GetFormatterMode@BufferFormatter@@QEAA?AW4Charset@PacketFormatter@@XZ +?GetFragment@PacketParser@@QEBAAEBVFragment@1@XZ +?GetFragmentDialect@CWSManResourceNoResourceUri@@QEAAPEBGXZ +?GetFragmentPath@CWSManResourceNoResourceUri@@QEAAPEBGXZ +?GetGroupPolicyManager@CWSManGroupPolicyManager@@SAPEAV1@PEAVIRequestContext@@PEBG@Z +?GetHeap@WSManMemory@@SAPEAXXZ +?GetIISConfiguration@CConfigManager@@SAHPEAVIRequestContext@@PEBGPEAPEAVXmlReader@@@Z +?GetImpersonationToken@UserRecord@@QEAAPEAXXZ +?GetInheritTypes@CWSManSecurityUI@@UEAAJPEAPEAU_SI_INHERIT_TYPE@@PEAK@Z +?GetInitError@CWSManCriticalSection@@QEBAKXZ +?GetInstance@?$LoaderSerializer@VAdminSid@CSecurity@@$00@@QEAAPEAVAdminSid@CSecurity@@AEAVIRequestContext@@@Z +?GetInstance@?$LoaderSerializer@VEventHandler@WSMan@@$00@@QEAAPEAVEventHandler@WSMan@@AEAVIRequestContext@@@Z +?GetInstance@?$LoaderSerializer@VInteractiveSid@CSecurity@@$00@@QEAAPEAVInteractiveSid@CSecurity@@AEAVIRequestContext@@@Z +?GetInstance@?$LoaderSerializer@VIpHlpApiDllLoader@@$00@@QEAAPEAVIpHlpApiDllLoader@@AEAVIRequestContext@@@Z +?GetInstance@?$LoaderSerializer@VMachineName@@$00@@QEAAPEAVMachineName@@AEAVIRequestContext@@@Z +?GetInstance@?$LoaderSerializer@VNetworkServiceSid@CSecurity@@$00@@QEAAPEAVNetworkServiceSid@CSecurity@@AEAVIRequestContext@@@Z +?GetInstance@?$LoaderSerializer@VNtDsApiDllLoader@@$00@@QEAAPEAVNtDsApiDllLoader@@AEAVIRequestContext@@@Z +?GetInstance@?$LoaderSerializer@VResources@Locale@@$0A@@@QEAAPEAVResources@Locale@@AEAVIRequestContext@@@Z +?GetInstance@?$LoaderSerializer@VShell32DllLoader@@$00@@QEAAPEAVShell32DllLoader@@AEAVIRequestContext@@@Z +?GetInstance@?$LoaderSerializer@VShlWApiDllLoader@@$00@@QEAAPEAVShlWApiDllLoader@@AEAVIRequestContext@@@Z +?GetInstance@?$LoaderSerializer@VSubscriptionManager@@$01@@QEAAPEAVSubscriptionManager@@AEAVIRequestContext@@@Z +?GetInstance@?$LoaderSerializer@VUser32DllLoader@@$00@@QEAAPEAVUser32DllLoader@@AEAVIRequestContext@@@Z +?GetInstance@?$LoaderSerializer@VWSManMemCryptManager@@$00@@QEAAPEAVWSManMemCryptManager@@AEAVIRequestContext@@@Z +?GetInt@CConfigManager@@QEAAHPEAVIRequestContext@@W4ConfigSetting@@PEAKPEAW4WSManConfigSource@@@Z +?GetInt@CWSManGroupPolicyManager@@QEAAHPEAVIRequestContext@@W4WSManGroupPolicySetting@@PEAKPEAW4WSManGroupPolicySettingState@@@Z +?GetKey@UserRecord@@QEBA?AUUserKey@@XZ +?GetKeyCount@CWSManResourceNoResourceUri@@QEAAKXZ +?GetKeyValue@CWSManResourceNoResourceUri@@QEAAPEBGPEBG@Z +?GetKeys@CWSManResourceNoResourceUri@@QEAAPEAU_WSMAN_KEY@@XZ +?GetLCID@Locale@@QEAAKXZ +?GetLength@XmlReader@@QEAA_KXZ +?GetLocale@CRequestContext@@QEAAAEAVLocale@@XZ +?GetLocale@PacketParser@@QEBAAEBV?$PacketElement@PEBG@1@XZ +?GetLocaleHelper@PacketParser@@QEAAAEAVLocale@@XZ +?GetLocaleString@CRequestContext@@QEAAPEBGXZ +?GetLocator@CWSManResource@@QEAAPEAU_WSMAN_RESOURCE_LOCATOR@@XZ +?GetMachineId@PacketParser@@QEBAAEBV?$PacketElement@PEBG@1@XZ +?GetMap@?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@QEBAAEAV?$SafeMap@PEAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Iterator@PEAVCListenerConnect@@PEAV1@@@QEBAAEAV?$SafeMap@PEAVCListenerConnect@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerConnect@@PEAV1@@@@@XZ +?GetMap@?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@QEBAAEAV?$SafeMap@PEAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Iterator@PEAVCListenerReceive@@PEAV1@@@QEBAAEAV?$SafeMap@PEAVCListenerReceive@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerReceive@@PEAV1@@@@@XZ +?GetMap@?$SafeMap_Iterator@PEAVCListenerSend@@PEAV1@@@QEBAAEAV?$SafeMap@PEAVCListenerSend@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerSend@@PEAV1@@@@@XZ +?GetMap@?$SafeMap_Iterator@PEAVCListenerSignal@@PEAV1@@@QEBAAEAV?$SafeMap@PEAVCListenerSignal@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerSignal@@PEAV1@@@@@XZ +?GetMap@?$SafeMap_Iterator@PEAVCShellUriSettings@@UEmpty@@@@QEBAAEAV?$SafeMap@PEAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PEAVCShellUriSettings@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Iterator@PEAVCollector@@UEmpty@@@@QEBAAEAV?$SafeMap@PEAVCollector@@UEmpty@@V?$SafeMap_Iterator@PEAVCollector@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Iterator@PEAVHostOperation@@UEmpty@@@@QEBAAEAV?$SafeMap@PEAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVHostOperation@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Iterator@PEAVIOperation@@UEmpty@@@@QEBAAEAV?$SafeMap@PEAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVIOperation@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Iterator@PEAVListenerSourceSubscription@@UEmpty@@@@QEBAAEAV?$SafeMap@PEAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PEAVListenerSourceSubscription@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Iterator@PEAVPushSubscription@@UEmpty@@@@QEBAAEAV?$SafeMap@PEAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PEAVPushSubscription@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Iterator@PEAXUEmpty@@@@QEBAAEAV?$SafeMap@PEAXUEmpty@@V?$SafeMap_Iterator@PEAXUEmpty@@@@@@XZ +?GetMap@?$SafeMap_Iterator@UPluginKey@@K@@QEBAAEAV?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@XZ +?GetMap@?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@QEBAAEAV?$SafeMap@UUserKey@@PEAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@@@XZ +?GetMap@?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QEBAAEAV?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@XZ +?GetMap@?$SafeMap_Iterator@VGuidKey@@PEAVCListenerCommand@@@@QEBAAEAV?$SafeMap@VGuidKey@@PEAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PEAVCListenerCommand@@@@@@XZ +?GetMap@?$SafeMap_Iterator@VKey@Locale@@K@@QEBAAEAV?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@XZ +?GetMap@?$SafeMap_Iterator@VStringKeyCI@@K@@QEBAAEAV?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@XZ +?GetMap@?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@QEBAAEAV?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@QEBAAEAV?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@XZ +?GetMap@?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@QEBAAEAV?$SafeMap@VStringKeyStore@@PEAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@@@XZ +?GetMap@?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@QEBAAEAV?$SafeMap@VStringKeyStore@@PEAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@@@XZ +?GetMap@?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@QEBAAEAV?$SafeMap@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@XZ +?GetMap@?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@QEBAAEAV?$SafeMap@_KPEAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@@@XZ +?GetMap@?$SafeMap_Lock@PEAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@@@QEBAAEBV?$SafeMap@PEAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Lock@PEAVCListenerConnect@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerConnect@@PEAV1@@@@@QEBAAEBV?$SafeMap@PEAVCListenerConnect@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerConnect@@PEAV1@@@@@XZ +?GetMap@?$SafeMap_Lock@PEAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@@@QEBAAEBV?$SafeMap@PEAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Lock@PEAVCListenerReceive@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerReceive@@PEAV1@@@@@QEBAAEBV?$SafeMap@PEAVCListenerReceive@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerReceive@@PEAV1@@@@@XZ +?GetMap@?$SafeMap_Lock@PEAVCListenerSend@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerSend@@PEAV1@@@@@QEBAAEBV?$SafeMap@PEAVCListenerSend@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerSend@@PEAV1@@@@@XZ +?GetMap@?$SafeMap_Lock@PEAVCListenerSignal@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerSignal@@PEAV1@@@@@QEBAAEBV?$SafeMap@PEAVCListenerSignal@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerSignal@@PEAV1@@@@@XZ +?GetMap@?$SafeMap_Lock@PEAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PEAVCShellUriSettings@@UEmpty@@@@@@QEBAAEBV?$SafeMap@PEAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PEAVCShellUriSettings@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Lock@PEAVCollector@@UEmpty@@V?$SafeMap_Iterator@PEAVCollector@@UEmpty@@@@@@QEBAAEBV?$SafeMap@PEAVCollector@@UEmpty@@V?$SafeMap_Iterator@PEAVCollector@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Lock@PEAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVHostOperation@@UEmpty@@@@@@QEBAAEBV?$SafeMap@PEAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVHostOperation@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Lock@PEAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVIOperation@@UEmpty@@@@@@QEBAAEBV?$SafeMap@PEAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVIOperation@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Lock@PEAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PEAVListenerSourceSubscription@@UEmpty@@@@@@QEBAAEBV?$SafeMap@PEAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PEAVListenerSourceSubscription@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Lock@PEAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PEAVPushSubscription@@UEmpty@@@@@@QEBAAEBV?$SafeMap@PEAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PEAVPushSubscription@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Lock@PEAXUEmpty@@V?$SafeMap_Iterator@PEAXUEmpty@@@@@@QEBAAEBV?$SafeMap@PEAXUEmpty@@V?$SafeMap_Iterator@PEAXUEmpty@@@@@@XZ +?GetMap@?$SafeMap_Lock@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QEBAAEBV?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@XZ +?GetMap@?$SafeMap_Lock@UUserKey@@PEAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@@@QEBAAEBV?$SafeMap@UUserKey@@PEAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@@@XZ +?GetMap@?$SafeMap_Lock@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QEBAAEBV?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@XZ +?GetMap@?$SafeMap_Lock@VGuidKey@@PEAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PEAVCListenerCommand@@@@@@QEBAAEBV?$SafeMap@VGuidKey@@PEAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PEAVCListenerCommand@@@@@@XZ +?GetMap@?$SafeMap_Lock@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QEBAAEBV?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@XZ +?GetMap@?$SafeMap_Lock@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEBAAEBV?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@XZ +?GetMap@?$SafeMap_Lock@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@QEBAAEBV?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Lock@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QEBAAEBV?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@XZ +?GetMap@?$SafeMap_Lock@VStringKeyStore@@PEAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@@@QEBAAEBV?$SafeMap@VStringKeyStore@@PEAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@@@XZ +?GetMap@?$SafeMap_Lock@VStringKeyStore@@PEAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@@@QEBAAEBV?$SafeMap@VStringKeyStore@@PEAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@@@XZ +?GetMap@?$SafeMap_Lock@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@QEBAAEBV?$SafeMap@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@XZ +?GetMap@?$SafeMap_Lock@_KPEAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@@@QEBAAEBV?$SafeMap@_KPEAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@@@XZ +?GetMaxBatchItems@CCommonConfigSettings@@UEAAKXZ +?GetMaxBatchSize@CCommonConfigSettings@@UEAAKXZ +?GetMaxEnvelopeSize@CCommonConfigSettings@@UEAAKXZ +?GetMaxEnvelopeSize@PacketParser@@QEBAAEBV?$PacketElement@K@1@XZ +?GetMaxTimeOut@CCommonConfigSettings@@UEAAKXZ +?GetMessageAlloc@Locale@@QEBAPEBGAEAVAutoLocalFree@@KZZ +?GetMessageEmpty@Locale@@QEBAPEBGAEAVAutoLocalFree@@K@Z +?GetMessageId@CErrorContext@@UEBAKXZ +?GetMessageId@CRequestContext@@UEBAKXZ +?GetMessageId@PacketParser@@QEBAAEBV?$PacketElement@PEBG@1@XZ +?GetMessageW@Locale@@QEBA_NKPEAPEAD0PEAGK@Z +?GetMinBatchItems@CCommonConfigSettings@@UEAAKXZ +?GetMinBatchSize@CCommonConfigSettings@@UEAAKXZ +?GetMinBatchTimeout@CCommonConfigSettings@@UEAAKXZ +?GetMinEnvelopeSize@CCommonConfigSettings@@UEAAKXZ +?GetMinTimeOut@CCommonConfigSettings@@UEAAKXZ +?GetNamespacePrefix@NotUnderstandSoapHeader@PacketParser@@QEBAPEBGXZ +?GetNamespaceUrl@NotUnderstandSoapHeader@PacketParser@@QEBAPEBGXZ +?GetNewStorage@RBUFFER@@IEAAHI@Z +?GetNotUnderstandHeader@PacketParser@@QEBAAEBVNotUnderstandSoapHeader@1@XZ +?GetObjectInformation@CWSManSecurityUI@@UEAAJPEAU_SI_OBJECT_INFO@@@Z +?GetObjectW@?$ILoader@VAdminSid@CSecurity@@@@IEBAPEAVAdminSid@CSecurity@@XZ +?GetObjectW@?$ILoader@VEventHandler@WSMan@@@@IEBAPEAVEventHandler@WSMan@@XZ +?GetObjectW@?$ILoader@VInteractiveSid@CSecurity@@@@IEBAPEAVInteractiveSid@CSecurity@@XZ +?GetObjectW@?$ILoader@VIpHlpApiDllLoader@@@@IEBAPEAVIpHlpApiDllLoader@@XZ +?GetObjectW@?$ILoader@VMachineName@@@@IEBAPEAVMachineName@@XZ +?GetObjectW@?$ILoader@VNetworkServiceSid@CSecurity@@@@IEBAPEAVNetworkServiceSid@CSecurity@@XZ +?GetObjectW@?$ILoader@VNtDsApiDllLoader@@@@IEBAPEAVNtDsApiDllLoader@@XZ +?GetObjectW@?$ILoader@VResources@Locale@@@@IEBAPEAVResources@Locale@@XZ +?GetObjectW@?$ILoader@VShell32DllLoader@@@@IEBAPEAVShell32DllLoader@@XZ +?GetObjectW@?$ILoader@VShlWApiDllLoader@@@@IEBAPEAVShlWApiDllLoader@@XZ +?GetObjectW@?$ILoader@VSubscriptionManager@@@@IEBAPEAVSubscriptionManager@@XZ +?GetObjectW@?$ILoader@VUser32DllLoader@@@@IEBAPEAVUser32DllLoader@@XZ +?GetObjectW@?$ILoader@VWSManMemCryptManager@@@@IEBAPEAVWSManMemCryptManager@@XZ +?GetOperationId@PacketParser@@QEBAAEBV?$PacketElement@PEBG@1@XZ +?GetOptionCount@CWSManResourceNoResourceUri@@QEAAKXZ +?GetOptionTypes@CWSManResourceNoResourceUri@@QEAAPEAPEBGXZ +?GetOptionValue@CWSManResourceNoResourceUri@@QEAAPEBGPEBG@Z +?GetOptions@CWSManResourceNoResourceUri@@QEAAPEAU_WSMAN_OPTION@@XZ +?GetOptionsMustUnderstandValue@CWSManResourceNoResourceUri@@QEAAHXZ +?GetOptionsSetXml@PacketParser@@QEAAAEBV?$PacketElement@PEAU_FWXML_ELEMENT@@@1@XZ +?GetOriginalUri@CWSManResource@@QEAAPEBGXZ +?GetPacket@PacketParser@@QEAAPEAVPacket@@XZ +?GetPacketPool@PacketParser@@QEAAAEAVPacketPool@@XZ +?GetParser@XmlReader@@QEAAPEAXXZ +?GetPath@Fragment@PacketParser@@QEBAPEBGXZ +?GetPolicyLocation@CWSManGroupPolicyManager@@AEAAPEBGPEBU_WSMAN_POLICY_INFO@@@Z +?GetPolicyValueForConfigSetting@CConfigManager@@AEAAJW4ConfigSetting@@KPEAGPEAKPEAW4WSManGroupPolicySettingState@@PEAVIRequestContext@@@Z +?GetPolicyValueForConfigSetting@CConfigManager@@AEAAJW4ConfigSetting@@PEAKPEAW4WSManGroupPolicySettingState@@PEAVIRequestContext@@@Z +?GetProfileCount@UserRecord@@QEAAJXZ +?GetProfileHandle@UserRecord@@QEAA_JXZ +?GetPromptType@SoapSemanticConverter@@AEAA_NPEBGPEAW4_MI_PromptType@@PEAVIRequestContext@@@Z +?GetQuotaRecord@UserRecord@@QEBAPEBVQuotaRecord@@XZ +?GetRefCount@ILifeTimeMgmt@@QEAAJXZ +?GetReferenceParameters@ReferenceParameters@PacketParser@@QEBAPEBGXZ +?GetReferenceProperties@ReferenceParameters@PacketParser@@QEBAPEBGXZ +?GetRemainderPacket@PacketParser@@QEAAPEAVPacket@@PEAVIRequestContext@@@Z +?GetReplyToXml@PacketParser@@QEBAAEBVReferenceParameters@1@XZ +?GetRequestedDataLocale@PacketParser@@QEBAAEBV?$PacketElement@PEBG@1@XZ +?GetRequestedLocale@PacketParser@@QEBAAEBV?$PacketElement@PEBG@1@XZ +?GetResourceUri@PacketParser@@QEBAAEBV?$PacketElement@PEBG@1@XZ +?GetRoot@XmlReader@@QEAAPEAU_FWXML_ELEMENT@@XZ +?GetSecurity@CWSManSecurityUI@@UEAAJKPEAPEAXH@Z +?GetSecurityDescriptor@CConfigManager@@QEAAHPEAVIRequestContext@@W4ConfigSetting@@PEAPEAXPEAW4WSManConfigSource@@@Z +?GetSelectorSetXml@PacketParser@@QEAAAEBV?$PacketElement@PEAU_FWXML_ELEMENT@@@1@XZ +?GetSequenceId@PacketParser@@QEBAAEBV?$PacketElement@_K@1@XZ +?GetServiceCatalog@@YAPEAVCatalog@@XZ +?GetSessionId@PacketParser@@QEBAAEBV?$PacketElement@PEBG@1@XZ +?GetSessionIdGuid@PacketParser@@QEAAAEAU_GUID@@XZ +?GetSessionIdGuid@SessionId@PacketParser@@QEAAAEAU_GUID@@XZ +?GetSetting@CConfigManager@@QEAAHPEAVIRequestContext@@W4ConfigSetting@@KPEAGPEAKPEAW4WSManConfigSource@@@Z +?GetShellCompressionType@PacketParser@@QEBAAEBV?$PacketElement@PEBG@1@XZ +?GetSid@CSecurity@@SAPEAXXZ +?GetSizeInUse@SBUFFER@@QEBAIXZ +?GetSoapBody@PacketParser@@QEAAPEAU_FWXML_ELEMENT@@XZ +?GetSoapHeaders@PacketParser@@QEAAPEAU_FWXML_ELEMENT@@XZ +?GetSourceSubscriptionId@PacketParser@@QEBAAEBV?$PacketElement@PEBG@1@XZ +?GetSpaceUsed@BufferFormatter@@UEBAK_N@Z +?GetSpaceUsed@CircularBufferFormatter@@UEBAK_N@Z +?GetStrPtr@TSTRBUFFER@@QEAAPEAGXZ +?GetString@CConfigManager@@QEAAHPEAVIRequestContext@@W4ConfigSetting@@KPEAGPEAKPEAW4WSManConfigSource@@@Z +?GetString@CWSManGroupPolicyManager@@QEAAHPEAVIRequestContext@@W4WSManGroupPolicySetting@@KPEAGPEAKPEAW4WSManGroupPolicySettingState@@@Z +?GetString@Locale@@QEAAPEBGXZ +?GetStringInternal@CConfigManager@@AEAAHPEAVIRequestContext@@W4ConfigSetting@@KKPEAGPEAKPEAW4WSManConfigSource@@@Z +?GetStringInternal@CWSManGroupPolicyManager@@AEAAHPEAVIRequestContext@@W4WSManGroupPolicySetting@@KKPEAGPEAKPEAW4WSManGroupPolicySettingState@@@Z +?GetSubscriptionId@PacketParser@@QEBAAEBV?$PacketElement@PEBG@1@XZ +?GetSuccessCode@OnHTTPInitialize@@QEBAKXZ +?GetTimeout@PacketParser@@QEBAAEBV?$PacketElement@K@1@XZ +?GetTo@PacketParser@@QEBAAEBV?$PacketElement@PEBG@1@XZ +?GetToken@CSecurity@@SAPEAXXZ +?GetToken@UserRecord@@QEAAPEAXXZ +?GetUpdatedSDDL@CWSManSecurityUI@@QEAAPEAGPEAVIRequestContext@@@Z +?GetUri@CWSManResource@@QEAAPEBGXZ +?GetUserAdministratorType@UserRecord@@QEBA?AW4AdministratorType@UserAuthzRecord@@XZ +?GetUserNameW@UserRecord@@QEAAPEBGXZ +?GetValue@?$PacketElement@K@PacketParser@@QEBAKXZ +?GetValue@?$PacketElement@PEAU_FWXML_ELEMENT@@@PacketParser@@QEBAPEAU_FWXML_ELEMENT@@XZ +?GetValue@?$PacketElement@PEBG@PacketParser@@QEBAPEBGXZ +?GetValue@?$PacketElement@_K@PacketParser@@QEBA_KXZ +?GetWsmanData@TSTRBUFFER@@QEAAXPEAU_WSMAN_DATA@@@Z +?GetXmlDoc@PacketParser@@QEAAPEAUFWXML_DOCUMENT@@XZ +?GrowBuffer@BufferFormatter@@UEAAKK@Z +?GrowBuffer@BufferFormatter@@UEAAKXZ +?GrowBuffer@CircularBufferFormatter@@UEAAKK@Z +?GrowBuffer@CircularBufferFormatter@@UEAAKXZ +?HandleAutoConfiguredListener@CConfigManager@@QEAAHPEAVIRequestContext@@PEAVLISTENER_IDENTITY@@@Z +?HandleMigration@@YAHPEAVWSManMigrationContext@@@Z +?HasFaultXML@CRequestContext@@QEBAHXZ +?HasHtmlError@CRequestContext@@AEBAHXZ +?HasOption@CWSManResourceNoResourceUri@@QEAAHPEBG@Z +?ImpersonateUserOrSelf@CSecurity@@SAHW4CallSiteId@@PEAX@Z +?IncreaseProfileCount@UserRecord@@QEAAXXZ +?Info@EventLog@@SAXK@Z +?Info@EventLog@@SAXKGPEAPEBG@Z +?Info@EventLog@@SAXKPEBG@Z +?Init@CBaseConfigCache@@IEAAHPEAVIRequestContext@@H@Z +?Init@CWSManSecurityUI@@QEAAHPEAG0PEAVIRequestContext@@@Z +?Init@ConfigRegistry@@IEAAHXZ +?Init@XmlReader@@QEAAHPEAVIRequestContext@@PEAUWSMAN_OBJECT@@@Z +?Init@XmlReader@@QEAAHPEAVIRequestContext@@PEBG@Z +?InitCfgMgr@CConfigManager@@AEAAHPEAVWSMANCONFIGTABLE_IDENTITY@@@Z +?InitCfgMgr@CConfigManager@@AEAAHPEAVWSMANCONFIGTABLE_IDENTITY@@PEAUHKEY__@@1@Z +?InitMap@CBaseConfigCache@@CAHPEAVIRequestContext@@AEAV?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@@Z +?Initialize@?$SafeMap@PEAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@PEAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PEAVCCertMapping@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@PEAVCListenerConnect@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerConnect@@PEAV1@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@PEAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@PEAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@PEAVCListenerReceive@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerReceive@@PEAV1@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@PEAVCListenerSend@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerSend@@PEAV1@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@PEAVCListenerSignal@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerSignal@@PEAV1@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@PEAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PEAVCShellUriSettings@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@PEAVCollector@@UEmpty@@V?$SafeMap_Iterator@PEAVCollector@@UEmpty@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@PEAVCollector@@UEmpty@@V?$SafeSet_Iterator@PEAVCollector@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@PEAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVHostOperation@@UEmpty@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@PEAVHostOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVHostOperation@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@PEAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVIOperation@@UEmpty@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@PEAVIOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVIOperation@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@PEAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PEAVListenerSourceSubscription@@UEmpty@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@PEAVListenerSourceSubscription@@UEmpty@@V?$SafeSet_Iterator@PEAVListenerSourceSubscription@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@PEAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PEAVPushSubscription@@UEmpty@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@PEAVPushSubscription@@UEmpty@@V?$SafeSet_Iterator@PEAVPushSubscription@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@PEAXUEmpty@@V?$SafeSet_Iterator@PEAX@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@UUserKey@@PEAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@VGuidKey@@PEAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PEAVCListenerCommand@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@VKey@CWmiPtrCache@@VMapping@2@V?$SafeMap_Iterator@VKey@CWmiPtrCache@@VMapping@2@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@VStringKey@@PEAVListenerEvents@@V?$SafeMap_Iterator@VStringKey@@PEAVListenerEvents@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@VStringKey@@PEAVListenerSourceSubscription@@V?$SafeMap_Iterator@VStringKey@@PEAVListenerSourceSubscription@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@VStringKey@@UOption@WinRM_OperationOptions@@V?$SafeMap_Iterator@VStringKey@@UOption@WinRM_OperationOptions@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@VStringKeyCI@@PEAVIISEndpoint@@V?$SafeMap_Iterator@VStringKeyCI@@PEAVIISEndpoint@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@VStringKeyStore@@PEAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@VStringKeyStore@@PEAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@V?$SafeMap_Iterator@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap@_KPEAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@@@UEAA_NAEAVIRequestContext@@@Z +?Initialize@?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@QEAAAEAV1@XZ +?Initialize@?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@QEAAAEAV1@XZ +?Initialize@?$SafeMap_Iterator@PEAVCShellUriSettings@@UEmpty@@@@QEAAAEAV1@XZ +?Initialize@?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QEAAAEAV1@XZ +?Initialize@?$SafeMap_Iterator@VStringKeyCI@@K@@QEAAAEAV1@XZ +?Initialize@?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@QEAAAEAV1@XZ +?Initialize@?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@QEAAAEAV1@XZ +?Initialize@CWSManGroupPolicyManager@@AEAAHPEAVIRequestContext@@PEBG@Z +?Initialize@EventHandler@WSMan@@QEAA_NAEAVIRequestContext@@@Z +?Initialize@UserRecord@@SAXAEAV1@AEBUInitializer@1@@Z +?InitializeSources@CBaseConfigCache@@IEAAHPEAVIRequestContext@@HH@Z +?InitializeSourcesHelper@CBaseConfigCache@@MEAAHPEAVIRequestContext@@H@Z +?InitializeSourcesHelper@CClientConfigCache@@EEAAHPEAVIRequestContext@@H@Z +?InsertAtPosition@TSTRBUFFER@@QEAAJPEBGI@Z +?InternalFailure@CErrorContext@@UEAAXKZZ +?InternalFailure@CRequestContext@@UEAAXKZZ +?InternalHResult@CErrorContext@@UEAAXKKZZ +?InternalHResult@CRequestContext@@UEAAXKKZZ +?InternalParse@CWSManEPR@@MEAAHPEAVIRequestContext@@@Z +?InternalParse@CWSManResource@@MEAAHPEAVIRequestContext@@@Z +?IsActive@ChildLifeTimeManager@@QEAA_NXZ +?IsAdmin@UserRecord@@QEBA_NXZ +?IsAutoListenerConfigurationOn@CConfigManager@@SAHPEAVIRequestContext@@PEAH@Z +?IsCIM_Error@CRequestContext@@QEAAHXZ +?IsCurrentListenerAutoConfigured@CConfigManager@@QEAAHPEAVIRequestContext@@PEAH@Z +?IsCurrentListenerCompat@CConfigManager@@QEBA_NXZ +?IsDynAlloced@RBUFFER@@IEBAHXZ +?IsEPR@CWSManEPR@@UEAAHXZ +?IsEPR@CWSManResourceNoResourceUri@@UEAAHXZ +?IsEmpty@?$ILoader@VAdminSid@CSecurity@@@@QEBA_NXZ +?IsEmpty@?$ILoader@VEventHandler@WSMan@@@@QEBA_NXZ +?IsEmpty@?$ILoader@VInteractiveSid@CSecurity@@@@QEBA_NXZ +?IsEmpty@?$ILoader@VIpHlpApiDllLoader@@@@QEBA_NXZ +?IsEmpty@?$ILoader@VMachineName@@@@QEBA_NXZ +?IsEmpty@?$ILoader@VNetworkServiceSid@CSecurity@@@@QEBA_NXZ +?IsEmpty@?$ILoader@VNtDsApiDllLoader@@@@QEBA_NXZ +?IsEmpty@?$ILoader@VResources@Locale@@@@QEBA_NXZ +?IsEmpty@?$ILoader@VShell32DllLoader@@@@QEBA_NXZ +?IsEmpty@?$ILoader@VShlWApiDllLoader@@@@QEBA_NXZ +?IsEmpty@?$ILoader@VSubscriptionManager@@@@QEBA_NXZ +?IsEmpty@?$ILoader@VUser32DllLoader@@@@QEBA_NXZ +?IsEmpty@?$ILoader@VWSManMemCryptManager@@@@QEBA_NXZ +?IsEmpty@?$SafeMap@PEAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@QEBA_NXZ +?IsEmpty@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEBA_NXZ +?IsEmpty@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@QEBA_NXZ +?IsEvent@SoapSemanticConverter@@QEAA_NPEAU_FWXML_ELEMENT@@@Z +?IsEventEnabled@EventHandler@WSMan@@SA_NAEBU_EVENT_DESCRIPTOR@@@Z +?IsEventProviderEnabled@EventHandler@WSMan@@SA_NXZ +?IsFound@?$PacketElement@K@PacketParser@@QEBAHXZ +?IsFound@?$PacketElement@PEAU_FWXML_ELEMENT@@@PacketParser@@QEBAHXZ +?IsFound@?$PacketElement@PEBG@PacketParser@@QEBAHXZ +?IsFound@?$PacketElement@_K@PacketParser@@QEBAHXZ +?IsGeneratingError@CErrorContext@@UEBA_NXZ +?IsIdentifyPacket@PacketParser@@QEBAHXZ +?IsInCommitMode@BufferFormatter@@QEAA_NXZ +?IsInteractive@UserRecord@@QEBA_NXZ +?IsLocalSystemSid@CSecurity@@SAHPEAX@Z +?IsMustUnderstand@?$PacketElement@PEBG@PacketParser@@QEBAHXZ +?IsNonOperativePacket@PacketParser@@QEBAHXZ +?IsPolicyControlledSetting@CConfigManager@@QEAAHPEAVIRequestContext@@W4ConfigSetting@@PEAH@Z +?IsRobustConnectionPacket@PacketParser@@QEBAHXZ +?IsStreamingEvent@SoapSemanticConverter@@QEAA_NPEAU_FWXML_ELEMENT@@PEAVIRequestContext@@@Z +?IsStringNullOrEmpty@@YAHPEBG@Z +?IsValid@?$SafeMap@PEAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@QEBA_NXZ +?IsValid@?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QEBA_NXZ +?IsValid@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEBA_NXZ +?IsValid@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QEBA_NXZ +?IsValid@?$SafeMap@VStringKeyStore@@PEAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@@@QEBA_NXZ +?IsValid@?$SafeMap@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@PEAVCListenerConnect@@PEAV1@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@PEAVCListenerReceive@@PEAV1@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@PEAVCListenerSend@@PEAV1@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@PEAVCListenerSignal@@PEAV1@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@PEAVCShellUriSettings@@UEmpty@@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@PEAVCollector@@UEmpty@@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@PEAVHostOperation@@UEmpty@@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@PEAVIOperation@@UEmpty@@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@PEAVListenerSourceSubscription@@UEmpty@@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@PEAVPushSubscription@@UEmpty@@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@PEAXUEmpty@@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@UPluginKey@@K@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@VGuidKey@@PEAVCListenerCommand@@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@VKey@CWmiPtrCache@@VMapping@2@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@VKey@Locale@@K@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@VStringKey@@PEAVListenerEvents@@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@VStringKey@@PEAVListenerSourceSubscription@@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@VStringKey@@UOption@WinRM_OperationOptions@@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@VStringKeyCI@@K@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@VStringKeyCI@@PEAVIISEndpoint@@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@QEBA_NXZ +?IsValid@?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@QEBA_NXZ +?IsValid@CWSManCriticalSection@@QEBAHXZ +?IsValid@RBUFFER@@IEBAHXZ +?Key@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEBAPEBVStringKeyCI@@AEBV2@@Z +?Key@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QEBAPEBVStringKeyCI@@AEBV2@@Z +?Key@?$SafeMap_Iterator@VKey@Locale@@K@@QEBAAEBV0Locale@@XZ +?Key@?$SafeMap_Iterator@VStringKeyCI@@K@@QEBAAEBVStringKeyCI@@XZ +?Key@?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@QEBAAEBVStringKeyCI@@XZ +?LogError@CBaseConfigCache@@UEAAXKK@Z +?LogErrorCode@CErrorContext@@QEAAXXZ +?LogErrorCode@CRequestContext@@QEAAXXZ +?LogErrorMessage@CRequestContext@@QEAAXXZ +?LogNotificationEvent@CWSManGroupPolicyManager@@CAXK@Z +?LogReadErrors@CBaseConfigCache@@IEAA?AW4ErrorLogging@@W4ConfigChangeSources@@@Z +?LowerBound@?$SafeMap_Iterator@VKey@Locale@@K@@QEAAXAEBVKey@Locale@@@Z +?MakeUrlBinding@@YAHKPEAGPEAKPEBG222@Z +?MakeUrlBinding@@YAPEAGPEAVIRequestContext@@PEBG111@Z +?MapGeneric@CWSManSecurityUI@@UEAAJPEBU_GUID@@PEAEPEAK@Z +?Me@?$AutoCleanup@V?$AutoDelete@D@@PEAD@@AEAAAEAV?$AutoDelete@D@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@G@@PEAG@@AEAAAEAV?$AutoDelete@G@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@UIPRange@CWSManIPFilter@@@@PEAUIPRange@CWSManIPFilter@@@@AEAAAEAV?$AutoDelete@UIPRange@CWSManIPFilter@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@U_SID@@@@PEAU_SID@@@@AEAAAEAV?$AutoDelete@U_SID@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@PEAU_WSMAN_STREAM_ID_SET@@@@AEAAAEAV?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$Handle@VISubscription@@@@@@PEAV?$Handle@VISubscription@@@@@@AEAAAEAV?$AutoDelete@V?$Handle@VISubscription@@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PEAVCListenerConnect@@PEAV1@@@@@PEAV?$SafeMap_Iterator@PEAVCListenerConnect@@PEAV1@@@@@AEAAAEAV?$AutoDelete@V?$SafeMap_Iterator@PEAVCListenerConnect@@PEAV1@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PEAVCListenerReceive@@PEAV1@@@@@PEAV?$SafeMap_Iterator@PEAVCListenerReceive@@PEAV1@@@@@AEAAAEAV?$AutoDelete@V?$SafeMap_Iterator@PEAVCListenerReceive@@PEAV1@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PEAVCListenerSend@@PEAV1@@@@@PEAV?$SafeMap_Iterator@PEAVCListenerSend@@PEAV1@@@@@AEAAAEAV?$AutoDelete@V?$SafeMap_Iterator@PEAVCListenerSend@@PEAV1@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PEAVCListenerSignal@@PEAV1@@@@@PEAV?$SafeMap_Iterator@PEAVCListenerSignal@@PEAV1@@@@@AEAAAEAV?$AutoDelete@V?$SafeMap_Iterator@PEAVCListenerSignal@@PEAV1@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VGuidKey@@PEAVCListenerCommand@@@@@@PEAV?$SafeMap_Iterator@VGuidKey@@PEAVCListenerCommand@@@@@@AEAAAEAV?$AutoDelete@V?$SafeMap_Iterator@VGuidKey@@PEAVCListenerCommand@@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@PEAV?$SafeMap_Iterator@VStringKeyCI@@K@@@@AEAAAEAV?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@PEAV?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@AEAAAEAV?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PEAVCCertMapping@@@@@@PEAV?$SafeSet@PEAVCCertMapping@@@@@@AEAAAEAV?$AutoDelete@V?$SafeSet@PEAVCCertMapping@@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PEAVCShellUriSettings@@@@@@PEAV?$SafeSet@PEAVCShellUriSettings@@@@@@AEAAAEAV?$AutoDelete@V?$SafeSet@PEAVCShellUriSettings@@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@PEAV?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@AEAAAEAV?$AutoDelete@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PEAVCollector@@@@@@PEAV?$SafeSet_Iterator@PEAVCollector@@@@@@AEAAAEAV?$AutoDelete@V?$SafeSet_Iterator@PEAVCollector@@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PEAVHostOperation@@@@@@PEAV?$SafeSet_Iterator@PEAVHostOperation@@@@@@AEAAAEAV?$AutoDelete@V?$SafeSet_Iterator@PEAVHostOperation@@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PEAVListenerSourceSubscription@@@@@@PEAV?$SafeSet_Iterator@PEAVListenerSourceSubscription@@@@@@AEAAAEAV?$AutoDelete@V?$SafeSet_Iterator@PEAVListenerSourceSubscription@@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SimpleStack@VCListenerOperation@@@@@@PEAV?$SimpleStack@VCListenerOperation@@@@@@AEAAAEAV?$AutoDelete@V?$SimpleStack@VCListenerOperation@@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SimpleStack@VShellHostEntry@@@@@@PEAV?$SimpleStack@VShellHostEntry@@@@@@AEAAAEAV?$AutoDelete@V?$SimpleStack@VShellHostEntry@@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$queue@PEAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$deque@PEAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$transport_allocator@PEAU_WSMAN_PUBLISHER_EVENT_STRUCT@@@@@std@@@std@@@@PEAV?$queue@PEAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$deque@PEAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$transport_allocator@PEAU_WSMAN_PUBLISHER_EVENT_STRUCT@@@@@std@@@std@@@@AEAAAEAV?$AutoDelete@V?$queue@PEAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$deque@PEAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$transport_allocator@PEAU_WSMAN_PUBLISHER_EVENT_STRUCT@@@@@std@@@std@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@@PEAV?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@@AEAAAEAV?$AutoDelete@V?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@PEAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@AEAAAEAV?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$vector@PEAVCWSManRequest@@V?$transport_allocator@PEAVCWSManRequest@@@@@std@@@@PEAV?$vector@PEAVCWSManRequest@@V?$transport_allocator@PEAVCWSManRequest@@@@@std@@@@AEAAAEAV?$AutoDelete@V?$vector@PEAVCWSManRequest@@V?$transport_allocator@PEAVCWSManRequest@@@@@std@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@@@PEAV?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@@@AEAAAEAV?$AutoDelete@V?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$vector@PEAVIServiceConfigObserver@@V?$transport_allocator@PEAVIServiceConfigObserver@@@@@std@@@@PEAV?$vector@PEAVIServiceConfigObserver@@V?$transport_allocator@PEAVIServiceConfigObserver@@@@@std@@@@AEAAAEAV?$AutoDelete@V?$vector@PEAVIServiceConfigObserver@@V?$transport_allocator@PEAVIServiceConfigObserver@@@@@std@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$vector@PEAVWSManHttpSenderConnection@@V?$transport_allocator@PEAVWSManHttpSenderConnection@@@@@std@@@@PEAV?$vector@PEAVWSManHttpSenderConnection@@V?$transport_allocator@PEAVWSManHttpSenderConnection@@@@@std@@@@AEAAAEAV?$AutoDelete@V?$vector@PEAVWSManHttpSenderConnection@@V?$transport_allocator@PEAVWSManHttpSenderConnection@@@@@std@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VAdminSid@CSecurity@@@@PEAVAdminSid@CSecurity@@@@AEAAAEAV?$AutoDelete@VAdminSid@CSecurity@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VBlockedRecord@@@@PEAVBlockedRecord@@@@AEAAAEAV?$AutoDelete@VBlockedRecord@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VCBaseConfigCache@@@@PEAVCBaseConfigCache@@@@AEAAAEAV?$AutoDelete@VCBaseConfigCache@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VCCertMapping@@@@PEAVCCertMapping@@@@AEAAAEAV?$AutoDelete@VCCertMapping@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VCConfigChangeSource@@@@PEAVCConfigChangeSource@@@@AEAAAEAV?$AutoDelete@VCConfigChangeSource@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VCListenerSettings@@@@PEAVCListenerSettings@@@@AEAAAEAV?$AutoDelete@VCListenerSettings@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VCObserverConfigChangeErrors@@@@PEAVCObserverConfigChangeErrors@@@@AEAAAEAV?$AutoDelete@VCObserverConfigChangeErrors@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PEAVCServiceWatcher@CServiceConfigCache@@@@AEAAAEAV?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VCShellUriSettings@@@@PEAVCShellUriSettings@@@@AEAAAEAV?$AutoDelete@VCShellUriSettings@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VCWSManEPR@@@@PEAVCWSManEPR@@@@AEAAAEAV?$AutoDelete@VCWSManEPR@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VCWSManResource@@@@PEAVCWSManResource@@@@AEAAAEAV?$AutoDelete@VCWSManResource@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VCertHash@@@@PEAVCertHash@@@@AEAAAEAV?$AutoDelete@VCertHash@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PEAVConfigUpdate@@@@AEAAAEAV?$AutoDelete@VConfigUpdate@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@AEAAAEAV?$AutoDelete@VEnumSinkEx@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VEventHandler@WSMan@@@@PEAVEventHandler@WSMan@@@@AEAAAEAV?$AutoDelete@VEventHandler@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VExpiredOperationIdRecord@@@@PEAVExpiredOperationIdRecord@@@@AEAAAEAV?$AutoDelete@VExpiredOperationIdRecord@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VGPApiManager@@@@PEAVGPApiManager@@@@AEAAAEAV?$AutoDelete@VGPApiManager@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@AEAAAEAV?$AutoDelete@VGeneralSinkEx@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VIChannelObserverFactory@@@@PEAVIChannelObserverFactory@@@@AEAAAEAV?$AutoDelete@VIChannelObserverFactory@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PEAVIQueryDASHSMASHInterface@@@@AEAAAEAV?$AutoDelete@VIQueryDASHSMASHInterface@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PEAVISpecification@@@@AEAAAEAV?$AutoDelete@VISpecification@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VInteractiveSid@CSecurity@@@@PEAVInteractiveSid@CSecurity@@@@AEAAAEAV?$AutoDelete@VInteractiveSid@CSecurity@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VIpHlpApiDllLoader@@@@PEAVIpHlpApiDllLoader@@@@AEAAAEAV?$AutoDelete@VIpHlpApiDllLoader@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VMachineName@@@@PEAVMachineName@@@@AEAAAEAV?$AutoDelete@VMachineName@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VMasterReceiveData@CListenerReceive@@@@PEAVMasterReceiveData@CListenerReceive@@@@AEAAAEAV?$AutoDelete@VMasterReceiveData@CListenerReceive@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VNetworkServiceSid@CSecurity@@@@PEAVNetworkServiceSid@CSecurity@@@@AEAAAEAV?$AutoDelete@VNetworkServiceSid@CSecurity@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VNtDsApiDllLoader@@@@PEAVNtDsApiDllLoader@@@@AEAAAEAV?$AutoDelete@VNtDsApiDllLoader@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@AEAAAEAV?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VPacketCreator@@@@PEAVPacketCreator@@@@AEAAAEAV?$AutoDelete@VPacketCreator@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VPacketParser@@@@PEAVPacketParser@@@@AEAAAEAV?$AutoDelete@VPacketParser@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VResources@Locale@@@@PEAVResources@Locale@@@@AEAAAEAV?$AutoDelete@VResources@Locale@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VRunAsConfiguration@@@@PEAVRunAsConfiguration@@@@AEAAAEAV?$AutoDelete@VRunAsConfiguration@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VSecurityEntry@Catalog@@@@PEAVSecurityEntry@Catalog@@@@AEAAAEAV?$AutoDelete@VSecurityEntry@Catalog@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VSendPacketArgs@RobustConnectionBuffer@@@@PEAVSendPacketArgs@RobustConnectionBuffer@@@@AEAAAEAV?$AutoDelete@VSendPacketArgs@RobustConnectionBuffer@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VServiceSoapProcessor@@@@PEAVServiceSoapProcessor@@@@AEAAAEAV?$AutoDelete@VServiceSoapProcessor@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VShell32DllLoader@@@@PEAVShell32DllLoader@@@@AEAAAEAV?$AutoDelete@VShell32DllLoader@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VShlWApiDllLoader@@@@PEAVShlWApiDllLoader@@@@AEAAAEAV?$AutoDelete@VShlWApiDllLoader@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VSubscriptionEnumerator@@@@PEAVSubscriptionEnumerator@@@@AEAAAEAV?$AutoDelete@VSubscriptionEnumerator@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VSubscriptionManager@@@@PEAVSubscriptionManager@@@@AEAAAEAV?$AutoDelete@VSubscriptionManager@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PEAVTSTRBUFFER@@@@AEAAAEAV?$AutoDelete@VTSTRBUFFER@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VUniqueStringOverflow@@@@PEAVUniqueStringOverflow@@@@AEAAAEAV?$AutoDelete@VUniqueStringOverflow@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VUser32DllLoader@@@@PEAVUser32DllLoader@@@@AEAAAEAV?$AutoDelete@VUser32DllLoader@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@PEAVWSMANCONFIGTABLE_IDENTITY@@@@AEAAAEAV?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VWSManMemCryptManager@@@@PEAVWSManMemCryptManager@@@@AEAAAEAV?$AutoDelete@VWSManMemCryptManager@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PEAVWmiEnumContext@@@@AEAAAEAV?$AutoDelete@VWmiEnumContext@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PEAVXmlReader@@@@AEAAAEAV?$AutoDelete@VXmlReader@@@@XZ +?Me@?$AutoCleanup@V?$AutoDeleteVector@$$CBG@@PEBG@@AEAAAEAV?$AutoDeleteVector@$$CBG@@XZ +?Me@?$AutoCleanup@V?$AutoDeleteVector@D@@PEAD@@AEAAAEAV?$AutoDeleteVector@D@@XZ +?Me@?$AutoCleanup@V?$AutoDeleteVector@E@@PEAE@@AEAAAEAV?$AutoDeleteVector@E@@XZ +?Me@?$AutoCleanup@V?$AutoDeleteVector@G@@PEAG@@AEAAAEAV?$AutoDeleteVector@G@@XZ +?Me@?$AutoCleanup@V?$AutoDeleteVector@H@@PEAH@@AEAAAEAV?$AutoDeleteVector@H@@XZ +?Me@?$AutoCleanup@V?$AutoDeleteVector@PEAG@@PEAPEAG@@AEAAAEAV?$AutoDeleteVector@PEAG@@XZ +?Me@?$AutoCleanup@V?$AutoDeleteVector@PEBG@@PEAPEBG@@AEAAAEAV?$AutoDeleteVector@PEBG@@XZ +?Me@?$AutoCleanup@V?$AutoDeleteVector@U_CONFIG_UPDATE@@@@PEAU_CONFIG_UPDATE@@@@AEAAAEAV?$AutoDeleteVector@U_CONFIG_UPDATE@@@@XZ +?Me@?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PEAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@AEAAAEAV?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@XZ +?Me@?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PEAU_WINRS_RUN_COMMAND_ARG@@@@AEAAAEAV?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@XZ +?Me@?$AutoCleanup@V?$AutoDeleteVector@U_WSMAN_OPTION@@@@PEAU_WSMAN_OPTION@@@@AEAAAEAV?$AutoDeleteVector@U_WSMAN_OPTION@@@@XZ +?Me@?$AutoCleanup@V?$AutoDeleteVector@X@@PEAX@@AEAAAEAV?$AutoDeleteVector@X@@XZ +?Me@?$AutoCleanup@V?$AutoFree@E@@PEAE@@AEAAAEAV?$AutoFree@E@@XZ +?Me@?$AutoCleanup@V?$AutoLocklessItemRecycle@VPacket@@@@PEAVPacket@@@@AEAAAEAV?$AutoLocklessItemRecycle@VPacket@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIAppHostAdminManager@@@@PEAUIAppHostAdminManager@@@@AEAAAEAV?$AutoRelease@UIAppHostAdminManager@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIAppHostChildElementCollection@@@@PEAUIAppHostChildElementCollection@@@@AEAAAEAV?$AutoRelease@UIAppHostChildElementCollection@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIAppHostConfigException@@@@PEAUIAppHostConfigException@@@@AEAAAEAV?$AutoRelease@UIAppHostConfigException@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIAppHostElement@@@@PEAUIAppHostElement@@@@AEAAAEAV?$AutoRelease@UIAppHostElement@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIAppHostElementCollection@@@@PEAUIAppHostElementCollection@@@@AEAAAEAV?$AutoRelease@UIAppHostElementCollection@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIAppHostProperty@@@@PEAUIAppHostProperty@@@@AEAAAEAV?$AutoRelease@UIAppHostProperty@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIAppHostPropertyCollection@@@@PEAUIAppHostPropertyCollection@@@@AEAAAEAV?$AutoRelease@UIAppHostPropertyCollection@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PEAUIClientSecurity@@@@AEAAAEAV?$AutoRelease@UIClientSecurity@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PEAUIEnumWbemClassObject@@@@AEAAAEAV?$AutoRelease@UIEnumWbemClassObject@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PEAUIErrorInfo@@@@AEAAAEAV?$AutoRelease@UIErrorInfo@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PEAUIUnknown@@@@AEAAAEAV?$AutoRelease@UIUnknown@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PEAUIWbemClassObject@@@@AEAAAEAV?$AutoRelease@UIWbemClassObject@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PEAUIWbemContext@@@@AEAAAEAV?$AutoRelease@UIWbemContext@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PEAUIWbemLocator@@@@AEAAAEAV?$AutoRelease@UIWbemLocator@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PEAUIWbemObjectTextSrc@@@@AEAAAEAV?$AutoRelease@UIWbemObjectTextSrc@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PEAUIWbemPath@@@@AEAAAEAV?$AutoRelease@UIWbemPath@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PEAUIWbemPathKeyList@@@@AEAAAEAV?$AutoRelease@UIWbemPathKeyList@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PEAUIWbemQualifierSet@@@@AEAAAEAV?$AutoRelease@UIWbemQualifierSet@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PEAUIWbemQuery@@@@AEAAAEAV?$AutoRelease@UIWbemQuery@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PEAUIWbemServices@@@@AEAAAEAV?$AutoRelease@UIWbemServices@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VApplication@Client@WSMan@@@@PEAVApplication@Client@WSMan@@@@AEAAAEAV?$AutoRelease@VApplication@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCBaseConfigCache@@@@PEAVCBaseConfigCache@@@@AEAAAEAV?$AutoRelease@VCBaseConfigCache@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCClientConfigCache@@@@PEAVCClientConfigCache@@@@AEAAAEAV?$AutoRelease@VCClientConfigCache@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PEAVCClientConfigSettings@@@@AEAAAEAV?$AutoRelease@VCClientConfigSettings@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCCommonConfigSettings@@@@PEAVCCommonConfigSettings@@@@AEAAAEAV?$AutoRelease@VCCommonConfigSettings@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@PEAVCConfigCacheMap@CBaseConfigCache@@@@AEAAAEAV?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PEAVCConfigManager@@@@AEAAAEAV?$AutoRelease@VCConfigManager@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCListenerCommand@@@@PEAVCListenerCommand@@@@AEAAAEAV?$AutoRelease@VCListenerCommand@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCListenerMasterOperation@@@@PEAVCListenerMasterOperation@@@@AEAAAEAV?$AutoRelease@VCListenerMasterOperation@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCListenerReceive@@@@PEAVCListenerReceive@@@@AEAAAEAV?$AutoRelease@VCListenerReceive@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCListenerShell@@@@PEAVCListenerShell@@@@AEAAAEAV?$AutoRelease@VCListenerShell@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCRemoteOperation@@@@PEAVCRemoteOperation@@@@AEAAAEAV?$AutoRelease@VCRemoteOperation@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PEAVCRemoteSession@@@@AEAAAEAV?$AutoRelease@VCRemoteSession@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PEAVCRequestContext@@@@AEAAAEAV?$AutoRelease@VCRequestContext@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCServiceCommonConfigSettings@@@@PEAVCServiceCommonConfigSettings@@@@AEAAAEAV?$AutoRelease@VCServiceCommonConfigSettings@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCServiceConfigCache@@@@PEAVCServiceConfigCache@@@@AEAAAEAV?$AutoRelease@VCServiceConfigCache@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCServiceConfigSettings@@@@PEAVCServiceConfigSettings@@@@AEAAAEAV?$AutoRelease@VCServiceConfigSettings@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PEAVCWSManEPR@@@@AEAAAEAV?$AutoRelease@VCWSManEPR@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyCache@@@@PEAVCWSManGroupPolicyCache@@@@AEAAAEAV?$AutoRelease@VCWSManGroupPolicyCache@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyManager@@@@PEAVCWSManGroupPolicyManager@@@@AEAAAEAV?$AutoRelease@VCWSManGroupPolicyManager@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCWSManObject@@@@PEAVCWSManObject@@@@AEAAAEAV?$AutoRelease@VCWSManObject@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PEAVCWSManResource@@@@AEAAAEAV?$AutoRelease@VCWSManResource@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCWSManSession@@@@PEAVCWSManSession@@@@AEAAAEAV?$AutoRelease@VCWSManSession@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PEAVCWinRSPluginConfigCache@@@@AEAAAEAV?$AutoRelease@VCWinRSPluginConfigCache@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigSettings@@@@PEAVCWinRSPluginConfigSettings@@@@AEAAAEAV?$AutoRelease@VCWinRSPluginConfigSettings@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCommand@Client@WSMan@@@@PEAVCommand@Client@WSMan@@@@AEAAAEAV?$AutoRelease@VCommand@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VConfigNotification@@@@PEAVConfigNotification@@@@AEAAAEAV?$AutoRelease@VConfigNotification@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@PEAVConnectShellOperation@Client@WSMan@@@@AEAAAEAV?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@PEAVCreateShellOperation@Client@WSMan@@@@AEAAAEAV?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@PEAVDeleteShellOperation@Client@WSMan@@@@AEAAAEAV?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@PEAVDisconnectOperation@Client@WSMan@@@@AEAAAEAV?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@AEAAAEAV?$AutoRelease@VEnumSinkEx@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@AEAAAEAV?$AutoRelease@VGeneralSinkEx@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VHostMappingTable@@@@PEAVHostMappingTable@@@@AEAAAEAV?$AutoRelease@VHostMappingTable@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VIISConfigSettings@@@@PEAVIISConfigSettings@@@@AEAAAEAV?$AutoRelease@VIISConfigSettings@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VIPCSoapProcessor@@@@PEAVIPCSoapProcessor@@@@AEAAAEAV?$AutoRelease@VIPCSoapProcessor@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PEAVIRequestContext@@@@AEAAAEAV?$AutoRelease@VIRequestContext@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VISubscription@@@@PEAVISubscription@@@@AEAAAEAV?$AutoRelease@VISubscription@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PEAVInboundRequestDetails@@@@AEAAAEAV?$AutoRelease@VInboundRequestDetails@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VProxyManager@Client@WSMan@@@@PEAVProxyManager@Client@WSMan@@@@AEAAAEAV?$AutoRelease@VProxyManager@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VProxySelection@Client@WSMan@@@@PEAVProxySelection@Client@WSMan@@@@AEAAAEAV?$AutoRelease@VProxySelection@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VPushSubscribeOperation@@@@PEAVPushSubscribeOperation@@@@AEAAAEAV?$AutoRelease@VPushSubscribeOperation@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VPushSubscription@@@@PEAVPushSubscription@@@@AEAAAEAV?$AutoRelease@VPushSubscription@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VReceiveOperation@Client@WSMan@@@@PEAVReceiveOperation@Client@WSMan@@@@AEAAAEAV?$AutoRelease@VReceiveOperation@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VReconnectOperation@Client@WSMan@@@@PEAVReconnectOperation@Client@WSMan@@@@AEAAAEAV?$AutoRelease@VReconnectOperation@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VSendOperation@Client@WSMan@@@@PEAVSendOperation@Client@WSMan@@@@AEAAAEAV?$AutoRelease@VSendOperation@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PEAVShell@Client@WSMan@@@@AEAAAEAV?$AutoRelease@VShell@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VShellInfo@@@@PEAVShellInfo@@@@AEAAAEAV?$AutoRelease@VShellInfo@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VSignalOperation@Client@WSMan@@@@PEAVSignalOperation@Client@WSMan@@@@AEAAAEAV?$AutoRelease@VSignalOperation@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VUserRecord@@@@PEAVUserRecord@@@@AEAAAEAV?$AutoRelease@VUserRecord@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VWSManHttpListener@@@@PEAVWSManHttpListener@@@@AEAAAEAV?$AutoRelease@VWSManHttpListener@@@@XZ +?Me@?$AutoCleanup@V?$AutoReleaseEx@VHostMappingTableEntry@@@@PEAVHostMappingTableEntry@@@@AEAAAEAV?$AutoReleaseEx@VHostMappingTableEntry@@@@XZ +?Me@?$AutoCleanup@V?$AutoReleaseEx@VShell@Client@WSMan@@@@PEAVShell@Client@WSMan@@@@AEAAAEAV?$AutoReleaseEx@VShell@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@VAutoBstr@@PEAG@@AEAAAEAVAutoBstr@@XZ +?Me@?$AutoCleanup@VAutoBstrNoAlloc@@PEAG@@AEAAAEAVAutoBstrNoAlloc@@XZ +?Me@?$AutoCleanup@VAutoCertContext@@PEBU_CERT_CONTEXT@@@@AEAAAEAVAutoCertContext@@XZ +?Me@?$AutoCleanup@VAutoChainContext@@PEBU_CERT_CHAIN_CONTEXT@@@@AEAAAEAVAutoChainContext@@XZ +?Me@?$AutoCleanup@VAutoCoTaskMemFree@@PEAX@@AEAAAEAVAutoCoTaskMemFree@@XZ +?Me@?$AutoCleanup@VAutoFwXmlCloseParser@@PEAX@@AEAAAEAVAutoFwXmlCloseParser@@XZ +?Me@?$AutoCleanup@VAutoHandle@@PEAX@@AEAAAEAVAutoHandle@@XZ +?Me@?$AutoCleanup@VAutoImpersonateUser@@PEAX@@AEAAAEAVAutoImpersonateUser@@XZ +?Me@?$AutoCleanup@VAutoLibrary@@PEAUHINSTANCE__@@@@AEAAAEAVAutoLibrary@@XZ +?Me@?$AutoCleanup@VAutoLocalFree@@PEAX@@AEAAAEAVAutoLocalFree@@XZ +?Me@?$AutoCleanup@VAutoMIClass@@PEAU_MI_Class@@@@AEAAAEAVAutoMIClass@@XZ +?Me@?$AutoCleanup@VAutoMIInstance@@PEAU_MI_Instance@@@@AEAAAEAVAutoMIInstance@@XZ +?Me@?$AutoCleanup@VAutoObject@@PEAUWSMAN_OBJECT@@@@AEAAAEAVAutoObject@@XZ +?Me@?$AutoCleanup@VAutoRegKey@@PEAUHKEY__@@@@AEAAAEAVAutoRegKey@@XZ +?Me@?$AutoCleanup@VAutoSecurityDescriptor@@PEAX@@AEAAAEAVAutoSecurityDescriptor@@XZ +?Me@?$AutoCleanup@VAutoWaitHandle@@PEAX@@AEAAAEAVAutoWaitHandle@@XZ +?MoveSettingsToMigrationKey@@YAHPEAVIRequestContext@@_N@Z +?NUM_BOMS@PacketFormatter@@0HB DATA +?NUM_CHARSETS@PacketFormatter@@0HB DATA +?Next@TSTRBUFFER@@QEBAPEBGPEBG@Z +?NextCertMapping@CConfigManager@@QEAAHXZ +?NextListener@CConfigManager@@QEAAHXZ +?NextRow@CConfigManager@@QEAAHXZ +?NextShellUri@CConfigManager@@QEAAHXZ +?NoSemantics@ExtendedSemantic@@2KB DATA +?NotifyObservers@CWSManGroupPolicyManager@@UEAAHPEAVIRequestContext@@PEAVIWSManGroupPolicyCacheDataProvider@@@Z +?OnChange@CBaseConfigCache@@UEAAXW4ConfigChangeSources@@KW4ConfigChangeSeverityType@@@Z +?OpenRegKey@ConfigRegistry@@IEAAJPEAU_CONFIG_INFO@@KPEAVWSMANCONFIGTABLE_IDENTITY@@PEAVAutoRegKey@@PEAUHKEY__@@@Z +?OverrideMaxEnvelopeSize@PacketParser@@QEAAXK@Z +?OverrideTimeout@PacketParser@@QEAAXK@Z +?Parse@CWSManResource@@SAPEAV1@PEAVIRequestContext@@PEBG11PEAU_WSMAN_SELECTOR_SET@@PEAU_WSMAN_OPTION_SET@@H@Z +?Parse@CWSManResource@@SAPEAV1@PEAVIRequestContext@@PEBGH@Z +?Parse@XmlReader@@AEAAHPEAVIRequestContext@@@Z +?ParseAction@PacketParser@@AEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@_N@Z +?ParseActivityId@PacketParser@@AEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@H@Z +?ParseBookmark@PacketParser@@AEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@H@Z +?ParseDataLocale@PacketParser@@AEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@H@Z +?ParseEprElement@CWSManEPR@@SAPEAV1@PEAVIRequestContext@@PEAU_FWXML_ELEMENT@@@Z +?ParseEvent@SoapSemanticConverter@@QEAAPEAVSemanticMessage@@PEAU_FWXML_ELEMENT@@PEAKPEAVIRequestContext@@@Z +?ParseFaultTo@PacketParser@@AEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@H@Z +?ParseFragment@PacketParser@@AEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@H@Z +?ParseHeader@PacketParser@@AEAAHPEAVCRequestContext@@PEAU_FWXML_ELEMENT@@HPEAVCServiceCommonConfigSettings@@@Z +?ParseHeaders@CWSManResourceNoResourceUri@@QEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@11@Z +?ParseHeaders@PacketParser@@AEAAHPEAVCRequestContext@@PEAVCServiceCommonConfigSettings@@@Z +?ParseLocale@PacketParser@@AEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@H@Z +?ParseMachineID@PacketParser@@AEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@@Z +?ParseMaxEnvelopeSize@PacketParser@@AEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@HPEAVCServiceCommonConfigSettings@@@Z +?ParseMessageId@PacketParser@@AEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@_N@Z +?ParseOperationId@PacketParser@@AEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@H@Z +?ParseOptionSet@CWSManResourceNoResourceUri@@QEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@@Z +?ParseOptions@PacketParser@@AEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@H@Z +?ParsePacket@PacketParser@@QEAAHPEAVCRequestContext@@PEAVPacket@@PEAVCServiceCommonConfigSettings@@@Z +?ParsePacketInternal@PacketParser@@AEAAHPEAVCRequestContext@@PEAU_FWXML_ELEMENT@@PEAVCServiceCommonConfigSettings@@@Z +?ParseReplyTo@PacketParser@@AEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@@Z +?ParseResourceLocator@CWSManResource@@SAPEAV1@PEAVIRequestContext@@PEAU_WSMAN_RESOURCE_LOCATOR@@@Z +?ParseResourceUri@PacketParser@@AEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@H@Z +?ParseResponse@SoapSemanticConverter@@QEAA_NPEAU_FWXML_ELEMENT@@PEAKPEA_NPEAVIRequestContext@@@Z +?ParseRobustConnectionAckSequenceId@PacketParser@@AEAAKPEA_K@Z +?ParseRobustConnectionMessages@PacketParser@@QEAAKPEAW4PacketType@1@PEA_NPEA_K2@Z +?ParseSelectors@PacketParser@@AEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@H@Z +?ParseSequenceId@PacketParser@@AEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@@Z +?ParseSessionId@PacketParser@@AEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@H@Z +?ParseShellCompression@PacketParser@@AEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@H@Z +?ParseStream@PacketParser@@QEAAXPEAVCRequestContext@@PEAVITransportReceiver@@PEAVPacket@@PEAVCServiceCommonConfigSettings@@@Z +?ParseSubscriptionAgentPacket@PacketParser@@QEAAHPEAVCRequestContext@@PEAVPacket@@PEAVCServiceConfigSettings@@@Z +?ParseSubscriptionID@PacketParser@@AEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@H@Z +?ParseTimeout@PacketParser@@AEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@HPEAVCServiceCommonConfigSettings@@@Z +?ParseToAddress@PacketParser@@AEAAHPEAVCRequestContext@@PEAU_FWXML_ELEMENT@@@Z +?Passed@CErrorContext@@UEBAHXZ +?PolicyChanged@CWSManGroupPolicyManager@@AEAAXE@Z +?PostChange@CBaseConfigCache@@MEAAHPEAVIRequestContext@@PEAVCCommonConfigSettings@@1@Z +?PostChange@CServiceConfigCache@@EEAAHPEAVIRequestContext@@PEAVCCommonConfigSettings@@1@Z +?PostError@CBaseConfigCache@@MEAAXK@Z +?PostError@CServiceConfigCache@@EEAAXK@Z +?PrepareToCommitWithSize@BufferFormatter@@UEAAKK@Z +?PrepareToCommitWithSize@CircularBufferFormatter@@UEAAKK@Z +?PrintHandleTrace@@YAXPEAX@Z +?PrintReleaseTrace@@YAXPEAXJ@Z +?PrintUnregisterWaitTrace@@YAXPEAX@Z +?ProcessContext@CErrorContext@@UEAAHHPEAKPEAU_WSMAN_FAULT_OBJECT@@@Z +?ProcessContext@CErrorContext@@UEAAHHPEAU_WSMAN_ERROR@@@Z +?ProcessContext@CRequestContext@@QEAAHHPEAU_WSMAN_ENUMERATOR_RESULT@@@Z +?ProcessContext@CRequestContext@@QEAAHHPEAU_WSMAN_EVENTS_RESULT@@@Z +?ProcessContext@CRequestContext@@QEAAHHPEAU_WSMAN_RESULT@@@Z +?ProcessContext@CRequestContext@@QEAAHHPEAU_WSMAN_STATUS@@@Z +?ProcessContext@CRequestContext@@UEAAHHPEAKPEAU_WSMAN_FAULT_OBJECT@@@Z +?ProcessContext@CRequestContext@@UEAAHHPEAU_WSMAN_ERROR@@@Z +?ProcessEPR@CWSManEPR@@AEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@@Z +?ProcessFragmentDialect@CWSManResourceNoResourceUri@@IEAAHPEAVIRequestContext@@PEBGK@Z +?ProcessFragmentPath@CWSManResourceNoResourceUri@@IEAAHPEAVIRequestContext@@PEBGK@Z +?ProcessKey@CWSManResourceNoResourceUri@@IEAAHPEAVIRequestContext@@PEBG1@Z +?ProcessNestedEPR@CWSManResourceNoResourceUri@@IEAAHPEAVIRequestContext@@PEBGPEAU_FWXML_ELEMENT@@@Z +?ProcessOption@CWSManResourceNoResourceUri@@IEAAHPEAVIRequestContext@@PEBG11H@Z +?ProcessRefParameters@CWSManEPR@@AEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@@Z +?ProcessRefProperties@CWSManEPR@@AEAAHPEAVIRequestContext@@PEAU_FWXML_ELEMENT@@@Z +?ProcessUri@CWSManResource@@QEAAHPEAVIRequestContext@@PEBGK@Z +?Progress@ExtendedSemantic@@2KB DATA +?PropertySheetPageCallback@CWSManSecurityUI@@UEAAJPEAUHWND__@@IW4_SI_PAGE_TYPE@@@Z +?ProviderFailure@CErrorContext@@UEBAHXZ +?ProviderShutdownCleanup@CWinRSPluginConfigCache@@SAXXZ +?PutOverrideValue@?$PacketElement@K@PacketParser@@QEAAXK@Z +?PutOverrideValue@?$PacketElement@PEBG@PacketParser@@QEAAXPEBG@Z +?PutValue@?$PacketElement@K@PacketParser@@QEAAXKH@Z +?PutValue@?$PacketElement@PEAU_FWXML_ELEMENT@@@PacketParser@@QEAAXPEAU_FWXML_ELEMENT@@H@Z +?PutValue@?$PacketElement@PEBG@PacketParser@@QEAAXPEBGH@Z +?PutValue@?$PacketElement@_K@PacketParser@@QEAAX_KH@Z +?PutValue@Fragment@PacketParser@@QEAAXPEBG0H@Z +?PutValue@NotUnderstandSoapHeader@PacketParser@@QEAAXPEBG00@Z +?PutValue@ReferenceParameters@PacketParser@@QEAAKPEAU_FWXML_ELEMENT@@H@Z +?QueryInterface@CWSManSecurityUI@@UEAAJAEBU_GUID@@PEAPEAX@Z +?QueryPtr@RBUFFER@@QEBAPEAXXZ +?QueryRegValue@CConfigManager@@AEAAJPEAU_CONFIG_INFO@@PEAKKPEAE1@Z +?QueryRegValue@CWSManGroupPolicyManager@@AEAAJPEAVIRequestContext@@PEBU_WSMAN_POLICY_INFO@@PEAKKPEAE2@Z +?QuerySize@RBUFFER@@QEBAIXZ +?QueryStr@TSTRBUFFER@@QEBAPEBGXZ +?QuotaComplete@UserRecord@@UEAAXPEAU_WSMAN_AUTHZ_QUOTA@@KPEBG@Z +?ReAlloc@WSManMemory@@SAPEAXPEAX_KHW4_NitsFaultMode@@@Z +?ReadCertMappingRegistryKey@CConfigManager@@SAHPEAVIRequestContext@@PEAVCERTMAPPING_IDENTITY@@PEAG@Z +?ReadCredentialsFromCredmanStore@CConfigManager@@SAHPEAVIRequestContext@@PEAG1@Z +?ReadCurrentSettings@CClientConfigCache@@EEAAPEAVCCommonConfigSettings@@PEAVIRequestContext@@W4ErrorLogging@@@Z +?ReadCurrentSettings@CServiceConfigCache@@EEAAPEAVCCommonConfigSettings@@PEAVIRequestContext@@W4ErrorLogging@@@Z +?ReadCurrentSettings@CWinRSPluginConfigCache@@EEAAPEAVCCommonConfigSettings@@PEAVIRequestContext@@W4ErrorLogging@@@Z +?ReadDefaultSettings@CClientConfigCache@@EEAAPEAVCCommonConfigSettings@@PEAVIRequestContext@@@Z +?ReadDefaultSettings@CServiceConfigCache@@EEAAPEAVCCommonConfigSettings@@PEAVIRequestContext@@@Z +?ReadDefaultSettings@CWinRSPluginConfigCache@@EEAAPEAVCCommonConfigSettings@@PEAVIRequestContext@@@Z +?ReadShellUriRegistryKey@CConfigManager@@SAHPEAVIRequestContext@@PEAVSHELLURI_IDENTITY@@PEAG@Z +?ReadTableRegistryKey@CConfigManager@@SAHPEAVIRequestContext@@PEAVWSMANCONFIGTABLE_IDENTITY@@PEAG@Z +?ReallocStorage@RBUFFER@@IEAAHI@Z +?RecordAccessDenied@CErrorContext@@UEAAXXZ +?RecordAccessDenied@CRequestContext@@UEAAXXZ +?RecordAccessDeniedWithDetail@CErrorContext@@UEAAXKZZ +?RecordAccessDeniedWithDetail@CRequestContext@@UEAAXKZZ +?RecordFailure@CErrorContext@@UEAAXK@Z +?RecordFailure@CErrorContext@@UEAAXKKZZ +?RecordFailure@CErrorContext@@UEAAXPEAU_WSMAN_FAULT_OBJECT@@@Z +?RecordFailure@CErrorContext@@UEAAXW4_MI_Result@@KKZZ +?RecordFailure@CRequestContext@@AEAAXKKPEAPEAD0@Z +?RecordFailure@CRequestContext@@UEAAXK@Z +?RecordFailure@CRequestContext@@UEAAXKKZZ +?RecordFailure@CRequestContext@@UEAAXPEAU_WSMAN_FAULT_OBJECT@@@Z +?RecordFailure@CRequestContext@@UEAAXW4_MI_Result@@KKZZ +?RecordHresult@CErrorContext@@UEAAXKKZZ +?RecordHresult@CRequestContext@@UEAAXKKZZ +?RecordHtmlError@CRequestContext@@QEAAHKPEAU_FWXML_ELEMENT@@@Z +?RecordHtmlError@CRequestContext@@QEAAHKPEBGK@Z +?RecordMIFailure@IRequestContext@@QEAAXW4_MI_Result@@K@Z +?RecordOutOfMemory@CErrorContext@@UEAAXXZ +?RecordOutOfMemory@CRequestContext@@UEAAXXZ +?RecordProviderFailure@CErrorContext@@UEAAXPEAU_WSMAN_FAULT_OBJECT@@PEBG1@Z +?RecordProviderFailure@CRequestContext@@QEAAXKHPEBG00@Z +?RecordProviderFailure@CRequestContext@@UEAAXPEAU_WSMAN_FAULT_OBJECT@@PEBG1@Z +?RecordSoapError@CErrorContext@@UEAAHKPEBG@Z +?RecordSoapError@CRequestContext@@QEAAHKPEAU_FWXML_ELEMENT@@@Z +?RecordSoapError@CRequestContext@@UEAAHKPEBG@Z +?RecordText@CRequestContext@@AEAAHKPEBG_KK@Z +?RecordXml@CRequestContext@@AEAAHKPEAU_FWXML_ELEMENT@@K@Z +?Refresh@UserRecord@@QEAAXXZ +?RegisterChild@ChildLifeTimeManager@@QEAA_NXZ +?RegisterChunkBoundary@CircularBufferFormatter@@QEAAKXZ +?RegisterConfigChangeNotification@CConfigManager@@QEAAPEAVConfigNotification@@PEAX@Z +?RegisterForPolicyNotification@CWSManGroupPolicyManager@@AEAAHPEAVIRequestContext@@H@Z +?RegisterModule@@YAJKPEAVIHttpModuleRegistrationInfo@@PEAVIHttpServer@@@Z +?Release@?$SafeMap@PEAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@@@UEBAXXZ +?Release@?$SafeMap@PEAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PEAVCCertMapping@@@@@@UEBAXXZ +?Release@?$SafeMap@PEAVCListenerConnect@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerConnect@@PEAV1@@@@@UEBAXXZ +?Release@?$SafeMap@PEAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@@@UEBAXXZ +?Release@?$SafeMap@PEAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@UEBAXXZ +?Release@?$SafeMap@PEAVCListenerReceive@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerReceive@@PEAV1@@@@@UEBAXXZ +?Release@?$SafeMap@PEAVCListenerSend@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerSend@@PEAV1@@@@@UEBAXXZ +?Release@?$SafeMap@PEAVCListenerSignal@@PEAV1@V?$SafeMap_Iterator@PEAVCListenerSignal@@PEAV1@@@@@UEBAXXZ +?Release@?$SafeMap@PEAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PEAVCShellUriSettings@@@@@@UEBAXXZ +?Release@?$SafeMap@PEAVCollector@@UEmpty@@V?$SafeMap_Iterator@PEAVCollector@@UEmpty@@@@@@UEBAXXZ +?Release@?$SafeMap@PEAVCollector@@UEmpty@@V?$SafeSet_Iterator@PEAVCollector@@@@@@UEBAXXZ +?Release@?$SafeMap@PEAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVHostOperation@@UEmpty@@@@@@UEBAXXZ +?Release@?$SafeMap@PEAVHostOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVHostOperation@@@@@@UEBAXXZ +?Release@?$SafeMap@PEAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVIOperation@@UEmpty@@@@@@UEBAXXZ +?Release@?$SafeMap@PEAVIOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVIOperation@@@@@@UEBAXXZ +?Release@?$SafeMap@PEAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PEAVListenerSourceSubscription@@UEmpty@@@@@@UEBAXXZ +?Release@?$SafeMap@PEAVListenerSourceSubscription@@UEmpty@@V?$SafeSet_Iterator@PEAVListenerSourceSubscription@@@@@@UEBAXXZ +?Release@?$SafeMap@PEAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PEAVPushSubscription@@UEmpty@@@@@@UEBAXXZ +?Release@?$SafeMap@PEAVPushSubscription@@UEmpty@@V?$SafeSet_Iterator@PEAVPushSubscription@@@@@@UEBAXXZ +?Release@?$SafeMap@PEAXUEmpty@@V?$SafeSet_Iterator@PEAX@@@@UEBAXXZ +?Release@?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@UEBAXXZ +?Release@?$SafeMap@UUserKey@@PEAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@@@UEBAXXZ +?Release@?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@UEBAXXZ +?Release@?$SafeMap@VGuidKey@@PEAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PEAVCListenerCommand@@@@@@UEBAXXZ +?Release@?$SafeMap@VKey@CWmiPtrCache@@VMapping@2@V?$SafeMap_Iterator@VKey@CWmiPtrCache@@VMapping@2@@@@@UEBAXXZ +?Release@?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@UEBAXXZ +?Release@?$SafeMap@VStringKey@@PEAVListenerEvents@@V?$SafeMap_Iterator@VStringKey@@PEAVListenerEvents@@@@@@UEBAXXZ +?Release@?$SafeMap@VStringKey@@PEAVListenerSourceSubscription@@V?$SafeMap_Iterator@VStringKey@@PEAVListenerSourceSubscription@@@@@@UEBAXXZ +?Release@?$SafeMap@VStringKey@@UOption@WinRM_OperationOptions@@V?$SafeMap_Iterator@VStringKey@@UOption@WinRM_OperationOptions@@@@@@UEBAXXZ +?Release@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@UEBAXXZ +?Release@?$SafeMap@VStringKeyCI@@PEAVIISEndpoint@@V?$SafeMap_Iterator@VStringKeyCI@@PEAVIISEndpoint@@@@@@UEBAXXZ +?Release@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@UEBAXXZ +?Release@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@UEBAXXZ +?Release@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@UEBAXXZ +?Release@?$SafeMap@VStringKeyStore@@PEAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@@@UEBAXXZ +?Release@?$SafeMap@VStringKeyStore@@PEAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@@@UEBAXXZ +?Release@?$SafeMap@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@V?$SafeMap_Iterator@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@@@@@UEBAXXZ +?Release@?$SafeMap@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@UEBAXXZ +?Release@?$SafeMap@_KPEAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@@@UEBAXXZ +?Release@?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@QEAAXXZ +?Release@?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@QEAAXXZ +?Release@?$SafeMap_Iterator@PEAVCShellUriSettings@@UEmpty@@@@QEAAXXZ +?Release@?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QEAAXXZ +?Release@?$SafeMap_Iterator@VStringKeyCI@@K@@QEAAXXZ +?Release@?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@QEAAXXZ +?Release@?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@QEAAXXZ +?Release@?$SafeMap_Lock@PEAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@@@QEAAXXZ +?Release@?$SafeMap_Lock@PEAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@@@QEAAXXZ +?Release@?$SafeMap_Lock@PEAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PEAVCShellUriSettings@@UEmpty@@@@@@QEAAXXZ +?Release@?$SafeMap_Lock@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QEAAXXZ +?Release@?$SafeMap_Lock@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEAAXXZ +?Release@?$SafeMap_Lock@VStringKeyStore@@PEAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@@@QEAAXXZ +?Release@?$SafeMap_Lock@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@QEAAXXZ +?Release@CBaseConfigCache@@UEAAJP6AXPEAX@Z0@Z +?Release@CWSManCriticalSection@@QEAAXXZ +?Release@CWSManSecurityUI@@UEAAKXZ +?Release@ILifeTimeMgmt@@UEAAJP6AXPEAX@Z0@Z +?Release@UserRecord@@QEAAJXZ +?ReleaseExclusive@FastLock@@QEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@D@@PEAD@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@G@@PEAG@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@UIPRange@CWSManIPFilter@@@@PEAUIPRange@CWSManIPFilter@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@U_SID@@@@PEAU_SID@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@PEAU_WSMAN_STREAM_ID_SET@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$Handle@VISubscription@@@@@@PEAV?$Handle@VISubscription@@@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PEAVCListenerConnect@@PEAV1@@@@@PEAV?$SafeMap_Iterator@PEAVCListenerConnect@@PEAV1@@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PEAVCListenerReceive@@PEAV1@@@@@PEAV?$SafeMap_Iterator@PEAVCListenerReceive@@PEAV1@@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PEAVCListenerSend@@PEAV1@@@@@PEAV?$SafeMap_Iterator@PEAVCListenerSend@@PEAV1@@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PEAVCListenerSignal@@PEAV1@@@@@PEAV?$SafeMap_Iterator@PEAVCListenerSignal@@PEAV1@@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VGuidKey@@PEAVCListenerCommand@@@@@@PEAV?$SafeMap_Iterator@VGuidKey@@PEAVCListenerCommand@@@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@PEAV?$SafeMap_Iterator@VStringKeyCI@@K@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@PEAV?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PEAVCCertMapping@@@@@@PEAV?$SafeSet@PEAVCCertMapping@@@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PEAVCShellUriSettings@@@@@@PEAV?$SafeSet@PEAVCShellUriSettings@@@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@PEAV?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PEAVCollector@@@@@@PEAV?$SafeSet_Iterator@PEAVCollector@@@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PEAVHostOperation@@@@@@PEAV?$SafeSet_Iterator@PEAVHostOperation@@@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PEAVListenerSourceSubscription@@@@@@PEAV?$SafeSet_Iterator@PEAVListenerSourceSubscription@@@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SimpleStack@VCListenerOperation@@@@@@PEAV?$SimpleStack@VCListenerOperation@@@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SimpleStack@VShellHostEntry@@@@@@PEAV?$SimpleStack@VShellHostEntry@@@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$queue@PEAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$deque@PEAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$transport_allocator@PEAU_WSMAN_PUBLISHER_EVENT_STRUCT@@@@@std@@@std@@@@PEAV?$queue@PEAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$deque@PEAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$transport_allocator@PEAU_WSMAN_PUBLISHER_EVENT_STRUCT@@@@@std@@@std@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@@PEAV?$set@PEAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PEAVCListenerSettings@@@@@std@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@PEAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$vector@PEAVCWSManRequest@@V?$transport_allocator@PEAVCWSManRequest@@@@@std@@@@PEAV?$vector@PEAVCWSManRequest@@V?$transport_allocator@PEAVCWSManRequest@@@@@std@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@@@PEAV?$vector@PEAVHandleImpl@Client@WSMan@@V?$transport_allocator@PEAVHandleImpl@Client@WSMan@@@@@std@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$vector@PEAVIServiceConfigObserver@@V?$transport_allocator@PEAVIServiceConfigObserver@@@@@std@@@@PEAV?$vector@PEAVIServiceConfigObserver@@V?$transport_allocator@PEAVIServiceConfigObserver@@@@@std@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$vector@PEAVWSManHttpSenderConnection@@V?$transport_allocator@PEAVWSManHttpSenderConnection@@@@@std@@@@PEAV?$vector@PEAVWSManHttpSenderConnection@@V?$transport_allocator@PEAVWSManHttpSenderConnection@@@@@std@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VAdminSid@CSecurity@@@@PEAVAdminSid@CSecurity@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VBlockedRecord@@@@PEAVBlockedRecord@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCBaseConfigCache@@@@PEAVCBaseConfigCache@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCCertMapping@@@@PEAVCCertMapping@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCConfigChangeSource@@@@PEAVCConfigChangeSource@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCListenerSettings@@@@PEAVCListenerSettings@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCObserverConfigChangeErrors@@@@PEAVCObserverConfigChangeErrors@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PEAVCServiceWatcher@CServiceConfigCache@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCShellUriSettings@@@@PEAVCShellUriSettings@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCWSManEPR@@@@PEAVCWSManEPR@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCWSManResource@@@@PEAVCWSManResource@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCertHash@@@@PEAVCertHash@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PEAVConfigUpdate@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VEventHandler@WSMan@@@@PEAVEventHandler@WSMan@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VExpiredOperationIdRecord@@@@PEAVExpiredOperationIdRecord@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VGPApiManager@@@@PEAVGPApiManager@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VIChannelObserverFactory@@@@PEAVIChannelObserverFactory@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PEAVIQueryDASHSMASHInterface@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PEAVISpecification@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VInteractiveSid@CSecurity@@@@PEAVInteractiveSid@CSecurity@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VIpHlpApiDllLoader@@@@PEAVIpHlpApiDllLoader@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VMachineName@@@@PEAVMachineName@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VMasterReceiveData@CListenerReceive@@@@PEAVMasterReceiveData@CListenerReceive@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VNetworkServiceSid@CSecurity@@@@PEAVNetworkServiceSid@CSecurity@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VNtDsApiDllLoader@@@@PEAVNtDsApiDllLoader@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VPacketCreator@@@@PEAVPacketCreator@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VPacketParser@@@@PEAVPacketParser@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VResources@Locale@@@@PEAVResources@Locale@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VRunAsConfiguration@@@@PEAVRunAsConfiguration@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VSecurityEntry@Catalog@@@@PEAVSecurityEntry@Catalog@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VSendPacketArgs@RobustConnectionBuffer@@@@PEAVSendPacketArgs@RobustConnectionBuffer@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VServiceSoapProcessor@@@@PEAVServiceSoapProcessor@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VShell32DllLoader@@@@PEAVShell32DllLoader@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VShlWApiDllLoader@@@@PEAVShlWApiDllLoader@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VSubscriptionEnumerator@@@@PEAVSubscriptionEnumerator@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VSubscriptionManager@@@@PEAVSubscriptionManager@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PEAVTSTRBUFFER@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VUniqueStringOverflow@@@@PEAVUniqueStringOverflow@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VUser32DllLoader@@@@PEAVUser32DllLoader@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@PEAVWSMANCONFIGTABLE_IDENTITY@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VWSManMemCryptManager@@@@PEAVWSManMemCryptManager@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PEAVWmiEnumContext@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PEAVXmlReader@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@$$CBG@@PEBG@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@D@@PEAD@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@E@@PEAE@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@G@@PEAG@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@H@@PEAH@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@PEAG@@PEAPEAG@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@PEBG@@PEAPEBG@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@U_CONFIG_UPDATE@@@@PEAU_CONFIG_UPDATE@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PEAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PEAU_WINRS_RUN_COMMAND_ARG@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@U_WSMAN_OPTION@@@@PEAU_WSMAN_OPTION@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@X@@PEAX@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoFree@E@@PEAE@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoLocklessItemRecycle@VPacket@@@@PEAVPacket@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIAppHostAdminManager@@@@PEAUIAppHostAdminManager@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIAppHostChildElementCollection@@@@PEAUIAppHostChildElementCollection@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIAppHostConfigException@@@@PEAUIAppHostConfigException@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIAppHostElement@@@@PEAUIAppHostElement@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIAppHostElementCollection@@@@PEAUIAppHostElementCollection@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIAppHostProperty@@@@PEAUIAppHostProperty@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIAppHostPropertyCollection@@@@PEAUIAppHostPropertyCollection@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PEAUIClientSecurity@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PEAUIEnumWbemClassObject@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PEAUIErrorInfo@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PEAUIUnknown@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PEAUIWbemClassObject@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PEAUIWbemContext@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PEAUIWbemLocator@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PEAUIWbemObjectTextSrc@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PEAUIWbemPath@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PEAUIWbemPathKeyList@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PEAUIWbemQualifierSet@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PEAUIWbemQuery@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PEAUIWbemServices@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VApplication@Client@WSMan@@@@PEAVApplication@Client@WSMan@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCBaseConfigCache@@@@PEAVCBaseConfigCache@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCClientConfigCache@@@@PEAVCClientConfigCache@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PEAVCClientConfigSettings@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCCommonConfigSettings@@@@PEAVCCommonConfigSettings@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@PEAVCConfigCacheMap@CBaseConfigCache@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PEAVCConfigManager@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCListenerCommand@@@@PEAVCListenerCommand@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCListenerMasterOperation@@@@PEAVCListenerMasterOperation@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCListenerReceive@@@@PEAVCListenerReceive@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCListenerShell@@@@PEAVCListenerShell@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCRemoteOperation@@@@PEAVCRemoteOperation@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PEAVCRemoteSession@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PEAVCRequestContext@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCServiceCommonConfigSettings@@@@PEAVCServiceCommonConfigSettings@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCServiceConfigCache@@@@PEAVCServiceConfigCache@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCServiceConfigSettings@@@@PEAVCServiceConfigSettings@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PEAVCWSManEPR@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyCache@@@@PEAVCWSManGroupPolicyCache@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyManager@@@@PEAVCWSManGroupPolicyManager@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCWSManObject@@@@PEAVCWSManObject@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PEAVCWSManResource@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCWSManSession@@@@PEAVCWSManSession@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PEAVCWinRSPluginConfigCache@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigSettings@@@@PEAVCWinRSPluginConfigSettings@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCommand@Client@WSMan@@@@PEAVCommand@Client@WSMan@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VConfigNotification@@@@PEAVConfigNotification@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@PEAVConnectShellOperation@Client@WSMan@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@PEAVCreateShellOperation@Client@WSMan@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@PEAVDeleteShellOperation@Client@WSMan@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@PEAVDisconnectOperation@Client@WSMan@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VHostMappingTable@@@@PEAVHostMappingTable@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VIISConfigSettings@@@@PEAVIISConfigSettings@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VIPCSoapProcessor@@@@PEAVIPCSoapProcessor@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PEAVIRequestContext@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VISubscription@@@@PEAVISubscription@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PEAVInboundRequestDetails@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VProxyManager@Client@WSMan@@@@PEAVProxyManager@Client@WSMan@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VProxySelection@Client@WSMan@@@@PEAVProxySelection@Client@WSMan@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VPushSubscribeOperation@@@@PEAVPushSubscribeOperation@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VPushSubscription@@@@PEAVPushSubscription@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VReceiveOperation@Client@WSMan@@@@PEAVReceiveOperation@Client@WSMan@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VReconnectOperation@Client@WSMan@@@@PEAVReconnectOperation@Client@WSMan@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VSendOperation@Client@WSMan@@@@PEAVSendOperation@Client@WSMan@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PEAVShell@Client@WSMan@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VShellInfo@@@@PEAVShellInfo@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VSignalOperation@Client@WSMan@@@@PEAVSignalOperation@Client@WSMan@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VUserRecord@@@@PEAVUserRecord@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VWSManHttpListener@@@@PEAVWSManHttpListener@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoReleaseEx@VHostMappingTableEntry@@@@PEAVHostMappingTableEntry@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoReleaseEx@VShell@Client@WSMan@@@@PEAVShell@Client@WSMan@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@VAutoBstr@@PEAG@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@VAutoBstrNoAlloc@@PEAG@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@VAutoCertContext@@PEBU_CERT_CONTEXT@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@VAutoChainContext@@PEBU_CERT_CHAIN_CONTEXT@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@VAutoCoTaskMemFree@@PEAX@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@VAutoFwXmlCloseParser@@PEAX@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@VAutoHandle@@PEAX@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@VAutoImpersonateUser@@PEAX@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@VAutoLibrary@@PEAUHINSTANCE__@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@VAutoLocalFree@@PEAX@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@VAutoMIClass@@PEAU_MI_Class@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@VAutoMIInstance@@PEAU_MI_Instance@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@VAutoObject@@PEAUWSMAN_OBJECT@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@VAutoRegKey@@PEAUHKEY__@@@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@VAutoSecurityDescriptor@@PEAX@@AEAAXXZ +?ReleasePtr@?$AutoCleanup@VAutoWaitHandle@@PEAX@@AEAAXXZ +?ReleaseQuota@UserRecord@@QEAAXW4OperationType@@PEBVProvider@Catalog@@@Z +?ReleaseShared@FastLock@@QEAAXXZ +?Remove@?$SafeMap@PEAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@QEAA_NAEBQEAVCListenerOperation@@@Z +?Remove@?$SafeMap@UUserKey@@PEAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@@@QEAA_NAEBUUserKey@@@Z +?Remove@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEAA_NAEBVStringKeyCI@@@Z +?Remove@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QEAA_NAEBVStringKeyCI@@@Z +?Remove@?$SafeMap@VStringKeyStore@@PEAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@@@QEAA_NAEBVStringKeyStore@@@Z +?Remove@?$SafeMap@VStringKeyStore@@PEAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@@@QEAA_NAEBVStringKeyStore@@@Z +?Remove@?$SafeMap@_KPEAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@@@QEAA_NAEB_K@Z +?RemoveAll@CBaseConfigCache@@KAXPEAVFastLock@@AEAV?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@@Z +?RemoveFromMap@CBaseConfigCache@@AEAAHXZ +?RemoveHttpsBinding@@YAXPEBG@Z +?RemoveHttpsCertificate@@YAXPEBG0@Z +?RemoveObserver@CServiceConfigCache@@AEAAHPEAVIServiceConfigObserver@@@Z +?RemovePluginXmlNewAttrForThresholdOrGreater@@YAHPEAVIRequestContext@@@Z +?ReportEventW@EventLog@@SAXGKGPEAPEBG@Z +?Reset@?$PacketElement@K@PacketParser@@QEAAX_N@Z +?Reset@?$PacketElement@PEAU_FWXML_ELEMENT@@@PacketParser@@QEAAX_N@Z +?Reset@?$PacketElement@PEBG@PacketParser@@QEAAX_N@Z +?Reset@?$PacketElement@_K@PacketParser@@QEAAX_N@Z +?Reset@?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@QEAAXXZ +?Reset@?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@QEAAXXZ +?Reset@?$SafeMap_Iterator@PEAVCShellUriSettings@@UEmpty@@@@QEAAXXZ +?Reset@?$SafeMap_Iterator@PEAXUEmpty@@@@QEAAXXZ +?Reset@?$SafeMap_Iterator@UPluginKey@@K@@QEAAXXZ +?Reset@?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@QEAAXXZ +?Reset@?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QEAAXXZ +?Reset@?$SafeMap_Iterator@VKey@Locale@@K@@QEAAXXZ +?Reset@?$SafeMap_Iterator@VStringKeyCI@@K@@QEAAXXZ +?Reset@?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@QEAAXXZ +?Reset@?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@QEAAXXZ +?Reset@?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@QEAAXXZ +?Reset@?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@QEAAXXZ +?Reset@?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@QEAAXXZ +?Reset@BufferFormatter@@UEAAXXZ +?Reset@CErrorContext@@UEAAXH@Z +?Reset@CRequestContext@@UEAAXH@Z +?Reset@CircularBufferFormatter@@UEAAXXZ +?Reset@Locale@@QEAAXXZ +?Reset@TSTRBUFFER@@QEAAXXZ +?Reset@UserRecord@@QEAAXXZ +?ResetProfileCount@UserRecord@@QEAAXXZ +?ResetRobustConnectionHeaders@PacketParser@@AEAAXXZ +?Resize@RBUFFER@@QEAAHI@Z +?Resize@RBUFFER@@QEAAHII@Z +?ResizeOptionList@CWSManResourceNoResourceUri@@IEAA_NIAEAVIRequestContext@@@Z +?RestoreAllPrivileges@@YAHPEAU_TOKEN_PRIVILEGES@@@Z +?RetrieveCertMappingIdentity@CConfigManager@@AEAAHPEAUHKEY__@@PEAVCERTMAPPING_IDENTITY@@@Z +?RetrieveListenerIdentity@CConfigManager@@AEAAHPEAUHKEY__@@PEAGPEAPEAGPEAVLISTENER_IDENTITY@@@Z +?RetrieveShellUriIdentity@CConfigManager@@AEAAHPEAUHKEY__@@PEAVSHELLURI_IDENTITY@@@Z +?RetrieveTableIdentity@CConfigManager@@AEAAHPEAUHKEY__@@PEAVWSMANCONFIGTABLE_IDENTITY@@@Z +?RevertToSelf@CSecurity@@SAHXZ +?RtlSecureZeroMemory@XmlReader@@QEAAXXZ +?SafeStringToUI64@@YAJPEBGEHPEA_KPEAVIRequestContext@@K@Z +?SetBOM@PacketFormatter@@QEAA_NPEAVPacket@@@Z +?SetBOM@PacketFormatter@@QEAA_NPEBEK@Z +?SetCIM_Error@CErrorContext@@UEAAXXZ +?SetCIM_Error@CRequestContext@@UEAAXXZ +?SetCharset@PacketFormatter@@QEAAXW4Charset@1@@Z +?SetCharset@PacketFormatter@@QEAA_NPEBDK_NPEA_N@Z +?SetCharsetAndBom@PacketFormatter@@QEAAXW4Charset@1@0@Z +?SetConfigToUseDefaults@CErrorContext@@UEAAXH@Z +?SetErrorAction@ExtendedSemantic@@QEAAXW4_MI_OperationCallback_ResponseType@@W4_MI_CallbackMode@@@Z +?SetErrorState@CBaseConfigCache@@AEAAXPEAVCRequestContext@@K@Z +?SetExactCharSize@TSTRBUFFER@@QEAAJI@Z +?SetExtendedErrorString@CErrorContext@@UEAAXPEAG@Z +?SetExtendedErrorString@CRequestContext@@UEAAXPEAG@Z +?SetExtraLogInfo@CErrorContext@@QEAAXPEBG000@Z +?SetFault@CErrorContext@@UEAAXKKKPEBG@Z +?SetFault@CRequestContext@@EEAAXKKKPEBG@Z +?SetFinishValue@ConfigRegistry@@IEAAHPEAVIRequestContext@@@Z +?SetFormatterMode@BufferFormatter@@QEAAXW4Charset@PacketFormatter@@0@Z +?SetFragmentDialect@CWSManResourceNoResourceUri@@QEAAHPEBGPEAVIRequestContext@@@Z +?SetFragmentPath@CWSManResourceNoResourceUri@@QEAAHPEBGPEAVIRequestContext@@@Z +?SetGeneratingError@CErrorContext@@UEAAXXZ +?SetLocale@CRequestContext@@QEAA_NPEBGK@Z +?SetLocale@Locale@@QEAA_NKPEBGPEAVIRequestContext@@@Z +?SetMachineName@CRequestContext@@QEAAKPEBG@Z +?SetMachineName@CRequestContext@@QEAAKPEBG_K@Z +?SetMachineName@CRequestContext@@QEAAKXZ +?SetMaxEnvelopeSize@CircularBufferFormatter@@QEAAXK@Z +?SetOptionsMustUnderstandValue@CWSManResourceNoResourceUri@@QEAAXH@Z +?SetProfileHandle@UserRecord@@QEAAX_J@Z +?SetProviderFailure@CErrorContext@@UEAAXH@Z +?SetSecurity@CWSManSecurityUI@@UEAAJKPEAX@Z +?SetSize@TSTRBUFFER@@QEAAJII@Z +?SetSizeInUse@SBUFFER@@QEAAXI@Z +?SetThreadUILanguage@Locale@@QEAA_NPEAVIRequestContext@@@Z +?SetUpdateMode@BufferFormatter@@UEAAXW4Mode@1@@Z +?SetUpdateMode@CircularBufferFormatter@@UEAAXW4Mode@BufferFormatter@@@Z +?SetUri@CWSManResource@@QEAAHPEBGPEAVIRequestContext@@@Z +?SetValid@RBUFFER@@IEAAXH@Z +?SetXml@ReferenceParameters@PacketParser@@AEAAKAEAVBufferFormatter@@PEAU_FWXML_ELEMENT@@@Z +?Shutdown@CBaseConfigCache@@IEAAXXZ +?Shutdown@CConfigManager@@SAHXZ +?Shutdown@CWSManGroupPolicyManager@@SAHXZ +?Shutdown@ChildLifeTimeManager@@QEAAXXZ +?ShutdownLocaleMap@Locale@@SAXXZ +?Size@?$SafeMap@PEAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PEAVCListenerOperation@@@@@@QEBAHXZ +?Size@?$SafeMap@UUserKey@@PEAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@@@QEBAHXZ +?Size@?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QEBAHXZ +?Size@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QEBAHXZ +?Size@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@QEBAHXZ +?Size@?$SafeMap@VStringKeyStore@@PEAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@@@QEBAHXZ +?SkipOrphans@?$SafeMap_Iterator@PEAVCCertMapping@@UEmpty@@@@IEAAXXZ +?SkipOrphans@?$SafeMap_Iterator@PEAVCListenerOperation@@UEmpty@@@@IEAAXXZ +?SkipOrphans@?$SafeMap_Iterator@PEAVCShellUriSettings@@UEmpty@@@@IEAAXXZ +?SkipOrphans@?$SafeMap_Iterator@PEAXUEmpty@@@@IEAAXXZ +?SkipOrphans@?$SafeMap_Iterator@UPluginKey@@K@@IEAAXXZ +?SkipOrphans@?$SafeMap_Iterator@UUserKey@@PEAVBlockedRecord@@@@IEAAXXZ +?SkipOrphans@?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@IEAAXXZ +?SkipOrphans@?$SafeMap_Iterator@VKey@Locale@@K@@IEAAXXZ +?SkipOrphans@?$SafeMap_Iterator@VStringKeyCI@@K@@IEAAXXZ +?SkipOrphans@?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@IEAAXXZ +?SkipOrphans@?$SafeMap_Iterator@VStringKeyStore@@PEAVExpiredOperationIdRecord@@@@IEAAXXZ +?SkipOrphans@?$SafeMap_Iterator@VStringKeyStore@@PEAVServerFullDuplexChannel@@@@IEAAXXZ +?SkipOrphans@?$SafeMap_Iterator@W4WSManSessionOption@@PEAVOptionValue@SessionOptions@Client@WSMan@@@@IEAAXXZ +?SkipOrphans@?$SafeMap_Iterator@_KPEAVSendPacketArgs@RobustConnectionBuffer@@@@IEAAXXZ +?StartSoapProcessor@@YAHXZ +?StopSoapProcessor@@YAHXZ +?Storage@?$AutoCleanup@V?$AutoDelete@G@@PEAG@@QEAAPEAPEAGXZ +?Storage@?$AutoCleanup@V?$AutoDelete@UIPRange@CWSManIPFilter@@@@PEAUIPRange@CWSManIPFilter@@@@QEAAPEAPEAUIPRange@CWSManIPFilter@@XZ +?Storage@?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@QEAAPEAPEAVEnumSinkEx@@XZ +?Storage@?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@QEAAPEAPEAVGeneralSinkEx@@XZ +?Storage@?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PEAVIQueryDASHSMASHInterface@@@@QEAAPEAPEAVIQueryDASHSMASHInterface@@XZ +?Storage@?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PEAVISpecification@@@@QEAAPEAPEAVISpecification@@XZ +?Storage@?$AutoCleanup@V?$AutoDelete@VPacketCreator@@@@PEAVPacketCreator@@@@QEAAPEAPEAVPacketCreator@@XZ +?Storage@?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PEAVTSTRBUFFER@@@@QEAAPEAPEAVTSTRBUFFER@@XZ +?Storage@?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PEAVWmiEnumContext@@@@QEAAPEAPEAVWmiEnumContext@@XZ +?Storage@?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PEAVXmlReader@@@@QEAAPEAPEAVXmlReader@@XZ +?Storage@?$AutoCleanup@V?$AutoDeleteVector@$$CBG@@PEBG@@QEAAPEAPEBGXZ +?Storage@?$AutoCleanup@V?$AutoDeleteVector@E@@PEAE@@QEAAPEAPEAEXZ +?Storage@?$AutoCleanup@V?$AutoDeleteVector@G@@PEAG@@QEAAPEAPEAGXZ +?Storage@?$AutoCleanup@V?$AutoDeleteVector@PEAG@@PEAPEAG@@QEAAPEAPEAPEAGXZ +?Storage@?$AutoCleanup@V?$AutoDeleteVector@PEBG@@PEAPEBG@@QEAAPEAPEAPEBGXZ +?Storage@?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PEAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QEAAPEAPEAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@XZ +?Storage@?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PEAU_WINRS_RUN_COMMAND_ARG@@@@QEAAPEAPEAU_WINRS_RUN_COMMAND_ARG@@XZ +?Storage@?$AutoCleanup@V?$AutoDeleteVector@X@@PEAX@@QEAAPEAPEAXXZ +?Storage@?$AutoCleanup@V?$AutoFree@E@@PEAE@@QEAAPEAPEAEXZ +?Storage@?$AutoCleanup@V?$AutoLocklessItemRecycle@VPacket@@@@PEAVPacket@@@@QEAAPEAPEAVPacket@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIAppHostAdminManager@@@@PEAUIAppHostAdminManager@@@@QEAAPEAPEAUIAppHostAdminManager@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIAppHostChildElementCollection@@@@PEAUIAppHostChildElementCollection@@@@QEAAPEAPEAUIAppHostChildElementCollection@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIAppHostConfigException@@@@PEAUIAppHostConfigException@@@@QEAAPEAPEAUIAppHostConfigException@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIAppHostElement@@@@PEAUIAppHostElement@@@@QEAAPEAPEAUIAppHostElement@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIAppHostElementCollection@@@@PEAUIAppHostElementCollection@@@@QEAAPEAPEAUIAppHostElementCollection@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIAppHostProperty@@@@PEAUIAppHostProperty@@@@QEAAPEAPEAUIAppHostProperty@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIAppHostPropertyCollection@@@@PEAUIAppHostPropertyCollection@@@@QEAAPEAPEAUIAppHostPropertyCollection@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PEAUIClientSecurity@@@@QEAAPEAPEAUIClientSecurity@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PEAUIEnumWbemClassObject@@@@QEAAPEAPEAUIEnumWbemClassObject@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PEAUIErrorInfo@@@@QEAAPEAPEAUIErrorInfo@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PEAUIUnknown@@@@QEAAPEAPEAUIUnknown@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PEAUIWbemClassObject@@@@QEAAPEAPEAUIWbemClassObject@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PEAUIWbemContext@@@@QEAAPEAPEAUIWbemContext@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PEAUIWbemLocator@@@@QEAAPEAPEAUIWbemLocator@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PEAUIWbemObjectTextSrc@@@@QEAAPEAPEAUIWbemObjectTextSrc@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PEAUIWbemPath@@@@QEAAPEAPEAUIWbemPath@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PEAUIWbemPathKeyList@@@@QEAAPEAPEAUIWbemPathKeyList@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PEAUIWbemQualifierSet@@@@QEAAPEAPEAUIWbemQualifierSet@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PEAUIWbemQuery@@@@QEAAPEAPEAUIWbemQuery@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PEAUIWbemServices@@@@QEAAPEAPEAUIWbemServices@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PEAVCWSManEPR@@@@QEAAPEAPEAVCWSManEPR@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PEAVCWinRSPluginConfigCache@@@@QEAAPEAPEAVCWinRSPluginConfigCache@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@VCommand@Client@WSMan@@@@PEAVCommand@Client@WSMan@@@@QEAAPEAPEAVCommand@Client@WSMan@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PEAVEnumSinkEx@@@@QEAAPEAPEAVEnumSinkEx@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PEAVGeneralSinkEx@@@@QEAAPEAPEAVGeneralSinkEx@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PEAVIRequestContext@@@@QEAAPEAPEAVIRequestContext@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@VReceiveOperation@Client@WSMan@@@@PEAVReceiveOperation@Client@WSMan@@@@QEAAPEAPEAVReceiveOperation@Client@WSMan@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@VSendOperation@Client@WSMan@@@@PEAVSendOperation@Client@WSMan@@@@QEAAPEAPEAVSendOperation@Client@WSMan@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PEAVShell@Client@WSMan@@@@QEAAPEAPEAVShell@Client@WSMan@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@VSignalOperation@Client@WSMan@@@@PEAVSignalOperation@Client@WSMan@@@@QEAAPEAPEAVSignalOperation@Client@WSMan@@XZ +?Storage@?$AutoCleanup@VAutoBstr@@PEAG@@QEAAPEAPEAGXZ +?Storage@?$AutoCleanup@VAutoBstrNoAlloc@@PEAG@@QEAAPEAPEAGXZ +?Storage@?$AutoCleanup@VAutoCertContext@@PEBU_CERT_CONTEXT@@@@QEAAPEAPEBU_CERT_CONTEXT@@XZ +?Storage@?$AutoCleanup@VAutoChainContext@@PEBU_CERT_CHAIN_CONTEXT@@@@QEAAPEAPEBU_CERT_CHAIN_CONTEXT@@XZ +?Storage@?$AutoCleanup@VAutoHandle@@PEAX@@QEAAPEAPEAXXZ +?Storage@?$AutoCleanup@VAutoImpersonateUser@@PEAX@@QEAAPEAPEAXXZ +?Storage@?$AutoCleanup@VAutoLocalFree@@PEAX@@QEAAPEAPEAXXZ +?Storage@?$AutoCleanup@VAutoMIClass@@PEAU_MI_Class@@@@QEAAPEAPEAU_MI_Class@@XZ +?Storage@?$AutoCleanup@VAutoMIInstance@@PEAU_MI_Instance@@@@QEAAPEAPEAU_MI_Instance@@XZ +?Storage@?$AutoCleanup@VAutoRegKey@@PEAUHKEY__@@@@QEAAPEAPEAUHKEY__@@XZ +?Storage@?$AutoCleanup@VAutoSecurityDescriptor@@PEAX@@QEAAPEAPEAXXZ +?Storage@?$AutoCleanup@VAutoWaitHandle@@PEAX@@QEAAPEAPEAXXZ +?StoreData@CWSManResource@@AEAAHPEAVIRequestContext@@PEBG11PEAU_WSMAN_SELECTOR_SET@@PEAU_WSMAN_OPTION_SET@@@Z +?StoreData@CWSManResource@@QEAAHPEAVIRequestContext@@PEBG@Z +?StoreDataFromResourceLocator@CWSManResource@@AEAAHPEAVIRequestContext@@PEAU_WSMAN_RESOURCE_LOCATOR@@@Z +?StoreExpansion@CResourceAlias@@AEAAXPEBGPEAU_ALIAS_INFORMATION@@@Z +?StreamingOutput@ExtendedSemantic@@2KB DATA +?StringCchEndsWithCI@@YAHPEBG0@Z +?StringCchEquals@@YAHPEBG0@Z +?StringCchEqualsCI@@YAHPEBG0@Z +?StringCchStartsWith@@YAHPEBG0@Z +?StringCchStartsWithCI@@YAHPEBG0@Z +?StringConcatenate@CWSManResourceNoResourceUri@@IEAAHAEAPEAGAEAKKPEAG@Z +?StringIsBlank@@YAHPEBG@Z +?StringToDword@@YAHPEBDPEAK@Z +?StringToDword@@YAHPEBGPEAK@Z +?StringTrimWhitespace@@YAPEAGPEAG@Z +?Subscribe@CWSManGroupPolicyManager@@UEAAHPEAVIRequestContext@@PEAVIWSManGroupPolicyObserver@@H@Z +?TruncateAt@TSTRBUFFER@@QEAAXI@Z +?TryAcquire@CWSManCriticalSection@@QEAAHXZ +?UnSubscribe@CWSManGroupPolicyManager@@UEAAHPEAVIRequestContext@@PEAVIWSManGroupPolicyObserver@@@Z +?UninstallMigration@@YAHPEAVIRequestContext@@@Z +?UnregisterChild@ChildLifeTimeManager@@QEAAXXZ +?UnregisterPolicyNotification@CWSManGroupPolicyManager@@AEAAHXZ +?Up@?$LoaderSerializer@VSubscriptionManager@@$01@@AEAAJXZ +?UpdateCredentialsInCredmanStore@CConfigManager@@SAHPEAVIRequestContext@@PEAG1@Z +?UpdateHttpsBinding@@YAHPEAVIRequestContext@@PEBG1PEAHHH@Z +?UpdateHttpsCertificate@@YAHPEAVIRequestContext@@PEBG11PEAHHU_GUID@@@Z +?UpdateKey@CWSManResourceNoResourceUri@@QEAAHPEAVIRequestContext@@PEBG1@Z +?Uri@CResourceAlias@@QEAAPEBGXZ +?UseClientToken@UserRecord@@QEAA_NXZ +?UseDefaultConfig@CErrorContext@@UEBAHXZ +?UsingDefaultLCID@Locale@@QEAA_NXZ +?Validate@Locale@@SA_NPEAU_WSMAN_DATA@@@Z +?Validate@Locale@@SA_NPEBG@Z +?ValidateCBTHardeningLevel@ConfigRegistry@@IEAAHPEAVIRequestContext@@PEBG@Z +?ValidateCertificateHash@ConfigRegistry@@IEAAHPEAVIRequestContext@@PEBG111@Z +?ValidateHeaders@PacketParser@@QEAAHPEAVIRequestContext@@K@Z +?ValidateHostnameAndCertificateCN@ConfigRegistry@@IEAAHPEAVIRequestContext@@PEBG1@Z +?ValidateIPFilter@ConfigRegistry@@IEAAHPEAVIRequestContext@@W4ConfigSetting@@PEBG@Z +?ValidateInt@CWSManGroupPolicyManager@@AEAAHPEAVIRequestContext@@PEBU_WSMAN_POLICY_INFO@@K@Z +?ValidateInt@ConfigRegistry@@IEAAHPEAVIRequestContext@@PEAU_CONFIG_INFO@@KPEBG@Z +?ValidateString@CWSManGroupPolicyManager@@AEAAHPEAVIRequestContext@@PEBU_WSMAN_POLICY_INFO@@PEBG@Z +?ValidateString@ConfigRegistry@@IEAAHPEAVIRequestContext@@PEAU_CONFIG_INFO@@PEBG@Z +?ValidateTrustedHosts@ConfigRegistry@@IEAAHPEAVIRequestContext@@PEBG@Z +?ValidateUrlPrefix@ConfigRegistry@@IEAAHPEAVIRequestContext@@PEBG@Z +?Verbose@ExtendedSemantic@@2KB DATA +?VerifyState@RBUFFER@@IEBAXXZ +?WSManError@@YAXPEBGK0KPEAVIRequestContext@@@Z +?WSManMemoryOperation@@YAHW4WSMANMEMOPERATION@@PEAXKK@Z +?WSManPostThreadMessageW@@YAHKI_K_J@Z +?WaitForAllChildrenToUnregister@ChildLifeTimeManager@@QEAAXK@Z +?WaitForConditionVar@CWSManCriticalSectionWithConditionVar@@QEAAKK@Z +?WaitForMore@PacketParser@@UEAA_NXZ +?WakeAllWaitingForConditionVar@CWSManCriticalSectionWithConditionVar@@QEAAXXZ +?WakeAllWaitingOnNoOfChildren@ChildLifeTimeManager@@AEAAXXZ +?Warning@EventLog@@SAXK@Z +?Warning@EventLog@@SAXKGPEAPEBG@Z +?Warning@EventLog@@SAXKPEBG@Z +?Warning@ExtendedSemantic@@2KB DATA +?WatchForChanges@CServiceConfigCache@@QEAAPEAVCServiceWatcher@1@PEAVIRequestContext@@PEAVIServiceConfigObserver@@@Z +?WrapperCoSetProxyBlanket@@YAJPEAUIUnknown@@KKPEAGKKPEAXKW4BehaviourForNoInterfaceError@@@Z +?Write@EventHandler@WSMan@@SAXAEBU_EVENT_DESCRIPTOR@@KPEAU_EVENT_DATA_DESCRIPTOR@@@Z +?WriteCredentialsToCredmanStore@CConfigManager@@SAHPEAVIRequestContext@@PEAG1H@Z +?WriteSoapA@EventHandler@WSMan@@SAXAEBU_EVENT_DESCRIPTOR@@PEBDK@Z +?WriteSoapMessageA@EventHandler@WSMan@@AEAAXAEBU_EVENT_DESCRIPTOR@@PEBDK@Z +?WriteSoapMessageW@EventHandler@WSMan@@AEAAXAEBU_EVENT_DESCRIPTOR@@PEBGK@Z +?WriteSoapMessageW_BE@EventHandler@WSMan@@AEAAXAEBU_EVENT_DESCRIPTOR@@PEBGK@Z +?WriteSoapW@EventHandler@WSMan@@SAXAEBU_EVENT_DESCRIPTOR@@PEBGK@Z +?WriteSoapW_BE@EventHandler@WSMan@@SAXAEBU_EVENT_DESCRIPTOR@@PEBGK@Z +?_PolicyChangedCallback@CWSManGroupPolicyManager@@CAXPEAXE@Z +?back@?$SimpleQueue@T_LARGE_INTEGER@@@@QEBA?BT_LARGE_INTEGER@@XZ +?empty@?$SimpleQueue@T_LARGE_INTEGER@@@@QEBA_NXZ +?front@?$SimpleQueue@T_LARGE_INTEGER@@@@QEBA?BT_LARGE_INTEGER@@XZ +?g_Resources@Locale@@0V?$Loader@VResources@Locale@@$0A@@@A DATA +?isValid@?$SafeSet@PEAVCListenerOperation@@@@QEBA_NXZ +?m_migContext@ConfigRegistry@@2PEAVWSManMigrationContext@@EA DATA +?pop@?$SimpleQueue@T_LARGE_INTEGER@@@@QEAAXXZ +?push@?$SimpleQueue@T_LARGE_INTEGER@@@@QEAAKT_LARGE_INTEGER@@@Z +?s_cacheMap@CClientConfigCache@@0V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@A DATA +?s_cacheMap@CServiceConfigCache@@0V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@A DATA +?s_cacheMap@CWinRSPluginConfigCache@@0V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@A DATA +?s_config@CConfigManager@@0V?$AutoRelease@VCConfigManager@@@@A DATA +?s_lock@CConfigManager@@0VFastLock@@A DATA +?s_lock@CWSManGroupPolicyManager@@0VFastLock@@A DATA +?s_mapLock@CClientConfigCache@@0VFastLock@@A DATA +?s_mapLock@CServiceConfigCache@@0VFastLock@@A DATA +?s_mapLock@CWinRSPluginConfigCache@@0VFastLock@@A DATA +?s_policyManager@CWSManGroupPolicyManager@@0V?$AutoRelease@VCWSManGroupPolicyManager@@@@A DATA +EnumServiceUserResources +FwGetParsedDocument +FwGetRootElement +FwIsXmlEscapedProperly +FwXmlAddAttributeToAttributeList +FwXmlCloseParser +FwXmlCompareAttributeName +FwXmlCompareAttributeNameEx +FwXmlCompareElementName +FwXmlCompareElementNameEx +FwXmlCompareElementNameLen +FwXmlCompareElementNameSpace +FwXmlCompareName +FwXmlCreateXmlFromElement +FwXmlDecodeXmlEscapes +FwXmlEncodeXmlEscapes +FwXmlFindAttribute +FwXmlFindAttributeEx +FwXmlFindChildElement +FwXmlFindChildElementEx +FwXmlGetAttribute +FwXmlGetAttributeNameEx +FwXmlGetAttributeNamespacePrefix +FwXmlGetAttributeValue +FwXmlGetAttributeValueDWord +FwXmlGetBooleanValue +FwXmlGetBuffer +FwXmlGetChild +FwXmlGetElementName +FwXmlGetElementNameEx +FwXmlGetElementNamespacePrefix +FwXmlGetElementNamespaceUrl +FwXmlGetEntryNameEx +FwXmlGetNamespaceForPrefix +FwXmlGetNormalizedString +FwXmlGetReferenceXmlFromElement +FwXmlGetRemainder +FwXmlGetSimpleContent +FwXmlGetSimpleContentEx +FwXmlGetSimpleContentEx2 +FwXmlHasText +FwXmlIsEmpty +FwXmlIsMustUnderstand +FwXmlIsNull +FwXmlIsSimpleContent +FwXmlIsSimpleContentOrEmpty +FwXmlIsTrueValue +FwXmlNumAttributes +FwXmlNumChildren +FwXmlNumChildrenWithName +FwXmlNumConsecutiveChildrenWithName +FwXmlParsePrefixedXML +FwXmlParseStream +FwXmlParseText +FwXmlParserCreate +FwXmlUpdatePrefixes +GetServiceSecurity +MI_Application_InitializeV1 +SetServiceSecurity +SubscriptionsProvEnumerate +WSManAckEvents +WSManAddSubscriptionManagerInternal +WSManCloseCommand +WSManCloseEnumerationHandle +WSManCloseEnumeratorHandle +WSManCloseObjectHandle +WSManCloseOperation +WSManClosePublisherHandle +WSManCloseSession +WSManCloseSessionHandle +WSManCloseShell +WSManCloseSubscriptionHandle +WSManConnectShell +WSManConnectShellCommand +WSManConstructError +WSManCreateEnumeratorInternal +WSManCreateInternal +WSManCreateInternalEx +WSManCreatePullSubscription +WSManCreatePushSubscription +WSManCreateSession +WSManCreateSessionInternal +WSManCreateShell +WSManCreateShellEx +WSManDecodeObject +WSManDeinitialize +WSManDeleteInternal +WSManDeleteInternalEx +WSManDeliverEndSubscriptionNotification +WSManDeliverEvent +WSManDisconnectShell +WSManEncodeObject +WSManEncodeObjectEx +WSManEncodeObjectInternal +WSManEnumerateInternal +WSManEnumerateInternalEx +WSManEnumeratorAddEvent +WSManEnumeratorAddObject +WSManEnumeratorBatchPolicyViolated +WSManEnumeratorNextObject +WSManEnumeratorObjectCount +WSManGetErrorMessage +WSManGetInternal +WSManGetInternalEx +WSManGetSessionOptionAsDword +WSManGetSessionOptionAsString +WSManIdentifyInternal +WSManInitialize +WSManInvokeInternal +WSManInvokeInternalEx +WSManPluginAuthzOperationComplete +WSManPluginAuthzQueryQuotaComplete +WSManPluginAuthzUserComplete +WSManPluginFreeRequestDetails +WSManPluginGetConfiguration +WSManPluginGetOperationParameters +WSManPluginInteractiveCallback +WSManPluginObjectAndBookmarkResult +WSManPluginObjectAndEprResult +WSManPluginObjectResult +WSManPluginOperationComplete +WSManPluginReceiveResult +WSManPluginReportCompletion +WSManPluginReportContext +WSManPluginShutdown +WSManPluginStartup +WSManProvCreate +WSManProvDelete +WSManProvEnumerate +WSManProvGet +WSManProvInvoke +WSManProvPut +WSManPull +WSManPullEvents +WSManPutInternal +WSManPutInternalEx +WSManReceiveShellOutput +WSManReconnectShell +WSManReconnectShellCommand +WSManRemoveSubscriptionManagerInternal +WSManRunShellCommand +WSManRunShellCommandEx +WSManSendShellInput +WSManSetSessionOption +WSManSignalShell +mi_clientFT_V1 DATA diff --git a/lib/libc/mingw/lib32/api-ms-win-appmodel-runtime-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-appmodel-runtime-l1-1-0.def new file mode 100644 index 0000000000..c2daa031bc --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-appmodel-runtime-l1-1-0.def @@ -0,0 +1,37 @@ +LIBRARY api-ms-win-appmodel-runtime-l1-1-0 + +EXPORTS + +ClosePackageInfo@4 +CreateDeviceAccessInstance@12 +GetApplicationUserModelId@12 +GetCurrentApplicationUserModelId@8 +GetCurrentPackageFamilyName@8 +GetCurrentPackageFullName@8 +GetCurrentPackageId@8 +GetCurrentPackageInfo@16 +GetCurrentPackagePath@8 +GetPackageFamilyName@12 +GetPackageFullName@12 +GetPackageId@12 +GetPackageInfo@20 +GetPackagePath@16 +GetPackagesByPackageFamily@20 +OpenPackageInfoByFullName@12 +PackageFamilyNameFromFullName@12 +PackageFamilyNameFromId@12 +PackageFullNameFromId@12 +PackageIdFromFullName@16 +PackageNameAndPublisherIdFromFamilyName@20 +ProcessTrackerInsertOrWait@8 +ProcessTrackerRemove@4 +TokenBindingDeleteAllBindings@0 +TokenBindingDeleteBinding@4 +TokenBindingGenerateBinding@40 +TokenBindingGenerateID@16 +TokenBindingGenerateIDForUri@12 +TokenBindingGenerateMessage@20 +TokenBindingGetHighestSupportedVersion@8 +TokenBindingGetKeyTypesClient@4 +TokenBindingGetKeyTypesServer@4 +TokenBindingVerifyMessage@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-appmodel-runtime-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-appmodel-runtime-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..a7e4da52b6 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-appmodel-runtime-l1-1-0_windowsapp.def @@ -0,0 +1,25 @@ +LIBRARY api-ms-win-appmodel-runtime-l1-1-0 + +EXPORTS + +ClosePackageInfo@4 +CreateDeviceAccessInstance@12 +GetApplicationUserModelId@12 +GetCurrentApplicationUserModelId@8 +GetCurrentPackageFamilyName@8 +GetCurrentPackageFullName@8 +GetCurrentPackageId@8 +GetCurrentPackageInfo@16 +GetCurrentPackagePath@8 +GetPackageFamilyName@12 +GetPackageFullName@12 +GetPackageId@12 +GetPackageInfo@20 +GetPackagePath@16 +GetPackagesByPackageFamily@20 +OpenPackageInfoByFullName@12 +PackageFamilyNameFromFullName@12 +PackageFamilyNameFromId@12 +PackageFullNameFromId@12 +PackageIdFromFullName@16 +PackageNameAndPublisherIdFromFamilyName@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-appmodel-runtime-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-appmodel-runtime-l1-1-1.def new file mode 100644 index 0000000000..b414a8bea0 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-appmodel-runtime-l1-1-1.def @@ -0,0 +1,20 @@ +LIBRARY api-ms-win-appmodel-runtime-l1-1-1 + +EXPORTS + +FindPackagesByPackageFamily@28 +FormatApplicationUserModelId@16 +GetApplicationUserModelIdFromToken@12 +GetPackageApplicationIds@16 +GetPackageFamilyNameFromToken@12 +GetPackageFullNameFromToken@12 +GetPackagePathByFullName@12 +GetStagedPackageOrigin@8 +GetStagedPackagePathByFullName@12 +OpenPackageInfoByFullNameForUser@16 +ParseApplicationUserModelId@20 +VerifyApplicationUserModelId@4 +VerifyPackageFamilyName@4 +VerifyPackageFullName@4 +VerifyPackageId@4 +VerifyPackageRelativeApplicationId@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-appmodel-runtime-l1-1-1_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-appmodel-runtime-l1-1-1_windowsapp.def new file mode 100644 index 0000000000..df1110f143 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-appmodel-runtime-l1-1-1_windowsapp.def @@ -0,0 +1,19 @@ +LIBRARY api-ms-win-appmodel-runtime-l1-1-1 + +EXPORTS + +FindPackagesByPackageFamily@28 +FormatApplicationUserModelId@16 +GetApplicationUserModelIdFromToken@12 +GetPackageApplicationIds@16 +GetPackageFamilyNameFromToken@12 +GetPackageFullNameFromToken@12 +GetPackagePathByFullName@12 +GetStagedPackagePathByFullName@12 +OpenPackageInfoByFullNameForUser@16 +ParseApplicationUserModelId@20 +VerifyApplicationUserModelId@4 +VerifyPackageFamilyName@4 +VerifyPackageFullName@4 +VerifyPackageId@4 +VerifyPackageRelativeApplicationId@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-appmodel-runtime-l1-1-2.def b/lib/libc/mingw/lib32/api-ms-win-appmodel-runtime-l1-1-2.def new file mode 100644 index 0000000000..48af82548e --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-appmodel-runtime-l1-1-2.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-appmodel-runtime-l1-1-2 + +EXPORTS + +AppPolicyGetClrCompat@8 +AppPolicyGetCreateFileAccess@8 +AppPolicyGetLifecycleManagement@8 +AppPolicyGetMediaFoundationCodecLoading@8 +AppPolicyGetProcessTerminationMethod@8 +AppPolicyGetShowDeveloperDiagnostic@8 +AppPolicyGetThreadInitializationType@8 +AppPolicyGetWindowingModel@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-appmodel-runtime-l1-1-3.def b/lib/libc/mingw/lib32/api-ms-win-appmodel-runtime-l1-1-3.def new file mode 100644 index 0000000000..8159bcfb0f --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-appmodel-runtime-l1-1-3.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-appmodel-runtime-l1-1-3 + +EXPORTS + +GetCurrentPackageInfo2@20 +GetCurrentPackagePath2@12 +GetPackageInfo2@24 +GetPackagePathByFullName2@16 +GetStagedPackagePathByFullName2@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-apiquery-l2-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-apiquery-l2-1-0.def new file mode 100644 index 0000000000..dde95908ea --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-apiquery-l2-1-0.def @@ -0,0 +1,15 @@ +LIBRARY api-ms-win-core-apiquery-l2-1-0 + +EXPORTS + +IsApiSetImplemented@4 +TokenBindingDeleteAllBindings@0 +TokenBindingDeleteBinding@4 +TokenBindingGenerateBinding@40 +TokenBindingGenerateID@16 +TokenBindingGenerateIDForUri@12 +TokenBindingGenerateMessage@20 +TokenBindingGetHighestSupportedVersion@8 +TokenBindingGetKeyTypesClient@4 +TokenBindingGetKeyTypesServer@4 +TokenBindingVerifyMessage@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-atoms-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-atoms-l1-1-0.def new file mode 100644 index 0000000000..d382f0541f --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-atoms-l1-1-0.def @@ -0,0 +1,21 @@ +LIBRARY api-ms-win-core-atoms-l1-1-0 + +EXPORTS + +AddAtomA@4 +AddAtomW@4 +DeleteAtom@4 +FindAtomA@4 +FindAtomW@4 +GetAtomNameA@12 +GetAtomNameW@12 +GlobalAddAtomA@4 +GlobalAddAtomExA@8 +GlobalAddAtomExW@8 +GlobalAddAtomW@4 +GlobalDeleteAtom@4 +GlobalFindAtomA@4 +GlobalFindAtomW@4 +GlobalGetAtomNameA@12 +GlobalGetAtomNameW@12 +InitAtomTable@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-atoms-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-atoms-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..829170dc07 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-atoms-l1-1-0_windowsapp.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-core-atoms-l1-1-0 + +EXPORTS + +AddAtomA@4 +AddAtomW@4 +DeleteAtom@4 +FindAtomA@4 +FindAtomW@4 +GetAtomNameA@12 +GetAtomNameW@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-backgroundtask-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-backgroundtask-l1-1-0.def new file mode 100644 index 0000000000..45c872386c --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-backgroundtask-l1-1-0.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-backgroundtask-l1-1-0 + +EXPORTS + +RaiseCustomSystemEventTrigger@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-calendar-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-calendar-l1-1-0.def new file mode 100644 index 0000000000..42bf0096c0 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-calendar-l1-1-0.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-core-calendar-l1-1-0 + +EXPORTS + +AdjustCalendarDate@12 +ConvertCalDateTimeToSystemTime@8 +ConvertSystemTimeToCalDateTime@12 +GetCalendarDateFormatEx@24 +GetCalendarSupportedDateRange@12 +IsCalendarLeapYear@12 +UpdateCalendarDayOfWeek@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-com-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-com-l1-1-0.def new file mode 100644 index 0000000000..4538a1eb02 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-com-l1-1-0.def @@ -0,0 +1,84 @@ +LIBRARY api-ms-win-core-com-l1-1-0 + +EXPORTS + +CLSIDFromProgID@8 +CLSIDFromString@8 +CoAddRefServerProcess@0 +CoAllowUnmarshalerCLSID@4 +CoCancelCall@8 +CoCopyProxy@8 +CoCreateFreeThreadedMarshaler@8 +CoCreateGuid@4 +CoCreateInstance@20 +CoCreateInstanceEx@24 +CoCreateInstanceFromApp@24 +CoDecodeProxy@16 +CoDecrementMTAUsage@4 +CoDisableCallCancellation@4 +CoDisconnectContext@4 +CoDisconnectObject@8 +CoEnableCallCancellation@4 +CoFreeUnusedLibraries@0 +CoFreeUnusedLibrariesEx@8 +CoGetApartmentType@8 +CoGetCallContext@8 +CoGetCallerTID@4 +CoGetCancelObject@12 +CoGetClassObject@20 +CoGetContextToken@4 +CoGetCurrentLogicalThreadId@4 +CoGetCurrentProcess@0 +CoGetDefaultContext@12 +CoGetInterfaceAndReleaseStream@12 +CoGetMalloc@8 +CoGetMarshalSizeMax@24 +CoGetObjectContext@8 +CoGetPSClsid@8 +CoGetStandardMarshal@24 +CoGetStdMarshalEx@12 +CoGetTreatAsClass@8 +CoImpersonateClient@0 +CoIncrementMTAUsage@4 +CoInitializeEx@8 +CoInitializeSecurity@36 +CoInvalidateRemoteMachineBindings@4 +CoIsHandlerConnected@4 +CoLockObjectExternal@12 +CoMarshalHresult@8 +CoMarshalInterface@24 +CoMarshalInterThreadInterfaceInStream@12 +CoQueryAuthenticationServices@8 +CoQueryClientBlanket@28 +CoQueryProxyBlanket@32 +CoRegisterClassObject@20 +CoRegisterPSClsid@8 +CoRegisterSurrogate@4 +CoReleaseMarshalData@4 +CoReleaseServerProcess@0 +CoResumeClassObjects@0 +CoRevertToSelf@0 +CoRevokeClassObject@4 +CoSetCancelObject@4 +CoSetProxyBlanket@32 +CoSuspendClassObjects@0 +CoSwitchCallContext@8 +CoTaskMemAlloc@4 +CoTaskMemFree@4 +CoTaskMemRealloc@8 +CoTestCancel@0 +CoUninitialize@0 +CoUnmarshalHresult@8 +CoUnmarshalInterface@12 +CoWaitForMultipleHandles@20 +CoWaitForMultipleObjects@20 +CreateStreamOnHGlobal@12 +FreePropVariantArray@8 +GetHGlobalFromStream@8 +IIDFromString@8 +ProgIDFromCLSID@8 +PropVariantClear@4 +PropVariantCopy@8 +StringFromCLSID@8 +StringFromGUID2@12 +StringFromIID@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-com-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-com-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..f694582ac1 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-com-l1-1-0_windowsapp.def @@ -0,0 +1,57 @@ +LIBRARY api-ms-win-core-com-l1-1-0 + +EXPORTS + +CLSIDFromProgID@8 +CLSIDFromString@8 +CoAddRefServerProcess@0 +CoCreateFreeThreadedMarshaler@8 +CoCreateGuid@4 +CoCreateInstance@20 +CoCreateInstanceEx@24 +CoCreateInstanceFromApp@24 +CoDecrementMTAUsage@4 +CoDisconnectObject@8 +CoFreeUnusedLibraries@0 +CoFreeUnusedLibrariesEx@8 +CoGetApartmentType@8 +CoGetClassObject@20 +CoGetContextToken@4 +CoGetCurrentLogicalThreadId@4 +CoGetInterfaceAndReleaseStream@12 +CoGetMalloc@8 +CoGetMarshalSizeMax@24 +CoGetObjectContext@8 +CoGetStandardMarshal@24 +CoIncrementMTAUsage@4 +CoInitializeEx@8 +CoInitializeSecurity@36 +CoLockObjectExternal@12 +CoMarshalInterface@24 +CoMarshalInterThreadInterfaceInStream@12 +CoRegisterClassObject@20 +CoRegisterPSClsid@8 +CoReleaseMarshalData@4 +CoReleaseServerProcess@0 +CoResumeClassObjects@0 +CoRevokeClassObject@4 +CoSetProxyBlanket@32 +CoSuspendClassObjects@0 +CoSwitchCallContext@8 +CoTaskMemAlloc@4 +CoTaskMemFree@4 +CoTaskMemRealloc@8 +CoUninitialize@0 +CoUnmarshalInterface@12 +CoWaitForMultipleHandles@20 +CoWaitForMultipleObjects@20 +CreateStreamOnHGlobal@12 +FreePropVariantArray@8 +GetHGlobalFromStream@8 +IIDFromString@8 +ProgIDFromCLSID@8 +PropVariantClear@4 +PropVariantCopy@8 +StringFromCLSID@8 +StringFromGUID2@12 +StringFromIID@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-com-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-com-l1-1-1.def new file mode 100644 index 0000000000..15bd76222f --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-com-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-com-l1-1-1 + +EXPORTS + +CoRegisterActivationFilter@4 +RoGetAgileReference@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-com-l1-1-1_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-com-l1-1-1_windowsapp.def new file mode 100644 index 0000000000..a34f2c3ed8 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-com-l1-1-1_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-com-l1-1-1 + +EXPORTS + +RoGetAgileReference@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-com-l1-1-2.def b/lib/libc/mingw/lib32/api-ms-win-core-com-l1-1-2.def new file mode 100644 index 0000000000..39eed651fd --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-com-l1-1-2.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-com-l1-1-2 + +EXPORTS + +CLSIDFromProgIDEx@8 +CoFileTimeNow@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-com-l1-1-3.def b/lib/libc/mingw/lib32/api-ms-win-core-com-l1-1-3.def new file mode 100644 index 0000000000..52d865fa6b --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-com-l1-1-3.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-com-l1-1-3 + +EXPORTS + +CoRegisterDeviceCatalog@8 +CoRevokeDeviceCatalog@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-com-l2-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-com-l2-1-1.def new file mode 100644 index 0000000000..81b907bec1 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-com-l2-1-1.def @@ -0,0 +1,25 @@ +LIBRARY api-ms-win-core-com-l2-1-1 + +EXPORTS + +CreateILockBytesOnHGlobal@12 +FmtIdToPropStgName@8 +GetConvertStg@4 +GetHGlobalFromILockBytes@8 +PropStgNameToFmtId@8 +ReadClassStg@8 +ReadClassStm@8 +StgCreateDocfile@16 +StgCreateDocfileOnILockBytes@16 +StgCreatePropSetStg@12 +StgCreatePropStg@24 +StgCreateStorageEx@32 +StgIsStorageFile@4 +StgIsStorageILockBytes@4 +StgOpenPropStg@20 +StgOpenStorage@24 +StgOpenStorageEx@32 +StgOpenStorageOnILockBytes@24 +StgSetTimes@16 +WriteClassStg@8 +WriteClassStm@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-com-midlproxystub-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-com-midlproxystub-l1-1-0.def new file mode 100644 index 0000000000..5614f71ef2 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-com-midlproxystub-l1-1-0.def @@ -0,0 +1,77 @@ +LIBRARY api-ms-win-core-com-midlproxystub-l1-1-0 + +EXPORTS + +CStdAsyncStubBuffer_AddRef@4 +CStdAsyncStubBuffer_Connect@8 +CStdAsyncStubBuffer_Disconnect@4 +CStdAsyncStubBuffer_Invoke@12 +CStdAsyncStubBuffer_QueryInterface@12 +CStdAsyncStubBuffer_Release@4 +CStdAsyncStubBuffer2_Connect@8 +CStdAsyncStubBuffer2_Disconnect@4 +CStdAsyncStubBuffer2_Release@4 +CStdStubBuffer2_Connect@8 +CStdStubBuffer2_CountRefs@4 +CStdStubBuffer2_Disconnect@4 +CStdStubBuffer2_QueryInterface@12 +NdrProxyForwardingFunction10@0 +NdrProxyForwardingFunction11@0 +NdrProxyForwardingFunction12@0 +NdrProxyForwardingFunction13@0 +NdrProxyForwardingFunction14@0 +NdrProxyForwardingFunction15@0 +NdrProxyForwardingFunction16@0 +NdrProxyForwardingFunction17@0 +NdrProxyForwardingFunction18@0 +NdrProxyForwardingFunction19@0 +NdrProxyForwardingFunction20@0 +NdrProxyForwardingFunction21@0 +NdrProxyForwardingFunction22@0 +NdrProxyForwardingFunction23@0 +NdrProxyForwardingFunction24@0 +NdrProxyForwardingFunction25@0 +NdrProxyForwardingFunction26@0 +NdrProxyForwardingFunction27@0 +NdrProxyForwardingFunction28@0 +NdrProxyForwardingFunction29@0 +NdrProxyForwardingFunction3@0 +NdrProxyForwardingFunction30@0 +NdrProxyForwardingFunction31@0 +NdrProxyForwardingFunction32@0 +NdrProxyForwardingFunction4@0 +NdrProxyForwardingFunction5@0 +NdrProxyForwardingFunction6@0 +NdrProxyForwardingFunction7@0 +NdrProxyForwardingFunction8@0 +NdrProxyForwardingFunction9@0 +ObjectStublessClient10@0 +ObjectStublessClient11@0 +ObjectStublessClient12@0 +ObjectStublessClient13@0 +ObjectStublessClient14@0 +ObjectStublessClient15@0 +ObjectStublessClient16@0 +ObjectStublessClient17@0 +ObjectStublessClient18@0 +ObjectStublessClient19@0 +ObjectStublessClient20@0 +ObjectStublessClient21@0 +ObjectStublessClient22@0 +ObjectStublessClient23@0 +ObjectStublessClient24@0 +ObjectStublessClient25@0 +ObjectStublessClient26@0 +ObjectStublessClient27@0 +ObjectStublessClient28@0 +ObjectStublessClient29@0 +ObjectStublessClient3@0 +ObjectStublessClient30@0 +ObjectStublessClient31@0 +ObjectStublessClient32@0 +ObjectStublessClient4@0 +ObjectStublessClient5@0 +ObjectStublessClient6@0 +ObjectStublessClient7@0 +ObjectStublessClient8@0 +ObjectStublessClient9@0 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-comm-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-comm-l1-1-0.def new file mode 100644 index 0000000000..b1577137ee --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-comm-l1-1-0.def @@ -0,0 +1,22 @@ +LIBRARY api-ms-win-core-comm-l1-1-0 + +EXPORTS + +ClearCommBreak@4 +ClearCommError@12 +EscapeCommFunction@8 +GetCommConfig@12 +GetCommMask@8 +GetCommModemStatus@8 +GetCommProperties@8 +GetCommState@8 +GetCommTimeouts@8 +PurgeComm@8 +SetCommBreak@4 +SetCommConfig@12 +SetCommMask@8 +SetCommState@8 +SetCommTimeouts@8 +SetupComm@12 +TransmitCommChar@8 +WaitCommEvent@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-comm-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-comm-l1-1-1.def new file mode 100644 index 0000000000..e974896f74 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-comm-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-comm-l1-1-1 + +EXPORTS + +OpenCommPort@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-comm-l1-1-2.def b/lib/libc/mingw/lib32/api-ms-win-core-comm-l1-1-2.def new file mode 100644 index 0000000000..4fa237f735 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-comm-l1-1-2.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-comm-l1-1-2 + +EXPORTS + +GetCommPorts@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-console-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-console-l1-1-0.def new file mode 100644 index 0000000000..9ab4723ef7 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-console-l1-1-0.def @@ -0,0 +1,17 @@ +LIBRARY api-ms-win-core-console-l1-1-0 + +EXPORTS + +AllocConsole@0 +GetConsoleCP@0 +GetConsoleMode@8 +GetConsoleOutputCP@0 +GetNumberOfConsoleInputEvents@8 +ReadConsoleA@20 +ReadConsoleInputA@16 +ReadConsoleInputW@16 +ReadConsoleW@20 +SetConsoleCtrlHandler@8 +SetConsoleMode@8 +WriteConsoleA@20 +WriteConsoleW@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-console-l1-2-0.def b/lib/libc/mingw/lib32/api-ms-win-core-console-l1-2-0.def new file mode 100644 index 0000000000..c7389ce94c --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-console-l1-2-0.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-console-l1-2-0 + +EXPORTS + +AttachConsole@4 +FreeConsole@0 +PeekConsoleInputA@16 +PeekConsoleInputW@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-console-l1-2-1.def b/lib/libc/mingw/lib32/api-ms-win-core-console-l1-2-1.def new file mode 100644 index 0000000000..668c2da64a --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-console-l1-2-1.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-console-l1-2-1 + +EXPORTS + +ClosePseudoConsole@4 +CreatePseudoConsole@20 +ResizePseudoConsole@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-console-l2-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-console-l2-1-0.def new file mode 100644 index 0000000000..13e1cadb3f --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-console-l2-1-0.def @@ -0,0 +1,37 @@ +LIBRARY api-ms-win-core-console-l2-1-0 + +EXPORTS + +CreateConsoleScreenBuffer@20 +FillConsoleOutputAttribute@20 +FillConsoleOutputCharacterA@20 +FillConsoleOutputCharacterW@20 +FlushConsoleInputBuffer@4 +GenerateConsoleCtrlEvent@8 +GetConsoleCursorInfo@8 +GetConsoleScreenBufferInfo@8 +GetConsoleScreenBufferInfoEx@8 +GetLargestConsoleWindowSize@4 +ReadConsoleOutputA@20 +ReadConsoleOutputAttribute@20 +ReadConsoleOutputCharacterA@20 +ReadConsoleOutputCharacterW@20 +ReadConsoleOutputW@20 +ScrollConsoleScreenBufferA@20 +ScrollConsoleScreenBufferW@20 +SetConsoleActiveScreenBuffer@4 +SetConsoleCP@4 +SetConsoleCursorInfo@8 +SetConsoleCursorPosition@8 +SetConsoleOutputCP@4 +SetConsoleScreenBufferInfoEx@8 +SetConsoleScreenBufferSize@8 +SetConsoleTextAttribute@8 +SetConsoleWindowInfo@12 +WriteConsoleInputA@16 +WriteConsoleInputW@16 +WriteConsoleOutputA@20 +WriteConsoleOutputAttribute@20 +WriteConsoleOutputCharacterA@20 +WriteConsoleOutputCharacterW@20 +WriteConsoleOutputW@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-console-l2-2-0.def b/lib/libc/mingw/lib32/api-ms-win-core-console-l2-2-0.def new file mode 100644 index 0000000000..6a5c564a5b --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-console-l2-2-0.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-core-console-l2-2-0 + +EXPORTS + +GetConsoleOriginalTitleA@8 +GetConsoleOriginalTitleW@8 +GetConsoleTitleA@8 +GetConsoleTitleW@8 +SetConsoleTitleA@4 +SetConsoleTitleW@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-console-l3-2-0.def b/lib/libc/mingw/lib32/api-ms-win-core-console-l3-2-0.def new file mode 100644 index 0000000000..15cab2821e --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-console-l3-2-0.def @@ -0,0 +1,36 @@ +LIBRARY api-ms-win-core-console-l3-2-0 + +EXPORTS + +AddConsoleAliasA@12 +AddConsoleAliasW@12 +ExpungeConsoleCommandHistoryA@4 +ExpungeConsoleCommandHistoryW@4 +GetConsoleAliasA@16 +GetConsoleAliasesA@12 +GetConsoleAliasesLengthA@4 +GetConsoleAliasesLengthW@4 +GetConsoleAliasesW@12 +GetConsoleAliasExesA@8 +GetConsoleAliasExesLengthA@0 +GetConsoleAliasExesLengthW@0 +GetConsoleAliasExesW@8 +GetConsoleAliasW@16 +GetConsoleCommandHistoryA@12 +GetConsoleCommandHistoryLengthA@4 +GetConsoleCommandHistoryLengthW@4 +GetConsoleCommandHistoryW@12 +GetConsoleDisplayMode@4 +GetConsoleFontSize@8 +GetConsoleHistoryInfo@4 +GetConsoleProcessList@8 +GetConsoleSelectionInfo@4 +GetConsoleWindow@0 +GetCurrentConsoleFont@12 +GetCurrentConsoleFontEx@12 +GetNumberOfConsoleMouseButtons@4 +SetConsoleDisplayMode@12 +SetConsoleHistoryInfo@4 +SetConsoleNumberOfCommandsA@8 +SetConsoleNumberOfCommandsW@8 +SetCurrentConsoleFontEx@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-datetime-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-datetime-l1-1-0.def new file mode 100644 index 0000000000..3c65999444 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-datetime-l1-1-0.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-datetime-l1-1-0 + +EXPORTS + +GetDateFormatA@24 +GetDateFormatW@24 +GetTimeFormatA@24 +GetTimeFormatW@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-datetime-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-datetime-l1-1-1.def new file mode 100644 index 0000000000..9eb8b163c5 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-datetime-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-datetime-l1-1-1 + +EXPORTS + +GetDateFormatEx@28 +GetTimeFormatEx@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-datetime-l1-1-2.def b/lib/libc/mingw/lib32/api-ms-win-core-datetime-l1-1-2.def new file mode 100644 index 0000000000..c103f09216 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-datetime-l1-1-2.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-datetime-l1-1-2 + +EXPORTS + +GetDurationFormatEx@32 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-debug-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-debug-l1-1-0.def new file mode 100644 index 0000000000..5928b3f574 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-debug-l1-1-0.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-debug-l1-1-0 + +EXPORTS + +DebugBreak@0 +IsDebuggerPresent@0 +OutputDebugStringA@4 +OutputDebugStringW@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-debug-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-debug-l1-1-1.def new file mode 100644 index 0000000000..02ad9c01a8 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-debug-l1-1-1.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-debug-l1-1-1 + +EXPORTS + +CheckRemoteDebuggerPresent@8 +ContinueDebugEvent@12 +DebugActiveProcess@4 +DebugActiveProcessStop@4 +WaitForDebugEvent@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-debug-l1-1-2.def b/lib/libc/mingw/lib32/api-ms-win-core-debug-l1-1-2.def new file mode 100644 index 0000000000..e1b380938e --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-debug-l1-1-2.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-debug-l1-1-2 + +EXPORTS + +WaitForDebugEventEx@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-debug-minidump-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-debug-minidump-l1-1-0.def new file mode 100644 index 0000000000..164fcadd1d --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-debug-minidump-l1-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-debug-minidump-l1-1-0 + +EXPORTS + +MiniDumpReadDumpStream@20 +MiniDumpWriteDump@28 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-delayload-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-delayload-l1-1-0.def new file mode 100644 index 0000000000..4ef7b0823a --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-delayload-l1-1-0.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-delayload-l1-1-0 + +EXPORTS + +DelayLoadFailureHook@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-delayload-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-delayload-l1-1-1.def new file mode 100644 index 0000000000..e24edbf4cd --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-delayload-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-delayload-l1-1-1 + +EXPORTS + +ResolveDelayLoadedAPI@24 +ResolveDelayLoadsFromDll@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-enclave-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-enclave-l1-1-0.def new file mode 100644 index 0000000000..3bb05d9cab --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-enclave-l1-1-0.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-enclave-l1-1-0 + +EXPORTS + +CreateEnclave@32 +InitializeEnclave@20 +IsEnclaveTypeSupported@4 +LoadEnclaveData@36 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-enclave-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-enclave-l1-1-1.def new file mode 100644 index 0000000000..5e56d7cf30 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-enclave-l1-1-1.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-enclave-l1-1-1 + +EXPORTS + +CallEnclave@16 +DeleteEnclave@4 +LoadEnclaveImageA@8 +LoadEnclaveImageW@8 +TerminateEnclave@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-errorhandling-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-errorhandling-l1-1-0.def new file mode 100644 index 0000000000..07c07aa4ae --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-errorhandling-l1-1-0.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-core-errorhandling-l1-1-0 + +EXPORTS + +GetErrorMode@0 +GetLastError@0 +RaiseException@16 +SetErrorMode@4 +SetLastError@4 +SetUnhandledExceptionFilter@4 +UnhandledExceptionFilter@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-errorhandling-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-errorhandling-l1-1-1.def new file mode 100644 index 0000000000..c3a7c8e431 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-errorhandling-l1-1-1.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-errorhandling-l1-1-1 + +EXPORTS + +AddVectoredContinueHandler@8 +AddVectoredExceptionHandler@8 +RemoveVectoredContinueHandler@4 +RemoveVectoredExceptionHandler@4 +RestoreLastError@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-errorhandling-l1-1-1_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-errorhandling-l1-1-1_windowsapp.def new file mode 100644 index 0000000000..0d0a2060f5 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-errorhandling-l1-1-1_windowsapp.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-errorhandling-l1-1-1 + +EXPORTS + +AddVectoredExceptionHandler@8 +RemoveVectoredExceptionHandler@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-errorhandling-l1-1-2.def b/lib/libc/mingw/lib32/api-ms-win-core-errorhandling-l1-1-2.def new file mode 100644 index 0000000000..0f9c47ec35 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-errorhandling-l1-1-2.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-errorhandling-l1-1-2 + +EXPORTS + +RaiseFailFastException@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-errorhandling-l1-1-3.def b/lib/libc/mingw/lib32/api-ms-win-core-errorhandling-l1-1-3.def new file mode 100644 index 0000000000..eea77e56e5 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-errorhandling-l1-1-3.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-errorhandling-l1-1-3 + +EXPORTS + +FatalAppExitA@8 +FatalAppExitW@8 +GetThreadErrorMode@0 +SetThreadErrorMode@8 +TerminateProcessOnMemoryExhaustion@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-errorhandling-l1-1-3_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-errorhandling-l1-1-3_windowsapp.def new file mode 100644 index 0000000000..75d9db5c01 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-errorhandling-l1-1-3_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-errorhandling-l1-1-3 + +EXPORTS + +FatalAppExitA@8 +FatalAppExitW@8 +GetThreadErrorMode@0 +SetThreadErrorMode@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-featurestaging-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-featurestaging-l1-1-0.def new file mode 100644 index 0000000000..5cede3d02a --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-featurestaging-l1-1-0.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-featurestaging-l1-1-0 + +EXPORTS + +GetFeatureEnabledState@8 +RecordFeatureError@8 +RecordFeatureUsage@16 +SubscribeFeatureStateChangeNotification@12 +UnsubscribeFeatureStateChangeNotification@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-featurestaging-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-featurestaging-l1-1-1.def new file mode 100644 index 0000000000..463d4afeb8 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-featurestaging-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-featurestaging-l1-1-1 + +EXPORTS + +GetFeatureVariant@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-fibers-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-fibers-l1-1-0.def new file mode 100644 index 0000000000..5673f32884 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-fibers-l1-1-0.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-fibers-l1-1-0 + +EXPORTS + +FlsAlloc@4 +FlsFree@4 +FlsGetValue@4 +FlsSetValue@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-fibers-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-fibers-l1-1-1.def new file mode 100644 index 0000000000..88e19fde3e --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-fibers-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-fibers-l1-1-1 + +EXPORTS + +IsThreadAFiber@0 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-fibers-l2-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-fibers-l2-1-0.def new file mode 100644 index 0000000000..f401c6e80b --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-fibers-l2-1-0.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-fibers-l2-1-0 + +EXPORTS + +ConvertFiberToThread@0 +ConvertThreadToFiber@4 +CreateFiber@12 +DeleteFiber@4 +SwitchToFiber@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-fibers-l2-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-fibers-l2-1-0_windowsapp.def new file mode 100644 index 0000000000..d0dfd4cb6a --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-fibers-l2-1-0_windowsapp.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-fibers-l2-1-0 + +EXPORTS + +ConvertFiberToThread@0 +DeleteFiber@4 +SwitchToFiber@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-fibers-l2-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-fibers-l2-1-1.def new file mode 100644 index 0000000000..feda2af1aa --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-fibers-l2-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-fibers-l2-1-1 + +EXPORTS + +ConvertThreadToFiberEx@8 +CreateFiberEx@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-file-ansi-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-file-ansi-l1-1-0.def new file mode 100644 index 0000000000..8baddb16fe --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-file-ansi-l1-1-0.def @@ -0,0 +1,13 @@ +LIBRARY api-ms-win-core-file-ansi-l1-1-0 + +EXPORTS + +DefineDosDeviceA@12 +DeleteVolumeMountPointA@4 +FindFirstVolumeA@8 +FindNextVolumeA@12 +GetLogicalDriveStringsA@8 +GetVolumeNameForVolumeMountPointA@12 +GetVolumePathNameA@12 +GetVolumePathNamesForVolumeNameA@16 +QueryDosDeviceA@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-file-ansi-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-file-ansi-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..2abf01ffc8 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-file-ansi-l1-1-0_windowsapp.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-file-ansi-l1-1-0 + +EXPORTS + +DeleteVolumeMountPointA@4 +FindFirstVolumeA@8 +FindNextVolumeA@12 +GetLogicalDriveStringsA@8 +GetVolumePathNameA@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-file-ansi-l2-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-file-ansi-l2-1-0.def new file mode 100644 index 0000000000..e165dec6bb --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-file-ansi-l2-1-0.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-file-ansi-l2-1-0 + +EXPORTS + +CopyFileExA@24 +CreateDirectoryExA@12 +CreateSymbolicLinkA@12 +MoveFileWithProgressA@20 +ReplaceFileA@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-file-ansi-l2-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-file-ansi-l2-1-0_windowsapp.def new file mode 100644 index 0000000000..ed7165f255 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-file-ansi-l2-1-0_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-file-ansi-l2-1-0 + +EXPORTS + +CopyFileExA@24 +CreateDirectoryExA@12 +MoveFileWithProgressA@20 +ReplaceFileA@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-file-fromapp-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-file-fromapp-l1-1-0.def new file mode 100644 index 0000000000..d303123871 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-file-fromapp-l1-1-0.def @@ -0,0 +1,15 @@ +LIBRARY api-ms-win-core-file-fromapp-l1-1-0 + +EXPORTS + +CopyFileFromAppW@12 +CreateDirectoryFromAppW@8 +CreateFile2FromAppW@20 +CreateFileFromAppW@28 +DeleteFileFromAppW@4 +FindFirstFileExFromAppW@24 +GetFileAttributesExFromAppW@12 +MoveFileFromAppW@8 +RemoveDirectoryFromAppW@4 +ReplaceFileFromAppW@24 +SetFileAttributesFromAppW@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-file-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-file-l1-1-0.def new file mode 100644 index 0000000000..f41acf9588 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-file-l1-1-0.def @@ -0,0 +1,79 @@ +LIBRARY api-ms-win-core-file-l1-1-0 + +EXPORTS + +CompareFileTime@8 +CreateDirectoryA@8 +CreateDirectoryW@8 +CreateFileA@28 +CreateFileW@28 +DefineDosDeviceW@12 +DeleteFileA@4 +DeleteFileW@4 +DeleteVolumeMountPointW@4 +FileTimeToLocalFileTime@8 +FindClose@4 +FindCloseChangeNotification@4 +FindFirstChangeNotificationA@12 +FindFirstChangeNotificationW@12 +FindFirstFileA@8 +FindFirstFileExA@24 +FindFirstFileExW@24 +FindFirstFileW@8 +FindFirstVolumeW@8 +FindNextChangeNotification@4 +FindNextFileA@8 +FindNextFileW@8 +FindNextVolumeW@12 +FindVolumeClose@4 +FlushFileBuffers@4 +GetDiskFreeSpaceA@20 +GetDiskFreeSpaceExA@16 +GetDiskFreeSpaceExW@16 +GetDiskFreeSpaceW@20 +GetDriveTypeA@4 +GetDriveTypeW@4 +GetFileAttributesA@4 +GetFileAttributesExA@12 +GetFileAttributesExW@12 +GetFileAttributesW@4 +GetFileInformationByHandle@8 +GetFileSize@8 +GetFileSizeEx@8 +GetFileTime@16 +GetFileType@4 +GetFinalPathNameByHandleA@16 +GetFinalPathNameByHandleW@16 +GetFullPathNameA@16 +GetFullPathNameW@16 +GetLogicalDrives@0 +GetLogicalDriveStringsW@8 +GetLongPathNameA@12 +GetLongPathNameW@12 +GetShortPathNameW@12 +GetTempFileNameW@16 +GetVolumeInformationByHandleW@32 +GetVolumeInformationW@32 +GetVolumePathNameW@12 +LocalFileTimeToFileTime@8 +LockFile@20 +LockFileEx@24 +QueryDosDeviceW@12 +ReadFile@20 +ReadFileEx@20 +ReadFileScatter@20 +RemoveDirectoryA@4 +RemoveDirectoryW@4 +SetEndOfFile@4 +SetFileAttributesA@8 +SetFileAttributesW@8 +SetFileInformationByHandle@16 +SetFilePointer@16 +SetFilePointerEx@20 +SetFileTime@16 +SetFileValidData@12 +UnlockFile@20 +UnlockFileEx@20 +WriteFile@20 +WriteFileEx@20 +WriteFileGather@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-file-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-file-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..3100d67c1e --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-file-l1-1-0_windowsapp.def @@ -0,0 +1,77 @@ +LIBRARY api-ms-win-core-file-l1-1-0 + +EXPORTS + +CompareFileTime@8 +CreateDirectoryA@8 +CreateDirectoryW@8 +CreateFileA@28 +CreateFileW@28 +DeleteFileA@4 +DeleteFileW@4 +DeleteVolumeMountPointW@4 +FileTimeToLocalFileTime@8 +FindClose@4 +FindCloseChangeNotification@4 +FindFirstChangeNotificationA@12 +FindFirstChangeNotificationW@12 +FindFirstFileA@8 +FindFirstFileExA@24 +FindFirstFileExW@24 +FindFirstFileW@8 +FindFirstVolumeW@8 +FindNextChangeNotification@4 +FindNextFileA@8 +FindNextFileW@8 +FindNextVolumeW@12 +FindVolumeClose@4 +FlushFileBuffers@4 +GetDiskFreeSpaceA@20 +GetDiskFreeSpaceExA@16 +GetDiskFreeSpaceExW@16 +GetDiskFreeSpaceW@20 +GetDriveTypeA@4 +GetDriveTypeW@4 +GetFileAttributesA@4 +GetFileAttributesExA@12 +GetFileAttributesExW@12 +GetFileAttributesW@4 +GetFileInformationByHandle@8 +GetFileSize@8 +GetFileSizeEx@8 +GetFileTime@16 +GetFileType@4 +GetFinalPathNameByHandleA@16 +GetFinalPathNameByHandleW@16 +GetFullPathNameA@16 +GetFullPathNameW@16 +GetLogicalDrives@0 +GetLogicalDriveStringsW@8 +GetLongPathNameA@12 +GetLongPathNameW@12 +GetShortPathNameW@12 +GetTempFileNameW@16 +GetVolumeInformationByHandleW@32 +GetVolumeInformationW@32 +GetVolumePathNameW@12 +LocalFileTimeToFileTime@8 +LockFile@20 +LockFileEx@24 +ReadFile@20 +ReadFileEx@20 +ReadFileScatter@20 +RemoveDirectoryA@4 +RemoveDirectoryW@4 +SetEndOfFile@4 +SetFileAttributesA@8 +SetFileAttributesW@8 +SetFileInformationByHandle@16 +SetFilePointer@16 +SetFilePointerEx@20 +SetFileTime@16 +SetFileValidData@12 +UnlockFile@20 +UnlockFileEx@20 +WriteFile@20 +WriteFileEx@20 +WriteFileGather@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-file-l1-2-0.def b/lib/libc/mingw/lib32/api-ms-win-core-file-l1-2-0.def new file mode 100644 index 0000000000..ecea74cf5c --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-file-l1-2-0.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-file-l1-2-0 + +EXPORTS + +CreateFile2@20 +GetTempPathW@8 +GetVolumeNameForVolumeMountPointW@12 +GetVolumePathNamesForVolumeNameW@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-file-l1-2-1.def b/lib/libc/mingw/lib32/api-ms-win-core-file-l1-2-1.def new file mode 100644 index 0000000000..7c989a3ef0 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-file-l1-2-1.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-file-l1-2-1 + +EXPORTS + +GetCompressedFileSizeA@8 +GetCompressedFileSizeW@8 +SetFileIoOverlappedRange@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-file-l1-2-2.def b/lib/libc/mingw/lib32/api-ms-win-core-file-l1-2-2.def new file mode 100644 index 0000000000..f429b43a33 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-file-l1-2-2.def @@ -0,0 +1,14 @@ +LIBRARY api-ms-win-core-file-l1-2-2 + +EXPORTS + +AreFileApisANSI@0 +FindFirstFileNameW@16 +FindFirstStreamW@16 +FindNextFileNameW@12 +FindNextStreamW@8 +GetTempFileNameA@16 +GetTempPathA@8 +GetVolumeInformationA@32 +SetFileApisToANSI@0 +SetFileApisToOEM@0 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-file-l1-2-2_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-file-l1-2-2_windowsapp.def new file mode 100644 index 0000000000..3697e58028 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-file-l1-2-2_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-file-l1-2-2 + +EXPORTS + +AreFileApisANSI@0 +GetTempFileNameA@16 +GetTempPathA@8 +GetVolumeInformationA@32 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-file-l1-2-3.def b/lib/libc/mingw/lib32/api-ms-win-core-file-l1-2-3.def new file mode 100644 index 0000000000..1e7a40ce7b --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-file-l1-2-3.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-file-l1-2-3 + +EXPORTS + +GetDiskSpaceInformationA@8 +GetDiskSpaceInformationW@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-file-l2-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-file-l2-1-0.def new file mode 100644 index 0000000000..e5f271788a --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-file-l2-1-0.def @@ -0,0 +1,15 @@ +LIBRARY api-ms-win-core-file-l2-1-0 + +EXPORTS + +CopyFile2@12 +CopyFileExW@24 +CreateDirectoryExW@12 +CreateHardLinkW@12 +CreateSymbolicLinkW@12 +GetFileInformationByHandleEx@16 +MoveFileExW@12 +MoveFileWithProgressW@20 +ReadDirectoryChangesW@32 +ReOpenFile@16 +ReplaceFileW@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-file-l2-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-file-l2-1-1.def new file mode 100644 index 0000000000..d0cf934c34 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-file-l2-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-file-l2-1-1 + +EXPORTS + +OpenFileById@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-file-l2-1-2.def b/lib/libc/mingw/lib32/api-ms-win-core-file-l2-1-2.def new file mode 100644 index 0000000000..6408ffe22f --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-file-l2-1-2.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-file-l2-1-2 + +EXPORTS + +CopyFileW@12 +CreateHardLinkA@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-file-l2-1-2_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-file-l2-1-2_windowsapp.def new file mode 100644 index 0000000000..c8d59202a0 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-file-l2-1-2_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-file-l2-1-2 + +EXPORTS + +CopyFileW@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-file-l2-1-3.def b/lib/libc/mingw/lib32/api-ms-win-core-file-l2-1-3.def new file mode 100644 index 0000000000..9b6030d752 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-file-l2-1-3.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-file-l2-1-3 + +EXPORTS + +ReadDirectoryChangesExW@36 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-firmware-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-firmware-l1-1-0.def new file mode 100644 index 0000000000..9e2174a458 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-firmware-l1-1-0.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-core-firmware-l1-1-0 + +EXPORTS + +GetFirmwareEnvironmentVariableA@16 +GetFirmwareEnvironmentVariableExA@20 +GetFirmwareEnvironmentVariableExW@20 +GetFirmwareEnvironmentVariableW@16 +SetFirmwareEnvironmentVariableA@16 +SetFirmwareEnvironmentVariableExA@20 +SetFirmwareEnvironmentVariableExW@20 +SetFirmwareEnvironmentVariableW@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-handle-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-handle-l1-1-0.def new file mode 100644 index 0000000000..7d71381a51 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-handle-l1-1-0.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-handle-l1-1-0 + +EXPORTS + +CloseHandle@4 +CompareObjectHandles@8 +DuplicateHandle@28 +GetHandleInformation@8 +SetHandleInformation@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-heap-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-heap-l1-1-0.def new file mode 100644 index 0000000000..bbb9ff8829 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-heap-l1-1-0.def @@ -0,0 +1,19 @@ +LIBRARY api-ms-win-core-heap-l1-1-0 + +EXPORTS + +GetProcessHeap@0 +GetProcessHeaps@8 +HeapAlloc@12 +HeapCompact@8 +HeapCreate@12 +HeapDestroy@4 +HeapFree@12 +HeapLock@4 +HeapQueryInformation@20 +HeapReAlloc@16 +HeapSetInformation@16 +HeapSize@12 +HeapUnlock@4 +HeapValidate@12 +HeapWalk@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-heap-l2-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-heap-l2-1-0.def new file mode 100644 index 0000000000..18418e8473 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-heap-l2-1-0.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-core-heap-l2-1-0 + +EXPORTS + +GlobalAlloc@8 +GlobalFree@4 +LocalAlloc@8 +LocalFree@4 +LocalLock@4 +LocalReAlloc@12 +LocalUnlock@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-heap-l2-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-heap-l2-1-0_windowsapp.def new file mode 100644 index 0000000000..3607917d36 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-heap-l2-1-0_windowsapp.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-heap-l2-1-0 + +EXPORTS + +GlobalAlloc@8 +GlobalFree@4 +LocalAlloc@8 +LocalFree@4 +LocalReAlloc@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-heap-obsolete-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-heap-obsolete-l1-1-0.def new file mode 100644 index 0000000000..c776a09dcb --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-heap-obsolete-l1-1-0.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-core-heap-obsolete-l1-1-0 + +EXPORTS + +GlobalFlags@4 +GlobalHandle@4 +GlobalLock@4 +GlobalReAlloc@12 +GlobalSize@4 +GlobalUnlock@4 +LocalFlags@4 +LocalSize@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-heap-obsolete-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-heap-obsolete-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..88a8a862d1 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-heap-obsolete-l1-1-0_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-heap-obsolete-l1-1-0 + +EXPORTS + +GlobalLock@4 +GlobalReAlloc@12 +GlobalSize@4 +GlobalUnlock@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-interlocked-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-interlocked-l1-1-0.def new file mode 100644 index 0000000000..9eb401e6ee --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-interlocked-l1-1-0.def @@ -0,0 +1,15 @@ +LIBRARY api-ms-win-core-interlocked-l1-1-0 + +EXPORTS + +InitializeSListHead@4 +InterlockedCompareExchange@12 +InterlockedCompareExchange64@20 +InterlockedDecrement@4 +InterlockedExchange@8 +InterlockedExchangeAdd@8 +InterlockedFlushSList@4 +InterlockedIncrement@4 +InterlockedPopEntrySList@4 +InterlockedPushEntrySList@8 +QueryDepthSList@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-interlocked-l1-2-0.def b/lib/libc/mingw/lib32/api-ms-win-core-interlocked-l1-2-0.def new file mode 100644 index 0000000000..46ecbae71f --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-interlocked-l1-2-0.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-interlocked-l1-2-0 + +EXPORTS + +InterlockedPushListSListEx@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-io-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-io-l1-1-0.def new file mode 100644 index 0000000000..3f78516494 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-io-l1-1-0.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-core-io-l1-1-0 + +EXPORTS + +CancelIoEx@8 +CreateIoCompletionPort@16 +DeviceIoControl@32 +GetOverlappedResult@16 +GetQueuedCompletionStatus@20 +GetQueuedCompletionStatusEx@24 +PostQueuedCompletionStatus@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-io-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-io-l1-1-1.def new file mode 100644 index 0000000000..58798dd67c --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-io-l1-1-1.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-io-l1-1-1 + +EXPORTS + +CancelIo@4 +CancelSynchronousIo@4 +GetOverlappedResultEx@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-io-l1-1-1_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-io-l1-1-1_windowsapp.def new file mode 100644 index 0000000000..c4a4336c41 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-io-l1-1-1_windowsapp.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-io-l1-1-1 + +EXPORTS + +CancelIo@4 +GetOverlappedResultEx@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-job-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-job-l1-1-0.def new file mode 100644 index 0000000000..5117342163 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-job-l1-1-0.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-job-l1-1-0 + +EXPORTS + +IsProcessInJob@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-job-l2-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-job-l2-1-0.def new file mode 100644 index 0000000000..048a466c00 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-job-l2-1-0.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-core-job-l2-1-0 + +EXPORTS + +AssignProcessToJobObject@8 +CreateJobObjectW@8 +OpenJobObjectW@12 +QueryInformationJobObject@20 +SetInformationJobObject@16 +TerminateJobObject@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-job-l2-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-job-l2-1-0_windowsapp.def new file mode 100644 index 0000000000..b6c9991c4d --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-job-l2-1-0_windowsapp.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-job-l2-1-0 + +EXPORTS + +AssignProcessToJobObject@8 +CreateJobObjectW@8 +SetInformationJobObject@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-job-l2-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-job-l2-1-1.def new file mode 100644 index 0000000000..fddcc55fef --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-job-l2-1-1.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-job-l2-1-1 + +EXPORTS + +FreeMemoryJobObject@4 +QueryIoRateControlInformationJobObject@16 +SetIoRateControlInformationJobObject@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-ansi-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-ansi-l1-1-0.def new file mode 100644 index 0000000000..5fb2e836c8 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-ansi-l1-1-0.def @@ -0,0 +1,15 @@ +LIBRARY api-ms-win-core-kernel32-legacy-ansi-l1-1-0 + +EXPORTS + +AddLocalAlternateComputerNameA@8 +CreateFileMappingNumaA@28 +CreateFileTransactedA@40 +CreateJobObjectA@8 +FindFirstVolumeMountPointA@12 +FindNextVolumeMountPointA@12 +GetFileAttributesTransactedA@16 +OpenJobObjectA@12 +SetDllDirectoryA@4 +SetVolumeLabelA@8 +SetVolumeMountPointA@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-ansi-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-ansi-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..e1639243f8 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-ansi-l1-1-0_windowsapp.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-kernel32-legacy-ansi-l1-1-0 + +EXPORTS + +SetDllDirectoryA@4 +SetVolumeLabelA@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-0.def new file mode 100644 index 0000000000..dc683253d6 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-0.def @@ -0,0 +1,41 @@ +LIBRARY api-ms-win-core-kernel32-legacy-l1-1-0 + +EXPORTS + +AddLocalAlternateComputerNameW@8 +BackupRead@28 +BackupWrite@28 +BindIoCompletionCallback@12 +CopyFileA@12 +CreateFileMappingA@24 +CreateFileTransactedW@40 +CreateMailslotA@16 +CreateNamedPipeA@32 +DnsHostnameToComputerNameW@12 +DosDateTimeToFileTime@12 +FileTimeToDosDateTime@12 +FindResourceA@12 +FindResourceExA@16 +GetComputerNameA@8 +GetComputerNameW@8 +GetMaximumProcessorGroupCount@0 +GetNamedPipeClientProcessId@8 +GetNamedPipeServerProcessId@8 +GetShortPathNameA@12 +GetStartupInfoA@4 +GetSystemPowerStatus@4 +GetTapeParameters@16 +GetThreadSelectorEntry@12 +GlobalMemoryStatus@4 +MoveFileA@8 +MoveFileExA@12 +MoveFileW@8 +OpenFile@12 +PulseEvent@4 +RegisterWaitForSingleObject@24 +SetFileCompletionNotificationModes@8 +SetHandleCount@4 +SetMailslotInfo@8 +SetVolumeLabelW@8 +UnregisterWait@4 +WTSGetActiveConsoleSessionId@0 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..eea52ec467 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-0_windowsapp.def @@ -0,0 +1,23 @@ +LIBRARY api-ms-win-core-kernel32-legacy-l1-1-0 + +EXPORTS + +CopyFileA@12 +CreateFileMappingA@24 +CreateNamedPipeA@32 +DosDateTimeToFileTime@12 +FileTimeToDosDateTime@12 +FindResourceA@12 +GetComputerNameA@8 +GetComputerNameW@8 +GetShortPathNameA@12 +GetStartupInfoA@4 +GetSystemPowerStatus@4 +GlobalMemoryStatus@4 +MoveFileA@8 +MoveFileExA@12 +MoveFileW@8 +RegisterWaitForSingleObject@24 +SetFileCompletionNotificationModes@8 +SetVolumeLabelW@8 +UnregisterWait@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-1.def new file mode 100644 index 0000000000..da7566d729 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-1.def @@ -0,0 +1,18 @@ +LIBRARY api-ms-win-core-kernel32-legacy-l1-1-1 + +EXPORTS + +FindFirstVolumeMountPointW@12 +FindNextVolumeMountPointW@12 +FindVolumeMountPointClose@4 +GetFileAttributesTransactedW@16 +GetFirmwareType@4 +GetNumaAvailableMemoryNodeEx@8 +GetNumaNodeProcessorMask@8 +GetNumaProcessorNodeEx@8 +PowerClearRequest@8 +PowerCreateRequest@4 +PowerSetRequest@8 +SetDllDirectoryW@4 +SetVolumeMountPointW@8 +VerifyVersionInfoW@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-1_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-1_windowsapp.def new file mode 100644 index 0000000000..2bb59d5331 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-1_windowsapp.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-kernel32-legacy-l1-1-1 + +EXPORTS + +SetDllDirectoryW@4 +VerifyVersionInfoW@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-2.def b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-2.def new file mode 100644 index 0000000000..7d5230122c --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-2.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-core-kernel32-legacy-l1-1-2 + +EXPORTS + +GetBinaryTypeW@8 +Module32First@8 +Module32Next@8 +OpenFileMappingA@12 +Process32First@8 +Process32Next@8 +SetTermsrvAppInstallMode@4 +VerifyVersionInfoA@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-2_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-2_windowsapp.def new file mode 100644 index 0000000000..5a1ad7335f --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-2_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-kernel32-legacy-l1-1-2 + +EXPORTS + +OpenFileMappingA@12 +Process32First@8 +Process32Next@8 +VerifyVersionInfoA@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-3.def b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-3.def new file mode 100644 index 0000000000..9c7ed4ef63 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-3.def @@ -0,0 +1,18 @@ +LIBRARY api-ms-win-core-kernel32-legacy-l1-1-3 + +EXPORTS + +CopyFileTransactedW@28 +CreateDirectoryTransactedW@16 +CreateHardLinkTransactedW@16 +CreateMailslotW@16 +CreateSymbolicLinkTransactedW@16 +DeleteFileTransactedW@8 +FindFirstFileTransactedW@28 +GetBinaryTypeA@8 +GetCompressedFileSizeTransactedW@12 +GetFullPathNameTransactedW@20 +GetLongPathNameTransactedW@16 +MoveFileTransactedW@24 +RemoveDirectoryTransactedW@8 +SetFileAttributesTransactedW@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-4.def b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-4.def new file mode 100644 index 0000000000..15dcf80753 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-4.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-kernel32-legacy-l1-1-4 + +EXPORTS + +GetMailslotInfo@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-5.def b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-5.def new file mode 100644 index 0000000000..6b2b66c19b --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-5.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-kernel32-legacy-l1-1-5 + +EXPORTS + +GetDllDirectoryW@8 +SetThreadExecutionState@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-5_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-5_windowsapp.def new file mode 100644 index 0000000000..238793d3de --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-5_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-kernel32-legacy-l1-1-5 + +EXPORTS + +SetThreadExecutionState@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-6.def b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-6.def new file mode 100644 index 0000000000..5be51afb6f --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-kernel32-legacy-l1-1-6.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-kernel32-legacy-l1-1-6 + +EXPORTS + +GetDevicePowerState@8 +GetMaximumProcessorCount@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-largeinteger-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-largeinteger-l1-1-0.def new file mode 100644 index 0000000000..09eb50117b --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-largeinteger-l1-1-0.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-largeinteger-l1-1-0 + +EXPORTS + +MulDiv@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-libraryloader-l1-2-0.def b/lib/libc/mingw/lib32/api-ms-win-core-libraryloader-l1-2-0.def new file mode 100644 index 0000000000..b440b6b877 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-libraryloader-l1-2-0.def @@ -0,0 +1,33 @@ +LIBRARY api-ms-win-core-libraryloader-l1-2-0 + +EXPORTS + +AddDllDirectory@4 +DisableThreadLibraryCalls@4 +EnumResourceLanguagesExA@28 +EnumResourceLanguagesExW@28 +EnumResourceNamesExA@24 +EnumResourceNamesExW@24 +EnumResourceTypesExA@20 +EnumResourceTypesExW@20 +FindResourceExW@16 +FindStringOrdinal@24 +FreeLibrary@4 +FreeLibraryAndExitThread@8 +FreeResource@4 +GetModuleFileNameA@12 +GetModuleFileNameW@12 +GetModuleHandleA@4 +GetModuleHandleExA@12 +GetModuleHandleExW@12 +GetModuleHandleW@4 +GetProcAddress@8 +LoadLibraryExA@12 +LoadLibraryExW@12 +LoadResource@8 +LoadStringA@16 +LoadStringW@16 +LockResource@4 +RemoveDllDirectory@4 +SetDefaultDllDirectories@4 +SizeofResource@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-libraryloader-l1-2-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-libraryloader-l1-2-0_windowsapp.def new file mode 100644 index 0000000000..2a2d1c6b6c --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-libraryloader-l1-2-0_windowsapp.def @@ -0,0 +1,27 @@ +LIBRARY api-ms-win-core-libraryloader-l1-2-0 + +EXPORTS + +AddDllDirectory@4 +DisableThreadLibraryCalls@4 +FindResourceExW@16 +FindStringOrdinal@24 +FreeLibrary@4 +FreeLibraryAndExitThread@8 +FreeResource@4 +GetModuleFileNameA@12 +GetModuleFileNameW@12 +GetModuleHandleA@4 +GetModuleHandleExA@12 +GetModuleHandleExW@12 +GetModuleHandleW@4 +GetProcAddress@8 +LoadLibraryExA@12 +LoadLibraryExW@12 +LoadResource@8 +LoadStringA@16 +LoadStringW@16 +LockResource@4 +RemoveDllDirectory@4 +SetDefaultDllDirectories@4 +SizeofResource@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-libraryloader-l1-2-1.def b/lib/libc/mingw/lib32/api-ms-win-core-libraryloader-l1-2-1.def new file mode 100644 index 0000000000..336d6be94b --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-libraryloader-l1-2-1.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-libraryloader-l1-2-1 + +EXPORTS + +FindResourceW@12 +LoadLibraryA@4 +LoadLibraryW@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-libraryloader-l1-2-2.def b/lib/libc/mingw/lib32/api-ms-win-core-libraryloader-l1-2-2.def new file mode 100644 index 0000000000..4331d1ec6a --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-libraryloader-l1-2-2.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-libraryloader-l1-2-2 + +EXPORTS + +EnumResourceNamesW@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-libraryloader-l2-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-libraryloader-l2-1-0.def new file mode 100644 index 0000000000..92382c0fb3 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-libraryloader-l2-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-libraryloader-l2-1-0 + +EXPORTS + +LoadPackagedLibrary@8 +QueryOptionalDelayLoadedAPI@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-localization-ansi-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-localization-ansi-l1-1-0.def new file mode 100644 index 0000000000..c95d8b98da --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-localization-ansi-l1-1-0.def @@ -0,0 +1,22 @@ +LIBRARY api-ms-win-core-localization-ansi-l1-1-0 + +EXPORTS + +EnumCalendarInfoA@16 +EnumCalendarInfoExA@16 +EnumDateFormatsA@12 +EnumDateFormatsExA@12 +EnumLanguageGroupLocalesA@16 +EnumSystemCodePagesA@8 +EnumSystemLanguageGroupsA@12 +EnumTimeFormatsA@12 +EnumUILanguagesA@12 +FoldStringA@20 +GetCalendarInfoA@24 +GetCPInfoExA@12 +GetCurrencyFormatA@24 +GetGeoInfoA@20 +GetNumberFormatA@24 +GetStringTypeExA@20 +SetCalendarInfoA@16 +SetLocaleInfoA@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-localization-ansi-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-localization-ansi-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..bbadce429f --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-localization-ansi-l1-1-0_windowsapp.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-core-localization-ansi-l1-1-0 + +EXPORTS + +EnumUILanguagesA@12 +FoldStringA@20 +GetCalendarInfoA@24 +GetStringTypeExA@20 +SetCalendarInfoA@16 +SetLocaleInfoA@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-localization-l1-2-0.def b/lib/libc/mingw/lib32/api-ms-win-core-localization-l1-2-0.def new file mode 100644 index 0000000000..79411b380a --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-localization-l1-2-0.def @@ -0,0 +1,63 @@ +LIBRARY api-ms-win-core-localization-l1-2-0 + +EXPORTS + +ConvertDefaultLocale@4 +EnumSystemGeoID@12 +EnumSystemLocalesA@8 +EnumSystemLocalesW@8 +FindNLSString@28 +FindNLSStringEx@40 +FormatMessageA@28 +FormatMessageW@28 +GetACP@0 +GetCalendarInfoEx@28 +GetCalendarInfoW@24 +GetCPInfo@8 +GetCPInfoExW@12 +GetFileMUIInfo@16 +GetFileMUIPath@28 +GetGeoInfoW@20 +GetLocaleInfoA@16 +GetLocaleInfoEx@16 +GetLocaleInfoW@16 +GetNLSVersion@12 +GetNLSVersionEx@12 +GetOEMCP@0 +GetProcessPreferredUILanguages@16 +GetSystemDefaultLangID@0 +GetSystemDefaultLCID@0 +GetSystemPreferredUILanguages@16 +GetThreadLocale@0 +GetThreadPreferredUILanguages@16 +GetThreadUILanguage@0 +GetUILanguageInfo@20 +GetUserDefaultLangID@0 +GetUserDefaultLCID@0 +GetUserDefaultLocaleName@8 +GetUserGeoID@4 +GetUserPreferredUILanguages@16 +IdnToAscii@20 +IdnToUnicode@20 +IsDBCSLeadByte@4 +IsDBCSLeadByteEx@8 +IsNLSDefinedString@20 +IsValidCodePage@4 +IsValidLanguageGroup@8 +IsValidLocale@8 +IsValidLocaleName@4 +IsValidNLSVersion@12 +LCMapStringA@24 +LCMapStringEx@36 +LCMapStringW@24 +LocaleNameToLCID@8 +ResolveLocaleName@12 +SetCalendarInfoW@16 +SetLocaleInfoW@12 +SetProcessPreferredUILanguages@12 +SetThreadLocale@4 +SetThreadPreferredUILanguages@12 +SetThreadUILanguage@4 +SetUserGeoID@4 +VerLanguageNameA@12 +VerLanguageNameW@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-localization-l1-2-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-localization-l1-2-0_windowsapp.def new file mode 100644 index 0000000000..72496da293 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-localization-l1-2-0_windowsapp.def @@ -0,0 +1,62 @@ +LIBRARY api-ms-win-core-localization-l1-2-0 + +EXPORTS + +ConvertDefaultLocale@4 +EnumSystemGeoID@12 +EnumSystemLocalesA@8 +EnumSystemLocalesW@8 +FindNLSString@28 +FindNLSStringEx@40 +FormatMessageA@28 +FormatMessageW@28 +GetACP@0 +GetCalendarInfoEx@28 +GetCalendarInfoW@24 +GetCPInfo@8 +GetCPInfoExW@12 +GetFileMUIInfo@16 +GetFileMUIPath@28 +GetGeoInfoW@20 +GetLocaleInfoA@16 +GetLocaleInfoEx@16 +GetLocaleInfoW@16 +GetNLSVersion@12 +GetNLSVersionEx@12 +GetOEMCP@0 +GetProcessPreferredUILanguages@16 +GetSystemDefaultLangID@0 +GetSystemDefaultLCID@0 +GetSystemPreferredUILanguages@16 +GetThreadLocale@0 +GetThreadPreferredUILanguages@16 +GetThreadUILanguage@0 +GetUILanguageInfo@20 +GetUserDefaultLangID@0 +GetUserDefaultLCID@0 +GetUserDefaultLocaleName@8 +GetUserGeoID@4 +GetUserPreferredUILanguages@16 +IdnToAscii@20 +IdnToUnicode@20 +IsDBCSLeadByte@4 +IsDBCSLeadByteEx@8 +IsNLSDefinedString@20 +IsValidCodePage@4 +IsValidLanguageGroup@8 +IsValidLocale@8 +IsValidLocaleName@4 +IsValidNLSVersion@12 +LCMapStringA@24 +LCMapStringEx@36 +LCMapStringW@24 +LocaleNameToLCID@8 +ResolveLocaleName@12 +SetCalendarInfoW@16 +SetLocaleInfoW@12 +SetProcessPreferredUILanguages@12 +SetThreadLocale@4 +SetThreadPreferredUILanguages@12 +SetThreadUILanguage@4 +VerLanguageNameA@12 +VerLanguageNameW@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-localization-l1-2-1.def b/lib/libc/mingw/lib32/api-ms-win-core-localization-l1-2-1.def new file mode 100644 index 0000000000..1c8683189a --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-localization-l1-2-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-localization-l1-2-1 + +EXPORTS + +EnumSystemLocalesEx@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-localization-l1-2-2.def b/lib/libc/mingw/lib32/api-ms-win-core-localization-l1-2-2.def new file mode 100644 index 0000000000..1e07375624 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-localization-l1-2-2.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-localization-l1-2-2 + +EXPORTS + +GetSystemDefaultLocaleName@8 +LCIDToLocaleName@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-localization-l1-2-3.def b/lib/libc/mingw/lib32/api-ms-win-core-localization-l1-2-3.def new file mode 100644 index 0000000000..1b157a44b0 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-localization-l1-2-3.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-localization-l1-2-3 + +EXPORTS + +EnumSystemGeoNames@12 +GetGeoInfoEx@16 +GetUserDefaultGeoName@8 +SetUserGeoName@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-localization-l1-2-4.def b/lib/libc/mingw/lib32/api-ms-win-core-localization-l1-2-4.def new file mode 100644 index 0000000000..63adeb11cd --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-localization-l1-2-4.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-localization-l1-2-4 + +EXPORTS + +RestoreThreadPreferredUILanguages@4 +SetThreadPreferredUILanguages2@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-localization-l2-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-localization-l2-1-0.def new file mode 100644 index 0000000000..20265cc7e3 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-localization-l2-1-0.def @@ -0,0 +1,16 @@ +LIBRARY api-ms-win-core-localization-l2-1-0 + +EXPORTS + +EnumCalendarInfoExEx@24 +EnumCalendarInfoExW@16 +EnumCalendarInfoW@16 +EnumDateFormatsExEx@16 +EnumDateFormatsExW@12 +EnumDateFormatsW@12 +EnumSystemCodePagesW@8 +EnumTimeFormatsEx@16 +EnumTimeFormatsW@12 +GetCurrencyFormatEx@24 +GetCurrencyFormatW@24 +GetNumberFormatEx@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-localization-l2-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-localization-l2-1-0_windowsapp.def new file mode 100644 index 0000000000..263e4ec5ac --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-localization-l2-1-0_windowsapp.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-core-localization-l2-1-0 + +EXPORTS + +EnumCalendarInfoExEx@24 +EnumCalendarInfoW@16 +EnumDateFormatsExEx@16 +EnumSystemCodePagesW@8 +EnumTimeFormatsEx@16 +GetCurrencyFormatEx@24 +GetCurrencyFormatW@24 +GetNumberFormatEx@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-localization-obsolete-l1-2-0.def b/lib/libc/mingw/lib32/api-ms-win-core-localization-obsolete-l1-2-0.def new file mode 100644 index 0000000000..c20fb48c87 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-localization-obsolete-l1-2-0.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-core-localization-obsolete-l1-2-0 + +EXPORTS + +CompareStringA@24 +EnumLanguageGroupLocalesW@16 +EnumSystemLanguageGroupsW@12 +EnumUILanguagesW@12 +GetNumberFormatW@24 +GetStringTypeA@20 +GetSystemDefaultUILanguage@0 +GetUserDefaultUILanguage@0 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-localization-obsolete-l1-2-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-localization-obsolete-l1-2-0_windowsapp.def new file mode 100644 index 0000000000..2c25969632 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-localization-obsolete-l1-2-0_windowsapp.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-localization-obsolete-l1-2-0 + +EXPORTS + +CompareStringA@24 +EnumUILanguagesW@12 +GetStringTypeA@20 +GetSystemDefaultUILanguage@0 +GetUserDefaultUILanguage@0 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-0.def new file mode 100644 index 0000000000..0173618faa --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-0.def @@ -0,0 +1,20 @@ +LIBRARY api-ms-win-core-memory-l1-1-0 + +EXPORTS + +CreateFileMappingW@24 +FlushViewOfFile@8 +MapViewOfFile@20 +MapViewOfFileEx@24 +OpenFileMappingW@12 +ReadProcessMemory@20 +UnmapViewOfFile@4 +VirtualAlloc@16 +VirtualAllocEx@20 +VirtualFree@12 +VirtualFreeEx@16 +VirtualProtect@16 +VirtualProtectEx@20 +VirtualQuery@12 +VirtualQueryEx@16 +WriteProcessMemory@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-1.def new file mode 100644 index 0000000000..9497d9151b --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-1.def @@ -0,0 +1,20 @@ +LIBRARY api-ms-win-core-memory-l1-1-1 + +EXPORTS + +CreateFileMappingFromApp@24 +CreateFileMappingNumaW@28 +CreateMemoryResourceNotification@4 +GetLargePageMinimum@0 +GetProcessWorkingSetSizeEx@16 +GetSystemFileCacheSize@12 +GetWriteWatch@24 +MapViewOfFileFromApp@20 +PrefetchVirtualMemory@16 +QueryMemoryResourceNotification@8 +ResetWriteWatch@8 +SetProcessWorkingSetSizeEx@16 +SetSystemFileCacheSize@12 +UnmapViewOfFileEx@8 +VirtualLock@8 +VirtualUnlock@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-1_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-1_windowsapp.def new file mode 100644 index 0000000000..f30008d031 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-1_windowsapp.def @@ -0,0 +1,14 @@ +LIBRARY api-ms-win-core-memory-l1-1-1 + +EXPORTS + +CreateFileMappingFromApp@24 +GetLargePageMinimum@0 +GetProcessWorkingSetSizeEx@16 +GetWriteWatch@24 +MapViewOfFileFromApp@20 +ResetWriteWatch@8 +SetProcessWorkingSetSizeEx@16 +UnmapViewOfFileEx@8 +VirtualLock@8 +VirtualUnlock@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-2.def b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-2.def new file mode 100644 index 0000000000..a50173024c --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-2.def @@ -0,0 +1,15 @@ +LIBRARY api-ms-win-core-memory-l1-1-2 + +EXPORTS + +AllocateUserPhysicalPages@12 +AllocateUserPhysicalPagesNuma@16 +DiscardVirtualMemory@8 +FreeUserPhysicalPages@12 +GetMemoryErrorHandlingCapabilities@4 +MapUserPhysicalPages@12 +OfferVirtualMemory@12 +ReclaimVirtualMemory@8 +RegisterBadMemoryNotification@4 +UnregisterBadMemoryNotification@4 +VirtualAllocExNuma@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-2_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-2_windowsapp.def new file mode 100644 index 0000000000..743bdc7c57 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-2_windowsapp.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-memory-l1-1-2 + +EXPORTS + +DiscardVirtualMemory@8 +OfferVirtualMemory@12 +ReclaimVirtualMemory@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-3.def b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-3.def new file mode 100644 index 0000000000..e0ac7a8970 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-3.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-memory-l1-1-3 + +EXPORTS + +OpenFileMappingFromApp@12 +SetProcessValidCallTargets@20 +VirtualAllocFromApp@16 +VirtualProtectFromApp@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-4.def b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-4.def new file mode 100644 index 0000000000..1e56b7975e --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-4.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-memory-l1-1-4 + +EXPORTS + +QueryVirtualMemoryInformation@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-5.def b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-5.def new file mode 100644 index 0000000000..f776c682ad --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-5.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-memory-l1-1-5 + +EXPORTS + +MapViewOfFileNuma2@36 +UnmapViewOfFile2@12 +VirtualUnlockEx@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-5_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-5_windowsapp.def new file mode 100644 index 0000000000..3258dd5bf2 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-5_windowsapp.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-memory-l1-1-5 + +EXPORTS + +UnmapViewOfFile2@12 +VirtualUnlockEx@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-6.def b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-6.def new file mode 100644 index 0000000000..58502ec13a --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-6.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-memory-l1-1-6 + +EXPORTS + +MapViewOfFile3@40 +MapViewOfFile3FromApp@40 +VirtualAlloc2@28 +VirtualAlloc2FromApp@28 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-6_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-6_windowsapp.def new file mode 100644 index 0000000000..7c49d70d3c --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-6_windowsapp.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-memory-l1-1-6 + +EXPORTS + +MapViewOfFile3FromApp@40 +VirtualAlloc2FromApp@28 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-7.def b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-7.def new file mode 100644 index 0000000000..25d4dbdb28 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-7.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-memory-l1-1-7 + +EXPORTS + +CreateFileMapping2@40 +SetProcessValidCallTargetsForMappedView@32 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-7_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-7_windowsapp.def new file mode 100644 index 0000000000..eaf81b5e74 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-memory-l1-1-7_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-memory-l1-1-7 + +EXPORTS + +SetProcessValidCallTargetsForMappedView@32 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-namedpipe-ansi-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-namedpipe-ansi-l1-1-0.def new file mode 100644 index 0000000000..0c231f99bf --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-namedpipe-ansi-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-namedpipe-ansi-l1-1-0 + +EXPORTS + +GetNamedPipeClientComputerNameA@12 +GetNamedPipeHandleStateA@28 +WaitNamedPipeA@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-namedpipe-ansi-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-namedpipe-ansi-l1-1-1.def new file mode 100644 index 0000000000..cfb9f0a3e0 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-namedpipe-ansi-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-namedpipe-ansi-l1-1-1 + +EXPORTS + +CallNamedPipeA@28 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-namedpipe-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-namedpipe-l1-1-0.def new file mode 100644 index 0000000000..8d0ce8c410 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-namedpipe-l1-1-0.def @@ -0,0 +1,14 @@ +LIBRARY api-ms-win-core-namedpipe-l1-1-0 + +EXPORTS + +ConnectNamedPipe@8 +CreateNamedPipeW@32 +CreatePipe@16 +DisconnectNamedPipe@4 +GetNamedPipeClientComputerNameW@12 +ImpersonateNamedPipeClient@4 +PeekNamedPipe@24 +SetNamedPipeHandleState@16 +TransactNamedPipe@28 +WaitNamedPipeW@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-namedpipe-l1-2-1.def b/lib/libc/mingw/lib32/api-ms-win-core-namedpipe-l1-2-1.def new file mode 100644 index 0000000000..f34e3d46aa --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-namedpipe-l1-2-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-namedpipe-l1-2-1 + +EXPORTS + +GetNamedPipeHandleStateW@28 +GetNamedPipeInfo@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-namedpipe-l1-2-2.def b/lib/libc/mingw/lib32/api-ms-win-core-namedpipe-l1-2-2.def new file mode 100644 index 0000000000..2a5d489a64 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-namedpipe-l1-2-2.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-namedpipe-l1-2-2 + +EXPORTS + +CallNamedPipeW@28 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-namespace-ansi-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-namespace-ansi-l1-1-0.def new file mode 100644 index 0000000000..20962d33f1 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-namespace-ansi-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-namespace-ansi-l1-1-0 + +EXPORTS + +CreateBoundaryDescriptorA@8 +CreatePrivateNamespaceA@12 +OpenPrivateNamespaceA@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-namespace-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-namespace-l1-1-0.def new file mode 100644 index 0000000000..e132a8b0b7 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-namespace-l1-1-0.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-core-namespace-l1-1-0 + +EXPORTS + +AddSIDToBoundaryDescriptor@8 +ClosePrivateNamespace@8 +CreateBoundaryDescriptorW@8 +CreatePrivateNamespaceW@12 +DeleteBoundaryDescriptor@4 +OpenPrivateNamespaceW@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-normalization-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-normalization-l1-1-0.def new file mode 100644 index 0000000000..9b45689268 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-normalization-l1-1-0.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-normalization-l1-1-0 + +EXPORTS + +GetStringScripts@20 +IdnToNameprepUnicode@20 +IsNormalizedString@12 +NormalizeString@20 +VerifyScripts@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-path-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-path-l1-1-0.def new file mode 100644 index 0000000000..de0cf201d0 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-path-l1-1-0.def @@ -0,0 +1,26 @@ +LIBRARY api-ms-win-core-path-l1-1-0 + +EXPORTS + +PathAllocCanonicalize@12 +PathAllocCombine@16 +PathCchAddBackslash@8 +PathCchAddBackslashEx@16 +PathCchAddExtension@12 +PathCchAppend@12 +PathCchAppendEx@16 +PathCchCanonicalize@12 +PathCchCanonicalizeEx@16 +PathCchCombine@16 +PathCchCombineEx@20 +PathCchFindExtension@12 +PathCchIsRoot@4 +PathCchRemoveBackslash@8 +PathCchRemoveBackslashEx@16 +PathCchRemoveExtension@8 +PathCchRemoveFileSpec@8 +PathCchRenameExtension@12 +PathCchSkipRoot@8 +PathCchStripPrefix@8 +PathCchStripToRoot@8 +PathIsUNCEx@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-perfcounters-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-perfcounters-l1-1-0.def new file mode 100644 index 0000000000..5dd5aa6c0a --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-perfcounters-l1-1-0.def @@ -0,0 +1,18 @@ +LIBRARY api-ms-win-core-perfcounters-l1-1-0 + +EXPORTS + +PerfCreateInstance@16 +PerfDecrementULongCounterValue@16 +PerfDecrementULongLongCounterValue@20 +PerfDeleteInstance@8 +PerfIncrementULongCounterValue@16 +PerfIncrementULongLongCounterValue@20 +PerfQueryInstance@16 +PerfSetCounterRefValue@16 +PerfSetCounterSetInfo@12 +PerfSetULongCounterValue@16 +PerfSetULongLongCounterValue@20 +PerfStartProvider@12 +PerfStartProviderEx@12 +PerfStopProvider@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-privateprofile-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-privateprofile-l1-1-0.def new file mode 100644 index 0000000000..a82ec6fd1a --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-privateprofile-l1-1-0.def @@ -0,0 +1,18 @@ +LIBRARY api-ms-win-core-privateprofile-l1-1-0 + +EXPORTS + +GetPrivateProfileIntA@16 +GetPrivateProfileIntW@16 +GetPrivateProfileSectionW@16 +GetPrivateProfileStringA@24 +GetPrivateProfileStringW@24 +GetProfileIntA@12 +GetProfileIntW@12 +GetProfileSectionA@12 +GetProfileSectionW@12 +GetProfileStringA@20 +GetProfileStringW@20 +WritePrivateProfileSectionA@12 +WritePrivateProfileStringA@16 +WritePrivateProfileStringW@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-privateprofile-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-privateprofile-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..8a7633f6b7 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-privateprofile-l1-1-0_windowsapp.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-privateprofile-l1-1-0 + +EXPORTS + +GetPrivateProfileIntA@16 +GetPrivateProfileStringA@24 +GetPrivateProfileStringW@24 +WritePrivateProfileStringA@16 +WritePrivateProfileStringW@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-privateprofile-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-privateprofile-l1-1-1.def new file mode 100644 index 0000000000..d6cc2eb17e --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-privateprofile-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-privateprofile-l1-1-1 + +EXPORTS + +GetPrivateProfileSectionA@16 +WritePrivateProfileSectionW@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-privateprofile-l1-1-1_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-privateprofile-l1-1-1_windowsapp.def new file mode 100644 index 0000000000..21a304223f --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-privateprofile-l1-1-1_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-privateprofile-l1-1-1 + +EXPORTS + +GetPrivateProfileSectionA@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-processenvironment-ansi-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-processenvironment-ansi-l1-1-0.def new file mode 100644 index 0000000000..cedcde7ab7 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-processenvironment-ansi-l1-1-0.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-processenvironment-ansi-l1-1-0 + +EXPORTS + +SetEnvironmentStringsA@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-processenvironment-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-processenvironment-l1-1-0.def new file mode 100644 index 0000000000..e983b380ce --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-processenvironment-l1-1-0.def @@ -0,0 +1,25 @@ +LIBRARY api-ms-win-core-processenvironment-l1-1-0 + +EXPORTS + +ExpandEnvironmentStringsA@12 +ExpandEnvironmentStringsW@12 +FreeEnvironmentStringsA@4 +FreeEnvironmentStringsW@4 +GetCommandLineA@0 +GetCommandLineW@0 +GetCurrentDirectoryA@8 +GetCurrentDirectoryW@8 +GetEnvironmentStrings@0 +GetEnvironmentStringsW@0 +GetEnvironmentVariableA@12 +GetEnvironmentVariableW@12 +GetStdHandle@4 +SearchPathW@24 +SetCurrentDirectoryA@4 +SetCurrentDirectoryW@4 +SetEnvironmentStringsW@4 +SetEnvironmentVariableA@8 +SetEnvironmentVariableW@8 +SetStdHandle@8 +SetStdHandleEx@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-processenvironment-l1-2-0.def b/lib/libc/mingw/lib32/api-ms-win-core-processenvironment-l1-2-0.def new file mode 100644 index 0000000000..18fd96eaf1 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-processenvironment-l1-2-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-processenvironment-l1-2-0 + +EXPORTS + +NeedCurrentDirectoryForExePathA@4 +NeedCurrentDirectoryForExePathW@4 +SearchPathA@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-processenvironment-l1-2-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-processenvironment-l1-2-0_windowsapp.def new file mode 100644 index 0000000000..360ce5b3ce --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-processenvironment-l1-2-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-processenvironment-l1-2-0 + +EXPORTS + +SearchPathA@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-processsnapshot-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-processsnapshot-l1-1-0.def new file mode 100644 index 0000000000..9200efcab9 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-processsnapshot-l1-1-0.def @@ -0,0 +1,14 @@ +LIBRARY api-ms-win-core-processsnapshot-l1-1-0 + +EXPORTS + +PssCaptureSnapshot@16 +PssDuplicateSnapshot@20 +PssFreeSnapshot@8 +PssQuerySnapshot@16 +PssWalkMarkerCreate@8 +PssWalkMarkerFree@4 +PssWalkMarkerGetPosition@8 +PssWalkMarkerSeekToBeginning@4 +PssWalkMarkerSetPosition@8 +PssWalkSnapshot@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-processthreads-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-processthreads-l1-1-0.def new file mode 100644 index 0000000000..e4e49d9a7e --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-processthreads-l1-1-0.def @@ -0,0 +1,53 @@ +LIBRARY api-ms-win-core-processthreads-l1-1-0 + +EXPORTS + +CreateProcessA@40 +CreateProcessAsUserW@44 +CreateProcessW@40 +CreateRemoteThread@28 +CreateRemoteThreadEx@32 +CreateThread@24 +DeleteProcThreadAttributeList@4 +ExitProcess@4 +ExitThread@4 +FlushProcessWriteBuffers@0 +GetCurrentProcess@0 +GetCurrentProcessId@0 +GetCurrentThread@0 +GetCurrentThreadId@0 +GetExitCodeProcess@8 +GetExitCodeThread@8 +GetPriorityClass@4 +GetProcessId@4 +GetProcessIdOfThread@4 +GetProcessTimes@20 +GetProcessVersion@4 +GetStartupInfoW@4 +GetThreadId@4 +GetThreadPriority@4 +GetThreadPriorityBoost@8 +InitializeProcThreadAttributeList@16 +OpenProcessToken@12 +OpenThread@12 +OpenThreadToken@16 +ProcessIdToSessionId@8 +QueryProcessAffinityUpdateMode@8 +QueueUserAPC@12 +ResumeThread@4 +SetPriorityClass@8 +SetProcessAffinityUpdateMode@8 +SetProcessShutdownParameters@8 +SetThreadPriority@8 +SetThreadPriorityBoost@8 +SetThreadStackGuarantee@4 +SetThreadToken@8 +SuspendThread@4 +SwitchToThread@0 +TerminateProcess@8 +TerminateThread@8 +TlsAlloc@0 +TlsFree@4 +TlsGetValue@4 +TlsSetValue@8 +UpdateProcThreadAttribute@28 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-processthreads-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-processthreads-l1-1-1.def new file mode 100644 index 0000000000..ce7ca42a9d --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-processthreads-l1-1-1.def @@ -0,0 +1,18 @@ +LIBRARY api-ms-win-core-processthreads-l1-1-1 + +EXPORTS + +FlushInstructionCache@12 +GetCurrentProcessorNumber@0 +GetCurrentProcessorNumberEx@4 +GetCurrentThreadStackLimits@8 +GetProcessHandleCount@8 +GetProcessMitigationPolicy@16 +GetThreadContext@8 +GetThreadIdealProcessorEx@8 +GetThreadTimes@20 +IsProcessorFeaturePresent@4 +OpenProcess@12 +SetProcessMitigationPolicy@12 +SetThreadContext@8 +SetThreadIdealProcessorEx@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-processthreads-l1-1-2.def b/lib/libc/mingw/lib32/api-ms-win-core-processthreads-l1-1-2.def new file mode 100644 index 0000000000..13c16bdc39 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-processthreads-l1-1-2.def @@ -0,0 +1,13 @@ +LIBRARY api-ms-win-core-processthreads-l1-1-2 + +EXPORTS + +GetProcessPriorityBoost@8 +GetSystemTimes@12 +GetThreadInformation@16 +GetThreadIOPendingFlag@8 +IsProcessCritical@8 +QueryProtectedPolicy@8 +SetProcessPriorityBoost@8 +SetProtectedPolicy@12 +SetThreadInformation@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-processthreads-l1-1-2_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-processthreads-l1-1-2_windowsapp.def new file mode 100644 index 0000000000..8c2c86e8cc --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-processthreads-l1-1-2_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-processthreads-l1-1-2 + +EXPORTS + +GetProcessPriorityBoost@8 +GetSystemTimes@12 +SetProcessPriorityBoost@8 +SetThreadInformation@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-processthreads-l1-1-3.def b/lib/libc/mingw/lib32/api-ms-win-core-processthreads-l1-1-3.def new file mode 100644 index 0000000000..0906021cbe --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-processthreads-l1-1-3.def @@ -0,0 +1,16 @@ +LIBRARY api-ms-win-core-processthreads-l1-1-3 + +EXPORTS + +CreateProcessAsUserA@44 +GetProcessDefaultCpuSets@16 +GetProcessInformation@16 +GetProcessShutdownParameters@8 +GetSystemCpuSetInformation@20 +GetThreadDescription@8 +GetThreadSelectedCpuSets@16 +SetProcessDefaultCpuSets@12 +SetProcessInformation@16 +SetThreadDescription@8 +SetThreadIdealProcessor@8 +SetThreadSelectedCpuSets@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-processthreads-l1-1-3_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-processthreads-l1-1-3_windowsapp.def new file mode 100644 index 0000000000..6733ced72a --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-processthreads-l1-1-3_windowsapp.def @@ -0,0 +1,15 @@ +LIBRARY api-ms-win-core-processthreads-l1-1-3 + +EXPORTS + +CreateProcessAsUserA@44 +GetProcessDefaultCpuSets@16 +GetProcessInformation@16 +GetSystemCpuSetInformation@20 +GetThreadDescription@8 +GetThreadSelectedCpuSets@16 +SetProcessDefaultCpuSets@12 +SetProcessInformation@16 +SetThreadDescription@8 +SetThreadIdealProcessor@8 +SetThreadSelectedCpuSets@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-processthreads-l1-1-4.def b/lib/libc/mingw/lib32/api-ms-win-core-processthreads-l1-1-4.def new file mode 100644 index 0000000000..a73af0e324 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-processthreads-l1-1-4.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-processthreads-l1-1-4 + +EXPORTS + +SetProcessDynamicEHContinuationTargets@12 +SetProcessDynamicEnforcedCetCompatibleRanges@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-processtopology-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-processtopology-l1-1-0.def new file mode 100644 index 0000000000..2d46cf15b0 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-processtopology-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-processtopology-l1-1-0 + +EXPORTS + +GetProcessGroupAffinity@12 +GetThreadGroupAffinity@8 +SetThreadGroupAffinity@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-processtopology-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-processtopology-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..040fbcdde2 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-processtopology-l1-1-0_windowsapp.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-processtopology-l1-1-0 + +EXPORTS + +GetThreadGroupAffinity@8 +SetThreadGroupAffinity@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-processtopology-obsolete-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-processtopology-obsolete-l1-1-0.def new file mode 100644 index 0000000000..c995351e4a --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-processtopology-obsolete-l1-1-0.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-processtopology-obsolete-l1-1-0 + +EXPORTS + +GetActiveProcessorCount@4 +GetProcessAffinityMask@12 +GetProcessIoCounters@8 +SetProcessAffinityMask@8 +SetThreadAffinityMask@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-processtopology-obsolete-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-processtopology-obsolete-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..7b60bf7047 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-processtopology-obsolete-l1-1-0_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-processtopology-obsolete-l1-1-0 + +EXPORTS + +GetProcessAffinityMask@12 +GetProcessIoCounters@8 +SetProcessAffinityMask@8 +SetThreadAffinityMask@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-processtopology-obsolete-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-processtopology-obsolete-l1-1-1.def new file mode 100644 index 0000000000..876c5e451e --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-processtopology-obsolete-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-processtopology-obsolete-l1-1-1 + +EXPORTS + +GetActiveProcessorGroupCount@0 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-profile-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-profile-l1-1-0.def new file mode 100644 index 0000000000..020eef9785 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-profile-l1-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-profile-l1-1-0 + +EXPORTS + +QueryPerformanceCounter@4 +QueryPerformanceFrequency@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-psapi-ansi-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-psapi-ansi-l1-1-0.def new file mode 100644 index 0000000000..a4ae77af74 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-psapi-ansi-l1-1-0.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-core-psapi-ansi-l1-1-0 + +EXPORTS + +K32EnumPageFilesA@8 +K32GetDeviceDriverBaseNameA@12 +K32GetDeviceDriverFileNameA@12 +K32GetMappedFileNameA@16 +K32GetModuleBaseNameA@16 +K32GetModuleFileNameExA@16 +K32GetProcessImageFileNameA@12 +QueryFullProcessImageNameA@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-psapi-ansi-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-psapi-ansi-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..30fc209dc2 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-psapi-ansi-l1-1-0_windowsapp.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-psapi-ansi-l1-1-0 + +EXPORTS + +K32GetModuleBaseNameA@16 +K32GetModuleFileNameExA@16 +QueryFullProcessImageNameA@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-psapi-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-psapi-l1-1-0.def new file mode 100644 index 0000000000..7500446b0e --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-psapi-l1-1-0.def @@ -0,0 +1,25 @@ +LIBRARY api-ms-win-core-psapi-l1-1-0 + +EXPORTS + +K32EmptyWorkingSet@4 +K32EnumDeviceDrivers@12 +K32EnumPageFilesW@8 +K32EnumProcesses@12 +K32EnumProcessModules@16 +K32EnumProcessModulesEx@20 +K32GetDeviceDriverBaseNameW@12 +K32GetDeviceDriverFileNameW@12 +K32GetMappedFileNameW@16 +K32GetModuleBaseNameW@16 +K32GetModuleFileNameExW@16 +K32GetModuleInformation@16 +K32GetPerformanceInfo@8 +K32GetProcessImageFileNameW@12 +K32GetProcessMemoryInfo@12 +K32GetWsChanges@12 +K32GetWsChangesEx@12 +K32InitializeProcessForWsWatch@4 +K32QueryWorkingSet@12 +K32QueryWorkingSetEx@12 +QueryFullProcessImageNameW@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-psapi-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-psapi-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..377ddd588c --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-psapi-l1-1-0_windowsapp.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-core-psapi-l1-1-0 + +EXPORTS + +K32EnumProcesses@12 +K32GetModuleBaseNameW@16 +K32GetModuleFileNameExW@16 +K32GetModuleInformation@16 +K32GetProcessMemoryInfo@12 +K32QueryWorkingSet@12 +K32QueryWorkingSetEx@12 +QueryFullProcessImageNameW@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-psm-appnotify-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-psm-appnotify-l1-1-0.def new file mode 100644 index 0000000000..a5655c65f7 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-psm-appnotify-l1-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-psm-appnotify-l1-1-0 + +EXPORTS + +RegisterAppStateChangeNotification@12 +UnregisterAppStateChangeNotification@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-quirks-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-quirks-l1-1-0.def new file mode 100644 index 0000000000..b41354d227 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-quirks-l1-1-0.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-core-quirks-l1-1-0 + +EXPORTS + +QuirkGetData@8 +QuirkGetData2@8 +QuirkIsEnabled@4 +QuirkIsEnabled2@12 +QuirkIsEnabled3@8 +QuirkIsEnabledForPackage@16 +QuirkIsEnabledForPackage2@24 +QuirkIsEnabledForProcess@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-quirks-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-quirks-l1-1-1.def new file mode 100644 index 0000000000..b31cbf4e2c --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-quirks-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-quirks-l1-1-1 + +EXPORTS + +QuirkIsEnabledForPackage3@20 +QuirkIsEnabledForPackage4@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-realtime-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-realtime-l1-1-0.def new file mode 100644 index 0000000000..dd06582736 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-realtime-l1-1-0.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-realtime-l1-1-0 + +EXPORTS + +QueryIdleProcessorCycleTime@8 +QueryIdleProcessorCycleTimeEx@12 +QueryProcessCycleTime@8 +QueryThreadCycleTime@8 +QueryUnbiasedInterruptTime@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-realtime-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-realtime-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..3765bbd229 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-realtime-l1-1-0_windowsapp.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-realtime-l1-1-0 + +EXPORTS + +QueryThreadCycleTime@8 +QueryUnbiasedInterruptTime@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-realtime-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-realtime-l1-1-1.def new file mode 100644 index 0000000000..2ca64c0ca8 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-realtime-l1-1-1.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-realtime-l1-1-1 + +EXPORTS + +QueryInterruptTime@4 +QueryInterruptTimePrecise@4 +QueryUnbiasedInterruptTimePrecise@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-realtime-l1-1-2.def b/lib/libc/mingw/lib32/api-ms-win-core-realtime-l1-1-2.def new file mode 100644 index 0000000000..39a88fa99a --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-realtime-l1-1-2.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-realtime-l1-1-2 + +EXPORTS + +ConvertAuxiliaryCounterToPerformanceCounter@16 +ConvertPerformanceCounterToAuxiliaryCounter@16 +QueryAuxiliaryCounterFrequency@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-registry-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-registry-l1-1-0.def new file mode 100644 index 0000000000..95a972a7c1 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-registry-l1-1-0.def @@ -0,0 +1,47 @@ +LIBRARY api-ms-win-core-registry-l1-1-0 + +EXPORTS + +RegCloseKey@4 +RegCopyTreeW@12 +RegCreateKeyExA@36 +RegCreateKeyExW@36 +RegDeleteKeyExA@16 +RegDeleteKeyExW@16 +RegDeleteTreeA@8 +RegDeleteTreeW@8 +RegDeleteValueA@8 +RegDeleteValueW@8 +RegDisablePredefinedCacheEx@0 +RegEnumKeyExA@32 +RegEnumKeyExW@32 +RegEnumValueA@32 +RegEnumValueW@32 +RegFlushKey@4 +RegGetKeySecurity@16 +RegGetValueA@28 +RegGetValueW@28 +RegLoadAppKeyA@20 +RegLoadAppKeyW@20 +RegLoadKeyA@12 +RegLoadKeyW@12 +RegLoadMUIStringA@28 +RegLoadMUIStringW@28 +RegNotifyChangeKeyValue@20 +RegOpenCurrentUser@8 +RegOpenKeyExA@20 +RegOpenKeyExW@20 +RegOpenUserClassesRoot@16 +RegQueryInfoKeyA@48 +RegQueryInfoKeyW@48 +RegQueryValueExA@24 +RegQueryValueExW@24 +RegRestoreKeyA@12 +RegRestoreKeyW@12 +RegSaveKeyExA@16 +RegSaveKeyExW@16 +RegSetKeySecurity@12 +RegSetValueExA@24 +RegSetValueExW@24 +RegUnLoadKeyA@8 +RegUnLoadKeyW@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-registry-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-registry-l1-1-1.def new file mode 100644 index 0000000000..00e5fba8ef --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-registry-l1-1-1.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-registry-l1-1-1 + +EXPORTS + +RegDeleteKeyValueA@12 +RegDeleteKeyValueW@12 +RegSetKeyValueA@24 +RegSetKeyValueW@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-registry-l1-1-2.def b/lib/libc/mingw/lib32/api-ms-win-core-registry-l1-1-2.def new file mode 100644 index 0000000000..1f7da12abf --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-registry-l1-1-2.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-registry-l1-1-2 + +EXPORTS + +RegQueryMultipleValuesA@20 +RegQueryMultipleValuesW@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-registry-l2-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-registry-l2-1-0.def new file mode 100644 index 0000000000..55e73c1a22 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-registry-l2-1-0.def @@ -0,0 +1,31 @@ +LIBRARY api-ms-win-core-registry-l2-1-0 + +EXPORTS + +RegConnectRegistryA@12 +RegConnectRegistryW@12 +RegCopyTreeA@12 +RegCreateKeyA@12 +RegCreateKeyTransactedA@44 +RegCreateKeyTransactedW@44 +RegCreateKeyW@12 +RegDeleteKeyA@8 +RegDeleteKeyTransactedA@24 +RegDeleteKeyTransactedW@24 +RegDeleteKeyW@8 +RegDisablePredefinedCache@0 +RegEnumKeyA@16 +RegEnumKeyW@16 +RegOpenKeyA@12 +RegOpenKeyTransactedA@28 +RegOpenKeyTransactedW@28 +RegOpenKeyW@12 +RegOverridePredefKey@8 +RegQueryValueA@16 +RegQueryValueW@16 +RegReplaceKeyA@16 +RegReplaceKeyW@16 +RegSaveKeyA@12 +RegSaveKeyW@12 +RegSetValueA@20 +RegSetValueW@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-rtlsupport-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-rtlsupport-l1-1-0.def new file mode 100644 index 0000000000..5c681cb0c8 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-rtlsupport-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-rtlsupport-l1-1-0 + +EXPORTS + +RtlCaptureContext@4 +RtlCaptureStackBackTrace@16 +RtlUnwind@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-rtlsupport-l1-2-0.def b/lib/libc/mingw/lib32/api-ms-win-core-rtlsupport-l1-2-0.def new file mode 100644 index 0000000000..50532e91c2 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-rtlsupport-l1-2-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-rtlsupport-l1-2-0 + +EXPORTS + +RtlCompareMemory@12 +RtlPcToFileHeader@8 +RtlRaiseException@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-rtlsupport-l1-2-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-rtlsupport-l1-2-0_windowsapp.def new file mode 100644 index 0000000000..50532e91c2 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-rtlsupport-l1-2-0_windowsapp.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-rtlsupport-l1-2-0 + +EXPORTS + +RtlCompareMemory@12 +RtlPcToFileHeader@8 +RtlRaiseException@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-rtlsupport-l1-2-1.def b/lib/libc/mingw/lib32/api-ms-win-core-rtlsupport-l1-2-1.def new file mode 100644 index 0000000000..fd34c543a9 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-rtlsupport-l1-2-1.def @@ -0,0 +1,3 @@ +LIBRARY api-ms-win-core-rtlsupport-l1-2-1 + +EXPORTS diff --git a/lib/libc/mingw/lib32/api-ms-win-core-shutdown-ansi-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-shutdown-ansi-l1-1-0.def new file mode 100644 index 0000000000..728ab9a588 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-shutdown-ansi-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-shutdown-ansi-l1-1-0 + +EXPORTS + +AbortSystemShutdownA@4 +InitiateSystemShutdownA@20 +InitiateSystemShutdownExA@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-shutdown-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-shutdown-l1-1-0.def new file mode 100644 index 0000000000..1ae330f1bd --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-shutdown-l1-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-shutdown-l1-1-0 + +EXPORTS + +AbortSystemShutdownW@4 +InitiateSystemShutdownExW@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-shutdown-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-shutdown-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..2f4db29156 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-shutdown-l1-1-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-shutdown-l1-1-0 + +EXPORTS + +InitiateSystemShutdownExW@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-shutdown-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-shutdown-l1-1-1.def new file mode 100644 index 0000000000..cb8dbabf8f --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-shutdown-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-shutdown-l1-1-1 + +EXPORTS + +InitiateShutdownW@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-sidebyside-ansi-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-sidebyside-ansi-l1-1-0.def new file mode 100644 index 0000000000..1113f0dd65 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-sidebyside-ansi-l1-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-sidebyside-ansi-l1-1-0 + +EXPORTS + +CreateActCtxA@4 +FindActCtxSectionStringA@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-sidebyside-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-sidebyside-l1-1-0.def new file mode 100644 index 0000000000..1bc289520a --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-sidebyside-l1-1-0.def @@ -0,0 +1,15 @@ +LIBRARY api-ms-win-core-sidebyside-l1-1-0 + +EXPORTS + +ActivateActCtx@8 +AddRefActCtx@4 +CreateActCtxW@4 +DeactivateActCtx@8 +FindActCtxSectionGuid@20 +FindActCtxSectionStringW@20 +GetCurrentActCtx@4 +QueryActCtxSettingsW@28 +QueryActCtxW@28 +ReleaseActCtx@4 +ZombifyActCtx@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-slapi-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-slapi-l1-1-0.def new file mode 100644 index 0000000000..0d46898305 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-slapi-l1-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-slapi-l1-1-0 + +EXPORTS + +SLQueryLicenseValueFromApp@20 +SLQueryLicenseValueFromApp2@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-state-helpers-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-state-helpers-l1-1-0.def new file mode 100644 index 0000000000..8450b10ca9 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-state-helpers-l1-1-0.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-state-helpers-l1-1-0 + +EXPORTS + +GetRegistryValueWithFallbackW@40 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-string-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-string-l1-1-0.def new file mode 100644 index 0000000000..876238025d --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-string-l1-1-0.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-core-string-l1-1-0 + +EXPORTS + +CompareStringEx@36 +CompareStringOrdinal@20 +CompareStringW@24 +FoldStringW@20 +GetStringTypeExW@20 +GetStringTypeW@16 +MultiByteToWideChar@24 +WideCharToMultiByte@32 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-string-l2-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-string-l2-1-0.def new file mode 100644 index 0000000000..d7ee7e21cb --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-string-l2-1-0.def @@ -0,0 +1,14 @@ +LIBRARY api-ms-win-core-string-l2-1-0 + +EXPORTS + +CharLowerBuffW@8 +CharLowerW@4 +CharNextW@4 +CharPrevW@8 +CharUpperBuffW@8 +CharUpperW@4 +IsCharAlphaNumericW@4 +IsCharAlphaW@4 +IsCharLowerW@4 +IsCharUpperW@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-string-l2-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-string-l2-1-0_windowsapp.def new file mode 100644 index 0000000000..898a1a66fa --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-string-l2-1-0_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-string-l2-1-0 + +EXPORTS + +CharLowerBuffW@8 +CharLowerW@4 +CharNextW@4 +CharUpperW@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-string-l2-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-string-l2-1-1.def new file mode 100644 index 0000000000..fef7f0d66c --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-string-l2-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-string-l2-1-1 + +EXPORTS + +SHLoadIndirectString@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-string-obsolete-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-string-obsolete-l1-1-0.def new file mode 100644 index 0000000000..957120ac1c --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-string-obsolete-l1-1-0.def @@ -0,0 +1,14 @@ +LIBRARY api-ms-win-core-string-obsolete-l1-1-0 + +EXPORTS + +lstrcatW@8 +lstrcmpA@8 +lstrcmpiA@8 +lstrcmpiW@8 +lstrcmpW@8 +lstrcpynA@12 +lstrcpynW@12 +lstrcpyW@8 +lstrlenA@4 +lstrlenW@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-string-obsolete-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-string-obsolete-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..9b7b05b293 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-string-obsolete-l1-1-0_windowsapp.def @@ -0,0 +1,13 @@ +LIBRARY api-ms-win-core-string-obsolete-l1-1-0 + +EXPORTS + +lstrcatW@8 +lstrcmpA@8 +lstrcmpiA@8 +lstrcmpiW@8 +lstrcmpW@8 +lstrcpynW@12 +lstrcpyW@8 +lstrlenA@4 +lstrlenW@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-string-obsolete-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-string-obsolete-l1-1-1.def new file mode 100644 index 0000000000..d6fe73f1a3 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-string-obsolete-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-string-obsolete-l1-1-1 + +EXPORTS + +lstrcatA@8 +lstrcpyA@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-stringansi-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-stringansi-l1-1-0.def new file mode 100644 index 0000000000..45985119f8 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-stringansi-l1-1-0.def @@ -0,0 +1,16 @@ +LIBRARY api-ms-win-core-stringansi-l1-1-0 + +EXPORTS + +CharLowerA@4 +CharLowerBuffA@8 +CharNextA@4 +CharNextExA@12 +CharPrevA@8 +CharPrevExA@16 +CharUpperA@4 +CharUpperBuffA@8 +IsCharAlphaA@4 +IsCharAlphaNumericA@4 +IsCharLowerA@4 +IsCharUpperA@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-stringansi-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-stringansi-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..6ef9e8a13b --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-stringansi-l1-1-0_windowsapp.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-stringansi-l1-1-0 + +EXPORTS + +CharLowerA@4 +CharNextA@4 +CharNextExA@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-synch-ansi-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-synch-ansi-l1-1-0.def new file mode 100644 index 0000000000..5317db3e66 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-synch-ansi-l1-1-0.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-core-synch-ansi-l1-1-0 + +EXPORTS + +CreateSemaphoreA@16 +CreateSemaphoreExA@24 +CreateWaitableTimerA@12 +CreateWaitableTimerExA@16 +OpenMutexA@12 +OpenSemaphoreA@12 +OpenWaitableTimerA@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-synch-ansi-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-synch-ansi-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..1b82dd82ad --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-synch-ansi-l1-1-0_windowsapp.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-core-synch-ansi-l1-1-0 + +EXPORTS + +CreateSemaphoreA@16 +CreateSemaphoreExA@24 +CreateWaitableTimerA@12 +CreateWaitableTimerExA@16 +OpenMutexA@12 +OpenWaitableTimerA@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-synch-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-synch-l1-1-0.def new file mode 100644 index 0000000000..3dac6406f6 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-synch-l1-1-0.def @@ -0,0 +1,45 @@ +LIBRARY api-ms-win-core-synch-l1-1-0 + +EXPORTS + +AcquireSRWLockExclusive@4 +AcquireSRWLockShared@4 +CancelWaitableTimer@4 +CreateEventA@16 +CreateEventExA@16 +CreateEventExW@16 +CreateEventW@16 +CreateMutexA@12 +CreateMutexExA@16 +CreateMutexExW@16 +CreateMutexW@12 +CreateSemaphoreExW@24 +CreateWaitableTimerExW@16 +DeleteCriticalSection@4 +EnterCriticalSection@4 +InitializeCriticalSection@4 +InitializeCriticalSectionAndSpinCount@8 +InitializeCriticalSectionEx@12 +InitializeSRWLock@4 +LeaveCriticalSection@4 +OpenEventA@12 +OpenEventW@12 +OpenMutexW@12 +OpenSemaphoreW@12 +OpenWaitableTimerW@12 +ReleaseMutex@4 +ReleaseSemaphore@12 +ReleaseSRWLockExclusive@4 +ReleaseSRWLockShared@4 +ResetEvent@4 +SetCriticalSectionSpinCount@8 +SetEvent@4 +SetWaitableTimer@24 +SetWaitableTimerEx@28 +SleepEx@8 +TryAcquireSRWLockExclusive@4 +TryAcquireSRWLockShared@4 +TryEnterCriticalSection@4 +WaitForMultipleObjectsEx@20 +WaitForSingleObject@8 +WaitForSingleObjectEx@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-synch-l1-2-0.def b/lib/libc/mingw/lib32/api-ms-win-core-synch-l1-2-0.def new file mode 100644 index 0000000000..d83325c4e9 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-synch-l1-2-0.def @@ -0,0 +1,21 @@ +LIBRARY api-ms-win-core-synch-l1-2-0 + +EXPORTS + +DeleteSynchronizationBarrier@4 +EnterSynchronizationBarrier@8 +InitializeConditionVariable@4 +InitializeSynchronizationBarrier@12 +InitOnceBeginInitialize@16 +InitOnceComplete@12 +InitOnceExecuteOnce@16 +InitOnceInitialize@4 +SignalObjectAndWait@16 +Sleep@4 +SleepConditionVariableCS@12 +SleepConditionVariableSRW@16 +WaitOnAddress@16 +WakeAllConditionVariable@4 +WakeByAddressAll@4 +WakeByAddressSingle@4 +WakeConditionVariable@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-synch-l1-2-1.def b/lib/libc/mingw/lib32/api-ms-win-core-synch-l1-2-1.def new file mode 100644 index 0000000000..ad6ce299ce --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-synch-l1-2-1.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-synch-l1-2-1 + +EXPORTS + +CreateSemaphoreW@16 +CreateWaitableTimerW@12 +WaitForMultipleObjects@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-1-0.def new file mode 100644 index 0000000000..b88f4adbd2 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-1-0.def @@ -0,0 +1,26 @@ +LIBRARY api-ms-win-core-sysinfo-l1-1-0 + +EXPORTS + +GetComputerNameExA@12 +GetComputerNameExW@12 +GetLocalTime@4 +GetLogicalProcessorInformation@8 +GetLogicalProcessorInformationEx@12 +GetSystemDirectoryA@8 +GetSystemDirectoryW@8 +GetSystemInfo@4 +GetSystemTime@4 +GetSystemTimeAdjustment@12 +GetSystemTimeAsFileTime@4 +GetSystemWindowsDirectoryA@8 +GetSystemWindowsDirectoryW@8 +GetTickCount@0 +GetTickCount64@0 +GetVersion@0 +GetVersionExA@4 +GetVersionExW@4 +GetWindowsDirectoryA@8 +GetWindowsDirectoryW@8 +GlobalMemoryStatusEx@4 +SetLocalTime@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-0.def b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-0.def new file mode 100644 index 0000000000..3ffb5bd816 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-0.def @@ -0,0 +1,13 @@ +LIBRARY api-ms-win-core-sysinfo-l1-2-0 + +EXPORTS + +EnumSystemFirmwareTables@12 +GetNativeSystemInfo@4 +GetOsSafeBootMode@4 +GetProductInfo@20 +GetSystemFirmwareTable@16 +GetSystemTimePreciseAsFileTime@4 +SetComputerNameExW@8 +SetSystemTime@4 +VerSetConditionMask@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-0_windowsapp.def new file mode 100644 index 0000000000..c643e8add4 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-0_windowsapp.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-core-sysinfo-l1-2-0 + +EXPORTS + +EnumSystemFirmwareTables@12 +GetNativeSystemInfo@4 +GetProductInfo@20 +GetSystemFirmwareTable@16 +GetSystemTimePreciseAsFileTime@4 +SetSystemTime@4 +VerSetConditionMask@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-1.def b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-1.def new file mode 100644 index 0000000000..e562fba94f --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-1.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-sysinfo-l1-2-1 + +EXPORTS + +DnsHostnameToComputerNameExW@12 +GetPhysicallyInstalledSystemMemory@4 +InstallELAMCertificateInfo@4 +SetComputerNameEx2W@12 +SetSystemTimeAdjustment@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-1_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-1_windowsapp.def new file mode 100644 index 0000000000..bd0a32dac6 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-1_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-sysinfo-l1-2-1 + +EXPORTS + +GetPhysicallyInstalledSystemMemory@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-2.def b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-2.def new file mode 100644 index 0000000000..b582686ae6 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-2.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-sysinfo-l1-2-2 + +EXPORTS + +GetProcessorSystemCycleTime@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-3.def b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-3.def new file mode 100644 index 0000000000..dae94b6178 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-3.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-sysinfo-l1-2-3 + +EXPORTS + +GetIntegratedDisplaySize@4 +GetOsManufacturingMode@4 +SetComputerNameA@4 +SetComputerNameExA@8 +SetComputerNameW@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-3_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-3_windowsapp.def new file mode 100644 index 0000000000..e4d591fdde --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-3_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-sysinfo-l1-2-3 + +EXPORTS + +GetIntegratedDisplaySize@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-4.def b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-4.def new file mode 100644 index 0000000000..a0592911ac --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-4.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-sysinfo-l1-2-4 + +EXPORTS + +GetSystemTimeAdjustmentPrecise@12 +SetSystemTimeAdjustmentPrecise@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-5.def b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-5.def new file mode 100644 index 0000000000..a52085fd67 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-5.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-sysinfo-l1-2-5 + +EXPORTS + +GetSystemLeapSecondInformation@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-6.def b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-6.def new file mode 100644 index 0000000000..c557c61320 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-sysinfo-l1-2-6.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-sysinfo-l1-2-6 + +EXPORTS + +IsUserCetAvailableInEnvironment@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-systemtopology-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-systemtopology-l1-1-0.def new file mode 100644 index 0000000000..0ac36c84f3 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-systemtopology-l1-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-systemtopology-l1-1-0 + +EXPORTS + +GetNumaHighestNodeNumber@4 +GetNumaNodeProcessorMaskEx@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-systemtopology-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-systemtopology-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..e7b05a0575 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-systemtopology-l1-1-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-systemtopology-l1-1-0 + +EXPORTS + +GetNumaHighestNodeNumber@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-systemtopology-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-systemtopology-l1-1-1.def new file mode 100644 index 0000000000..1dd7495a1f --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-systemtopology-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-systemtopology-l1-1-1 + +EXPORTS + +GetNumaProximityNodeEx@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-threadpool-l1-2-0.def b/lib/libc/mingw/lib32/api-ms-win-core-threadpool-l1-2-0.def new file mode 100644 index 0000000000..eefee0a521 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-threadpool-l1-2-0.def @@ -0,0 +1,41 @@ +LIBRARY api-ms-win-core-threadpool-l1-2-0 + +EXPORTS + +CallbackMayRunLong@4 +CancelThreadpoolIo@4 +CloseThreadpool@4 +CloseThreadpoolCleanupGroup@4 +CloseThreadpoolCleanupGroupMembers@12 +CloseThreadpoolIo@4 +CloseThreadpoolTimer@4 +CloseThreadpoolWait@4 +CloseThreadpoolWork@4 +CreateThreadpool@4 +CreateThreadpoolCleanupGroup@0 +CreateThreadpoolIo@16 +CreateThreadpoolTimer@12 +CreateThreadpoolWait@12 +CreateThreadpoolWork@12 +DisassociateCurrentThreadFromCallback@4 +FreeLibraryWhenCallbackReturns@8 +IsThreadpoolTimerSet@4 +LeaveCriticalSectionWhenCallbackReturns@8 +QueryThreadpoolStackInformation@8 +ReleaseMutexWhenCallbackReturns@8 +ReleaseSemaphoreWhenCallbackReturns@12 +SetEventWhenCallbackReturns@8 +SetThreadpoolStackInformation@8 +SetThreadpoolThreadMaximum@8 +SetThreadpoolThreadMinimum@8 +SetThreadpoolTimer@16 +SetThreadpoolTimerEx@16 +SetThreadpoolWait@12 +SetThreadpoolWaitEx@16 +StartThreadpoolIo@4 +SubmitThreadpoolWork@4 +TrySubmitThreadpoolCallback@12 +WaitForThreadpoolIoCallbacks@8 +WaitForThreadpoolTimerCallbacks@8 +WaitForThreadpoolWaitCallbacks@8 +WaitForThreadpoolWorkCallbacks@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-threadpool-legacy-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-threadpool-legacy-l1-1-0.def new file mode 100644 index 0000000000..790b49a27e --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-threadpool-legacy-l1-1-0.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-core-threadpool-legacy-l1-1-0 + +EXPORTS + +ChangeTimerQueueTimer@16 +CreateTimerQueue@0 +CreateTimerQueueTimer@28 +DeleteTimerQueueEx@8 +DeleteTimerQueueTimer@12 +QueueUserWorkItem@12 +UnregisterWaitEx@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-timezone-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-timezone-l1-1-0.def new file mode 100644 index 0000000000..dd6232bc04 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-timezone-l1-1-0.def @@ -0,0 +1,17 @@ +LIBRARY api-ms-win-core-timezone-l1-1-0 + +EXPORTS + +EnumDynamicTimeZoneInformation@8 +FileTimeToSystemTime@8 +GetDynamicTimeZoneInformation@4 +GetDynamicTimeZoneInformationEffectiveYears@12 +GetTimeZoneInformation@4 +GetTimeZoneInformationForYear@12 +SetDynamicTimeZoneInformation@4 +SetTimeZoneInformation@4 +SystemTimeToFileTime@8 +SystemTimeToTzSpecificLocalTime@12 +SystemTimeToTzSpecificLocalTimeEx@12 +TzSpecificLocalTimeToSystemTime@12 +TzSpecificLocalTimeToSystemTimeEx@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-timezone-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-timezone-l1-1-1.def new file mode 100644 index 0000000000..852fc7ea21 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-timezone-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-timezone-l1-1-1 + +EXPORTS + +LocalFileTimeToLocalSystemTime@12 +LocalSystemTimeToLocalFileTime@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-toolhelp-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-toolhelp-l1-1-0.def new file mode 100644 index 0000000000..d8b4e914e0 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-toolhelp-l1-1-0.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-core-toolhelp-l1-1-0 + +EXPORTS + +CreateToolhelp32Snapshot@8 +Module32FirstW@8 +Module32NextW@8 +Process32FirstW@8 +Process32NextW@8 +Thread32First@8 +Thread32Next@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-toolhelp-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-toolhelp-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..f517d9c881 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-toolhelp-l1-1-0_windowsapp.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-toolhelp-l1-1-0 + +EXPORTS + +CreateToolhelp32Snapshot@8 +Process32FirstW@8 +Process32NextW@8 +Thread32First@8 +Thread32Next@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-toolhelp-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-toolhelp-l1-1-1.def new file mode 100644 index 0000000000..b099e3746c --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-toolhelp-l1-1-1.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-toolhelp-l1-1-1 + +EXPORTS + +Heap32First@12 +Heap32ListFirst@8 +Heap32ListNext@8 +Heap32Next@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-url-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-url-l1-1-0.def new file mode 100644 index 0000000000..db7a5fab5c --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-url-l1-1-0.def @@ -0,0 +1,42 @@ +LIBRARY api-ms-win-core-url-l1-1-0 + +EXPORTS + +GetAcceptLanguagesA@8 +GetAcceptLanguagesW@8 +HashData@16 +IsInternetESCEnabled@0 +ParseURLA@8 +ParseURLW@8 +PathCreateFromUrlA@16 +PathCreateFromUrlAlloc@12 +PathCreateFromUrlW@16 +PathIsURLA@4 +PathIsURLW@4 +UrlApplySchemeA@16 +UrlApplySchemeW@16 +UrlCanonicalizeA@16 +UrlCanonicalizeW@16 +UrlCombineA@20 +UrlCombineW@20 +UrlCompareA@12 +UrlCompareW@12 +UrlCreateFromPathA@16 +UrlCreateFromPathW@16 +UrlEscapeA@16 +UrlEscapeW@16 +UrlFixupW@12 +UrlGetLocationA@4 +UrlGetLocationW@4 +UrlGetPartA@20 +UrlGetPartW@20 +UrlHashA@12 +UrlHashW@12 +UrlIsA@8 +UrlIsNoHistoryA@4 +UrlIsNoHistoryW@4 +UrlIsOpaqueA@4 +UrlIsOpaqueW@4 +UrlIsW@8 +UrlUnescapeA@16 +UrlUnescapeW@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-url-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-url-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..499f85aa51 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-url-l1-1-0_windowsapp.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-url-l1-1-0 + +EXPORTS + +GetAcceptLanguagesA@8 +GetAcceptLanguagesW@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-util-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-util-l1-1-0.def new file mode 100644 index 0000000000..3273cb5382 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-util-l1-1-0.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-core-util-l1-1-0 + +EXPORTS + +Beep@8 +DecodePointer@4 +DecodeSystemPointer@4 +EncodePointer@4 +EncodeSystemPointer@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-util-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-util-l1-1-1.def new file mode 100644 index 0000000000..1be3bbb93b --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-util-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-util-l1-1-1 + +EXPORTS + +DecodeRemotePointer@12 +EncodeRemotePointer@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-version-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-version-l1-1-0.def new file mode 100644 index 0000000000..f587fa2784 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-version-l1-1-0.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-version-l1-1-0 + +EXPORTS + +GetFileVersionInfoExW@20 +GetFileVersionInfoSizeExW@12 +VerFindFileW@32 +VerQueryValueW@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-version-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-version-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..25da2beac2 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-version-l1-1-0_windowsapp.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-version-l1-1-0 + +EXPORTS + +GetFileVersionInfoExW@20 +GetFileVersionInfoSizeExW@12 +VerQueryValueW@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-version-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-version-l1-1-1.def new file mode 100644 index 0000000000..b27ef28201 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-version-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-version-l1-1-1 + +EXPORTS + +GetFileVersionInfoSizeW@8 +GetFileVersionInfoW@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-version-l1-1-1_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-version-l1-1-1_windowsapp.def new file mode 100644 index 0000000000..ecb7dee976 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-version-l1-1-1_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-version-l1-1-1 + +EXPORTS + +GetFileVersionInfoW@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-versionansi-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-versionansi-l1-1-0.def new file mode 100644 index 0000000000..4fef09a10e --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-versionansi-l1-1-0.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-versionansi-l1-1-0 + +EXPORTS + +GetFileVersionInfoExA@20 +GetFileVersionInfoSizeExA@12 +VerFindFileA@32 +VerQueryValueA@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-versionansi-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-versionansi-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..03c7ec7b3b --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-versionansi-l1-1-0_windowsapp.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-versionansi-l1-1-0 + +EXPORTS + +GetFileVersionInfoExA@20 +GetFileVersionInfoSizeExA@12 +VerQueryValueA@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-versionansi-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-versionansi-l1-1-1.def new file mode 100644 index 0000000000..f44a4efd0f --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-versionansi-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-versionansi-l1-1-1 + +EXPORTS + +GetFileVersionInfoA@16 +GetFileVersionInfoSizeA@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-versionansi-l1-1-1_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-versionansi-l1-1-1_windowsapp.def new file mode 100644 index 0000000000..cc51a4f69e --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-versionansi-l1-1-1_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-versionansi-l1-1-1 + +EXPORTS + +GetFileVersionInfoA@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-windowsceip-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-windowsceip-l1-1-0.def new file mode 100644 index 0000000000..305e9c0919 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-windowsceip-l1-1-0.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-windowsceip-l1-1-0 + +EXPORTS + +CeipIsOptedIn@0 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-windowserrorreporting-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-windowserrorreporting-l1-1-0.def new file mode 100644 index 0000000000..ea9ad8b534 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-windowserrorreporting-l1-1-0.def @@ -0,0 +1,16 @@ +LIBRARY api-ms-win-core-windowserrorreporting-l1-1-0 + +EXPORTS + +GetApplicationRecoveryCallback@20 +GetApplicationRestartSettings@16 +WerGetFlags@8 +WerpNotifyLoadStringResource@16 +WerpNotifyUseStringResource@4 +WerRegisterFile@12 +WerRegisterMemoryBlock@8 +WerRegisterRuntimeExceptionModule@8 +WerSetFlags@4 +WerUnregisterFile@4 +WerUnregisterMemoryBlock@4 +WerUnregisterRuntimeExceptionModule@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-windowserrorreporting-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-windowserrorreporting-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..539c540755 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-windowserrorreporting-l1-1-0_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-windowserrorreporting-l1-1-0 + +EXPORTS + +WerRegisterFile@12 +WerRegisterMemoryBlock@8 +WerUnregisterFile@4 +WerUnregisterMemoryBlock@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-windowserrorreporting-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-windowserrorreporting-l1-1-1.def new file mode 100644 index 0000000000..f5360a5e22 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-windowserrorreporting-l1-1-1.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-core-windowserrorreporting-l1-1-1 + +EXPORTS + +WerRegisterAdditionalProcess@8 +WerRegisterCustomMetadata@8 +WerRegisterExcludedMemoryBlock@8 +WerUnregisterAdditionalProcess@4 +WerUnregisterCustomMetadata@4 +WerUnregisterExcludedMemoryBlock@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-windowserrorreporting-l1-1-2.def b/lib/libc/mingw/lib32/api-ms-win-core-windowserrorreporting-l1-1-2.def new file mode 100644 index 0000000000..d2fb7c096d --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-windowserrorreporting-l1-1-2.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-windowserrorreporting-l1-1-2 + +EXPORTS + +WerRegisterAppLocalDump@4 +WerUnregisterAppLocalDump@0 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-windowserrorreporting-l1-1-3.def b/lib/libc/mingw/lib32/api-ms-win-core-windowserrorreporting-l1-1-3.def new file mode 100644 index 0000000000..32fcc923e7 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-windowserrorreporting-l1-1-3.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-windowserrorreporting-l1-1-3 + +EXPORTS + +RegisterApplicationRestart@8 +UnregisterApplicationRestart@0 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-winrt-error-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-winrt-error-l1-1-0.def new file mode 100644 index 0000000000..a5a341d225 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-winrt-error-l1-1-0.def @@ -0,0 +1,15 @@ +LIBRARY api-ms-win-core-winrt-error-l1-1-0 + +EXPORTS + +GetRestrictedErrorInfo@4 +RoCaptureErrorContext@4 +RoFailFastWithErrorContext@4 +RoGetErrorReportingFlags@4 +RoOriginateError@8 +RoOriginateErrorW@12 +RoResolveRestrictedErrorInfoReference@8 +RoSetErrorReportingFlags@4 +RoTransformError@12 +RoTransformErrorW@16 +SetRestrictedErrorInfo@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-winrt-error-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-winrt-error-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..2a52414c2a --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-winrt-error-l1-1-0_windowsapp.def @@ -0,0 +1,14 @@ +LIBRARY api-ms-win-core-winrt-error-l1-1-0 + +EXPORTS + +GetRestrictedErrorInfo@4 +RoCaptureErrorContext@4 +RoFailFastWithErrorContext@4 +RoGetErrorReportingFlags@4 +RoOriginateError@8 +RoOriginateErrorW@12 +RoSetErrorReportingFlags@4 +RoTransformError@12 +RoTransformErrorW@16 +SetRestrictedErrorInfo@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-winrt-error-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-winrt-error-l1-1-1.def new file mode 100644 index 0000000000..a28ad3bf9a --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-winrt-error-l1-1-1.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-core-winrt-error-l1-1-1 + +EXPORTS + +IsErrorPropagationEnabled@0 +RoClearError@0 +RoGetMatchingRestrictedErrorInfo@8 +RoInspectCapturedStackBackTrace@24 +RoInspectThreadErrorInfo@20 +RoOriginateLanguageException@12 +RoReportFailedDelegate@8 +RoReportUnhandledError@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-winrt-error-l1-1-1_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-winrt-error-l1-1-1_windowsapp.def new file mode 100644 index 0000000000..e7dd08c7c6 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-winrt-error-l1-1-1_windowsapp.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-core-winrt-error-l1-1-1 + +EXPORTS + +IsErrorPropagationEnabled@0 +RoClearError@0 +RoGetMatchingRestrictedErrorInfo@8 +RoOriginateLanguageException@12 +RoReportFailedDelegate@8 +RoReportUnhandledError@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-winrt-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-winrt-l1-1-0.def new file mode 100644 index 0000000000..5cafea3384 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-winrt-l1-1-0.def @@ -0,0 +1,13 @@ +LIBRARY api-ms-win-core-winrt-l1-1-0 + +EXPORTS + +RoActivateInstance@8 +RoGetActivationFactory@12 +RoGetApartmentIdentifier@4 +RoInitialize@4 +RoRegisterActivationFactories@16 +RoRegisterForApartmentShutdown@12 +RoRevokeActivationFactories@4 +RoUninitialize@0 +RoUnregisterForApartmentShutdown@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-winrt-registration-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-winrt-registration-l1-1-0.def new file mode 100644 index 0000000000..7e9cbf3921 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-winrt-registration-l1-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-winrt-registration-l1-1-0 + +EXPORTS + +RoGetActivatableClassRegistration@8 +RoGetServerActivatableClasses@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-winrt-robuffer-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-winrt-robuffer-l1-1-0.def new file mode 100644 index 0000000000..c0a4a12043 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-winrt-robuffer-l1-1-0.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-winrt-robuffer-l1-1-0 + +EXPORTS + +RoGetBufferMarshaler@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-winrt-roparameterizediid-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-winrt-roparameterizediid-l1-1-0.def new file mode 100644 index 0000000000..bf1217cd75 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-winrt-roparameterizediid-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-winrt-roparameterizediid-l1-1-0 + +EXPORTS + +RoFreeParameterizedTypeExtra@4 +RoGetParameterizedTypeInstanceIID@20 +RoParameterizedTypeExtraGetTypeSignature@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-winrt-string-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-winrt-string-l1-1-0.def new file mode 100644 index 0000000000..f12ed49474 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-winrt-string-l1-1-0.def @@ -0,0 +1,27 @@ +LIBRARY api-ms-win-core-winrt-string-l1-1-0 + +EXPORTS + +HSTRING_UserFree@8 +HSTRING_UserMarshal@12 +HSTRING_UserSize@12 +HSTRING_UserUnmarshal@12 +WindowsCompareStringOrdinal@12 +WindowsConcatString@12 +WindowsCreateString@12 +WindowsCreateStringReference@16 +WindowsDeleteString@4 +WindowsDeleteStringBuffer@4 +WindowsDuplicateString@8 +WindowsGetStringLen@4 +WindowsGetStringRawBuffer@8 +WindowsInspectString@24 +WindowsIsStringEmpty@4 +WindowsPreallocateStringBuffer@12 +WindowsPromoteStringBuffer@8 +WindowsReplaceString@16 +WindowsStringHasEmbeddedNull@8 +WindowsSubstring@12 +WindowsSubstringWithSpecifiedLength@16 +WindowsTrimStringEnd@12 +WindowsTrimStringStart@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-winrt-string-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-winrt-string-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..ed2748f446 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-winrt-string-l1-1-0_windowsapp.def @@ -0,0 +1,26 @@ +LIBRARY api-ms-win-core-winrt-string-l1-1-0 + +EXPORTS + +HSTRING_UserFree@8 +HSTRING_UserMarshal@12 +HSTRING_UserSize@12 +HSTRING_UserUnmarshal@12 +WindowsCompareStringOrdinal@12 +WindowsConcatString@12 +WindowsCreateString@12 +WindowsCreateStringReference@16 +WindowsDeleteString@4 +WindowsDeleteStringBuffer@4 +WindowsDuplicateString@8 +WindowsGetStringLen@4 +WindowsGetStringRawBuffer@8 +WindowsIsStringEmpty@4 +WindowsPreallocateStringBuffer@12 +WindowsPromoteStringBuffer@8 +WindowsReplaceString@16 +WindowsStringHasEmbeddedNull@8 +WindowsSubstring@12 +WindowsSubstringWithSpecifiedLength@16 +WindowsTrimStringEnd@12 +WindowsTrimStringStart@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-winrt-string-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-winrt-string-l1-1-1.def new file mode 100644 index 0000000000..221dbc1fd5 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-winrt-string-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-winrt-string-l1-1-1 + +EXPORTS + +WindowsInspectString2@28 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-wow64-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-wow64-l1-1-0.def new file mode 100644 index 0000000000..f5093b8f8b --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-wow64-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-wow64-l1-1-0 + +EXPORTS + +IsWow64Process@8 +Wow64DisableWow64FsRedirection@4 +Wow64RevertWow64FsRedirection@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-wow64-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-wow64-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..ffa5fd3d84 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-wow64-l1-1-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-wow64-l1-1-0 + +EXPORTS + +IsWow64Process@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-wow64-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-wow64-l1-1-1.def new file mode 100644 index 0000000000..1ded20bc72 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-wow64-l1-1-1.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-core-wow64-l1-1-1 + +EXPORTS + +GetSystemWow64Directory2A@12 +GetSystemWow64Directory2W@12 +GetSystemWow64DirectoryA@8 +GetSystemWow64DirectoryW@8 +IsWow64Process2@12 +Wow64SetThreadDefaultGuestMachine@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-wow64-l1-1-1_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-wow64-l1-1-1_windowsapp.def new file mode 100644 index 0000000000..e15181734b --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-wow64-l1-1-1_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-wow64-l1-1-1 + +EXPORTS + +IsWow64Process2@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-wow64-l1-1-2.def b/lib/libc/mingw/lib32/api-ms-win-core-wow64-l1-1-2.def new file mode 100644 index 0000000000..bf720d058a --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-wow64-l1-1-2.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-wow64-l1-1-2 + +EXPORTS + +IsWow64GuestMachineSupported@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-wow64-l1-1-3.def b/lib/libc/mingw/lib32/api-ms-win-core-wow64-l1-1-3.def new file mode 100644 index 0000000000..8f3937ec4a --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-wow64-l1-1-3.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-core-wow64-l1-1-3 + +EXPORTS + +Wow64GetThreadContext@8 +Wow64SetThreadContext@8 +Wow64SuspendThread@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-xstate-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-xstate-l1-1-0.def new file mode 100644 index 0000000000..3155a9ac90 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-xstate-l1-1-0.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-core-xstate-l1-1-0 + +EXPORTS + +RtlCopyExtendedContext@12 +RtlGetEnabledExtendedFeatures@8 +RtlGetExtendedContextLength@8 +RtlGetExtendedFeaturesMask@4 +RtlInitializeExtendedContext@12 +RtlLocateExtendedFeature@12 +RtlLocateLegacyContext@8 +RtlSetExtendedFeaturesMask@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-xstate-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-xstate-l1-1-1.def new file mode 100644 index 0000000000..e6d6f05ba6 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-xstate-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-xstate-l1-1-1 + +EXPORTS + +RtlCopyContext@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-xstate-l1-1-2.def b/lib/libc/mingw/lib32/api-ms-win-core-xstate-l1-1-2.def new file mode 100644 index 0000000000..c8f1bfd5e8 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-xstate-l1-1-2.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-xstate-l1-1-2 + +EXPORTS + +RtlLocateExtendedFeature2@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-xstate-l1-1-3.def b/lib/libc/mingw/lib32/api-ms-win-core-xstate-l1-1-3.def new file mode 100644 index 0000000000..c40f671292 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-xstate-l1-1-3.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-core-xstate-l1-1-3 + +EXPORTS + +RtlGetExtendedContextLength2@16 +RtlInitializeExtendedContext2@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-xstate-l2-1-0.def b/lib/libc/mingw/lib32/api-ms-win-core-xstate-l2-1-0.def new file mode 100644 index 0000000000..9e092fe233 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-xstate-l2-1-0.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-core-xstate-l2-1-0 + +EXPORTS + +CopyContext@12 +GetEnabledXStateFeatures@0 +GetXStateFeaturesMask@8 +InitializeContext@16 +LocateXStateFeature@12 +SetXStateFeaturesMask@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-xstate-l2-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-core-xstate-l2-1-0_windowsapp.def new file mode 100644 index 0000000000..e961c9e9e3 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-xstate-l2-1-0_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-core-xstate-l2-1-0 + +EXPORTS + +GetEnabledXStateFeatures@0 +GetXStateFeaturesMask@8 +InitializeContext@16 +LocateXStateFeature@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-core-xstate-l2-1-1.def b/lib/libc/mingw/lib32/api-ms-win-core-xstate-l2-1-1.def new file mode 100644 index 0000000000..da303a52e0 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-core-xstate-l2-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-core-xstate-l2-1-1 + +EXPORTS + +InitializeContext2@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-devices-config-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-devices-config-l1-1-1.def new file mode 100644 index 0000000000..577e27e6f8 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-devices-config-l1-1-1.def @@ -0,0 +1,43 @@ +LIBRARY api-ms-win-devices-config-l1-1-1 + +EXPORTS + +CM_Delete_Class_Key@8 +CM_Delete_Device_Interface_KeyW@8 +CM_Delete_DevNode_Key@12 +CM_Disable_DevNode@8 +CM_Enable_DevNode@8 +CM_Get_Child@12 +CM_Get_Class_Property_Keys@16 +CM_Get_Class_PropertyW@24 +CM_Get_Class_Registry_PropertyW@28 +CM_Get_Depth@12 +CM_Get_Device_ID_List_SizeW@12 +CM_Get_Device_ID_ListW@16 +CM_Get_Device_ID_Size@12 +CM_Get_Device_IDW@16 +CM_Get_Device_Interface_List_SizeW@16 +CM_Get_Device_Interface_ListW@20 +CM_Get_Device_Interface_Property_KeysW@16 +CM_Get_Device_Interface_PropertyW@24 +CM_Get_DevNode_Property_Keys@16 +CM_Get_DevNode_PropertyW@24 +CM_Get_DevNode_Registry_PropertyW@24 +CM_Get_DevNode_Status@16 +CM_Get_Parent@12 +CM_Get_Sibling@12 +CM_Locate_DevNodeW@12 +CM_MapCrToWin32Err@8 +CM_Open_Class_KeyW@24 +CM_Open_Device_Interface_KeyW@20 +CM_Open_DevNode_Key@24 +CM_Query_And_Remove_SubTreeW@20 +CM_Register_Notification@16 +CM_Set_Class_PropertyW@24 +CM_Set_Class_Registry_PropertyW@24 +CM_Set_Device_Interface_PropertyW@24 +CM_Set_DevNode_PropertyW@24 +CM_Set_DevNode_Registry_PropertyW@20 +CM_Setup_DevNode@8 +CM_Uninstall_DevNode@8 +CM_Unregister_Notification@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-devices-config-l1-1-1_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-devices-config-l1-1-1_windowsapp.def new file mode 100644 index 0000000000..27ce5557de --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-devices-config-l1-1-1_windowsapp.def @@ -0,0 +1,17 @@ +LIBRARY api-ms-win-devices-config-l1-1-1 + +EXPORTS + +CM_Get_Device_ID_List_SizeW@12 +CM_Get_Device_ID_ListW@16 +CM_Get_Device_IDW@16 +CM_Get_Device_Interface_List_SizeW@16 +CM_Get_Device_Interface_ListW@20 +CM_Get_Device_Interface_PropertyW@24 +CM_Get_DevNode_PropertyW@24 +CM_Get_DevNode_Status@16 +CM_Get_Parent@12 +CM_Locate_DevNodeW@12 +CM_MapCrToWin32Err@8 +CM_Register_Notification@16 +CM_Unregister_Notification@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-devices-config-l1-1-2.def b/lib/libc/mingw/lib32/api-ms-win-devices-config-l1-1-2.def new file mode 100644 index 0000000000..2865f49b40 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-devices-config-l1-1-2.def @@ -0,0 +1,18 @@ +LIBRARY api-ms-win-devices-config-l1-1-2 + +EXPORTS + +CM_Delete_Device_Interface_KeyA@8 +CM_Get_Class_Registry_PropertyA@28 +CM_Get_Device_ID_List_SizeA@12 +CM_Get_Device_ID_ListA@16 +CM_Get_Device_IDA@16 +CM_Get_Device_Interface_List_SizeA@16 +CM_Get_Device_Interface_ListA@20 +CM_Get_DevNode_Registry_PropertyA@24 +CM_Locate_DevNodeA@12 +CM_Open_Class_KeyA@24 +CM_Open_Device_Interface_KeyA@20 +CM_Query_And_Remove_SubTreeA@20 +CM_Set_Class_Registry_PropertyA@24 +CM_Set_DevNode_Registry_PropertyA@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-devices-config-l1-1-2_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-devices-config-l1-1-2_windowsapp.def new file mode 100644 index 0000000000..e6b1c86294 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-devices-config-l1-1-2_windowsapp.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-devices-config-l1-1-2 + +EXPORTS + +CM_Get_Device_Interface_List_SizeA@16 +CM_Get_Device_Interface_ListA@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-devices-query-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-devices-query-l1-1-0.def new file mode 100644 index 0000000000..e5fb3e5b22 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-devices-query-l1-1-0.def @@ -0,0 +1,14 @@ +LIBRARY api-ms-win-devices-query-l1-1-0 + +EXPORTS + +DevCloseObjectQuery@4 +DevCreateObjectQuery@36 +DevCreateObjectQueryFromId@40 +DevCreateObjectQueryFromIds@40 +DevFindProperty@20 +DevFreeObjectProperties@8 +DevFreeObjects@8 +DevGetObjectProperties@28 +DevGetObjects@32 +DevSetObjectProperties@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-devices-query-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-devices-query-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..96f92c79c9 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-devices-query-l1-1-0_windowsapp.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-devices-query-l1-1-0 + +EXPORTS + +DevCloseObjectQuery@4 +DevCreateObjectQuery@36 diff --git a/lib/libc/mingw/lib32/api-ms-win-devices-query-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-devices-query-l1-1-1.def new file mode 100644 index 0000000000..b8c745d60c --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-devices-query-l1-1-1.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-devices-query-l1-1-1 + +EXPORTS + +DevCreateObjectQueryEx@44 +DevCreateObjectQueryFromIdEx@48 +DevCreateObjectQueryFromIdsEx@48 +DevGetObjectPropertiesEx@36 +DevGetObjectsEx@40 diff --git a/lib/libc/mingw/lib32/api-ms-win-devices-swdevice-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-devices-swdevice-l1-1-0.def new file mode 100644 index 0000000000..cf618b6788 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-devices-swdevice-l1-1-0.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-devices-swdevice-l1-1-0 + +EXPORTS + +SwDeviceClose@4 +SwDeviceCreate@32 +SwDeviceInterfacePropertySet@16 +SwDeviceInterfaceRegister@28 +SwDeviceInterfaceSetState@12 +SwDevicePropertySet@12 +SwMemFree@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-devices-swdevice-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-devices-swdevice-l1-1-1.def new file mode 100644 index 0000000000..68a2a69433 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-devices-swdevice-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-devices-swdevice-l1-1-1 + +EXPORTS + +SwDeviceGetLifetime@8 +SwDeviceSetLifetime@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-downlevel-advapi32-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-downlevel-advapi32-l1-1-0.def new file mode 100644 index 0000000000..1937c1bb53 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-downlevel-advapi32-l1-1-0.def @@ -0,0 +1,164 @@ +LIBRARY api-ms-win-downlevel-advapi32-l1-1-0 + +EXPORTS + +AccessCheck@32 +AccessCheckAndAuditAlarmW@44 +AccessCheckByType@44 +AccessCheckByTypeAndAuditAlarmW@64 +AccessCheckByTypeResultList@44 +AccessCheckByTypeResultListAndAuditAlarmByHandleW@68 +AccessCheckByTypeResultListAndAuditAlarmW@64 +AddAccessAllowedAce@16 +AddAccessAllowedAceEx@20 +AddAccessAllowedObjectAce@28 +AddAccessDeniedAce@16 +AddAccessDeniedAceEx@20 +AddAccessDeniedObjectAce@28 +AddAce@20 +AddAuditAccessAce@24 +AddAuditAccessAceEx@28 +AddAuditAccessObjectAce@36 +AddMandatoryAce@20 +AdjustTokenGroups@24 +AdjustTokenPrivileges@24 +AllocateAndInitializeSid@44 +AllocateLocallyUniqueId@4 +AreAllAccessesGranted@8 +AreAnyAccessesGranted@8 +CheckTokenMembership@12 +ConvertToAutoInheritPrivateObjectSecurity@24 +CopySid@12 +CreatePrivateObjectSecurity@24 +CreatePrivateObjectSecurityEx@32 +CreatePrivateObjectSecurityWithMultipleInheritance@36 +CreateProcessAsUserW@44 +CreateRestrictedToken@36 +CreateWellKnownSid@16 +DeleteAce@8 +DestroyPrivateObjectSecurity@4 +DuplicateToken@12 +DuplicateTokenEx@24 +EqualDomainSid@12 +EqualPrefixSid@8 +EqualSid@8 +EventActivityIdControl@8 +EventEnabled@12 +EventProviderEnabled@20 +EventRegister@16 +EventUnregister@8 +EventWrite@20 +EventWriteEx@40 +EventWriteString@24 +EventWriteTransfer@28 +FindFirstFreeAce@8 +FreeSid@4 +GetAce@12 +GetAclInformation@16 +GetFileSecurityW@20 +GetKernelObjectSecurity@20 +GetLengthSid@4 +GetPrivateObjectSecurity@20 +GetSecurityDescriptorControl@12 +GetSecurityDescriptorDacl@16 +GetSecurityDescriptorGroup@12 +GetSecurityDescriptorLength@4 +GetSecurityDescriptorOwner@12 +GetSecurityDescriptorRMControl@8 +GetSecurityDescriptorSacl@16 +GetSidIdentifierAuthority@4 +GetSidLengthRequired@4 +GetSidSubAuthority@8 +GetSidSubAuthorityCount@4 +GetTokenInformation@20 +GetTraceEnableFlags@8 +GetTraceEnableLevel@8 +GetTraceLoggerHandle@4 +GetWindowsAccountDomainSid@12 +ImpersonateAnonymousToken@4 +ImpersonateLoggedOnUser@4 +ImpersonateNamedPipeClient@4 +ImpersonateSelf@4 +InitializeAcl@12 +InitializeSecurityDescriptor@8 +InitializeSid@12 +IsTokenRestricted@4 +IsValidAcl@4 +IsValidSecurityDescriptor@4 +IsValidSid@4 +IsWellKnownSid@8 +MakeAbsoluteSD@44 +MakeSelfRelativeSD@12 +MapGenericMask@8 +ObjectCloseAuditAlarmW@12 +ObjectDeleteAuditAlarmW@12 +ObjectOpenAuditAlarmW@48 +ObjectPrivilegeAuditAlarmW@24 +OpenProcessToken@12 +OpenThreadToken@16 +PrivilegeCheck@12 +PrivilegedServiceAuditAlarmW@20 +QuerySecurityAccessMask@8 +RegCloseKey@4 +RegCopyTreeW@12 +RegCreateKeyExA@36 +RegCreateKeyExW@36 +RegDeleteKeyExA@16 +RegDeleteKeyExW@16 +RegDeleteTreeA@8 +RegDeleteTreeW@8 +RegDeleteValueA@8 +RegDeleteValueW@8 +RegDisablePredefinedCacheEx@0 +RegEnumKeyExA@32 +RegEnumKeyExW@32 +RegEnumValueA@32 +RegEnumValueW@32 +RegFlushKey@4 +RegGetKeySecurity@16 +RegGetValueA@28 +RegGetValueW@28 +RegLoadAppKeyA@20 +RegLoadAppKeyW@20 +RegLoadKeyA@12 +RegLoadKeyW@12 +RegLoadMUIStringA@28 +RegLoadMUIStringW@28 +RegNotifyChangeKeyValue@20 +RegOpenCurrentUser@8 +RegOpenKeyExA@20 +RegOpenKeyExW@20 +RegOpenUserClassesRoot@16 +RegQueryInfoKeyA@48 +RegQueryInfoKeyW@48 +RegQueryValueExA@24 +RegQueryValueExW@24 +RegRestoreKeyA@12 +RegRestoreKeyW@12 +RegSaveKeyExA@16 +RegSaveKeyExW@16 +RegSetKeySecurity@12 +RegSetValueExA@24 +RegSetValueExW@24 +RegUnLoadKeyA@8 +RegUnLoadKeyW@8 +RegisterTraceGuidsW@32 +RevertToSelf@0 +SetAclInformation@16 +SetFileSecurityW@12 +SetKernelObjectSecurity@12 +SetPrivateObjectSecurity@20 +SetPrivateObjectSecurityEx@24 +SetSecurityAccessMask@8 +SetSecurityDescriptorControl@12 +SetSecurityDescriptorDacl@16 +SetSecurityDescriptorGroup@12 +SetSecurityDescriptorOwner@12 +SetSecurityDescriptorRMControl@8 +SetSecurityDescriptorSacl@16 +SetThreadToken@8 +SetTokenInformation@16 +TraceEvent@12 +TraceMessage +TraceMessageVa@24 +UnregisterTraceGuids@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-downlevel-advapi32-l2-1-0.def b/lib/libc/mingw/lib32/api-ms-win-downlevel-advapi32-l2-1-0.def new file mode 100644 index 0000000000..6c142ce38c --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-downlevel-advapi32-l2-1-0.def @@ -0,0 +1,92 @@ +LIBRARY api-ms-win-downlevel-advapi32-l2-1-0 + +EXPORTS + +ChangeServiceConfig2A@12 +ChangeServiceConfig2W@12 +ChangeServiceConfigA@44 +ChangeServiceConfigW@44 +CloseServiceHandle@4 +CloseTrace@8 +ControlService@12 +ControlServiceExA@16 +ControlServiceExW@16 +ControlTraceA@20 +ControlTraceW@20 +ConvertSecurityDescriptorToStringSecurityDescriptorW@20 +ConvertSidToStringSidW@8 +ConvertStringSecurityDescriptorToSecurityDescriptorW@16 +ConvertStringSidToSidW@8 +CreateServiceA@52 +CreateServiceW@52 +CredDeleteA@12 +CredDeleteW@12 +CredEnumerateA@16 +CredEnumerateW@16 +CredFindBestCredentialA@16 +CredFindBestCredentialW@16 +CredFree@4 +CredGetSessionTypes@8 +CredGetTargetInfoA@12 +CredGetTargetInfoW@12 +CredIsMarshaledCredentialW@4 +CredIsProtectedA@8 +CredIsProtectedW@8 +CredMarshalCredentialA@12 +CredMarshalCredentialW@12 +CredProtectA@24 +CredProtectW@24 +CredReadA@16 +CredReadDomainCredentialsA@16 +CredReadDomainCredentialsW@16 +CredReadW@16 +CredUnmarshalCredentialA@12 +CredUnmarshalCredentialW@12 +CredUnprotectA@20 +CredUnprotectW@20 +CredWriteA@8 +CredWriteDomainCredentialsA@12 +CredWriteDomainCredentialsW@12 +CredWriteW@8 +DeleteService@4 +EnableTraceEx2@44 +EnumDependentServicesW@24 +EnumServicesStatusExW@40 +EnumerateTraceGuidsEx@24 +EventAccessControl@20 +EventAccessQuery@12 +EventAccessRemove@4 +NotifyServiceStatusChangeA@12 +NotifyServiceStatusChangeW@12 +OpenSCManagerA@12 +OpenSCManagerW@12 +OpenServiceA@12 +OpenServiceW@12 +OpenTraceW@4 +ProcessTrace@16 +QueryAllTracesA@12 +QueryAllTracesW@12 +QueryServiceConfig2A@20 +QueryServiceConfig2W@20 +QueryServiceConfigA@16 +QueryServiceConfigW@16 +QueryServiceObjectSecurity@20 +QueryServiceStatus@8 +QueryServiceStatusEx@20 +RegisterServiceCtrlHandlerA@8 +RegisterServiceCtrlHandlerExA@12 +RegisterServiceCtrlHandlerExW@12 +RegisterServiceCtrlHandlerW@8 +RegisterTraceGuidsA@32 +RemoveTraceCallback@4 +SetServiceObjectSecurity@12 +SetServiceStatus@8 +SetTraceCallback@8 +StartServiceA@12 +StartServiceCtrlDispatcherA@4 +StartServiceCtrlDispatcherW@4 +StartServiceW@12 +StartTraceA@12 +StartTraceW@12 +StopTraceW@16 +TraceSetInformation@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-downlevel-normaliz-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-downlevel-normaliz-l1-1-0.def new file mode 100644 index 0000000000..044357a907 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-downlevel-normaliz-l1-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-downlevel-normaliz-l1-1-0 + +EXPORTS + +IdnToAscii@20 +IdnToUnicode@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-downlevel-ole32-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-downlevel-ole32-l1-1-0.def new file mode 100644 index 0000000000..73715a4ce9 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-downlevel-ole32-l1-1-0.def @@ -0,0 +1,84 @@ +LIBRARY api-ms-win-downlevel-ole32-l1-1-0 + +EXPORTS + +CLSIDFromProgID@8 +CLSIDFromString@8 +CoAddRefServerProcess@0 +CoCancelCall@8 +CoCopyProxy@8 +CoCreateFreeThreadedMarshaler@8 +CoCreateGuid@4 +CoCreateInstance@20 +CoCreateInstanceEx@24 +CoDisableCallCancellation@4 +CoDisconnectContext@4 +CoDisconnectObject@8 +CoEnableCallCancellation@4 +CoFreeUnusedLibraries@0 +CoFreeUnusedLibrariesEx@8 +CoGetApartmentType@8 +CoGetCallContext@8 +CoGetCallerTID@4 +CoGetCancelObject@12 +CoGetClassObject@20 +CoGetContextToken@4 +CoGetCurrentLogicalThreadId@4 +CoGetCurrentProcess@0 +CoGetDefaultContext@12 +CoGetInterfaceAndReleaseStream@12 +CoGetMalloc@8 +CoGetMarshalSizeMax@24 +CoGetObjectContext@8 +CoGetPSClsid@8 +CoGetStandardMarshal@24 +CoGetStdMarshalEx@12 +CoGetTreatAsClass@8 +CoImpersonateClient@0 +CoInitializeEx@8 +CoInitializeSecurity@36 +CoInvalidateRemoteMachineBindings@4 +CoIsHandlerConnected@4 +CoLockObjectExternal@12 +CoMarshalHresult@8 +CoMarshalInterThreadInterfaceInStream@12 +CoMarshalInterface@24 +CoQueryAuthenticationServices@8 +CoQueryClientBlanket@28 +CoQueryProxyBlanket@32 +CoRegisterClassObject@20 +CoRegisterInitializeSpy@8 +CoRegisterMessageFilter@8 +CoRegisterPSClsid@8 +CoRegisterSurrogate@4 +CoReleaseMarshalData@4 +CoReleaseServerProcess@0 +CoResumeClassObjects@0 +CoRevertToSelf@0 +CoRevokeClassObject@4 +CoRevokeInitializeSpy@8 +CoSetCancelObject@4 +CoSetProxyBlanket@32 +CoSuspendClassObjects@0 +CoSwitchCallContext@8 +CoTaskMemAlloc@4 +CoTaskMemFree@4 +CoTaskMemRealloc@8 +CoTestCancel@0 +CoUninitialize@0 +CoUnmarshalHresult@8 +CoUnmarshalInterface@12 +CoWaitForMultipleHandles@20 +CreateErrorInfo@4 +CreateStreamOnHGlobal@12 +FreePropVariantArray@8 +GetErrorInfo@8 +GetHGlobalFromStream@8 +IIDFromString@8 +ProgIDFromCLSID@8 +PropVariantClear@4 +PropVariantCopy@8 +SetErrorInfo@8 +StringFromCLSID@8 +StringFromGUID2@12 +StringFromIID@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-downlevel-shell32-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-downlevel-shell32-l1-1-0.def new file mode 100644 index 0000000000..4fa14a3383 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-downlevel-shell32-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-downlevel-shell32-l1-1-0 + +EXPORTS + +CommandLineToArgvW@8 +GetCurrentProcessExplicitAppUserModelID@4 +SetCurrentProcessExplicitAppUserModelID@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-downlevel-shlwapi-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-downlevel-shlwapi-l1-1-0.def new file mode 100644 index 0000000000..12cbb0ad7c --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-downlevel-shlwapi-l1-1-0.def @@ -0,0 +1,175 @@ +LIBRARY api-ms-win-downlevel-shlwapi-l1-1-0 + +EXPORTS + +GetAcceptLanguagesW@8 +HashData@16 +IsCharSpaceA@4 +IsCharSpaceW@4 +IsInternetESCEnabled@0 +ParseURLW@8 +PathAddBackslashA@4 +PathAddBackslashW@4 +PathAddExtensionA@8 +PathAddExtensionW@8 +PathAppendA@8 +PathAppendW@8 +PathCanonicalizeA@8 +PathCanonicalizeW@8 +PathCombineA@12 +PathCombineW@12 +PathCommonPrefixA@12 +PathCommonPrefixW@12 +PathCreateFromUrlAlloc@12 +PathCreateFromUrlW@16 +PathFileExistsA@4 +PathFileExistsW@4 +PathFindExtensionA@4 +PathFindExtensionW@4 +PathFindFileNameA@4 +PathFindFileNameW@4 +PathFindNextComponentA@4 +PathFindNextComponentW@4 +PathGetArgsA@4 +PathGetArgsW@4 +PathGetCharTypeA@4 +PathGetCharTypeW@4 +PathGetDriveNumberA@4 +PathGetDriveNumberW@4 +PathIsFileSpecA@4 +PathIsFileSpecW@4 +PathIsLFNFileSpecA@4 +PathIsLFNFileSpecW@4 +PathIsPrefixA@8 +PathIsPrefixW@8 +PathIsRelativeA@4 +PathIsRelativeW@4 +PathIsRootA@4 +PathIsRootW@4 +PathIsSameRootA@8 +PathIsSameRootW@8 +PathIsUNCA@4 +PathIsUNCServerA@4 +PathIsUNCServerShareA@4 +PathIsUNCServerShareW@4 +PathIsUNCServerW@4 +PathIsUNCW@4 +PathIsURLW@4 +PathMatchSpecA@8 +PathMatchSpecExA@12 +PathMatchSpecExW@12 +PathMatchSpecW@8 +PathParseIconLocationA@4 +PathParseIconLocationW@4 +PathQuoteSpacesA@4 +PathQuoteSpacesW@4 +PathRelativePathToA@20 +PathRelativePathToW@20 +PathRemoveBackslashA@4 +PathRemoveBackslashW@4 +PathRemoveBlanksA@4 +PathRemoveBlanksW@4 +PathRemoveExtensionA@4 +PathRemoveExtensionW@4 +PathRemoveFileSpecA@4 +PathRemoveFileSpecW@4 +PathRenameExtensionA@8 +PathRenameExtensionW@8 +PathSearchAndQualifyA@12 +PathSearchAndQualifyW@12 +PathSkipRootA@4 +PathSkipRootW@4 +PathStripPathA@4 +PathStripPathW@4 +PathStripToRootA@4 +PathStripToRootW@4 +PathUnExpandEnvStringsA@12 +PathUnExpandEnvStringsW@12 +PathUnquoteSpacesA@4 +PathUnquoteSpacesW@4 +QISearch@16 +SHLoadIndirectString@16 +SHRegCloseUSKey@4 +SHRegDeleteUSValueA@12 +SHRegDeleteUSValueW@12 +SHRegEnumUSKeyA@20 +SHRegEnumUSKeyW@20 +SHRegGetBoolUSValueA@16 +SHRegGetBoolUSValueW@16 +SHRegGetUSValueA@32 +SHRegGetUSValueW@32 +SHRegOpenUSKeyA@20 +SHRegOpenUSKeyW@20 +SHRegQueryUSValueA@32 +SHRegQueryUSValueW@32 +SHRegSetUSValueA@24 +SHRegSetUSValueW@24 +StrCSpnA@8 +StrCSpnIA@8 +StrCSpnIW@8 +StrCSpnW@8 +StrCatBuffA@12 +StrCatBuffW@12 +StrCatChainW@16 +StrChrA@8 +StrChrIA@8 +StrChrIW@8 +StrChrNIW@12 +StrChrNW@12 +StrChrW@8 +StrCmpCA@8 +StrCmpCW@8 +StrCmpICA@8 +StrCmpICW@8 +StrCmpIW@8 +StrCmpLogicalW@8 +StrCmpNA@12 +StrCmpNCA@12 +StrCmpNCW@12 +StrCmpNIA@12 +StrCmpNICA@12 +StrCmpNICW@12 +StrCmpNIW@12 +StrCmpNW@12 +StrCmpW@8 +StrCpyNW@12 +StrDupA@4 +StrDupW@4 +StrIsIntlEqualA@16 +StrIsIntlEqualW@16 +StrPBrkA@8 +StrPBrkW@8 +StrRChrA@12 +StrRChrIA@12 +StrRChrIW@12 +StrRChrW@12 +StrRStrIA@12 +StrRStrIW@12 +StrSpnA@8 +StrSpnW@8 +StrStrA@8 +StrStrIA@8 +StrStrIW@8 +StrStrNIW@12 +StrStrNW@12 +StrStrW@8 +StrToInt64ExA@12 +StrToInt64ExW@12 +StrToIntA@4 +StrToIntExA@12 +StrToIntExW@12 +StrToIntW@4 +StrTrimA@8 +StrTrimW@8 +UrlApplySchemeW@16 +UrlCanonicalizeW@16 +UrlCombineA@20 +UrlCombineW@20 +UrlCreateFromPathW@16 +UrlEscapeW@16 +UrlFixupW@12 +UrlGetLocationW@4 +UrlGetPartW@20 +UrlIsW@8 +UrlUnescapeA@16 +UrlUnescapeW@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-downlevel-shlwapi-l2-1-0.def b/lib/libc/mingw/lib32/api-ms-win-downlevel-shlwapi-l2-1-0.def new file mode 100644 index 0000000000..a16be65f19 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-downlevel-shlwapi-l2-1-0.def @@ -0,0 +1,65 @@ +LIBRARY api-ms-win-downlevel-shlwapi-l2-1-0 + +EXPORTS + +IStream_Copy@12 +IStream_Read@12 +IStream_ReadStr@8 +IStream_Reset@4 +IStream_Size@8 +IStream_Write@12 +IStream_WriteStr@8 +IUnknown_AtomicRelease@4 +IUnknown_GetSite@12 +IUnknown_QueryService@16 +IUnknown_Set@8 +IUnknown_SetSite@8 +IsOS@4 +SHAnsiToAnsi@12 +SHAnsiToUnicode@12 +SHCopyKeyA@16 +SHCopyKeyW@16 +SHCreateMemStream@8 +SHCreateStreamOnFileA@12 +SHCreateStreamOnFileEx@24 +SHCreateStreamOnFileW@12 +SHCreateThread@16 +SHCreateThreadRef@8 +SHCreateThreadWithHandle@20 +SHDeleteEmptyKeyA@8 +SHDeleteEmptyKeyW@8 +SHDeleteKeyA@8 +SHDeleteKeyW@8 +SHDeleteValueA@12 +SHDeleteValueW@12 +SHEnumKeyExA@16 +SHEnumKeyExW@16 +SHEnumValueA@28 +SHEnumValueW@28 +SHGetThreadRef@4 +SHGetValueA@24 +SHGetValueW@24 +SHOpenRegStream2A@16 +SHOpenRegStream2W@16 +SHOpenRegStreamA@16 +SHOpenRegStreamW@16 +SHQueryInfoKeyA@20 +SHQueryInfoKeyW@20 +SHQueryValueExA@24 +SHQueryValueExW@24 +SHRegDuplicateHKey@4 +SHRegGetIntW@12 +SHRegGetPathA@20 +SHRegGetPathW@20 +SHRegGetValueA@28 +SHRegGetValueW@28 +SHRegSetPathA@20 +SHRegSetPathW@20 +SHReleaseThreadRef@0 +SHSetThreadRef@4 +SHSetValueA@24 +SHSetValueW@24 +SHStrDupA@8 +SHStrDupW@8 +SHUnicodeToAnsi@12 +SHUnicodeToUnicode@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-downlevel-user32-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-downlevel-user32-l1-1-0.def new file mode 100644 index 0000000000..ced28b30bf --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-downlevel-user32-l1-1-0.def @@ -0,0 +1,28 @@ +LIBRARY api-ms-win-downlevel-user32-l1-1-0 + +EXPORTS + +CharLowerA@4 +CharLowerBuffA@8 +CharLowerBuffW@8 +CharLowerW@4 +CharNextA@4 +CharNextExA@12 +CharNextW@4 +CharPrevA@8 +CharPrevExA@16 +CharPrevW@8 +CharUpperA@4 +CharUpperBuffA@8 +CharUpperBuffW@8 +CharUpperW@4 +IsCharAlphaA@4 +IsCharAlphaNumericA@4 +IsCharAlphaNumericW@4 +IsCharAlphaW@4 +IsCharLowerA@4 +IsCharLowerW@4 +IsCharUpperA@4 +IsCharUpperW@4 +LoadStringA@16 +LoadStringW@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-downlevel-version-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-downlevel-version-l1-1-0.def new file mode 100644 index 0000000000..964eec49d4 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-downlevel-version-l1-1-0.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-downlevel-version-l1-1-0 + +EXPORTS + +GetFileVersionInfoExW@20 +GetFileVersionInfoSizeExW@12 +VerFindFileA@32 +VerFindFileW@32 +VerQueryValueA@16 +VerQueryValueW@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-eventing-classicprovider-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-eventing-classicprovider-l1-1-0.def new file mode 100644 index 0000000000..9b9e7f5080 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-eventing-classicprovider-l1-1-0.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-eventing-classicprovider-l1-1-0 + +EXPORTS + +GetTraceEnableFlags@8 +GetTraceEnableLevel@8 +GetTraceLoggerHandle@4 +RegisterTraceGuidsW@32 +TraceEvent@12 +TraceMessage +TraceMessageVa@24 +UnregisterTraceGuids@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-eventing-classicprovider-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-eventing-classicprovider-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..181a8ff2fe --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-eventing-classicprovider-l1-1-0_windowsapp.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-eventing-classicprovider-l1-1-0 + +EXPORTS + +GetTraceEnableFlags@8 +GetTraceEnableLevel@8 +GetTraceLoggerHandle@4 +RegisterTraceGuidsW@32 +TraceMessage +UnregisterTraceGuids@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-eventing-consumer-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-eventing-consumer-l1-1-0.def new file mode 100644 index 0000000000..4cc6170ed3 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-eventing-consumer-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-eventing-consumer-l1-1-0 + +EXPORTS + +CloseTrace@8 +OpenTraceW@4 +ProcessTrace@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-eventing-consumer-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-eventing-consumer-l1-1-1.def new file mode 100644 index 0000000000..1294aaf212 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-eventing-consumer-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-eventing-consumer-l1-1-1 + +EXPORTS + +QueryTraceProcessingHandle@32 diff --git a/lib/libc/mingw/lib32/api-ms-win-eventing-controller-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-eventing-controller-l1-1-0.def new file mode 100644 index 0000000000..e44c8db8c3 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-eventing-controller-l1-1-0.def @@ -0,0 +1,15 @@ +LIBRARY api-ms-win-eventing-controller-l1-1-0 + +EXPORTS + +ControlTraceW@20 +EnableTraceEx2@44 +EnumerateTraceGuidsEx@24 +EventAccessControl@20 +EventAccessQuery@12 +EventAccessRemove@4 +QueryAllTracesW@12 +StartTraceW@12 +StopTraceW@16 +TraceQueryInformation@24 +TraceSetInformation@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-eventing-controller-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-eventing-controller-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..01de00abb7 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-eventing-controller-l1-1-0_windowsapp.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-eventing-controller-l1-1-0 + +EXPORTS + +ControlTraceW@20 +EnableTraceEx2@44 +EnumerateTraceGuidsEx@24 +StartTraceW@12 +StopTraceW@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-eventing-legacy-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-eventing-legacy-l1-1-0.def new file mode 100644 index 0000000000..64bcd73ebc --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-eventing-legacy-l1-1-0.def @@ -0,0 +1,18 @@ +LIBRARY api-ms-win-eventing-legacy-l1-1-0 + +EXPORTS + +ControlTraceA@20 +EnableTrace@24 +EnableTraceEx@48 +EnumerateTraceGuids@12 +FlushTraceA@16 +FlushTraceW@16 +OpenTraceA@4 +QueryAllTracesA@12 +QueryTraceA@16 +QueryTraceW@16 +StartTraceA@12 +StopTraceA@16 +UpdateTraceA@16 +UpdateTraceW@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-eventing-legacy-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-eventing-legacy-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..c9533cf86c --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-eventing-legacy-l1-1-0_windowsapp.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-eventing-legacy-l1-1-0 + +EXPORTS + +ControlTraceA@20 +EnableTrace@24 +EnableTraceEx@48 +FlushTraceW@16 +OpenTraceA@4 +QueryTraceW@16 +StartTraceA@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-eventing-obsolete-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-eventing-obsolete-l1-1-0.def new file mode 100644 index 0000000000..08d1f07460 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-eventing-obsolete-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-eventing-obsolete-l1-1-0 + +EXPORTS + +RegisterTraceGuidsA@32 +RemoveTraceCallback@4 +SetTraceCallback@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-eventing-obsolete-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-eventing-obsolete-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..2041a5f332 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-eventing-obsolete-l1-1-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-eventing-obsolete-l1-1-0 + +EXPORTS + +RegisterTraceGuidsA@32 diff --git a/lib/libc/mingw/lib32/api-ms-win-eventing-provider-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-eventing-provider-l1-1-0.def new file mode 100644 index 0000000000..6213ce74d0 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-eventing-provider-l1-1-0.def @@ -0,0 +1,14 @@ +LIBRARY api-ms-win-eventing-provider-l1-1-0 + +EXPORTS + +EventActivityIdControl@8 +EventEnabled@12 +EventProviderEnabled@20 +EventRegister@16 +EventSetInformation@20 +EventUnregister@8 +EventWrite@20 +EventWriteEx@40 +EventWriteString@24 +EventWriteTransfer@28 diff --git a/lib/libc/mingw/lib32/api-ms-win-eventing-tdh-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-eventing-tdh-l1-1-0.def new file mode 100644 index 0000000000..f9807bbd79 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-eventing-tdh-l1-1-0.def @@ -0,0 +1,16 @@ +LIBRARY api-ms-win-eventing-tdh-l1-1-0 + +EXPORTS + +TdhEnumerateManifestProviderEvents@12 +TdhEnumerateProviderFieldInformation@16 +TdhEnumerateProviders@8 +TdhFormatProperty@44 +TdhGetEventInformation@20 +TdhGetEventMapInformation@16 +TdhGetManifestEventInformation@16 +TdhGetProperty@28 +TdhGetPropertySize@24 +TdhLoadManifest@4 +TdhQueryProviderFieldInformation@24 +TdhUnloadManifest@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-eventing-tdh-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-eventing-tdh-l1-1-1.def new file mode 100644 index 0000000000..c9768d3847 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-eventing-tdh-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-eventing-tdh-l1-1-1 + +EXPORTS + +TdhLoadManifestFromMemory@8 +TdhUnloadManifestFromMemory@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-eventlog-legacy-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-eventlog-legacy-l1-1-0.def new file mode 100644 index 0000000000..ff4265dad9 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-eventlog-legacy-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-eventlog-legacy-l1-1-0 + +EXPORTS + +DeregisterEventSource@4 +RegisterEventSourceW@8 +ReportEventW@36 diff --git a/lib/libc/mingw/lib32/api-ms-win-gaming-deviceinformation-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-gaming-deviceinformation-l1-1-0.def new file mode 100644 index 0000000000..61b62dc5c9 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-gaming-deviceinformation-l1-1-0.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-gaming-deviceinformation-l1-1-0 + +EXPORTS + +GetGamingDeviceModelInformation@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-gaming-expandedresources-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-gaming-expandedresources-l1-1-0.def new file mode 100644 index 0000000000..b0cbea3d32 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-gaming-expandedresources-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-gaming-expandedresources-l1-1-0 + +EXPORTS + +GetExpandedResourceExclusiveCpuCount@4 +HasExpandedResources@4 +ReleaseExclusiveCpuSets@0 diff --git a/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-0.def new file mode 100644 index 0000000000..ba5e6d4065 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-0.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-gaming-tcui-l1-1-0 + +EXPORTS + +ProcessPendingGameUI@4 +ShowChangeFriendRelationshipUI@12 +ShowGameInviteUI@24 +ShowPlayerPickerUI@36 +ShowProfileCardUI@12 +ShowTitleAchievementsUI@12 +TryCancelPendingGameUI@0 diff --git a/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-1.def new file mode 100644 index 0000000000..ccf305ff1c --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-gaming-tcui-l1-1-1 + +EXPORTS + +CheckGamingPrivilegeSilently@16 +CheckGamingPrivilegeWithUI@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-2.def b/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-2.def new file mode 100644 index 0000000000..94e37da59b --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-2.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-gaming-tcui-l1-1-2 + +EXPORTS + +CheckGamingPrivilegeSilentlyForUser@20 +CheckGamingPrivilegeWithUIForUser@28 +ShowChangeFriendRelationshipUIForUser@16 +ShowGameInviteUIForUser@28 +ShowPlayerPickerUIForUser@40 +ShowProfileCardUIForUser@16 +ShowTitleAchievementsUIForUser@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-3.def b/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-3.def new file mode 100644 index 0000000000..99e6856673 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-3.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-gaming-tcui-l1-1-3 + +EXPORTS + +ShowGameInviteUIWithContext@28 +ShowGameInviteUIWithContextForUser@32 diff --git a/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-4.def b/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-4.def new file mode 100644 index 0000000000..57c9104657 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-gaming-tcui-l1-1-4.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-gaming-tcui-l1-1-4 + +EXPORTS + +ShowCustomizeUserProfileUI@8 +ShowCustomizeUserProfileUIForUser@12 +ShowFindFriendsUI@8 +ShowFindFriendsUIForUser@12 +ShowGameInfoUI@12 +ShowGameInfoUIForUser@16 +ShowUserSettingsUI@8 +ShowUserSettingsUIForUser@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-mm-time-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-mm-time-l1-1-0.def new file mode 100644 index 0000000000..d6ade97e4e --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-mm-time-l1-1-0.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-mm-time-l1-1-0 + +EXPORTS + +timeBeginPeriod@4 +timeEndPeriod@4 +timeGetDevCaps@8 +timeGetSystemTime@8 +timeGetTime@0 diff --git a/lib/libc/mingw/lib32/api-ms-win-mm-time-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-mm-time-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..dab45e618f --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-mm-time-l1-1-0_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-mm-time-l1-1-0 + +EXPORTS + +timeBeginPeriod@4 +timeEndPeriod@4 +timeGetDevCaps@8 +timeGetTime@0 diff --git a/lib/libc/mingw/lib32/api-ms-win-net-isolation-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-net-isolation-l1-1-0.def new file mode 100644 index 0000000000..ff19fa3dc5 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-net-isolation-l1-1-0.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-net-isolation-l1-1-0 + +EXPORTS + +NetworkIsolationDiagnoseConnectFailureAndGetInfo@8 +NetworkIsolationEnumAppContainers@12 +NetworkIsolationFreeAppContainers@4 +NetworkIsolationGetAppContainerConfig@8 +NetworkIsolationRegisterForAppContainerChanges@16 +NetworkIsolationSetAppContainerConfig@8 +NetworkIsolationSetupAppContainerBinaries@28 +NetworkIsolationUnregisterForAppContainerChanges@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-net-isolation-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-net-isolation-l1-1-1.def new file mode 100644 index 0000000000..dbe9e17554 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-net-isolation-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-net-isolation-l1-1-1 + +EXPORTS + +NetworkIsolationDiagnoseConnectFailure@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-ntuser-sysparams-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-ntuser-sysparams-l1-1-0.def new file mode 100644 index 0000000000..faccb5ca01 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-ntuser-sysparams-l1-1-0.def @@ -0,0 +1,16 @@ +LIBRARY api-ms-win-ntuser-sysparams-l1-1-0 + +EXPORTS + +ChangeDisplaySettingsExW@20 +DisplayConfigGetDeviceInfo@4 +DisplayConfigSetDeviceInfo@4 +EnumDisplayDevicesW@16 +EnumDisplayMonitors@16 +EnumDisplaySettingsExW@16 +EnumDisplaySettingsW@12 +GetDisplayConfigBufferSizes@12 +GetMonitorInfoW@8 +GetSystemMetrics@4 +QueryDisplayConfig@24 +SystemParametersInfoW@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-ntuser-sysparams-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-ntuser-sysparams-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..993d30db53 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-ntuser-sysparams-l1-1-0_windowsapp.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-ntuser-sysparams-l1-1-0 + +EXPORTS + +EnumDisplayDevicesW@16 +EnumDisplayMonitors@16 +EnumDisplaySettingsExW@16 +GetMonitorInfoW@8 +GetSystemMetrics@4 +SystemParametersInfoW@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-oobe-notification-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-oobe-notification-l1-1-0.def new file mode 100644 index 0000000000..ba5b512a38 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-oobe-notification-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-oobe-notification-l1-1-0 + +EXPORTS + +OOBEComplete@4 +RegisterWaitUntilOOBECompleted@12 +UnregisterWaitUntilOOBECompleted@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-perf-legacy-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-perf-legacy-l1-1-0.def new file mode 100644 index 0000000000..4048f0145b --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-perf-legacy-l1-1-0.def @@ -0,0 +1,13 @@ +LIBRARY api-ms-win-perf-legacy-l1-1-0 + +EXPORTS + +PerfAddCounters@12 +PerfCloseQueryHandle@4 +PerfDeleteCounters@12 +PerfEnumerateCounterSet@16 +PerfEnumerateCounterSetInstances@20 +PerfOpenQueryHandle@8 +PerfQueryCounterData@16 +PerfQueryCounterInfo@16 +PerfQueryCounterSetRegistrationInfo@28 diff --git a/lib/libc/mingw/lib32/api-ms-win-power-base-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-power-base-l1-1-0.def new file mode 100644 index 0000000000..766e1b03f2 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-power-base-l1-1-0.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-power-base-l1-1-0 + +EXPORTS + +CallNtPowerInformation@20 +GetPwrCapabilities@4 +PowerDeterminePlatformRoleEx@4 +PowerRegisterSuspendResumeNotification@12 +PowerUnregisterSuspendResumeNotification@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-power-base-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-power-base-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..6116ed84e3 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-power-base-l1-1-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-power-base-l1-1-0 + +EXPORTS + +CallNtPowerInformation@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-power-limitsmanagement-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-power-limitsmanagement-l1-1-0.def new file mode 100644 index 0000000000..4490a01927 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-power-limitsmanagement-l1-1-0.def @@ -0,0 +1,14 @@ +LIBRARY api-ms-win-power-limitsmanagement-l1-1-0 + +EXPORTS + +PowerCloseEnvironmentalMonitor@4 +PowerCloseLimitsMitigation@4 +PowerCloseLimitsPolicy@4 +PowerRegisterEnvironmentalMonitor@8 +PowerRegisterLimitsMitigation@8 +PowerRegisterLimitsPolicy@8 +PowerReportLimitsEvent@4 +PowerUpdateEnvironmentalMonitorState@12 +PowerUpdateEnvironmentalMonitorThresholds@12 +PowerUpdateLimitsMitigation@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-power-setting-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-power-setting-l1-1-0.def new file mode 100644 index 0000000000..192d5e9d3f --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-power-setting-l1-1-0.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-power-setting-l1-1-0 + +EXPORTS + +PowerGetActiveScheme@8 +PowerReadACValue@28 +PowerReadDCValue@28 +PowerSetActiveScheme@8 +PowerSettingRegisterNotification@16 +PowerSettingUnregisterNotification@4 +PowerWriteACValueIndex@20 +PowerWriteDCValueIndex@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-power-setting-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-power-setting-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..3dd3181adc --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-power-setting-l1-1-0_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-power-setting-l1-1-0 + +EXPORTS + +PowerGetActiveScheme@8 +PowerReadACValue@28 +PowerSettingRegisterNotification@16 +PowerSettingUnregisterNotification@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-power-setting-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-power-setting-l1-1-1.def new file mode 100644 index 0000000000..46da766881 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-power-setting-l1-1-1.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-power-setting-l1-1-1 + +EXPORTS + +PowerRegisterForEffectivePowerModeNotifications@16 +PowerUnregisterFromEffectivePowerModeNotifications@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-ro-typeresolution-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-ro-typeresolution-l1-1-0.def new file mode 100644 index 0000000000..e22dd423e0 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-ro-typeresolution-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-ro-typeresolution-l1-1-0 + +EXPORTS + +RoGetMetaDataFile@20 +RoParseTypeName@12 +RoResolveNamespace@32 diff --git a/lib/libc/mingw/lib32/api-ms-win-ro-typeresolution-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-ro-typeresolution-l1-1-1.def new file mode 100644 index 0000000000..075cc4cb70 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-ro-typeresolution-l1-1-1.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-ro-typeresolution-l1-1-1 + +EXPORTS + +RoCreateNonAgilePropertySet@4 +RoCreatePropertySetSerializer@4 +RoIsApiContractMajorVersionPresent@12 +RoIsApiContractPresent@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-appcontainer-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-security-appcontainer-l1-1-0.def new file mode 100644 index 0000000000..f317d9805d --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-appcontainer-l1-1-0.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-security-appcontainer-l1-1-0 + +EXPORTS + +GetAppContainerNamedObjectPath@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-base-ansi-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-security-base-ansi-l1-1-0.def new file mode 100644 index 0000000000..9b0b7549dd --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-base-ansi-l1-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-security-base-ansi-l1-1-0 + +EXPORTS + +GetFileSecurityA@20 +SetFileSecurityA@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-base-ansi-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-security-base-ansi-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..204807e9c2 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-base-ansi-l1-1-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-security-base-ansi-l1-1-0 + +EXPORTS + +SetFileSecurityA@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-base-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-security-base-l1-1-0.def new file mode 100644 index 0000000000..52d268f306 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-base-l1-1-0.def @@ -0,0 +1,99 @@ +LIBRARY api-ms-win-security-base-l1-1-0 + +EXPORTS + +AccessCheck@32 +AccessCheckAndAuditAlarmW@44 +AccessCheckByType@44 +AccessCheckByTypeAndAuditAlarmW@64 +AccessCheckByTypeResultList@44 +AccessCheckByTypeResultListAndAuditAlarmByHandleW@68 +AccessCheckByTypeResultListAndAuditAlarmW@64 +AddAccessAllowedAce@16 +AddAccessAllowedAceEx@20 +AddAccessAllowedObjectAce@28 +AddAccessDeniedAce@16 +AddAccessDeniedAceEx@20 +AddAccessDeniedObjectAce@28 +AddAce@20 +AddAuditAccessAce@24 +AddAuditAccessAceEx@28 +AddAuditAccessObjectAce@36 +AddMandatoryAce@20 +AdjustTokenGroups@24 +AdjustTokenPrivileges@24 +AllocateAndInitializeSid@44 +AllocateLocallyUniqueId@4 +AreAllAccessesGranted@8 +AreAnyAccessesGranted@8 +CheckTokenMembership@12 +ConvertToAutoInheritPrivateObjectSecurity@24 +CopySid@12 +CreatePrivateObjectSecurity@24 +CreatePrivateObjectSecurityEx@32 +CreatePrivateObjectSecurityWithMultipleInheritance@36 +CreateRestrictedToken@36 +CreateWellKnownSid@16 +DeleteAce@8 +DestroyPrivateObjectSecurity@4 +DuplicateToken@12 +DuplicateTokenEx@24 +EqualDomainSid@12 +EqualPrefixSid@8 +EqualSid@8 +FindFirstFreeAce@8 +FreeSid@4 +GetAce@12 +GetAclInformation@16 +GetFileSecurityW@20 +GetKernelObjectSecurity@20 +GetLengthSid@4 +GetPrivateObjectSecurity@20 +GetSecurityDescriptorControl@12 +GetSecurityDescriptorDacl@16 +GetSecurityDescriptorGroup@12 +GetSecurityDescriptorLength@4 +GetSecurityDescriptorOwner@12 +GetSecurityDescriptorRMControl@8 +GetSecurityDescriptorSacl@16 +GetSidIdentifierAuthority@4 +GetSidLengthRequired@4 +GetSidSubAuthority@8 +GetSidSubAuthorityCount@4 +GetTokenInformation@20 +GetWindowsAccountDomainSid@12 +ImpersonateAnonymousToken@4 +ImpersonateLoggedOnUser@4 +ImpersonateSelf@4 +InitializeAcl@12 +InitializeSecurityDescriptor@8 +InitializeSid@12 +IsTokenRestricted@4 +IsValidAcl@4 +IsValidSecurityDescriptor@4 +IsValidSid@4 +IsWellKnownSid@8 +MakeAbsoluteSD@44 +MakeSelfRelativeSD@12 +MapGenericMask@8 +ObjectCloseAuditAlarmW@12 +ObjectDeleteAuditAlarmW@12 +ObjectOpenAuditAlarmW@48 +ObjectPrivilegeAuditAlarmW@24 +PrivilegeCheck@12 +PrivilegedServiceAuditAlarmW@20 +QuerySecurityAccessMask@8 +RevertToSelf@0 +SetAclInformation@16 +SetFileSecurityW@12 +SetKernelObjectSecurity@12 +SetPrivateObjectSecurity@20 +SetPrivateObjectSecurityEx@24 +SetSecurityAccessMask@8 +SetSecurityDescriptorControl@12 +SetSecurityDescriptorDacl@16 +SetSecurityDescriptorGroup@12 +SetSecurityDescriptorOwner@12 +SetSecurityDescriptorRMControl@8 +SetSecurityDescriptorSacl@16 +SetTokenInformation@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-base-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-security-base-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..96dd70710e --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-base-l1-1-0_windowsapp.def @@ -0,0 +1,59 @@ +LIBRARY api-ms-win-security-base-l1-1-0 + +EXPORTS + +AddAccessAllowedAce@16 +AddAccessAllowedAceEx@20 +AddAce@20 +AddMandatoryAce@20 +AdjustTokenGroups@24 +AdjustTokenPrivileges@24 +AllocateAndInitializeSid@44 +AllocateLocallyUniqueId@4 +CheckTokenMembership@12 +CopySid@12 +CreateWellKnownSid@16 +DeleteAce@8 +DuplicateToken@12 +DuplicateTokenEx@24 +EqualDomainSid@12 +EqualSid@8 +FreeSid@4 +GetAce@12 +GetAclInformation@16 +GetFileSecurityW@20 +GetKernelObjectSecurity@20 +GetLengthSid@4 +GetSecurityDescriptorControl@12 +GetSecurityDescriptorDacl@16 +GetSecurityDescriptorGroup@12 +GetSecurityDescriptorLength@4 +GetSecurityDescriptorOwner@12 +GetSecurityDescriptorRMControl@8 +GetSecurityDescriptorSacl@16 +GetSidIdentifierAuthority@4 +GetSidLengthRequired@4 +GetSidSubAuthority@8 +GetSidSubAuthorityCount@4 +GetTokenInformation@20 +GetWindowsAccountDomainSid@12 +ImpersonateLoggedOnUser@4 +InitializeAcl@12 +InitializeSecurityDescriptor@8 +InitializeSid@12 +IsValidAcl@4 +IsValidSecurityDescriptor@4 +IsValidSid@4 +IsWellKnownSid@8 +MakeAbsoluteSD@44 +MakeSelfRelativeSD@12 +RevertToSelf@0 +SetFileSecurityW@12 +SetKernelObjectSecurity@12 +SetSecurityDescriptorControl@12 +SetSecurityDescriptorDacl@16 +SetSecurityDescriptorGroup@12 +SetSecurityDescriptorOwner@12 +SetSecurityDescriptorRMControl@8 +SetSecurityDescriptorSacl@16 +SetTokenInformation@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-base-l1-2-0.def b/lib/libc/mingw/lib32/api-ms-win-security-base-l1-2-0.def new file mode 100644 index 0000000000..8b1dc38f24 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-base-l1-2-0.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-security-base-l1-2-0 + +EXPORTS + +AddResourceAttributeAce@28 +AddScopedPolicyIDAce@20 +CheckTokenCapability@12 +CheckTokenMembershipEx@16 +GetAppContainerAce@16 +GetCachedSigningLevel@24 +SetCachedSigningLevel@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-base-l1-2-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-security-base-l1-2-0_windowsapp.def new file mode 100644 index 0000000000..384b15359f --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-base-l1-2-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-security-base-l1-2-0 + +EXPORTS + +CheckTokenMembershipEx@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-base-l1-2-1.def b/lib/libc/mingw/lib32/api-ms-win-security-base-l1-2-1.def new file mode 100644 index 0000000000..bc0480ad50 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-base-l1-2-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-security-base-l1-2-1 + +EXPORTS + +CveEventWrite@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-base-l1-2-2.def b/lib/libc/mingw/lib32/api-ms-win-security-base-l1-2-2.def new file mode 100644 index 0000000000..da50e22029 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-base-l1-2-2.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-security-base-l1-2-2 + +EXPORTS + +DeriveCapabilitySidsFromName@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-cpwl-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-security-cpwl-l1-1-0.def new file mode 100644 index 0000000000..f3c787977e --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-cpwl-l1-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-security-cpwl-l1-1-0 + +EXPORTS + +CreateProcessWithLogonW@44 +CreateProcessWithTokenW@36 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-cpwl-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-security-cpwl-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..ea02e080a8 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-cpwl-l1-1-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-security-cpwl-l1-1-0 + +EXPORTS + +CreateProcessWithLogonW@44 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-credentials-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-security-credentials-l1-1-0.def new file mode 100644 index 0000000000..76e763453f --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-credentials-l1-1-0.def @@ -0,0 +1,33 @@ +LIBRARY api-ms-win-security-credentials-l1-1-0 + +EXPORTS + +CredDeleteA@12 +CredDeleteW@12 +CredEnumerateA@16 +CredEnumerateW@16 +CredFindBestCredentialA@16 +CredFindBestCredentialW@16 +CredFree@4 +CredGetSessionTypes@8 +CredGetTargetInfoA@12 +CredGetTargetInfoW@12 +CredIsMarshaledCredentialW@4 +CredIsProtectedA@8 +CredIsProtectedW@8 +CredMarshalCredentialA@12 +CredMarshalCredentialW@12 +CredProtectA@24 +CredProtectW@24 +CredReadA@16 +CredReadDomainCredentialsA@16 +CredReadDomainCredentialsW@16 +CredReadW@16 +CredUnmarshalCredentialA@12 +CredUnmarshalCredentialW@12 +CredUnprotectA@20 +CredUnprotectW@20 +CredWriteA@8 +CredWriteDomainCredentialsA@12 +CredWriteDomainCredentialsW@12 +CredWriteW@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-cryptoapi-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-security-cryptoapi-l1-1-0.def new file mode 100644 index 0000000000..9a0c76c78b --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-cryptoapi-l1-1-0.def @@ -0,0 +1,43 @@ +LIBRARY api-ms-win-security-cryptoapi-l1-1-0 + +EXPORTS + +CryptAcquireContextA@20 +CryptAcquireContextW@20 +CryptContextAddRef@12 +CryptCreateHash@20 +CryptDecrypt@24 +CryptDeriveKey@20 +CryptDestroyHash@4 +CryptDestroyKey@4 +CryptDuplicateHash@16 +CryptDuplicateKey@16 +CryptEncrypt@28 +CryptEnumProvidersA@24 +CryptEnumProvidersW@24 +CryptEnumProviderTypesA@24 +CryptEnumProviderTypesW@24 +CryptExportKey@24 +CryptGenKey@16 +CryptGenRandom@12 +CryptGetDefaultProviderA@20 +CryptGetDefaultProviderW@20 +CryptGetHashParam@20 +CryptGetKeyParam@20 +CryptGetProvParam@20 +CryptGetUserKey@12 +CryptHashData@16 +CryptHashSessionKey@12 +CryptImportKey@24 +CryptReleaseContext@8 +CryptSetHashParam@16 +CryptSetKeyParam@16 +CryptSetProviderA@8 +CryptSetProviderExA@16 +CryptSetProviderExW@16 +CryptSetProviderW@8 +CryptSetProvParam@16 +CryptSignHashA@24 +CryptSignHashW@24 +CryptVerifySignatureA@24 +CryptVerifySignatureW@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-cryptoapi-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-security-cryptoapi-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..2590c143c7 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-cryptoapi-l1-1-0_windowsapp.def @@ -0,0 +1,35 @@ +LIBRARY api-ms-win-security-cryptoapi-l1-1-0 + +EXPORTS + +CryptAcquireContextA@20 +CryptAcquireContextW@20 +CryptCreateHash@20 +CryptDecrypt@24 +CryptDeriveKey@20 +CryptDestroyHash@4 +CryptDestroyKey@4 +CryptDuplicateKey@16 +CryptEncrypt@28 +CryptEnumProvidersA@24 +CryptEnumProvidersW@24 +CryptExportKey@24 +CryptGenKey@16 +CryptGenRandom@12 +CryptGetDefaultProviderA@20 +CryptGetDefaultProviderW@20 +CryptGetHashParam@20 +CryptGetKeyParam@20 +CryptGetProvParam@20 +CryptGetUserKey@12 +CryptHashData@16 +CryptImportKey@24 +CryptReleaseContext@8 +CryptSetHashParam@16 +CryptSetKeyParam@16 +CryptSetProviderW@8 +CryptSetProvParam@16 +CryptSignHashA@24 +CryptSignHashW@24 +CryptVerifySignatureA@24 +CryptVerifySignatureW@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-isolatedcontainer-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-security-isolatedcontainer-l1-1-0.def new file mode 100644 index 0000000000..741499b16d --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-isolatedcontainer-l1-1-0.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-security-isolatedcontainer-l1-1-0 + +EXPORTS + +IsProcessInIsolatedContainer@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-isolatedcontainer-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-security-isolatedcontainer-l1-1-1.def new file mode 100644 index 0000000000..9f1cc87ea5 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-isolatedcontainer-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-security-isolatedcontainer-l1-1-1 + +EXPORTS + +IsProcessInWDAGContainer@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-lsalookup-ansi-l2-1-0.def b/lib/libc/mingw/lib32/api-ms-win-security-lsalookup-ansi-l2-1-0.def new file mode 100644 index 0000000000..b3f8285b2c --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-lsalookup-ansi-l2-1-0.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-security-lsalookup-ansi-l2-1-0 + +EXPORTS + +LookupAccountNameA@28 +LookupAccountSidA@28 +LookupPrivilegeDisplayNameA@20 +LookupPrivilegeNameA@16 +LookupPrivilegeValueA@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-lsalookup-l2-1-0.def b/lib/libc/mingw/lib32/api-ms-win-security-lsalookup-l2-1-0.def new file mode 100644 index 0000000000..d633be6a0e --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-lsalookup-l2-1-0.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-security-lsalookup-l2-1-0 + +EXPORTS + +LookupAccountNameW@28 +LookupAccountSidW@28 +LookupPrivilegeDisplayNameW@20 +LookupPrivilegeNameW@16 +LookupPrivilegeValueW@12 +LsaEnumerateTrustedDomains@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-lsalookup-l2-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-security-lsalookup-l2-1-0_windowsapp.def new file mode 100644 index 0000000000..6211588442 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-lsalookup-l2-1-0_windowsapp.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-security-lsalookup-l2-1-0 + +EXPORTS + +LookupAccountNameW@28 +LookupAccountSidW@28 +LookupPrivilegeDisplayNameW@20 +LookupPrivilegeNameW@16 +LookupPrivilegeValueW@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-lsalookup-l2-1-1.def b/lib/libc/mingw/lib32/api-ms-win-security-lsalookup-l2-1-1.def new file mode 100644 index 0000000000..99d455839e --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-lsalookup-l2-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-security-lsalookup-l2-1-1 + +EXPORTS + +LsaManageSidNameMapping@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-lsapolicy-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-security-lsapolicy-l1-1-0.def new file mode 100644 index 0000000000..bf0e1aaed8 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-lsapolicy-l1-1-0.def @@ -0,0 +1,17 @@ +LIBRARY api-ms-win-security-lsapolicy-l1-1-0 + +EXPORTS + +LsaAddAccountRights@16 +LsaClose@4 +LsaEnumerateAccountRights@16 +LsaEnumerateAccountsWithUserRight@16 +LsaFreeMemory@4 +LsaLookupNames2@24 +LsaLookupSids@20 +LsaLookupSids2@24 +LsaOpenPolicy@16 +LsaQueryInformationPolicy@12 +LsaRemoveAccountRights@20 +LsaRetrievePrivateData@12 +LsaSetInformationPolicy@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-lsapolicy-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-security-lsapolicy-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..e624ec3d88 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-lsapolicy-l1-1-0_windowsapp.def @@ -0,0 +1,9 @@ +LIBRARY api-ms-win-security-lsapolicy-l1-1-0 + +EXPORTS + +LsaClose@4 +LsaFreeMemory@4 +LsaLookupNames2@24 +LsaLookupSids@20 +LsaOpenPolicy@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-provider-ansi-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-security-provider-ansi-l1-1-0.def new file mode 100644 index 0000000000..f5ac5de431 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-provider-ansi-l1-1-0.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-security-provider-ansi-l1-1-0 + +EXPORTS + +GetExplicitEntriesFromAclA@12 +GetNamedSecurityInfoA@32 +SetEntriesInAclA@16 +SetNamedSecurityInfoA@28 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-provider-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-security-provider-l1-1-0.def new file mode 100644 index 0000000000..980011f2a7 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-provider-l1-1-0.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-security-provider-l1-1-0 + +EXPORTS + +GetExplicitEntriesFromAclW@12 +GetNamedSecurityInfoW@32 +GetSecurityInfo@32 +SetEntriesInAclW@16 +SetNamedSecurityInfoW@28 +SetSecurityInfo@28 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-sddl-ansi-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-security-sddl-ansi-l1-1-0.def new file mode 100644 index 0000000000..27a36ef958 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-sddl-ansi-l1-1-0.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-security-sddl-ansi-l1-1-0 + +EXPORTS + +ConvertSidToStringSidA@8 +ConvertStringSidToSidA@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-sddl-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-security-sddl-l1-1-0.def new file mode 100644 index 0000000000..9f376c5f8f --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-sddl-l1-1-0.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-security-sddl-l1-1-0 + +EXPORTS + +ConvertSecurityDescriptorToStringSecurityDescriptorW@20 +ConvertSidToStringSidW@8 +ConvertStringSecurityDescriptorToSecurityDescriptorW@16 +ConvertStringSidToSidW@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-systemfunctions-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-security-systemfunctions-l1-1-0.def new file mode 100644 index 0000000000..ccd0780935 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-systemfunctions-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-security-systemfunctions-l1-1-0 + +EXPORTS + +SystemFunction036@8 +SystemFunction040@12 +SystemFunction041@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-security-systemfunctions-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-security-systemfunctions-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..0e5e6e715d --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-security-systemfunctions-l1-1-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-security-systemfunctions-l1-1-0 + +EXPORTS + +SystemFunction036@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-service-core-ansi-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-service-core-ansi-l1-1-0.def new file mode 100644 index 0000000000..56af17d765 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-service-core-ansi-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-service-core-ansi-l1-1-0 + +EXPORTS + +EnumServicesStatusExA@40 +GetServiceDisplayNameA@16 +GetServiceKeyNameA@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-service-core-ansi-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-service-core-ansi-l1-1-1.def new file mode 100644 index 0000000000..c613c915e9 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-service-core-ansi-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-service-core-ansi-l1-1-1 + +EXPORTS + +EnumDependentServicesA@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-service-core-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-service-core-l1-1-0.def new file mode 100644 index 0000000000..2f26f67a38 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-service-core-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-service-core-l1-1-0 + +EXPORTS + +RegisterServiceCtrlHandlerExW@12 +SetServiceStatus@8 +StartServiceCtrlDispatcherW@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-service-core-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-service-core-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..b8e530ce75 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-service-core-l1-1-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-service-core-l1-1-0 + +EXPORTS + +RegisterServiceCtrlHandlerExW@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-service-core-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-service-core-l1-1-1.def new file mode 100644 index 0000000000..888f96b5a0 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-service-core-l1-1-1.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-service-core-l1-1-1 + +EXPORTS + +EnumDependentServicesW@24 +EnumServicesStatusExW@40 +QueryServiceDynamicInformation@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-service-core-l1-1-2.def b/lib/libc/mingw/lib32/api-ms-win-service-core-l1-1-2.def new file mode 100644 index 0000000000..8a6abdb244 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-service-core-l1-1-2.def @@ -0,0 +1,6 @@ +LIBRARY api-ms-win-service-core-l1-1-2 + +EXPORTS + +GetServiceDisplayNameW@16 +GetServiceKeyNameW@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-service-core-l1-1-3.def b/lib/libc/mingw/lib32/api-ms-win-service-core-l1-1-3.def new file mode 100644 index 0000000000..2da0d3ec06 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-service-core-l1-1-3.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-service-core-l1-1-3 + +EXPORTS + +GetServiceRegistryStateKey@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-service-core-l1-1-4.def b/lib/libc/mingw/lib32/api-ms-win-service-core-l1-1-4.def new file mode 100644 index 0000000000..409b0c7374 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-service-core-l1-1-4.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-service-core-l1-1-4 + +EXPORTS + +GetServiceDirectory@20 diff --git a/lib/libc/mingw/lib32/api-ms-win-service-management-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-service-management-l1-1-0.def new file mode 100644 index 0000000000..d19c2b466c --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-service-management-l1-1-0.def @@ -0,0 +1,11 @@ +LIBRARY api-ms-win-service-management-l1-1-0 + +EXPORTS + +CloseServiceHandle@4 +ControlServiceExW@16 +CreateServiceW@52 +DeleteService@4 +OpenSCManagerW@12 +OpenServiceW@12 +StartServiceW@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-service-management-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-service-management-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..37dcd625d7 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-service-management-l1-1-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-service-management-l1-1-0 + +EXPORTS + +OpenSCManagerW@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-service-management-l2-1-0.def b/lib/libc/mingw/lib32/api-ms-win-service-management-l2-1-0.def new file mode 100644 index 0000000000..94967e0a6c --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-service-management-l2-1-0.def @@ -0,0 +1,12 @@ +LIBRARY api-ms-win-service-management-l2-1-0 + +EXPORTS + +ChangeServiceConfig2W@12 +ChangeServiceConfigW@44 +NotifyServiceStatusChangeW@12 +QueryServiceConfig2W@20 +QueryServiceConfigW@16 +QueryServiceObjectSecurity@20 +QueryServiceStatusEx@20 +SetServiceObjectSecurity@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-service-winsvc-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-service-winsvc-l1-1-0.def new file mode 100644 index 0000000000..3f736bcc41 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-service-winsvc-l1-1-0.def @@ -0,0 +1,20 @@ +LIBRARY api-ms-win-service-winsvc-l1-1-0 + +EXPORTS + +ChangeServiceConfig2A@12 +ChangeServiceConfigA@44 +ControlService@12 +ControlServiceExA@16 +CreateServiceA@52 +NotifyServiceStatusChangeA@12 +OpenSCManagerA@12 +OpenServiceA@12 +QueryServiceConfig2A@20 +QueryServiceConfigA@16 +QueryServiceStatus@8 +RegisterServiceCtrlHandlerA@8 +RegisterServiceCtrlHandlerExA@12 +RegisterServiceCtrlHandlerW@8 +StartServiceA@12 +StartServiceCtrlDispatcherA@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-service-winsvc-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-service-winsvc-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..4561778c81 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-service-winsvc-l1-1-0_windowsapp.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-service-winsvc-l1-1-0 + +EXPORTS + +OpenSCManagerA@12 +RegisterServiceCtrlHandlerA@8 +RegisterServiceCtrlHandlerExA@12 +RegisterServiceCtrlHandlerW@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-shcore-obsolete-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-shcore-obsolete-l1-1-0.def new file mode 100644 index 0000000000..f25bacd142 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-shcore-obsolete-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-shcore-obsolete-l1-1-0 + +EXPORTS + +CommandLineToArgvW@8 +SHStrDupA@8 +SHStrDupW@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-shcore-obsolete-l1-1-0_windowsapp.def b/lib/libc/mingw/lib32/api-ms-win-shcore-obsolete-l1-1-0_windowsapp.def new file mode 100644 index 0000000000..42a937d736 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-shcore-obsolete-l1-1-0_windowsapp.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-shcore-obsolete-l1-1-0 + +EXPORTS + +CommandLineToArgvW@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-shcore-path-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-shcore-path-l1-1-0.def new file mode 100644 index 0000000000..e9debf888d --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-shcore-path-l1-1-0.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-shcore-path-l1-1-0 + +EXPORTS + +PathBuildRootA@8 +PathBuildRootW@8 +PathIsNetworkPathA@4 +PathIsNetworkPathW@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-shcore-registry-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-shcore-registry-l1-1-0.def new file mode 100644 index 0000000000..17bbb1fdc2 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-shcore-registry-l1-1-0.def @@ -0,0 +1,32 @@ +LIBRARY api-ms-win-shcore-registry-l1-1-0 + +EXPORTS + +SHCopyKeyA@16 +SHCopyKeyW@16 +SHDeleteEmptyKeyA@8 +SHDeleteEmptyKeyW@8 +SHDeleteKeyA@8 +SHDeleteKeyW@8 +SHDeleteValueA@12 +SHDeleteValueW@12 +SHEnumKeyExA@16 +SHEnumKeyExW@16 +SHEnumValueA@28 +SHEnumValueW@28 +SHGetValueA@24 +SHGetValueW@24 +SHQueryInfoKeyA@20 +SHQueryInfoKeyW@20 +SHQueryValueExA@24 +SHQueryValueExW@24 +SHRegDuplicateHKey@4 +SHRegGetIntW@12 +SHRegGetPathA@20 +SHRegGetPathW@20 +SHRegGetValueA@28 +SHRegGetValueW@28 +SHRegSetPathA@20 +SHRegSetPathW@20 +SHSetValueA@24 +SHSetValueW@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-shcore-registry-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-shcore-registry-l1-1-1.def new file mode 100644 index 0000000000..617e8704cc --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-shcore-registry-l1-1-1.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-shcore-registry-l1-1-1 + +EXPORTS + +SHRegGetValueFromHKCUHKLM@24 diff --git a/lib/libc/mingw/lib32/api-ms-win-shcore-scaling-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-shcore-scaling-l1-1-0.def new file mode 100644 index 0000000000..f121e648c1 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-shcore-scaling-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-shcore-scaling-l1-1-0 + +EXPORTS + +GetScaleFactorForDevice@4 +RegisterScaleChangeNotifications@16 +RevokeScaleChangeNotifications@8 diff --git a/lib/libc/mingw/lib32/api-ms-win-shcore-scaling-l1-1-1.def b/lib/libc/mingw/lib32/api-ms-win-shcore-scaling-l1-1-1.def new file mode 100644 index 0000000000..2f5355e43d --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-shcore-scaling-l1-1-1.def @@ -0,0 +1,10 @@ +LIBRARY api-ms-win-shcore-scaling-l1-1-1 + +EXPORTS + +GetDpiForMonitor@16 +GetProcessDpiAwareness@8 +GetScaleFactorForMonitor@8 +RegisterScaleChangeEvent@8 +SetProcessDpiAwareness@4 +UnregisterScaleChangeEvent@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-shcore-scaling-l1-1-2.def b/lib/libc/mingw/lib32/api-ms-win-shcore-scaling-l1-1-2.def new file mode 100644 index 0000000000..94de5076e1 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-shcore-scaling-l1-1-2.def @@ -0,0 +1,5 @@ +LIBRARY api-ms-win-shcore-scaling-l1-1-2 + +EXPORTS + +GetDpiForShellUIComponent@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-shcore-stream-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-shcore-stream-l1-1-0.def new file mode 100644 index 0000000000..8fb0d0eacd --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-shcore-stream-l1-1-0.def @@ -0,0 +1,19 @@ +LIBRARY api-ms-win-shcore-stream-l1-1-0 + +EXPORTS + +IStream_Copy@12 +IStream_Read@12 +IStream_ReadStr@8 +IStream_Reset@4 +IStream_Size@8 +IStream_Write@12 +IStream_WriteStr@8 +SHCreateMemStream@8 +SHCreateStreamOnFileA@12 +SHCreateStreamOnFileEx@24 +SHCreateStreamOnFileW@12 +SHOpenRegStream2A@16 +SHOpenRegStream2W@16 +SHOpenRegStreamA@16 +SHOpenRegStreamW@16 diff --git a/lib/libc/mingw/lib32/api-ms-win-shcore-stream-winrt-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-shcore-stream-winrt-l1-1-0.def new file mode 100644 index 0000000000..5dafc212e5 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-shcore-stream-winrt-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-shcore-stream-winrt-l1-1-0 + +EXPORTS + +CreateRandomAccessStreamOnFile@16 +CreateRandomAccessStreamOverStream@16 +CreateStreamOverRandomAccessStream@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-shcore-sysinfo-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-shcore-sysinfo-l1-1-0.def new file mode 100644 index 0000000000..6510396e2a --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-shcore-sysinfo-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-shcore-sysinfo-l1-1-0 + +EXPORTS + +GetCurrentProcessExplicitAppUserModelID@4 +IsOS@4 +SetCurrentProcessExplicitAppUserModelID@4 diff --git a/lib/libc/mingw/lib32/api-ms-win-shcore-unicodeansi-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-shcore-unicodeansi-l1-1-0.def new file mode 100644 index 0000000000..aaae6d1b81 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-shcore-unicodeansi-l1-1-0.def @@ -0,0 +1,8 @@ +LIBRARY api-ms-win-shcore-unicodeansi-l1-1-0 + +EXPORTS + +SHAnsiToAnsi@12 +SHAnsiToUnicode@12 +SHUnicodeToAnsi@12 +SHUnicodeToUnicode@12 diff --git a/lib/libc/mingw/lib32/api-ms-win-shell-shdirectory-l1-1-0.def b/lib/libc/mingw/lib32/api-ms-win-shell-shdirectory-l1-1-0.def new file mode 100644 index 0000000000..ae1dfd1744 --- /dev/null +++ b/lib/libc/mingw/lib32/api-ms-win-shell-shdirectory-l1-1-0.def @@ -0,0 +1,7 @@ +LIBRARY api-ms-win-shell-shdirectory-l1-1-0 + +EXPORTS + +SHCreateDirectory@8 +SHCreateDirectoryExA@12 +SHCreateDirectoryExW@12 diff --git a/lib/libc/mingw/lib32/davclnt.def b/lib/libc/mingw/lib32/davclnt.def index 5dcc9f8e6a..1c4a516e26 100644 --- a/lib/libc/mingw/lib32/davclnt.def +++ b/lib/libc/mingw/lib32/davclnt.def @@ -14,7 +14,6 @@ DavRegisterAuthCallback@8 DavUnregisterAuthCallback@4 DllCanUnloadNow@0 DllGetClassObject@12 -DllMain@12 NPAddConnection3@20 NPAddConnection@12 NPCancelConnection@8 diff --git a/lib/libc/mingw/lib32/msoledbsql.def b/lib/libc/mingw/lib32/msoledbsql.def index fbea877100..89fc4cb458 100644 --- a/lib/libc/mingw/lib32/msoledbsql.def +++ b/lib/libc/mingw/lib32/msoledbsql.def @@ -7,7 +7,6 @@ LIBRARY "msoledbsql.dll" EXPORTS DllCanUnloadNow@0 DllGetClassObject@12 -DllMain@12 DllRegisterServer@0 DllUnregisterServer@0 OpenSqlFilestream@24 diff --git a/lib/libc/mingw/lib32/p2p.def b/lib/libc/mingw/lib32/p2p.def index ee8c00b6e7..0960a75730 100644 --- a/lib/libc/mingw/lib32/p2p.def +++ b/lib/libc/mingw/lib32/p2p.def @@ -5,7 +5,6 @@ ; LIBRARY "P2P.dll" EXPORTS -DllMain@12 PeerCollabAddContact@8 PeerCollabAsyncInviteContact@20 PeerCollabAsyncInviteEndpoint@16 diff --git a/lib/libc/mingw/lib32/p2pcollab.def b/lib/libc/mingw/lib32/p2pcollab.def index d0de1d5e0a..d768cc6efb 100644 --- a/lib/libc/mingw/lib32/p2pcollab.def +++ b/lib/libc/mingw/lib32/p2pcollab.def @@ -87,6 +87,5 @@ SPUpdateUserPicture@0 SPUpdateUserSettings@4 SSPAddCredentials@12 SSPRemoveCredentials@4 -DllMain@12 InitSecurityInterfaceW@0 QuerySecurityPackageInfoW@8 diff --git a/lib/libc/mingw/lib32/prntvpt.def b/lib/libc/mingw/lib32/prntvpt.def index c93f48ea18..f6c5608f67 100644 --- a/lib/libc/mingw/lib32/prntvpt.def +++ b/lib/libc/mingw/lib32/prntvpt.def @@ -18,7 +18,6 @@ ConvertPrintTicketToDevModeThunk2@32 ConvertPrintTicketToDevModeThunk@28 DllCanUnloadNow@0 DllGetClassObject@12 -DllMain@12 DllRegisterServer@0 DllUnregisterServer@0 GetDeviceDefaultPrintTicketThunk@12 diff --git a/lib/libc/mingw/lib32/shlwapi.def b/lib/libc/mingw/lib32/shlwapi.def index 4978994c5d..8dfff0be26 100644 --- a/lib/libc/mingw/lib32/shlwapi.def +++ b/lib/libc/mingw/lib32/shlwapi.def @@ -5,94 +5,83 @@ ; LIBRARY "SHLWAPI.dll" EXPORTS -ParseURLA@8 -ParseURLW@8 -SHAllocShared@12 -SHLockShared@8 -SHUnlockShared@4 -SHFreeShared@8 -SHCreateMemStream@8 -GetAcceptLanguagesA@8 -GetAcceptLanguagesW@8 -SHCreateThread@16 -IsCharSpaceW@4 -StrCmpNCA@12 -StrCmpNCW@12 -StrCmpNICA@12 -StrCmpNICW@12 -StrCmpCA@8 -StrCmpCW@8 -StrCmpICA@8 -StrCmpICW@8 -ConnectToConnectionPoint@24 -IUnknown_AtomicRelease@4 -IUnknown_GetWindow@8 -IUnknown_SetSite@8 -IUnknown_QueryService@16 -IStream_Read@12 -SHMessageBoxCheckA@24 -SHMessageBoxCheckW@24 -IUnknown_Set@8 -SHStripMneumonicA@4 -SHIsChildOrSelf@8 -IStream_Write@12 -IStream_Reset@4 -IStream_Size@8 -SHAnsiToUnicode@12 -SHUnicodeToAnsi@12 -QISearch@16 -SHStripMneumonicW@4 -IUnknown_GetSite@12 -WhichPlatform@0 -SHRegGetIntW@12 -SHAnsiToAnsi@12 -SHUnicodeToUnicode@12 -SHFormatDateTimeA@16 -SHFormatDateTimeW@16 -MLLoadLibraryA@12 -MLLoadLibraryW@12 -ShellMessageBoxW@0 -MLFreeLibrary@0 -SHSendMessageBroadcastA@12 -SHSendMessageBroadcastW@12 -IsOS@4 -UrlFixupW@12 -SHRunIndirectRegClientCommand@8 -SHLoadIndirectString@16 +AssocCopyVerbs@8 AssocCreate@24 AssocGetPerceivedType@16 AssocIsDangerous@4 +AssocMakeApplicationByKeyW@12 +AssocMakeProgid@16 AssocQueryKeyA@20 AssocQueryKeyW@20 -IStream_ReadPidl@8 -IStream_WritePidl@8 -SHGetViewStatePropertyBag@20 -IsInternetESCEnabled@0 -SHPropertyBag_ReadStrAlloc@12 -IStream_Copy@12 -DelayLoadFailureHook@8 -SHPropertyBag_WriteBSTR@12 AssocQueryStringA@24 AssocQueryStringByKeyA@24 AssocQueryStringByKeyW@24 AssocQueryStringW@24 +CalculateAspectRatio@12 +CharUpperNoDBCSW@4 ChrCmpIA@8 ChrCmpIW@8 ColorAdjustLuma@12 ColorHLSToRGB@12 ColorRGBToHLS@16 +ConnectToConnectionPoint@24 +DelayLoadFailureHook@8 DllGetVersion@4 +DoesStringRoundTripW@12 +DupWideToAnsi@8 +FDSA_DeleteItem@8 +FDSA_Initialize@20 +FDSA_InsertItem@12 +FixSlashesAndColonW@4 +GetAcceptLanguagesA@8 +GetAcceptLanguagesW@8 GetMenuPosFromID@8 HashData@16 IntlStrEqWorkerA@16 -IStream_ReadStr@8 -IStream_WriteStr@8 IntlStrEqWorkerW@16 IsCharSpaceA@4 +IsCharSpaceW@4 +IShellFolder_GetDisplayNameOf@20 +IShellFolder_ParseDisplayName@28 +IsInternetESCEnabled@0 +IsOS@4 +IStream_Copy@12 +IStream_Read@12 +IStream_ReadPidl@8 +IStream_ReadStr@8 +IStream_Reset@4 +IStream_Size@8 +IStream_Write@12 +IStream_WritePidl@8 +IStream_WriteStr@8 +IUnknown_AtomicRelease@4 +IUnknown_CPContainerInvokeIndirect@12 +IUnknown_EnableModeless@8 +IUnknown_Exec@24 +IUnknown_GetSite@12 +IUnknown_GetWindow@8 +IUnknown_HasFocusIO@4 +IUnknown_OnFocusChangeIS@12 +IUnknown_QueryService@16 +IUnknown_QueryServiceExec@28 +IUnknown_QueryServiceForWebBrowserApp@12 +IUnknown_QueryServicePropertyBag@16 +IUnknown_Set@8 +IUnknown_SetOwner@8 +IUnknown_SetSite@8 +IUnknown_TranslateAcceleratorIO@8 +IUnknown_UIActivateIO@12 +MayExecForward@28 +MayQSForward@24 +MIME_GetExtensionW@12 +MLFreeLibrary@0 +MLLoadLibraryA@12 +MLLoadLibraryW@12 +ParseURLA@8 +ParseURLW@8 PathAddBackslashA@4 PathAddBackslashW@4 PathAddExtensionA@8 -SHCreateThreadWithHandle@20 PathAddExtensionW@8 PathAppendA@8 PathAppendW@8 @@ -112,6 +101,9 @@ PathCreateFromUrlA@16 PathCreateFromUrlAlloc@12 PathCreateFromUrlW@16 PathFileExistsA@4 +PathFileExistsAndAttributesA@8 +PathFileExistsDefExtAndAttributesW@12 +PathFileExistsDefExtW@8 PathFileExistsW@4 PathFindExtensionA@4 PathFindExtensionW@4 @@ -120,6 +112,7 @@ PathFindFileNameW@4 PathFindNextComponentA@4 PathFindNextComponentW@4 PathFindOnPathA@8 +PathFindOnPathExW@12 PathFindOnPathW@8 PathFindSuffixArrayA@12 PathFindSuffixArrayW@12 @@ -195,23 +188,38 @@ PathStripPathA@4 PathStripPathW@4 PathStripToRootA@4 PathStripToRootW@4 -PathUnExpandEnvStringsA@12 -PathUnExpandEnvStringsW@12 PathUndecorateA@4 PathUndecorateW@4 +PathUnExpandEnvStringsA@12 +PathUnExpandEnvStringsForUserW@16 +PathUnExpandEnvStringsW@12 PathUnmakeSystemFolderA@4 PathUnmakeSystemFolderW@4 PathUnquoteSpacesA@4 PathUnquoteSpacesW@4 +QISearch@16 +QuerySourceCreateFromKey@20 +SHAddDataBlock@8 +SHAllocShared@12 +SHAnsiToAnsi@12 +SHAnsiToUnicode@12 SHAutoComplete@8 +SHClearViewStatePropertyBag@12 SHCopyKeyA@16 SHCopyKeyW@16 +SHCreateMemStream@8 +SHCreatePropertyBagOnProfileSection@20 +SHCreatePropertyBagOnRegKey@20 +SHCreatePropertyStoreOnXML@20 SHCreateShellPalette@4 SHCreateStreamOnFileA@12 SHCreateStreamOnFileEx@24 SHCreateStreamOnFileW@12 SHCreateStreamWrapper@16 +SHCreateThread@16 SHCreateThreadRef@8 +SHCreateThreadWithHandle@20 +SHCreateWorkerWindowW@24 SHDeleteEmptyKeyA@8 SHDeleteEmptyKeyW@8 SHDeleteKeyA@8 @@ -220,23 +228,64 @@ SHDeleteOrphanKeyA@8 SHDeleteOrphanKeyW@8 SHDeleteValueA@12 SHDeleteValueW@12 +ShellMessageBoxA +ShellMessageBoxA@0 +ShellMessageBoxW +ShellMessageBoxW@0 SHEnumKeyExA@16 SHEnumKeyExW@16 SHEnumValueA@28 SHEnumValueW@28 +SHExpandEnvironmentStringsAlloc@8 +SHExpandEnvironmentStringsForUserW@16 +SHFillRectClr@12 +SHFindDataBlock@8 +SHFormatDateTimeA@16 +SHFormatDateTimeW@16 +SHForwardContextMenuMsg@24 +SHFreeDataBlockList@4 +SHFreeShared@8 +SHGetCurColorRes@0 +SHGetFileDescriptionW@20 +SHGetIniStringW@20 SHGetInverseCMAP@8 +SHGetMenuFromID@8 +SHGetPerScreenResName@12 +SHGetRestriction@12 +SHGetShellKeyEx@16 SHGetThreadRef@4 SHGetValueA@24 SHGetValueW@24 +SHGetViewStatePropertyBag@20 +SHInvokeCommand@16 +SHInvokeCommandOnContextMenu@20 +SHInvokeCommandOnContextMenuEx@28 +SHInvokeCommandWithFlagsAndSite@28 +SHInvokeDefaultCommand@12 +SHIsChildOrSelf@8 +SHIsExpandableFolder@8 SHIsLowMemoryMachine@4 +SHLoadFromPropertyBag@8 +SHLoadIndirectString@16 +SHLoadMenuPopup@8 +SHLockShared@8 +SHMenuIndexFromID@8 +SHMessageBoxCheckA@24 +SHMessageBoxCheckExW@28 +SHMessageBoxCheckW@24 SHOpenRegStream2A@16 SHOpenRegStream2W@16 SHOpenRegStreamA@16 SHOpenRegStreamW@16 +SHPinDllOfCLSID@4 +SHPropertyBag_ReadStrAlloc@12 +SHPropertyBag_WriteBSTR@12 SHQueryInfoKeyA@20 SHQueryInfoKeyW@20 SHQueryValueExA@24 SHQueryValueExW@24 +SHQueueUserWorkItem@28 +SHReadDataBlockList@8 SHRegCloseUSKey@4 SHRegCreateUSKeyA@20 SHRegCreateUSKeyW@20 @@ -251,12 +300,16 @@ SHRegEnumUSValueA@32 SHRegEnumUSValueW@32 SHRegGetBoolUSValueA@16 SHRegGetBoolUSValueW@16 +SHRegGetIntW@12 SHRegGetPathA@20 SHRegGetPathW@20 SHRegGetUSValueA@32 SHRegGetUSValueW@32 SHRegGetValueA@28 +SHRegGetValueFromHKCUHKLM@24 SHRegGetValueW@28 +SHRegisterClassW@4 +SHRegisterValidateTemplate@8 SHRegOpenUSKeyA@20 SHRegOpenUSKeyW@20 SHRegQueryInfoUSKeyA@24 @@ -269,19 +322,36 @@ SHRegSetUSValueA@24 SHRegSetUSValueW@24 SHRegWriteUSValueA@24 SHRegWriteUSValueW@24 -SHRegisterValidateTemplate@8 SHReleaseThreadRef@0 +SHRemoveDataBlock@8 +SHRemoveDefaultDialogFont@4 +SHRestrictionLookup@24 +SHRunIndirectRegClientCommand@8 +SHSendMessageBroadcastA@12 +SHSendMessageBroadcastW@12 +SHSetDefaultDialogFont@8 +SHSetIniStringW@16 SHSetThreadRef@4 SHSetValueA@24 SHSetValueW@24 +SHSetWindowBits@16 +SHSimulateDrop@20 SHSkipJunction@8 SHStrDupA@8 SHStrDupW@8 -ShellMessageBoxA@0 -StrCSpnA@8 -StrCSpnIA@8 -StrCSpnIW@8 -StrCSpnW@8 +SHStringFromGUIDW@12 +SHStripMneumonicA@4 +SHStripMneumonicW@4 +SHUnicodeToAnsi@12 +SHUnicodeToAnsiCP@16 +SHUnicodeToUnicode@12 +SHUnlockShared@4 +SHWeakQueryInterface@16 +SHWeakReleaseInterface@8 +SHWriteDataBlockList@8 +SKAllocValueW@24 +SKGetValueW@24 +SKSetValueW@24 StrCatBuffA@12 StrCatBuffW@12 StrCatChainW@16 @@ -292,15 +362,27 @@ StrChrIW@8 StrChrNIW@12 StrChrNW@12 StrChrW@8 +StrCmpCA@8 +StrCmpCW@8 +StrCmpICA@8 +StrCmpICW@8 StrCmpIW@8 StrCmpLogicalW@8 StrCmpNA@12 +StrCmpNCA@12 +StrCmpNCW@12 StrCmpNIA@12 +StrCmpNICA@12 +StrCmpNICW@12 StrCmpNIW@12 StrCmpNW@12 StrCmpW@8 StrCpyNW@12 StrCpyW@8 +StrCSpnA@8 +StrCSpnIA@8 +StrCSpnIW@8 +StrCSpnW@8 StrDupA@4 StrDupW@4 StrFormatByteSize64A@16 @@ -321,13 +403,13 @@ StrRChrA@12 StrRChrIA@12 StrRChrIW@12 StrRChrW@12 -StrRStrIA@12 -StrRStrIW@12 StrRetToBSTR@12 StrRetToBufA@16 StrRetToBufW@16 StrRetToStrA@12 StrRetToStrW@12 +StrRStrIA@12 +StrRStrIW@12 StrSpnA@8 StrSpnW@8 StrStrA@8 @@ -356,6 +438,7 @@ UrlCreateFromPathA@16 UrlCreateFromPathW@16 UrlEscapeA@16 UrlEscapeW@16 +UrlFixupW@12 UrlGetLocationA@4 UrlGetLocationW@4 UrlGetPartA@20 @@ -370,7 +453,9 @@ UrlIsOpaqueW@4 UrlIsW@8 UrlUnescapeA@16 UrlUnescapeW@16 +WhichPlatform@0 wnsprintfA wnsprintfW wvnsprintfA@16 wvnsprintfW@16 +ZoneCheckUrlExW@32 diff --git a/lib/libc/mingw/lib32/spoolss.def b/lib/libc/mingw/lib32/spoolss.def index 3d9c081257..fa807bfde7 100644 --- a/lib/libc/mingw/lib32/spoolss.def +++ b/lib/libc/mingw/lib32/spoolss.def @@ -73,7 +73,6 @@ DllCanUnloadNow@0 DllFreeSplMem@4 DllFreeSplStr@4 DllGetClassObject@12 -DllMain@12 DllReallocSplMem@12 DllReallocSplStr@8 DllRegisterServer@0 diff --git a/lib/libc/mingw/lib32/wsmsvc.def b/lib/libc/mingw/lib32/wsmsvc.def new file mode 100644 index 0000000000..b5853200cc --- /dev/null +++ b/lib/libc/mingw/lib32/wsmsvc.def @@ -0,0 +1,3673 @@ +LIBRARY "WsmSvc.DLL" +EXPORTS +??0?$AutoCleanup@V?$AutoDelete@D@@PAD@@QAE@PAD@Z +??0?$AutoCleanup@V?$AutoDelete@G@@PAG@@QAE@PAG@Z +??0?$AutoCleanup@V?$AutoDelete@UIPRange@CWSManIPFilter@@@@PAUIPRange@CWSManIPFilter@@@@QAE@PAUIPRange@CWSManIPFilter@@@Z +??0?$AutoCleanup@V?$AutoDelete@U_SID@@@@PAU_SID@@@@QAE@PAU_SID@@@Z +??0?$AutoCleanup@V?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@PAU_WSMAN_STREAM_ID_SET@@@@QAE@PAU_WSMAN_STREAM_ID_SET@@@Z +??0?$AutoCleanup@V?$AutoDelete@V?$Handle@VISubscription@@@@@@PAV?$Handle@VISubscription@@@@@@QAE@PAV?$Handle@VISubscription@@@@@Z +??0?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@PAV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAE@PAV?$SafeMap_Iterator@VStringKeyCI@@K@@@Z +??0?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@PAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAE@PAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@Z +??0?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@PAV?$SafeSet@PAVCCertMapping@@@@@@QAE@PAV?$SafeSet@PAVCCertMapping@@@@@Z +??0?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@PAV?$SafeSet@PAVCShellUriSettings@@@@@@QAE@PAV?$SafeSet@PAVCShellUriSettings@@@@@Z +??0?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@PAV?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAE@PAV?$SafeSet_Iterator@PAVCListenerOperation@@@@@Z +??0?$AutoCleanup@V?$AutoDelete@V?$SimpleStack@VCListenerOperation@@@@@@PAV?$SimpleStack@VCListenerOperation@@@@@@QAE@PAV?$SimpleStack@VCListenerOperation@@@@@Z +??0?$AutoCleanup@V?$AutoDelete@V?$SimpleStack@VShellHostEntry@@@@@@PAV?$SimpleStack@VShellHostEntry@@@@@@QAE@PAV?$SimpleStack@VShellHostEntry@@@@@Z +??0?$AutoCleanup@V?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@QAE@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@Z +??0?$AutoCleanup@V?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@PAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@QAE@PAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@Z +??0?$AutoCleanup@V?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@PAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@QAE@PAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@Z +??0?$AutoCleanup@V?$AutoDelete@V?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@PAV?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@QAE@PAV?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@Z +??0?$AutoCleanup@V?$AutoDelete@VAdminSid@CSecurity@@@@PAVAdminSid@CSecurity@@@@QAE@PAVAdminSid@CSecurity@@@Z +??0?$AutoCleanup@V?$AutoDelete@VBlockedRecord@@@@PAVBlockedRecord@@@@QAE@PAVBlockedRecord@@@Z +??0?$AutoCleanup@V?$AutoDelete@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@QAE@PAVCBaseConfigCache@@@Z +??0?$AutoCleanup@V?$AutoDelete@VCCertMapping@@@@PAVCCertMapping@@@@QAE@PAVCCertMapping@@@Z +??0?$AutoCleanup@V?$AutoDelete@VCConfigChangeSource@@@@PAVCConfigChangeSource@@@@QAE@PAVCConfigChangeSource@@@Z +??0?$AutoCleanup@V?$AutoDelete@VCListenerSettings@@@@PAVCListenerSettings@@@@QAE@PAVCListenerSettings@@@Z +??0?$AutoCleanup@V?$AutoDelete@VCObserverConfigChangeErrors@@@@PAVCObserverConfigChangeErrors@@@@QAE@PAVCObserverConfigChangeErrors@@@Z +??0?$AutoCleanup@V?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PAVCServiceWatcher@CServiceConfigCache@@@@QAE@PAVCServiceWatcher@CServiceConfigCache@@@Z +??0?$AutoCleanup@V?$AutoDelete@VCShellUriSettings@@@@PAVCShellUriSettings@@@@QAE@PAVCShellUriSettings@@@Z +??0?$AutoCleanup@V?$AutoDelete@VCWSManEPR@@@@PAVCWSManEPR@@@@QAE@PAVCWSManEPR@@@Z +??0?$AutoCleanup@V?$AutoDelete@VCWSManResource@@@@PAVCWSManResource@@@@QAE@PAVCWSManResource@@@Z +??0?$AutoCleanup@V?$AutoDelete@VCertHash@@@@PAVCertHash@@@@QAE@PAVCertHash@@@Z +??0?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PAVConfigUpdate@@@@QAE@PAVConfigUpdate@@@Z +??0?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAE@PAVEnumSinkEx@@@Z +??0?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoDelete@VEventHandler@WSMan@@@@PAVEventHandler@WSMan@@@@QAE@PAVEventHandler@WSMan@@@Z +??0?$AutoCleanup@V?$AutoDelete@VExpiredOperationIdRecord@@@@PAVExpiredOperationIdRecord@@@@QAE@PAVExpiredOperationIdRecord@@@Z +??0?$AutoCleanup@V?$AutoDelete@VGPApiManager@@@@PAVGPApiManager@@@@QAE@PAVGPApiManager@@@Z +??0?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAE@PAVGeneralSinkEx@@@Z +??0?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoDelete@VIChannelObserverFactory@@@@PAVIChannelObserverFactory@@@@QAE@PAVIChannelObserverFactory@@@Z +??0?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@QAE@PAVIQueryDASHSMASHInterface@@@Z +??0?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@QAE@PAVISpecification@@@Z +??0?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoDelete@VInteractiveSid@CSecurity@@@@PAVInteractiveSid@CSecurity@@@@QAE@PAVInteractiveSid@CSecurity@@@Z +??0?$AutoCleanup@V?$AutoDelete@VIpHlpApiDllLoader@@@@PAVIpHlpApiDllLoader@@@@QAE@PAVIpHlpApiDllLoader@@@Z +??0?$AutoCleanup@V?$AutoDelete@VMachineName@@@@PAVMachineName@@@@QAE@PAVMachineName@@@Z +??0?$AutoCleanup@V?$AutoDelete@VNetworkServiceSid@CSecurity@@@@PAVNetworkServiceSid@CSecurity@@@@QAE@PAVNetworkServiceSid@CSecurity@@@Z +??0?$AutoCleanup@V?$AutoDelete@VNtDsApiDllLoader@@@@PAVNtDsApiDllLoader@@@@QAE@PAVNtDsApiDllLoader@@@Z +??0?$AutoCleanup@V?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QAE@PAVOptionValue@SessionOptions@Client@WSMan@@@Z +??0?$AutoCleanup@V?$AutoDelete@VPacketCreator@@@@PAVPacketCreator@@@@QAE@PAVPacketCreator@@@Z +??0?$AutoCleanup@V?$AutoDelete@VPacketParser@@@@PAVPacketParser@@@@QAE@PAVPacketParser@@@Z +??0?$AutoCleanup@V?$AutoDelete@VResources@Locale@@@@PAVResources@Locale@@@@QAE@PAVResources@Locale@@@Z +??0?$AutoCleanup@V?$AutoDelete@VRunAsConfiguration@@@@PAVRunAsConfiguration@@@@QAE@PAVRunAsConfiguration@@@Z +??0?$AutoCleanup@V?$AutoDelete@VSecurityEntry@Catalog@@@@PAVSecurityEntry@Catalog@@@@QAE@PAVSecurityEntry@Catalog@@@Z +??0?$AutoCleanup@V?$AutoDelete@VSendPacketArgs@RobustConnectionBuffer@@@@PAVSendPacketArgs@RobustConnectionBuffer@@@@QAE@PAVSendPacketArgs@RobustConnectionBuffer@@@Z +??0?$AutoCleanup@V?$AutoDelete@VServiceSoapProcessor@@@@PAVServiceSoapProcessor@@@@QAE@PAVServiceSoapProcessor@@@Z +??0?$AutoCleanup@V?$AutoDelete@VShell32DllLoader@@@@PAVShell32DllLoader@@@@QAE@PAVShell32DllLoader@@@Z +??0?$AutoCleanup@V?$AutoDelete@VShlWApiDllLoader@@@@PAVShlWApiDllLoader@@@@QAE@PAVShlWApiDllLoader@@@Z +??0?$AutoCleanup@V?$AutoDelete@VSubscriptionEnumerator@@@@PAVSubscriptionEnumerator@@@@QAE@PAVSubscriptionEnumerator@@@Z +??0?$AutoCleanup@V?$AutoDelete@VSubscriptionManager@@@@PAVSubscriptionManager@@@@QAE@PAVSubscriptionManager@@@Z +??0?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@QAE@PAVTSTRBUFFER@@@Z +??0?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoDelete@VUniqueStringOverflow@@@@PAVUniqueStringOverflow@@@@QAE@PAVUniqueStringOverflow@@@Z +??0?$AutoCleanup@V?$AutoDelete@VUser32DllLoader@@@@PAVUser32DllLoader@@@@QAE@PAVUser32DllLoader@@@Z +??0?$AutoCleanup@V?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@PAVWSMANCONFIGTABLE_IDENTITY@@@@QAE@PAVWSMANCONFIGTABLE_IDENTITY@@@Z +??0?$AutoCleanup@V?$AutoDelete@VWSManMemCryptManager@@@@PAVWSManMemCryptManager@@@@QAE@PAVWSManMemCryptManager@@@Z +??0?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@QAE@PAVWmiEnumContext@@@Z +??0?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PAVXmlReader@@@@QAE@PAVXmlReader@@@Z +??0?$AutoCleanup@V?$AutoDeleteVector@$$CBG@@PBG@@QAE@PBG@Z +??0?$AutoCleanup@V?$AutoDeleteVector@D@@PAD@@QAE@PAD@Z +??0?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@QAE@PAE@Z +??0?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@QAE@XZ +??0?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@QAE@PAG@Z +??0?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@QAE@XZ +??0?$AutoCleanup@V?$AutoDeleteVector@H@@PAH@@QAE@PAH@Z +??0?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@QAE@PAPAG@Z +??0?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@QAE@XZ +??0?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@QAE@PAPBG@Z +??0?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@QAE@XZ +??0?$AutoCleanup@V?$AutoDeleteVector@U_CONFIG_UPDATE@@@@PAU_CONFIG_UPDATE@@@@QAE@PAU_CONFIG_UPDATE@@@Z +??0?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QAE@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@Z +??0?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@QAE@PAU_WINRS_RUN_COMMAND_ARG@@@Z +??0?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoDeleteVector@U_WSMAN_OPTION@@@@PAU_WSMAN_OPTION@@@@QAE@PAU_WSMAN_OPTION@@@Z +??0?$AutoCleanup@V?$AutoDeleteVector@X@@PAX@@QAE@PAX@Z +??0?$AutoCleanup@V?$AutoFree@E@@PAE@@QAE@PAE@Z +??0?$AutoCleanup@V?$AutoLocklessItemRecycle@VPacket@@@@PAVPacket@@@@QAE@PAVPacket@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIAppHostAdminManager@@@@PAUIAppHostAdminManager@@@@QAE@PAUIAppHostAdminManager@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIAppHostChildElementCollection@@@@PAUIAppHostChildElementCollection@@@@QAE@PAUIAppHostChildElementCollection@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIAppHostConfigException@@@@PAUIAppHostConfigException@@@@QAE@PAUIAppHostConfigException@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIAppHostElement@@@@PAUIAppHostElement@@@@QAE@PAUIAppHostElement@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIAppHostElementCollection@@@@PAUIAppHostElementCollection@@@@QAE@PAUIAppHostElementCollection@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIAppHostProperty@@@@PAUIAppHostProperty@@@@QAE@PAUIAppHostProperty@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIAppHostPropertyCollection@@@@PAUIAppHostPropertyCollection@@@@QAE@PAUIAppHostPropertyCollection@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@QAE@PAUIClientSecurity@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@QAE@PAUIEnumWbemClassObject@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@QAE@PAUIErrorInfo@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@QAE@PAUIUnknown@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@QAE@PAUIWbemClassObject@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@QAE@PAUIWbemContext@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@QAE@PAUIWbemLocator@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@QAE@PAUIWbemObjectTextSrc@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@QAE@PAUIWbemPath@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@QAE@PAUIWbemPathKeyList@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@QAE@PAUIWbemQualifierSet@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@QAE@PAUIWbemQuery@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@QAE@PAUIWbemServices@@@Z +??0?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoRelease@VApplication@Client@WSMan@@@@PAVApplication@Client@WSMan@@@@QAE@PAVApplication@Client@WSMan@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@QAE@PAVCBaseConfigCache@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PAVCClientConfigSettings@@@@QAE@PAVCClientConfigSettings@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCCommonConfigSettings@@@@PAVCCommonConfigSettings@@@@QAE@PAVCCommonConfigSettings@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@PAVCConfigCacheMap@CBaseConfigCache@@@@QAE@PAVCConfigCacheMap@CBaseConfigCache@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PAVCConfigManager@@@@QAE@PAVCConfigManager@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCRemoteOperation@@@@PAVCRemoteOperation@@@@QAE@PAVCRemoteOperation@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PAVCRemoteSession@@@@QAE@PAVCRemoteSession@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PAVCRequestContext@@@@QAE@PAVCRequestContext@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCServiceCommonConfigSettings@@@@PAVCServiceCommonConfigSettings@@@@QAE@PAVCServiceCommonConfigSettings@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCServiceConfigCache@@@@PAVCServiceConfigCache@@@@QAE@PAVCServiceConfigCache@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCServiceConfigSettings@@@@PAVCServiceConfigSettings@@@@QAE@PAVCServiceConfigSettings@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@QAE@PAVCWSManEPR@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyCache@@@@PAVCWSManGroupPolicyCache@@@@QAE@PAVCWSManGroupPolicyCache@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyManager@@@@PAVCWSManGroupPolicyManager@@@@QAE@PAVCWSManGroupPolicyManager@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCWSManObject@@@@PAVCWSManObject@@@@QAE@PAVCWSManObject@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PAVCWSManResource@@@@QAE@PAVCWSManResource@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@QAE@PAVCWinRSPluginConfigCache@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigSettings@@@@PAVCWinRSPluginConfigSettings@@@@QAE@PAVCWinRSPluginConfigSettings@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCommand@Client@WSMan@@@@PAVCommand@Client@WSMan@@@@QAE@PAVCommand@Client@WSMan@@@Z +??0?$AutoCleanup@V?$AutoRelease@VConfigNotification@@@@PAVConfigNotification@@@@QAE@PAVConfigNotification@@@Z +??0?$AutoCleanup@V?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@PAVConnectShellOperation@Client@WSMan@@@@QAE@PAVConnectShellOperation@Client@WSMan@@@Z +??0?$AutoCleanup@V?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@PAVCreateShellOperation@Client@WSMan@@@@QAE@PAVCreateShellOperation@Client@WSMan@@@Z +??0?$AutoCleanup@V?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@PAVDeleteShellOperation@Client@WSMan@@@@QAE@PAVDeleteShellOperation@Client@WSMan@@@Z +??0?$AutoCleanup@V?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@PAVDisconnectOperation@Client@WSMan@@@@QAE@PAVDisconnectOperation@Client@WSMan@@@Z +??0?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAE@PAVEnumSinkEx@@@Z +??0?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAE@PAVGeneralSinkEx@@@Z +??0?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoRelease@VIISConfigSettings@@@@PAVIISConfigSettings@@@@QAE@PAVIISConfigSettings@@@Z +??0?$AutoCleanup@V?$AutoRelease@VIPCSoapProcessor@@@@PAVIPCSoapProcessor@@@@QAE@PAVIPCSoapProcessor@@@Z +??0?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@QAE@PAVIRequestContext@@@Z +??0?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@QAE@XZ +??0?$AutoCleanup@V?$AutoRelease@VISubscription@@@@PAVISubscription@@@@QAE@PAVISubscription@@@Z +??0?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PAVInboundRequestDetails@@@@QAE@PAVInboundRequestDetails@@@Z +??0?$AutoCleanup@V?$AutoRelease@VReceiveOperation@Client@WSMan@@@@PAVReceiveOperation@Client@WSMan@@@@QAE@PAVReceiveOperation@Client@WSMan@@@Z +??0?$AutoCleanup@V?$AutoRelease@VReconnectOperation@Client@WSMan@@@@PAVReconnectOperation@Client@WSMan@@@@QAE@PAVReconnectOperation@Client@WSMan@@@Z +??0?$AutoCleanup@V?$AutoRelease@VSendOperation@Client@WSMan@@@@PAVSendOperation@Client@WSMan@@@@QAE@PAVSendOperation@Client@WSMan@@@Z +??0?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@QAE@PAVShell@Client@WSMan@@@Z +??0?$AutoCleanup@V?$AutoRelease@VShellInfo@@@@PAVShellInfo@@@@QAE@PAVShellInfo@@@Z +??0?$AutoCleanup@V?$AutoRelease@VSignalOperation@Client@WSMan@@@@PAVSignalOperation@Client@WSMan@@@@QAE@PAVSignalOperation@Client@WSMan@@@Z +??0?$AutoCleanup@V?$AutoRelease@VUserRecord@@@@PAVUserRecord@@@@QAE@PAVUserRecord@@@Z +??0?$AutoCleanup@V?$AutoRelease@VWSManHttpListener@@@@PAVWSManHttpListener@@@@QAE@PAVWSManHttpListener@@@Z +??0?$AutoCleanup@V?$AutoReleaseEx@VHostMappingTableEntry@@@@PAVHostMappingTableEntry@@@@QAE@PAVHostMappingTableEntry@@@Z +??0?$AutoCleanup@V?$AutoReleaseEx@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@QAE@PAVShell@Client@WSMan@@@Z +??0?$AutoCleanup@VAutoBstr@@PAG@@QAE@PAG@Z +??0?$AutoCleanup@VAutoBstr@@PAG@@QAE@XZ +??0?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@QAE@PAG@Z +??0?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@QAE@XZ +??0?$AutoCleanup@VAutoCertContext@@PBU_CERT_CONTEXT@@@@QAE@PBU_CERT_CONTEXT@@@Z +??0?$AutoCleanup@VAutoCertContext@@PBU_CERT_CONTEXT@@@@QAE@XZ +??0?$AutoCleanup@VAutoChainContext@@PBU_CERT_CHAIN_CONTEXT@@@@QAE@PBU_CERT_CHAIN_CONTEXT@@@Z +??0?$AutoCleanup@VAutoChainContext@@PBU_CERT_CHAIN_CONTEXT@@@@QAE@XZ +??0?$AutoCleanup@VAutoCoTaskMemFree@@PAX@@QAE@PAX@Z +??0?$AutoCleanup@VAutoCoTaskMemFree@@PAX@@QAE@XZ +??0?$AutoCleanup@VAutoFwXmlCloseParser@@PAX@@QAE@PAX@Z +??0?$AutoCleanup@VAutoFwXmlCloseParser@@PAX@@QAE@XZ +??0?$AutoCleanup@VAutoHandle@@PAX@@QAE@PAX@Z +??0?$AutoCleanup@VAutoHandle@@PAX@@QAE@XZ +??0?$AutoCleanup@VAutoImpersonateUser@@PAX@@QAE@PAX@Z +??0?$AutoCleanup@VAutoImpersonateUser@@PAX@@QAE@XZ +??0?$AutoCleanup@VAutoLibrary@@PAUHINSTANCE__@@@@QAE@PAUHINSTANCE__@@@Z +??0?$AutoCleanup@VAutoLibrary@@PAUHINSTANCE__@@@@QAE@XZ +??0?$AutoCleanup@VAutoLocalFree@@PAX@@QAE@PAX@Z +??0?$AutoCleanup@VAutoLocalFree@@PAX@@QAE@XZ +??0?$AutoCleanup@VAutoMIClass@@PAU_MI_Class@@@@QAE@PAU_MI_Class@@@Z +??0?$AutoCleanup@VAutoMIClass@@PAU_MI_Class@@@@QAE@XZ +??0?$AutoCleanup@VAutoMIInstance@@PAU_MI_Instance@@@@QAE@PAU_MI_Instance@@@Z +??0?$AutoCleanup@VAutoMIInstance@@PAU_MI_Instance@@@@QAE@XZ +??0?$AutoCleanup@VAutoObject@@PAUWSMAN_OBJECT@@@@QAE@PAUWSMAN_OBJECT@@@Z +??0?$AutoCleanup@VAutoObject@@PAUWSMAN_OBJECT@@@@QAE@XZ +??0?$AutoCleanup@VAutoRegKey@@PAUHKEY__@@@@QAE@PAUHKEY__@@@Z +??0?$AutoCleanup@VAutoRegKey@@PAUHKEY__@@@@QAE@XZ +??0?$AutoCleanup@VAutoSecurityDescriptor@@PAX@@QAE@PAX@Z +??0?$AutoCleanup@VAutoSecurityDescriptor@@PAX@@QAE@XZ +??0?$AutoCleanup@VAutoWaitHandle@@PAX@@QAE@PAX@Z +??0?$AutoCleanup@VAutoWaitHandle@@PAX@@QAE@XZ +??0?$AutoDelete@D@@QAE@XZ +??0?$AutoDelete@G@@QAE@PAG@Z +??0?$AutoDelete@G@@QAE@XZ +??0?$AutoDelete@UIPRange@CWSManIPFilter@@@@QAE@XZ +??0?$AutoDelete@U_SID@@@@QAE@PAU_SID@@@Z +??0?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@QAE@PAU_WSMAN_STREAM_ID_SET@@@Z +??0?$AutoDelete@V?$Handle@VISubscription@@@@@@QAE@PAV?$Handle@VISubscription@@@@@Z +??0?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAE@XZ +??0?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAE@XZ +??0?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@QAE@PAV?$SafeSet@PAVCCertMapping@@@@@Z +??0?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@QAE@XZ +??0?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@QAE@PAV?$SafeSet@PAVCShellUriSettings@@@@@Z +??0?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@QAE@XZ +??0?$AutoDelete@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAE@XZ +??0?$AutoDelete@V?$SimpleStack@VCListenerOperation@@@@@@QAE@XZ +??0?$AutoDelete@V?$SimpleStack@VShellHostEntry@@@@@@QAE@XZ +??0?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@QAE@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@Z +??0?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@QAE@XZ +??0?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@QAE@XZ +??0?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@QAE@XZ +??0?$AutoDelete@V?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@QAE@XZ +??0?$AutoDelete@VAdminSid@CSecurity@@@@QAE@PAVAdminSid@CSecurity@@@Z +??0?$AutoDelete@VBlockedRecord@@@@QAE@XZ +??0?$AutoDelete@VCBaseConfigCache@@@@QAE@PAVCBaseConfigCache@@@Z +??0?$AutoDelete@VCCertMapping@@@@QAE@PAVCCertMapping@@@Z +??0?$AutoDelete@VCConfigChangeSource@@@@QAE@XZ +??0?$AutoDelete@VCListenerSettings@@@@QAE@PAVCListenerSettings@@@Z +??0?$AutoDelete@VCObserverConfigChangeErrors@@@@QAE@XZ +??0?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@QAE@PAVCServiceWatcher@CServiceConfigCache@@@Z +??0?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@QAE@XZ +??0?$AutoDelete@VCShellUriSettings@@@@QAE@PAVCShellUriSettings@@@Z +??0?$AutoDelete@VCWSManEPR@@@@QAE@PAVCWSManEPR@@@Z +??0?$AutoDelete@VCWSManResource@@@@QAE@PAVCWSManResource@@@Z +??0?$AutoDelete@VCWSManResource@@@@QAE@XZ +??0?$AutoDelete@VCertHash@@@@QAE@PAVCertHash@@@Z +??0?$AutoDelete@VCertHash@@@@QAE@XZ +??0?$AutoDelete@VConfigUpdate@@@@QAE@PAVConfigUpdate@@@Z +??0?$AutoDelete@VConfigUpdate@@@@QAE@XZ +??0?$AutoDelete@VEnumSinkEx@@@@QAE@PAVEnumSinkEx@@@Z +??0?$AutoDelete@VEnumSinkEx@@@@QAE@XZ +??0?$AutoDelete@VEventHandler@WSMan@@@@QAE@PAVEventHandler@WSMan@@@Z +??0?$AutoDelete@VExpiredOperationIdRecord@@@@QAE@PAVExpiredOperationIdRecord@@@Z +??0?$AutoDelete@VGPApiManager@@@@QAE@XZ +??0?$AutoDelete@VGeneralSinkEx@@@@QAE@PAVGeneralSinkEx@@@Z +??0?$AutoDelete@VGeneralSinkEx@@@@QAE@XZ +??0?$AutoDelete@VIChannelObserverFactory@@@@QAE@PAVIChannelObserverFactory@@@Z +??0?$AutoDelete@VIChannelObserverFactory@@@@QAE@XZ +??0?$AutoDelete@VIQueryDASHSMASHInterface@@@@QAE@PAVIQueryDASHSMASHInterface@@@Z +??0?$AutoDelete@VIQueryDASHSMASHInterface@@@@QAE@XZ +??0?$AutoDelete@VISpecification@@@@QAE@PAVISpecification@@@Z +??0?$AutoDelete@VISpecification@@@@QAE@XZ +??0?$AutoDelete@VInteractiveSid@CSecurity@@@@QAE@PAVInteractiveSid@CSecurity@@@Z +??0?$AutoDelete@VIpHlpApiDllLoader@@@@QAE@PAVIpHlpApiDllLoader@@@Z +??0?$AutoDelete@VMachineName@@@@QAE@PAVMachineName@@@Z +??0?$AutoDelete@VNetworkServiceSid@CSecurity@@@@QAE@PAVNetworkServiceSid@CSecurity@@@Z +??0?$AutoDelete@VNtDsApiDllLoader@@@@QAE@PAVNtDsApiDllLoader@@@Z +??0?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@QAE@PAVOptionValue@SessionOptions@Client@WSMan@@@Z +??0?$AutoDelete@VPacketCreator@@@@QAE@PAVPacketCreator@@@Z +??0?$AutoDelete@VPacketCreator@@@@QAE@XZ +??0?$AutoDelete@VPacketParser@@@@QAE@XZ +??0?$AutoDelete@VResources@Locale@@@@QAE@PAVResources@Locale@@@Z +??0?$AutoDelete@VRunAsConfiguration@@@@QAE@PAVRunAsConfiguration@@@Z +??0?$AutoDelete@VSecurityEntry@Catalog@@@@QAE@PAVSecurityEntry@Catalog@@@Z +??0?$AutoDelete@VSendPacketArgs@RobustConnectionBuffer@@@@QAE@PAVSendPacketArgs@RobustConnectionBuffer@@@Z +??0?$AutoDelete@VServiceSoapProcessor@@@@QAE@XZ +??0?$AutoDelete@VShell32DllLoader@@@@QAE@PAVShell32DllLoader@@@Z +??0?$AutoDelete@VShlWApiDllLoader@@@@QAE@PAVShlWApiDllLoader@@@Z +??0?$AutoDelete@VSubscriptionEnumerator@@@@QAE@XZ +??0?$AutoDelete@VSubscriptionManager@@@@QAE@PAVSubscriptionManager@@@Z +??0?$AutoDelete@VTSTRBUFFER@@@@QAE@PAVTSTRBUFFER@@@Z +??0?$AutoDelete@VTSTRBUFFER@@@@QAE@XZ +??0?$AutoDelete@VUniqueStringOverflow@@@@QAE@XZ +??0?$AutoDelete@VUser32DllLoader@@@@QAE@PAVUser32DllLoader@@@Z +??0?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@QAE@PAVWSMANCONFIGTABLE_IDENTITY@@@Z +??0?$AutoDelete@VWSManMemCryptManager@@@@QAE@PAVWSManMemCryptManager@@@Z +??0?$AutoDelete@VWmiEnumContext@@@@QAE@PAVWmiEnumContext@@@Z +??0?$AutoDelete@VWmiEnumContext@@@@QAE@XZ +??0?$AutoDelete@VXmlReader@@@@QAE@PAVXmlReader@@@Z +??0?$AutoDelete@VXmlReader@@@@QAE@XZ +??0?$AutoDeleteVector@$$CBG@@QAE@XZ +??0?$AutoDeleteVector@D@@QAE@PAD@Z +??0?$AutoDeleteVector@D@@QAE@XZ +??0?$AutoDeleteVector@E@@QAE@PAE@Z +??0?$AutoDeleteVector@E@@QAE@XZ +??0?$AutoDeleteVector@G@@QAE@PAG@Z +??0?$AutoDeleteVector@G@@QAE@XZ +??0?$AutoDeleteVector@H@@QAE@PAH@Z +??0?$AutoDeleteVector@PAG@@QAE@PAPAG@Z +??0?$AutoDeleteVector@PAG@@QAE@XZ +??0?$AutoDeleteVector@PBG@@QAE@PAPBG@Z +??0?$AutoDeleteVector@PBG@@QAE@XZ +??0?$AutoDeleteVector@U_CONFIG_UPDATE@@@@QAE@XZ +??0?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QAE@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@Z +??0?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QAE@XZ +??0?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@QAE@PAU_WINRS_RUN_COMMAND_ARG@@@Z +??0?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@QAE@XZ +??0?$AutoDeleteVector@U_WSMAN_OPTION@@@@QAE@PAU_WSMAN_OPTION@@@Z +??0?$AutoDeleteVector@U_WSMAN_OPTION@@@@QAE@XZ +??0?$AutoDeleteVector@X@@QAE@PAX@Z +??0?$AutoDeleteVector@X@@QAE@XZ +??0?$AutoFree@E@@QAE@PAE@Z +??0?$AutoFree@E@@QAE@XZ +??0?$AutoLocklessItemRecycle@VPacket@@@@QAE@PAVPacket@@@Z +??0?$AutoLocklessItemRecycle@VPacket@@@@QAE@XZ +??0?$AutoRelease@UIAppHostAdminManager@@@@QAE@PAUIAppHostAdminManager@@@Z +??0?$AutoRelease@UIAppHostChildElementCollection@@@@QAE@XZ +??0?$AutoRelease@UIAppHostConfigException@@@@QAE@PAUIAppHostConfigException@@@Z +??0?$AutoRelease@UIAppHostElement@@@@QAE@PAUIAppHostElement@@@Z +??0?$AutoRelease@UIAppHostElement@@@@QAE@XZ +??0?$AutoRelease@UIAppHostElementCollection@@@@QAE@XZ +??0?$AutoRelease@UIAppHostProperty@@@@QAE@XZ +??0?$AutoRelease@UIAppHostPropertyCollection@@@@QAE@XZ +??0?$AutoRelease@UIClientSecurity@@@@QAE@PAUIClientSecurity@@@Z +??0?$AutoRelease@UIClientSecurity@@@@QAE@XZ +??0?$AutoRelease@UIEnumWbemClassObject@@@@QAE@PAUIEnumWbemClassObject@@@Z +??0?$AutoRelease@UIEnumWbemClassObject@@@@QAE@XZ +??0?$AutoRelease@UIErrorInfo@@@@QAE@PAUIErrorInfo@@@Z +??0?$AutoRelease@UIErrorInfo@@@@QAE@XZ +??0?$AutoRelease@UIUnknown@@@@QAE@PAUIUnknown@@@Z +??0?$AutoRelease@UIUnknown@@@@QAE@XZ +??0?$AutoRelease@UIWbemClassObject@@@@QAE@PAUIWbemClassObject@@@Z +??0?$AutoRelease@UIWbemClassObject@@@@QAE@XZ +??0?$AutoRelease@UIWbemContext@@@@QAE@PAUIWbemContext@@@Z +??0?$AutoRelease@UIWbemContext@@@@QAE@XZ +??0?$AutoRelease@UIWbemLocator@@@@QAE@PAUIWbemLocator@@@Z +??0?$AutoRelease@UIWbemLocator@@@@QAE@XZ +??0?$AutoRelease@UIWbemObjectTextSrc@@@@QAE@PAUIWbemObjectTextSrc@@@Z +??0?$AutoRelease@UIWbemObjectTextSrc@@@@QAE@XZ +??0?$AutoRelease@UIWbemPath@@@@QAE@PAUIWbemPath@@@Z +??0?$AutoRelease@UIWbemPath@@@@QAE@XZ +??0?$AutoRelease@UIWbemPathKeyList@@@@QAE@PAUIWbemPathKeyList@@@Z +??0?$AutoRelease@UIWbemPathKeyList@@@@QAE@XZ +??0?$AutoRelease@UIWbemQualifierSet@@@@QAE@PAUIWbemQualifierSet@@@Z +??0?$AutoRelease@UIWbemQualifierSet@@@@QAE@XZ +??0?$AutoRelease@UIWbemQuery@@@@QAE@PAUIWbemQuery@@@Z +??0?$AutoRelease@UIWbemQuery@@@@QAE@XZ +??0?$AutoRelease@UIWbemServices@@@@QAE@PAUIWbemServices@@@Z +??0?$AutoRelease@UIWbemServices@@@@QAE@XZ +??0?$AutoRelease@VApplication@Client@WSMan@@@@QAE@XZ +??0?$AutoRelease@VCBaseConfigCache@@@@QAE@PAVCBaseConfigCache@@@Z +??0?$AutoRelease@VCClientConfigSettings@@@@QAE@PAVCClientConfigSettings@@@Z +??0?$AutoRelease@VCClientConfigSettings@@@@QAE@XZ +??0?$AutoRelease@VCCommonConfigSettings@@@@QAE@PAVCCommonConfigSettings@@@Z +??0?$AutoRelease@VCCommonConfigSettings@@@@QAE@XZ +??0?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@QAE@PAVCConfigCacheMap@CBaseConfigCache@@@Z +??0?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@QAE@XZ +??0?$AutoRelease@VCConfigManager@@@@QAE@PAVCConfigManager@@@Z +??0?$AutoRelease@VCConfigManager@@@@QAE@XZ +??0?$AutoRelease@VCRemoteOperation@@@@QAE@PAVCRemoteOperation@@@Z +??0?$AutoRelease@VCRemoteSession@@@@QAE@PAVCRemoteSession@@@Z +??0?$AutoRelease@VCRemoteSession@@@@QAE@XZ +??0?$AutoRelease@VCRequestContext@@@@QAE@PAVCRequestContext@@@Z +??0?$AutoRelease@VCRequestContext@@@@QAE@XZ +??0?$AutoRelease@VCServiceCommonConfigSettings@@@@QAE@PAVCServiceCommonConfigSettings@@@Z +??0?$AutoRelease@VCServiceCommonConfigSettings@@@@QAE@XZ +??0?$AutoRelease@VCServiceConfigCache@@@@QAE@PAVCServiceConfigCache@@@Z +??0?$AutoRelease@VCServiceConfigCache@@@@QAE@XZ +??0?$AutoRelease@VCServiceConfigSettings@@@@QAE@PAVCServiceConfigSettings@@@Z +??0?$AutoRelease@VCServiceConfigSettings@@@@QAE@XZ +??0?$AutoRelease@VCWSManEPR@@@@QAE@PAVCWSManEPR@@@Z +??0?$AutoRelease@VCWSManEPR@@@@QAE@XZ +??0?$AutoRelease@VCWSManGroupPolicyCache@@@@QAE@PAVCWSManGroupPolicyCache@@@Z +??0?$AutoRelease@VCWSManGroupPolicyManager@@@@QAE@PAVCWSManGroupPolicyManager@@@Z +??0?$AutoRelease@VCWSManObject@@@@QAE@PAVCWSManObject@@@Z +??0?$AutoRelease@VCWSManResource@@@@QAE@PAVCWSManResource@@@Z +??0?$AutoRelease@VCWSManResource@@@@QAE@XZ +??0?$AutoRelease@VCWinRSPluginConfigCache@@@@QAE@PAVCWinRSPluginConfigCache@@@Z +??0?$AutoRelease@VCWinRSPluginConfigCache@@@@QAE@XZ +??0?$AutoRelease@VCWinRSPluginConfigSettings@@@@QAE@PAVCWinRSPluginConfigSettings@@@Z +??0?$AutoRelease@VCommand@Client@WSMan@@@@QAE@PAVCommand@Client@WSMan@@@Z +??0?$AutoRelease@VConfigNotification@@@@QAE@PAVConfigNotification@@@Z +??0?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@QAE@PAVConnectShellOperation@Client@WSMan@@@Z +??0?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@QAE@PAVCreateShellOperation@Client@WSMan@@@Z +??0?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@QAE@PAVDeleteShellOperation@Client@WSMan@@@Z +??0?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@QAE@PAVDisconnectOperation@Client@WSMan@@@Z +??0?$AutoRelease@VEnumSinkEx@@@@QAE@PAVEnumSinkEx@@@Z +??0?$AutoRelease@VEnumSinkEx@@@@QAE@XZ +??0?$AutoRelease@VGeneralSinkEx@@@@QAE@PAVGeneralSinkEx@@@Z +??0?$AutoRelease@VGeneralSinkEx@@@@QAE@XZ +??0?$AutoRelease@VIISConfigSettings@@@@QAE@XZ +??0?$AutoRelease@VIPCSoapProcessor@@@@QAE@PAVIPCSoapProcessor@@@Z +??0?$AutoRelease@VIRequestContext@@@@QAE@PAVIRequestContext@@@Z +??0?$AutoRelease@VIRequestContext@@@@QAE@XZ +??0?$AutoRelease@VISubscription@@@@QAE@PAVISubscription@@@Z +??0?$AutoRelease@VInboundRequestDetails@@@@QAE@XZ +??0?$AutoRelease@VReceiveOperation@Client@WSMan@@@@QAE@PAVReceiveOperation@Client@WSMan@@@Z +??0?$AutoRelease@VReconnectOperation@Client@WSMan@@@@QAE@PAVReconnectOperation@Client@WSMan@@@Z +??0?$AutoRelease@VSendOperation@Client@WSMan@@@@QAE@PAVSendOperation@Client@WSMan@@@Z +??0?$AutoRelease@VShell@Client@WSMan@@@@QAE@PAVShell@Client@WSMan@@@Z +??0?$AutoRelease@VShellInfo@@@@QAE@XZ +??0?$AutoRelease@VSignalOperation@Client@WSMan@@@@QAE@PAVSignalOperation@Client@WSMan@@@Z +??0?$AutoRelease@VUserRecord@@@@QAE@XZ +??0?$AutoRelease@VWSManHttpListener@@@@QAE@PAVWSManHttpListener@@@Z +??0?$AutoReleaseEx@VHostMappingTableEntry@@@@QAE@XZ +??0?$AutoReleaseEx@VShell@Client@WSMan@@@@QAE@PAVShell@Client@WSMan@@@Z +??0?$ILoader@VAdminSid@CSecurity@@@@QAE@P8AdminSid@CSecurity@@AE_NAAVIRequestContext@@@Z1@Z +??0?$ILoader@VEventHandler@WSMan@@@@QAE@P8EventHandler@WSMan@@AE_NAAVIRequestContext@@@Z1@Z +??0?$ILoader@VInteractiveSid@CSecurity@@@@QAE@P8InteractiveSid@CSecurity@@AE_NAAVIRequestContext@@@Z1@Z +??0?$ILoader@VIpHlpApiDllLoader@@@@QAE@P8IpHlpApiDllLoader@@AE_NAAVIRequestContext@@@Z1@Z +??0?$ILoader@VMachineName@@@@QAE@P8MachineName@@AE_NAAVIRequestContext@@@Z1@Z +??0?$ILoader@VNetworkServiceSid@CSecurity@@@@QAE@P8NetworkServiceSid@CSecurity@@AE_NAAVIRequestContext@@@Z1@Z +??0?$ILoader@VNtDsApiDllLoader@@@@QAE@P8NtDsApiDllLoader@@AE_NAAVIRequestContext@@@Z1@Z +??0?$ILoader@VResources@Locale@@@@QAE@P8Resources@Locale@@AE_NAAVIRequestContext@@@Z1@Z +??0?$ILoader@VShell32DllLoader@@@@QAE@P8Shell32DllLoader@@AE_NAAVIRequestContext@@@Z1@Z +??0?$ILoader@VShlWApiDllLoader@@@@QAE@P8ShlWApiDllLoader@@AE_NAAVIRequestContext@@@Z1@Z +??0?$ILoader@VSubscriptionManager@@@@QAE@P8SubscriptionManager@@AE_NAAVIRequestContext@@@Z1@Z +??0?$ILoader@VUser32DllLoader@@@@QAE@P8User32DllLoader@@AE_NAAVIRequestContext@@@Z1@Z +??0?$ILoader@VWSManMemCryptManager@@@@QAE@P8WSManMemCryptManager@@AE_NAAVIRequestContext@@@Z1@Z +??0?$Loader@VAdminSid@CSecurity@@$00@@QAE@XZ +??0?$Loader@VEventHandler@WSMan@@$00@@QAE@XZ +??0?$Loader@VInteractiveSid@CSecurity@@$00@@QAE@XZ +??0?$Loader@VIpHlpApiDllLoader@@$00@@QAE@XZ +??0?$Loader@VMachineName@@$00@@QAE@XZ +??0?$Loader@VNetworkServiceSid@CSecurity@@$00@@QAE@XZ +??0?$Loader@VNtDsApiDllLoader@@$00@@QAE@XZ +??0?$Loader@VResources@Locale@@$0A@@@QAE@XZ +??0?$Loader@VShell32DllLoader@@$00@@QAE@XZ +??0?$Loader@VShlWApiDllLoader@@$00@@QAE@XZ +??0?$Loader@VUser32DllLoader@@$00@@QAE@XZ +??0?$Loader@VWSManMemCryptManager@@$00@@QAE@XZ +??0?$LoaderSerializer@VAdminSid@CSecurity@@$00@@QAE@P8AdminSid@CSecurity@@AE_NAAVIRequestContext@@@Z1@Z +??0?$LoaderSerializer@VEventHandler@WSMan@@$00@@QAE@P8EventHandler@WSMan@@AE_NAAVIRequestContext@@@Z1@Z +??0?$LoaderSerializer@VInteractiveSid@CSecurity@@$00@@QAE@P8InteractiveSid@CSecurity@@AE_NAAVIRequestContext@@@Z1@Z +??0?$LoaderSerializer@VIpHlpApiDllLoader@@$00@@QAE@P8IpHlpApiDllLoader@@AE_NAAVIRequestContext@@@Z1@Z +??0?$LoaderSerializer@VMachineName@@$00@@QAE@P8MachineName@@AE_NAAVIRequestContext@@@Z1@Z +??0?$LoaderSerializer@VNetworkServiceSid@CSecurity@@$00@@QAE@P8NetworkServiceSid@CSecurity@@AE_NAAVIRequestContext@@@Z1@Z +??0?$LoaderSerializer@VNtDsApiDllLoader@@$00@@QAE@P8NtDsApiDllLoader@@AE_NAAVIRequestContext@@@Z1@Z +??0?$LoaderSerializer@VResources@Locale@@$0A@@@QAE@P8Resources@Locale@@AE_NAAVIRequestContext@@@Z1@Z +??0?$LoaderSerializer@VShell32DllLoader@@$00@@QAE@P8Shell32DllLoader@@AE_NAAVIRequestContext@@@Z1@Z +??0?$LoaderSerializer@VShlWApiDllLoader@@$00@@QAE@P8ShlWApiDllLoader@@AE_NAAVIRequestContext@@@Z1@Z +??0?$LoaderSerializer@VSubscriptionManager@@$01@@QAE@P8SubscriptionManager@@AE_NAAVIRequestContext@@@Z1@Z +??0?$LoaderSerializer@VUser32DllLoader@@$00@@QAE@P8User32DllLoader@@AE_NAAVIRequestContext@@@Z1@Z +??0?$LoaderSerializer@VWSManMemCryptManager@@$00@@QAE@P8WSManMemCryptManager@@AE_NAAVIRequestContext@@@Z1@Z +??0?$PacketElement@K@PacketParser@@QAE@XZ +??0?$PacketElement@PAU_FWXML_ELEMENT@@@PacketParser@@QAE@XZ +??0?$PacketElement@PBG@PacketParser@@QAE@XZ +??0?$PacketElement@_K@PacketParser@@QAE@XZ +??0?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@QAE@XZ +??0?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAE@XZ +??0?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@QAE@XZ +??0?$SafeMap@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@QAE@XZ +??0?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QAE@XZ +??0?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@QAE@XZ +??0?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QAE@XZ +??0?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QAE@XZ +??0?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAE@XZ +??0?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QAE@XZ +??0?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAE@XZ +??0?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@QAE@XZ +??0?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAE@XZ +??0?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@QAE@XZ +??0?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@QAE@AAV?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@_N@Z +??0?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@QAE@AAV?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@_N@Z +??0?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@QAE@AAV?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@@@_N@Z +??0?$SafeMap_Iterator@PAXUEmpty@@@@QAE@AAV?$SafeMap@PAXUEmpty@@V?$SafeMap_Iterator@PAXUEmpty@@@@@@_N@Z +??0?$SafeMap_Iterator@UPluginKey@@K@@QAE@AAV?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@_N@Z +??0?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@QAE@AAV?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@_N@Z +??0?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QAE@AAV?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@_N@Z +??0?$SafeMap_Iterator@VKey@Locale@@K@@QAE@AAV?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@_N@Z +??0?$SafeMap_Iterator@VStringKeyCI@@K@@QAE@AAV?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@_N@Z +??0?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@QAE@AAV?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@_N@Z +??0?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@QAE@AAV?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@_N@Z +??0?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@QAE@AAV?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@_N@Z +??0?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QAE@AAV?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@_N@Z +??0?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@QAE@AAV?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@_N@Z +??0?$SafeMap_Lock@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@QAE@ABV?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@_N@Z +??0?$SafeMap_Lock@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@QAE@ABV?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@_N@Z +??0?$SafeMap_Lock@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@QAE@ABV?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@_N@Z +??0?$SafeMap_Lock@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAE@ABV?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@_N@Z +??0?$SafeMap_Lock@PAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@@@QAE@ABV?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@@@_N@Z +??0?$SafeMap_Lock@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@QAE@ABV?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@_N@Z +??0?$SafeMap_Lock@PAXUEmpty@@V?$SafeMap_Iterator@PAXUEmpty@@@@@@QAE@ABV?$SafeMap@PAXUEmpty@@V?$SafeMap_Iterator@PAXUEmpty@@@@@@_N@Z +??0?$SafeMap_Lock@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@QAE@ABV?$SafeMap@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@_N@Z +??0?$SafeMap_Lock@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QAE@ABV?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@_N@Z +??0?$SafeMap_Lock@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@QAE@ABV?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@_N@Z +??0?$SafeMap_Lock@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QAE@ABV?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@_N@Z +??0?$SafeMap_Lock@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QAE@ABV?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@_N@Z +??0?$SafeMap_Lock@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAE@ABV?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@_N@Z +??0?$SafeMap_Lock@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@QAE@ABV?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@_N@Z +??0?$SafeMap_Lock@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QAE@ABV?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@_N@Z +??0?$SafeMap_Lock@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAE@ABV?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@_N@Z +??0?$SafeMap_Lock@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@QAE@ABV?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@_N@Z +??0?$SafeMap_Lock@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAE@ABV?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@_N@Z +??0?$SafeMap_Lock@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@QAE@ABV?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@_N@Z +??0?$SafeSet@PAVCCertMapping@@@@QAE@XZ +??0?$SafeSet@PAVCListenerOperation@@@@QAE@XZ +??0?$SafeSet@PAVCShellUriSettings@@@@QAE@XZ +??0?$SafeSet@PAX@@QAE@XZ +??0?$SafeSet_Iterator@PAVCCertMapping@@@@QAE@AAV?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@_N@Z +??0?$SafeSet_Iterator@PAVCCertMapping@@@@QAE@AAV?$SafeSet@PAVCCertMapping@@@@@Z +??0?$SafeSet_Iterator@PAVCListenerOperation@@@@QAE@AAV?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@_N@Z +??0?$SafeSet_Iterator@PAVCListenerOperation@@@@QAE@AAV?$SafeSet@PAVCListenerOperation@@@@@Z +??0?$SafeSet_Iterator@PAVCShellUriSettings@@@@QAE@AAV?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@_N@Z +??0?$SafeSet_Iterator@PAX@@QAE@AAV?$SafeMap@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@_N@Z +??0?$SimpleQueue@T_LARGE_INTEGER@@@@QAE@XZ +??0AutoBstr@@QAE@PAG@Z +??0AutoBstr@@QAE@XZ +??0AutoBstrNoAlloc@@QAE@PAG@Z +??0AutoBstrNoAlloc@@QAE@XZ +??0AutoCertContext@@QAE@PBU_CERT_CONTEXT@@@Z +??0AutoCertContext@@QAE@XZ +??0AutoChainContext@@QAE@PBU_CERT_CHAIN_CONTEXT@@@Z +??0AutoChainContext@@QAE@XZ +??0AutoCoTaskMemFree@@QAE@PAX@Z +??0AutoCoTaskMemFree@@QAE@XZ +??0AutoFwXmlCloseParser@@QAE@PAX@Z +??0AutoFwXmlCloseParser@@QAE@XZ +??0AutoHandle@@QAE@PAX@Z +??0AutoHandle@@QAE@XZ +??0AutoImpersonateUser@@QAE@PAX@Z +??0AutoImpersonateUser@@QAE@XZ +??0AutoLibrary@@QAE@PAUHINSTANCE__@@@Z +??0AutoLibrary@@QAE@XZ +??0AutoLocalFree@@QAE@PAX@Z +??0AutoLocalFree@@QAE@XZ +??0AutoMIClass@@QAE@PAU_MI_Class@@@Z +??0AutoMIClass@@QAE@XZ +??0AutoMIInstance@@QAE@PAU_MI_Instance@@@Z +??0AutoMIInstance@@QAE@XZ +??0AutoObject@@QAE@PAUWSMAN_OBJECT@@@Z +??0AutoObject@@QAE@XZ +??0AutoRegKey@@QAE@PAUHKEY__@@@Z +??0AutoRegKey@@QAE@XZ +??0AutoSecurityDescriptor@@QAE@PAX@Z +??0AutoSecurityDescriptor@@QAE@XZ +??0AutoWaitHandle@@QAE@PAX@Z +??0AutoWaitHandle@@QAE@XZ +??0BufferFormatter@@QAE@PAEK@Z +??0BufferFormatter@@QAE@XZ +??0CBaseConfigCache@@IAE@W4ConfigLocation@CConfigChangeSource@@PAVFastLock@@PAVCConfigCacheMap@0@@Z +??0CClientConfigCache@@AAE@XZ +??0CConfigManager@@AAE@XZ +??0CErrorContext@@QAE@_N@Z +??0CRequestContext@@QAE@PBG@Z +??0CRequestContext@@QAE@XZ +??0CResourceAlias@@QAE@PBG@Z +??0CServiceConfigCache@@AAE@XZ +??0CServiceWatcher@CServiceConfigCache@@AAE@PAV1@PAVIServiceConfigObserver@@@Z +??0CWSManCriticalSection@@QAE@XZ +??0CWSManCriticalSectionWithConditionVar@@QAE@XZ +??0CWSManEPR@@QAE@H@Z +??0CWSManGroupPolicyManager@@AAE@XZ +??0CWSManResource@@QAE@H@Z +??0CWSManResourceNoResourceUri@@QAE@H@Z +??0CWSManSecurityUI@@QAE@XZ +??0CWinRSPluginConfigCache@@AAE@XZ +??0ChildLifeTimeManager@@QAE@ABV0@@Z +??0ChildLifeTimeManager@@QAE@XZ +??0CircularBufferFormatter@@QAE@XZ +??0ConfigRegistry@@IAE@XZ +??0EtwCorrelationHelper@@QAE@ABV0@@Z +??0EventHandler@WSMan@@QAE@XZ +??0ExtendedSemantic@@QAE@K@Z +??0FastLock@@QAE@XZ +??0Fragment@PacketParser@@QAE@XZ +??0IConfigChangeObserver@@QAE@ABV0@@Z +??0IConfigChangeObserver@@QAE@XZ +??0ILifeTimeMgmt@@QAE@ABV0@@Z +??0ILifeTimeMgmt@@QAE@XZ +??0IRequestContext@@IAE@XZ +??0IWSManGroupPolicyObserver@@QAE@ABV0@@Z +??0IWSManGroupPolicyObserver@@QAE@XZ +??0IWSManGroupPolicyPublisher@@QAE@ABV0@@Z +??0IWSManGroupPolicyPublisher@@QAE@XZ +??0Locale@@QAE@ABV0@@Z +??0Locale@@QAE@PAVIRequestContext@@@Z +??0Locale@@QAE@XZ +??0MessageId@PacketParser@@QAE@XZ +??0NotUnderstandSoapHeader@PacketParser@@QAE@XZ +??0OnHTTPInitialize@@QAE@XZ +??0OperationId@PacketParser@@QAE@XZ +??0OwnLock@@QAE@AAVFastLock@@@Z +??0PacketFormatter@@QAE@XZ +??0PacketParser@@QAE@XZ +??0RBUFFER@@QAE@I@Z +??0RBUFFER@@QAE@PAEI@Z +??0ReferenceParameters@PacketParser@@QAE@XZ +??0SBUFFER@@QAE@XZ +??0SessionId@PacketParser@@QAE@XZ +??0ShareLock@@QAE@AAVFastLock@@@Z +??0SoapSemanticConverter@@QAE@XZ +??0TSTRBUFFER@@QAE@XZ +??0UserAuthzRecord@@QAE@$$QAV0@@Z +??0UserAuthzRecord@@QAE@ABV0@@Z +??0UserAuthzRecord@@QAE@XZ +??0UserRecord@@QAE@XZ +??0XmlReader@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@D@@PAD@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@G@@PAG@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@UIPRange@CWSManIPFilter@@@@PAUIPRange@CWSManIPFilter@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@U_SID@@@@PAU_SID@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@PAU_WSMAN_STREAM_ID_SET@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$Handle@VISubscription@@@@@@PAV?$Handle@VISubscription@@@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@PAV?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@PAV?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@PAV?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@PAV?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@PAV?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@PAV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@PAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@PAV?$SafeSet@PAVCCertMapping@@@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@PAV?$SafeSet@PAVCShellUriSettings@@@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@PAV?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVCollector@@@@@@PAV?$SafeSet_Iterator@PAVCollector@@@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVHostOperation@@@@@@PAV?$SafeSet_Iterator@PAVHostOperation@@@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@PAV?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SimpleStack@VCListenerOperation@@@@@@PAV?$SimpleStack@VCListenerOperation@@@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$SimpleStack@VShellHostEntry@@@@@@PAV?$SimpleStack@VShellHostEntry@@@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$queue@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$deque@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$transport_allocator@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@@@@std@@@std@@@@PAV?$queue@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$deque@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$transport_allocator@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@@@@std@@@std@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@PAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$vector@PAVCWSManRequest@@V?$transport_allocator@PAVCWSManRequest@@@@@std@@@@PAV?$vector@PAVCWSManRequest@@V?$transport_allocator@PAVCWSManRequest@@@@@std@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@PAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@PAV?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@V?$vector@PAVWSManHttpSenderConnection@@V?$transport_allocator@PAVWSManHttpSenderConnection@@@@@std@@@@PAV?$vector@PAVWSManHttpSenderConnection@@V?$transport_allocator@PAVWSManHttpSenderConnection@@@@@std@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VAdminSid@CSecurity@@@@PAVAdminSid@CSecurity@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VBlockedRecord@@@@PAVBlockedRecord@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VCCertMapping@@@@PAVCCertMapping@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VCConfigChangeSource@@@@PAVCConfigChangeSource@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VCListenerSettings@@@@PAVCListenerSettings@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VCObserverConfigChangeErrors@@@@PAVCObserverConfigChangeErrors@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PAVCServiceWatcher@CServiceConfigCache@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VCShellUriSettings@@@@PAVCShellUriSettings@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VCWSManEPR@@@@PAVCWSManEPR@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VCWSManResource@@@@PAVCWSManResource@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VCertHash@@@@PAVCertHash@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PAVConfigUpdate@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VEventHandler@WSMan@@@@PAVEventHandler@WSMan@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VExpiredOperationIdRecord@@@@PAVExpiredOperationIdRecord@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VGPApiManager@@@@PAVGPApiManager@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VIChannelObserverFactory@@@@PAVIChannelObserverFactory@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VInteractiveSid@CSecurity@@@@PAVInteractiveSid@CSecurity@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VIpHlpApiDllLoader@@@@PAVIpHlpApiDllLoader@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VMachineName@@@@PAVMachineName@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VMasterReceiveData@CListenerReceive@@@@PAVMasterReceiveData@CListenerReceive@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VNetworkServiceSid@CSecurity@@@@PAVNetworkServiceSid@CSecurity@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VNtDsApiDllLoader@@@@PAVNtDsApiDllLoader@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VPacketCreator@@@@PAVPacketCreator@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VPacketParser@@@@PAVPacketParser@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VResources@Locale@@@@PAVResources@Locale@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VRunAsConfiguration@@@@PAVRunAsConfiguration@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VSecurityEntry@Catalog@@@@PAVSecurityEntry@Catalog@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VSendPacketArgs@RobustConnectionBuffer@@@@PAVSendPacketArgs@RobustConnectionBuffer@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VServiceSoapProcessor@@@@PAVServiceSoapProcessor@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VShell32DllLoader@@@@PAVShell32DllLoader@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VShlWApiDllLoader@@@@PAVShlWApiDllLoader@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VSubscriptionEnumerator@@@@PAVSubscriptionEnumerator@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VSubscriptionManager@@@@PAVSubscriptionManager@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VUniqueStringOverflow@@@@PAVUniqueStringOverflow@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VUser32DllLoader@@@@PAVUser32DllLoader@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@PAVWSMANCONFIGTABLE_IDENTITY@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VWSManMemCryptManager@@@@PAVWSManMemCryptManager@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PAVXmlReader@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDeleteVector@$$CBG@@PBG@@QAE@XZ +??1?$AutoCleanup@V?$AutoDeleteVector@D@@PAD@@QAE@XZ +??1?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@QAE@XZ +??1?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@QAE@XZ +??1?$AutoCleanup@V?$AutoDeleteVector@H@@PAH@@QAE@XZ +??1?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@QAE@XZ +??1?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@QAE@XZ +??1?$AutoCleanup@V?$AutoDeleteVector@U_CONFIG_UPDATE@@@@PAU_CONFIG_UPDATE@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDeleteVector@U_WSMAN_OPTION@@@@PAU_WSMAN_OPTION@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoDeleteVector@X@@PAX@@QAE@XZ +??1?$AutoCleanup@V?$AutoFree@E@@PAE@@QAE@XZ +??1?$AutoCleanup@V?$AutoLocklessItemRecycle@VPacket@@@@PAVPacket@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@UIAppHostAdminManager@@@@PAUIAppHostAdminManager@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@UIAppHostChildElementCollection@@@@PAUIAppHostChildElementCollection@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@UIAppHostConfigException@@@@PAUIAppHostConfigException@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@UIAppHostElement@@@@PAUIAppHostElement@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@UIAppHostElementCollection@@@@PAUIAppHostElementCollection@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@UIAppHostProperty@@@@PAUIAppHostProperty@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@UIAppHostPropertyCollection@@@@PAUIAppHostPropertyCollection@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VApplication@Client@WSMan@@@@PAVApplication@Client@WSMan@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCClientConfigCache@@@@PAVCClientConfigCache@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PAVCClientConfigSettings@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCCommonConfigSettings@@@@PAVCCommonConfigSettings@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@PAVCConfigCacheMap@CBaseConfigCache@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PAVCConfigManager@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCListenerCommand@@@@PAVCListenerCommand@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCListenerMasterOperation@@@@PAVCListenerMasterOperation@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCListenerReceive@@@@PAVCListenerReceive@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCListenerShell@@@@PAVCListenerShell@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCRemoteOperation@@@@PAVCRemoteOperation@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PAVCRemoteSession@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PAVCRequestContext@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCServiceCommonConfigSettings@@@@PAVCServiceCommonConfigSettings@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCServiceConfigCache@@@@PAVCServiceConfigCache@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCServiceConfigSettings@@@@PAVCServiceConfigSettings@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyCache@@@@PAVCWSManGroupPolicyCache@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyManager@@@@PAVCWSManGroupPolicyManager@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCWSManObject@@@@PAVCWSManObject@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PAVCWSManResource@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCWSManSession@@@@PAVCWSManSession@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigSettings@@@@PAVCWinRSPluginConfigSettings@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCommand@Client@WSMan@@@@PAVCommand@Client@WSMan@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VConfigNotification@@@@PAVConfigNotification@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@PAVConnectShellOperation@Client@WSMan@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@PAVCreateShellOperation@Client@WSMan@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@PAVDeleteShellOperation@Client@WSMan@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@PAVDisconnectOperation@Client@WSMan@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VHostMappingTable@@@@PAVHostMappingTable@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VIISConfigSettings@@@@PAVIISConfigSettings@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VIPCSoapProcessor@@@@PAVIPCSoapProcessor@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VISubscription@@@@PAVISubscription@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PAVInboundRequestDetails@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VProxyManager@Client@WSMan@@@@PAVProxyManager@Client@WSMan@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VProxySelection@Client@WSMan@@@@PAVProxySelection@Client@WSMan@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VPushSubscribeOperation@@@@PAVPushSubscribeOperation@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VPushSubscription@@@@PAVPushSubscription@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VReceiveOperation@Client@WSMan@@@@PAVReceiveOperation@Client@WSMan@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VReconnectOperation@Client@WSMan@@@@PAVReconnectOperation@Client@WSMan@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VSendOperation@Client@WSMan@@@@PAVSendOperation@Client@WSMan@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VShellInfo@@@@PAVShellInfo@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VSignalOperation@Client@WSMan@@@@PAVSignalOperation@Client@WSMan@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VUserRecord@@@@PAVUserRecord@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoRelease@VWSManHttpListener@@@@PAVWSManHttpListener@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoReleaseEx@VHostMappingTableEntry@@@@PAVHostMappingTableEntry@@@@QAE@XZ +??1?$AutoCleanup@V?$AutoReleaseEx@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@QAE@XZ +??1?$AutoCleanup@VAutoBstr@@PAG@@QAE@XZ +??1?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@QAE@XZ +??1?$AutoCleanup@VAutoCertContext@@PBU_CERT_CONTEXT@@@@QAE@XZ +??1?$AutoCleanup@VAutoChainContext@@PBU_CERT_CHAIN_CONTEXT@@@@QAE@XZ +??1?$AutoCleanup@VAutoCoTaskMemFree@@PAX@@QAE@XZ +??1?$AutoCleanup@VAutoFwXmlCloseParser@@PAX@@QAE@XZ +??1?$AutoCleanup@VAutoHandle@@PAX@@QAE@XZ +??1?$AutoCleanup@VAutoImpersonateUser@@PAX@@QAE@XZ +??1?$AutoCleanup@VAutoLibrary@@PAUHINSTANCE__@@@@QAE@XZ +??1?$AutoCleanup@VAutoLocalFree@@PAX@@QAE@XZ +??1?$AutoCleanup@VAutoMIClass@@PAU_MI_Class@@@@QAE@XZ +??1?$AutoCleanup@VAutoMIInstance@@PAU_MI_Instance@@@@QAE@XZ +??1?$AutoCleanup@VAutoObject@@PAUWSMAN_OBJECT@@@@QAE@XZ +??1?$AutoCleanup@VAutoRegKey@@PAUHKEY__@@@@QAE@XZ +??1?$AutoCleanup@VAutoSecurityDescriptor@@PAX@@QAE@XZ +??1?$AutoCleanup@VAutoWaitHandle@@PAX@@QAE@XZ +??1?$AutoDelete@D@@QAE@XZ +??1?$AutoDelete@G@@QAE@XZ +??1?$AutoDelete@UIPRange@CWSManIPFilter@@@@QAE@XZ +??1?$AutoDelete@U_SID@@@@QAE@XZ +??1?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@QAE@XZ +??1?$AutoDelete@V?$Handle@VISubscription@@@@@@QAE@XZ +??1?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@QAE@XZ +??1?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@QAE@XZ +??1?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@QAE@XZ +??1?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@QAE@XZ +??1?$AutoDelete@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@QAE@XZ +??1?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAE@XZ +??1?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAE@XZ +??1?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@QAE@XZ +??1?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@QAE@XZ +??1?$AutoDelete@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAE@XZ +??1?$AutoDelete@V?$SafeSet_Iterator@PAVCollector@@@@@@QAE@XZ +??1?$AutoDelete@V?$SafeSet_Iterator@PAVHostOperation@@@@@@QAE@XZ +??1?$AutoDelete@V?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@QAE@XZ +??1?$AutoDelete@V?$SimpleStack@VCListenerOperation@@@@@@QAE@XZ +??1?$AutoDelete@V?$SimpleStack@VShellHostEntry@@@@@@QAE@XZ +??1?$AutoDelete@V?$queue@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$deque@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$transport_allocator@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@@@@std@@@std@@@@QAE@XZ +??1?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@QAE@XZ +??1?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@QAE@XZ +??1?$AutoDelete@V?$vector@PAVCWSManRequest@@V?$transport_allocator@PAVCWSManRequest@@@@@std@@@@QAE@XZ +??1?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@QAE@XZ +??1?$AutoDelete@V?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@QAE@XZ +??1?$AutoDelete@V?$vector@PAVWSManHttpSenderConnection@@V?$transport_allocator@PAVWSManHttpSenderConnection@@@@@std@@@@QAE@XZ +??1?$AutoDelete@VAdminSid@CSecurity@@@@QAE@XZ +??1?$AutoDelete@VBlockedRecord@@@@QAE@XZ +??1?$AutoDelete@VCBaseConfigCache@@@@QAE@XZ +??1?$AutoDelete@VCCertMapping@@@@QAE@XZ +??1?$AutoDelete@VCConfigChangeSource@@@@QAE@XZ +??1?$AutoDelete@VCListenerSettings@@@@QAE@XZ +??1?$AutoDelete@VCObserverConfigChangeErrors@@@@QAE@XZ +??1?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@QAE@XZ +??1?$AutoDelete@VCShellUriSettings@@@@QAE@XZ +??1?$AutoDelete@VCWSManEPR@@@@QAE@XZ +??1?$AutoDelete@VCWSManResource@@@@QAE@XZ +??1?$AutoDelete@VCertHash@@@@QAE@XZ +??1?$AutoDelete@VConfigUpdate@@@@QAE@XZ +??1?$AutoDelete@VEnumSinkEx@@@@QAE@XZ +??1?$AutoDelete@VEventHandler@WSMan@@@@QAE@XZ +??1?$AutoDelete@VExpiredOperationIdRecord@@@@QAE@XZ +??1?$AutoDelete@VGPApiManager@@@@QAE@XZ +??1?$AutoDelete@VGeneralSinkEx@@@@QAE@XZ +??1?$AutoDelete@VIChannelObserverFactory@@@@QAE@XZ +??1?$AutoDelete@VIQueryDASHSMASHInterface@@@@QAE@XZ +??1?$AutoDelete@VISpecification@@@@QAE@XZ +??1?$AutoDelete@VInteractiveSid@CSecurity@@@@QAE@XZ +??1?$AutoDelete@VIpHlpApiDllLoader@@@@QAE@XZ +??1?$AutoDelete@VMachineName@@@@QAE@XZ +??1?$AutoDelete@VMasterReceiveData@CListenerReceive@@@@QAE@XZ +??1?$AutoDelete@VNetworkServiceSid@CSecurity@@@@QAE@XZ +??1?$AutoDelete@VNtDsApiDllLoader@@@@QAE@XZ +??1?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@QAE@XZ +??1?$AutoDelete@VPacketCreator@@@@QAE@XZ +??1?$AutoDelete@VPacketParser@@@@QAE@XZ +??1?$AutoDelete@VResources@Locale@@@@QAE@XZ +??1?$AutoDelete@VRunAsConfiguration@@@@QAE@XZ +??1?$AutoDelete@VSecurityEntry@Catalog@@@@QAE@XZ +??1?$AutoDelete@VSendPacketArgs@RobustConnectionBuffer@@@@QAE@XZ +??1?$AutoDelete@VServiceSoapProcessor@@@@QAE@XZ +??1?$AutoDelete@VShell32DllLoader@@@@QAE@XZ +??1?$AutoDelete@VShlWApiDllLoader@@@@QAE@XZ +??1?$AutoDelete@VSubscriptionEnumerator@@@@QAE@XZ +??1?$AutoDelete@VSubscriptionManager@@@@QAE@XZ +??1?$AutoDelete@VTSTRBUFFER@@@@QAE@XZ +??1?$AutoDelete@VUniqueStringOverflow@@@@QAE@XZ +??1?$AutoDelete@VUser32DllLoader@@@@QAE@XZ +??1?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@QAE@XZ +??1?$AutoDelete@VWSManMemCryptManager@@@@QAE@XZ +??1?$AutoDelete@VWmiEnumContext@@@@QAE@XZ +??1?$AutoDelete@VXmlReader@@@@QAE@XZ +??1?$AutoDeleteVector@$$CBG@@QAE@XZ +??1?$AutoDeleteVector@D@@QAE@XZ +??1?$AutoDeleteVector@E@@QAE@XZ +??1?$AutoDeleteVector@G@@QAE@XZ +??1?$AutoDeleteVector@H@@QAE@XZ +??1?$AutoDeleteVector@PAG@@QAE@XZ +??1?$AutoDeleteVector@PBG@@QAE@XZ +??1?$AutoDeleteVector@U_CONFIG_UPDATE@@@@QAE@XZ +??1?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QAE@XZ +??1?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@QAE@XZ +??1?$AutoDeleteVector@U_WSMAN_OPTION@@@@QAE@XZ +??1?$AutoDeleteVector@X@@QAE@XZ +??1?$AutoFree@E@@QAE@XZ +??1?$AutoLocklessItemRecycle@VPacket@@@@QAE@XZ +??1?$AutoRelease@UIAppHostAdminManager@@@@QAE@XZ +??1?$AutoRelease@UIAppHostChildElementCollection@@@@QAE@XZ +??1?$AutoRelease@UIAppHostConfigException@@@@QAE@XZ +??1?$AutoRelease@UIAppHostElement@@@@QAE@XZ +??1?$AutoRelease@UIAppHostElementCollection@@@@QAE@XZ +??1?$AutoRelease@UIAppHostProperty@@@@QAE@XZ +??1?$AutoRelease@UIAppHostPropertyCollection@@@@QAE@XZ +??1?$AutoRelease@UIClientSecurity@@@@QAE@XZ +??1?$AutoRelease@UIEnumWbemClassObject@@@@QAE@XZ +??1?$AutoRelease@UIErrorInfo@@@@QAE@XZ +??1?$AutoRelease@UIUnknown@@@@QAE@XZ +??1?$AutoRelease@UIWbemClassObject@@@@QAE@XZ +??1?$AutoRelease@UIWbemContext@@@@QAE@XZ +??1?$AutoRelease@UIWbemLocator@@@@QAE@XZ +??1?$AutoRelease@UIWbemObjectTextSrc@@@@QAE@XZ +??1?$AutoRelease@UIWbemPath@@@@QAE@XZ +??1?$AutoRelease@UIWbemPathKeyList@@@@QAE@XZ +??1?$AutoRelease@UIWbemQualifierSet@@@@QAE@XZ +??1?$AutoRelease@UIWbemQuery@@@@QAE@XZ +??1?$AutoRelease@UIWbemServices@@@@QAE@XZ +??1?$AutoRelease@VApplication@Client@WSMan@@@@QAE@XZ +??1?$AutoRelease@VCBaseConfigCache@@@@QAE@XZ +??1?$AutoRelease@VCClientConfigCache@@@@QAE@XZ +??1?$AutoRelease@VCClientConfigSettings@@@@QAE@XZ +??1?$AutoRelease@VCCommonConfigSettings@@@@QAE@XZ +??1?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@QAE@XZ +??1?$AutoRelease@VCConfigManager@@@@QAE@XZ +??1?$AutoRelease@VCListenerCommand@@@@QAE@XZ +??1?$AutoRelease@VCListenerMasterOperation@@@@QAE@XZ +??1?$AutoRelease@VCListenerReceive@@@@QAE@XZ +??1?$AutoRelease@VCListenerShell@@@@QAE@XZ +??1?$AutoRelease@VCRemoteOperation@@@@QAE@XZ +??1?$AutoRelease@VCRemoteSession@@@@QAE@XZ +??1?$AutoRelease@VCRequestContext@@@@QAE@XZ +??1?$AutoRelease@VCServiceCommonConfigSettings@@@@QAE@XZ +??1?$AutoRelease@VCServiceConfigCache@@@@QAE@XZ +??1?$AutoRelease@VCServiceConfigSettings@@@@QAE@XZ +??1?$AutoRelease@VCWSManEPR@@@@QAE@XZ +??1?$AutoRelease@VCWSManGroupPolicyCache@@@@QAE@XZ +??1?$AutoRelease@VCWSManGroupPolicyManager@@@@QAE@XZ +??1?$AutoRelease@VCWSManObject@@@@QAE@XZ +??1?$AutoRelease@VCWSManResource@@@@QAE@XZ +??1?$AutoRelease@VCWSManSession@@@@QAE@XZ +??1?$AutoRelease@VCWinRSPluginConfigCache@@@@QAE@XZ +??1?$AutoRelease@VCWinRSPluginConfigSettings@@@@QAE@XZ +??1?$AutoRelease@VCommand@Client@WSMan@@@@QAE@XZ +??1?$AutoRelease@VConfigNotification@@@@QAE@XZ +??1?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@QAE@XZ +??1?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@QAE@XZ +??1?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@QAE@XZ +??1?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@QAE@XZ +??1?$AutoRelease@VEnumSinkEx@@@@QAE@XZ +??1?$AutoRelease@VGeneralSinkEx@@@@QAE@XZ +??1?$AutoRelease@VHostMappingTable@@@@QAE@XZ +??1?$AutoRelease@VIISConfigSettings@@@@QAE@XZ +??1?$AutoRelease@VIPCSoapProcessor@@@@QAE@XZ +??1?$AutoRelease@VIRequestContext@@@@QAE@XZ +??1?$AutoRelease@VISubscription@@@@QAE@XZ +??1?$AutoRelease@VInboundRequestDetails@@@@QAE@XZ +??1?$AutoRelease@VProxyManager@Client@WSMan@@@@QAE@XZ +??1?$AutoRelease@VProxySelection@Client@WSMan@@@@QAE@XZ +??1?$AutoRelease@VPushSubscribeOperation@@@@QAE@XZ +??1?$AutoRelease@VPushSubscription@@@@QAE@XZ +??1?$AutoRelease@VReceiveOperation@Client@WSMan@@@@QAE@XZ +??1?$AutoRelease@VReconnectOperation@Client@WSMan@@@@QAE@XZ +??1?$AutoRelease@VSendOperation@Client@WSMan@@@@QAE@XZ +??1?$AutoRelease@VShell@Client@WSMan@@@@QAE@XZ +??1?$AutoRelease@VShellInfo@@@@QAE@XZ +??1?$AutoRelease@VSignalOperation@Client@WSMan@@@@QAE@XZ +??1?$AutoRelease@VUserRecord@@@@QAE@XZ +??1?$AutoRelease@VWSManHttpListener@@@@QAE@XZ +??1?$AutoReleaseEx@VHostMappingTableEntry@@@@QAE@XZ +??1?$AutoReleaseEx@VShell@Client@WSMan@@@@QAE@XZ +??1?$ILoader@VAdminSid@CSecurity@@@@QAE@XZ +??1?$ILoader@VEventHandler@WSMan@@@@QAE@XZ +??1?$ILoader@VInteractiveSid@CSecurity@@@@QAE@XZ +??1?$ILoader@VIpHlpApiDllLoader@@@@QAE@XZ +??1?$ILoader@VMachineName@@@@QAE@XZ +??1?$ILoader@VNetworkServiceSid@CSecurity@@@@QAE@XZ +??1?$ILoader@VNtDsApiDllLoader@@@@QAE@XZ +??1?$ILoader@VResources@Locale@@@@QAE@XZ +??1?$ILoader@VShell32DllLoader@@@@QAE@XZ +??1?$ILoader@VShlWApiDllLoader@@@@QAE@XZ +??1?$ILoader@VSubscriptionManager@@@@QAE@XZ +??1?$ILoader@VUser32DllLoader@@@@QAE@XZ +??1?$ILoader@VWSManMemCryptManager@@@@QAE@XZ +??1?$Loader@VAdminSid@CSecurity@@$00@@QAE@XZ +??1?$Loader@VEventHandler@WSMan@@$00@@QAE@XZ +??1?$Loader@VInteractiveSid@CSecurity@@$00@@QAE@XZ +??1?$Loader@VIpHlpApiDllLoader@@$00@@QAE@XZ +??1?$Loader@VMachineName@@$00@@QAE@XZ +??1?$Loader@VNetworkServiceSid@CSecurity@@$00@@QAE@XZ +??1?$Loader@VNtDsApiDllLoader@@$00@@QAE@XZ +??1?$Loader@VResources@Locale@@$0A@@@QAE@XZ +??1?$Loader@VShell32DllLoader@@$00@@QAE@XZ +??1?$Loader@VShlWApiDllLoader@@$00@@QAE@XZ +??1?$Loader@VSubscriptionManager@@$01@@QAE@XZ +??1?$Loader@VUser32DllLoader@@$00@@QAE@XZ +??1?$Loader@VWSManMemCryptManager@@$00@@QAE@XZ +??1?$LoaderSerializer@VAdminSid@CSecurity@@$00@@QAE@XZ +??1?$LoaderSerializer@VEventHandler@WSMan@@$00@@QAE@XZ +??1?$LoaderSerializer@VInteractiveSid@CSecurity@@$00@@QAE@XZ +??1?$LoaderSerializer@VIpHlpApiDllLoader@@$00@@QAE@XZ +??1?$LoaderSerializer@VMachineName@@$00@@QAE@XZ +??1?$LoaderSerializer@VNetworkServiceSid@CSecurity@@$00@@QAE@XZ +??1?$LoaderSerializer@VNtDsApiDllLoader@@$00@@QAE@XZ +??1?$LoaderSerializer@VResources@Locale@@$0A@@@QAE@XZ +??1?$LoaderSerializer@VShell32DllLoader@@$00@@QAE@XZ +??1?$LoaderSerializer@VShlWApiDllLoader@@$00@@QAE@XZ +??1?$LoaderSerializer@VSubscriptionManager@@$01@@QAE@XZ +??1?$LoaderSerializer@VUser32DllLoader@@$00@@QAE@XZ +??1?$LoaderSerializer@VWSManMemCryptManager@@$00@@QAE@XZ +??1?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@QAE@XZ +??1?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAE@XZ +??1?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@QAE@XZ +??1?$SafeMap@PAVCollector@@UEmpty@@V?$SafeSet_Iterator@PAVCollector@@@@@@QAE@XZ +??1?$SafeMap@PAVHostOperation@@UEmpty@@V?$SafeSet_Iterator@PAVHostOperation@@@@@@QAE@XZ +??1?$SafeMap@PAVIOperation@@UEmpty@@V?$SafeSet_Iterator@PAVIOperation@@@@@@QAE@XZ +??1?$SafeMap@PAVListenerSourceSubscription@@UEmpty@@V?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@QAE@XZ +??1?$SafeMap@PAVPushSubscription@@UEmpty@@V?$SafeSet_Iterator@PAVPushSubscription@@@@@@QAE@XZ +??1?$SafeMap@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@QAE@XZ +??1?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QAE@XZ +??1?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@QAE@XZ +??1?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QAE@XZ +??1?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QAE@XZ +??1?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAE@XZ +??1?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@QAE@XZ +??1?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QAE@XZ +??1?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAE@XZ +??1?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@QAE@XZ +??1?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAE@XZ +??1?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@QAE@XZ +??1?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@QAE@XZ +??1?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@QAE@XZ +??1?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@QAE@XZ +??1?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@QAE@XZ +??1?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@QAE@XZ +??1?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@QAE@XZ +??1?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@QAE@XZ +??1?$SafeMap_Iterator@PAVCollector@@UEmpty@@@@QAE@XZ +??1?$SafeMap_Iterator@PAVHostOperation@@UEmpty@@@@QAE@XZ +??1?$SafeMap_Iterator@PAVIOperation@@UEmpty@@@@QAE@XZ +??1?$SafeMap_Iterator@PAVListenerSourceSubscription@@UEmpty@@@@QAE@XZ +??1?$SafeMap_Iterator@PAVPushSubscription@@UEmpty@@@@QAE@XZ +??1?$SafeMap_Iterator@PAXUEmpty@@@@QAE@XZ +??1?$SafeMap_Iterator@UPluginKey@@K@@QAE@XZ +??1?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@QAE@XZ +??1?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QAE@XZ +??1?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@QAE@XZ +??1?$SafeMap_Iterator@VKey@Locale@@K@@QAE@XZ +??1?$SafeMap_Iterator@VStringKeyCI@@K@@QAE@XZ +??1?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@QAE@XZ +??1?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@QAE@XZ +??1?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@QAE@XZ +??1?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@QAE@XZ +??1?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QAE@XZ +??1?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@QAE@XZ +??1?$SafeMap_Lock@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@QAE@XZ +??1?$SafeMap_Lock@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@QAE@XZ +??1?$SafeMap_Lock@PAVCListenerConnect@@PAV1@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@QAE@XZ +??1?$SafeMap_Lock@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@QAE@XZ +??1?$SafeMap_Lock@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAE@XZ +??1?$SafeMap_Lock@PAVCListenerReceive@@PAV1@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@QAE@XZ +??1?$SafeMap_Lock@PAVCListenerSend@@PAV1@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@QAE@XZ +??1?$SafeMap_Lock@PAVCListenerSignal@@PAV1@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@QAE@XZ +??1?$SafeMap_Lock@PAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@@@QAE@XZ +??1?$SafeMap_Lock@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@QAE@XZ +??1?$SafeMap_Lock@PAVCollector@@UEmpty@@V?$SafeMap_Iterator@PAVCollector@@UEmpty@@@@@@QAE@XZ +??1?$SafeMap_Lock@PAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PAVHostOperation@@UEmpty@@@@@@QAE@XZ +??1?$SafeMap_Lock@PAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PAVIOperation@@UEmpty@@@@@@QAE@XZ +??1?$SafeMap_Lock@PAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVListenerSourceSubscription@@UEmpty@@@@@@QAE@XZ +??1?$SafeMap_Lock@PAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVPushSubscription@@UEmpty@@@@@@QAE@XZ +??1?$SafeMap_Lock@PAXUEmpty@@V?$SafeMap_Iterator@PAXUEmpty@@@@@@QAE@XZ +??1?$SafeMap_Lock@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@QAE@XZ +??1?$SafeMap_Lock@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QAE@XZ +??1?$SafeMap_Lock@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@QAE@XZ +??1?$SafeMap_Lock@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QAE@XZ +??1?$SafeMap_Lock@VGuidKey@@PAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@QAE@XZ +??1?$SafeMap_Lock@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QAE@XZ +??1?$SafeMap_Lock@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAE@XZ +??1?$SafeMap_Lock@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@QAE@XZ +??1?$SafeMap_Lock@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@QAE@XZ +??1?$SafeMap_Lock@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QAE@XZ +??1?$SafeMap_Lock@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAE@XZ +??1?$SafeMap_Lock@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@QAE@XZ +??1?$SafeMap_Lock@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAE@XZ +??1?$SafeMap_Lock@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@QAE@XZ +??1?$SafeSet@PAVCCertMapping@@@@QAE@XZ +??1?$SafeSet@PAVCListenerOperation@@@@QAE@XZ +??1?$SafeSet@PAVCShellUriSettings@@@@QAE@XZ +??1?$SafeSet@PAVCollector@@@@QAE@XZ +??1?$SafeSet@PAVHostOperation@@@@QAE@XZ +??1?$SafeSet@PAVIOperation@@@@QAE@XZ +??1?$SafeSet@PAVListenerSourceSubscription@@@@QAE@XZ +??1?$SafeSet@PAVPushSubscription@@@@QAE@XZ +??1?$SafeSet@PAX@@QAE@XZ +??1?$SafeSet@VStringKeyCI@@@@QAE@XZ +??1?$SafeSet_Iterator@PAVCCertMapping@@@@QAE@XZ +??1?$SafeSet_Iterator@PAVCListenerOperation@@@@QAE@XZ +??1?$SafeSet_Iterator@PAVCShellUriSettings@@@@QAE@XZ +??1?$SafeSet_Iterator@PAVCollector@@@@QAE@XZ +??1?$SafeSet_Iterator@PAVHostOperation@@@@QAE@XZ +??1?$SafeSet_Iterator@PAVIOperation@@@@QAE@XZ +??1?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@QAE@XZ +??1?$SafeSet_Iterator@PAVPushSubscription@@@@QAE@XZ +??1?$SafeSet_Iterator@PAX@@QAE@XZ +??1?$SafeSet_Iterator@VStringKeyCI@@@@QAE@XZ +??1?$SimpleQueue@T_LARGE_INTEGER@@@@QAE@XZ +??1AutoBstr@@QAE@XZ +??1AutoBstrNoAlloc@@QAE@XZ +??1AutoCertContext@@QAE@XZ +??1AutoChainContext@@QAE@XZ +??1AutoCoTaskMemFree@@QAE@XZ +??1AutoFwXmlCloseParser@@QAE@XZ +??1AutoHandle@@QAE@XZ +??1AutoImpersonateUser@@QAE@XZ +??1AutoLibrary@@QAE@XZ +??1AutoLocalFree@@QAE@XZ +??1AutoMIClass@@QAE@XZ +??1AutoMIInstance@@QAE@XZ +??1AutoObject@@QAE@XZ +??1AutoRegKey@@QAE@XZ +??1AutoSecurityDescriptor@@QAE@XZ +??1AutoWaitHandle@@QAE@XZ +??1BufferFormatter@@UAE@XZ +??1CBaseConfigCache@@UAE@XZ +??1CClientConfigCache@@UAE@XZ +??1CCommonConfigSettings@@UAE@XZ +??1CConfigManager@@UAE@XZ +??1CErrorContext@@UAE@XZ +??1CRequestContext@@UAE@XZ +??1CResourceAlias@@QAE@XZ +??1CServiceConfigCache@@EAE@XZ +??1CServiceWatcher@CServiceConfigCache@@QAE@XZ +??1CWSManCriticalSection@@QAE@XZ +??1CWSManCriticalSectionWithConditionVar@@QAE@XZ +??1CWSManEPR@@UAE@XZ +??1CWSManGroupPolicyManager@@EAE@XZ +??1CWSManResource@@UAE@XZ +??1CWSManResourceNoResourceUri@@UAE@XZ +??1CWSManSecurityUI@@QAE@XZ +??1CWinRSPluginConfigCache@@EAE@XZ +??1ChildLifeTimeManager@@QAE@XZ +??1CircularBufferFormatter@@UAE@XZ +??1ConfigRegistry@@IAE@XZ +??1EtwCorrelationHelper@@UAE@XZ +??1EventHandler@WSMan@@QAE@XZ +??1IConfigChangeObserver@@UAE@XZ +??1ILifeTimeMgmt@@UAE@XZ +??1IRequestContext@@UAE@XZ +??1IWSManGroupPolicyObserver@@UAE@XZ +??1IWSManGroupPolicyPublisher@@UAE@XZ +??1MessageId@PacketParser@@QAE@XZ +??1OnHTTPInitialize@@QAE@XZ +??1OperationId@PacketParser@@QAE@XZ +??1OwnLock@@QAE@XZ +??1PacketParser@@QAE@XZ +??1RBUFFER@@QAE@XZ +??1ReferenceParameters@PacketParser@@QAE@XZ +??1SBUFFER@@QAE@XZ +??1ShareLock@@QAE@XZ +??1SoapSemanticConverter@@QAE@XZ +??1TSTRBUFFER@@QAE@XZ +??1UserRecord@@QAE@XZ +??1XmlReader@@QAE@XZ +??4?$AutoCleanup@V?$AutoDelete@D@@PAD@@QAEAAV?$AutoDelete@D@@PAD@Z +??4?$AutoCleanup@V?$AutoDelete@G@@PAG@@QAEAAV?$AutoDelete@G@@PAG@Z +??4?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@PAV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAEAAV?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@PAV?$SafeMap_Iterator@VStringKeyCI@@K@@@Z +??4?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@PAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAEAAV?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@PAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@Z +??4?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@PAV?$SafeSet@PAVCCertMapping@@@@@@QAEAAV?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@PAV?$SafeSet@PAVCCertMapping@@@@@Z +??4?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@PAV?$SafeSet@PAVCShellUriSettings@@@@@@QAEAAV?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@PAV?$SafeSet@PAVCShellUriSettings@@@@@Z +??4?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@PAV?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAEAAV?$AutoDelete@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@PAV?$SafeSet_Iterator@PAVCListenerOperation@@@@@Z +??4?$AutoCleanup@V?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@QAEAAV?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@Z +??4?$AutoCleanup@V?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@PAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@QAEAAV?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@PAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@Z +??4?$AutoCleanup@V?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@PAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@QAEAAV?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@PAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@Z +??4?$AutoCleanup@V?$AutoDelete@V?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@PAV?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@QAEAAV?$AutoDelete@V?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@PAV?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@Z +??4?$AutoCleanup@V?$AutoDelete@VBlockedRecord@@@@PAVBlockedRecord@@@@QAEAAV?$AutoDelete@VBlockedRecord@@@@PAVBlockedRecord@@@Z +??4?$AutoCleanup@V?$AutoDelete@VCConfigChangeSource@@@@PAVCConfigChangeSource@@@@QAEAAV?$AutoDelete@VCConfigChangeSource@@@@PAVCConfigChangeSource@@@Z +??4?$AutoCleanup@V?$AutoDelete@VCObserverConfigChangeErrors@@@@PAVCObserverConfigChangeErrors@@@@QAEAAV?$AutoDelete@VCObserverConfigChangeErrors@@@@PAVCObserverConfigChangeErrors@@@Z +??4?$AutoCleanup@V?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PAVCServiceWatcher@CServiceConfigCache@@@@QAEAAV?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PAVCServiceWatcher@CServiceConfigCache@@@Z +??4?$AutoCleanup@V?$AutoDelete@VCWSManResource@@@@PAVCWSManResource@@@@QAEAAV?$AutoDelete@VCWSManResource@@@@PAVCWSManResource@@@Z +??4?$AutoCleanup@V?$AutoDelete@VCertHash@@@@PAVCertHash@@@@QAEAAV?$AutoDelete@VCertHash@@@@PAVCertHash@@@Z +??4?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PAVConfigUpdate@@@@QAEAAV?$AutoDelete@VConfigUpdate@@@@PAVConfigUpdate@@@Z +??4?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAEAAV?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@Z +??4?$AutoCleanup@V?$AutoDelete@VGPApiManager@@@@PAVGPApiManager@@@@QAEAAV?$AutoDelete@VGPApiManager@@@@PAVGPApiManager@@@Z +??4?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAEAAV?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@Z +??4?$AutoCleanup@V?$AutoDelete@VIChannelObserverFactory@@@@PAVIChannelObserverFactory@@@@QAEAAV?$AutoDelete@VIChannelObserverFactory@@@@PAVIChannelObserverFactory@@@Z +??4?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@QAEAAV?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@Z +??4?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@QAEAAV?$AutoDelete@VISpecification@@@@PAVISpecification@@@Z +??4?$AutoCleanup@V?$AutoDelete@VPacketCreator@@@@PAVPacketCreator@@@@QAEAAV?$AutoDelete@VPacketCreator@@@@PAVPacketCreator@@@Z +??4?$AutoCleanup@V?$AutoDelete@VPacketParser@@@@PAVPacketParser@@@@QAEAAV?$AutoDelete@VPacketParser@@@@PAVPacketParser@@@Z +??4?$AutoCleanup@V?$AutoDelete@VRunAsConfiguration@@@@PAVRunAsConfiguration@@@@QAEAAV?$AutoDelete@VRunAsConfiguration@@@@PAVRunAsConfiguration@@@Z +??4?$AutoCleanup@V?$AutoDelete@VSecurityEntry@Catalog@@@@PAVSecurityEntry@Catalog@@@@QAEAAV?$AutoDelete@VSecurityEntry@Catalog@@@@PAVSecurityEntry@Catalog@@@Z +??4?$AutoCleanup@V?$AutoDelete@VServiceSoapProcessor@@@@PAVServiceSoapProcessor@@@@QAEAAV?$AutoDelete@VServiceSoapProcessor@@@@PAVServiceSoapProcessor@@@Z +??4?$AutoCleanup@V?$AutoDelete@VSubscriptionEnumerator@@@@PAVSubscriptionEnumerator@@@@QAEAAV?$AutoDelete@VSubscriptionEnumerator@@@@PAVSubscriptionEnumerator@@@Z +??4?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@QAEAAV?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@Z +??4?$AutoCleanup@V?$AutoDelete@VUniqueStringOverflow@@@@PAVUniqueStringOverflow@@@@QAEAAV?$AutoDelete@VUniqueStringOverflow@@@@PAVUniqueStringOverflow@@@Z +??4?$AutoCleanup@V?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@PAVWSMANCONFIGTABLE_IDENTITY@@@@QAEAAV?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@PAVWSMANCONFIGTABLE_IDENTITY@@@Z +??4?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@QAEAAV?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@Z +??4?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PAVXmlReader@@@@QAEAAV?$AutoDelete@VXmlReader@@@@PAVXmlReader@@@Z +??4?$AutoCleanup@V?$AutoDeleteVector@$$CBG@@PBG@@QAEAAV?$AutoDeleteVector@$$CBG@@PBG@Z +??4?$AutoCleanup@V?$AutoDeleteVector@D@@PAD@@QAEAAV?$AutoDeleteVector@D@@PAD@Z +??4?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@QAEAAV?$AutoDeleteVector@E@@PAE@Z +??4?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@QAEAAV?$AutoDeleteVector@G@@PAG@Z +??4?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@QAEAAV?$AutoDeleteVector@PAG@@PAPAG@Z +??4?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@QAEAAV?$AutoDeleteVector@PBG@@PAPBG@Z +??4?$AutoCleanup@V?$AutoDeleteVector@U_CONFIG_UPDATE@@@@PAU_CONFIG_UPDATE@@@@QAEAAV?$AutoDeleteVector@U_CONFIG_UPDATE@@@@PAU_CONFIG_UPDATE@@@Z +??4?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QAEAAV?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@Z +??4?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@QAEAAV?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@Z +??4?$AutoCleanup@V?$AutoDeleteVector@U_WSMAN_OPTION@@@@PAU_WSMAN_OPTION@@@@QAEAAV?$AutoDeleteVector@U_WSMAN_OPTION@@@@PAU_WSMAN_OPTION@@@Z +??4?$AutoCleanup@V?$AutoDeleteVector@X@@PAX@@QAEAAV?$AutoDeleteVector@X@@PAX@Z +??4?$AutoCleanup@V?$AutoFree@E@@PAE@@QAEAAV?$AutoFree@E@@PAE@Z +??4?$AutoCleanup@V?$AutoLocklessItemRecycle@VPacket@@@@PAVPacket@@@@QAEAAV?$AutoLocklessItemRecycle@VPacket@@@@PAVPacket@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@QAEAAV?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@QAEAAV?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@QAEAAV?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@QAEAAV?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@QAEAAV?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@QAEAAV?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@QAEAAV?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@QAEAAV?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@QAEAAV?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@QAEAAV?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@QAEAAV?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@QAEAAV?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@Z +??4?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@QAEAAV?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@Z +??4?$AutoCleanup@V?$AutoRelease@VApplication@Client@WSMan@@@@PAVApplication@Client@WSMan@@@@QAEAAV?$AutoRelease@VApplication@Client@WSMan@@@@PAVApplication@Client@WSMan@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@QAEAAV?$AutoRelease@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PAVCClientConfigSettings@@@@QAEAAV?$AutoRelease@VCClientConfigSettings@@@@PAVCClientConfigSettings@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCCommonConfigSettings@@@@PAVCCommonConfigSettings@@@@QAEAAV?$AutoRelease@VCCommonConfigSettings@@@@PAVCCommonConfigSettings@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@PAVCConfigCacheMap@CBaseConfigCache@@@@QAEAAV?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@PAVCConfigCacheMap@CBaseConfigCache@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PAVCConfigManager@@@@QAEAAV?$AutoRelease@VCConfigManager@@@@PAVCConfigManager@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCRemoteOperation@@@@PAVCRemoteOperation@@@@QAEAAV?$AutoRelease@VCRemoteOperation@@@@PAVCRemoteOperation@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PAVCRemoteSession@@@@QAEAAV?$AutoRelease@VCRemoteSession@@@@PAVCRemoteSession@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PAVCRequestContext@@@@QAEAAV?$AutoRelease@VCRequestContext@@@@PAVCRequestContext@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCServiceCommonConfigSettings@@@@PAVCServiceCommonConfigSettings@@@@QAEAAV?$AutoRelease@VCServiceCommonConfigSettings@@@@PAVCServiceCommonConfigSettings@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCServiceConfigCache@@@@PAVCServiceConfigCache@@@@QAEAAV?$AutoRelease@VCServiceConfigCache@@@@PAVCServiceConfigCache@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCServiceConfigSettings@@@@PAVCServiceConfigSettings@@@@QAEAAV?$AutoRelease@VCServiceConfigSettings@@@@PAVCServiceConfigSettings@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@QAEAAV?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyManager@@@@PAVCWSManGroupPolicyManager@@@@QAEAAV?$AutoRelease@VCWSManGroupPolicyManager@@@@PAVCWSManGroupPolicyManager@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PAVCWSManResource@@@@QAEAAV?$AutoRelease@VCWSManResource@@@@PAVCWSManResource@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@QAEAAV?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@Z +??4?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigSettings@@@@PAVCWinRSPluginConfigSettings@@@@QAEAAV?$AutoRelease@VCWinRSPluginConfigSettings@@@@PAVCWinRSPluginConfigSettings@@@Z +??4?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAEAAV?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@Z +??4?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAEAAV?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@Z +??4?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@QAEAAV?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@Z +??4?$AutoCleanup@V?$AutoRelease@VISubscription@@@@PAVISubscription@@@@QAEAAV?$AutoRelease@VISubscription@@@@PAVISubscription@@@Z +??4?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PAVInboundRequestDetails@@@@QAEAAV?$AutoRelease@VInboundRequestDetails@@@@PAVInboundRequestDetails@@@Z +??4?$AutoCleanup@V?$AutoRelease@VUserRecord@@@@PAVUserRecord@@@@QAEAAV?$AutoRelease@VUserRecord@@@@PAVUserRecord@@@Z +??4?$AutoCleanup@V?$AutoRelease@VWSManHttpListener@@@@PAVWSManHttpListener@@@@QAEAAV?$AutoRelease@VWSManHttpListener@@@@PAVWSManHttpListener@@@Z +??4?$AutoCleanup@V?$AutoReleaseEx@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@QAEAAV?$AutoReleaseEx@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@Z +??4?$AutoCleanup@VAutoBstr@@PAG@@QAEAAVAutoBstr@@PAG@Z +??4?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@QAEAAVAutoBstrNoAlloc@@PAG@Z +??4?$AutoCleanup@VAutoCertContext@@PBU_CERT_CONTEXT@@@@QAEAAVAutoCertContext@@PBU_CERT_CONTEXT@@@Z +??4?$AutoCleanup@VAutoChainContext@@PBU_CERT_CHAIN_CONTEXT@@@@QAEAAVAutoChainContext@@PBU_CERT_CHAIN_CONTEXT@@@Z +??4?$AutoCleanup@VAutoCoTaskMemFree@@PAX@@QAEAAVAutoCoTaskMemFree@@PAX@Z +??4?$AutoCleanup@VAutoFwXmlCloseParser@@PAX@@QAEAAVAutoFwXmlCloseParser@@PAX@Z +??4?$AutoCleanup@VAutoHandle@@PAX@@QAEAAVAutoHandle@@PAX@Z +??4?$AutoCleanup@VAutoImpersonateUser@@PAX@@QAEAAVAutoImpersonateUser@@PAX@Z +??4?$AutoCleanup@VAutoLibrary@@PAUHINSTANCE__@@@@QAEAAVAutoLibrary@@PAUHINSTANCE__@@@Z +??4?$AutoCleanup@VAutoLocalFree@@PAX@@QAEAAVAutoLocalFree@@PAX@Z +??4?$AutoCleanup@VAutoMIClass@@PAU_MI_Class@@@@QAEAAVAutoMIClass@@PAU_MI_Class@@@Z +??4?$AutoCleanup@VAutoMIInstance@@PAU_MI_Instance@@@@QAEAAVAutoMIInstance@@PAU_MI_Instance@@@Z +??4?$AutoCleanup@VAutoObject@@PAUWSMAN_OBJECT@@@@QAEAAVAutoObject@@PAUWSMAN_OBJECT@@@Z +??4?$AutoCleanup@VAutoRegKey@@PAUHKEY__@@@@QAEAAVAutoRegKey@@PAUHKEY__@@@Z +??4?$AutoCleanup@VAutoSecurityDescriptor@@PAX@@QAEAAVAutoSecurityDescriptor@@PAX@Z +??4?$AutoCleanup@VAutoWaitHandle@@PAX@@QAEAAVAutoWaitHandle@@PAX@Z +??4?$AutoDelete@D@@QAEAAV0@PAD@Z +??4?$AutoDelete@G@@QAEAAV0@PAG@Z +??4?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAEAAV0@PAV?$SafeMap_Iterator@VStringKeyCI@@K@@@Z +??4?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAEAAV0@PAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@Z +??4?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@QAEAAV0@PAV?$SafeSet@PAVCCertMapping@@@@@Z +??4?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@QAEAAV0@PAV?$SafeSet@PAVCShellUriSettings@@@@@Z +??4?$AutoDelete@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAEAAV0@PAV?$SafeSet_Iterator@PAVCListenerOperation@@@@@Z +??4?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@QAEAAV0@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@Z +??4?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@QAEAAV0@PAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@Z +??4?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@QAEAAV0@PAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@Z +??4?$AutoDelete@V?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@QAEAAV0@PAV?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@Z +??4?$AutoDelete@VBlockedRecord@@@@QAEAAV0@PAVBlockedRecord@@@Z +??4?$AutoDelete@VCConfigChangeSource@@@@QAEAAV0@PAVCConfigChangeSource@@@Z +??4?$AutoDelete@VCObserverConfigChangeErrors@@@@QAEAAV0@PAVCObserverConfigChangeErrors@@@Z +??4?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@QAEAAV0@PAVCServiceWatcher@CServiceConfigCache@@@Z +??4?$AutoDelete@VCWSManResource@@@@QAEAAV0@PAVCWSManResource@@@Z +??4?$AutoDelete@VCertHash@@@@QAEAAV0@PAVCertHash@@@Z +??4?$AutoDelete@VConfigUpdate@@@@QAEAAV0@PAVConfigUpdate@@@Z +??4?$AutoDelete@VEnumSinkEx@@@@QAEAAV0@PAVEnumSinkEx@@@Z +??4?$AutoDelete@VGPApiManager@@@@QAEAAV0@PAVGPApiManager@@@Z +??4?$AutoDelete@VGeneralSinkEx@@@@QAEAAV0@PAVGeneralSinkEx@@@Z +??4?$AutoDelete@VIChannelObserverFactory@@@@QAEAAV0@PAVIChannelObserverFactory@@@Z +??4?$AutoDelete@VIQueryDASHSMASHInterface@@@@QAEAAV0@PAVIQueryDASHSMASHInterface@@@Z +??4?$AutoDelete@VISpecification@@@@QAEAAV0@PAVISpecification@@@Z +??4?$AutoDelete@VPacketCreator@@@@QAEAAV0@PAVPacketCreator@@@Z +??4?$AutoDelete@VPacketParser@@@@QAEAAV0@PAVPacketParser@@@Z +??4?$AutoDelete@VRunAsConfiguration@@@@QAEAAV0@PAVRunAsConfiguration@@@Z +??4?$AutoDelete@VSecurityEntry@Catalog@@@@QAEAAV0@PAVSecurityEntry@Catalog@@@Z +??4?$AutoDelete@VServiceSoapProcessor@@@@QAEAAV0@PAVServiceSoapProcessor@@@Z +??4?$AutoDelete@VSubscriptionEnumerator@@@@QAEAAV0@PAVSubscriptionEnumerator@@@Z +??4?$AutoDelete@VTSTRBUFFER@@@@QAEAAV0@PAVTSTRBUFFER@@@Z +??4?$AutoDelete@VUniqueStringOverflow@@@@QAEAAV0@PAVUniqueStringOverflow@@@Z +??4?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@QAEAAV0@PAVWSMANCONFIGTABLE_IDENTITY@@@Z +??4?$AutoDelete@VWmiEnumContext@@@@QAEAAV0@PAVWmiEnumContext@@@Z +??4?$AutoDelete@VXmlReader@@@@QAEAAV0@PAVXmlReader@@@Z +??4?$AutoDeleteVector@$$CBG@@QAEAAV0@PBG@Z +??4?$AutoDeleteVector@D@@QAEAAV0@PAD@Z +??4?$AutoDeleteVector@E@@QAEAAV0@PAE@Z +??4?$AutoDeleteVector@G@@QAEAAV0@PAG@Z +??4?$AutoDeleteVector@PAG@@QAEAAV0@PAPAG@Z +??4?$AutoDeleteVector@PBG@@QAEAAV0@PAPBG@Z +??4?$AutoDeleteVector@U_CONFIG_UPDATE@@@@QAEAAV0@PAU_CONFIG_UPDATE@@@Z +??4?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QAEAAV0@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@Z +??4?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@QAEAAV0@PAU_WINRS_RUN_COMMAND_ARG@@@Z +??4?$AutoDeleteVector@U_WSMAN_OPTION@@@@QAEAAV0@PAU_WSMAN_OPTION@@@Z +??4?$AutoDeleteVector@X@@QAEAAV0@PAX@Z +??4?$AutoFree@E@@QAEAAV0@PAE@Z +??4?$AutoLocklessItemRecycle@VPacket@@@@QAEAAV0@PAVPacket@@@Z +??4?$AutoRelease@UIClientSecurity@@@@QAEAAV0@PAUIClientSecurity@@@Z +??4?$AutoRelease@UIEnumWbemClassObject@@@@QAEAAV0@PAUIEnumWbemClassObject@@@Z +??4?$AutoRelease@UIErrorInfo@@@@QAEAAV0@PAUIErrorInfo@@@Z +??4?$AutoRelease@UIUnknown@@@@QAEAAV0@PAUIUnknown@@@Z +??4?$AutoRelease@UIWbemClassObject@@@@QAEAAV0@PAUIWbemClassObject@@@Z +??4?$AutoRelease@UIWbemContext@@@@QAEAAV0@PAUIWbemContext@@@Z +??4?$AutoRelease@UIWbemLocator@@@@QAEAAV0@PAUIWbemLocator@@@Z +??4?$AutoRelease@UIWbemObjectTextSrc@@@@QAEAAV0@PAUIWbemObjectTextSrc@@@Z +??4?$AutoRelease@UIWbemPath@@@@QAEAAV0@PAUIWbemPath@@@Z +??4?$AutoRelease@UIWbemPathKeyList@@@@QAEAAV0@PAUIWbemPathKeyList@@@Z +??4?$AutoRelease@UIWbemQualifierSet@@@@QAEAAV0@PAUIWbemQualifierSet@@@Z +??4?$AutoRelease@UIWbemQuery@@@@QAEAAV0@PAUIWbemQuery@@@Z +??4?$AutoRelease@UIWbemServices@@@@QAEAAV0@PAUIWbemServices@@@Z +??4?$AutoRelease@VApplication@Client@WSMan@@@@QAEAAV0@PAVApplication@Client@WSMan@@@Z +??4?$AutoRelease@VCBaseConfigCache@@@@QAEAAV0@PAVCBaseConfigCache@@@Z +??4?$AutoRelease@VCClientConfigSettings@@@@QAEAAV0@PAVCClientConfigSettings@@@Z +??4?$AutoRelease@VCCommonConfigSettings@@@@QAEAAV0@PAVCCommonConfigSettings@@@Z +??4?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@QAEAAV0@PAVCConfigCacheMap@CBaseConfigCache@@@Z +??4?$AutoRelease@VCConfigManager@@@@QAEAAV0@PAVCConfigManager@@@Z +??4?$AutoRelease@VCRemoteOperation@@@@QAEAAV0@PAVCRemoteOperation@@@Z +??4?$AutoRelease@VCRemoteSession@@@@QAEAAV0@PAVCRemoteSession@@@Z +??4?$AutoRelease@VCRequestContext@@@@QAEAAV0@PAVCRequestContext@@@Z +??4?$AutoRelease@VCServiceCommonConfigSettings@@@@QAEAAV0@PAVCServiceCommonConfigSettings@@@Z +??4?$AutoRelease@VCServiceConfigCache@@@@QAEAAV0@PAVCServiceConfigCache@@@Z +??4?$AutoRelease@VCServiceConfigSettings@@@@QAEAAV0@PAVCServiceConfigSettings@@@Z +??4?$AutoRelease@VCWSManEPR@@@@QAEAAV0@PAVCWSManEPR@@@Z +??4?$AutoRelease@VCWSManGroupPolicyManager@@@@QAEAAV0@PAVCWSManGroupPolicyManager@@@Z +??4?$AutoRelease@VCWSManResource@@@@QAEAAV0@PAVCWSManResource@@@Z +??4?$AutoRelease@VCWinRSPluginConfigCache@@@@QAEAAV0@PAVCWinRSPluginConfigCache@@@Z +??4?$AutoRelease@VCWinRSPluginConfigSettings@@@@QAEAAV0@PAVCWinRSPluginConfigSettings@@@Z +??4?$AutoRelease@VEnumSinkEx@@@@QAEAAV0@PAVEnumSinkEx@@@Z +??4?$AutoRelease@VGeneralSinkEx@@@@QAEAAV0@PAVGeneralSinkEx@@@Z +??4?$AutoRelease@VIRequestContext@@@@QAEAAV0@PAVIRequestContext@@@Z +??4?$AutoRelease@VISubscription@@@@QAEAAV0@PAVISubscription@@@Z +??4?$AutoRelease@VInboundRequestDetails@@@@QAEAAV0@PAVInboundRequestDetails@@@Z +??4?$AutoRelease@VUserRecord@@@@QAEAAV0@PAVUserRecord@@@Z +??4?$AutoRelease@VWSManHttpListener@@@@QAEAAV0@PAVWSManHttpListener@@@Z +??4?$AutoReleaseEx@VShell@Client@WSMan@@@@QAEAAV0@PAVShell@Client@WSMan@@@Z +??4?$PacketElement@K@PacketParser@@QAEAAV01@$$QAV01@@Z +??4?$PacketElement@K@PacketParser@@QAEAAV01@ABV01@@Z +??4?$PacketElement@PAU_FWXML_ELEMENT@@@PacketParser@@QAEAAV01@$$QAV01@@Z +??4?$PacketElement@PAU_FWXML_ELEMENT@@@PacketParser@@QAEAAV01@ABV01@@Z +??4?$PacketElement@PBG@PacketParser@@QAEAAV01@$$QAV01@@Z +??4?$PacketElement@PBG@PacketParser@@QAEAAV01@ABV01@@Z +??4?$PacketElement@_K@PacketParser@@QAEAAV01@$$QAV01@@Z +??4?$PacketElement@_K@PacketParser@@QAEAAV01@ABV01@@Z +??4?$SimpleQueue@T_LARGE_INTEGER@@@@QAEAAV0@ABV0@@Z +??4AutoBstr@@QAEAAV0@PAG@Z +??4AutoBstrNoAlloc@@QAEAAV0@PAG@Z +??4AutoCertContext@@QAEAAV0@PBU_CERT_CONTEXT@@@Z +??4AutoChainContext@@QAEAAV0@PBU_CERT_CHAIN_CONTEXT@@@Z +??4AutoCoTaskMemFree@@QAEAAV0@PAX@Z +??4AutoFwXmlCloseParser@@QAEAAV0@PAX@Z +??4AutoHandle@@QAEAAV0@PAX@Z +??4AutoImpersonateUser@@QAEAAV0@PAX@Z +??4AutoLibrary@@QAEAAV0@PAUHINSTANCE__@@@Z +??4AutoLocalFree@@QAEAAV0@PAX@Z +??4AutoMIClass@@QAEAAV0@PAU_MI_Class@@@Z +??4AutoMIInstance@@QAEAAV0@PAU_MI_Instance@@@Z +??4AutoObject@@QAEAAV0@PAUWSMAN_OBJECT@@@Z +??4AutoRegKey@@QAEAAV0@PAUHKEY__@@@Z +??4AutoSecurityDescriptor@@QAEAAV0@PAX@Z +??4AutoWaitHandle@@QAEAAV0@PAX@Z +??4ChildLifeTimeManager@@QAEAAV0@ABV0@@Z +??4ConfigRegistry@@QAEAAV0@ABV0@@Z +??4EtwCorrelationHelper@@QAEAAV0@ABV0@@Z +??4EventLog@@QAEAAV0@$$QAV0@@Z +??4EventLog@@QAEAAV0@ABV0@@Z +??4ExtendedSemantic@@QAEAAV0@$$QAV0@@Z +??4ExtendedSemantic@@QAEAAV0@ABV0@@Z +??4FastLock@@QAEAAV0@$$QAV0@@Z +??4FastLock@@QAEAAV0@ABV0@@Z +??4Fragment@PacketParser@@QAEAAV01@$$QAV01@@Z +??4Fragment@PacketParser@@QAEAAV01@ABV01@@Z +??4IConfigChangeObserver@@QAEAAV0@ABV0@@Z +??4ILifeTimeMgmt@@QAEAAV0@ABV0@@Z +??4IWSManGroupPolicyObserver@@QAEAAV0@ABV0@@Z +??4IWSManGroupPolicyPublisher@@QAEAAV0@ABV0@@Z +??4Locale@@QAEAAV0@ABV0@@Z +??4NotUnderstandSoapHeader@PacketParser@@QAEAAV01@$$QAV01@@Z +??4NotUnderstandSoapHeader@PacketParser@@QAEAAV01@ABV01@@Z +??4PacketFormatter@@QAEAAV0@$$QAV0@@Z +??4PacketFormatter@@QAEAAV0@ABV0@@Z +??4RBUFFER@@QAEAAV0@ABV0@@Z +??4SBUFFER@@QAEAAV0@$$QAV0@@Z +??4SBUFFER@@QAEAAV0@ABV0@@Z +??4SessionId@PacketParser@@QAEAAV01@$$QAV01@@Z +??4SessionId@PacketParser@@QAEAAV01@ABV01@@Z +??4SoapSemanticConverter@@QAEAAV0@ABV0@@Z +??4UserAuthzRecord@@QAEAAV0@$$QAV0@@Z +??4UserAuthzRecord@@QAEAAV0@ABV0@@Z +??6BufferFormatter@@UAEAAV0@AAVBufferFormatterDataFormatDWORD@@@Z +??6BufferFormatter@@UAEAAV0@AAVBufferFormatterDataFormatULONGLONG@@@Z +??6BufferFormatter@@UAEAAV0@AAVBufferFormatterDataPCWSTR@@@Z +??6BufferFormatter@@UAEAAV0@AAVBufferFormatterDataPUCHAR@@@Z +??6BufferFormatter@@UAEAAV0@AAVBufferFormatterDataXmlEscape@@@Z +??6BufferFormatter@@UAEAAV0@K@Z +??6BufferFormatter@@UAEAAV0@PAU_FWXML_ELEMENT@@@Z +??7?$AutoCleanup@V?$AutoDelete@G@@PAG@@QBE_NXZ +??7?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@PAV?$SafeSet@PAVCCertMapping@@@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@PAV?$SafeSet@PAVCShellUriSettings@@@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PAVConfigUpdate@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoDelete@VRunAsConfiguration@@@@PAVRunAsConfiguration@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoDelete@VSubscriptionEnumerator@@@@PAVSubscriptionEnumerator@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoDeleteVector@D@@PAD@@QBE_NXZ +??7?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@QBE_NXZ +??7?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@QBE_NXZ +??7?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@QBE_NXZ +??7?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@QBE_NXZ +??7?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoDeleteVector@X@@PAX@@QBE_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PAVCClientConfigSettings@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PAVCConfigManager@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PAVCRemoteSession@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PAVCRequestContext@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PAVCWSManResource@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@QBE_NXZ +??7?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PAVInboundRequestDetails@@@@QBE_NXZ +??7?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@QBE_NXZ +??7?$AutoCleanup@VAutoCertContext@@PBU_CERT_CONTEXT@@@@QBE_NXZ +??7?$AutoCleanup@VAutoHandle@@PAX@@QBE_NXZ +??7?$AutoCleanup@VAutoImpersonateUser@@PAX@@QBE_NXZ +??7?$AutoCleanup@VAutoMIClass@@PAU_MI_Class@@@@QBE_NXZ +??7?$AutoCleanup@VAutoRegKey@@PAUHKEY__@@@@QBE_NXZ +??7?$AutoCleanup@VAutoSecurityDescriptor@@PAX@@QBE_NXZ +??A?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QAEPAKABUPluginKey@@@Z +??A?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@QAEPAPAVBlockedRecord@@ABUUserKey@@@Z +??A?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QAEPAVCertThumbprintMappedSet@CServiceConfigSettings@@ABVCertThumbprintKey@@@Z +??A?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAEPAKABVStringKeyCI@@@Z +??A?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QAEPAUUSER_CONTEXT_INFO@WSManHttpListener@@ABVStringKeyCI@@@Z +??A?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAEPAPAVExpiredOperationIdRecord@@ABVStringKeyStore@@@Z +??A?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@QAEPAPAVServerFullDuplexChannel@@ABVStringKeyStore@@@Z +??A?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAEPAPAVOptionValue@SessionOptions@Client@WSMan@@ABW4WSManSessionOption@@@Z +??A?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@QAEPAPAVSendPacketArgs@RobustConnectionBuffer@@AB_K@Z +??A?$SafeSet@PAX@@QBEPBQAXABQAX@Z +??B?$AutoCleanup@V?$AutoDelete@D@@PAD@@QAEPADXZ +??B?$AutoCleanup@V?$AutoDelete@G@@PAG@@QAEPAGXZ +??B?$AutoCleanup@V?$AutoDelete@G@@PAG@@QBEQAGXZ +??B?$AutoCleanup@V?$AutoDelete@UIPRange@CWSManIPFilter@@@@PAUIPRange@CWSManIPFilter@@@@QAEPAUIPRange@CWSManIPFilter@@XZ +??B?$AutoCleanup@V?$AutoDelete@U_SID@@@@PAU_SID@@@@QAEPAU_SID@@XZ +??B?$AutoCleanup@V?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@PAU_WSMAN_STREAM_ID_SET@@@@QAEPAU_WSMAN_STREAM_ID_SET@@XZ +??B?$AutoCleanup@V?$AutoDelete@V?$Handle@VISubscription@@@@@@PAV?$Handle@VISubscription@@@@@@QAEPAV?$Handle@VISubscription@@@@XZ +??B?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@PAV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAEPAV?$SafeMap_Iterator@VStringKeyCI@@K@@XZ +??B?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@PAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAEPAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@XZ +??B?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@PAV?$SafeSet@PAVCCertMapping@@@@@@QAEPAV?$SafeSet@PAVCCertMapping@@@@XZ +??B?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@PAV?$SafeSet@PAVCShellUriSettings@@@@@@QAEPAV?$SafeSet@PAVCShellUriSettings@@@@XZ +??B?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@PAV?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAEPAV?$SafeSet_Iterator@PAVCListenerOperation@@@@XZ +??B?$AutoCleanup@V?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@QAEPAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@XZ +??B?$AutoCleanup@V?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@PAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@QAEPAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@XZ +??B?$AutoCleanup@V?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@PAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@QAEPAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@XZ +??B?$AutoCleanup@V?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@PAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@QBEQAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@XZ +??B?$AutoCleanup@V?$AutoDelete@V?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@PAV?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@QAEPAV?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@XZ +??B?$AutoCleanup@V?$AutoDelete@VAdminSid@CSecurity@@@@PAVAdminSid@CSecurity@@@@QAEPAVAdminSid@CSecurity@@XZ +??B?$AutoCleanup@V?$AutoDelete@VBlockedRecord@@@@PAVBlockedRecord@@@@QAEPAVBlockedRecord@@XZ +??B?$AutoCleanup@V?$AutoDelete@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@QAEPAVCBaseConfigCache@@XZ +??B?$AutoCleanup@V?$AutoDelete@VCCertMapping@@@@PAVCCertMapping@@@@QAEPAVCCertMapping@@XZ +??B?$AutoCleanup@V?$AutoDelete@VCConfigChangeSource@@@@PAVCConfigChangeSource@@@@QAEPAVCConfigChangeSource@@XZ +??B?$AutoCleanup@V?$AutoDelete@VCListenerSettings@@@@PAVCListenerSettings@@@@QAEPAVCListenerSettings@@XZ +??B?$AutoCleanup@V?$AutoDelete@VCObserverConfigChangeErrors@@@@PAVCObserverConfigChangeErrors@@@@QAEPAVCObserverConfigChangeErrors@@XZ +??B?$AutoCleanup@V?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PAVCServiceWatcher@CServiceConfigCache@@@@QAEPAVCServiceWatcher@CServiceConfigCache@@XZ +??B?$AutoCleanup@V?$AutoDelete@VCShellUriSettings@@@@PAVCShellUriSettings@@@@QAEPAVCShellUriSettings@@XZ +??B?$AutoCleanup@V?$AutoDelete@VCWSManEPR@@@@PAVCWSManEPR@@@@QAEPAVCWSManEPR@@XZ +??B?$AutoCleanup@V?$AutoDelete@VCWSManResource@@@@PAVCWSManResource@@@@QAEPAVCWSManResource@@XZ +??B?$AutoCleanup@V?$AutoDelete@VCertHash@@@@PAVCertHash@@@@QAEPAVCertHash@@XZ +??B?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PAVConfigUpdate@@@@QAEPAVConfigUpdate@@XZ +??B?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAEPAVEnumSinkEx@@XZ +??B?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QBEQAVEnumSinkEx@@XZ +??B?$AutoCleanup@V?$AutoDelete@VEventHandler@WSMan@@@@PAVEventHandler@WSMan@@@@QAEPAVEventHandler@WSMan@@XZ +??B?$AutoCleanup@V?$AutoDelete@VExpiredOperationIdRecord@@@@PAVExpiredOperationIdRecord@@@@QAEPAVExpiredOperationIdRecord@@XZ +??B?$AutoCleanup@V?$AutoDelete@VGPApiManager@@@@PAVGPApiManager@@@@QAEPAVGPApiManager@@XZ +??B?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAEPAVGeneralSinkEx@@XZ +??B?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QBEQAVGeneralSinkEx@@XZ +??B?$AutoCleanup@V?$AutoDelete@VIChannelObserverFactory@@@@PAVIChannelObserverFactory@@@@QAEPAVIChannelObserverFactory@@XZ +??B?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@QAEPAVIQueryDASHSMASHInterface@@XZ +??B?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@QBEQAVIQueryDASHSMASHInterface@@XZ +??B?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@QAEPAVISpecification@@XZ +??B?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@QBEQAVISpecification@@XZ +??B?$AutoCleanup@V?$AutoDelete@VInteractiveSid@CSecurity@@@@PAVInteractiveSid@CSecurity@@@@QAEPAVInteractiveSid@CSecurity@@XZ +??B?$AutoCleanup@V?$AutoDelete@VIpHlpApiDllLoader@@@@PAVIpHlpApiDllLoader@@@@QAEPAVIpHlpApiDllLoader@@XZ +??B?$AutoCleanup@V?$AutoDelete@VMachineName@@@@PAVMachineName@@@@QAEPAVMachineName@@XZ +??B?$AutoCleanup@V?$AutoDelete@VNetworkServiceSid@CSecurity@@@@PAVNetworkServiceSid@CSecurity@@@@QAEPAVNetworkServiceSid@CSecurity@@XZ +??B?$AutoCleanup@V?$AutoDelete@VNtDsApiDllLoader@@@@PAVNtDsApiDllLoader@@@@QAEPAVNtDsApiDllLoader@@XZ +??B?$AutoCleanup@V?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QAEPAVOptionValue@SessionOptions@Client@WSMan@@XZ +??B?$AutoCleanup@V?$AutoDelete@VPacketCreator@@@@PAVPacketCreator@@@@QAEPAVPacketCreator@@XZ +??B?$AutoCleanup@V?$AutoDelete@VPacketParser@@@@PAVPacketParser@@@@QAEPAVPacketParser@@XZ +??B?$AutoCleanup@V?$AutoDelete@VResources@Locale@@@@PAVResources@Locale@@@@QAEPAVResources@Locale@@XZ +??B?$AutoCleanup@V?$AutoDelete@VSecurityEntry@Catalog@@@@PAVSecurityEntry@Catalog@@@@QAEPAVSecurityEntry@Catalog@@XZ +??B?$AutoCleanup@V?$AutoDelete@VServiceSoapProcessor@@@@PAVServiceSoapProcessor@@@@QAEPAVServiceSoapProcessor@@XZ +??B?$AutoCleanup@V?$AutoDelete@VShell32DllLoader@@@@PAVShell32DllLoader@@@@QAEPAVShell32DllLoader@@XZ +??B?$AutoCleanup@V?$AutoDelete@VShlWApiDllLoader@@@@PAVShlWApiDllLoader@@@@QAEPAVShlWApiDllLoader@@XZ +??B?$AutoCleanup@V?$AutoDelete@VSubscriptionManager@@@@PAVSubscriptionManager@@@@QAEPAVSubscriptionManager@@XZ +??B?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@QAEPAVTSTRBUFFER@@XZ +??B?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@QBEQAVTSTRBUFFER@@XZ +??B?$AutoCleanup@V?$AutoDelete@VUniqueStringOverflow@@@@PAVUniqueStringOverflow@@@@QAEPAVUniqueStringOverflow@@XZ +??B?$AutoCleanup@V?$AutoDelete@VUser32DllLoader@@@@PAVUser32DllLoader@@@@QAEPAVUser32DllLoader@@XZ +??B?$AutoCleanup@V?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@PAVWSMANCONFIGTABLE_IDENTITY@@@@QAEPAVWSMANCONFIGTABLE_IDENTITY@@XZ +??B?$AutoCleanup@V?$AutoDelete@VWSManMemCryptManager@@@@PAVWSManMemCryptManager@@@@QAEPAVWSManMemCryptManager@@XZ +??B?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@QAEPAVWmiEnumContext@@XZ +??B?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@QBEQAVWmiEnumContext@@XZ +??B?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PAVXmlReader@@@@QAEPAVXmlReader@@XZ +??B?$AutoCleanup@V?$AutoDeleteVector@$$CBG@@PBG@@QAEPBGXZ +??B?$AutoCleanup@V?$AutoDeleteVector@D@@PAD@@QAEPADXZ +??B?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@QAEPAEXZ +??B?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@QBEQAEXZ +??B?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@QAEPAGXZ +??B?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@QBEQAGXZ +??B?$AutoCleanup@V?$AutoDeleteVector@H@@PAH@@QAEPAHXZ +??B?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@QAEPAPAGXZ +??B?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@QBEQAPAGXZ +??B?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@QAEPAPBGXZ +??B?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@QBEQAPBGXZ +??B?$AutoCleanup@V?$AutoDeleteVector@U_CONFIG_UPDATE@@@@PAU_CONFIG_UPDATE@@@@QAEPAU_CONFIG_UPDATE@@XZ +??B?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QAEPAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@XZ +??B?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QBEQAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@XZ +??B?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@QAEPAU_WINRS_RUN_COMMAND_ARG@@XZ +??B?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@QBEQAU_WINRS_RUN_COMMAND_ARG@@XZ +??B?$AutoCleanup@V?$AutoDeleteVector@U_WSMAN_OPTION@@@@PAU_WSMAN_OPTION@@@@QAEPAU_WSMAN_OPTION@@XZ +??B?$AutoCleanup@V?$AutoDeleteVector@X@@PAX@@QAEPAXXZ +??B?$AutoCleanup@V?$AutoFree@E@@PAE@@QAEPAEXZ +??B?$AutoCleanup@V?$AutoFree@E@@PAE@@QBEQAEXZ +??B?$AutoCleanup@V?$AutoLocklessItemRecycle@VPacket@@@@PAVPacket@@@@QAEPAVPacket@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIAppHostChildElementCollection@@@@PAUIAppHostChildElementCollection@@@@QAEPAUIAppHostChildElementCollection@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIAppHostElement@@@@PAUIAppHostElement@@@@QAEPAUIAppHostElement@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIAppHostElementCollection@@@@PAUIAppHostElementCollection@@@@QAEPAUIAppHostElementCollection@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@QAEPAUIClientSecurity@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@QBEQAUIClientSecurity@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@QAEPAUIEnumWbemClassObject@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@QBEQAUIEnumWbemClassObject@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@QAEPAUIErrorInfo@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@QBEQAUIErrorInfo@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@QAEPAUIUnknown@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@QBEQAUIUnknown@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@QAEPAUIWbemClassObject@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@QBEQAUIWbemClassObject@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@QAEPAUIWbemContext@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@QBEQAUIWbemContext@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@QAEPAUIWbemLocator@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@QBEQAUIWbemLocator@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@QAEPAUIWbemObjectTextSrc@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@QBEQAUIWbemObjectTextSrc@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@QAEPAUIWbemPath@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@QBEQAUIWbemPath@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@QAEPAUIWbemPathKeyList@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@QBEQAUIWbemPathKeyList@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@QAEPAUIWbemQualifierSet@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@QBEQAUIWbemQualifierSet@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@QAEPAUIWbemQuery@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@QBEQAUIWbemQuery@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@QAEPAUIWbemServices@@XZ +??B?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@QBEQAUIWbemServices@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@QAEPAVCBaseConfigCache@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PAVCClientConfigSettings@@@@QAEPAVCClientConfigSettings@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCCommonConfigSettings@@@@PAVCCommonConfigSettings@@@@QAEPAVCCommonConfigSettings@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@PAVCConfigCacheMap@CBaseConfigCache@@@@QAEPAVCConfigCacheMap@CBaseConfigCache@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PAVCConfigManager@@@@QAEPAVCConfigManager@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PAVCRemoteSession@@@@QAEPAVCRemoteSession@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PAVCRequestContext@@@@QAEPAVCRequestContext@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCServiceCommonConfigSettings@@@@PAVCServiceCommonConfigSettings@@@@QAEPAVCServiceCommonConfigSettings@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCServiceConfigCache@@@@PAVCServiceConfigCache@@@@QAEPAVCServiceConfigCache@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCServiceConfigSettings@@@@PAVCServiceConfigSettings@@@@QAEPAVCServiceConfigSettings@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@QAEPAVCWSManEPR@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@QBEQAVCWSManEPR@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyCache@@@@PAVCWSManGroupPolicyCache@@@@QAEPAVCWSManGroupPolicyCache@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyManager@@@@PAVCWSManGroupPolicyManager@@@@QAEPAVCWSManGroupPolicyManager@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCWSManObject@@@@PAVCWSManObject@@@@QAEPAVCWSManObject@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PAVCWSManResource@@@@QAEPAVCWSManResource@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PAVCWSManResource@@@@QBEQAVCWSManResource@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@QAEPAVCWinRSPluginConfigCache@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@QBEQAVCWinRSPluginConfigCache@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigSettings@@@@PAVCWinRSPluginConfigSettings@@@@QAEPAVCWinRSPluginConfigSettings@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCommand@Client@WSMan@@@@PAVCommand@Client@WSMan@@@@QAEPAVCommand@Client@WSMan@@XZ +??B?$AutoCleanup@V?$AutoRelease@VConfigNotification@@@@PAVConfigNotification@@@@QAEPAVConfigNotification@@XZ +??B?$AutoCleanup@V?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@PAVConnectShellOperation@Client@WSMan@@@@QAEPAVConnectShellOperation@Client@WSMan@@XZ +??B?$AutoCleanup@V?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@PAVCreateShellOperation@Client@WSMan@@@@QAEPAVCreateShellOperation@Client@WSMan@@XZ +??B?$AutoCleanup@V?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@PAVDeleteShellOperation@Client@WSMan@@@@QAEPAVDeleteShellOperation@Client@WSMan@@XZ +??B?$AutoCleanup@V?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@PAVDisconnectOperation@Client@WSMan@@@@QAEPAVDisconnectOperation@Client@WSMan@@XZ +??B?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAEPAVEnumSinkEx@@XZ +??B?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QBEQAVEnumSinkEx@@XZ +??B?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAEPAVGeneralSinkEx@@XZ +??B?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QBEQAVGeneralSinkEx@@XZ +??B?$AutoCleanup@V?$AutoRelease@VIISConfigSettings@@@@PAVIISConfigSettings@@@@QAEPAVIISConfigSettings@@XZ +??B?$AutoCleanup@V?$AutoRelease@VIPCSoapProcessor@@@@PAVIPCSoapProcessor@@@@QAEPAVIPCSoapProcessor@@XZ +??B?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@QAEPAVIRequestContext@@XZ +??B?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@QBEQAVIRequestContext@@XZ +??B?$AutoCleanup@V?$AutoRelease@VISubscription@@@@PAVISubscription@@@@QAEPAVISubscription@@XZ +??B?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PAVInboundRequestDetails@@@@QAEPAVInboundRequestDetails@@XZ +??B?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PAVInboundRequestDetails@@@@QBEQAVInboundRequestDetails@@XZ +??B?$AutoCleanup@V?$AutoRelease@VReceiveOperation@Client@WSMan@@@@PAVReceiveOperation@Client@WSMan@@@@QAEPAVReceiveOperation@Client@WSMan@@XZ +??B?$AutoCleanup@V?$AutoRelease@VReconnectOperation@Client@WSMan@@@@PAVReconnectOperation@Client@WSMan@@@@QAEPAVReconnectOperation@Client@WSMan@@XZ +??B?$AutoCleanup@V?$AutoRelease@VSendOperation@Client@WSMan@@@@PAVSendOperation@Client@WSMan@@@@QAEPAVSendOperation@Client@WSMan@@XZ +??B?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@QAEPAVShell@Client@WSMan@@XZ +??B?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@QBEQAVShell@Client@WSMan@@XZ +??B?$AutoCleanup@V?$AutoRelease@VSignalOperation@Client@WSMan@@@@PAVSignalOperation@Client@WSMan@@@@QAEPAVSignalOperation@Client@WSMan@@XZ +??B?$AutoCleanup@V?$AutoRelease@VUserRecord@@@@PAVUserRecord@@@@QAEPAVUserRecord@@XZ +??B?$AutoCleanup@V?$AutoRelease@VUserRecord@@@@PAVUserRecord@@@@QBEQAVUserRecord@@XZ +??B?$AutoCleanup@VAutoBstr@@PAG@@QAEPAGXZ +??B?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@QAEPAGXZ +??B?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@QBEQAGXZ +??B?$AutoCleanup@VAutoCertContext@@PBU_CERT_CONTEXT@@@@QAEPBU_CERT_CONTEXT@@XZ +??B?$AutoCleanup@VAutoHandle@@PAX@@QAEPAXXZ +??B?$AutoCleanup@VAutoHandle@@PAX@@QBEQAXXZ +??B?$AutoCleanup@VAutoImpersonateUser@@PAX@@QAEPAXXZ +??B?$AutoCleanup@VAutoImpersonateUser@@PAX@@QBEQAXXZ +??B?$AutoCleanup@VAutoLibrary@@PAUHINSTANCE__@@@@QAEPAUHINSTANCE__@@XZ +??B?$AutoCleanup@VAutoLocalFree@@PAX@@QAEPAXXZ +??B?$AutoCleanup@VAutoMIClass@@PAU_MI_Class@@@@QAEPAU_MI_Class@@XZ +??B?$AutoCleanup@VAutoMIInstance@@PAU_MI_Instance@@@@QAEPAU_MI_Instance@@XZ +??B?$AutoCleanup@VAutoRegKey@@PAUHKEY__@@@@QAEPAUHKEY__@@XZ +??B?$AutoCleanup@VAutoSecurityDescriptor@@PAX@@QAEPAXXZ +??B?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@QBE_NXZ +??B?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@QBE_NXZ +??B?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@QBE_NXZ +??B?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QBE_NXZ +??B?$SafeMap_Iterator@VKey@Locale@@K@@QBE_NXZ +??B?$SafeMap_Iterator@VStringKeyCI@@K@@QBE_NXZ +??B?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@QBE_NXZ +??B?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@QBE_NXZ +??B?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QBE_NXZ +??C?$AutoCleanup@V?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@PAU_WSMAN_STREAM_ID_SET@@@@QAEPAU_WSMAN_STREAM_ID_SET@@XZ +??C?$AutoCleanup@V?$AutoDelete@V?$Handle@VISubscription@@@@@@PAV?$Handle@VISubscription@@@@@@QAEPAV?$Handle@VISubscription@@@@XZ +??C?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@PAV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAEPAV?$SafeMap_Iterator@VStringKeyCI@@K@@XZ +??C?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@PAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAEPAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@XZ +??C?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@PAV?$SafeSet@PAVCCertMapping@@@@@@QAEPAV?$SafeSet@PAVCCertMapping@@@@XZ +??C?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@PAV?$SafeSet@PAVCShellUriSettings@@@@@@QAEPAV?$SafeSet@PAVCShellUriSettings@@@@XZ +??C?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@PAV?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAEPAV?$SafeSet_Iterator@PAVCListenerOperation@@@@XZ +??C?$AutoCleanup@V?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@QAEPAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@XZ +??C?$AutoCleanup@V?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@PAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@QAEPAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@XZ +??C?$AutoCleanup@V?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@PAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@QAEPAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@XZ +??C?$AutoCleanup@V?$AutoDelete@V?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@PAV?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@QAEPAV?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@XZ +??C?$AutoCleanup@V?$AutoDelete@VBlockedRecord@@@@PAVBlockedRecord@@@@QAEPAVBlockedRecord@@XZ +??C?$AutoCleanup@V?$AutoDelete@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@QAEPAVCBaseConfigCache@@XZ +??C?$AutoCleanup@V?$AutoDelete@VCCertMapping@@@@PAVCCertMapping@@@@QAEPAVCCertMapping@@XZ +??C?$AutoCleanup@V?$AutoDelete@VCConfigChangeSource@@@@PAVCConfigChangeSource@@@@QAEPAVCConfigChangeSource@@XZ +??C?$AutoCleanup@V?$AutoDelete@VCListenerSettings@@@@PAVCListenerSettings@@@@QAEPAVCListenerSettings@@XZ +??C?$AutoCleanup@V?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PAVCServiceWatcher@CServiceConfigCache@@@@QAEPAVCServiceWatcher@CServiceConfigCache@@XZ +??C?$AutoCleanup@V?$AutoDelete@VCShellUriSettings@@@@PAVCShellUriSettings@@@@QAEPAVCShellUriSettings@@XZ +??C?$AutoCleanup@V?$AutoDelete@VCWSManEPR@@@@PAVCWSManEPR@@@@QAEPAVCWSManEPR@@XZ +??C?$AutoCleanup@V?$AutoDelete@VCWSManResource@@@@PAVCWSManResource@@@@QAEPAVCWSManResource@@XZ +??C?$AutoCleanup@V?$AutoDelete@VCertHash@@@@PAVCertHash@@@@QAEPAVCertHash@@XZ +??C?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PAVConfigUpdate@@@@QAEPAVConfigUpdate@@XZ +??C?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAEPAVEnumSinkEx@@XZ +??C?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QBEQAVEnumSinkEx@@XZ +??C?$AutoCleanup@V?$AutoDelete@VExpiredOperationIdRecord@@@@PAVExpiredOperationIdRecord@@@@QAEPAVExpiredOperationIdRecord@@XZ +??C?$AutoCleanup@V?$AutoDelete@VGPApiManager@@@@PAVGPApiManager@@@@QAEPAVGPApiManager@@XZ +??C?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAEPAVGeneralSinkEx@@XZ +??C?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QBEQAVGeneralSinkEx@@XZ +??C?$AutoCleanup@V?$AutoDelete@VIChannelObserverFactory@@@@PAVIChannelObserverFactory@@@@QAEPAVIChannelObserverFactory@@XZ +??C?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@QAEPAVIQueryDASHSMASHInterface@@XZ +??C?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@QBEQAVIQueryDASHSMASHInterface@@XZ +??C?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@QAEPAVISpecification@@XZ +??C?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@QBEQAVISpecification@@XZ +??C?$AutoCleanup@V?$AutoDelete@VMasterReceiveData@CListenerReceive@@@@PAVMasterReceiveData@CListenerReceive@@@@QAEPAVMasterReceiveData@CListenerReceive@@XZ +??C?$AutoCleanup@V?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QAEPAVOptionValue@SessionOptions@Client@WSMan@@XZ +??C?$AutoCleanup@V?$AutoDelete@VPacketCreator@@@@PAVPacketCreator@@@@QAEPAVPacketCreator@@XZ +??C?$AutoCleanup@V?$AutoDelete@VPacketParser@@@@PAVPacketParser@@@@QAEPAVPacketParser@@XZ +??C?$AutoCleanup@V?$AutoDelete@VRunAsConfiguration@@@@PAVRunAsConfiguration@@@@QAEPAVRunAsConfiguration@@XZ +??C?$AutoCleanup@V?$AutoDelete@VSecurityEntry@Catalog@@@@PAVSecurityEntry@Catalog@@@@QAEPAVSecurityEntry@Catalog@@XZ +??C?$AutoCleanup@V?$AutoDelete@VSendPacketArgs@RobustConnectionBuffer@@@@PAVSendPacketArgs@RobustConnectionBuffer@@@@QAEPAVSendPacketArgs@RobustConnectionBuffer@@XZ +??C?$AutoCleanup@V?$AutoDelete@VServiceSoapProcessor@@@@PAVServiceSoapProcessor@@@@QAEPAVServiceSoapProcessor@@XZ +??C?$AutoCleanup@V?$AutoDelete@VSubscriptionEnumerator@@@@PAVSubscriptionEnumerator@@@@QAEPAVSubscriptionEnumerator@@XZ +??C?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@QAEPAVTSTRBUFFER@@XZ +??C?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@QBEQAVTSTRBUFFER@@XZ +??C?$AutoCleanup@V?$AutoDelete@VUniqueStringOverflow@@@@PAVUniqueStringOverflow@@@@QAEPAVUniqueStringOverflow@@XZ +??C?$AutoCleanup@V?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@PAVWSMANCONFIGTABLE_IDENTITY@@@@QAEPAVWSMANCONFIGTABLE_IDENTITY@@XZ +??C?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@QAEPAVWmiEnumContext@@XZ +??C?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@QBEQAVWmiEnumContext@@XZ +??C?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PAVXmlReader@@@@QAEPAVXmlReader@@XZ +??C?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@QAEPAEXZ +??C?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@QBEQAEXZ +??C?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@QAEPAGXZ +??C?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@QBEQAGXZ +??C?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@QAEPAPAGXZ +??C?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@QBEQAPAGXZ +??C?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@QAEPAPBGXZ +??C?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@QBEQAPBGXZ +??C?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QAEPAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@XZ +??C?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QBEQAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@XZ +??C?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@QAEPAU_WINRS_RUN_COMMAND_ARG@@XZ +??C?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@QBEQAU_WINRS_RUN_COMMAND_ARG@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIAppHostAdminManager@@@@PAUIAppHostAdminManager@@@@QAEPAUIAppHostAdminManager@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIAppHostChildElementCollection@@@@PAUIAppHostChildElementCollection@@@@QAEPAUIAppHostChildElementCollection@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIAppHostConfigException@@@@PAUIAppHostConfigException@@@@QAEPAUIAppHostConfigException@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIAppHostElementCollection@@@@PAUIAppHostElementCollection@@@@QAEPAUIAppHostElementCollection@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIAppHostProperty@@@@PAUIAppHostProperty@@@@QAEPAUIAppHostProperty@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIAppHostPropertyCollection@@@@PAUIAppHostPropertyCollection@@@@QAEPAUIAppHostPropertyCollection@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@QAEPAUIClientSecurity@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@QBEQAUIClientSecurity@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@QAEPAUIEnumWbemClassObject@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@QBEQAUIEnumWbemClassObject@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@QAEPAUIErrorInfo@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@QBEQAUIErrorInfo@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@QAEPAUIUnknown@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@QBEQAUIUnknown@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@QAEPAUIWbemClassObject@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@QBEQAUIWbemClassObject@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@QAEPAUIWbemContext@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@QBEQAUIWbemContext@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@QAEPAUIWbemLocator@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@QBEQAUIWbemLocator@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@QAEPAUIWbemObjectTextSrc@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@QBEQAUIWbemObjectTextSrc@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@QAEPAUIWbemPath@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@QBEQAUIWbemPath@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@QAEPAUIWbemPathKeyList@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@QBEQAUIWbemPathKeyList@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@QAEPAUIWbemQualifierSet@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@QBEQAUIWbemQualifierSet@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@QAEPAUIWbemQuery@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@QBEQAUIWbemQuery@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@QAEPAUIWbemServices@@XZ +??C?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@QBEQAUIWbemServices@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@QAEPAVCBaseConfigCache@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PAVCClientConfigSettings@@@@QAEPAVCClientConfigSettings@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@PAVCConfigCacheMap@CBaseConfigCache@@@@QAEPAVCConfigCacheMap@CBaseConfigCache@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PAVCConfigManager@@@@QAEPAVCConfigManager@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCListenerReceive@@@@PAVCListenerReceive@@@@QAEPAVCListenerReceive@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PAVCRemoteSession@@@@QAEPAVCRemoteSession@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PAVCRemoteSession@@@@QBEQAVCRemoteSession@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PAVCRequestContext@@@@QAEPAVCRequestContext@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCServiceCommonConfigSettings@@@@PAVCServiceCommonConfigSettings@@@@QAEPAVCServiceCommonConfigSettings@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCServiceConfigCache@@@@PAVCServiceConfigCache@@@@QAEPAVCServiceConfigCache@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCServiceConfigSettings@@@@PAVCServiceConfigSettings@@@@QAEPAVCServiceConfigSettings@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@QAEPAVCWSManEPR@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@QBEQAVCWSManEPR@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyCache@@@@PAVCWSManGroupPolicyCache@@@@QAEPAVCWSManGroupPolicyCache@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyManager@@@@PAVCWSManGroupPolicyManager@@@@QAEPAVCWSManGroupPolicyManager@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCWSManObject@@@@PAVCWSManObject@@@@QAEPAVCWSManObject@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PAVCWSManResource@@@@QAEPAVCWSManResource@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@QAEPAVCWinRSPluginConfigCache@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@QBEQAVCWinRSPluginConfigCache@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigSettings@@@@PAVCWinRSPluginConfigSettings@@@@QAEPAVCWinRSPluginConfigSettings@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCommand@Client@WSMan@@@@PAVCommand@Client@WSMan@@@@QAEPAVCommand@Client@WSMan@@XZ +??C?$AutoCleanup@V?$AutoRelease@VConfigNotification@@@@PAVConfigNotification@@@@QAEPAVConfigNotification@@XZ +??C?$AutoCleanup@V?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@PAVConnectShellOperation@Client@WSMan@@@@QAEPAVConnectShellOperation@Client@WSMan@@XZ +??C?$AutoCleanup@V?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@PAVCreateShellOperation@Client@WSMan@@@@QAEPAVCreateShellOperation@Client@WSMan@@XZ +??C?$AutoCleanup@V?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@PAVDeleteShellOperation@Client@WSMan@@@@QAEPAVDeleteShellOperation@Client@WSMan@@XZ +??C?$AutoCleanup@V?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@PAVDisconnectOperation@Client@WSMan@@@@QAEPAVDisconnectOperation@Client@WSMan@@XZ +??C?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAEPAVEnumSinkEx@@XZ +??C?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QBEQAVEnumSinkEx@@XZ +??C?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAEPAVGeneralSinkEx@@XZ +??C?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QBEQAVGeneralSinkEx@@XZ +??C?$AutoCleanup@V?$AutoRelease@VIPCSoapProcessor@@@@PAVIPCSoapProcessor@@@@QAEPAVIPCSoapProcessor@@XZ +??C?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@QAEPAVIRequestContext@@XZ +??C?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@QBEQAVIRequestContext@@XZ +??C?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PAVInboundRequestDetails@@@@QAEPAVInboundRequestDetails@@XZ +??C?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PAVInboundRequestDetails@@@@QBEQAVInboundRequestDetails@@XZ +??C?$AutoCleanup@V?$AutoRelease@VReceiveOperation@Client@WSMan@@@@PAVReceiveOperation@Client@WSMan@@@@QAEPAVReceiveOperation@Client@WSMan@@XZ +??C?$AutoCleanup@V?$AutoRelease@VReconnectOperation@Client@WSMan@@@@PAVReconnectOperation@Client@WSMan@@@@QAEPAVReconnectOperation@Client@WSMan@@XZ +??C?$AutoCleanup@V?$AutoRelease@VSendOperation@Client@WSMan@@@@PAVSendOperation@Client@WSMan@@@@QAEPAVSendOperation@Client@WSMan@@XZ +??C?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@QAEPAVShell@Client@WSMan@@XZ +??C?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@QBEQAVShell@Client@WSMan@@XZ +??C?$AutoCleanup@V?$AutoRelease@VSignalOperation@Client@WSMan@@@@PAVSignalOperation@Client@WSMan@@@@QAEPAVSignalOperation@Client@WSMan@@XZ +??C?$AutoCleanup@V?$AutoRelease@VUserRecord@@@@PAVUserRecord@@@@QAEPAVUserRecord@@XZ +??C?$AutoCleanup@V?$AutoRelease@VWSManHttpListener@@@@PAVWSManHttpListener@@@@QAEPAVWSManHttpListener@@XZ +??C?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@QAEPAGXZ +??C?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@QBEQAGXZ +??C?$AutoCleanup@VAutoChainContext@@PBU_CERT_CHAIN_CONTEXT@@@@QAEPBU_CERT_CHAIN_CONTEXT@@XZ +??C?$AutoCleanup@VAutoImpersonateUser@@PAX@@QAEPAXXZ +??C?$AutoCleanup@VAutoImpersonateUser@@PAX@@QBEQAXXZ +??C?$AutoCleanup@VAutoMIClass@@PAU_MI_Class@@@@QAEPAU_MI_Class@@XZ +??C?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@QBEAAPAVExpiredOperationIdRecord@@XZ +??C?$SafeSet_Iterator@PAVCListenerOperation@@@@QBEABQAVCListenerOperation@@XZ +??D?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QBEAAVCertThumbprintMappedSet@CServiceConfigSettings@@XZ +??D?$SafeMap_Iterator@VKey@Locale@@K@@QBEAAKXZ +??D?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@QBEAAPAVExpiredOperationIdRecord@@XZ +??D?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QBEAAPAVOptionValue@SessionOptions@Client@WSMan@@XZ +??D?$SafeSet_Iterator@PAVCCertMapping@@@@QBEABQAVCCertMapping@@XZ +??D?$SafeSet_Iterator@PAVCListenerOperation@@@@QBEABQAVCListenerOperation@@XZ +??D?$SafeSet_Iterator@PAVCShellUriSettings@@@@QBEABQAVCShellUriSettings@@XZ +??E?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@QAEXH@Z +??E?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@QAEXH@Z +??E?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@QAEXH@Z +??E?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QAEXH@Z +??E?$SafeMap_Iterator@VStringKeyCI@@K@@QAEXH@Z +??E?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@QAEXH@Z +??E?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@QAEXH@Z +??E?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QAEXH@Z +??_7?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@6B@ DATA +??_7?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@6B@ DATA +??_7?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@6B@ DATA +??_7?$SafeMap@PAVCollector@@UEmpty@@V?$SafeSet_Iterator@PAVCollector@@@@@@6B@ DATA +??_7?$SafeMap@PAVHostOperation@@UEmpty@@V?$SafeSet_Iterator@PAVHostOperation@@@@@@6B@ DATA +??_7?$SafeMap@PAVIOperation@@UEmpty@@V?$SafeSet_Iterator@PAVIOperation@@@@@@6B@ DATA +??_7?$SafeMap@PAVListenerSourceSubscription@@UEmpty@@V?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@6B@ DATA +??_7?$SafeMap@PAVPushSubscription@@UEmpty@@V?$SafeSet_Iterator@PAVPushSubscription@@@@@@6B@ DATA +??_7?$SafeMap@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@6B@ DATA +??_7?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@6B@ DATA +??_7?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@6B@ DATA +??_7?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@6B@ DATA +??_7?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@6B@ DATA +??_7?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@6B@ DATA +??_7?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@6B@ DATA +??_7?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@6B@ DATA +??_7?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@6B@ DATA +??_7?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@6B@ DATA +??_7?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@6B@ DATA +??_7?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@6B@ DATA +??_7?$SafeSet@PAVCCertMapping@@@@6B@ DATA +??_7?$SafeSet@PAVCListenerOperation@@@@6B@ DATA +??_7?$SafeSet@PAVCShellUriSettings@@@@6B@ DATA +??_7?$SafeSet@PAX@@6B@ DATA +??_7BufferFormatter@@6B@ DATA +??_7CBaseConfigCache@@6BIConfigChangeObserver@@@ DATA +??_7CBaseConfigCache@@6BILifeTimeMgmt@@@ DATA +??_7CClientConfigCache@@6BIConfigChangeObserver@@@ DATA +??_7CClientConfigCache@@6BILifeTimeMgmt@@@ DATA +??_7CConfigManager@@6B@ DATA +??_7CErrorContext@@6B@ DATA +??_7CRequestContext@@6BCErrorContext@@@ DATA +??_7CRequestContext@@6BEtwCorrelationHelper@@@ DATA +??_7CServiceConfigCache@@6BIConfigChangeObserver@@@ DATA +??_7CServiceConfigCache@@6BILifeTimeMgmt@@@ DATA +??_7CWSManEPR@@6B@ DATA +??_7CWSManGroupPolicyManager@@6B@ DATA +??_7CWSManResource@@6B@ DATA +??_7CWSManResourceNoResourceUri@@6B@ DATA +??_7CWSManSecurityUI@@6B@ DATA +??_7CWinRSPluginConfigCache@@6BIConfigChangeObserver@@@ DATA +??_7CWinRSPluginConfigCache@@6BILifeTimeMgmt@@@ DATA +??_7CircularBufferFormatter@@6B@ DATA +??_7EtwCorrelationHelper@@6B@ DATA +??_7IConfigChangeObserver@@6B@ DATA +??_7ILifeTimeMgmt@@6B@ DATA +??_7IRequestContext@@6B@ DATA +??_7IWSManGroupPolicyObserver@@6B@ DATA +??_7IWSManGroupPolicyPublisher@@6B@ DATA +??_7PacketParser@@6B@ DATA +??_7UserAuthzRecord@@6B@ DATA +??_7UserRecord@@6B@ DATA +??_FCErrorContext@@QAEXXZ +??_FRBUFFER@@QAEXXZ +?Acquire@?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@UBEXXZ +?Acquire@?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@UBEXXZ +?Acquire@?$SafeMap@PAVCListenerConnect@@PAV1@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@UBEXXZ +?Acquire@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@UBEXXZ +?Acquire@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@UBEXXZ +?Acquire@?$SafeMap@PAVCListenerReceive@@PAV1@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@UBEXXZ +?Acquire@?$SafeMap@PAVCListenerSend@@PAV1@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@UBEXXZ +?Acquire@?$SafeMap@PAVCListenerSignal@@PAV1@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@UBEXXZ +?Acquire@?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@UBEXXZ +?Acquire@?$SafeMap@PAVCollector@@UEmpty@@V?$SafeMap_Iterator@PAVCollector@@UEmpty@@@@@@UBEXXZ +?Acquire@?$SafeMap@PAVCollector@@UEmpty@@V?$SafeSet_Iterator@PAVCollector@@@@@@UBEXXZ +?Acquire@?$SafeMap@PAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PAVHostOperation@@UEmpty@@@@@@UBEXXZ +?Acquire@?$SafeMap@PAVHostOperation@@UEmpty@@V?$SafeSet_Iterator@PAVHostOperation@@@@@@UBEXXZ +?Acquire@?$SafeMap@PAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PAVIOperation@@UEmpty@@@@@@UBEXXZ +?Acquire@?$SafeMap@PAVIOperation@@UEmpty@@V?$SafeSet_Iterator@PAVIOperation@@@@@@UBEXXZ +?Acquire@?$SafeMap@PAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVListenerSourceSubscription@@UEmpty@@@@@@UBEXXZ +?Acquire@?$SafeMap@PAVListenerSourceSubscription@@UEmpty@@V?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@UBEXXZ +?Acquire@?$SafeMap@PAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVPushSubscription@@UEmpty@@@@@@UBEXXZ +?Acquire@?$SafeMap@PAVPushSubscription@@UEmpty@@V?$SafeSet_Iterator@PAVPushSubscription@@@@@@UBEXXZ +?Acquire@?$SafeMap@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@UBEXXZ +?Acquire@?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@UBEXXZ +?Acquire@?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@UBEXXZ +?Acquire@?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@UBEXXZ +?Acquire@?$SafeMap@VGuidKey@@PAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@UBEXXZ +?Acquire@?$SafeMap@VKey@CWmiPtrCache@@VMapping@2@V?$SafeMap_Iterator@VKey@CWmiPtrCache@@VMapping@2@@@@@UBEXXZ +?Acquire@?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@UBEXXZ +?Acquire@?$SafeMap@VStringKey@@PAVListenerEvents@@V?$SafeMap_Iterator@VStringKey@@PAVListenerEvents@@@@@@UBEXXZ +?Acquire@?$SafeMap@VStringKey@@PAVListenerSourceSubscription@@V?$SafeMap_Iterator@VStringKey@@PAVListenerSourceSubscription@@@@@@UBEXXZ +?Acquire@?$SafeMap@VStringKey@@UOption@WinRM_OperationOptions@@V?$SafeMap_Iterator@VStringKey@@UOption@WinRM_OperationOptions@@@@@@UBEXXZ +?Acquire@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@UBEXXZ +?Acquire@?$SafeMap@VStringKeyCI@@PAVIISEndpoint@@V?$SafeMap_Iterator@VStringKeyCI@@PAVIISEndpoint@@@@@@UBEXXZ +?Acquire@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@UBEXXZ +?Acquire@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@UBEXXZ +?Acquire@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@UBEXXZ +?Acquire@?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@UBEXXZ +?Acquire@?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@UBEXXZ +?Acquire@?$SafeMap@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@V?$SafeMap_Iterator@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@@@@@UBEXXZ +?Acquire@?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@UBEXXZ +?Acquire@?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@UBEXXZ +?Acquire@?$SafeMap_Lock@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@QAEXXZ +?Acquire@?$SafeMap_Lock@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@QAEXXZ +?Acquire@?$SafeMap_Lock@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@QAEXXZ +?Acquire@?$SafeMap_Lock@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAEXXZ +?Acquire@?$SafeMap_Lock@PAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@@@QAEXXZ +?Acquire@?$SafeMap_Lock@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@QAEXXZ +?Acquire@?$SafeMap_Lock@PAXUEmpty@@V?$SafeMap_Iterator@PAXUEmpty@@@@@@QAEXXZ +?Acquire@?$SafeMap_Lock@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@QAEXXZ +?Acquire@?$SafeMap_Lock@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QAEXXZ +?Acquire@?$SafeMap_Lock@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@QAEXXZ +?Acquire@?$SafeMap_Lock@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QAEXXZ +?Acquire@?$SafeMap_Lock@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QAEXXZ +?Acquire@?$SafeMap_Lock@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAEXXZ +?Acquire@?$SafeMap_Lock@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@QAEXXZ +?Acquire@?$SafeMap_Lock@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QAEXXZ +?Acquire@?$SafeMap_Lock@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAEXXZ +?Acquire@?$SafeMap_Lock@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@QAEXXZ +?Acquire@?$SafeMap_Lock@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAEXXZ +?Acquire@?$SafeMap_Lock@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@QAEXXZ +?Acquire@CWSManCriticalSection@@QAEXXZ +?AcquireExclusive@FastLock@@QAEXXZ +?AcquireShared@FastLock@@QAEXXZ +?Acquired@?$SafeMap_Lock@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@QAE_NXZ +?Acquired@?$SafeMap_Lock@PAVCListenerConnect@@PAV1@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@QAE_NXZ +?Acquired@?$SafeMap_Lock@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@QAE_NXZ +?Acquired@?$SafeMap_Lock@PAVCListenerReceive@@PAV1@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@QAE_NXZ +?Acquired@?$SafeMap_Lock@PAVCListenerSend@@PAV1@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@QAE_NXZ +?Acquired@?$SafeMap_Lock@PAVCListenerSignal@@PAV1@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@QAE_NXZ +?Acquired@?$SafeMap_Lock@PAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@@@QAE_NXZ +?Acquired@?$SafeMap_Lock@PAVCollector@@UEmpty@@V?$SafeMap_Iterator@PAVCollector@@UEmpty@@@@@@QAE_NXZ +?Acquired@?$SafeMap_Lock@PAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PAVHostOperation@@UEmpty@@@@@@QAE_NXZ +?Acquired@?$SafeMap_Lock@PAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PAVIOperation@@UEmpty@@@@@@QAE_NXZ +?Acquired@?$SafeMap_Lock@PAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVListenerSourceSubscription@@UEmpty@@@@@@QAE_NXZ +?Acquired@?$SafeMap_Lock@PAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVPushSubscription@@UEmpty@@@@@@QAE_NXZ +?Acquired@?$SafeMap_Lock@PAXUEmpty@@V?$SafeMap_Iterator@PAXUEmpty@@@@@@QAE_NXZ +?Acquired@?$SafeMap_Lock@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QAE_NXZ +?Acquired@?$SafeMap_Lock@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@QAE_NXZ +?Acquired@?$SafeMap_Lock@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QAE_NXZ +?Acquired@?$SafeMap_Lock@VGuidKey@@PAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@QAE_NXZ +?Acquired@?$SafeMap_Lock@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QAE_NXZ +?Acquired@?$SafeMap_Lock@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAE_NXZ +?Acquired@?$SafeMap_Lock@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@QAE_NXZ +?Acquired@?$SafeMap_Lock@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QAE_NXZ +?Acquired@?$SafeMap_Lock@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAE_NXZ +?Acquired@?$SafeMap_Lock@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@QAE_NXZ +?Acquired@?$SafeMap_Lock@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAE_NXZ +?Acquired@?$SafeMap_Lock@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@QAE_NXZ +?Add@?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@QAE_NABQAVCCertMapping@@ABUEmpty@@AAVIRequestContext@@@Z +?Add@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAE_NABQAVCListenerOperation@@ABUEmpty@@AAVIRequestContext@@@Z +?Add@?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@QAE_NABQAVCShellUriSettings@@ABUEmpty@@AAVIRequestContext@@@Z +?Add@?$SafeMap@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@QAE_NABQAXABUEmpty@@AAVIRequestContext@@@Z +?Add@?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QAE_NABUPluginKey@@ABKAAVIRequestContext@@@Z +?Add@?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@QAE_NABUUserKey@@ABQAVBlockedRecord@@AAVIRequestContext@@@Z +?Add@?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QAE_NABVCertThumbprintKey@@ABVCertThumbprintMappedSet@CServiceConfigSettings@@AAVIRequestContext@@@Z +?Add@?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QAE_NABVKey@Locale@@ABKAAVIRequestContext@@@Z +?Add@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAE_NABVStringKeyCI@@ABKAAVIRequestContext@@@Z +?Add@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@QAE_NABVStringKeyCI@@ABUEmpty@@AAVIRequestContext@@@Z +?Add@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QAE_NABVStringKeyCI@@ABUUSER_CONTEXT_INFO@WSManHttpListener@@AAVIRequestContext@@@Z +?Add@?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAE_NABVStringKeyStore@@ABQAVExpiredOperationIdRecord@@AAVIRequestContext@@@Z +?Add@?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@QAE_NABVStringKeyStore@@ABQAVServerFullDuplexChannel@@AAVIRequestContext@@@Z +?Add@?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAE_NABW4WSManSessionOption@@ABQAVOptionValue@SessionOptions@Client@WSMan@@AAVIRequestContext@@@Z +?Add@?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@QAE_NAB_KABQAVSendPacketArgs@RobustConnectionBuffer@@AAVIRequestContext@@@Z +?Add@?$SafeSet@PAVCCertMapping@@@@QAE_NABQAVCCertMapping@@AAVIRequestContext@@@Z +?Add@?$SafeSet@PAVCListenerOperation@@@@QAE_NABQAVCListenerOperation@@AAVIRequestContext@@@Z +?Add@?$SafeSet@PAVCShellUriSettings@@@@QAE_NABQAVCShellUriSettings@@AAVIRequestContext@@@Z +?Add@?$SafeSet@PAX@@QAE_NABQAXAAVIRequestContext@@@Z +?Add@?$SafeSet@VStringKeyCI@@@@QAE_NABVStringKeyCI@@AAVIRequestContext@@@Z +?AddDefaultPlugins@ConfigUpdate@@SGHPAVIRequestContext@@H@Z +?AddKey@CWSManResourceNoResourceUri@@QAEHPBG0PAVIRequestContext@@@Z +?AddMessage@CRequestContext@@AAEHPBGPAPAD1@Z +?AddOption@CWSManResourceNoResourceUri@@QAEHPBG0HPAVIRequestContext@@@Z +?AddOptionSet@CWSManResourceNoResourceUri@@QAEHPAU_WSMAN_OPTION_SET@@PAVIRequestContext@@@Z +?AddPacket@PacketParser@@QAE_NPAVPacket@@_N11@Z +?AddRef@CWSManSecurityUI@@UAGKXZ +?AddRef@ILifeTimeMgmt@@UAEJXZ +?AddRef@UserRecord@@QAE_NAAVIRequestContext@@@Z +?AddSource@CBaseConfigCache@@IAEHPAVIRequestContext@@PAVCConfigChangeSource@@@Z +?AddToMap@CBaseConfigCache@@AAEHPAVIRequestContext@@AAVAutoLocalFree@@@Z +?Alloc@WSManMemory@@SGPAXIHW4_NitsFaultMode@@@Z +?AllocBstr@WSManMemory@@SGPAGPBGHH@Z +?AllocBstrLen@WSManMemory@@SGPAGPBGIHH@Z +?AllocCache@CClientConfigCache@@CGPAVCBaseConfigCache@@XZ +?AllocCache@CServiceConfigCache@@CGPAVCBaseConfigCache@@XZ +?AllocCache@CWinRSPluginConfigCache@@CGPAVCBaseConfigCache@@XZ +?AllocSysString@TSTRBUFFER@@QBEJPAPAG@Z +?AllowBasic@CCommonConfigSettings@@UBEHXZ +?AllowClientCertificate@CCommonConfigSettings@@UBEHXZ +?AllowCredSsp@CCommonConfigSettings@@UBEHXZ +?AllowKerberos@CCommonConfigSettings@@UBEHXZ +?AllowNegotiate@CCommonConfigSettings@@UBEHXZ +?AllowUnencrypted@CCommonConfigSettings@@UBEHXZ +?Append@SBUFFER@@QAEJPAEI@Z +?Append@SBUFFER@@QAEJPAV1@@Z +?Append@TSTRBUFFER@@QAEJPBG@Z +?Append@TSTRBUFFER@@QAEJPBGII@Z +?AppendChar@TSTRBUFFER@@QAEJG@Z +?AppendEscapeXmlAttribute@TSTRBUFFER@@QAEJPBGG@Z +?AppendEscapeXmlContent@TSTRBUFFER@@QAEJPBG_N@Z +?AppendXmlElem@TSTRBUFFER@@QAEJPBG0HKPAU_XML_ATTRIB@@@Z +?AppendXmlElemWithNamespace@TSTRBUFFER@@QAEJPBG00HKPAU_XML_ATTRIB@@@Z +?AppendXmlElemWithNamespaceAndPrefix@TSTRBUFFER@@QAEJPBG000HKPAU_XML_ATTRIB@@@Z +?AppendXmlElemWithPrefix@TSTRBUFFER@@QAEJPBG00HKPAU_XML_ATTRIB@@@Z +?AppendXmlEndElem@TSTRBUFFER@@QAEJPBG@Z +?AppendXmlEndElemWithPrefix@TSTRBUFFER@@QAEJPBG0@Z +?AppendXmlEndFragment@TSTRBUFFER@@QAEJXZ +?AppendXmlEndItem@TSTRBUFFER@@QAEJXZ +?AppendXmlStartElem@TSTRBUFFER@@QAEJPBGHKPAU_XML_ATTRIB@@@Z +?AppendXmlStartElemWithNamespace@TSTRBUFFER@@QAEJPBG0HKPAU_XML_ATTRIB@@@Z +?AppendXmlStartElemWithNamespaceAndPrefix@TSTRBUFFER@@QAEJPBG00HKPAU_XML_ATTRIB@@@Z +?AppendXmlStartElemWithNamespaces@TSTRBUFFER@@QAEJPBGKPAU_XML_NAMESPACE_PREFIX@@HKPAU_XML_ATTRIB@@@Z +?AppendXmlStartElemWithNamespacesAndPrefixes@TSTRBUFFER@@QAEJPBG0KPAU_XML_NAMESPACE_PREFIX@@HKPAU_XML_ATTRIB@@@Z +?AppendXmlStartElemWithPrefix@TSTRBUFFER@@QAEJPBG0HKPAU_XML_ATTRIB@@@Z +?AppendXmlStartFragment@TSTRBUFFER@@QAEJXZ +?AppendXmlStartItem@TSTRBUFFER@@QAEJXZ +?ApplyQuota@UserRecord@@QAE_NW4OperationType@@AAVIRequestContext@@PBVProvider@Catalog@@PAVCServiceConfigSettings@@@Z +?ApplySecurity@ConfigRegistry@@IAEHPAVIRequestContext@@PAUHKEY__@@PBG2@Z +?AsReference@?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@QAEAAV1@XZ +?AsReference@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAEAAV1@XZ +?AsReference@?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@QAEAAV1@XZ +?AsReference@?$SafeMap@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@QAEAAV1@XZ +?AsReference@?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QAEAAV1@XZ +?AsReference@?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@QAEAAV1@XZ +?AsReference@?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QAEAAV1@XZ +?AsReference@?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QAEAAV1@XZ +?AsReference@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAEAAV1@XZ +?AsReference@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QAEAAV1@XZ +?AsReference@?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAEAAV1@XZ +?AsReference@?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@QAEAAV1@XZ +?AsReference@?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAEAAV1@XZ +?AsReference@?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@QAEAAV1@XZ +?AuthzComplete@UserRecord@@UAEKPAX0W4AdministratorType@UserAuthzRecord@@KPBG@Z +?BOMS@PacketFormatter@@0QBUBOMInfo@1@B DATA +?BeginRevertToSelf@CSecurity@@SGHPAPAXK@Z +?BuildFragmentTransfer@CWSManResourceNoResourceUri@@UAEHAAVBufferFormatter@@@Z +?BuildOptionSet@CWSManResourceNoResourceUri@@QAEHAAVBufferFormatter@@@Z +?BuildSelectorSet@CWSManEPR@@UAEHAAVBufferFormatter@@@Z +?BuildSelectorSet@CWSManResourceNoResourceUri@@UAEHAAVBufferFormatter@@@Z +?CHARSETS@PacketFormatter@@0QBUCharsetInfo@1@B DATA +?ChangeLogging@CServiceConfigCache@@QAEXW4ErrorLogging@@@Z +?CheckSharedSSLConfiguration@ConfigRegistry@@IAEHPAVIRequestContext@@PBG1HPAH@Z +?Clear@?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QAEXXZ +?Clear@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAEXXZ +?Clear@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QAEXXZ +?Clear@?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAEXXZ +?ClearKeys@CWSManResourceNoResourceUri@@QAEHXZ +?ClearOptions@CWSManResourceNoResourceUri@@QAEHXZ +?ClearRegistryKeys@ConfigRegistry@@IAEHPAVIRequestContext@@@Z +?ClearSubKeys@@YGHPAUHKEY__@@PAVIRequestContext@@@Z +?CompleteWithErrorContext@CRequestContext@@QAEXPAU_WSMAN_PLUGIN_REQUEST@@@Z +?Confirm@ExtendedSemantic@@2KB DATA +?Copy@TSTRBUFFER@@QAEJPBG@Z +?CopyString@@YGPAGPAVIRequestContext@@W4CallSiteId@@PBG@Z +?CopyString@@YGPAGPBGABHAAVIRequestContext@@@Z +?CopyString@MessageId@PacketParser@@QAEKPBGH@Z +?CopyTo@CErrorContext@@UBEXPAVIRequestContext@@@Z +?CopyTo@CRequestContext@@UBEXPAVIRequestContext@@@Z +?CreateActivityId@EventHandler@WSMan@@SGXAAU_GUID@@@Z +?CreateAnEvent@SoapSemanticConverter@@QAEKKPAVSemanticMessage@@AAVBufferFormatter@@PAVIRequestContext@@@Z +?CreateAutoConfiguredListener@CConfigManager@@AAEHPAVIRequestContext@@PAVLISTENER_IDENTITY@@@Z +?CreateInstance@?$ILoader@VAdminSid@CSecurity@@@@IAE_NAAVIRequestContext@@@Z +?CreateInstance@?$ILoader@VEventHandler@WSMan@@@@IAE_NAAVIRequestContext@@@Z +?CreateInstance@?$ILoader@VInteractiveSid@CSecurity@@@@IAE_NAAVIRequestContext@@@Z +?CreateInstance@?$ILoader@VIpHlpApiDllLoader@@@@IAE_NAAVIRequestContext@@@Z +?CreateInstance@?$ILoader@VMachineName@@@@IAE_NAAVIRequestContext@@@Z +?CreateInstance@?$ILoader@VNetworkServiceSid@CSecurity@@@@IAE_NAAVIRequestContext@@@Z +?CreateInstance@?$ILoader@VNtDsApiDllLoader@@@@IAE_NAAVIRequestContext@@@Z +?CreateInstance@?$ILoader@VResources@Locale@@@@IAE_NAAVIRequestContext@@@Z +?CreateInstance@?$ILoader@VShell32DllLoader@@@@IAE_NAAVIRequestContext@@@Z +?CreateInstance@?$ILoader@VShlWApiDllLoader@@@@IAE_NAAVIRequestContext@@@Z +?CreateInstance@?$ILoader@VSubscriptionManager@@@@IAE_NAAVIRequestContext@@@Z +?CreateInstance@?$ILoader@VUser32DllLoader@@@@IAE_NAAVIRequestContext@@@Z +?CreateInstance@?$ILoader@VWSManMemCryptManager@@@@IAE_NAAVIRequestContext@@@Z +?CreateKey@ConfigRegistry@@IAEHPAVIRequestContext@@PBGPAPAUHKEY__@@1KPAK@Z +?CreateNew@CBaseConfigCache@@CGPAV1@PAVIRequestContext@@PAVCConfigCacheMap@1@P6GPAV1@XZW4ErrorLogging@@H@Z +?CreateProvHost@@YGPAXPAUHWND__@@PAK1PAJ@Z +?CreateRenderingInformation@CWSManSecurityUI@@AAEHPAVIRequestContext@@@Z +?CreateResponse@SoapSemanticConverter@@QAEKKW4_MI_OperationCallback_ResponseType@@AAVBufferFormatter@@PAVIRequestContext@@@Z +?CreateSessionGuid@SessionId@PacketParser@@QAEKPBGH@Z +?Data@?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@IBEAAV?$STLMap@PAVCCertMapping@@UEmpty@@@@XZ +?Data@?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@IBEAAV?$STLMap@PAVCListenerOperation@@UEmpty@@@@XZ +?Data@?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@IBEAAV?$STLMap@PAVCShellUriSettings@@UEmpty@@@@XZ +?Data@?$SafeMap_Iterator@PAXUEmpty@@@@IBEAAV?$STLMap@PAXUEmpty@@@@XZ +?Data@?$SafeMap_Iterator@UPluginKey@@K@@IBEAAV?$STLMap@UPluginKey@@K@@XZ +?Data@?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@IBEAAV?$STLMap@UUserKey@@PAVBlockedRecord@@@@XZ +?Data@?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@IBEAAV?$STLMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@XZ +?Data@?$SafeMap_Iterator@VKey@Locale@@K@@IBEAAV?$STLMap@VKey@Locale@@K@@XZ +?Data@?$SafeMap_Iterator@VStringKeyCI@@K@@IBEAAV?$STLMap@VStringKeyCI@@K@@XZ +?Data@?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@IBEAAV?$STLMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@XZ +?Data@?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@IBEAAV?$STLMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@XZ +?Data@?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@IBEAAV?$STLMap@VStringKeyStore@@PAVServerFullDuplexChannel@@@@XZ +?Data@?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@IBEAAV?$STLMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@XZ +?Data@?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@IBEAAV?$STLMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@XZ +?DeInitialize@?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PAVCListenerConnect@@PAV1@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PAVCListenerReceive@@PAV1@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PAVCListenerSend@@PAV1@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PAVCListenerSignal@@PAV1@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PAVCollector@@UEmpty@@V?$SafeMap_Iterator@PAVCollector@@UEmpty@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PAVCollector@@UEmpty@@V?$SafeSet_Iterator@PAVCollector@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PAVHostOperation@@UEmpty@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PAVHostOperation@@UEmpty@@V?$SafeSet_Iterator@PAVHostOperation@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PAVIOperation@@UEmpty@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PAVIOperation@@UEmpty@@V?$SafeSet_Iterator@PAVIOperation@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVListenerSourceSubscription@@UEmpty@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PAVListenerSourceSubscription@@UEmpty@@V?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVPushSubscription@@UEmpty@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PAVPushSubscription@@UEmpty@@V?$SafeSet_Iterator@PAVPushSubscription@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VGuidKey@@PAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VKey@CWmiPtrCache@@VMapping@2@V?$SafeMap_Iterator@VKey@CWmiPtrCache@@VMapping@2@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VStringKey@@PAVListenerEvents@@V?$SafeMap_Iterator@VStringKey@@PAVListenerEvents@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VStringKey@@PAVListenerSourceSubscription@@V?$SafeMap_Iterator@VStringKey@@PAVListenerSourceSubscription@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VStringKey@@UOption@WinRM_OperationOptions@@V?$SafeMap_Iterator@VStringKey@@UOption@WinRM_OperationOptions@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VStringKeyCI@@PAVIISEndpoint@@V?$SafeMap_Iterator@VStringKeyCI@@PAVIISEndpoint@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@V?$SafeMap_Iterator@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@UAE_NAAVIRequestContext@@@Z +?DeInitialize@CWSManGroupPolicyManager@@AAEHXZ +?DeInitialize@EventHandler@WSMan@@QAE_NAAVIRequestContext@@@Z +?Debug@ExtendedSemantic@@2KB DATA +?Decode@PacketFormatter@@QBEKPAPAVPacket@@_N@Z +?DecodeFaultObject@CRequestContext@@AAEKPAU_FWXML_ELEMENT@@AAPBG11@Z +?DecodeFaultObject@CRequestContext@@AAEKPBGKAAPBG11@Z +?DecodeFaultObjectProvider@CRequestContext@@AAEKPAU_FWXML_ELEMENT@@AAPBG1@Z +?DecodeFaultObjectProviderMessage@CRequestContext@@AAEKPAU_FWXML_ELEMENT@@AAPBG@Z +?DecodeFaultReason@CRequestContext@@AAEKPAU_FWXML_ELEMENT@@AAPBG@Z +?DecreaseProfileCount@UserRecord@@QAEXXZ +?DeleteConfigKey@ConfigRegistry@@KGHPAVIRequestContext@@PBG1H@Z +?DeleteCredentialsFromCredmanStore@CConfigManager@@SGHPAVIRequestContext@@PAG@Z +?DeleteKey@@YGHPAVIRequestContext@@PBG1@Z +?DeleteKey@ConfigRegistry@@KGHPAVIRequestContext@@PBGH@Z +?DeleteSubkeys@ConfigRegistry@@KGHPAVIRequestContext@@PAUHKEY__@@PBGHH@Z +?DeleteValues@ConfigRegistry@@KGHPAVIRequestContext@@PAUHKEY__@@@Z +?Detach@?$AutoCleanup@V?$AutoDelete@G@@PAG@@QAEPAGXZ +?Detach@?$AutoCleanup@V?$AutoDelete@UIPRange@CWSManIPFilter@@@@PAUIPRange@CWSManIPFilter@@@@QAEPAUIPRange@CWSManIPFilter@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@PAU_WSMAN_STREAM_ID_SET@@@@QAEPAU_WSMAN_STREAM_ID_SET@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@V?$Handle@VISubscription@@@@@@PAV?$Handle@VISubscription@@@@@@QAEPAV?$Handle@VISubscription@@@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@PAV?$SafeSet@PAVCCertMapping@@@@@@QAEPAV?$SafeSet@PAVCCertMapping@@@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@PAV?$SafeSet@PAVCShellUriSettings@@@@@@QAEPAV?$SafeSet@PAVCShellUriSettings@@@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@QAEPAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VAdminSid@CSecurity@@@@PAVAdminSid@CSecurity@@@@QAEPAVAdminSid@CSecurity@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VBlockedRecord@@@@PAVBlockedRecord@@@@QAEPAVBlockedRecord@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@QAEPAVCBaseConfigCache@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VCCertMapping@@@@PAVCCertMapping@@@@QAEPAVCCertMapping@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VCListenerSettings@@@@PAVCListenerSettings@@@@QAEPAVCListenerSettings@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PAVCServiceWatcher@CServiceConfigCache@@@@QAEPAVCServiceWatcher@CServiceConfigCache@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VCShellUriSettings@@@@PAVCShellUriSettings@@@@QAEPAVCShellUriSettings@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VCWSManEPR@@@@PAVCWSManEPR@@@@QAEPAVCWSManEPR@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VCWSManResource@@@@PAVCWSManResource@@@@QAEPAVCWSManResource@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VCertHash@@@@PAVCertHash@@@@QAEPAVCertHash@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PAVConfigUpdate@@@@QAEPAVConfigUpdate@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAEPAVEnumSinkEx@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VEventHandler@WSMan@@@@PAVEventHandler@WSMan@@@@QAEPAVEventHandler@WSMan@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VExpiredOperationIdRecord@@@@PAVExpiredOperationIdRecord@@@@QAEPAVExpiredOperationIdRecord@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAEPAVGeneralSinkEx@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@QAEPAVIQueryDASHSMASHInterface@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@QAEPAVISpecification@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VInteractiveSid@CSecurity@@@@PAVInteractiveSid@CSecurity@@@@QAEPAVInteractiveSid@CSecurity@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VIpHlpApiDllLoader@@@@PAVIpHlpApiDllLoader@@@@QAEPAVIpHlpApiDllLoader@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VMachineName@@@@PAVMachineName@@@@QAEPAVMachineName@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VNetworkServiceSid@CSecurity@@@@PAVNetworkServiceSid@CSecurity@@@@QAEPAVNetworkServiceSid@CSecurity@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VNtDsApiDllLoader@@@@PAVNtDsApiDllLoader@@@@QAEPAVNtDsApiDllLoader@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QAEPAVOptionValue@SessionOptions@Client@WSMan@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VResources@Locale@@@@PAVResources@Locale@@@@QAEPAVResources@Locale@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VSecurityEntry@Catalog@@@@PAVSecurityEntry@Catalog@@@@QAEPAVSecurityEntry@Catalog@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VServiceSoapProcessor@@@@PAVServiceSoapProcessor@@@@QAEPAVServiceSoapProcessor@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VShell32DllLoader@@@@PAVShell32DllLoader@@@@QAEPAVShell32DllLoader@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VShlWApiDllLoader@@@@PAVShlWApiDllLoader@@@@QAEPAVShlWApiDllLoader@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VSubscriptionManager@@@@PAVSubscriptionManager@@@@QAEPAVSubscriptionManager@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@QAEPAVTSTRBUFFER@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VUser32DllLoader@@@@PAVUser32DllLoader@@@@QAEPAVUser32DllLoader@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VWSManMemCryptManager@@@@PAVWSManMemCryptManager@@@@QAEPAVWSManMemCryptManager@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@QAEPAVWmiEnumContext@@XZ +?Detach@?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PAVXmlReader@@@@QAEPAVXmlReader@@XZ +?Detach@?$AutoCleanup@V?$AutoDeleteVector@$$CBG@@PBG@@QAEPBGXZ +?Detach@?$AutoCleanup@V?$AutoDeleteVector@D@@PAD@@QAEPADXZ +?Detach@?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@QAEPAEXZ +?Detach@?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@QAEPAGXZ +?Detach@?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@QAEPAPAGXZ +?Detach@?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@QAEPAPBGXZ +?Detach@?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QAEPAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@XZ +?Detach@?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@QAEPAU_WINRS_RUN_COMMAND_ARG@@XZ +?Detach@?$AutoCleanup@V?$AutoDeleteVector@U_WSMAN_OPTION@@@@PAU_WSMAN_OPTION@@@@QAEPAU_WSMAN_OPTION@@XZ +?Detach@?$AutoCleanup@V?$AutoFree@E@@PAE@@QAEPAEXZ +?Detach@?$AutoCleanup@V?$AutoLocklessItemRecycle@VPacket@@@@PAVPacket@@@@QAEPAVPacket@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@QAEPAUIClientSecurity@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@QAEPAUIEnumWbemClassObject@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@QAEPAUIErrorInfo@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@QAEPAUIUnknown@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@QAEPAUIWbemClassObject@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@QAEPAUIWbemContext@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@QAEPAUIWbemLocator@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@QAEPAUIWbemObjectTextSrc@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@QAEPAUIWbemPath@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@QAEPAUIWbemPathKeyList@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@QAEPAUIWbemQualifierSet@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@QAEPAUIWbemQuery@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@QAEPAUIWbemServices@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VApplication@Client@WSMan@@@@PAVApplication@Client@WSMan@@@@QAEPAVApplication@Client@WSMan@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@QAEPAVCBaseConfigCache@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PAVCClientConfigSettings@@@@QAEPAVCClientConfigSettings@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCCommonConfigSettings@@@@PAVCCommonConfigSettings@@@@QAEPAVCCommonConfigSettings@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PAVCConfigManager@@@@QAEPAVCConfigManager@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PAVCRemoteSession@@@@QAEPAVCRemoteSession@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PAVCRequestContext@@@@QAEPAVCRequestContext@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCServiceConfigSettings@@@@PAVCServiceConfigSettings@@@@QAEPAVCServiceConfigSettings@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@QAEPAVCWSManEPR@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyCache@@@@PAVCWSManGroupPolicyCache@@@@QAEPAVCWSManGroupPolicyCache@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyManager@@@@PAVCWSManGroupPolicyManager@@@@QAEPAVCWSManGroupPolicyManager@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCWSManObject@@@@PAVCWSManObject@@@@QAEPAVCWSManObject@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@QAEPAVCWinRSPluginConfigCache@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigSettings@@@@PAVCWinRSPluginConfigSettings@@@@QAEPAVCWinRSPluginConfigSettings@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VCommand@Client@WSMan@@@@PAVCommand@Client@WSMan@@@@QAEPAVCommand@Client@WSMan@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAEPAVEnumSinkEx@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAEPAVGeneralSinkEx@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VIPCSoapProcessor@@@@PAVIPCSoapProcessor@@@@QAEPAVIPCSoapProcessor@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@QAEPAVIRequestContext@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VReceiveOperation@Client@WSMan@@@@PAVReceiveOperation@Client@WSMan@@@@QAEPAVReceiveOperation@Client@WSMan@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VSendOperation@Client@WSMan@@@@PAVSendOperation@Client@WSMan@@@@QAEPAVSendOperation@Client@WSMan@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@QAEPAVShell@Client@WSMan@@XZ +?Detach@?$AutoCleanup@V?$AutoRelease@VSignalOperation@Client@WSMan@@@@PAVSignalOperation@Client@WSMan@@@@QAEPAVSignalOperation@Client@WSMan@@XZ +?Detach@?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@QAEPAGXZ +?Detach@?$AutoCleanup@VAutoCertContext@@PBU_CERT_CONTEXT@@@@QAEPBU_CERT_CONTEXT@@XZ +?Detach@?$AutoCleanup@VAutoHandle@@PAX@@QAEPAXXZ +?Detach@?$AutoCleanup@VAutoImpersonateUser@@PAX@@QAEPAXXZ +?Detach@?$AutoCleanup@VAutoLocalFree@@PAX@@QAEPAXXZ +?Detach@?$AutoCleanup@VAutoMIClass@@PAU_MI_Class@@@@QAEPAU_MI_Class@@XZ +?Detach@?$AutoCleanup@VAutoMIInstance@@PAU_MI_Instance@@@@QAEPAU_MI_Instance@@XZ +?Detach@?$AutoCleanup@VAutoRegKey@@PAUHKEY__@@@@QAEPAUHKEY__@@XZ +?Detach@?$AutoCleanup@VAutoSecurityDescriptor@@PAX@@QAEPAXXZ +?Detach@?$AutoCleanup@VAutoWaitHandle@@PAX@@QAEPAXXZ +?Detach@BufferFormatter@@QAEPAEXZ +?Discard@CServiceWatcher@CServiceConfigCache@@QAEXXZ +?DoOnChange@CBaseConfigCache@@IAEXW4ConfigChangeSources@@KW4ConfigChangeSeverityType@@@Z +?DoesThreadOwnLock@CWSManCriticalSection@@QAEHXZ +?Down@?$LoaderSerializer@VSubscriptionManager@@$01@@AAEJXZ +?DropData@CircularBufferFormatter@@QAEXK@Z +?DuplicateCurrentToken@CSecurity@@SGHPAPAXKPAU_SECURITY_ATTRIBUTES@@W4_SECURITY_IMPERSONATION_LEVEL@@W4_TOKEN_TYPE@@H@Z +?EnableAllPrivileges@@YGHPAPAE@Z +?Encode@PacketFormatter@@QBEKPAPAVPacket@@@Z +?Encode@PacketFormatter@@QBEKPBGKPAEKPAPAEPAK_N@Z +?EndOfStream@PacketParser@@QAEXK@Z +?EndRevertToSelf@CSecurity@@SGHPAX@Z +?EnsureActivityIdOnThread@EventHandler@WSMan@@SGXXZ +?EnsureNoActiveCaches@CClientConfigCache@@SGXXZ +?EnsureNoActiveCaches@CServiceConfigCache@@SGXXZ +?Error@EventLog@@SGXK@Z +?Error@EventLog@@SGXKGPAPBG@Z +?Error@EventLog@@SGXKPBG@Z +?ErrorAction@ExtendedSemantic@@2KB DATA +?EventEnabled@EventHandler@WSMan@@AAE_NABU_EVENT_DESCRIPTOR@@@Z +?EventProviderEnabled@EventHandler@WSMan@@AAE_NXZ +?EventWrite@EventHandler@WSMan@@AAEXABU_EVENT_DESCRIPTOR@@KPAU_EVENT_DATA_DESCRIPTOR@@@Z +?ExtractContextId@PacketParser@@QAEHPAPBGKPBG@Z +?ExtractShellId@PacketParser@@QAEHPAVCRequestContext@@PAGK@Z +?ExtractSidFromToken@CSecurity@@SGHPAVIRequestContext@@PAXAAVAutoLocalFree@@@Z +?FindExisting@CBaseConfigCache@@CGPAV1@PAVCConfigCacheMap@1@PBGW4ErrorLogging@@@Z +?FindMatch@CResourceAlias@@AAEPAU_ALIAS_INFORMATION@@PBG@Z +?First@TSTRBUFFER@@QBEPBGXZ +?Format@Locale@@ABE_NKPAPADPAPAXPAGKGW4CallSiteId@@@Z +?FormatDataDescriptor@EventHandler@WSMan@@SGXAAU_EVENT_DATA_DESCRIPTOR@@AAG@Z +?FormatDataDescriptor@EventHandler@WSMan@@SGXAAU_EVENT_DATA_DESCRIPTOR@@AAJ@Z +?FormatDataDescriptor@EventHandler@WSMan@@SGXAAU_EVENT_DATA_DESCRIPTOR@@AAK@Z +?FormatDataDescriptor@EventHandler@WSMan@@SGXAAU_EVENT_DATA_DESCRIPTOR@@PBD@Z +?FormatDataDescriptor@EventHandler@WSMan@@SGXAAU_EVENT_DATA_DESCRIPTOR@@PBG@Z +?FormatWithFallback@Locale@@ABE_NKPAPAD0PAPAXPAGK@Z +?Free@WSManMemory@@SGXPAXH@Z +?FreeBstr@WSManMemory@@SGXPAGHH@Z +?FreeInstance@?$ILoader@VAdminSid@CSecurity@@@@QAE_NAAVIRequestContext@@_N@Z +?FreeInstance@?$ILoader@VEventHandler@WSMan@@@@QAE_NAAVIRequestContext@@_N@Z +?FreeInstance@?$ILoader@VInteractiveSid@CSecurity@@@@QAE_NAAVIRequestContext@@_N@Z +?FreeInstance@?$ILoader@VIpHlpApiDllLoader@@@@QAE_NAAVIRequestContext@@_N@Z +?FreeInstance@?$ILoader@VMachineName@@@@QAE_NAAVIRequestContext@@_N@Z +?FreeInstance@?$ILoader@VNetworkServiceSid@CSecurity@@@@QAE_NAAVIRequestContext@@_N@Z +?FreeInstance@?$ILoader@VNtDsApiDllLoader@@@@QAE_NAAVIRequestContext@@_N@Z +?FreeInstance@?$ILoader@VResources@Locale@@@@QAE_NAAVIRequestContext@@_N@Z +?FreeInstance@?$ILoader@VShell32DllLoader@@@@QAE_NAAVIRequestContext@@_N@Z +?FreeInstance@?$ILoader@VShlWApiDllLoader@@@@QAE_NAAVIRequestContext@@_N@Z +?FreeInstance@?$ILoader@VSubscriptionManager@@@@QAE_NAAVIRequestContext@@_N@Z +?FreeInstance@?$ILoader@VUser32DllLoader@@@@QAE_NAAVIRequestContext@@_N@Z +?FreeInstance@?$ILoader@VWSManMemCryptManager@@@@QAE_NAAVIRequestContext@@_N@Z +?FreeInstance@?$LoaderSerializer@VSubscriptionManager@@$01@@QAE_NAAVIRequestContext@@_N@Z +?FreeMemory@RBUFFER@@QAEXXZ +?FreeMemory@SBUFFER@@QAEXXZ +?FreePacket@PacketParser@@QAEXXZ +?FreeXmlStructure@PacketParser@@QAEXXZ +?GenerateTransferId@EventHandler@WSMan@@SGXABU_EVENT_DESCRIPTOR@@PBU_GUID@@1@Z +?GenerateTransferIdImp@EventHandler@WSMan@@AAEXABU_EVENT_DESCRIPTOR@@PBU_GUID@@1@Z +?GetAccessRights@CWSManSecurityUI@@UAGJPBU_GUID@@KPAPAU_SI_ACCESS@@PAK2@Z +?GetAction@PacketParser@@QBEABV?$PacketElement@PBG@1@XZ +?GetActionType@SoapSemanticConverter@@AAE_NPBGPAW4_MI_OperationCallback_ResponseType@@PAW4_MI_CallbackMode@@PAVIRequestContext@@@Z +?GetActivityIdOnCurrentThread@EventHandler@WSMan@@SGXAAU_GUID@@@Z +?GetBaseUri@CWSManResource@@QAEPBGXZ +?GetBomIndex@PacketFormatter@@QBE?AW4Charset@1@XZ +?GetBookmarkXml@PacketParser@@QAEABV?$PacketElement@PAU_FWXML_ELEMENT@@@1@XZ +?GetBool@CConfigManager@@QAEHPAVIRequestContext@@W4ConfigSetting@@PAHPAW4WSManConfigSource@@@Z +?GetBool@CWSManGroupPolicyManager@@QAEHPAVIRequestContext@@W4WSManGroupPolicySetting@@PAHPAW4WSManGroupPolicySettingState@@@Z +?GetBuffer@BufferFormatter@@UAEPAEXZ +?GetBuffer@BufferFormatter@@UBEPBEXZ +?GetBuffer@CircularBufferFormatter@@UAEPAEXZ +?GetBuffer@CircularBufferFormatter@@UBEPBEXZ +?GetBuffer@XmlReader@@QAEPBGXZ +?GetBufferLength@PacketParser@@UAEKXZ +?GetBufferPtr@PacketParser@@UAEPAPAGXZ +?GetBufferSize@BufferFormatter@@QBEKXZ +?GetCacheCount@CClientConfigCache@@SGKXZ +?GetCacheCount@CServiceConfigCache@@SGKXZ +?GetCalculationSize@BufferFormatter@@UBEK_N@Z +?GetCalculationSize@CircularBufferFormatter@@UBEK_N@Z +?GetCharInUse@TSTRBUFFER@@QBEIXZ +?GetCharset@PacketFormatter@@QBE?AW4Charset@1@XZ +?GetCharsetLen@PacketFormatter@@QBEKXZ +?GetCharsetName@PacketFormatter@@QBEPBDXZ +?GetChildCount@ChildLifeTimeManager@@QBEJXZ +?GetConfigCache@CBaseConfigCache@@KGPAV1@PAVIRequestContext@@W4ErrorLogging@@P6GPAV1@XZPAVFastLock@@AAV?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@H@Z +?GetConfigCache@CClientConfigCache@@SGPAV1@PAVIRequestContext@@H@Z +?GetConfigCache@CServiceConfigCache@@SGPAV1@PAVIRequestContext@@W4ErrorLogging@@H@Z +?GetConfigCache@CWinRSPluginConfigCache@@SGPAV1@PAVIRequestContext@@W4ErrorLogging@@H@Z +?GetConfigManager@CConfigManager@@SGPAV1@XZ +?GetConfigManagerForCertMapping@CConfigManager@@SGPAV1@PAVCERTMAPPING_IDENTITY@@PAVIRequestContext@@@Z +?GetConfigManagerForListener@CConfigManager@@SGPAV1@PAVLISTENER_IDENTITY@@PAVIRequestContext@@@Z +?GetConfigManagerForShellUri@CConfigManager@@SGPAV1@PAVSHELLURI_IDENTITY@@PAVIRequestContext@@@Z +?GetConfigManagerForTable@CConfigManager@@SGPAV1@PAVWSMANCONFIGTABLE_IDENTITY@@PAVIRequestContext@@@Z +?GetConfigXml@CConfigManager@@QAEHPAVIRequestContext@@PAPBGPAPAVXmlReader@@PAH@Z +?GetCorrelationId@PacketParser@@QAEAAU_GUID@@XZ +?GetCurrentCertMappingIdentity@CConfigManager@@QAEHPAVCERTMAPPING_IDENTITY@@PAVIRequestContext@@@Z +?GetCurrentListenerIdentity@CConfigManager@@QAEHPAVLISTENER_IDENTITY@@PAVIRequestContext@@@Z +?GetCurrentSettings@CBaseConfigCache@@IAEPAVCCommonConfigSettings@@PAVIRequestContext@@@Z +?GetCurrentSettings@CClientConfigCache@@QAEPAVCClientConfigSettings@@PAVIRequestContext@@@Z +?GetCurrentSettings@CServiceConfigCache@@QAEPAVCServiceConfigSettings@@PAVIRequestContext@@@Z +?GetCurrentSettings@CWinRSPluginConfigCache@@QAEPAVCWinRSPluginConfigSettings@@PAVIRequestContext@@@Z +?GetCurrentShellUriIdentity@CConfigManager@@QAEHPAVSHELLURI_IDENTITY@@PAVIRequestContext@@@Z +?GetCurrentTableIdentity@CConfigManager@@QAEHPAVWSMANCONFIGTABLE_IDENTITY@@PAVIRequestContext@@@Z +?GetDataLocale@PacketParser@@QBEABV?$PacketElement@PBG@1@XZ +?GetDataLocaleHelper@PacketParser@@QAEAAVLocale@@XZ +?GetDescriptionElement@SoapSemanticConverter@@QAEPAU_FWXML_ELEMENT@@PAU2@PAVIRequestContext@@@Z +?GetDestructorIter@?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@QAEAAV?$SafeSet_Iterator@PAVCCertMapping@@@@XZ +?GetDestructorIter@?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@QAEAAV?$SafeSet_Iterator@PAVCShellUriSettings@@@@XZ +?GetDestructorIter@?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QAEAAV?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@XZ +?GetDestructorIter@?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAEAAV?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@XZ +?GetDestructorIter@?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAEAAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@XZ +?GetDialect@Fragment@PacketParser@@QBEPBGXZ +?GetError@BufferFormatter@@QBEKXZ +?GetErrorCode@CErrorContext@@UBEKXZ +?GetEventType@SoapSemanticConverter@@AAEKPBGPAVIRequestContext@@@Z +?GetEventTypeAndResponseElement@SoapSemanticConverter@@AAEPAU_FWXML_ELEMENT@@PAU2@PAKPAVIRequestContext@@@Z +?GetExtendedErrorString@CErrorContext@@UAEPAGXZ +?GetExtendedErrorString@CRequestContext@@UAEPAGXZ +?GetFaultToXml@PacketParser@@QBEABVReferenceParameters@1@XZ +?GetFaultXML@CErrorContext@@UBEPBGXZ +?GetFaultXML@CRequestContext@@UBEPBGXZ +?GetFaultXMLPrivate@CRequestContext@@AAEXPAPAD0KHKKPBG11@Z +?GetFirstConfigManagerForCertMapping@CConfigManager@@SGPAV1@PBG@Z +?GetFirstConfigManagerForListener@CConfigManager@@SGPAV1@PBG@Z +?GetFirstConfigManagerForShellUri@CConfigManager@@SGPAV1@PBG@Z +?GetFirstConfigManagerForTable@CConfigManager@@SGPAV1@W4WSMANTableConfigType@@PBG@Z +?GetFormat@PacketFormatter@@QBE?AW4Charset@1@XZ +?GetFormatterMode@BufferFormatter@@QAE?AW4Charset@PacketFormatter@@XZ +?GetFragment@PacketParser@@QBEABVFragment@1@XZ +?GetFragmentDialect@CWSManResourceNoResourceUri@@QAEPBGXZ +?GetFragmentPath@CWSManResourceNoResourceUri@@QAEPBGXZ +?GetGroupPolicyManager@CWSManGroupPolicyManager@@SGPAV1@PAVIRequestContext@@PBG@Z +?GetHeap@WSManMemory@@SGPAXXZ +?GetIISConfiguration@CConfigManager@@SGHPAVIRequestContext@@PBGPAPAVXmlReader@@@Z +?GetImpersonationToken@UserRecord@@QAEPAXXZ +?GetInheritTypes@CWSManSecurityUI@@UAGJPAPAU_SI_INHERIT_TYPE@@PAK@Z +?GetInitError@CWSManCriticalSection@@QBEKXZ +?GetInstance@?$LoaderSerializer@VAdminSid@CSecurity@@$00@@QAEPAVAdminSid@CSecurity@@AAVIRequestContext@@@Z +?GetInstance@?$LoaderSerializer@VEventHandler@WSMan@@$00@@QAEPAVEventHandler@WSMan@@AAVIRequestContext@@@Z +?GetInstance@?$LoaderSerializer@VInteractiveSid@CSecurity@@$00@@QAEPAVInteractiveSid@CSecurity@@AAVIRequestContext@@@Z +?GetInstance@?$LoaderSerializer@VIpHlpApiDllLoader@@$00@@QAEPAVIpHlpApiDllLoader@@AAVIRequestContext@@@Z +?GetInstance@?$LoaderSerializer@VMachineName@@$00@@QAEPAVMachineName@@AAVIRequestContext@@@Z +?GetInstance@?$LoaderSerializer@VNetworkServiceSid@CSecurity@@$00@@QAEPAVNetworkServiceSid@CSecurity@@AAVIRequestContext@@@Z +?GetInstance@?$LoaderSerializer@VNtDsApiDllLoader@@$00@@QAEPAVNtDsApiDllLoader@@AAVIRequestContext@@@Z +?GetInstance@?$LoaderSerializer@VResources@Locale@@$0A@@@QAEPAVResources@Locale@@AAVIRequestContext@@@Z +?GetInstance@?$LoaderSerializer@VShell32DllLoader@@$00@@QAEPAVShell32DllLoader@@AAVIRequestContext@@@Z +?GetInstance@?$LoaderSerializer@VShlWApiDllLoader@@$00@@QAEPAVShlWApiDllLoader@@AAVIRequestContext@@@Z +?GetInstance@?$LoaderSerializer@VSubscriptionManager@@$01@@QAEPAVSubscriptionManager@@AAVIRequestContext@@@Z +?GetInstance@?$LoaderSerializer@VUser32DllLoader@@$00@@QAEPAVUser32DllLoader@@AAVIRequestContext@@@Z +?GetInstance@?$LoaderSerializer@VWSManMemCryptManager@@$00@@QAEPAVWSManMemCryptManager@@AAVIRequestContext@@@Z +?GetInt@CConfigManager@@QAEHPAVIRequestContext@@W4ConfigSetting@@PAKPAW4WSManConfigSource@@@Z +?GetInt@CWSManGroupPolicyManager@@QAEHPAVIRequestContext@@W4WSManGroupPolicySetting@@PAKPAW4WSManGroupPolicySettingState@@@Z +?GetKey@UserRecord@@QBE?AUUserKey@@XZ +?GetKeyCount@CWSManResourceNoResourceUri@@QAEKXZ +?GetKeyValue@CWSManResourceNoResourceUri@@QAEPBGPBG@Z +?GetKeys@CWSManResourceNoResourceUri@@QAEPAU_WSMAN_KEY@@XZ +?GetLCID@Locale@@QAEKXZ +?GetLength@XmlReader@@QAEIXZ +?GetLocale@CRequestContext@@QAEAAVLocale@@XZ +?GetLocale@PacketParser@@QBEABV?$PacketElement@PBG@1@XZ +?GetLocaleHelper@PacketParser@@QAEAAVLocale@@XZ +?GetLocaleString@CRequestContext@@QAEPBGXZ +?GetLocator@CWSManResource@@QAEPAU_WSMAN_RESOURCE_LOCATOR@@XZ +?GetMachineId@PacketParser@@QBEABV?$PacketElement@PBG@1@XZ +?GetMap@?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@QBEAAV?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@QBEAAV?$SafeMap@PAVCListenerConnect@@PAV1@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@XZ +?GetMap@?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@QBEAAV?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@QBEAAV?$SafeMap@PAVCListenerReceive@@PAV1@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@XZ +?GetMap@?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@QBEAAV?$SafeMap@PAVCListenerSend@@PAV1@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@XZ +?GetMap@?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@QBEAAV?$SafeMap@PAVCListenerSignal@@PAV1@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@XZ +?GetMap@?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@QBEAAV?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Iterator@PAVCollector@@UEmpty@@@@QBEAAV?$SafeMap@PAVCollector@@UEmpty@@V?$SafeMap_Iterator@PAVCollector@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Iterator@PAVHostOperation@@UEmpty@@@@QBEAAV?$SafeMap@PAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PAVHostOperation@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Iterator@PAVIOperation@@UEmpty@@@@QBEAAV?$SafeMap@PAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PAVIOperation@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Iterator@PAVListenerSourceSubscription@@UEmpty@@@@QBEAAV?$SafeMap@PAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVListenerSourceSubscription@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Iterator@PAVPushSubscription@@UEmpty@@@@QBEAAV?$SafeMap@PAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVPushSubscription@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Iterator@PAXUEmpty@@@@QBEAAV?$SafeMap@PAXUEmpty@@V?$SafeMap_Iterator@PAXUEmpty@@@@@@XZ +?GetMap@?$SafeMap_Iterator@UPluginKey@@K@@QBEAAV?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@XZ +?GetMap@?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@QBEAAV?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@XZ +?GetMap@?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QBEAAV?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@XZ +?GetMap@?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@QBEAAV?$SafeMap@VGuidKey@@PAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@XZ +?GetMap@?$SafeMap_Iterator@VKey@Locale@@K@@QBEAAV?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@XZ +?GetMap@?$SafeMap_Iterator@VStringKeyCI@@K@@QBEAAV?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@XZ +?GetMap@?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@QBEAAV?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@QBEAAV?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@XZ +?GetMap@?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@QBEAAV?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@XZ +?GetMap@?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@QBEAAV?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@XZ +?GetMap@?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QBEAAV?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@XZ +?GetMap@?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@QBEAAV?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@XZ +?GetMap@?$SafeMap_Lock@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@QBEABV?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Lock@PAVCListenerConnect@@PAV1@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@QBEABV?$SafeMap@PAVCListenerConnect@@PAV1@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@XZ +?GetMap@?$SafeMap_Lock@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@QBEABV?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Lock@PAVCListenerReceive@@PAV1@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@QBEABV?$SafeMap@PAVCListenerReceive@@PAV1@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@XZ +?GetMap@?$SafeMap_Lock@PAVCListenerSend@@PAV1@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@QBEABV?$SafeMap@PAVCListenerSend@@PAV1@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@XZ +?GetMap@?$SafeMap_Lock@PAVCListenerSignal@@PAV1@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@QBEABV?$SafeMap@PAVCListenerSignal@@PAV1@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@XZ +?GetMap@?$SafeMap_Lock@PAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@@@QBEABV?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Lock@PAVCollector@@UEmpty@@V?$SafeMap_Iterator@PAVCollector@@UEmpty@@@@@@QBEABV?$SafeMap@PAVCollector@@UEmpty@@V?$SafeMap_Iterator@PAVCollector@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Lock@PAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PAVHostOperation@@UEmpty@@@@@@QBEABV?$SafeMap@PAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PAVHostOperation@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Lock@PAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PAVIOperation@@UEmpty@@@@@@QBEABV?$SafeMap@PAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PAVIOperation@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Lock@PAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVListenerSourceSubscription@@UEmpty@@@@@@QBEABV?$SafeMap@PAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVListenerSourceSubscription@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Lock@PAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVPushSubscription@@UEmpty@@@@@@QBEABV?$SafeMap@PAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVPushSubscription@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Lock@PAXUEmpty@@V?$SafeMap_Iterator@PAXUEmpty@@@@@@QBEABV?$SafeMap@PAXUEmpty@@V?$SafeMap_Iterator@PAXUEmpty@@@@@@XZ +?GetMap@?$SafeMap_Lock@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QBEABV?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@XZ +?GetMap@?$SafeMap_Lock@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@QBEABV?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@XZ +?GetMap@?$SafeMap_Lock@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QBEABV?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@XZ +?GetMap@?$SafeMap_Lock@VGuidKey@@PAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@QBEABV?$SafeMap@VGuidKey@@PAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@XZ +?GetMap@?$SafeMap_Lock@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@QBEABV?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@XZ +?GetMap@?$SafeMap_Lock@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QBEABV?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@XZ +?GetMap@?$SafeMap_Lock@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@QBEABV?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@XZ +?GetMap@?$SafeMap_Lock@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QBEABV?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@XZ +?GetMap@?$SafeMap_Lock@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QBEABV?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@XZ +?GetMap@?$SafeMap_Lock@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@QBEABV?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@XZ +?GetMap@?$SafeMap_Lock@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QBEABV?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@XZ +?GetMap@?$SafeMap_Lock@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@QBEABV?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@XZ +?GetMaxBatchItems@CCommonConfigSettings@@UAEKXZ +?GetMaxBatchSize@CCommonConfigSettings@@UAEKXZ +?GetMaxEnvelopeSize@CCommonConfigSettings@@UAEKXZ +?GetMaxEnvelopeSize@PacketParser@@QBEABV?$PacketElement@K@1@XZ +?GetMaxTimeOut@CCommonConfigSettings@@UAEKXZ +?GetMessageAlloc@Locale@@QBAPBGAAVAutoLocalFree@@KZZ +?GetMessageEmpty@Locale@@QBEPBGAAVAutoLocalFree@@K@Z +?GetMessageId@CErrorContext@@UBEKXZ +?GetMessageId@CRequestContext@@UBEKXZ +?GetMessageId@PacketParser@@QBEABV?$PacketElement@PBG@1@XZ +?GetMessageW@Locale@@QBE_NKPAPAD0PAGK@Z +?GetMinBatchItems@CCommonConfigSettings@@UAEKXZ +?GetMinBatchSize@CCommonConfigSettings@@UAEKXZ +?GetMinBatchTimeout@CCommonConfigSettings@@UAEKXZ +?GetMinEnvelopeSize@CCommonConfigSettings@@UAEKXZ +?GetMinTimeOut@CCommonConfigSettings@@UAEKXZ +?GetNamespacePrefix@NotUnderstandSoapHeader@PacketParser@@QBEPBGXZ +?GetNamespaceUrl@NotUnderstandSoapHeader@PacketParser@@QBEPBGXZ +?GetNewStorage@RBUFFER@@IAEHI@Z +?GetNotUnderstandHeader@PacketParser@@QBEABVNotUnderstandSoapHeader@1@XZ +?GetObjectInformation@CWSManSecurityUI@@UAGJPAU_SI_OBJECT_INFO@@@Z +?GetObjectW@?$ILoader@VAdminSid@CSecurity@@@@IBEPAVAdminSid@CSecurity@@XZ +?GetObjectW@?$ILoader@VEventHandler@WSMan@@@@IBEPAVEventHandler@WSMan@@XZ +?GetObjectW@?$ILoader@VInteractiveSid@CSecurity@@@@IBEPAVInteractiveSid@CSecurity@@XZ +?GetObjectW@?$ILoader@VIpHlpApiDllLoader@@@@IBEPAVIpHlpApiDllLoader@@XZ +?GetObjectW@?$ILoader@VMachineName@@@@IBEPAVMachineName@@XZ +?GetObjectW@?$ILoader@VNetworkServiceSid@CSecurity@@@@IBEPAVNetworkServiceSid@CSecurity@@XZ +?GetObjectW@?$ILoader@VNtDsApiDllLoader@@@@IBEPAVNtDsApiDllLoader@@XZ +?GetObjectW@?$ILoader@VResources@Locale@@@@IBEPAVResources@Locale@@XZ +?GetObjectW@?$ILoader@VShell32DllLoader@@@@IBEPAVShell32DllLoader@@XZ +?GetObjectW@?$ILoader@VShlWApiDllLoader@@@@IBEPAVShlWApiDllLoader@@XZ +?GetObjectW@?$ILoader@VSubscriptionManager@@@@IBEPAVSubscriptionManager@@XZ +?GetObjectW@?$ILoader@VUser32DllLoader@@@@IBEPAVUser32DllLoader@@XZ +?GetObjectW@?$ILoader@VWSManMemCryptManager@@@@IBEPAVWSManMemCryptManager@@XZ +?GetOperationId@PacketParser@@QBEABV?$PacketElement@PBG@1@XZ +?GetOptionCount@CWSManResourceNoResourceUri@@QAEKXZ +?GetOptionTypes@CWSManResourceNoResourceUri@@QAEPAPBGXZ +?GetOptionValue@CWSManResourceNoResourceUri@@QAEPBGPBG@Z +?GetOptions@CWSManResourceNoResourceUri@@QAEPAU_WSMAN_OPTION@@XZ +?GetOptionsMustUnderstandValue@CWSManResourceNoResourceUri@@QAEHXZ +?GetOptionsSetXml@PacketParser@@QAEABV?$PacketElement@PAU_FWXML_ELEMENT@@@1@XZ +?GetOriginalUri@CWSManResource@@QAEPBGXZ +?GetPacket@PacketParser@@QAEPAVPacket@@XZ +?GetPacketPool@PacketParser@@QAEAAVPacketPool@@XZ +?GetParser@XmlReader@@QAEPAXXZ +?GetPath@Fragment@PacketParser@@QBEPBGXZ +?GetPolicyLocation@CWSManGroupPolicyManager@@AAEPBGPBU_WSMAN_POLICY_INFO@@@Z +?GetPolicyValueForConfigSetting@CConfigManager@@AAEJW4ConfigSetting@@KPAGPAKPAW4WSManGroupPolicySettingState@@PAVIRequestContext@@@Z +?GetPolicyValueForConfigSetting@CConfigManager@@AAEJW4ConfigSetting@@PAKPAW4WSManGroupPolicySettingState@@PAVIRequestContext@@@Z +?GetProfileCount@UserRecord@@QAEJXZ +?GetProfileHandle@UserRecord@@QAE_JXZ +?GetPromptType@SoapSemanticConverter@@AAE_NPBGPAW4_MI_PromptType@@PAVIRequestContext@@@Z +?GetQuotaRecord@UserRecord@@QBEPBVQuotaRecord@@XZ +?GetRefCount@ILifeTimeMgmt@@QAEJXZ +?GetReferenceParameters@ReferenceParameters@PacketParser@@QBEPBGXZ +?GetReferenceProperties@ReferenceParameters@PacketParser@@QBEPBGXZ +?GetRemainderPacket@PacketParser@@QAEPAVPacket@@PAVIRequestContext@@@Z +?GetReplyToXml@PacketParser@@QBEABVReferenceParameters@1@XZ +?GetRequestedDataLocale@PacketParser@@QBEABV?$PacketElement@PBG@1@XZ +?GetRequestedLocale@PacketParser@@QBEABV?$PacketElement@PBG@1@XZ +?GetResourceUri@PacketParser@@QBEABV?$PacketElement@PBG@1@XZ +?GetRoot@XmlReader@@QAEPAU_FWXML_ELEMENT@@XZ +?GetSecurity@CWSManSecurityUI@@UAGJKPAPAXH@Z +?GetSecurityDescriptor@CConfigManager@@QAEHPAVIRequestContext@@W4ConfigSetting@@PAPAXPAW4WSManConfigSource@@@Z +?GetSelectorSetXml@PacketParser@@QAEABV?$PacketElement@PAU_FWXML_ELEMENT@@@1@XZ +?GetSequenceId@PacketParser@@QBEABV?$PacketElement@_K@1@XZ +?GetServiceCatalog@@YGPAVCatalog@@XZ +?GetSessionId@PacketParser@@QBEABV?$PacketElement@PBG@1@XZ +?GetSessionIdGuid@PacketParser@@QAEAAU_GUID@@XZ +?GetSessionIdGuid@SessionId@PacketParser@@QAEAAU_GUID@@XZ +?GetSetting@CConfigManager@@QAEHPAVIRequestContext@@W4ConfigSetting@@KPAGPAKPAW4WSManConfigSource@@@Z +?GetShellCompressionType@PacketParser@@QBEABV?$PacketElement@PBG@1@XZ +?GetSid@CSecurity@@SGPAXXZ +?GetSizeInUse@SBUFFER@@QBEIXZ +?GetSoapBody@PacketParser@@QAEPAU_FWXML_ELEMENT@@XZ +?GetSoapHeaders@PacketParser@@QAEPAU_FWXML_ELEMENT@@XZ +?GetSourceSubscriptionId@PacketParser@@QBEABV?$PacketElement@PBG@1@XZ +?GetSpaceUsed@BufferFormatter@@UBEK_N@Z +?GetSpaceUsed@CircularBufferFormatter@@UBEK_N@Z +?GetStrPtr@TSTRBUFFER@@QAEPAGXZ +?GetString@CConfigManager@@QAEHPAVIRequestContext@@W4ConfigSetting@@KPAGPAKPAW4WSManConfigSource@@@Z +?GetString@CWSManGroupPolicyManager@@QAEHPAVIRequestContext@@W4WSManGroupPolicySetting@@KPAGPAKPAW4WSManGroupPolicySettingState@@@Z +?GetString@Locale@@QAEPBGXZ +?GetStringInternal@CConfigManager@@AAEHPAVIRequestContext@@W4ConfigSetting@@KKPAGPAKPAW4WSManConfigSource@@@Z +?GetStringInternal@CWSManGroupPolicyManager@@AAEHPAVIRequestContext@@W4WSManGroupPolicySetting@@KKPAGPAKPAW4WSManGroupPolicySettingState@@@Z +?GetSubscriptionId@PacketParser@@QBEABV?$PacketElement@PBG@1@XZ +?GetSuccessCode@OnHTTPInitialize@@QBEKXZ +?GetTimeout@PacketParser@@QBEABV?$PacketElement@K@1@XZ +?GetTo@PacketParser@@QBEABV?$PacketElement@PBG@1@XZ +?GetToken@CSecurity@@SGPAXXZ +?GetToken@UserRecord@@QAEPAXXZ +?GetUpdatedSDDL@CWSManSecurityUI@@QAEPAGPAVIRequestContext@@@Z +?GetUri@CWSManResource@@QAEPBGXZ +?GetUserAdministratorType@UserRecord@@QBE?AW4AdministratorType@UserAuthzRecord@@XZ +?GetUserNameW@UserRecord@@QAEPBGXZ +?GetValue@?$PacketElement@K@PacketParser@@QBEKXZ +?GetValue@?$PacketElement@PAU_FWXML_ELEMENT@@@PacketParser@@QBEPAU_FWXML_ELEMENT@@XZ +?GetValue@?$PacketElement@PBG@PacketParser@@QBEPBGXZ +?GetValue@?$PacketElement@_K@PacketParser@@QBE_KXZ +?GetWsmanData@TSTRBUFFER@@QAEXPAU_WSMAN_DATA@@@Z +?GetXmlDoc@PacketParser@@QAEPAUFWXML_DOCUMENT@@XZ +?GrowBuffer@BufferFormatter@@UAEKK@Z +?GrowBuffer@BufferFormatter@@UAEKXZ +?GrowBuffer@CircularBufferFormatter@@UAEKK@Z +?GrowBuffer@CircularBufferFormatter@@UAEKXZ +?HandleAutoConfiguredListener@CConfigManager@@QAEHPAVIRequestContext@@PAVLISTENER_IDENTITY@@@Z +?HandleMigration@@YGHPAVWSManMigrationContext@@@Z +?HasFaultXML@CRequestContext@@QBEHXZ +?HasHtmlError@CRequestContext@@ABEHXZ +?HasOption@CWSManResourceNoResourceUri@@QAEHPBG@Z +?ImpersonateUserOrSelf@CSecurity@@SGHW4CallSiteId@@PAX@Z +?IncreaseProfileCount@UserRecord@@QAEXXZ +?Info@EventLog@@SGXK@Z +?Info@EventLog@@SGXKGPAPBG@Z +?Info@EventLog@@SGXKPBG@Z +?Init@CBaseConfigCache@@IAEHPAVIRequestContext@@H@Z +?Init@CWSManSecurityUI@@QAEHPAG0PAVIRequestContext@@@Z +?Init@ConfigRegistry@@IAEHXZ +?Init@XmlReader@@QAEHPAVIRequestContext@@PAUWSMAN_OBJECT@@@Z +?Init@XmlReader@@QAEHPAVIRequestContext@@PBG@Z +?InitCfgMgr@CConfigManager@@AAEHPAVWSMANCONFIGTABLE_IDENTITY@@@Z +?InitCfgMgr@CConfigManager@@AAEHPAVWSMANCONFIGTABLE_IDENTITY@@PAUHKEY__@@1@Z +?InitMap@CBaseConfigCache@@CGHPAVIRequestContext@@AAV?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@@Z +?Initialize@?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@PAVCListenerConnect@@PAV1@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@PAVCListenerReceive@@PAV1@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@PAVCListenerSend@@PAV1@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@PAVCListenerSignal@@PAV1@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@PAVCollector@@UEmpty@@V?$SafeMap_Iterator@PAVCollector@@UEmpty@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@PAVCollector@@UEmpty@@V?$SafeSet_Iterator@PAVCollector@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@PAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PAVHostOperation@@UEmpty@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@PAVHostOperation@@UEmpty@@V?$SafeSet_Iterator@PAVHostOperation@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@PAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PAVIOperation@@UEmpty@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@PAVIOperation@@UEmpty@@V?$SafeSet_Iterator@PAVIOperation@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@PAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVListenerSourceSubscription@@UEmpty@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@PAVListenerSourceSubscription@@UEmpty@@V?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@PAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVPushSubscription@@UEmpty@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@PAVPushSubscription@@UEmpty@@V?$SafeSet_Iterator@PAVPushSubscription@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@VGuidKey@@PAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@VKey@CWmiPtrCache@@VMapping@2@V?$SafeMap_Iterator@VKey@CWmiPtrCache@@VMapping@2@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@VStringKey@@PAVListenerEvents@@V?$SafeMap_Iterator@VStringKey@@PAVListenerEvents@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@VStringKey@@PAVListenerSourceSubscription@@V?$SafeMap_Iterator@VStringKey@@PAVListenerSourceSubscription@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@VStringKey@@UOption@WinRM_OperationOptions@@V?$SafeMap_Iterator@VStringKey@@UOption@WinRM_OperationOptions@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@VStringKeyCI@@PAVIISEndpoint@@V?$SafeMap_Iterator@VStringKeyCI@@PAVIISEndpoint@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@V?$SafeMap_Iterator@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@UAE_NAAVIRequestContext@@@Z +?Initialize@?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@QAEAAV1@XZ +?Initialize@?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@QAEAAV1@XZ +?Initialize@?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@QAEAAV1@XZ +?Initialize@?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QAEAAV1@XZ +?Initialize@?$SafeMap_Iterator@VStringKeyCI@@K@@QAEAAV1@XZ +?Initialize@?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@QAEAAV1@XZ +?Initialize@?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QAEAAV1@XZ +?Initialize@CWSManGroupPolicyManager@@AAEHPAVIRequestContext@@PBG@Z +?Initialize@EventHandler@WSMan@@QAE_NAAVIRequestContext@@@Z +?Initialize@UserRecord@@SGXAAV1@ABUInitializer@1@@Z +?InitializeSources@CBaseConfigCache@@IAEHPAVIRequestContext@@HH@Z +?InitializeSourcesHelper@CBaseConfigCache@@MAEHPAVIRequestContext@@H@Z +?InitializeSourcesHelper@CClientConfigCache@@EAEHPAVIRequestContext@@H@Z +?InsertAtPosition@TSTRBUFFER@@QAEJPBGI@Z +?InternalFailure@CErrorContext@@UAAXKZZ +?InternalFailure@CRequestContext@@UAAXKZZ +?InternalHResult@CErrorContext@@UAAXKKZZ +?InternalHResult@CRequestContext@@UAAXKKZZ +?InternalParse@CWSManEPR@@MAEHPAVIRequestContext@@@Z +?InternalParse@CWSManResource@@MAEHPAVIRequestContext@@@Z +?IsActive@ChildLifeTimeManager@@QAE_NXZ +?IsAdmin@UserRecord@@QBE_NXZ +?IsAutoListenerConfigurationOn@CConfigManager@@SGHPAVIRequestContext@@PAH@Z +?IsCIM_Error@CRequestContext@@QAEHXZ +?IsCurrentListenerAutoConfigured@CConfigManager@@QAEHPAVIRequestContext@@PAH@Z +?IsCurrentListenerCompat@CConfigManager@@QBE_NXZ +?IsDynAlloced@RBUFFER@@IBEHXZ +?IsEPR@CWSManEPR@@UAEHXZ +?IsEPR@CWSManResourceNoResourceUri@@UAEHXZ +?IsEmpty@?$ILoader@VAdminSid@CSecurity@@@@QBE_NXZ +?IsEmpty@?$ILoader@VEventHandler@WSMan@@@@QBE_NXZ +?IsEmpty@?$ILoader@VInteractiveSid@CSecurity@@@@QBE_NXZ +?IsEmpty@?$ILoader@VIpHlpApiDllLoader@@@@QBE_NXZ +?IsEmpty@?$ILoader@VMachineName@@@@QBE_NXZ +?IsEmpty@?$ILoader@VNetworkServiceSid@CSecurity@@@@QBE_NXZ +?IsEmpty@?$ILoader@VNtDsApiDllLoader@@@@QBE_NXZ +?IsEmpty@?$ILoader@VResources@Locale@@@@QBE_NXZ +?IsEmpty@?$ILoader@VShell32DllLoader@@@@QBE_NXZ +?IsEmpty@?$ILoader@VShlWApiDllLoader@@@@QBE_NXZ +?IsEmpty@?$ILoader@VSubscriptionManager@@@@QBE_NXZ +?IsEmpty@?$ILoader@VUser32DllLoader@@@@QBE_NXZ +?IsEmpty@?$ILoader@VWSManMemCryptManager@@@@QBE_NXZ +?IsEmpty@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QBE_NXZ +?IsEmpty@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QBE_NXZ +?IsEmpty@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@QBE_NXZ +?IsEvent@SoapSemanticConverter@@QAE_NPAU_FWXML_ELEMENT@@@Z +?IsEventEnabled@EventHandler@WSMan@@SG_NABU_EVENT_DESCRIPTOR@@@Z +?IsEventProviderEnabled@EventHandler@WSMan@@SG_NXZ +?IsFound@?$PacketElement@K@PacketParser@@QBEHXZ +?IsFound@?$PacketElement@PAU_FWXML_ELEMENT@@@PacketParser@@QBEHXZ +?IsFound@?$PacketElement@PBG@PacketParser@@QBEHXZ +?IsFound@?$PacketElement@_K@PacketParser@@QBEHXZ +?IsGeneratingError@CErrorContext@@UBE_NXZ +?IsIdentifyPacket@PacketParser@@QBEHXZ +?IsInCommitMode@BufferFormatter@@QAE_NXZ +?IsInteractive@UserRecord@@QBE_NXZ +?IsLocalSystemSid@CSecurity@@SGHPAX@Z +?IsMustUnderstand@?$PacketElement@PBG@PacketParser@@QBEHXZ +?IsNonOperativePacket@PacketParser@@QBEHXZ +?IsPolicyControlledSetting@CConfigManager@@QAEHPAVIRequestContext@@W4ConfigSetting@@PAH@Z +?IsRobustConnectionPacket@PacketParser@@QBEHXZ +?IsStreamingEvent@SoapSemanticConverter@@QAE_NPAU_FWXML_ELEMENT@@PAVIRequestContext@@@Z +?IsStringNullOrEmpty@@YGHPBG@Z +?IsValid@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QBE_NXZ +?IsValid@?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@QBE_NXZ +?IsValid@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QBE_NXZ +?IsValid@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QBE_NXZ +?IsValid@?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@QBE_NXZ +?IsValid@?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@PAVCollector@@UEmpty@@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@PAVHostOperation@@UEmpty@@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@PAVIOperation@@UEmpty@@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@PAVListenerSourceSubscription@@UEmpty@@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@PAVPushSubscription@@UEmpty@@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@PAXUEmpty@@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@UPluginKey@@K@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@VKey@CWmiPtrCache@@VMapping@2@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@VKey@Locale@@K@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@VStringKey@@PAVListenerEvents@@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@VStringKey@@PAVListenerSourceSubscription@@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@VStringKey@@UOption@WinRM_OperationOptions@@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@VStringKeyCI@@K@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@VStringKeyCI@@PAVIISEndpoint@@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QBE_NXZ +?IsValid@?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@QBE_NXZ +?IsValid@CWSManCriticalSection@@QBEHXZ +?IsValid@RBUFFER@@IBEHXZ +?Key@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QBEPBVStringKeyCI@@ABV2@@Z +?Key@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QBEPBVStringKeyCI@@ABV2@@Z +?Key@?$SafeMap_Iterator@VKey@Locale@@K@@QBEABV0Locale@@XZ +?Key@?$SafeMap_Iterator@VStringKeyCI@@K@@QBEABVStringKeyCI@@XZ +?Key@?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@QBEABVStringKeyCI@@XZ +?LogError@CBaseConfigCache@@UAEXKK@Z +?LogErrorCode@CErrorContext@@QAEXXZ +?LogErrorCode@CRequestContext@@QAEXXZ +?LogErrorMessage@CRequestContext@@QAEXXZ +?LogNotificationEvent@CWSManGroupPolicyManager@@CGXK@Z +?LogReadErrors@CBaseConfigCache@@IAE?AW4ErrorLogging@@W4ConfigChangeSources@@@Z +?LowerBound@?$SafeMap_Iterator@VKey@Locale@@K@@QAEXABVKey@Locale@@@Z +?MakeUrlBinding@@YGHKPAGPAKPBG222@Z +?MakeUrlBinding@@YGPAGPAVIRequestContext@@PBG111@Z +?MapGeneric@CWSManSecurityUI@@UAGJPBU_GUID@@PAEPAK@Z +?Me@?$AutoCleanup@V?$AutoDelete@D@@PAD@@AAEAAV?$AutoDelete@D@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@G@@PAG@@AAEAAV?$AutoDelete@G@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@UIPRange@CWSManIPFilter@@@@PAUIPRange@CWSManIPFilter@@@@AAEAAV?$AutoDelete@UIPRange@CWSManIPFilter@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@U_SID@@@@PAU_SID@@@@AAEAAV?$AutoDelete@U_SID@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@PAU_WSMAN_STREAM_ID_SET@@@@AAEAAV?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$Handle@VISubscription@@@@@@PAV?$Handle@VISubscription@@@@@@AAEAAV?$AutoDelete@V?$Handle@VISubscription@@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@PAV?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@AAEAAV?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@PAV?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@AAEAAV?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@PAV?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@AAEAAV?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@PAV?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@AAEAAV?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@PAV?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@AAEAAV?$AutoDelete@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@PAV?$SafeMap_Iterator@VStringKeyCI@@K@@@@AAEAAV?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@PAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@AAEAAV?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@PAV?$SafeSet@PAVCCertMapping@@@@@@AAEAAV?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@PAV?$SafeSet@PAVCShellUriSettings@@@@@@AAEAAV?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@PAV?$SafeSet_Iterator@PAVCListenerOperation@@@@@@AAEAAV?$AutoDelete@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVCollector@@@@@@PAV?$SafeSet_Iterator@PAVCollector@@@@@@AAEAAV?$AutoDelete@V?$SafeSet_Iterator@PAVCollector@@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVHostOperation@@@@@@PAV?$SafeSet_Iterator@PAVHostOperation@@@@@@AAEAAV?$AutoDelete@V?$SafeSet_Iterator@PAVHostOperation@@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@PAV?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@AAEAAV?$AutoDelete@V?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SimpleStack@VCListenerOperation@@@@@@PAV?$SimpleStack@VCListenerOperation@@@@@@AAEAAV?$AutoDelete@V?$SimpleStack@VCListenerOperation@@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$SimpleStack@VShellHostEntry@@@@@@PAV?$SimpleStack@VShellHostEntry@@@@@@AAEAAV?$AutoDelete@V?$SimpleStack@VShellHostEntry@@@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$queue@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$deque@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$transport_allocator@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@@@@std@@@std@@@@PAV?$queue@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$deque@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$transport_allocator@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@@@@std@@@std@@@@AAEAAV?$AutoDelete@V?$queue@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$deque@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$transport_allocator@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@@@@std@@@std@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@AAEAAV?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@PAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@AAEAAV?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$vector@PAVCWSManRequest@@V?$transport_allocator@PAVCWSManRequest@@@@@std@@@@PAV?$vector@PAVCWSManRequest@@V?$transport_allocator@PAVCWSManRequest@@@@@std@@@@AAEAAV?$AutoDelete@V?$vector@PAVCWSManRequest@@V?$transport_allocator@PAVCWSManRequest@@@@@std@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@PAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@AAEAAV?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@PAV?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@AAEAAV?$AutoDelete@V?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@V?$vector@PAVWSManHttpSenderConnection@@V?$transport_allocator@PAVWSManHttpSenderConnection@@@@@std@@@@PAV?$vector@PAVWSManHttpSenderConnection@@V?$transport_allocator@PAVWSManHttpSenderConnection@@@@@std@@@@AAEAAV?$AutoDelete@V?$vector@PAVWSManHttpSenderConnection@@V?$transport_allocator@PAVWSManHttpSenderConnection@@@@@std@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VAdminSid@CSecurity@@@@PAVAdminSid@CSecurity@@@@AAEAAV?$AutoDelete@VAdminSid@CSecurity@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VBlockedRecord@@@@PAVBlockedRecord@@@@AAEAAV?$AutoDelete@VBlockedRecord@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@AAEAAV?$AutoDelete@VCBaseConfigCache@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VCCertMapping@@@@PAVCCertMapping@@@@AAEAAV?$AutoDelete@VCCertMapping@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VCConfigChangeSource@@@@PAVCConfigChangeSource@@@@AAEAAV?$AutoDelete@VCConfigChangeSource@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VCListenerSettings@@@@PAVCListenerSettings@@@@AAEAAV?$AutoDelete@VCListenerSettings@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VCObserverConfigChangeErrors@@@@PAVCObserverConfigChangeErrors@@@@AAEAAV?$AutoDelete@VCObserverConfigChangeErrors@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PAVCServiceWatcher@CServiceConfigCache@@@@AAEAAV?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VCShellUriSettings@@@@PAVCShellUriSettings@@@@AAEAAV?$AutoDelete@VCShellUriSettings@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VCWSManEPR@@@@PAVCWSManEPR@@@@AAEAAV?$AutoDelete@VCWSManEPR@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VCWSManResource@@@@PAVCWSManResource@@@@AAEAAV?$AutoDelete@VCWSManResource@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VCertHash@@@@PAVCertHash@@@@AAEAAV?$AutoDelete@VCertHash@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PAVConfigUpdate@@@@AAEAAV?$AutoDelete@VConfigUpdate@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@AAEAAV?$AutoDelete@VEnumSinkEx@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VEventHandler@WSMan@@@@PAVEventHandler@WSMan@@@@AAEAAV?$AutoDelete@VEventHandler@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VExpiredOperationIdRecord@@@@PAVExpiredOperationIdRecord@@@@AAEAAV?$AutoDelete@VExpiredOperationIdRecord@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VGPApiManager@@@@PAVGPApiManager@@@@AAEAAV?$AutoDelete@VGPApiManager@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@AAEAAV?$AutoDelete@VGeneralSinkEx@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VIChannelObserverFactory@@@@PAVIChannelObserverFactory@@@@AAEAAV?$AutoDelete@VIChannelObserverFactory@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@AAEAAV?$AutoDelete@VIQueryDASHSMASHInterface@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@AAEAAV?$AutoDelete@VISpecification@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VInteractiveSid@CSecurity@@@@PAVInteractiveSid@CSecurity@@@@AAEAAV?$AutoDelete@VInteractiveSid@CSecurity@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VIpHlpApiDllLoader@@@@PAVIpHlpApiDllLoader@@@@AAEAAV?$AutoDelete@VIpHlpApiDllLoader@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VMachineName@@@@PAVMachineName@@@@AAEAAV?$AutoDelete@VMachineName@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VMasterReceiveData@CListenerReceive@@@@PAVMasterReceiveData@CListenerReceive@@@@AAEAAV?$AutoDelete@VMasterReceiveData@CListenerReceive@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VNetworkServiceSid@CSecurity@@@@PAVNetworkServiceSid@CSecurity@@@@AAEAAV?$AutoDelete@VNetworkServiceSid@CSecurity@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VNtDsApiDllLoader@@@@PAVNtDsApiDllLoader@@@@AAEAAV?$AutoDelete@VNtDsApiDllLoader@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@PAVOptionValue@SessionOptions@Client@WSMan@@@@AAEAAV?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VPacketCreator@@@@PAVPacketCreator@@@@AAEAAV?$AutoDelete@VPacketCreator@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VPacketParser@@@@PAVPacketParser@@@@AAEAAV?$AutoDelete@VPacketParser@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VResources@Locale@@@@PAVResources@Locale@@@@AAEAAV?$AutoDelete@VResources@Locale@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VRunAsConfiguration@@@@PAVRunAsConfiguration@@@@AAEAAV?$AutoDelete@VRunAsConfiguration@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VSecurityEntry@Catalog@@@@PAVSecurityEntry@Catalog@@@@AAEAAV?$AutoDelete@VSecurityEntry@Catalog@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VSendPacketArgs@RobustConnectionBuffer@@@@PAVSendPacketArgs@RobustConnectionBuffer@@@@AAEAAV?$AutoDelete@VSendPacketArgs@RobustConnectionBuffer@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VServiceSoapProcessor@@@@PAVServiceSoapProcessor@@@@AAEAAV?$AutoDelete@VServiceSoapProcessor@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VShell32DllLoader@@@@PAVShell32DllLoader@@@@AAEAAV?$AutoDelete@VShell32DllLoader@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VShlWApiDllLoader@@@@PAVShlWApiDllLoader@@@@AAEAAV?$AutoDelete@VShlWApiDllLoader@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VSubscriptionEnumerator@@@@PAVSubscriptionEnumerator@@@@AAEAAV?$AutoDelete@VSubscriptionEnumerator@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VSubscriptionManager@@@@PAVSubscriptionManager@@@@AAEAAV?$AutoDelete@VSubscriptionManager@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@AAEAAV?$AutoDelete@VTSTRBUFFER@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VUniqueStringOverflow@@@@PAVUniqueStringOverflow@@@@AAEAAV?$AutoDelete@VUniqueStringOverflow@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VUser32DllLoader@@@@PAVUser32DllLoader@@@@AAEAAV?$AutoDelete@VUser32DllLoader@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@PAVWSMANCONFIGTABLE_IDENTITY@@@@AAEAAV?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VWSManMemCryptManager@@@@PAVWSManMemCryptManager@@@@AAEAAV?$AutoDelete@VWSManMemCryptManager@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@AAEAAV?$AutoDelete@VWmiEnumContext@@@@XZ +?Me@?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PAVXmlReader@@@@AAEAAV?$AutoDelete@VXmlReader@@@@XZ +?Me@?$AutoCleanup@V?$AutoDeleteVector@$$CBG@@PBG@@AAEAAV?$AutoDeleteVector@$$CBG@@XZ +?Me@?$AutoCleanup@V?$AutoDeleteVector@D@@PAD@@AAEAAV?$AutoDeleteVector@D@@XZ +?Me@?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@AAEAAV?$AutoDeleteVector@E@@XZ +?Me@?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@AAEAAV?$AutoDeleteVector@G@@XZ +?Me@?$AutoCleanup@V?$AutoDeleteVector@H@@PAH@@AAEAAV?$AutoDeleteVector@H@@XZ +?Me@?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@AAEAAV?$AutoDeleteVector@PAG@@XZ +?Me@?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@AAEAAV?$AutoDeleteVector@PBG@@XZ +?Me@?$AutoCleanup@V?$AutoDeleteVector@U_CONFIG_UPDATE@@@@PAU_CONFIG_UPDATE@@@@AAEAAV?$AutoDeleteVector@U_CONFIG_UPDATE@@@@XZ +?Me@?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@AAEAAV?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@XZ +?Me@?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@AAEAAV?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@XZ +?Me@?$AutoCleanup@V?$AutoDeleteVector@U_WSMAN_OPTION@@@@PAU_WSMAN_OPTION@@@@AAEAAV?$AutoDeleteVector@U_WSMAN_OPTION@@@@XZ +?Me@?$AutoCleanup@V?$AutoDeleteVector@X@@PAX@@AAEAAV?$AutoDeleteVector@X@@XZ +?Me@?$AutoCleanup@V?$AutoFree@E@@PAE@@AAEAAV?$AutoFree@E@@XZ +?Me@?$AutoCleanup@V?$AutoLocklessItemRecycle@VPacket@@@@PAVPacket@@@@AAEAAV?$AutoLocklessItemRecycle@VPacket@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIAppHostAdminManager@@@@PAUIAppHostAdminManager@@@@AAEAAV?$AutoRelease@UIAppHostAdminManager@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIAppHostChildElementCollection@@@@PAUIAppHostChildElementCollection@@@@AAEAAV?$AutoRelease@UIAppHostChildElementCollection@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIAppHostConfigException@@@@PAUIAppHostConfigException@@@@AAEAAV?$AutoRelease@UIAppHostConfigException@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIAppHostElement@@@@PAUIAppHostElement@@@@AAEAAV?$AutoRelease@UIAppHostElement@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIAppHostElementCollection@@@@PAUIAppHostElementCollection@@@@AAEAAV?$AutoRelease@UIAppHostElementCollection@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIAppHostProperty@@@@PAUIAppHostProperty@@@@AAEAAV?$AutoRelease@UIAppHostProperty@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIAppHostPropertyCollection@@@@PAUIAppHostPropertyCollection@@@@AAEAAV?$AutoRelease@UIAppHostPropertyCollection@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@AAEAAV?$AutoRelease@UIClientSecurity@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@AAEAAV?$AutoRelease@UIEnumWbemClassObject@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@AAEAAV?$AutoRelease@UIErrorInfo@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@AAEAAV?$AutoRelease@UIUnknown@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@AAEAAV?$AutoRelease@UIWbemClassObject@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@AAEAAV?$AutoRelease@UIWbemContext@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@AAEAAV?$AutoRelease@UIWbemLocator@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@AAEAAV?$AutoRelease@UIWbemObjectTextSrc@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@AAEAAV?$AutoRelease@UIWbemPath@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@AAEAAV?$AutoRelease@UIWbemPathKeyList@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@AAEAAV?$AutoRelease@UIWbemQualifierSet@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@AAEAAV?$AutoRelease@UIWbemQuery@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@AAEAAV?$AutoRelease@UIWbemServices@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VApplication@Client@WSMan@@@@PAVApplication@Client@WSMan@@@@AAEAAV?$AutoRelease@VApplication@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@AAEAAV?$AutoRelease@VCBaseConfigCache@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCClientConfigCache@@@@PAVCClientConfigCache@@@@AAEAAV?$AutoRelease@VCClientConfigCache@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PAVCClientConfigSettings@@@@AAEAAV?$AutoRelease@VCClientConfigSettings@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCCommonConfigSettings@@@@PAVCCommonConfigSettings@@@@AAEAAV?$AutoRelease@VCCommonConfigSettings@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@PAVCConfigCacheMap@CBaseConfigCache@@@@AAEAAV?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PAVCConfigManager@@@@AAEAAV?$AutoRelease@VCConfigManager@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCListenerCommand@@@@PAVCListenerCommand@@@@AAEAAV?$AutoRelease@VCListenerCommand@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCListenerMasterOperation@@@@PAVCListenerMasterOperation@@@@AAEAAV?$AutoRelease@VCListenerMasterOperation@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCListenerReceive@@@@PAVCListenerReceive@@@@AAEAAV?$AutoRelease@VCListenerReceive@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCListenerShell@@@@PAVCListenerShell@@@@AAEAAV?$AutoRelease@VCListenerShell@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCRemoteOperation@@@@PAVCRemoteOperation@@@@AAEAAV?$AutoRelease@VCRemoteOperation@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PAVCRemoteSession@@@@AAEAAV?$AutoRelease@VCRemoteSession@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PAVCRequestContext@@@@AAEAAV?$AutoRelease@VCRequestContext@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCServiceCommonConfigSettings@@@@PAVCServiceCommonConfigSettings@@@@AAEAAV?$AutoRelease@VCServiceCommonConfigSettings@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCServiceConfigCache@@@@PAVCServiceConfigCache@@@@AAEAAV?$AutoRelease@VCServiceConfigCache@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCServiceConfigSettings@@@@PAVCServiceConfigSettings@@@@AAEAAV?$AutoRelease@VCServiceConfigSettings@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@AAEAAV?$AutoRelease@VCWSManEPR@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyCache@@@@PAVCWSManGroupPolicyCache@@@@AAEAAV?$AutoRelease@VCWSManGroupPolicyCache@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyManager@@@@PAVCWSManGroupPolicyManager@@@@AAEAAV?$AutoRelease@VCWSManGroupPolicyManager@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCWSManObject@@@@PAVCWSManObject@@@@AAEAAV?$AutoRelease@VCWSManObject@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PAVCWSManResource@@@@AAEAAV?$AutoRelease@VCWSManResource@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCWSManSession@@@@PAVCWSManSession@@@@AAEAAV?$AutoRelease@VCWSManSession@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@AAEAAV?$AutoRelease@VCWinRSPluginConfigCache@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigSettings@@@@PAVCWinRSPluginConfigSettings@@@@AAEAAV?$AutoRelease@VCWinRSPluginConfigSettings@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCommand@Client@WSMan@@@@PAVCommand@Client@WSMan@@@@AAEAAV?$AutoRelease@VCommand@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VConfigNotification@@@@PAVConfigNotification@@@@AAEAAV?$AutoRelease@VConfigNotification@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@PAVConnectShellOperation@Client@WSMan@@@@AAEAAV?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@PAVCreateShellOperation@Client@WSMan@@@@AAEAAV?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@PAVDeleteShellOperation@Client@WSMan@@@@AAEAAV?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@PAVDisconnectOperation@Client@WSMan@@@@AAEAAV?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@AAEAAV?$AutoRelease@VEnumSinkEx@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@AAEAAV?$AutoRelease@VGeneralSinkEx@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VHostMappingTable@@@@PAVHostMappingTable@@@@AAEAAV?$AutoRelease@VHostMappingTable@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VIISConfigSettings@@@@PAVIISConfigSettings@@@@AAEAAV?$AutoRelease@VIISConfigSettings@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VIPCSoapProcessor@@@@PAVIPCSoapProcessor@@@@AAEAAV?$AutoRelease@VIPCSoapProcessor@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@AAEAAV?$AutoRelease@VIRequestContext@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VISubscription@@@@PAVISubscription@@@@AAEAAV?$AutoRelease@VISubscription@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PAVInboundRequestDetails@@@@AAEAAV?$AutoRelease@VInboundRequestDetails@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VProxyManager@Client@WSMan@@@@PAVProxyManager@Client@WSMan@@@@AAEAAV?$AutoRelease@VProxyManager@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VProxySelection@Client@WSMan@@@@PAVProxySelection@Client@WSMan@@@@AAEAAV?$AutoRelease@VProxySelection@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VPushSubscribeOperation@@@@PAVPushSubscribeOperation@@@@AAEAAV?$AutoRelease@VPushSubscribeOperation@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VPushSubscription@@@@PAVPushSubscription@@@@AAEAAV?$AutoRelease@VPushSubscription@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VReceiveOperation@Client@WSMan@@@@PAVReceiveOperation@Client@WSMan@@@@AAEAAV?$AutoRelease@VReceiveOperation@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VReconnectOperation@Client@WSMan@@@@PAVReconnectOperation@Client@WSMan@@@@AAEAAV?$AutoRelease@VReconnectOperation@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VSendOperation@Client@WSMan@@@@PAVSendOperation@Client@WSMan@@@@AAEAAV?$AutoRelease@VSendOperation@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@AAEAAV?$AutoRelease@VShell@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VShellInfo@@@@PAVShellInfo@@@@AAEAAV?$AutoRelease@VShellInfo@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VSignalOperation@Client@WSMan@@@@PAVSignalOperation@Client@WSMan@@@@AAEAAV?$AutoRelease@VSignalOperation@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VUserRecord@@@@PAVUserRecord@@@@AAEAAV?$AutoRelease@VUserRecord@@@@XZ +?Me@?$AutoCleanup@V?$AutoRelease@VWSManHttpListener@@@@PAVWSManHttpListener@@@@AAEAAV?$AutoRelease@VWSManHttpListener@@@@XZ +?Me@?$AutoCleanup@V?$AutoReleaseEx@VHostMappingTableEntry@@@@PAVHostMappingTableEntry@@@@AAEAAV?$AutoReleaseEx@VHostMappingTableEntry@@@@XZ +?Me@?$AutoCleanup@V?$AutoReleaseEx@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@AAEAAV?$AutoReleaseEx@VShell@Client@WSMan@@@@XZ +?Me@?$AutoCleanup@VAutoBstr@@PAG@@AAEAAVAutoBstr@@XZ +?Me@?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@AAEAAVAutoBstrNoAlloc@@XZ +?Me@?$AutoCleanup@VAutoCertContext@@PBU_CERT_CONTEXT@@@@AAEAAVAutoCertContext@@XZ +?Me@?$AutoCleanup@VAutoChainContext@@PBU_CERT_CHAIN_CONTEXT@@@@AAEAAVAutoChainContext@@XZ +?Me@?$AutoCleanup@VAutoCoTaskMemFree@@PAX@@AAEAAVAutoCoTaskMemFree@@XZ +?Me@?$AutoCleanup@VAutoFwXmlCloseParser@@PAX@@AAEAAVAutoFwXmlCloseParser@@XZ +?Me@?$AutoCleanup@VAutoHandle@@PAX@@AAEAAVAutoHandle@@XZ +?Me@?$AutoCleanup@VAutoImpersonateUser@@PAX@@AAEAAVAutoImpersonateUser@@XZ +?Me@?$AutoCleanup@VAutoLibrary@@PAUHINSTANCE__@@@@AAEAAVAutoLibrary@@XZ +?Me@?$AutoCleanup@VAutoLocalFree@@PAX@@AAEAAVAutoLocalFree@@XZ +?Me@?$AutoCleanup@VAutoMIClass@@PAU_MI_Class@@@@AAEAAVAutoMIClass@@XZ +?Me@?$AutoCleanup@VAutoMIInstance@@PAU_MI_Instance@@@@AAEAAVAutoMIInstance@@XZ +?Me@?$AutoCleanup@VAutoObject@@PAUWSMAN_OBJECT@@@@AAEAAVAutoObject@@XZ +?Me@?$AutoCleanup@VAutoRegKey@@PAUHKEY__@@@@AAEAAVAutoRegKey@@XZ +?Me@?$AutoCleanup@VAutoSecurityDescriptor@@PAX@@AAEAAVAutoSecurityDescriptor@@XZ +?Me@?$AutoCleanup@VAutoWaitHandle@@PAX@@AAEAAVAutoWaitHandle@@XZ +?MoveSettingsToMigrationKey@@YGHPAVIRequestContext@@_N@Z +?NUM_BOMS@PacketFormatter@@0HB DATA +?NUM_CHARSETS@PacketFormatter@@0HB DATA +?Next@TSTRBUFFER@@QBEPBGPBG@Z +?NextCertMapping@CConfigManager@@QAEHXZ +?NextListener@CConfigManager@@QAEHXZ +?NextRow@CConfigManager@@QAEHXZ +?NextShellUri@CConfigManager@@QAEHXZ +?NoSemantics@ExtendedSemantic@@2KB DATA +?NotifyObservers@CWSManGroupPolicyManager@@UAEHPAVIRequestContext@@PAVIWSManGroupPolicyCacheDataProvider@@@Z +?OnChange@CBaseConfigCache@@UAEXW4ConfigChangeSources@@KW4ConfigChangeSeverityType@@@Z +?OpenRegKey@ConfigRegistry@@IAEJPAU_CONFIG_INFO@@KPAVWSMANCONFIGTABLE_IDENTITY@@PAVAutoRegKey@@PAUHKEY__@@@Z +?OverrideMaxEnvelopeSize@PacketParser@@QAEXK@Z +?OverrideTimeout@PacketParser@@QAEXK@Z +?Parse@CWSManResource@@SGPAV1@PAVIRequestContext@@PBG11PAU_WSMAN_SELECTOR_SET@@PAU_WSMAN_OPTION_SET@@H@Z +?Parse@CWSManResource@@SGPAV1@PAVIRequestContext@@PBGH@Z +?Parse@XmlReader@@AAEHPAVIRequestContext@@@Z +?ParseAction@PacketParser@@AAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@_N@Z +?ParseActivityId@PacketParser@@AAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z +?ParseBookmark@PacketParser@@AAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z +?ParseDataLocale@PacketParser@@AAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z +?ParseEprElement@CWSManEPR@@SGPAV1@PAVIRequestContext@@PAU_FWXML_ELEMENT@@@Z +?ParseEvent@SoapSemanticConverter@@QAEPAVSemanticMessage@@PAU_FWXML_ELEMENT@@PAKPAVIRequestContext@@@Z +?ParseFaultTo@PacketParser@@AAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z +?ParseFragment@PacketParser@@AAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z +?ParseHeader@PacketParser@@AAEHPAVCRequestContext@@PAU_FWXML_ELEMENT@@HPAVCServiceCommonConfigSettings@@@Z +?ParseHeaders@CWSManResourceNoResourceUri@@QAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@11@Z +?ParseHeaders@PacketParser@@AAEHPAVCRequestContext@@PAVCServiceCommonConfigSettings@@@Z +?ParseLocale@PacketParser@@AAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z +?ParseMachineID@PacketParser@@AAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@@Z +?ParseMaxEnvelopeSize@PacketParser@@AAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@HPAVCServiceCommonConfigSettings@@@Z +?ParseMessageId@PacketParser@@AAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@_N@Z +?ParseOperationId@PacketParser@@AAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z +?ParseOptionSet@CWSManResourceNoResourceUri@@QAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@@Z +?ParseOptions@PacketParser@@AAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z +?ParsePacket@PacketParser@@QAEHPAVCRequestContext@@PAVPacket@@PAVCServiceCommonConfigSettings@@@Z +?ParsePacketInternal@PacketParser@@AAEHPAVCRequestContext@@PAU_FWXML_ELEMENT@@PAVCServiceCommonConfigSettings@@@Z +?ParseReplyTo@PacketParser@@AAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@@Z +?ParseResourceLocator@CWSManResource@@SGPAV1@PAVIRequestContext@@PAU_WSMAN_RESOURCE_LOCATOR@@@Z +?ParseResourceUri@PacketParser@@AAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z +?ParseResponse@SoapSemanticConverter@@QAE_NPAU_FWXML_ELEMENT@@PAKPA_NPAVIRequestContext@@@Z +?ParseRobustConnectionAckSequenceId@PacketParser@@AAEKPA_K@Z +?ParseRobustConnectionMessages@PacketParser@@QAEKPAW4PacketType@1@PA_NPA_K2@Z +?ParseSelectors@PacketParser@@AAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z +?ParseSequenceId@PacketParser@@AAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@@Z +?ParseSessionId@PacketParser@@AAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z +?ParseShellCompression@PacketParser@@AAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z +?ParseStream@PacketParser@@QAEXPAVCRequestContext@@PAVITransportReceiver@@PAVPacket@@PAVCServiceCommonConfigSettings@@@Z +?ParseSubscriptionAgentPacket@PacketParser@@QAEHPAVCRequestContext@@PAVPacket@@PAVCServiceConfigSettings@@@Z +?ParseSubscriptionID@PacketParser@@AAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@H@Z +?ParseTimeout@PacketParser@@AAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@HPAVCServiceCommonConfigSettings@@@Z +?ParseToAddress@PacketParser@@AAEHPAVCRequestContext@@PAU_FWXML_ELEMENT@@@Z +?Passed@CErrorContext@@UBEHXZ +?PolicyChanged@CWSManGroupPolicyManager@@AAEXE@Z +?PostChange@CBaseConfigCache@@MAEHPAVIRequestContext@@PAVCCommonConfigSettings@@1@Z +?PostChange@CServiceConfigCache@@EAEHPAVIRequestContext@@PAVCCommonConfigSettings@@1@Z +?PostError@CBaseConfigCache@@MAEXK@Z +?PostError@CServiceConfigCache@@EAEXK@Z +?PrepareToCommitWithSize@BufferFormatter@@UAEKK@Z +?PrepareToCommitWithSize@CircularBufferFormatter@@UAEKK@Z +?PrintHandleTrace@@YGXPAX@Z +?PrintReleaseTrace@@YGXPAXJ@Z +?PrintUnregisterWaitTrace@@YGXPAX@Z +?ProcessContext@CErrorContext@@UAEHHPAKPAU_WSMAN_FAULT_OBJECT@@@Z +?ProcessContext@CErrorContext@@UAEHHPAU_WSMAN_ERROR@@@Z +?ProcessContext@CRequestContext@@QAEHHPAU_WSMAN_ENUMERATOR_RESULT@@@Z +?ProcessContext@CRequestContext@@QAEHHPAU_WSMAN_EVENTS_RESULT@@@Z +?ProcessContext@CRequestContext@@QAEHHPAU_WSMAN_RESULT@@@Z +?ProcessContext@CRequestContext@@QAEHHPAU_WSMAN_STATUS@@@Z +?ProcessContext@CRequestContext@@UAEHHPAKPAU_WSMAN_FAULT_OBJECT@@@Z +?ProcessContext@CRequestContext@@UAEHHPAU_WSMAN_ERROR@@@Z +?ProcessEPR@CWSManEPR@@AAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@@Z +?ProcessFragmentDialect@CWSManResourceNoResourceUri@@IAEHPAVIRequestContext@@PBGK@Z +?ProcessFragmentPath@CWSManResourceNoResourceUri@@IAEHPAVIRequestContext@@PBGK@Z +?ProcessKey@CWSManResourceNoResourceUri@@IAEHPAVIRequestContext@@PBG1@Z +?ProcessNestedEPR@CWSManResourceNoResourceUri@@IAEHPAVIRequestContext@@PBGPAU_FWXML_ELEMENT@@@Z +?ProcessOption@CWSManResourceNoResourceUri@@IAEHPAVIRequestContext@@PBG11H@Z +?ProcessRefParameters@CWSManEPR@@AAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@@Z +?ProcessRefProperties@CWSManEPR@@AAEHPAVIRequestContext@@PAU_FWXML_ELEMENT@@@Z +?ProcessUri@CWSManResource@@QAEHPAVIRequestContext@@PBGK@Z +?Progress@ExtendedSemantic@@2KB DATA +?PropertySheetPageCallback@CWSManSecurityUI@@UAGJPAUHWND__@@IW4_SI_PAGE_TYPE@@@Z +?ProviderFailure@CErrorContext@@UBEHXZ +?ProviderShutdownCleanup@CWinRSPluginConfigCache@@SGXXZ +?PutOverrideValue@?$PacketElement@K@PacketParser@@QAEXK@Z +?PutOverrideValue@?$PacketElement@PBG@PacketParser@@QAEXPBG@Z +?PutValue@?$PacketElement@K@PacketParser@@QAEXKH@Z +?PutValue@?$PacketElement@PAU_FWXML_ELEMENT@@@PacketParser@@QAEXPAU_FWXML_ELEMENT@@H@Z +?PutValue@?$PacketElement@PBG@PacketParser@@QAEXPBGH@Z +?PutValue@?$PacketElement@_K@PacketParser@@QAEX_KH@Z +?PutValue@Fragment@PacketParser@@QAEXPBG0H@Z +?PutValue@NotUnderstandSoapHeader@PacketParser@@QAEXPBG00@Z +?PutValue@ReferenceParameters@PacketParser@@QAEKPAU_FWXML_ELEMENT@@H@Z +?QueryInterface@CWSManSecurityUI@@UAGJABU_GUID@@PAPAX@Z +?QueryPtr@RBUFFER@@QBEPAXXZ +?QueryRegValue@CConfigManager@@AAEJPAU_CONFIG_INFO@@PAKKPAE1@Z +?QueryRegValue@CWSManGroupPolicyManager@@AAEJPAVIRequestContext@@PBU_WSMAN_POLICY_INFO@@PAKKPAE2@Z +?QuerySize@RBUFFER@@QBEIXZ +?QueryStr@TSTRBUFFER@@QBEPBGXZ +?QuotaComplete@UserRecord@@UAEXPAU_WSMAN_AUTHZ_QUOTA@@KPBG@Z +?ReAlloc@WSManMemory@@SGPAXPAXIHW4_NitsFaultMode@@@Z +?ReadCertMappingRegistryKey@CConfigManager@@SGHPAVIRequestContext@@PAVCERTMAPPING_IDENTITY@@PAG@Z +?ReadCredentialsFromCredmanStore@CConfigManager@@SGHPAVIRequestContext@@PAG1@Z +?ReadCurrentSettings@CClientConfigCache@@EAEPAVCCommonConfigSettings@@PAVIRequestContext@@W4ErrorLogging@@@Z +?ReadCurrentSettings@CServiceConfigCache@@EAEPAVCCommonConfigSettings@@PAVIRequestContext@@W4ErrorLogging@@@Z +?ReadCurrentSettings@CWinRSPluginConfigCache@@EAEPAVCCommonConfigSettings@@PAVIRequestContext@@W4ErrorLogging@@@Z +?ReadDefaultSettings@CClientConfigCache@@EAEPAVCCommonConfigSettings@@PAVIRequestContext@@@Z +?ReadDefaultSettings@CServiceConfigCache@@EAEPAVCCommonConfigSettings@@PAVIRequestContext@@@Z +?ReadDefaultSettings@CWinRSPluginConfigCache@@EAEPAVCCommonConfigSettings@@PAVIRequestContext@@@Z +?ReadShellUriRegistryKey@CConfigManager@@SGHPAVIRequestContext@@PAVSHELLURI_IDENTITY@@PAG@Z +?ReadTableRegistryKey@CConfigManager@@SGHPAVIRequestContext@@PAVWSMANCONFIGTABLE_IDENTITY@@PAG@Z +?ReallocStorage@RBUFFER@@IAEHI@Z +?RecordAccessDenied@CErrorContext@@UAEXXZ +?RecordAccessDenied@CRequestContext@@UAEXXZ +?RecordAccessDeniedWithDetail@CErrorContext@@UAAXKZZ +?RecordAccessDeniedWithDetail@CRequestContext@@UAAXKZZ +?RecordFailure@CErrorContext@@UAAXKKZZ +?RecordFailure@CErrorContext@@UAAXW4_MI_Result@@KKZZ +?RecordFailure@CErrorContext@@UAEXK@Z +?RecordFailure@CErrorContext@@UAEXPAU_WSMAN_FAULT_OBJECT@@@Z +?RecordFailure@CRequestContext@@AAEXKKPAPAD0@Z +?RecordFailure@CRequestContext@@UAAXKKZZ +?RecordFailure@CRequestContext@@UAAXW4_MI_Result@@KKZZ +?RecordFailure@CRequestContext@@UAEXK@Z +?RecordFailure@CRequestContext@@UAEXPAU_WSMAN_FAULT_OBJECT@@@Z +?RecordHresult@CErrorContext@@UAAXKKZZ +?RecordHresult@CRequestContext@@UAAXKKZZ +?RecordHtmlError@CRequestContext@@QAEHKPAU_FWXML_ELEMENT@@@Z +?RecordHtmlError@CRequestContext@@QAEHKPBGK@Z +?RecordMIFailure@IRequestContext@@QAEXW4_MI_Result@@K@Z +?RecordOutOfMemory@CErrorContext@@UAEXXZ +?RecordOutOfMemory@CRequestContext@@UAEXXZ +?RecordProviderFailure@CErrorContext@@UAEXPAU_WSMAN_FAULT_OBJECT@@PBG1@Z +?RecordProviderFailure@CRequestContext@@QAEXKHPBG00@Z +?RecordProviderFailure@CRequestContext@@UAEXPAU_WSMAN_FAULT_OBJECT@@PBG1@Z +?RecordSoapError@CErrorContext@@UAEHKPBG@Z +?RecordSoapError@CRequestContext@@QAEHKPAU_FWXML_ELEMENT@@@Z +?RecordSoapError@CRequestContext@@UAEHKPBG@Z +?RecordText@CRequestContext@@AAEHKPBGIK@Z +?RecordXml@CRequestContext@@AAEHKPAU_FWXML_ELEMENT@@K@Z +?Refresh@UserRecord@@QAEXXZ +?RegisterChild@ChildLifeTimeManager@@QAE_NXZ +?RegisterChunkBoundary@CircularBufferFormatter@@QAEKXZ +?RegisterConfigChangeNotification@CConfigManager@@QAEPAVConfigNotification@@PAX@Z +?RegisterForPolicyNotification@CWSManGroupPolicyManager@@AAEHPAVIRequestContext@@H@Z +?RegisterModule@@YGJKPAVIHttpModuleRegistrationInfo@@PAVIHttpServer@@@Z +?Release@?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@UBEXXZ +?Release@?$SafeMap@PAVCCertMapping@@UEmpty@@V?$SafeSet_Iterator@PAVCCertMapping@@@@@@UBEXXZ +?Release@?$SafeMap@PAVCListenerConnect@@PAV1@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@UBEXXZ +?Release@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@UBEXXZ +?Release@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@UBEXXZ +?Release@?$SafeMap@PAVCListenerReceive@@PAV1@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@UBEXXZ +?Release@?$SafeMap@PAVCListenerSend@@PAV1@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@UBEXXZ +?Release@?$SafeMap@PAVCListenerSignal@@PAV1@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@UBEXXZ +?Release@?$SafeMap@PAVCShellUriSettings@@UEmpty@@V?$SafeSet_Iterator@PAVCShellUriSettings@@@@@@UBEXXZ +?Release@?$SafeMap@PAVCollector@@UEmpty@@V?$SafeMap_Iterator@PAVCollector@@UEmpty@@@@@@UBEXXZ +?Release@?$SafeMap@PAVCollector@@UEmpty@@V?$SafeSet_Iterator@PAVCollector@@@@@@UBEXXZ +?Release@?$SafeMap@PAVHostOperation@@UEmpty@@V?$SafeMap_Iterator@PAVHostOperation@@UEmpty@@@@@@UBEXXZ +?Release@?$SafeMap@PAVHostOperation@@UEmpty@@V?$SafeSet_Iterator@PAVHostOperation@@@@@@UBEXXZ +?Release@?$SafeMap@PAVIOperation@@UEmpty@@V?$SafeMap_Iterator@PAVIOperation@@UEmpty@@@@@@UBEXXZ +?Release@?$SafeMap@PAVIOperation@@UEmpty@@V?$SafeSet_Iterator@PAVIOperation@@@@@@UBEXXZ +?Release@?$SafeMap@PAVListenerSourceSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVListenerSourceSubscription@@UEmpty@@@@@@UBEXXZ +?Release@?$SafeMap@PAVListenerSourceSubscription@@UEmpty@@V?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@UBEXXZ +?Release@?$SafeMap@PAVPushSubscription@@UEmpty@@V?$SafeMap_Iterator@PAVPushSubscription@@UEmpty@@@@@@UBEXXZ +?Release@?$SafeMap@PAVPushSubscription@@UEmpty@@V?$SafeSet_Iterator@PAVPushSubscription@@@@@@UBEXXZ +?Release@?$SafeMap@PAXUEmpty@@V?$SafeSet_Iterator@PAX@@@@UBEXXZ +?Release@?$SafeMap@UPluginKey@@KV?$SafeMap_Iterator@UPluginKey@@K@@@@UBEXXZ +?Release@?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@UBEXXZ +?Release@?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@UBEXXZ +?Release@?$SafeMap@VGuidKey@@PAVCListenerCommand@@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@UBEXXZ +?Release@?$SafeMap@VKey@CWmiPtrCache@@VMapping@2@V?$SafeMap_Iterator@VKey@CWmiPtrCache@@VMapping@2@@@@@UBEXXZ +?Release@?$SafeMap@VKey@Locale@@KV?$SafeMap_Iterator@VKey@Locale@@K@@@@UBEXXZ +?Release@?$SafeMap@VStringKey@@PAVListenerEvents@@V?$SafeMap_Iterator@VStringKey@@PAVListenerEvents@@@@@@UBEXXZ +?Release@?$SafeMap@VStringKey@@PAVListenerSourceSubscription@@V?$SafeMap_Iterator@VStringKey@@PAVListenerSourceSubscription@@@@@@UBEXXZ +?Release@?$SafeMap@VStringKey@@UOption@WinRM_OperationOptions@@V?$SafeMap_Iterator@VStringKey@@UOption@WinRM_OperationOptions@@@@@@UBEXXZ +?Release@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@UBEXXZ +?Release@?$SafeMap@VStringKeyCI@@PAVIISEndpoint@@V?$SafeMap_Iterator@VStringKeyCI@@PAVIISEndpoint@@@@@@UBEXXZ +?Release@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeMap_Iterator@VStringKeyCI@@UEmpty@@@@@@UBEXXZ +?Release@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@UBEXXZ +?Release@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@UBEXXZ +?Release@?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@UBEXXZ +?Release@?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@UBEXXZ +?Release@?$SafeMap@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@V?$SafeMap_Iterator@VTokenCacheKey@ServiceSoapProcessor@@VTokenCacheMapping@2@@@@@UBEXXZ +?Release@?$SafeMap@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@UBEXXZ +?Release@?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@UBEXXZ +?Release@?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@QAEXXZ +?Release@?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@QAEXXZ +?Release@?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@QAEXXZ +?Release@?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QAEXXZ +?Release@?$SafeMap_Iterator@VStringKeyCI@@K@@QAEXXZ +?Release@?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@QAEXXZ +?Release@?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QAEXXZ +?Release@?$SafeMap_Lock@PAVCCertMapping@@UEmpty@@V?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@@@QAEXXZ +?Release@?$SafeMap_Lock@PAVCListenerOperation@@UEmpty@@V?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@@@QAEXXZ +?Release@?$SafeMap_Lock@PAVCShellUriSettings@@UEmpty@@V?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@@@QAEXXZ +?Release@?$SafeMap_Lock@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QAEXXZ +?Release@?$SafeMap_Lock@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAEXXZ +?Release@?$SafeMap_Lock@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAEXXZ +?Release@?$SafeMap_Lock@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@QAEXXZ +?Release@CBaseConfigCache@@UAEJP6GXPAX@Z0@Z +?Release@CWSManCriticalSection@@QAEXXZ +?Release@CWSManSecurityUI@@UAGKXZ +?Release@ILifeTimeMgmt@@UAEJP6GXPAX@Z0@Z +?Release@UserRecord@@QAEJXZ +?ReleaseExclusive@FastLock@@QAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@D@@PAD@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@G@@PAG@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@UIPRange@CWSManIPFilter@@@@PAUIPRange@CWSManIPFilter@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@U_SID@@@@PAU_SID@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@U_WSMAN_STREAM_ID_SET@@@@PAU_WSMAN_STREAM_ID_SET@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$Handle@VISubscription@@@@@@PAV?$Handle@VISubscription@@@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@PAV?$SafeMap_Iterator@PAVCListenerConnect@@PAV1@@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@PAV?$SafeMap_Iterator@PAVCListenerReceive@@PAV1@@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@PAV?$SafeMap_Iterator@PAVCListenerSend@@PAV1@@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@PAV?$SafeMap_Iterator@PAVCListenerSignal@@PAV1@@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@PAV?$SafeMap_Iterator@VGuidKey@@PAVCListenerCommand@@@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@VStringKeyCI@@K@@@@PAV?$SafeMap_Iterator@VStringKeyCI@@K@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@PAV?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCCertMapping@@@@@@PAV?$SafeSet@PAVCCertMapping@@@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeSet@PAVCShellUriSettings@@@@@@PAV?$SafeSet@PAVCShellUriSettings@@@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@PAV?$SafeSet_Iterator@PAVCListenerOperation@@@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVCollector@@@@@@PAV?$SafeSet_Iterator@PAVCollector@@@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVHostOperation@@@@@@PAV?$SafeSet_Iterator@PAVHostOperation@@@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@PAV?$SafeSet_Iterator@PAVListenerSourceSubscription@@@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SimpleStack@VCListenerOperation@@@@@@PAV?$SimpleStack@VCListenerOperation@@@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$SimpleStack@VShellHostEntry@@@@@@PAV?$SimpleStack@VShellHostEntry@@@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$queue@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$deque@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$transport_allocator@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@@@@std@@@std@@@@PAV?$queue@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$deque@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@V?$transport_allocator@PAU_WSMAN_PUBLISHER_EVENT_STRUCT@@@@@std@@@std@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@PAV?$set@PAVCListenerSettings@@VCListenerSettingsLessFunctor@CServiceConfigSettings@@V?$transport_allocator@PAVCListenerSettings@@@@@std@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@PAV?$set@Usockaddr_storage@@VSockAddrLessFunctor@CListenerSettings@@V?$transport_allocator@Usockaddr_storage@@@@@std@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$vector@PAVCWSManRequest@@V?$transport_allocator@PAVCWSManRequest@@@@@std@@@@PAV?$vector@PAVCWSManRequest@@V?$transport_allocator@PAVCWSManRequest@@@@@std@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@PAV?$vector@PAVHandleImpl@Client@WSMan@@V?$transport_allocator@PAVHandleImpl@Client@WSMan@@@@@std@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@PAV?$vector@PAVIServiceConfigObserver@@V?$transport_allocator@PAVIServiceConfigObserver@@@@@std@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@V?$vector@PAVWSManHttpSenderConnection@@V?$transport_allocator@PAVWSManHttpSenderConnection@@@@@std@@@@PAV?$vector@PAVWSManHttpSenderConnection@@V?$transport_allocator@PAVWSManHttpSenderConnection@@@@@std@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VAdminSid@CSecurity@@@@PAVAdminSid@CSecurity@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VBlockedRecord@@@@PAVBlockedRecord@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCCertMapping@@@@PAVCCertMapping@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCConfigChangeSource@@@@PAVCConfigChangeSource@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCListenerSettings@@@@PAVCListenerSettings@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCObserverConfigChangeErrors@@@@PAVCObserverConfigChangeErrors@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCServiceWatcher@CServiceConfigCache@@@@PAVCServiceWatcher@CServiceConfigCache@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCShellUriSettings@@@@PAVCShellUriSettings@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCWSManEPR@@@@PAVCWSManEPR@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCWSManResource@@@@PAVCWSManResource@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VCertHash@@@@PAVCertHash@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VConfigUpdate@@@@PAVConfigUpdate@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VEventHandler@WSMan@@@@PAVEventHandler@WSMan@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VExpiredOperationIdRecord@@@@PAVExpiredOperationIdRecord@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VGPApiManager@@@@PAVGPApiManager@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VIChannelObserverFactory@@@@PAVIChannelObserverFactory@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VInteractiveSid@CSecurity@@@@PAVInteractiveSid@CSecurity@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VIpHlpApiDllLoader@@@@PAVIpHlpApiDllLoader@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VMachineName@@@@PAVMachineName@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VMasterReceiveData@CListenerReceive@@@@PAVMasterReceiveData@CListenerReceive@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VNetworkServiceSid@CSecurity@@@@PAVNetworkServiceSid@CSecurity@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VNtDsApiDllLoader@@@@PAVNtDsApiDllLoader@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VOptionValue@SessionOptions@Client@WSMan@@@@PAVOptionValue@SessionOptions@Client@WSMan@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VPacketCreator@@@@PAVPacketCreator@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VPacketParser@@@@PAVPacketParser@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VResources@Locale@@@@PAVResources@Locale@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VRunAsConfiguration@@@@PAVRunAsConfiguration@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VSecurityEntry@Catalog@@@@PAVSecurityEntry@Catalog@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VSendPacketArgs@RobustConnectionBuffer@@@@PAVSendPacketArgs@RobustConnectionBuffer@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VServiceSoapProcessor@@@@PAVServiceSoapProcessor@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VShell32DllLoader@@@@PAVShell32DllLoader@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VShlWApiDllLoader@@@@PAVShlWApiDllLoader@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VSubscriptionEnumerator@@@@PAVSubscriptionEnumerator@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VSubscriptionManager@@@@PAVSubscriptionManager@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VUniqueStringOverflow@@@@PAVUniqueStringOverflow@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VUser32DllLoader@@@@PAVUser32DllLoader@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VWSMANCONFIGTABLE_IDENTITY@@@@PAVWSMANCONFIGTABLE_IDENTITY@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VWSManMemCryptManager@@@@PAVWSManMemCryptManager@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PAVXmlReader@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@$$CBG@@PBG@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@D@@PAD@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@H@@PAH@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@U_CONFIG_UPDATE@@@@PAU_CONFIG_UPDATE@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@U_WSMAN_OPTION@@@@PAU_WSMAN_OPTION@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoDeleteVector@X@@PAX@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoFree@E@@PAE@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoLocklessItemRecycle@VPacket@@@@PAVPacket@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIAppHostAdminManager@@@@PAUIAppHostAdminManager@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIAppHostChildElementCollection@@@@PAUIAppHostChildElementCollection@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIAppHostConfigException@@@@PAUIAppHostConfigException@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIAppHostElement@@@@PAUIAppHostElement@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIAppHostElementCollection@@@@PAUIAppHostElementCollection@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIAppHostProperty@@@@PAUIAppHostProperty@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIAppHostPropertyCollection@@@@PAUIAppHostPropertyCollection@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VApplication@Client@WSMan@@@@PAVApplication@Client@WSMan@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCBaseConfigCache@@@@PAVCBaseConfigCache@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCClientConfigCache@@@@PAVCClientConfigCache@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCClientConfigSettings@@@@PAVCClientConfigSettings@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCCommonConfigSettings@@@@PAVCCommonConfigSettings@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@PAVCConfigCacheMap@CBaseConfigCache@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCConfigManager@@@@PAVCConfigManager@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCListenerCommand@@@@PAVCListenerCommand@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCListenerMasterOperation@@@@PAVCListenerMasterOperation@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCListenerReceive@@@@PAVCListenerReceive@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCListenerShell@@@@PAVCListenerShell@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCRemoteOperation@@@@PAVCRemoteOperation@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCRemoteSession@@@@PAVCRemoteSession@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCRequestContext@@@@PAVCRequestContext@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCServiceCommonConfigSettings@@@@PAVCServiceCommonConfigSettings@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCServiceConfigCache@@@@PAVCServiceConfigCache@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCServiceConfigSettings@@@@PAVCServiceConfigSettings@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyCache@@@@PAVCWSManGroupPolicyCache@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCWSManGroupPolicyManager@@@@PAVCWSManGroupPolicyManager@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCWSManObject@@@@PAVCWSManObject@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCWSManResource@@@@PAVCWSManResource@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCWSManSession@@@@PAVCWSManSession@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigSettings@@@@PAVCWinRSPluginConfigSettings@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCommand@Client@WSMan@@@@PAVCommand@Client@WSMan@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VConfigNotification@@@@PAVConfigNotification@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VConnectShellOperation@Client@WSMan@@@@PAVConnectShellOperation@Client@WSMan@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VCreateShellOperation@Client@WSMan@@@@PAVCreateShellOperation@Client@WSMan@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VDeleteShellOperation@Client@WSMan@@@@PAVDeleteShellOperation@Client@WSMan@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VDisconnectOperation@Client@WSMan@@@@PAVDisconnectOperation@Client@WSMan@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VHostMappingTable@@@@PAVHostMappingTable@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VIISConfigSettings@@@@PAVIISConfigSettings@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VIPCSoapProcessor@@@@PAVIPCSoapProcessor@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VISubscription@@@@PAVISubscription@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VInboundRequestDetails@@@@PAVInboundRequestDetails@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VProxyManager@Client@WSMan@@@@PAVProxyManager@Client@WSMan@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VProxySelection@Client@WSMan@@@@PAVProxySelection@Client@WSMan@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VPushSubscribeOperation@@@@PAVPushSubscribeOperation@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VPushSubscription@@@@PAVPushSubscription@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VReceiveOperation@Client@WSMan@@@@PAVReceiveOperation@Client@WSMan@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VReconnectOperation@Client@WSMan@@@@PAVReconnectOperation@Client@WSMan@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VSendOperation@Client@WSMan@@@@PAVSendOperation@Client@WSMan@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VShellInfo@@@@PAVShellInfo@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VSignalOperation@Client@WSMan@@@@PAVSignalOperation@Client@WSMan@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VUserRecord@@@@PAVUserRecord@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoRelease@VWSManHttpListener@@@@PAVWSManHttpListener@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoReleaseEx@VHostMappingTableEntry@@@@PAVHostMappingTableEntry@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@V?$AutoReleaseEx@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@VAutoBstr@@PAG@@AAEXXZ +?ReleasePtr@?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@AAEXXZ +?ReleasePtr@?$AutoCleanup@VAutoCertContext@@PBU_CERT_CONTEXT@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@VAutoChainContext@@PBU_CERT_CHAIN_CONTEXT@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@VAutoCoTaskMemFree@@PAX@@AAEXXZ +?ReleasePtr@?$AutoCleanup@VAutoFwXmlCloseParser@@PAX@@AAEXXZ +?ReleasePtr@?$AutoCleanup@VAutoHandle@@PAX@@AAEXXZ +?ReleasePtr@?$AutoCleanup@VAutoImpersonateUser@@PAX@@AAEXXZ +?ReleasePtr@?$AutoCleanup@VAutoLibrary@@PAUHINSTANCE__@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@VAutoLocalFree@@PAX@@AAEXXZ +?ReleasePtr@?$AutoCleanup@VAutoMIClass@@PAU_MI_Class@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@VAutoMIInstance@@PAU_MI_Instance@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@VAutoObject@@PAUWSMAN_OBJECT@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@VAutoRegKey@@PAUHKEY__@@@@AAEXXZ +?ReleasePtr@?$AutoCleanup@VAutoSecurityDescriptor@@PAX@@AAEXXZ +?ReleasePtr@?$AutoCleanup@VAutoWaitHandle@@PAX@@AAEXXZ +?ReleaseQuota@UserRecord@@QAEXW4OperationType@@PBVProvider@Catalog@@@Z +?ReleaseShared@FastLock@@QAEXXZ +?Remove@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QAE_NABQAVCListenerOperation@@@Z +?Remove@?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@QAE_NABUUserKey@@@Z +?Remove@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QAE_NABVStringKeyCI@@@Z +?Remove@?$SafeMap@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@V?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@@@QAE_NABVStringKeyCI@@@Z +?Remove@?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QAE_NABVStringKeyStore@@@Z +?Remove@?$SafeMap@VStringKeyStore@@PAVServerFullDuplexChannel@@V?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@@@QAE_NABVStringKeyStore@@@Z +?Remove@?$SafeMap@_KPAVSendPacketArgs@RobustConnectionBuffer@@V?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@@@QAE_NAB_K@Z +?RemoveAll@CBaseConfigCache@@KGXPAVFastLock@@AAV?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@@Z +?RemoveFromMap@CBaseConfigCache@@AAEHXZ +?RemoveHttpsBinding@@YGXPBG@Z +?RemoveHttpsCertificate@@YGXPBG0@Z +?RemoveObserver@CServiceConfigCache@@AAEHPAVIServiceConfigObserver@@@Z +?RemovePluginXmlNewAttrForThresholdOrGreater@@YGHPAVIRequestContext@@@Z +?ReportEventW@EventLog@@SGXGKGPAPBG@Z +?Reset@?$PacketElement@K@PacketParser@@QAEX_N@Z +?Reset@?$PacketElement@PAU_FWXML_ELEMENT@@@PacketParser@@QAEX_N@Z +?Reset@?$PacketElement@PBG@PacketParser@@QAEX_N@Z +?Reset@?$PacketElement@_K@PacketParser@@QAEX_N@Z +?Reset@?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@QAEXXZ +?Reset@?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@QAEXXZ +?Reset@?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@QAEXXZ +?Reset@?$SafeMap_Iterator@PAXUEmpty@@@@QAEXXZ +?Reset@?$SafeMap_Iterator@UPluginKey@@K@@QAEXXZ +?Reset@?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@QAEXXZ +?Reset@?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@QAEXXZ +?Reset@?$SafeMap_Iterator@VKey@Locale@@K@@QAEXXZ +?Reset@?$SafeMap_Iterator@VStringKeyCI@@K@@QAEXXZ +?Reset@?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@QAEXXZ +?Reset@?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@QAEXXZ +?Reset@?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@QAEXXZ +?Reset@?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@QAEXXZ +?Reset@?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@QAEXXZ +?Reset@BufferFormatter@@UAEXXZ +?Reset@CErrorContext@@UAEXH@Z +?Reset@CRequestContext@@UAEXH@Z +?Reset@CircularBufferFormatter@@UAEXXZ +?Reset@Locale@@QAEXXZ +?Reset@TSTRBUFFER@@QAEXXZ +?Reset@UserRecord@@QAEXXZ +?ResetProfileCount@UserRecord@@QAEXXZ +?ResetRobustConnectionHeaders@PacketParser@@AAEXXZ +?Resize@RBUFFER@@QAEHI@Z +?Resize@RBUFFER@@QAEHII@Z +?ResizeOptionList@CWSManResourceNoResourceUri@@IAE_NIAAVIRequestContext@@@Z +?RestoreAllPrivileges@@YGHPAU_TOKEN_PRIVILEGES@@@Z +?RetrieveCertMappingIdentity@CConfigManager@@AAEHPAUHKEY__@@PAVCERTMAPPING_IDENTITY@@@Z +?RetrieveListenerIdentity@CConfigManager@@AAEHPAUHKEY__@@PAGPAPAGPAVLISTENER_IDENTITY@@@Z +?RetrieveShellUriIdentity@CConfigManager@@AAEHPAUHKEY__@@PAVSHELLURI_IDENTITY@@@Z +?RetrieveTableIdentity@CConfigManager@@AAEHPAUHKEY__@@PAVWSMANCONFIGTABLE_IDENTITY@@@Z +?RevertToSelf@CSecurity@@SGHXZ +?RtlSecureZeroMemory@XmlReader@@QAEXXZ +?SafeStringToUI64@@YGJPBGEHPA_KPAVIRequestContext@@K@Z +?SetBOM@PacketFormatter@@QAE_NPAVPacket@@@Z +?SetBOM@PacketFormatter@@QAE_NPBEK@Z +?SetCIM_Error@CErrorContext@@UAEXXZ +?SetCIM_Error@CRequestContext@@UAEXXZ +?SetCharset@PacketFormatter@@QAEXW4Charset@1@@Z +?SetCharset@PacketFormatter@@QAE_NPBDK_NPA_N@Z +?SetCharsetAndBom@PacketFormatter@@QAEXW4Charset@1@0@Z +?SetConfigToUseDefaults@CErrorContext@@UAEXH@Z +?SetErrorAction@ExtendedSemantic@@QAEXW4_MI_OperationCallback_ResponseType@@W4_MI_CallbackMode@@@Z +?SetErrorState@CBaseConfigCache@@AAEXPAVCRequestContext@@K@Z +?SetExactCharSize@TSTRBUFFER@@QAEJI@Z +?SetExtendedErrorString@CErrorContext@@UAEXPAG@Z +?SetExtendedErrorString@CRequestContext@@UAEXPAG@Z +?SetExtraLogInfo@CErrorContext@@QAEXPBG000@Z +?SetFault@CErrorContext@@UAEXKKKPBG@Z +?SetFault@CRequestContext@@EAEXKKKPBG@Z +?SetFinishValue@ConfigRegistry@@IAEHPAVIRequestContext@@@Z +?SetFormatterMode@BufferFormatter@@QAEXW4Charset@PacketFormatter@@0@Z +?SetFragmentDialect@CWSManResourceNoResourceUri@@QAEHPBGPAVIRequestContext@@@Z +?SetFragmentPath@CWSManResourceNoResourceUri@@QAEHPBGPAVIRequestContext@@@Z +?SetGeneratingError@CErrorContext@@UAEXXZ +?SetLocale@CRequestContext@@QAE_NPBGK@Z +?SetLocale@Locale@@QAE_NKPBGPAVIRequestContext@@@Z +?SetMachineName@CRequestContext@@QAEKPBG@Z +?SetMachineName@CRequestContext@@QAEKPBGI@Z +?SetMachineName@CRequestContext@@QAEKXZ +?SetMaxEnvelopeSize@CircularBufferFormatter@@QAEXK@Z +?SetOptionsMustUnderstandValue@CWSManResourceNoResourceUri@@QAEXH@Z +?SetProfileHandle@UserRecord@@QAEX_J@Z +?SetProviderFailure@CErrorContext@@UAEXH@Z +?SetSecurity@CWSManSecurityUI@@UAGJKPAX@Z +?SetSize@TSTRBUFFER@@QAEJII@Z +?SetSizeInUse@SBUFFER@@QAEXI@Z +?SetThreadUILanguage@Locale@@QAE_NPAVIRequestContext@@@Z +?SetUpdateMode@BufferFormatter@@UAEXW4Mode@1@@Z +?SetUpdateMode@CircularBufferFormatter@@UAEXW4Mode@BufferFormatter@@@Z +?SetUri@CWSManResource@@QAEHPBGPAVIRequestContext@@@Z +?SetValid@RBUFFER@@IAEXH@Z +?SetXml@ReferenceParameters@PacketParser@@AAEKAAVBufferFormatter@@PAU_FWXML_ELEMENT@@@Z +?Shutdown@CBaseConfigCache@@IAEXXZ +?Shutdown@CConfigManager@@SGHXZ +?Shutdown@CWSManGroupPolicyManager@@SGHXZ +?Shutdown@ChildLifeTimeManager@@QAEXXZ +?ShutdownLocaleMap@Locale@@SGXXZ +?Size@?$SafeMap@PAVCListenerOperation@@UEmpty@@V?$SafeSet_Iterator@PAVCListenerOperation@@@@@@QBEHXZ +?Size@?$SafeMap@UUserKey@@PAVBlockedRecord@@V?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@@@QBEHXZ +?Size@?$SafeMap@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@V?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@@@QBEHXZ +?Size@?$SafeMap@VStringKeyCI@@KV?$SafeMap_Iterator@VStringKeyCI@@K@@@@QBEHXZ +?Size@?$SafeMap@VStringKeyCI@@UEmpty@@V?$SafeSet_Iterator@VStringKeyCI@@@@@@QBEHXZ +?Size@?$SafeMap@VStringKeyStore@@PAVExpiredOperationIdRecord@@V?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@@@QBEHXZ +?SkipOrphans@?$SafeMap_Iterator@PAVCCertMapping@@UEmpty@@@@IAEXXZ +?SkipOrphans@?$SafeMap_Iterator@PAVCListenerOperation@@UEmpty@@@@IAEXXZ +?SkipOrphans@?$SafeMap_Iterator@PAVCShellUriSettings@@UEmpty@@@@IAEXXZ +?SkipOrphans@?$SafeMap_Iterator@PAXUEmpty@@@@IAEXXZ +?SkipOrphans@?$SafeMap_Iterator@UPluginKey@@K@@IAEXXZ +?SkipOrphans@?$SafeMap_Iterator@UUserKey@@PAVBlockedRecord@@@@IAEXXZ +?SkipOrphans@?$SafeMap_Iterator@VCertThumbprintKey@@VCertThumbprintMappedSet@CServiceConfigSettings@@@@IAEXXZ +?SkipOrphans@?$SafeMap_Iterator@VKey@Locale@@K@@IAEXXZ +?SkipOrphans@?$SafeMap_Iterator@VStringKeyCI@@K@@IAEXXZ +?SkipOrphans@?$SafeMap_Iterator@VStringKeyCI@@UUSER_CONTEXT_INFO@WSManHttpListener@@@@IAEXXZ +?SkipOrphans@?$SafeMap_Iterator@VStringKeyStore@@PAVExpiredOperationIdRecord@@@@IAEXXZ +?SkipOrphans@?$SafeMap_Iterator@VStringKeyStore@@PAVServerFullDuplexChannel@@@@IAEXXZ +?SkipOrphans@?$SafeMap_Iterator@W4WSManSessionOption@@PAVOptionValue@SessionOptions@Client@WSMan@@@@IAEXXZ +?SkipOrphans@?$SafeMap_Iterator@_KPAVSendPacketArgs@RobustConnectionBuffer@@@@IAEXXZ +?StartSoapProcessor@@YGHXZ +?StopSoapProcessor@@YGHXZ +?Storage@?$AutoCleanup@V?$AutoDelete@G@@PAG@@QAEPAPAGXZ +?Storage@?$AutoCleanup@V?$AutoDelete@UIPRange@CWSManIPFilter@@@@PAUIPRange@CWSManIPFilter@@@@QAEPAPAUIPRange@CWSManIPFilter@@XZ +?Storage@?$AutoCleanup@V?$AutoDelete@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAEPAPAVEnumSinkEx@@XZ +?Storage@?$AutoCleanup@V?$AutoDelete@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAEPAPAVGeneralSinkEx@@XZ +?Storage@?$AutoCleanup@V?$AutoDelete@VIQueryDASHSMASHInterface@@@@PAVIQueryDASHSMASHInterface@@@@QAEPAPAVIQueryDASHSMASHInterface@@XZ +?Storage@?$AutoCleanup@V?$AutoDelete@VISpecification@@@@PAVISpecification@@@@QAEPAPAVISpecification@@XZ +?Storage@?$AutoCleanup@V?$AutoDelete@VPacketCreator@@@@PAVPacketCreator@@@@QAEPAPAVPacketCreator@@XZ +?Storage@?$AutoCleanup@V?$AutoDelete@VTSTRBUFFER@@@@PAVTSTRBUFFER@@@@QAEPAPAVTSTRBUFFER@@XZ +?Storage@?$AutoCleanup@V?$AutoDelete@VWmiEnumContext@@@@PAVWmiEnumContext@@@@QAEPAPAVWmiEnumContext@@XZ +?Storage@?$AutoCleanup@V?$AutoDelete@VXmlReader@@@@PAVXmlReader@@@@QAEPAPAVXmlReader@@XZ +?Storage@?$AutoCleanup@V?$AutoDeleteVector@$$CBG@@PBG@@QAEPAPBGXZ +?Storage@?$AutoCleanup@V?$AutoDeleteVector@E@@PAE@@QAEPAPAEXZ +?Storage@?$AutoCleanup@V?$AutoDeleteVector@G@@PAG@@QAEPAPAGXZ +?Storage@?$AutoCleanup@V?$AutoDeleteVector@PAG@@PAPAG@@QAEPAPAPAGXZ +?Storage@?$AutoCleanup@V?$AutoDeleteVector@PBG@@PAPBG@@QAEPAPAPBGXZ +?Storage@?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@PAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@@@QAEPAPAU_WINRS_CREATE_SHELL_ENVIRONMENT_VARIABLE@@XZ +?Storage@?$AutoCleanup@V?$AutoDeleteVector@U_WINRS_RUN_COMMAND_ARG@@@@PAU_WINRS_RUN_COMMAND_ARG@@@@QAEPAPAU_WINRS_RUN_COMMAND_ARG@@XZ +?Storage@?$AutoCleanup@V?$AutoDeleteVector@X@@PAX@@QAEPAPAXXZ +?Storage@?$AutoCleanup@V?$AutoFree@E@@PAE@@QAEPAPAEXZ +?Storage@?$AutoCleanup@V?$AutoLocklessItemRecycle@VPacket@@@@PAVPacket@@@@QAEPAPAVPacket@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIAppHostAdminManager@@@@PAUIAppHostAdminManager@@@@QAEPAPAUIAppHostAdminManager@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIAppHostChildElementCollection@@@@PAUIAppHostChildElementCollection@@@@QAEPAPAUIAppHostChildElementCollection@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIAppHostConfigException@@@@PAUIAppHostConfigException@@@@QAEPAPAUIAppHostConfigException@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIAppHostElement@@@@PAUIAppHostElement@@@@QAEPAPAUIAppHostElement@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIAppHostElementCollection@@@@PAUIAppHostElementCollection@@@@QAEPAPAUIAppHostElementCollection@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIAppHostProperty@@@@PAUIAppHostProperty@@@@QAEPAPAUIAppHostProperty@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIAppHostPropertyCollection@@@@PAUIAppHostPropertyCollection@@@@QAEPAPAUIAppHostPropertyCollection@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIClientSecurity@@@@PAUIClientSecurity@@@@QAEPAPAUIClientSecurity@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIEnumWbemClassObject@@@@PAUIEnumWbemClassObject@@@@QAEPAPAUIEnumWbemClassObject@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIErrorInfo@@@@PAUIErrorInfo@@@@QAEPAPAUIErrorInfo@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIUnknown@@@@PAUIUnknown@@@@QAEPAPAUIUnknown@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemClassObject@@@@PAUIWbemClassObject@@@@QAEPAPAUIWbemClassObject@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemContext@@@@PAUIWbemContext@@@@QAEPAPAUIWbemContext@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemLocator@@@@PAUIWbemLocator@@@@QAEPAPAUIWbemLocator@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemObjectTextSrc@@@@PAUIWbemObjectTextSrc@@@@QAEPAPAUIWbemObjectTextSrc@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemPath@@@@PAUIWbemPath@@@@QAEPAPAUIWbemPath@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemPathKeyList@@@@PAUIWbemPathKeyList@@@@QAEPAPAUIWbemPathKeyList@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemQualifierSet@@@@PAUIWbemQualifierSet@@@@QAEPAPAUIWbemQualifierSet@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemQuery@@@@PAUIWbemQuery@@@@QAEPAPAUIWbemQuery@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@UIWbemServices@@@@PAUIWbemServices@@@@QAEPAPAUIWbemServices@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@VCWSManEPR@@@@PAVCWSManEPR@@@@QAEPAPAVCWSManEPR@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@VCWinRSPluginConfigCache@@@@PAVCWinRSPluginConfigCache@@@@QAEPAPAVCWinRSPluginConfigCache@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@VCommand@Client@WSMan@@@@PAVCommand@Client@WSMan@@@@QAEPAPAVCommand@Client@WSMan@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@VEnumSinkEx@@@@PAVEnumSinkEx@@@@QAEPAPAVEnumSinkEx@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@VGeneralSinkEx@@@@PAVGeneralSinkEx@@@@QAEPAPAVGeneralSinkEx@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@VIRequestContext@@@@PAVIRequestContext@@@@QAEPAPAVIRequestContext@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@VReceiveOperation@Client@WSMan@@@@PAVReceiveOperation@Client@WSMan@@@@QAEPAPAVReceiveOperation@Client@WSMan@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@VSendOperation@Client@WSMan@@@@PAVSendOperation@Client@WSMan@@@@QAEPAPAVSendOperation@Client@WSMan@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@VShell@Client@WSMan@@@@PAVShell@Client@WSMan@@@@QAEPAPAVShell@Client@WSMan@@XZ +?Storage@?$AutoCleanup@V?$AutoRelease@VSignalOperation@Client@WSMan@@@@PAVSignalOperation@Client@WSMan@@@@QAEPAPAVSignalOperation@Client@WSMan@@XZ +?Storage@?$AutoCleanup@VAutoBstr@@PAG@@QAEPAPAGXZ +?Storage@?$AutoCleanup@VAutoBstrNoAlloc@@PAG@@QAEPAPAGXZ +?Storage@?$AutoCleanup@VAutoCertContext@@PBU_CERT_CONTEXT@@@@QAEPAPBU_CERT_CONTEXT@@XZ +?Storage@?$AutoCleanup@VAutoChainContext@@PBU_CERT_CHAIN_CONTEXT@@@@QAEPAPBU_CERT_CHAIN_CONTEXT@@XZ +?Storage@?$AutoCleanup@VAutoHandle@@PAX@@QAEPAPAXXZ +?Storage@?$AutoCleanup@VAutoImpersonateUser@@PAX@@QAEPAPAXXZ +?Storage@?$AutoCleanup@VAutoLocalFree@@PAX@@QAEPAPAXXZ +?Storage@?$AutoCleanup@VAutoMIClass@@PAU_MI_Class@@@@QAEPAPAU_MI_Class@@XZ +?Storage@?$AutoCleanup@VAutoMIInstance@@PAU_MI_Instance@@@@QAEPAPAU_MI_Instance@@XZ +?Storage@?$AutoCleanup@VAutoRegKey@@PAUHKEY__@@@@QAEPAPAUHKEY__@@XZ +?Storage@?$AutoCleanup@VAutoSecurityDescriptor@@PAX@@QAEPAPAXXZ +?Storage@?$AutoCleanup@VAutoWaitHandle@@PAX@@QAEPAPAXXZ +?StoreData@CWSManResource@@AAEHPAVIRequestContext@@PBG11PAU_WSMAN_SELECTOR_SET@@PAU_WSMAN_OPTION_SET@@@Z +?StoreData@CWSManResource@@QAEHPAVIRequestContext@@PBG@Z +?StoreDataFromResourceLocator@CWSManResource@@AAEHPAVIRequestContext@@PAU_WSMAN_RESOURCE_LOCATOR@@@Z +?StoreExpansion@CResourceAlias@@AAEXPBGPAU_ALIAS_INFORMATION@@@Z +?StreamingOutput@ExtendedSemantic@@2KB DATA +?StringCchEndsWithCI@@YGHPBG0@Z +?StringCchEquals@@YGHPBG0@Z +?StringCchEqualsCI@@YGHPBG0@Z +?StringCchStartsWith@@YGHPBG0@Z +?StringCchStartsWithCI@@YGHPBG0@Z +?StringConcatenate@CWSManResourceNoResourceUri@@IAEHAAPAGAAKKPAG@Z +?StringIsBlank@@YGHPBG@Z +?StringToDword@@YGHPBDPAK@Z +?StringToDword@@YGHPBGPAK@Z +?StringTrimWhitespace@@YGPAGPAG@Z +?Subscribe@CWSManGroupPolicyManager@@UAEHPAVIRequestContext@@PAVIWSManGroupPolicyObserver@@H@Z +?TruncateAt@TSTRBUFFER@@QAEXI@Z +?TryAcquire@CWSManCriticalSection@@QAEHXZ +?UnSubscribe@CWSManGroupPolicyManager@@UAEHPAVIRequestContext@@PAVIWSManGroupPolicyObserver@@@Z +?UninstallMigration@@YGHPAVIRequestContext@@@Z +?UnregisterChild@ChildLifeTimeManager@@QAEXXZ +?UnregisterPolicyNotification@CWSManGroupPolicyManager@@AAEHXZ +?Up@?$LoaderSerializer@VSubscriptionManager@@$01@@AAEJXZ +?UpdateCredentialsInCredmanStore@CConfigManager@@SGHPAVIRequestContext@@PAG1@Z +?UpdateHttpsBinding@@YGHPAVIRequestContext@@PBG1PAHHH@Z +?UpdateHttpsCertificate@@YGHPAVIRequestContext@@PBG11PAHHU_GUID@@@Z +?UpdateKey@CWSManResourceNoResourceUri@@QAEHPAVIRequestContext@@PBG1@Z +?Uri@CResourceAlias@@QAEPBGXZ +?UseClientToken@UserRecord@@QAE_NXZ +?UseDefaultConfig@CErrorContext@@UBEHXZ +?UsingDefaultLCID@Locale@@QAE_NXZ +?Validate@Locale@@SG_NPAU_WSMAN_DATA@@@Z +?Validate@Locale@@SG_NPBG@Z +?ValidateCBTHardeningLevel@ConfigRegistry@@IAEHPAVIRequestContext@@PBG@Z +?ValidateCertificateHash@ConfigRegistry@@IAEHPAVIRequestContext@@PBG111@Z +?ValidateHeaders@PacketParser@@QAEHPAVIRequestContext@@K@Z +?ValidateHostnameAndCertificateCN@ConfigRegistry@@IAEHPAVIRequestContext@@PBG1@Z +?ValidateIPFilter@ConfigRegistry@@IAEHPAVIRequestContext@@W4ConfigSetting@@PBG@Z +?ValidateInt@CWSManGroupPolicyManager@@AAEHPAVIRequestContext@@PBU_WSMAN_POLICY_INFO@@K@Z +?ValidateInt@ConfigRegistry@@IAEHPAVIRequestContext@@PAU_CONFIG_INFO@@KPBG@Z +?ValidateString@CWSManGroupPolicyManager@@AAEHPAVIRequestContext@@PBU_WSMAN_POLICY_INFO@@PBG@Z +?ValidateString@ConfigRegistry@@IAEHPAVIRequestContext@@PAU_CONFIG_INFO@@PBG@Z +?ValidateTrustedHosts@ConfigRegistry@@IAEHPAVIRequestContext@@PBG@Z +?ValidateUrlPrefix@ConfigRegistry@@IAEHPAVIRequestContext@@PBG@Z +?Verbose@ExtendedSemantic@@2KB DATA +?VerifyState@RBUFFER@@IBEXXZ +?WSManError@@YGXPBGK0KPAVIRequestContext@@@Z +?WSManMemoryOperation@@YGHW4WSMANMEMOPERATION@@PAXKK@Z +?WSManPostThreadMessageW@@YGHKIIJ@Z +?WaitForAllChildrenToUnregister@ChildLifeTimeManager@@QAEXK@Z +?WaitForConditionVar@CWSManCriticalSectionWithConditionVar@@QAEKK@Z +?WaitForMore@PacketParser@@UAE_NXZ +?WakeAllWaitingForConditionVar@CWSManCriticalSectionWithConditionVar@@QAEXXZ +?WakeAllWaitingOnNoOfChildren@ChildLifeTimeManager@@AAEXXZ +?Warning@EventLog@@SGXK@Z +?Warning@EventLog@@SGXKGPAPBG@Z +?Warning@EventLog@@SGXKPBG@Z +?Warning@ExtendedSemantic@@2KB DATA +?WatchForChanges@CServiceConfigCache@@QAEPAVCServiceWatcher@1@PAVIRequestContext@@PAVIServiceConfigObserver@@@Z +?WrapperCoSetProxyBlanket@@YGJPAUIUnknown@@KKPAGKKPAXKW4BehaviourForNoInterfaceError@@@Z +?Write@EventHandler@WSMan@@SGXABU_EVENT_DESCRIPTOR@@KPAU_EVENT_DATA_DESCRIPTOR@@@Z +?WriteCredentialsToCredmanStore@CConfigManager@@SGHPAVIRequestContext@@PAG1H@Z +?WriteSoapA@EventHandler@WSMan@@SGXABU_EVENT_DESCRIPTOR@@PBDK@Z +?WriteSoapMessageA@EventHandler@WSMan@@AAEXABU_EVENT_DESCRIPTOR@@PBDK@Z +?WriteSoapMessageW@EventHandler@WSMan@@AAEXABU_EVENT_DESCRIPTOR@@PBGK@Z +?WriteSoapMessageW_BE@EventHandler@WSMan@@AAEXABU_EVENT_DESCRIPTOR@@PBGK@Z +?WriteSoapW@EventHandler@WSMan@@SGXABU_EVENT_DESCRIPTOR@@PBGK@Z +?WriteSoapW_BE@EventHandler@WSMan@@SGXABU_EVENT_DESCRIPTOR@@PBGK@Z +?_PolicyChangedCallback@CWSManGroupPolicyManager@@CGXPAXE@Z +?back@?$SimpleQueue@T_LARGE_INTEGER@@@@QBE?BT_LARGE_INTEGER@@XZ +?empty@?$SimpleQueue@T_LARGE_INTEGER@@@@QBE_NXZ +?front@?$SimpleQueue@T_LARGE_INTEGER@@@@QBE?BT_LARGE_INTEGER@@XZ +?g_Resources@Locale@@0V?$Loader@VResources@Locale@@$0A@@@A DATA +?isValid@?$SafeSet@PAVCListenerOperation@@@@QBE_NXZ +?m_migContext@ConfigRegistry@@2PAVWSManMigrationContext@@A DATA +?pop@?$SimpleQueue@T_LARGE_INTEGER@@@@QAEXXZ +?push@?$SimpleQueue@T_LARGE_INTEGER@@@@QAEKT_LARGE_INTEGER@@@Z +?s_cacheMap@CClientConfigCache@@0V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@A DATA +?s_cacheMap@CServiceConfigCache@@0V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@A DATA +?s_cacheMap@CWinRSPluginConfigCache@@0V?$AutoRelease@VCConfigCacheMap@CBaseConfigCache@@@@A DATA +?s_config@CConfigManager@@0V?$AutoRelease@VCConfigManager@@@@A DATA +?s_lock@CConfigManager@@0VFastLock@@A DATA +?s_lock@CWSManGroupPolicyManager@@0VFastLock@@A DATA +?s_mapLock@CClientConfigCache@@0VFastLock@@A DATA +?s_mapLock@CServiceConfigCache@@0VFastLock@@A DATA +?s_mapLock@CWinRSPluginConfigCache@@0VFastLock@@A DATA +?s_policyManager@CWSManGroupPolicyManager@@0V?$AutoRelease@VCWSManGroupPolicyManager@@@@A DATA +EnumServiceUserResources@12 +FwGetParsedDocument@8 +FwGetRootElement@4 +FwIsXmlEscapedProperly@8 +FwXmlAddAttributeToAttributeList@44 +FwXmlCloseParser@4 +FwXmlCompareAttributeName@16 +FwXmlCompareAttributeNameEx@24 +FwXmlCompareElementName@16 +FwXmlCompareElementNameEx@24 +FwXmlCompareElementNameLen@16 +FwXmlCompareElementNameSpace@16 +FwXmlCompareName@16 +FwXmlCreateXmlFromElement@24 +FwXmlDecodeXmlEscapes@20 +FwXmlEncodeXmlEscapes@12 +FwXmlFindAttribute@28 +FwXmlFindAttributeEx@24 +FwXmlFindChildElement@28 +FwXmlFindChildElementEx@24 +FwXmlGetAttribute@8 +FwXmlGetAttributeNameEx@4 +FwXmlGetAttributeNamespacePrefix@4 +FwXmlGetAttributeValue@4 +FwXmlGetAttributeValueDWord@16 +FwXmlGetBooleanValue@8 +FwXmlGetBuffer@12 +FwXmlGetChild@8 +FwXmlGetElementName@16 +FwXmlGetElementNameEx@4 +FwXmlGetElementNamespacePrefix@4 +FwXmlGetElementNamespaceUrl@4 +FwXmlGetEntryNameEx@4 +FwXmlGetNamespaceForPrefix@20 +FwXmlGetNormalizedString@36 +FwXmlGetReferenceXmlFromElement@8 +FwXmlGetRemainder@8 +FwXmlGetSimpleContent@20 +FwXmlGetSimpleContentEx2@12 +FwXmlGetSimpleContentEx@8 +FwXmlHasText@8 +FwXmlIsEmpty@8 +FwXmlIsMustUnderstand@4 +FwXmlIsNull@4 +FwXmlIsSimpleContent@4 +FwXmlIsSimpleContentOrEmpty@4 +FwXmlIsTrueValue@4 +FwXmlNumAttributes@4 +FwXmlNumChildren@4 +FwXmlNumChildrenWithName@16 +FwXmlNumConsecutiveChildrenWithName@16 +FwXmlParsePrefixedXML@20 +FwXmlParseStream@20 +FwXmlParseText@24 +FwXmlParserCreate@8 +FwXmlUpdatePrefixes@8 +GetServiceSecurity@8 +SetServiceSecurity@20 +SubscriptionsProvEnumerate@20 +WSManAckEvents@4 +WSManAddSubscriptionManagerInternal@12 +WSManCloseCommand@12 +WSManCloseEnumerationHandle@4 +WSManCloseEnumeratorHandle@4 +WSManCloseObjectHandle@4 +WSManCloseOperation@8 +WSManClosePublisherHandle@4 +WSManCloseSession@8 +WSManCloseSessionHandle@4 +WSManCloseShell@12 +WSManCloseSubscriptionHandle@4 +WSManConnectShell@32 +WSManConnectShellCommand@28 +WSManConstructError@12 +WSManCreateEnumeratorInternal@16 +WSManCreateInternal@28 +WSManCreateInternalEx@28 +WSManCreatePullSubscription@32 +WSManCreatePushSubscription@36 +WSManCreateSession@24 +WSManCreateSessionInternal@32 +WSManCreateShell@32 +WSManCreateShellEx@36 +WSManDecodeObject@20 +WSManDeinitialize@8 +WSManDeleteInternal@24 +WSManDeleteInternalEx@24 +WSManDeliverEndSubscriptionNotification@8 +WSManDeliverEvent@24 +WSManDisconnectShell@16 +WSManEncodeObject@16 +WSManEncodeObjectEx@20 +WSManEncodeObjectInternal@16 +WSManEnumerateInternal@40 +WSManEnumerateInternalEx@40 +WSManEnumeratorAddEvent@12 +WSManEnumeratorAddObject@12 +WSManEnumeratorBatchPolicyViolated@4 +WSManEnumeratorNextObject@8 +WSManEnumeratorObjectCount@4 +WSManGetErrorMessage@28 +WSManGetInternal@24 +WSManGetInternalEx@24 +WSManGetSessionOptionAsDword@12 +WSManGetSessionOptionAsString@20 +WSManIdentifyInternal@20 +WSManInitialize@8 +WSManInvokeInternal@32 +WSManInvokeInternalEx@32 +WSManPluginAuthzOperationComplete@20 +WSManPluginAuthzQueryQuotaComplete@20 +WSManPluginAuthzUserComplete@28 +WSManPluginFreeRequestDetails@4 +WSManPluginGetConfiguration@12 +WSManPluginGetOperationParameters@12 +WSManPluginInteractiveCallback@20 +WSManPluginObjectAndBookmarkResult@16 +WSManPluginObjectAndEprResult@20 +WSManPluginObjectResult@12 +WSManPluginOperationComplete@16 +WSManPluginReceiveResult@24 +WSManPluginReportCompletion@8 +WSManPluginReportContext@12 +WSManPluginShutdown@12 +WSManPluginStartup@16 +WSManProvCreate@20 +WSManProvDelete@12 +WSManProvEnumerate@20 +WSManProvGet@12 +WSManProvInvoke@24 +WSManProvPut@20 +WSManPull@20 +WSManPullEvents@16 +WSManPutInternal@28 +WSManPutInternalEx@28 +WSManReceiveShellOutput@24 +WSManReconnectShell@12 +WSManReconnectShellCommand@12 +WSManRemoveSubscriptionManagerInternal@4 +WSManRunShellCommand@28 +WSManRunShellCommandEx@32 +WSManSendShellInput@32 +WSManSetSessionOption@12 +WSManSignalShell@24 diff --git a/lib/libc/mingw/lib64/PS5UI.def b/lib/libc/mingw/lib64/PS5UI.def index d2530fc4e5..3b7eb77638 100644 --- a/lib/libc/mingw/lib64/PS5UI.def +++ b/lib/libc/mingw/lib64/PS5UI.def @@ -8,7 +8,6 @@ LIBRARY ps5ui.dll EXPORTS DrvSplDeviceCaps DevQueryPrintEx -DllMain DrvConvertDevMode DrvDeviceCapabilities DrvDevicePropertySheets diff --git a/lib/libc/mingw/lib64/PSCRIPT5.def b/lib/libc/mingw/lib64/PSCRIPT5.def index 0d20c151fe..9242ecef57 100644 --- a/lib/libc/mingw/lib64/PSCRIPT5.def +++ b/lib/libc/mingw/lib64/PSCRIPT5.def @@ -6,7 +6,6 @@ ; LIBRARY pscript5.dll EXPORTS -DllMain DrvDisableDriver DrvEnableDriver DrvQueryDriverInfo diff --git a/lib/libc/mingw/lib64/UNIDRV.def b/lib/libc/mingw/lib64/UNIDRV.def index 0c75316297..0bc91e3a57 100644 --- a/lib/libc/mingw/lib64/UNIDRV.def +++ b/lib/libc/mingw/lib64/UNIDRV.def @@ -6,7 +6,6 @@ ; LIBRARY unidrv.dll EXPORTS -DllMain DrvDisableDriver DrvEnableDriver DrvQueryDriverInfo diff --git a/lib/libc/mingw/lib64/UNIDRVUI.def b/lib/libc/mingw/lib64/UNIDRVUI.def index 8f9c450bf1..d5504ae746 100644 --- a/lib/libc/mingw/lib64/UNIDRVUI.def +++ b/lib/libc/mingw/lib64/UNIDRVUI.def @@ -8,7 +8,6 @@ LIBRARY unidrvui.dll EXPORTS DrvSplDeviceCaps DevQueryPrintEx -DllMain DrvConvertDevMode DrvDeviceCapabilities DrvDevicePropertySheets diff --git a/lib/libc/mingw/lib64/admparse.def b/lib/libc/mingw/lib64/admparse.def index ea0cc845bb..d9b27ae545 100644 --- a/lib/libc/mingw/lib64/admparse.def +++ b/lib/libc/mingw/lib64/admparse.def @@ -6,7 +6,6 @@ ; LIBRARY admparse.dll EXPORTS -DllMain IsAdmDirty ResetAdmDirtyFlag AdmClose diff --git a/lib/libc/mingw/lib64/dmconfig.def b/lib/libc/mingw/lib64/dmconfig.def index 6f5dbc7e7d..88ddb7245a 100644 --- a/lib/libc/mingw/lib64/dmconfig.def +++ b/lib/libc/mingw/lib64/dmconfig.def @@ -6,5 +6,4 @@ ; LIBRARY dmconfig.dll EXPORTS -DllMain cs_get_api_calls diff --git a/lib/libc/mingw/lib64/exstrace.def b/lib/libc/mingw/lib64/exstrace.def index fddf39f98c..1c72f7c3cc 100644 --- a/lib/libc/mingw/lib64/exstrace.def +++ b/lib/libc/mingw/lib64/exstrace.def @@ -9,7 +9,6 @@ EXPORTS AsyncBinaryTrace AsyncStringTrace DebugAssert -DllMain FlushAsyncTrace InitAsyncTrace SetAsyncTraceParams diff --git a/lib/libc/mingw/lib64/fldrclnr.def b/lib/libc/mingw/lib64/fldrclnr.def index 697eb73290..136e0436b8 100644 --- a/lib/libc/mingw/lib64/fldrclnr.def +++ b/lib/libc/mingw/lib64/fldrclnr.def @@ -7,6 +7,5 @@ LIBRARY FldrClnr.dll EXPORTS DllInstall -DllMain DllRegisterServer Wizard_RunDLL diff --git a/lib/libc/mingw/lib64/fxsdrv.def b/lib/libc/mingw/lib64/fxsdrv.def index 23a1e6d826..801bc847a7 100644 --- a/lib/libc/mingw/lib64/fxsdrv.def +++ b/lib/libc/mingw/lib64/fxsdrv.def @@ -6,7 +6,6 @@ ; LIBRARY FxsDrv.dll EXPORTS -DllEntryPoint DrvDisableDriver DrvEnableDriver DrvQueryDriverInfo diff --git a/lib/libc/mingw/lib64/fxsst.def b/lib/libc/mingw/lib64/fxsst.def index 326e236e94..7cb14ef36c 100644 --- a/lib/libc/mingw/lib64/fxsst.def +++ b/lib/libc/mingw/lib64/fxsst.def @@ -6,6 +6,5 @@ ; LIBRARY FXSST.dll EXPORTS -DllMain FaxMonitorShutdown IsFaxMessage diff --git a/lib/libc/mingw/lib64/gpkcsp.def b/lib/libc/mingw/lib64/gpkcsp.def index a88245af8b..ec87faaa05 100644 --- a/lib/libc/mingw/lib64/gpkcsp.def +++ b/lib/libc/mingw/lib64/gpkcsp.def @@ -29,6 +29,5 @@ CPSetKeyParam CPSetProvParam CPSignHash CPVerifySignature -DllMain DllRegisterServer DllUnregisterServer diff --git a/lib/libc/mingw/lib64/guitrn.def b/lib/libc/mingw/lib64/guitrn.def index 5c8a8057b3..d0df158320 100644 --- a/lib/libc/mingw/lib64/guitrn.def +++ b/lib/libc/mingw/lib64/guitrn.def @@ -6,7 +6,6 @@ ; LIBRARY GUITRN.dll EXPORTS -DllMain ModuleInitialize ModuleTerminate TransportModule diff --git a/lib/libc/mingw/lib64/hnetwiz.def b/lib/libc/mingw/lib64/hnetwiz.def index 2af41ec57e..f02ce71cca 100644 --- a/lib/libc/mingw/lib64/hnetwiz.def +++ b/lib/libc/mingw/lib64/hnetwiz.def @@ -9,6 +9,5 @@ EXPORTS HomeNetWizardRunDll DllCanUnloadNow DllGetClassObject -DllMain DllRegisterServer DllUnregisterServer diff --git a/lib/libc/mingw/lib64/ieencode.def b/lib/libc/mingw/lib64/ieencode.def index 1b2d77d425..bedcad361c 100644 --- a/lib/libc/mingw/lib64/ieencode.def +++ b/lib/libc/mingw/lib64/ieencode.def @@ -13,5 +13,4 @@ CceStreamMultiByteToUnicode CceStreamUnicodeToMultiByte CceStringMultiByteToUnicode CceStringUnicodeToMultiByte -DllMain FetchMsEncodeDllVersion diff --git a/lib/libc/mingw/lib64/iisrtl.def b/lib/libc/mingw/lib64/iisrtl.def index e1fc2f5d19..2bcd0ce03f 100644 --- a/lib/libc/mingw/lib64/iisrtl.def +++ b/lib/libc/mingw/lib64/iisrtl.def @@ -1986,7 +1986,6 @@ CreateRefTraceLog CreateTraceLog DestroyRefTraceLog DestroyTraceLog -DllMain GetAllocCounters GetCurrentTimeInMilliseconds GetCurrentTimeInSeconds diff --git a/lib/libc/mingw/lib64/imeshare.def b/lib/libc/mingw/lib64/imeshare.def index a16b088cef..8ed2b8ae69 100644 --- a/lib/libc/mingw/lib64/imeshare.def +++ b/lib/libc/mingw/lib64/imeshare.def @@ -6,7 +6,6 @@ ; LIBRARY imeshare.dll EXPORTS -DllMain FInitIMEShare EndIMEShare FRefreshStyle diff --git a/lib/libc/mingw/lib64/imjpcus.def b/lib/libc/mingw/lib64/imjpcus.def index cf37f7d74e..5abe996e0f 100644 --- a/lib/libc/mingw/lib64/imjpcus.def +++ b/lib/libc/mingw/lib64/imjpcus.def @@ -7,4 +7,3 @@ LIBRARY imejpcus.dll EXPORTS OpenDetailDialog -DllMain diff --git a/lib/libc/mingw/lib64/imjputyc.def b/lib/libc/mingw/lib64/imjputyc.def index 4393770379..b30eff85ef 100644 --- a/lib/libc/mingw/lib64/imjputyc.def +++ b/lib/libc/mingw/lib64/imjputyc.def @@ -7,6 +7,5 @@ LIBRARY imjputyc.dll EXPORTS AutoCorrLbSubWndProc -DllMain OpenImeTool OpenUty diff --git a/lib/libc/mingw/lib64/iyuv_32.def b/lib/libc/mingw/lib64/iyuv_32.def index 276e0f4701..a95634f124 100644 --- a/lib/libc/mingw/lib64/iyuv_32.def +++ b/lib/libc/mingw/lib64/iyuv_32.def @@ -7,6 +7,5 @@ LIBRARY IYUV_32.dll EXPORTS AboutDialogProc -DllMain DriverDialogProc DriverProc diff --git a/lib/libc/mingw/lib64/localspl.def b/lib/libc/mingw/lib64/localspl.def index 9fb52e677b..3240493bdc 100644 --- a/lib/libc/mingw/lib64/localspl.def +++ b/lib/libc/mingw/lib64/localspl.def @@ -8,7 +8,6 @@ LIBRARY LocalSpl.dll EXPORTS ClosePrintProcessor ControlPrintProcessor -DllMain EnumPrintProcessorDatatypesW GetPrintProcessorCapabilities InitializePrintMonitor diff --git a/lib/libc/mingw/lib64/log.def b/lib/libc/mingw/lib64/log.def index 320579e015..8e83f33412 100644 --- a/lib/libc/mingw/lib64/log.def +++ b/lib/libc/mingw/lib64/log.def @@ -6,7 +6,6 @@ ; LIBRARY LOG.dll EXPORTS -DllMain LogA LogBegin LogDeleteOnNextInit diff --git a/lib/libc/mingw/lib64/migism.def b/lib/libc/mingw/lib64/migism.def index 1a08b76ac0..5d20a75454 100644 --- a/lib/libc/mingw/lib64/migism.def +++ b/lib/libc/mingw/lib64/migism.def @@ -6,7 +6,6 @@ ; LIBRARY MIGISM.dll EXPORTS -DllMain IsmAbandonObjectIdOnCollision IsmAbandonObjectOnCollision IsmAbortApplyObjectEnum diff --git a/lib/libc/mingw/lib64/msdart.def b/lib/libc/mingw/lib64/msdart.def index 9292e523a6..ec43fa99af 100644 --- a/lib/libc/mingw/lib64/msdart.def +++ b/lib/libc/mingw/lib64/msdart.def @@ -983,7 +983,6 @@ EXPORTS ; protected: static unsigned short CSpinLock::sm_wDefaultSpinCount ?sm_wDefaultSpinCount@CSpinLock@@1GA DATA DllBidEntryPoint -DllMain FXMemAttach FXMemDetach GetIUMS diff --git a/lib/libc/mingw/lib64/msoledbsql.def b/lib/libc/mingw/lib64/msoledbsql.def index c792aaff25..c2f3b20a91 100644 --- a/lib/libc/mingw/lib64/msoledbsql.def +++ b/lib/libc/mingw/lib64/msoledbsql.def @@ -7,7 +7,6 @@ LIBRARY "msoledbsql.dll" EXPORTS DllCanUnloadNow DllGetClassObject -DllMain DllRegisterServer DllUnregisterServer OpenSqlFilestream diff --git a/lib/libc/mingw/lib64/mtxclu.def b/lib/libc/mingw/lib64/mtxclu.def index 0e61a53761..abfe1a4c2d 100644 --- a/lib/libc/mingw/lib64/mtxclu.def +++ b/lib/libc/mingw/lib64/mtxclu.def @@ -90,4 +90,3 @@ MtxCluUninitialize MtxCluUpgradeDtcResourceW Startup WasDTCInstalledBySQL -DllMain diff --git a/lib/libc/mingw/lib64/netplwiz.def b/lib/libc/mingw/lib64/netplwiz.def index b1d35d5974..bd133cd6f3 100644 --- a/lib/libc/mingw/lib64/netplwiz.def +++ b/lib/libc/mingw/lib64/netplwiz.def @@ -14,7 +14,6 @@ ClearAutoLogon DllCanUnloadNow DllGetClassObject DllInstall -DllMain DllRegisterServer DllUnregisterServer NetAccessWizard diff --git a/lib/libc/mingw/lib64/ntlanman.def b/lib/libc/mingw/lib64/ntlanman.def index ce5d11e992..3812be2e71 100644 --- a/lib/libc/mingw/lib64/ntlanman.def +++ b/lib/libc/mingw/lib64/ntlanman.def @@ -8,7 +8,6 @@ LIBRARY NTLANMAN.dll EXPORTS NPGetConnection NPGetCaps -DllMain I_SystemFocusDialog NPGetUser NPAddConnection diff --git a/lib/libc/mingw/lib64/ntlanui.def b/lib/libc/mingw/lib64/ntlanui.def index 8b80f75485..b9ddea4d94 100644 --- a/lib/libc/mingw/lib64/ntlanui.def +++ b/lib/libc/mingw/lib64/ntlanui.def @@ -8,7 +8,6 @@ LIBRARY NTLANUI.dll EXPORTS ShareAsDialogA0 StopShareDialogA0 -DllMain I_SystemFocusDialog NPGetPropertyText NPPropertyDialog diff --git a/lib/libc/mingw/lib64/oledb32.def b/lib/libc/mingw/lib64/oledb32.def index ce742e786f..f4b84adb1a 100644 --- a/lib/libc/mingw/lib64/oledb32.def +++ b/lib/libc/mingw/lib64/oledb32.def @@ -6,7 +6,6 @@ ; LIBRARY OLEDB32.dll EXPORTS -DllMain OpenDSLFile DllCanUnloadNow DllGetClassObject diff --git a/lib/libc/mingw/lib64/p2pcollab.def b/lib/libc/mingw/lib64/p2pcollab.def index 3c41a3f141..489989bd22 100644 --- a/lib/libc/mingw/lib64/p2pcollab.def +++ b/lib/libc/mingw/lib64/p2pcollab.def @@ -87,6 +87,5 @@ SPUpdateUserPicture SPUpdateUserSettings SSPAddCredentials SSPRemoveCredentials -DllMain InitSecurityInterfaceW QuerySecurityPackageInfoW diff --git a/lib/libc/mingw/lib64/printui.def b/lib/libc/mingw/lib64/printui.def index 1dce008c4a..ce9f1f48e6 100644 --- a/lib/libc/mingw/lib64/printui.def +++ b/lib/libc/mingw/lib64/printui.def @@ -15,7 +15,6 @@ ConnectToPrinterDlg ConnectToPrinterPropertyPage DllCanUnloadNow DllGetClassObject -DllMain GetLegacyPrintUI PrintNotifyTray_Exit PrintNotifyTray_Init diff --git a/lib/libc/mingw/lib64/profmap.def b/lib/libc/mingw/lib64/profmap.def index 5f5d9de834..41934d9e8e 100644 --- a/lib/libc/mingw/lib64/profmap.def +++ b/lib/libc/mingw/lib64/profmap.def @@ -6,7 +6,6 @@ ; LIBRARY PROFMAP.dll EXPORTS -DllMain InitializeProfileMappingApi RemapAndMoveUserA RemapAndMoveUserW diff --git a/lib/libc/mingw/lib64/script.def b/lib/libc/mingw/lib64/script.def index 8a2ca681f2..6ddb419700 100644 --- a/lib/libc/mingw/lib64/script.def +++ b/lib/libc/mingw/lib64/script.def @@ -7,7 +7,6 @@ LIBRARY SCRIPT.dll EXPORTS DestinationModule -DllMain ModuleInitialize ModuleTerminate SourceModule diff --git a/lib/libc/mingw/lib64/spoolss.def b/lib/libc/mingw/lib64/spoolss.def index 73ea12e89f..37edd9e0fc 100644 --- a/lib/libc/mingw/lib64/spoolss.def +++ b/lib/libc/mingw/lib64/spoolss.def @@ -75,7 +75,6 @@ DllCanUnloadNow DllFreeSplMem DllFreeSplStr DllGetClassObject -DllMain DllReallocSplMem DllReallocSplStr DllRegisterServer diff --git a/lib/libc/mingw/lib64/sqlxmlx.def b/lib/libc/mingw/lib64/sqlxmlx.def index f3c32f1404..26265f9a0c 100644 --- a/lib/libc/mingw/lib64/sqlxmlx.def +++ b/lib/libc/mingw/lib64/sqlxmlx.def @@ -6,7 +6,6 @@ ; LIBRARY SQLXMLX.dll EXPORTS -DllMain ExecuteToStream DllCanUnloadNow DllGetClassObject diff --git a/lib/libc/mingw/lib64/srrstr.def b/lib/libc/mingw/lib64/srrstr.def index 20b9895aa2..c8b776a011 100644 --- a/lib/libc/mingw/lib64/srrstr.def +++ b/lib/libc/mingw/lib64/srrstr.def @@ -6,7 +6,6 @@ ; LIBRARY SRRSTR.dll EXPORTS -DllMain IsSRFrozen CheckPrivilegesForRestore SRGetCplPropPage diff --git a/lib/libc/mingw/lib64/strmfilt.def b/lib/libc/mingw/lib64/strmfilt.def index fd1a0496e8..2865743ed5 100644 --- a/lib/libc/mingw/lib64/strmfilt.def +++ b/lib/libc/mingw/lib64/strmfilt.def @@ -16,4 +16,3 @@ StreamFilterInitialize StreamFilterStart StreamFilterStop StreamFilterTerminate -DllMain diff --git a/lib/libc/mingw/lib64/sysmod.def b/lib/libc/mingw/lib64/sysmod.def index 802ca268a4..cc5d24d454 100644 --- a/lib/libc/mingw/lib64/sysmod.def +++ b/lib/libc/mingw/lib64/sysmod.def @@ -7,7 +7,6 @@ LIBRARY SYSMOD.dll EXPORTS DestinationModule -DllMain ModuleInitialize ModuleTerminate SourceModule diff --git a/lib/libc/mingw/lib64/vdsutil.def b/lib/libc/mingw/lib64/vdsutil.def index 7a8fdab769..2271d07f6c 100644 --- a/lib/libc/mingw/lib64/vdsutil.def +++ b/lib/libc/mingw/lib64/vdsutil.def @@ -262,6 +262,5 @@ EXPORTS ?WindowProcEntry@CVdsPnPNotificationBase@@CA_JPEAUHWND__@@I_K_J@Z ; public: void __cdecl CVdsAsyncObjectBase::ZeroAsyncOut(void) __ptr64 ?ZeroAsyncOut@CVdsAsyncObjectBase@@QEAAXXZ -DllMain RegisterVdsFabric UnregisterVdsFabric diff --git a/lib/libc/mingw/lib64/w3tp.def b/lib/libc/mingw/lib64/w3tp.def index bb4b520bac..2c6ab7a52b 100644 --- a/lib/libc/mingw/lib64/w3tp.def +++ b/lib/libc/mingw/lib64/w3tp.def @@ -28,4 +28,3 @@ ThreadPoolInitialize ThreadPoolPostCompletion ThreadPoolSetInfo ThreadPoolTerminate -DllMain diff --git a/lib/libc/mingw/lib64/wiaservc.def b/lib/libc/mingw/lib64/wiaservc.def index af756087a2..7d3334d824 100644 --- a/lib/libc/mingw/lib64/wiaservc.def +++ b/lib/libc/mingw/lib64/wiaservc.def @@ -32,7 +32,6 @@ ServiceMain ; public: void __cdecl BUFFER_CHAIN_ITEM::SetUsed(unsigned long) __ptr64 ?SetUsed@BUFFER_CHAIN_ITEM@@QEAAXK@Z SvchostPushServiceGlobals -DllEntryPoint DllRegisterServer DllUnregisterServer wiasCreateChildAppItem diff --git a/lib/libc/mingw/lib64/xinput1_1.def b/lib/libc/mingw/lib64/xinput1_1.def index 593ad26675..c9b614120a 100644 --- a/lib/libc/mingw/lib64/xinput1_1.def +++ b/lib/libc/mingw/lib64/xinput1_1.def @@ -5,7 +5,6 @@ ; LIBRARY "XINPUT1_1.dll" EXPORTS -DllMain XInputEnable XInputGetCapabilities XInputGetDSoundAudioDeviceGuids diff --git a/lib/libc/mingw/lib64/xinput1_2.def b/lib/libc/mingw/lib64/xinput1_2.def index 2622af14a9..901045a2b8 100644 --- a/lib/libc/mingw/lib64/xinput1_2.def +++ b/lib/libc/mingw/lib64/xinput1_2.def @@ -5,7 +5,6 @@ ; LIBRARY "XINPUT1_2.dll" EXPORTS -DllMain XInputEnable XInputGetCapabilities XInputGetDSoundAudioDeviceGuids diff --git a/lib/libc/mingw/lib64/xinput1_3.def b/lib/libc/mingw/lib64/xinput1_3.def index b99e4af63e..3213ce56b0 100644 --- a/lib/libc/mingw/lib64/xinput1_3.def +++ b/lib/libc/mingw/lib64/xinput1_3.def @@ -5,7 +5,6 @@ ; LIBRARY "XINPUT1_3.dll" EXPORTS -DllMain XInputGetState XInputSetState XInputGetCapabilities diff --git a/lib/libc/mingw/libsrc/strmiids.c b/lib/libc/mingw/libsrc/strmiids.c index 3764eeda7f..e718df0908 100644 --- a/lib/libc/mingw/libsrc/strmiids.c +++ b/lib/libc/mingw/libsrc/strmiids.c @@ -308,13 +308,10 @@ DEFINE_GUID(IID_IEnumTuningSpaces,0x8b8eb248,0xfc2b,0x11d2,0x9d,0x8c,0x00,0xc0,0 DEFINE_GUID(IID_IETFilter,0xc4c4c4b1,0x49,0x4e2b,0x98,0xfb,0x95,0x37,0xf6,0xce,0x51,0x6d); DEFINE_GUID(IID_IETFilterConfig,0xc4c4c4d1,0x49,0x4e2b,0x98,0xfb,0x95,0x37,0xf6,0xce,0x51,0x6d); DEFINE_GUID(IID_IEvalRat,0xc5c5c5b1,0x3abc,0x11d6,0xb2,0x5b,0,0xc0,0x4f,0xa0,0xc0,0x26); -DEFINE_GUID(IID_IFilterChain,0xdcfbdcf6,0x0dc2,0x45f5,0x9a,0xb2,0x7c,0x33,0x0e,0xa0,0x9c,0x29); DEFINE_GUID(IID_IFilterInfo,0x56a868ba,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70); DEFINE_GUID(IID_IFindCompressorCB,0xf03fa8de,0x879a,0x4d59,0x9b,0x2c,0x26,0xbb,0x1c,0xf8,0x34,0x61); DEFINE_GUID(IID_IFrequencyMap,0x6fb45c1,0x693c,0x4ea7,0xb7,0x9f,0x7a,0x6a,0x54,0xd8,0xde,0xf2); DEFINE_GUID(IID_IGetCapabilitiesKey,0xa8809222,0x7bb,0x48ea,0x95,0x1c,0x33,0x15,0x81,0,0x62,0x5b); -DEFINE_GUID(IID_IGraphConfig,0x03a1eb8e,0x32bf,0x4245,0x85,0x02,0x11,0x4d,0x08,0xa9,0xcb,0x88); -DEFINE_GUID(IID_IGraphConfigCallback,0xade0fd60,0xd19d,0x11d2,0xab,0xf6,0x00,0xa0,0xc9,0x05,0xf3,0x75); DEFINE_GUID(IID_IGrfCache,0xae9472be,0xb0c3,0x11d2,0x8d,0x24,0x00,0xa0,0xc9,0x44,0x1e,0x20); DEFINE_GUID(IID_IGuideData,0x61571138,0x5b01,0x43cd,0xae,0xaf,0x60,0xb7,0x84,0xa0,0xbf,0x93); DEFINE_GUID(IID_IGuideDataEvent,0xefda0c80,0xf395,0x42c3,0x9b,0x3c,0x56,0xb3,0x7d,0xec,0x7b,0xb7); @@ -392,8 +389,6 @@ DEFINE_GUID(IID_IMSVidWebDVD,0xcf45f88b,0xac56,0x4ee2,0xa7,0x3a,0xed,0x04,0xe2,0 DEFINE_GUID(IID_IMSVidWebDVDAdm,0xb8be681a,0xeb2c,0x47f0,0xb4,0x15,0x94,0xd5,0x45,0x2f,0x0e,0x05); DEFINE_GUID(IID_IMSVidWebDVDEvent,0xb4f7a674,0x9b83,0x49cb,0xa3,0x57,0xc6,0x3b,0x87,0x1b,0xe9,0x58); DEFINE_GUID(IID_IMSVidXDS,0x11ebc158,0xe712,0x4d1f,0x8b,0xb3,0x1,0xed,0x52,0x74,0xc4,0xce); -DEFINE_GUID(IID_IPinConnection,0x4a9a62d3,0x27d4,0x403d,0x91,0xe9,0x89,0xf5,0x40,0xe5,0x55,0x34); -DEFINE_GUID(IID_IPinFlowControl,0xc56e9858,0xdbf3,0x4f6b,0x81,0x19,0x38,0x4a,0xf2,0x06,0x0d,0xeb); DEFINE_GUID(IID_IPinInfo,0x56a868bd,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70); DEFINE_GUID(IID_IQueueCommand,0x56a868b7,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70); DEFINE_GUID(IID_IRegFilterInfo,0x56a868bb,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70); diff --git a/lib/libc/mingw/misc/mkstemp.c b/lib/libc/mingw/misc/mkstemp.c index 6b327f2fca..3b6246540c 100644 --- a/lib/libc/mingw/misc/mkstemp.c +++ b/lib/libc/mingw/misc/mkstemp.c @@ -1,3 +1,4 @@ +#define _CRT_RAND_S #include <stdlib.h> #include <stdio.h> #include <string.h> @@ -25,6 +26,7 @@ int __cdecl mkstemp (char *template_name) { int i, j, fd, len, index; + unsigned int r; /* These are the (62) characters used in temporary filenames. */ static const char letters[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; @@ -45,7 +47,9 @@ int __cdecl mkstemp (char *template_name) */ for (i = 0; i >= 0; i++) { for(j = index; j < len; j++) { - template_name[j] = letters[rand () % 62]; + if (rand_s(&r)) + r = rand(); + template_name[j] = letters[r % 62]; } fd = _sopen(template_name, _O_RDWR | _O_CREAT | _O_EXCL | _O_BINARY, diff --git a/lib/libc/mingw/stdio/mingw_pformat.c b/lib/libc/mingw/stdio/mingw_pformat.c index 87902aea27..fd53ce1a83 100644 --- a/lib/libc/mingw/stdio/mingw_pformat.c +++ b/lib/libc/mingw/stdio/mingw_pformat.c @@ -1026,6 +1026,8 @@ void __pformat_xint( int fmt, __pformat_intarg_t value, __pformat_t *stream ) __pformat_putc( '\x20', stream ); } +#include "../gdtoa/gdtoa.h" + typedef union { /* A multifaceted representation of an IEEE extended precision, @@ -1039,15 +1041,9 @@ typedef union signed short __pformat_fpreg_exponent; }; unsigned short __pformat_fpreg_bitmap[5]; - unsigned int __pformat_fpreg_bits; + ULong __pformat_fpreg_bits; } __pformat_fpreg_t; -#ifdef _WIN32 -/* TODO: make this unconditional in final release... - * (see note at head of associated `#else' block. - */ -#include "../gdtoa/gdtoa.h" - static __pformat_fpreg_t init_fpreg_ldouble( long double val ) { __pformat_fpreg_t x; @@ -1167,61 +1163,6 @@ char *__pformat_fcvt( long double x, int precision, int *dp, int *sign ) #define __pformat_ecvt_release( value ) __freedtoa( value ) #define __pformat_fcvt_release( value ) __freedtoa( value ) -#else -/* - * TODO: remove this before final release; it is included here as a - * convenience for testing, without requiring a working `__gdtoa()'. - */ -static -char *__pformat_ecvt( long double x, int precision, int *dp, int *sign ) -{ - /* Define in terms of `ecvt()'... - */ - char *retval = ecvt( (double)(x), precision, dp, sign ); - if( isinf( x ) || isnan( x ) ) - { - /* emulating `__gdtoa()' reporting for infinities and NaN. - */ - *dp = PFORMAT_INFNAN; - if( *retval == '-' ) - { - /* Need to force the `sign' flag, (particularly for NaN). - */ - ++retval; *sign = 1; - } - } - return retval; -} - -static -char *__pformat_fcvt( long double x, int precision, int *dp, int *sign ) -{ - /* Define in terms of `fcvt()'... - */ - char *retval = fcvt( (double)(x), precision, dp, sign ); - if( isinf( x ) || isnan( x ) ) - { - /* emulating `__gdtoa()' reporting for infinities and NaN. - */ - *dp = PFORMAT_INFNAN; - if( *retval == '-' ) - { - /* Need to force the `sign' flag, (particularly for NaN). - */ - ++retval; *sign = 1; - } - } - return retval; -} - -/* No memory pool clean up needed, for these emulated cases... - */ -#define __pformat_ecvt_release( value ) /* nothing to be done */ -#define __pformat_fcvt_release( value ) /* nothing to be done */ - -/* TODO: end of conditional to be removed. */ -#endif - static void __pformat_emit_radix_point( __pformat_t *stream ) { diff --git a/lib/std/Build.zig b/lib/std/Build.zig index 9ad4d0a69b..f850f73395 100644 --- a/lib/std/Build.zig +++ b/lib/std/Build.zig @@ -872,6 +872,14 @@ pub const TestOptions = struct { zig_lib_dir: ?LazyPath = null, }; +/// Creates an executable containing unit tests. +/// +/// Equivalent to running the command `zig test --test-no-exec ...`. +/// +/// **This step does not run the unit tests**. Typically, the result of this +/// function will be passed to `addRunArtifact`, creating a `Step.Run`. These +/// two steps are separated because they are independently configured and +/// cached. pub fn addTest(b: *Build, options: TestOptions) *Step.Compile { return Step.Compile.create(b, .{ .name = options.name, diff --git a/lib/std/Build/Step/Run.zig b/lib/std/Build/Step/Run.zig index b0b5602a12..cb1ed7e7dc 100644 --- a/lib/std/Build/Step/Run.zig +++ b/lib/std/Build/Step/Run.zig @@ -168,13 +168,32 @@ pub fn addArtifactArg(self: *Run, artifact: *Step.Compile) void { self.argv.append(Arg{ .artifact = artifact }) catch @panic("OOM"); } -/// This provides file path as a command line argument to the command being -/// run, and returns a LazyPath which can be used as inputs to other APIs +/// Provides a file path as a command line argument to the command being run. +/// +/// Returns a `std.Build.LazyPath` which can be used as inputs to other APIs /// throughout the build system. +/// +/// Related: +/// * `addPrefixedOutputFileArg` - same thing but prepends a string to the argument +/// * `addFileArg` - for input files given to the child process pub fn addOutputFileArg(self: *Run, basename: []const u8) std.Build.LazyPath { return self.addPrefixedOutputFileArg("", basename); } +/// Provides a file path as a command line argument to the command being run. +/// +/// For example, a prefix of "-o" and basename of "output.txt" will result in +/// the child process seeing something like this: "-ozig-cache/.../output.txt" +/// +/// The child process will see a single argument, regardless of whether the +/// prefix or basename have spaces. +/// +/// The returned `std.Build.LazyPath` can be used as inputs to other APIs +/// throughout the build system. +/// +/// Related: +/// * `addOutputFileArg` - same thing but without the prefix +/// * `addFileArg` - for input files given to the child process pub fn addPrefixedOutputFileArg( self: *Run, prefix: []const u8, @@ -197,10 +216,31 @@ pub fn addPrefixedOutputFileArg( return .{ .generated = &output.generated_file }; } +/// Appends an input file to the command line arguments. +/// +/// The child process will see a file path. Modifications to this file will be +/// detected as a cache miss in subsequent builds, causing the child process to +/// be re-executed. +/// +/// Related: +/// * `addPrefixedFileArg` - same thing but prepends a string to the argument +/// * `addOutputFileArg` - for files generated by the child process pub fn addFileArg(self: *Run, lp: std.Build.LazyPath) void { self.addPrefixedFileArg("", lp); } +/// Appends an input file to the command line arguments prepended with a string. +/// +/// For example, a prefix of "-F" will result in the child process seeing something +/// like this: "-Fexample.txt" +/// +/// The child process will see a single argument, even if the prefix has +/// spaces. Modifications to this file will be detected as a cache miss in +/// subsequent builds, causing the child process to be re-executed. +/// +/// Related: +/// * `addFileArg` - same thing but without the prefix +/// * `addOutputFileArg` - for files generated by the child process pub fn addPrefixedFileArg(self: *Run, prefix: []const u8, lp: std.Build.LazyPath) void { const b = self.step.owner; diff --git a/lib/std/Random/benchmark.zig b/lib/std/Random/benchmark.zig index f3ea468181..ad76742f22 100644 --- a/lib/std/Random/benchmark.zig +++ b/lib/std/Random/benchmark.zig @@ -144,7 +144,7 @@ pub fn main() !void { i += 1; if (i == args.len) { usage(); - std.os.exit(1); + std.process.exit(1); } filter = args[i]; @@ -152,7 +152,7 @@ pub fn main() !void { i += 1; if (i == args.len) { usage(); - std.os.exit(1); + std.process.exit(1); } const c = try std.fmt.parseUnsigned(usize, args[i], 10); @@ -170,7 +170,7 @@ pub fn main() !void { return; } else { usage(); - std.os.exit(1); + std.process.exit(1); } } diff --git a/lib/std/Thread.zig b/lib/std/Thread.zig index ec1fef22bb..d1c8a24f0a 100644 --- a/lib/std/Thread.zig +++ b/lib/std/Thread.zig @@ -5,9 +5,11 @@ const std = @import("std.zig"); const builtin = @import("builtin"); const math = std.math; -const os = std.os; const assert = std.debug.assert; const target = builtin.target; +const native_os = builtin.os.tag; +const posix = std.posix; +const windows = std.os.windows; pub const Futex = @import("Thread/Futex.zig"); pub const ResetEvent = @import("Thread/ResetEvent.zig"); @@ -18,23 +20,23 @@ pub const RwLock = @import("Thread/RwLock.zig"); pub const Pool = @import("Thread/Pool.zig"); pub const WaitGroup = @import("Thread/WaitGroup.zig"); -pub const use_pthreads = target.os.tag != .windows and target.os.tag != .wasi and builtin.link_libc; +pub const use_pthreads = native_os != .windows and native_os != .wasi and builtin.link_libc; const Thread = @This(); -const Impl = if (target.os.tag == .windows) +const Impl = if (native_os == .windows) WindowsThreadImpl else if (use_pthreads) PosixThreadImpl -else if (target.os.tag == .linux) +else if (native_os == .linux) LinuxThreadImpl -else if (target.os.tag == .wasi) +else if (native_os == .wasi) WasiThreadImpl else UnsupportedImpl; impl: Impl, -pub const max_name_len = switch (target.os.tag) { +pub const max_name_len = switch (native_os) { .linux => 15, .windows => 31, .macos, .ios, .watchos, .tvos => 63, @@ -50,7 +52,7 @@ pub const SetNameError = error{ NameTooLong, Unsupported, Unexpected, -} || os.PrctlError || os.WriteError || std.fs.File.OpenError || std.fmt.BufPrintError; +} || posix.PrctlError || posix.WriteError || std.fs.File.OpenError || std.fmt.BufPrintError; pub fn setName(self: Thread, name: []const u8) SetNameError!void { if (name.len > max_name_len) return error.NameTooLong; @@ -62,21 +64,21 @@ pub fn setName(self: Thread, name: []const u8) SetNameError!void { break :blk name_buf[0..name.len :0]; }; - switch (target.os.tag) { + switch (native_os) { .linux => if (use_pthreads) { if (self.getHandle() == std.c.pthread_self()) { // Set the name of the calling thread (no thread id required). - const err = try os.prctl(.SET_NAME, .{@intFromPtr(name_with_terminator.ptr)}); - switch (@as(os.E, @enumFromInt(err))) { + const err = try posix.prctl(.SET_NAME, .{@intFromPtr(name_with_terminator.ptr)}); + switch (@as(posix.E, @enumFromInt(err))) { .SUCCESS => return, - else => |e| return os.unexpectedErrno(e), + else => |e| return posix.unexpectedErrno(e), } } else { const err = std.c.pthread_setname_np(self.getHandle(), name_with_terminator.ptr); switch (err) { .SUCCESS => return, .RANGE => unreachable, - else => |e| return os.unexpectedErrno(e), + else => |e| return posix.unexpectedErrno(e), } } } else { @@ -95,21 +97,21 @@ pub fn setName(self: Thread, name: []const u8) SetNameError!void { const byte_len = math.cast(c_ushort, len * 2) orelse return error.NameTooLong; // Note: NT allocates its own copy, no use-after-free here. - const unicode_string = os.windows.UNICODE_STRING{ + const unicode_string = windows.UNICODE_STRING{ .Length = byte_len, .MaximumLength = byte_len, .Buffer = &buf, }; - switch (os.windows.ntdll.NtSetInformationThread( + switch (windows.ntdll.NtSetInformationThread( self.getHandle(), .ThreadNameInformation, &unicode_string, - @sizeOf(os.windows.UNICODE_STRING), + @sizeOf(windows.UNICODE_STRING), )) { .SUCCESS => return, .NOT_IMPLEMENTED => return error.Unsupported, - else => |err| return os.windows.unexpectedStatus(err), + else => |err| return windows.unexpectedStatus(err), } }, .macos, .ios, .watchos, .tvos => if (use_pthreads) { @@ -119,7 +121,7 @@ pub fn setName(self: Thread, name: []const u8) SetNameError!void { const err = std.c.pthread_setname_np(name_with_terminator.ptr); switch (err) { .SUCCESS => return, - else => |e| return os.unexpectedErrno(e), + else => |e| return posix.unexpectedErrno(e), } }, .netbsd, .solaris, .illumos => if (use_pthreads) { @@ -129,7 +131,7 @@ pub fn setName(self: Thread, name: []const u8) SetNameError!void { .INVAL => unreachable, .SRCH => unreachable, .NOMEM => unreachable, - else => |e| return os.unexpectedErrno(e), + else => |e| return posix.unexpectedErrno(e), } }, .freebsd, .openbsd => if (use_pthreads) { @@ -148,7 +150,7 @@ pub fn setName(self: Thread, name: []const u8) SetNameError!void { .FAULT => unreachable, .NAMETOOLONG => unreachable, // already checked .SRCH => unreachable, - else => |e| return os.unexpectedErrno(e), + else => |e| return posix.unexpectedErrno(e), } }, else => {}, @@ -159,7 +161,7 @@ pub fn setName(self: Thread, name: []const u8) SetNameError!void { pub const GetNameError = error{ Unsupported, Unexpected, -} || os.PrctlError || os.ReadError || std.fs.File.OpenError || std.fmt.BufPrintError; +} || posix.PrctlError || posix.ReadError || std.fs.File.OpenError || std.fmt.BufPrintError; /// On Windows, the result is encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). /// On other platforms, the result is an opaque sequence of bytes with no particular encoding. @@ -167,21 +169,21 @@ pub fn getName(self: Thread, buffer_ptr: *[max_name_len:0]u8) GetNameError!?[]co buffer_ptr[max_name_len] = 0; var buffer: [:0]u8 = buffer_ptr; - switch (target.os.tag) { + switch (native_os) { .linux => if (use_pthreads) { if (self.getHandle() == std.c.pthread_self()) { // Get the name of the calling thread (no thread id required). - const err = try os.prctl(.GET_NAME, .{@intFromPtr(buffer.ptr)}); - switch (@as(os.E, @enumFromInt(err))) { + const err = try posix.prctl(.GET_NAME, .{@intFromPtr(buffer.ptr)}); + switch (@as(posix.E, @enumFromInt(err))) { .SUCCESS => return std.mem.sliceTo(buffer, 0), - else => |e| return os.unexpectedErrno(e), + else => |e| return posix.unexpectedErrno(e), } } else { const err = std.c.pthread_getname_np(self.getHandle(), buffer.ptr, max_name_len + 1); switch (err) { .SUCCESS => return std.mem.sliceTo(buffer, 0), .RANGE => unreachable, - else => |e| return os.unexpectedErrno(e), + else => |e| return posix.unexpectedErrno(e), } } } else { @@ -196,10 +198,10 @@ pub fn getName(self: Thread, buffer_ptr: *[max_name_len:0]u8) GetNameError!?[]co return if (data_len >= 1) buffer[0 .. data_len - 1] else null; }, .windows => { - const buf_capacity = @sizeOf(os.windows.UNICODE_STRING) + (@sizeOf(u16) * max_name_len); - var buf: [buf_capacity]u8 align(@alignOf(os.windows.UNICODE_STRING)) = undefined; + const buf_capacity = @sizeOf(windows.UNICODE_STRING) + (@sizeOf(u16) * max_name_len); + var buf: [buf_capacity]u8 align(@alignOf(windows.UNICODE_STRING)) = undefined; - switch (os.windows.ntdll.NtQueryInformationThread( + switch (windows.ntdll.NtQueryInformationThread( self.getHandle(), .ThreadNameInformation, &buf, @@ -207,12 +209,12 @@ pub fn getName(self: Thread, buffer_ptr: *[max_name_len:0]u8) GetNameError!?[]co null, )) { .SUCCESS => { - const string = @as(*const os.windows.UNICODE_STRING, @ptrCast(&buf)); + const string = @as(*const windows.UNICODE_STRING, @ptrCast(&buf)); const len = std.unicode.wtf16LeToWtf8(buffer, string.Buffer.?[0 .. string.Length / 2]); return if (len > 0) buffer[0..len] else null; }, .NOT_IMPLEMENTED => return error.Unsupported, - else => |err| return os.windows.unexpectedStatus(err), + else => |err| return windows.unexpectedStatus(err), } }, .macos, .ios, .watchos, .tvos => if (use_pthreads) { @@ -220,7 +222,7 @@ pub fn getName(self: Thread, buffer_ptr: *[max_name_len:0]u8) GetNameError!?[]co switch (err) { .SUCCESS => return std.mem.sliceTo(buffer, 0), .SRCH => unreachable, - else => |e| return os.unexpectedErrno(e), + else => |e| return posix.unexpectedErrno(e), } }, .netbsd, .solaris, .illumos => if (use_pthreads) { @@ -229,7 +231,7 @@ pub fn getName(self: Thread, buffer_ptr: *[max_name_len:0]u8) GetNameError!?[]co .SUCCESS => return std.mem.sliceTo(buffer, 0), .INVAL => unreachable, .SRCH => unreachable, - else => |e| return os.unexpectedErrno(e), + else => |e| return posix.unexpectedErrno(e), } }, .freebsd, .openbsd => if (use_pthreads) { @@ -246,7 +248,7 @@ pub fn getName(self: Thread, buffer_ptr: *[max_name_len:0]u8) GetNameError!?[]co .INVAL => unreachable, .FAULT => unreachable, .SRCH => unreachable, - else => |e| return os.unexpectedErrno(e), + else => |e| return posix.unexpectedErrno(e), } }, else => {}, @@ -255,7 +257,7 @@ pub fn getName(self: Thread, buffer_ptr: *[max_name_len:0]u8) GetNameError!?[]co } /// Represents an ID per thread guaranteed to be unique only within a process. -pub const Id = switch (target.os.tag) { +pub const Id = switch (native_os) { .linux, .dragonfly, .netbsd, @@ -265,7 +267,7 @@ pub const Id = switch (target.os.tag) { .wasi, => u32, .macos, .ios, .watchos, .tvos => u64, - .windows => os.windows.DWORD, + .windows => windows.DWORD, else => usize, }; @@ -368,13 +370,13 @@ pub const YieldError = error{ /// Yields the current thread potentially allowing other threads to run. pub fn yield() YieldError!void { - if (builtin.os.tag == .windows) { + if (native_os == .windows) { // The return value has to do with how many other threads there are; it is not // an error condition on Windows. - _ = os.windows.kernel32.SwitchToThread(); + _ = windows.kernel32.SwitchToThread(); return; } - switch (os.errno(os.system.sched_yield())) { + switch (posix.errno(posix.system.sched_yield())) { .SUCCESS => return, .NOSYS => return error.SystemCannotYield, else => return error.SystemCannotYield, @@ -390,7 +392,7 @@ const Completion = std.atomic.Value(enum(u8) { /// Used by the Thread implementations to call the spawned function with the arguments. fn callFn(comptime f: anytype, args: anytype) switch (Impl) { - WindowsThreadImpl => std.os.windows.DWORD, + WindowsThreadImpl => windows.DWORD, LinuxThreadImpl => u8, PosixThreadImpl => ?*anyopaque, else => unreachable, @@ -470,13 +472,11 @@ const UnsupportedImpl = struct { fn unsupported(unused: anytype) noreturn { _ = unused; - @compileError("Unsupported operating system " ++ @tagName(target.os.tag)); + @compileError("Unsupported operating system " ++ @tagName(native_os)); } }; const WindowsThreadImpl = struct { - const windows = os.windows; - pub const ThreadHandle = windows.HANDLE; fn getCurrentId() windows.DWORD { @@ -584,7 +584,7 @@ const PosixThreadImpl = struct { pub const ThreadHandle = c.pthread_t; fn getCurrentId() Id { - switch (target.os.tag) { + switch (native_os) { .linux => { return LinuxThreadImpl.getCurrentId(); }, @@ -616,15 +616,15 @@ const PosixThreadImpl = struct { } fn getCpuCount() !usize { - switch (target.os.tag) { + switch (native_os) { .linux => { return LinuxThreadImpl.getCpuCount(); }, .openbsd => { var count: c_int = undefined; var count_size: usize = @sizeOf(c_int); - const mib = [_]c_int{ os.CTL.HW, os.system.HW.NCPUONLINE }; - os.sysctl(&mib, &count, &count_size, null, 0) catch |err| switch (err) { + const mib = [_]c_int{ std.c.CTL.HW, std.c.HW.NCPUONLINE }; + posix.sysctl(&mib, &count, &count_size, null, 0) catch |err| switch (err) { error.NameTooLong, error.UnknownName => unreachable, else => |e| return e, }; @@ -634,25 +634,25 @@ const PosixThreadImpl = struct { // The "proper" way to get the cpu count would be to query // /dev/kstat via ioctls, and traverse a linked list for each // cpu. - const rc = c.sysconf(os._SC.NPROCESSORS_ONLN); - return switch (os.errno(rc)) { + const rc = c.sysconf(std.c._SC.NPROCESSORS_ONLN); + return switch (posix.errno(rc)) { .SUCCESS => @as(usize, @intCast(rc)), - else => |err| os.unexpectedErrno(err), + else => |err| posix.unexpectedErrno(err), }; }, .haiku => { - var system_info: os.system.system_info = undefined; - const rc = os.system.get_system_info(&system_info); // always returns B_OK - return switch (os.errno(rc)) { + var system_info: std.c.system_info = undefined; + const rc = std.c.get_system_info(&system_info); // always returns B_OK + return switch (posix.errno(rc)) { .SUCCESS => @as(usize, @intCast(system_info.cpu_count)), - else => |err| os.unexpectedErrno(err), + else => |err| posix.unexpectedErrno(err), }; }, else => { var count: c_int = undefined; var count_len: usize = @sizeOf(c_int); const name = if (comptime target.isDarwin()) "hw.logicalcpu" else "hw.ncpu"; - os.sysctlbynameZ(name, &count, &count_len, null, 0) catch |err| switch (err) { + posix.sysctlbynameZ(name, &count, &count_len, null, 0) catch |err| switch (err) { error.NameTooLong, error.UnknownName => unreachable, else => |e| return e, }; @@ -699,7 +699,7 @@ const PosixThreadImpl = struct { .AGAIN => return error.SystemResources, .PERM => unreachable, .INVAL => unreachable, - else => |err| return os.unexpectedErrno(err), + else => |err| return posix.unexpectedErrno(err), } } @@ -1040,7 +1040,7 @@ const WasiThreadImpl = struct { }; const LinuxThreadImpl = struct { - const linux = os.linux; + const linux = std.os.linux; pub const ThreadHandle = i32; @@ -1055,9 +1055,9 @@ const LinuxThreadImpl = struct { } fn getCpuCount() !usize { - const cpu_set = try os.sched_getaffinity(0); + const cpu_set = try posix.sched_getaffinity(0); // TODO: should not need this usize cast - return @as(usize, os.CPU_COUNT(cpu_set)); + return @as(usize, posix.CPU_COUNT(cpu_set)); } thread: *ThreadCompletion, @@ -1255,10 +1255,10 @@ const LinuxThreadImpl = struct { // map all memory needed without read/write permissions // to avoid committing the whole region right away // anonymous mapping ensures file descriptor limits are not exceeded - const mapped = os.mmap( + const mapped = posix.mmap( null, map_bytes, - os.PROT.NONE, + posix.PROT.NONE, .{ .TYPE = .PRIVATE, .ANONYMOUS = true }, -1, 0, @@ -1271,24 +1271,24 @@ const LinuxThreadImpl = struct { else => |e| return e, }; assert(mapped.len >= map_bytes); - errdefer os.munmap(mapped); + errdefer posix.munmap(mapped); // map everything but the guard page as read/write - os.mprotect( + posix.mprotect( @alignCast(mapped[guard_offset..]), - os.PROT.READ | os.PROT.WRITE, + posix.PROT.READ | posix.PROT.WRITE, ) catch |err| switch (err) { error.AccessDenied => unreachable, else => |e| return e, }; // Prepare the TLS segment and prepare a user_desc struct when needed on x86 - var tls_ptr = os.linux.tls.prepareTLS(mapped[tls_offset..]); - var user_desc: if (target.cpu.arch == .x86) os.linux.user_desc else void = undefined; + var tls_ptr = linux.tls.prepareTLS(mapped[tls_offset..]); + var user_desc: if (target.cpu.arch == .x86) linux.user_desc else void = undefined; if (target.cpu.arch == .x86) { defer tls_ptr = @intFromPtr(&user_desc); user_desc = .{ - .entry_number = os.linux.tls.tls_image.gdt_entry_number, + .entry_number = linux.tls.tls_image.gdt_entry_number, .base_addr = tls_ptr, .limit = 0xfffff, .flags = .{ @@ -1313,7 +1313,7 @@ const LinuxThreadImpl = struct { linux.CLONE.PARENT_SETTID | linux.CLONE.CHILD_CLEARTID | linux.CLONE.SIGHAND | linux.CLONE.SYSVSEM | linux.CLONE.SETTLS; - switch (linux.getErrno(linux.clone( + switch (linux.E.init(linux.clone( Instance.entryFn, @intFromPtr(&mapped[stack_offset]), flags, @@ -1329,7 +1329,7 @@ const LinuxThreadImpl = struct { .NOSPC => unreachable, .PERM => unreachable, .USERS => unreachable, - else => |err| return os.unexpectedErrno(err), + else => |err| return posix.unexpectedErrno(err), } } @@ -1346,7 +1346,7 @@ const LinuxThreadImpl = struct { } fn join(self: Impl) void { - defer os.munmap(self.thread.mapped); + defer posix.munmap(self.thread.mapped); var spin: u8 = 10; while (true) { @@ -1361,7 +1361,7 @@ const LinuxThreadImpl = struct { continue; } - switch (linux.getErrno(linux.futex_wait( + switch (linux.E.init(linux.futex_wait( &self.thread.child_tid.raw, linux.FUTEX.WAIT, tid, @@ -1410,7 +1410,7 @@ test "setName, getName" { // Wait for the main thread to have set the thread field in the context. ctx.start_wait_event.wait(); - switch (target.os.tag) { + switch (native_os) { .windows => testThreadName(&ctx.thread) catch |err| switch (err) { error.Unsupported => return error.SkipZigTest, else => return err, @@ -1433,7 +1433,7 @@ test "setName, getName" { context.start_wait_event.set(); context.test_done_event.wait(); - switch (target.os.tag) { + switch (native_os) { .macos, .ios, .watchos, .tvos => { const res = thread.setName("foobar"); try std.testing.expectError(error.Unsupported, res); diff --git a/lib/std/Thread/Futex.zig b/lib/std/Thread/Futex.zig index 764d3f13e1..39afe249d1 100644 --- a/lib/std/Thread/Futex.zig +++ b/lib/std/Thread/Futex.zig @@ -1,13 +1,20 @@ -//! Futex is a mechanism used to block (`wait`) and unblock (`wake`) threads using a 32bit memory address as hints. -//! Blocking a thread is acknowledged only if the 32bit memory address is equal to a given value. -//! This check helps avoid block/unblock deadlocks which occur if a `wake()` happens before a `wait()`. -//! Using Futex, other Thread synchronization primitives can be built which efficiently wait for cross-thread events or signals. +//! A mechanism used to block (`wait`) and unblock (`wake`) threads using a +//! 32bit memory address as hints. +//! +//! Blocking a thread is acknowledged only if the 32bit memory address is equal +//! to a given value. This check helps avoid block/unblock deadlocks which +//! occur if a `wake()` happens before a `wait()`. +//! +//! Using Futex, other Thread synchronization primitives can be built which +//! efficiently wait for cross-thread events or signals. const std = @import("../std.zig"); const builtin = @import("builtin"); const Futex = @This(); +const windows = std.os.windows; +const linux = std.os.linux; +const c = std.c; -const os = std.os; const assert = std.debug.assert; const testing = std.testing; const atomic = std.atomic; @@ -124,18 +131,18 @@ const SingleThreadedImpl = struct { // as it's generally already a linked target and is autoloaded into all processes anyway. const WindowsImpl = struct { fn wait(ptr: *const atomic.Value(u32), expect: u32, timeout: ?u64) error{Timeout}!void { - var timeout_value: os.windows.LARGE_INTEGER = undefined; - var timeout_ptr: ?*const os.windows.LARGE_INTEGER = null; + var timeout_value: windows.LARGE_INTEGER = undefined; + var timeout_ptr: ?*const windows.LARGE_INTEGER = null; // NTDLL functions work with time in units of 100 nanoseconds. // Positive values are absolute deadlines while negative values are relative durations. if (timeout) |delay| { - timeout_value = @as(os.windows.LARGE_INTEGER, @intCast(delay / 100)); + timeout_value = @as(windows.LARGE_INTEGER, @intCast(delay / 100)); timeout_value = -timeout_value; timeout_ptr = &timeout_value; } - const rc = os.windows.ntdll.RtlWaitOnAddress( + const rc = windows.ntdll.RtlWaitOnAddress( ptr, &expect, @sizeOf(@TypeOf(expect)), @@ -157,8 +164,8 @@ const WindowsImpl = struct { assert(max_waiters != 0); switch (max_waiters) { - 1 => os.windows.ntdll.RtlWakeAddressSingle(address), - else => os.windows.ntdll.RtlWakeAddressAll(address), + 1 => windows.ntdll.RtlWakeAddressSingle(address), + else => windows.ntdll.RtlWakeAddressAll(address), } } }; @@ -189,10 +196,10 @@ const DarwinImpl = struct { var timeout_overflowed = false; const addr: *const anyopaque = ptr; - const flags = os.darwin.UL_COMPARE_AND_WAIT | os.darwin.ULF_NO_ERRNO; + const flags = c.UL_COMPARE_AND_WAIT | c.ULF_NO_ERRNO; const status = blk: { if (supports_ulock_wait2) { - break :blk os.darwin.__ulock_wait2(flags, addr, expect, timeout_ns, 0); + break :blk c.__ulock_wait2(flags, addr, expect, timeout_ns, 0); } const timeout_us = std.math.cast(u32, timeout_ns / std.time.ns_per_us) orelse overflow: { @@ -200,11 +207,11 @@ const DarwinImpl = struct { break :overflow std.math.maxInt(u32); }; - break :blk os.darwin.__ulock_wait(flags, addr, expect, timeout_us); + break :blk c.__ulock_wait(flags, addr, expect, timeout_us); }; if (status >= 0) return; - switch (@as(std.os.E, @enumFromInt(-status))) { + switch (@as(c.E, @enumFromInt(-status))) { // Wait was interrupted by the OS or other spurious signalling. .INTR => {}, // Address of the futex was paged out. This is unlikely, but possible in theory, and @@ -221,17 +228,17 @@ const DarwinImpl = struct { } fn wake(ptr: *const atomic.Value(u32), max_waiters: u32) void { - var flags: u32 = os.darwin.UL_COMPARE_AND_WAIT | os.darwin.ULF_NO_ERRNO; + var flags: u32 = c.UL_COMPARE_AND_WAIT | c.ULF_NO_ERRNO; if (max_waiters > 1) { - flags |= os.darwin.ULF_WAKE_ALL; + flags |= c.ULF_WAKE_ALL; } while (true) { const addr: *const anyopaque = ptr; - const status = os.darwin.__ulock_wake(flags, addr, 0); + const status = c.__ulock_wake(flags, addr, 0); if (status >= 0) return; - switch (@as(std.os.E, @enumFromInt(-status))) { + switch (@as(c.E, @enumFromInt(-status))) { .INTR => continue, // spurious wake() .FAULT => unreachable, // __ulock_wake doesn't generate EFAULT according to darwin pthread_cond_t .NOENT => return, // nothing was woken up @@ -245,20 +252,20 @@ const DarwinImpl = struct { // https://man7.org/linux/man-pages/man2/futex.2.html const LinuxImpl = struct { fn wait(ptr: *const atomic.Value(u32), expect: u32, timeout: ?u64) error{Timeout}!void { - var ts: os.timespec = undefined; + var ts: linux.timespec = undefined; if (timeout) |timeout_ns| { ts.tv_sec = @as(@TypeOf(ts.tv_sec), @intCast(timeout_ns / std.time.ns_per_s)); ts.tv_nsec = @as(@TypeOf(ts.tv_nsec), @intCast(timeout_ns % std.time.ns_per_s)); } - const rc = os.linux.futex_wait( + const rc = linux.futex_wait( @as(*const i32, @ptrCast(&ptr.raw)), - os.linux.FUTEX.PRIVATE_FLAG | os.linux.FUTEX.WAIT, + linux.FUTEX.PRIVATE_FLAG | linux.FUTEX.WAIT, @as(i32, @bitCast(expect)), if (timeout != null) &ts else null, ); - switch (os.linux.getErrno(rc)) { + switch (linux.E.init(rc)) { .SUCCESS => {}, // notified by `wake()` .INTR => {}, // spurious wakeup .AGAIN => {}, // ptr.* != expect @@ -273,13 +280,13 @@ const LinuxImpl = struct { } fn wake(ptr: *const atomic.Value(u32), max_waiters: u32) void { - const rc = os.linux.futex_wake( + const rc = linux.futex_wake( @as(*const i32, @ptrCast(&ptr.raw)), - os.linux.FUTEX.PRIVATE_FLAG | os.linux.FUTEX.WAKE, + linux.FUTEX.PRIVATE_FLAG | linux.FUTEX.WAKE, std.math.cast(i32, max_waiters) orelse std.math.maxInt(i32), ); - switch (os.linux.getErrno(rc)) { + switch (linux.E.init(rc)) { .SUCCESS => {}, // successful wake up .INVAL => {}, // invalid futex_wait() on ptr done elsewhere .FAULT => {}, // pointer became invalid while doing the wake @@ -292,28 +299,28 @@ const LinuxImpl = struct { const FreebsdImpl = struct { fn wait(ptr: *const atomic.Value(u32), expect: u32, timeout: ?u64) error{Timeout}!void { var tm_size: usize = 0; - var tm: os.freebsd._umtx_time = undefined; - var tm_ptr: ?*const os.freebsd._umtx_time = null; + var tm: c._umtx_time = undefined; + var tm_ptr: ?*const c._umtx_time = null; if (timeout) |timeout_ns| { tm_ptr = &tm; tm_size = @sizeOf(@TypeOf(tm)); tm._flags = 0; // use relative time not UMTX_ABSTIME - tm._clockid = os.CLOCK.MONOTONIC; + tm._clockid = c.CLOCK.MONOTONIC; tm._timeout.tv_sec = @as(@TypeOf(tm._timeout.tv_sec), @intCast(timeout_ns / std.time.ns_per_s)); tm._timeout.tv_nsec = @as(@TypeOf(tm._timeout.tv_nsec), @intCast(timeout_ns % std.time.ns_per_s)); } - const rc = os.freebsd._umtx_op( + const rc = c._umtx_op( @intFromPtr(&ptr.raw), - @intFromEnum(os.freebsd.UMTX_OP.WAIT_UINT_PRIVATE), + @intFromEnum(c.UMTX_OP.WAIT_UINT_PRIVATE), @as(c_ulong, expect), tm_size, @intFromPtr(tm_ptr), ); - switch (os.errno(rc)) { + switch (std.posix.errno(rc)) { .SUCCESS => {}, .FAULT => unreachable, // one of the args points to invalid memory .INVAL => unreachable, // arguments should be correct @@ -327,15 +334,15 @@ const FreebsdImpl = struct { } fn wake(ptr: *const atomic.Value(u32), max_waiters: u32) void { - const rc = os.freebsd._umtx_op( + const rc = c._umtx_op( @intFromPtr(&ptr.raw), - @intFromEnum(os.freebsd.UMTX_OP.WAKE_PRIVATE), + @intFromEnum(c.UMTX_OP.WAKE_PRIVATE), @as(c_ulong, max_waiters), 0, // there is no timeout struct 0, // there is no timeout struct pointer ); - switch (os.errno(rc)) { + switch (std.posix.errno(rc)) { .SUCCESS => {}, .FAULT => {}, // it's ok if the ptr doesn't point to valid memory .INVAL => unreachable, // arguments should be correct @@ -347,21 +354,21 @@ const FreebsdImpl = struct { // https://man.openbsd.org/futex.2 const OpenbsdImpl = struct { fn wait(ptr: *const atomic.Value(u32), expect: u32, timeout: ?u64) error{Timeout}!void { - var ts: os.timespec = undefined; + var ts: c.timespec = undefined; if (timeout) |timeout_ns| { ts.tv_sec = @as(@TypeOf(ts.tv_sec), @intCast(timeout_ns / std.time.ns_per_s)); ts.tv_nsec = @as(@TypeOf(ts.tv_nsec), @intCast(timeout_ns % std.time.ns_per_s)); } - const rc = os.openbsd.futex( + const rc = c.futex( @as(*const volatile u32, @ptrCast(&ptr.raw)), - os.openbsd.FUTEX_WAIT | os.openbsd.FUTEX_PRIVATE_FLAG, + c.FUTEX_WAIT | c.FUTEX_PRIVATE_FLAG, @as(c_int, @bitCast(expect)), if (timeout != null) &ts else null, null, // FUTEX_WAIT takes no requeue address ); - switch (os.errno(rc)) { + switch (std.posix.errno(rc)) { .SUCCESS => {}, // woken up by wake .NOSYS => unreachable, // the futex operation shouldn't be invalid .FAULT => unreachable, // ptr was invalid @@ -378,9 +385,9 @@ const OpenbsdImpl = struct { } fn wake(ptr: *const atomic.Value(u32), max_waiters: u32) void { - const rc = os.openbsd.futex( + const rc = c.futex( @as(*const volatile u32, @ptrCast(&ptr.raw)), - os.openbsd.FUTEX_WAKE | os.openbsd.FUTEX_PRIVATE_FLAG, + c.FUTEX_WAKE | c.FUTEX_PRIVATE_FLAG, std.math.cast(c_int, max_waiters) orelse std.math.maxInt(c_int), null, // FUTEX_WAKE takes no timeout ptr null, // FUTEX_WAKE takes no requeue address @@ -415,9 +422,9 @@ const DragonflyImpl = struct { const value = @as(c_int, @bitCast(expect)); const addr = @as(*const volatile c_int, @ptrCast(&ptr.raw)); - const rc = os.dragonfly.umtx_sleep(addr, value, timeout_us); + const rc = c.umtx_sleep(addr, value, timeout_us); - switch (os.errno(rc)) { + switch (std.posix.errno(rc)) { .SUCCESS => {}, .BUSY => {}, // ptr != expect .AGAIN => { // maybe timed out, or paged out, or hit 2s kernel refresh @@ -444,7 +451,7 @@ const DragonflyImpl = struct { // > umtx_wakeup() will generally return 0 unless the address is bad. // We are fine with the address being bad (e.g. for Semaphore.post() where Semaphore.wait() frees the Semaphore) const addr = @as(*const volatile c_int, @ptrCast(&ptr.raw)); - _ = os.dragonfly.umtx_wakeup(addr, to_wake); + _ = c.umtx_wakeup(addr, to_wake); } }; @@ -496,8 +503,8 @@ const WasmImpl = struct { /// https://go.dev/src/runtime/sema.go const PosixImpl = struct { const Event = struct { - cond: std.c.pthread_cond_t, - mutex: std.c.pthread_mutex_t, + cond: c.pthread_cond_t, + mutex: c.pthread_mutex_t, state: enum { empty, waiting, notified }, fn init(self: *Event) void { @@ -509,18 +516,18 @@ const PosixImpl = struct { fn deinit(self: *Event) void { // Some platforms reportedly give EINVAL for statically initialized pthread types. - const rc = std.c.pthread_cond_destroy(&self.cond); + const rc = c.pthread_cond_destroy(&self.cond); assert(rc == .SUCCESS or rc == .INVAL); - const rm = std.c.pthread_mutex_destroy(&self.mutex); + const rm = c.pthread_mutex_destroy(&self.mutex); assert(rm == .SUCCESS or rm == .INVAL); self.* = undefined; } fn wait(self: *Event, timeout: ?u64) error{Timeout}!void { - assert(std.c.pthread_mutex_lock(&self.mutex) == .SUCCESS); - defer assert(std.c.pthread_mutex_unlock(&self.mutex) == .SUCCESS); + assert(c.pthread_mutex_lock(&self.mutex) == .SUCCESS); + defer assert(c.pthread_mutex_unlock(&self.mutex) == .SUCCESS); // Early return if the event was already set. if (self.state == .notified) { @@ -530,9 +537,9 @@ const PosixImpl = struct { // Compute the absolute timeout if one was specified. // POSIX requires that REALTIME is used by default for the pthread timedwait functions. // This can be changed with pthread_condattr_setclock, but it's an extension and may not be available everywhere. - var ts: os.timespec = undefined; + var ts: c.timespec = undefined; if (timeout) |timeout_ns| { - os.clock_gettime(os.CLOCK.REALTIME, &ts) catch unreachable; + std.posix.clock_gettime(c.CLOCK.REALTIME, &ts) catch unreachable; ts.tv_sec +|= @as(@TypeOf(ts.tv_sec), @intCast(timeout_ns / std.time.ns_per_s)); ts.tv_nsec += @as(@TypeOf(ts.tv_nsec), @intCast(timeout_ns % std.time.ns_per_s)); @@ -549,8 +556,8 @@ const PosixImpl = struct { while (true) { // Block using either pthread_cond_wait or pthread_cond_timewait if there's an absolute timeout. const rc = blk: { - if (timeout == null) break :blk std.c.pthread_cond_wait(&self.cond, &self.mutex); - break :blk std.c.pthread_cond_timedwait(&self.cond, &self.mutex, &ts); + if (timeout == null) break :blk c.pthread_cond_wait(&self.cond, &self.mutex); + break :blk c.pthread_cond_timedwait(&self.cond, &self.mutex, &ts); }; // After waking up, check if the event was set. @@ -574,8 +581,8 @@ const PosixImpl = struct { } fn set(self: *Event) void { - assert(std.c.pthread_mutex_lock(&self.mutex) == .SUCCESS); - defer assert(std.c.pthread_mutex_unlock(&self.mutex) == .SUCCESS); + assert(c.pthread_mutex_lock(&self.mutex) == .SUCCESS); + defer assert(c.pthread_mutex_unlock(&self.mutex) == .SUCCESS); // Make sure that multiple calls to set() were not done on the same Event. const old_state = self.state; @@ -586,7 +593,7 @@ const PosixImpl = struct { // the condition variable once it observes the new state, potentially causing a UAF if done unlocked. self.state = .notified; if (old_state == .waiting) { - assert(std.c.pthread_cond_signal(&self.cond) == .SUCCESS); + assert(c.pthread_cond_signal(&self.cond) == .SUCCESS); } } }; @@ -732,7 +739,7 @@ const PosixImpl = struct { }; const Bucket = struct { - mutex: std.c.pthread_mutex_t align(atomic.cache_line) = .{}, + mutex: c.pthread_mutex_t align(atomic.cache_line) = .{}, pending: atomic.Value(usize) = atomic.Value(usize).init(0), treap: Treap = .{}, @@ -798,8 +805,8 @@ const PosixImpl = struct { var waiter: Waiter = undefined; { - assert(std.c.pthread_mutex_lock(&bucket.mutex) == .SUCCESS); - defer assert(std.c.pthread_mutex_unlock(&bucket.mutex) == .SUCCESS); + assert(c.pthread_mutex_lock(&bucket.mutex) == .SUCCESS); + defer assert(c.pthread_mutex_unlock(&bucket.mutex) == .SUCCESS); cancelled = ptr.load(.monotonic) != expect; if (cancelled) { @@ -821,8 +828,8 @@ const PosixImpl = struct { // If we return early without waiting, the waiter on the stack would be invalidated and the wake() thread risks a UAF. defer if (!cancelled) waiter.event.wait(null) catch unreachable; - assert(std.c.pthread_mutex_lock(&bucket.mutex) == .SUCCESS); - defer assert(std.c.pthread_mutex_unlock(&bucket.mutex) == .SUCCESS); + assert(c.pthread_mutex_lock(&bucket.mutex) == .SUCCESS); + defer assert(c.pthread_mutex_unlock(&bucket.mutex) == .SUCCESS); cancelled = WaitQueue.tryRemove(&bucket.treap, address, &waiter); if (cancelled) { @@ -871,8 +878,8 @@ const PosixImpl = struct { } }; - assert(std.c.pthread_mutex_lock(&bucket.mutex) == .SUCCESS); - defer assert(std.c.pthread_mutex_unlock(&bucket.mutex) == .SUCCESS); + assert(c.pthread_mutex_lock(&bucket.mutex) == .SUCCESS); + defer assert(c.pthread_mutex_unlock(&bucket.mutex) == .SUCCESS); // Another pending check again to avoid the WaitQueue lookup if not necessary. if (bucket.pending.load(.monotonic) > 0) { diff --git a/lib/std/Thread/Mutex.zig b/lib/std/Thread/Mutex.zig index 67472ffd9c..b6d3d6fb84 100644 --- a/lib/std/Thread/Mutex.zig +++ b/lib/std/Thread/Mutex.zig @@ -23,7 +23,6 @@ const std = @import("../std.zig"); const builtin = @import("builtin"); const Mutex = @This(); -const os = std.os; const assert = std.debug.assert; const testing = std.testing; const Thread = std.Thread; @@ -117,36 +116,40 @@ const SingleThreadedImpl = struct { // SRWLOCK on windows is almost always faster than Futex solution. // It also implements an efficient Condition with requeue support for us. const WindowsImpl = struct { - srwlock: os.windows.SRWLOCK = .{}, + srwlock: windows.SRWLOCK = .{}, fn tryLock(self: *@This()) bool { - return os.windows.kernel32.TryAcquireSRWLockExclusive(&self.srwlock) != os.windows.FALSE; + return windows.kernel32.TryAcquireSRWLockExclusive(&self.srwlock) != windows.FALSE; } fn lock(self: *@This()) void { - os.windows.kernel32.AcquireSRWLockExclusive(&self.srwlock); + windows.kernel32.AcquireSRWLockExclusive(&self.srwlock); } fn unlock(self: *@This()) void { - os.windows.kernel32.ReleaseSRWLockExclusive(&self.srwlock); + windows.kernel32.ReleaseSRWLockExclusive(&self.srwlock); } + + const windows = std.os.windows; }; // os_unfair_lock on darwin supports priority inheritance and is generally faster than Futex solutions. const DarwinImpl = struct { - oul: os.darwin.os_unfair_lock = .{}, + oul: c.os_unfair_lock = .{}, fn tryLock(self: *@This()) bool { - return os.darwin.os_unfair_lock_trylock(&self.oul); + return c.os_unfair_lock_trylock(&self.oul); } fn lock(self: *@This()) void { - os.darwin.os_unfair_lock_lock(&self.oul); + c.os_unfair_lock_lock(&self.oul); } fn unlock(self: *@This()) void { - os.darwin.os_unfair_lock_unlock(&self.oul); + c.os_unfair_lock_unlock(&self.oul); } + + const c = std.c; }; const FutexImpl = struct { diff --git a/lib/std/builtin.zig b/lib/std/builtin.zig index 0238d35c7d..6f6e0c97fc 100644 --- a/lib/std/builtin.zig +++ b/lib/std/builtin.zig @@ -782,7 +782,7 @@ pub fn default_panic(msg: []const u8, error_return_trace: ?*StackTrace, ret_addr }, .wasi => { std.debug.print("{s}", .{msg}); - std.os.abort(); + std.posix.abort(); }, .uefi => { const uefi = std.os.uefi; @@ -830,9 +830,9 @@ pub fn default_panic(msg: []const u8, error_return_trace: ?*StackTrace, ret_addr } // Didn't have boot_services, just fallback to whatever. - std.os.abort(); + std.posix.abort(); }, - .cuda, .amdhsa => std.os.abort(), + .cuda, .amdhsa => std.posix.abort(), .plan9 => { var status: [std.os.plan9.ERRMAX]u8 = undefined; const len = @min(msg.len, status.len - 1); diff --git a/lib/std/c.zig b/lib/std/c.zig index 7f8f46ce4d..a7468efd7d 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -2,12 +2,13 @@ const std = @import("std"); const builtin = @import("builtin"); const c = @This(); const page_size = std.mem.page_size; -const iovec = std.os.iovec; -const iovec_const = std.os.iovec_const; +const iovec = std.posix.iovec; +const iovec_const = std.posix.iovec_const; const wasi = @import("c/wasi.zig"); const native_abi = builtin.abi; const native_arch = builtin.cpu.arch; const native_os = builtin.os.tag; +const linux = std.os.linux; /// If not linking libc, returns false. /// If linking musl libc, returns true. @@ -208,7 +209,7 @@ pub const pthread_rwlock_t = switch (native_os) { }; pub const AT = switch (native_os) { - .linux => std.os.linux.AT, + .linux => linux.AT, .windows => struct { /// Remove directory instead of unlinking file pub const REMOVEDIR = 0x200; @@ -326,9 +327,9 @@ pub const AT = switch (native_os) { }; pub const O = switch (native_os) { - .linux => std.os.linux.O, + .linux => linux.O, .emscripten => packed struct(u32) { - ACCMODE: std.os.ACCMODE = .RDONLY, + ACCMODE: std.posix.ACCMODE = .RDONLY, _2: u4 = 0, CREAT: bool = false, EXCL: bool = false, @@ -369,7 +370,7 @@ pub const O = switch (native_os) { _: u3 = 0, }, .solaris, .illumos => packed struct(u32) { - ACCMODE: std.os.ACCMODE = .RDONLY, + ACCMODE: std.posix.ACCMODE = .RDONLY, NDELAY: bool = false, APPEND: bool = false, SYNC: bool = false, @@ -396,7 +397,7 @@ pub const O = switch (native_os) { _: u6 = 0, }, .netbsd => packed struct(u32) { - ACCMODE: std.os.ACCMODE = .RDONLY, + ACCMODE: std.posix.ACCMODE = .RDONLY, NONBLOCK: bool = false, APPEND: bool = false, SHLOCK: bool = false, @@ -420,7 +421,7 @@ pub const O = switch (native_os) { _: u8 = 0, }, .openbsd => packed struct(u32) { - ACCMODE: std.os.ACCMODE = .RDONLY, + ACCMODE: std.posix.ACCMODE = .RDONLY, NONBLOCK: bool = false, APPEND: bool = false, SHLOCK: bool = false, @@ -438,7 +439,7 @@ pub const O = switch (native_os) { _: u14 = 0, }, .haiku => packed struct(u32) { - ACCMODE: std.os.ACCMODE = .RDONLY, + ACCMODE: std.posix.ACCMODE = .RDONLY, _2: u4 = 0, CLOEXEC: bool = false, NONBLOCK: bool = false, @@ -458,7 +459,7 @@ pub const O = switch (native_os) { _: u10 = 0, }, .macos, .ios, .tvos, .watchos => packed struct(u32) { - ACCMODE: std.os.ACCMODE = .RDONLY, + ACCMODE: std.posix.ACCMODE = .RDONLY, NONBLOCK: bool = false, APPEND: bool = false, SHLOCK: bool = false, @@ -485,7 +486,7 @@ pub const O = switch (native_os) { POPUP: bool = false, }, .dragonfly => packed struct(u32) { - ACCMODE: std.os.ACCMODE = .RDONLY, + ACCMODE: std.posix.ACCMODE = .RDONLY, NONBLOCK: bool = false, APPEND: bool = false, SHLOCK: bool = false, @@ -511,7 +512,7 @@ pub const O = switch (native_os) { _: u4 = 0, }, .freebsd => packed struct(u32) { - ACCMODE: std.os.ACCMODE = .RDONLY, + ACCMODE: std.posix.ACCMODE = .RDONLY, NONBLOCK: bool = false, APPEND: bool = false, SHLOCK: bool = false, @@ -538,7 +539,7 @@ pub const O = switch (native_os) { }; pub const MAP = switch (native_os) { - .linux => std.os.linux.MAP, + .linux => linux.MAP, .emscripten => packed struct(u32) { TYPE: enum(u4) { SHARED = 0x01, @@ -683,7 +684,7 @@ pub const cc_t = u8; /// Indices into the `cc` array in the `termios` struct. pub const V = switch (native_os) { - .linux => std.os.linux.V, + .linux => linux.V, .macos, .ios, .tvos, .watchos, .netbsd, .openbsd => enum { EOF, EOL, @@ -782,7 +783,7 @@ pub const V = switch (native_os) { }; pub const NCCS = switch (native_os) { - .linux => std.os.linux.NCCS, + .linux => linux.NCCS, .macos, .ios, .tvos, .watchos, .freebsd, .kfreebsd, .netbsd, .openbsd, .dragonfly => 20, .haiku => 11, .solaris, .illumos => 19, @@ -791,7 +792,7 @@ pub const NCCS = switch (native_os) { }; pub const termios = switch (native_os) { - .linux => std.os.linux.termios, + .linux => linux.termios, .macos, .ios, .tvos, .watchos => extern struct { iflag: tc_iflag_t, oflag: tc_oflag_t, @@ -841,7 +842,7 @@ pub const termios = switch (native_os) { }; pub const tc_iflag_t = switch (native_os) { - .linux => std.os.linux.tc_iflag_t, + .linux => linux.tc_iflag_t, .macos, .ios, .tvos, .watchos => packed struct(u64) { IGNBRK: bool = false, BRKINT: bool = false, @@ -951,7 +952,7 @@ pub const tc_iflag_t = switch (native_os) { }; pub const tc_oflag_t = switch (native_os) { - .linux => std.os.linux.tc_oflag_t, + .linux => linux.tc_oflag_t, .macos, .ios, .tvos, .watchos => packed struct(u64) { OPOST: bool = false, ONLCR: bool = false, @@ -1042,13 +1043,13 @@ pub const tc_oflag_t = switch (native_os) { }; pub const CSIZE = switch (native_os) { - .linux => std.os.linux.CSIZE, + .linux => linux.CSIZE, .haiku => enum(u1) { CS7, CS8 }, else => enum(u2) { CS5, CS6, CS7, CS8 }, }; pub const tc_cflag_t = switch (native_os) { - .linux => std.os.linux.tc_cflag_t, + .linux => linux.tc_cflag_t, .macos, .ios, .tvos, .watchos => packed struct(u64) { CIGNORE: bool = false, _1: u5 = 0, @@ -1184,7 +1185,7 @@ pub const tc_cflag_t = switch (native_os) { }; pub const tc_lflag_t = switch (native_os) { - .linux => std.os.linux.tc_lflag_t, + .linux => linux.tc_lflag_t, .macos, .ios, .tvos, .watchos => packed struct(u64) { ECHOKE: bool = false, ECHOE: bool = false, @@ -1310,7 +1311,7 @@ pub const tc_lflag_t = switch (native_os) { }; pub const speed_t = switch (native_os) { - .linux => std.os.linux.speed_t, + .linux => linux.speed_t, .macos, .ios, .tvos, .watchos, .openbsd => enum(u64) { B0 = 0, B50 = 50, @@ -1605,14 +1606,6 @@ pub const stat = switch (native_os) { else => private.stat, }; -pub fn getErrno(rc: anytype) c.E { - if (rc == -1) { - return @enumFromInt(c._errno().*); - } else { - return .SUCCESS; - } -} - pub extern "c" var environ: [*:null]?[*:0]u8; pub extern "c" fn fopen(noalias filename: [*:0]const u8, noalias modes: [*:0]const u8) ?*FILE; @@ -1905,10 +1898,10 @@ pub extern "c" fn if_nametoindex([*:0]const u8) c_int; pub const getcontext = if (builtin.target.isAndroid()) @compileError("android bionic libc does not implement getcontext") else if (native_os == .linux and builtin.target.isMusl()) - std.os.linux.getcontext + linux.getcontext else struct { - extern fn getcontext(ucp: *std.os.ucontext_t) c_int; + extern fn getcontext(ucp: *std.posix.ucontext_t) c_int; }.getcontext; pub const max_align_t = if (native_abi == .msvc) diff --git a/lib/std/c/darwin.zig b/lib/std/c/darwin.zig index 8442ac9fe0..521aca507e 100644 --- a/lib/std/c/darwin.zig +++ b/lib/std/c/darwin.zig @@ -4,7 +4,7 @@ const assert = std.debug.assert; const macho = std.macho; const native_arch = builtin.target.cpu.arch; const maxInt = std.math.maxInt; -const iovec_const = std.os.iovec_const; +const iovec_const = std.posix.iovec_const; pub const aarch64 = @import("darwin/aarch64.zig"); pub const x86_64 = @import("darwin/x86_64.zig"); @@ -2826,237 +2826,12 @@ pub extern "c" fn posix_spawnp( env: [*:null]?[*:0]const u8, ) c_int; -pub const PosixSpawn = struct { - const errno = std.os.errno; - const unexpectedErrno = std.os.unexpectedErrno; - - pub const Error = error{ - SystemResources, - InvalidFileDescriptor, - NameTooLong, - TooBig, - PermissionDenied, - InputOutput, - FileSystem, - FileNotFound, - InvalidExe, - NotDir, - FileBusy, - /// Returned when the child fails to execute either in the pre-exec() initialization step, or - /// when exec(3) is invoked. - ChildExecFailed, - } || std.os.UnexpectedError; - - pub const Attr = struct { - attr: posix_spawnattr_t, - - pub fn init() Error!Attr { - var attr: posix_spawnattr_t = undefined; - switch (errno(posix_spawnattr_init(&attr))) { - .SUCCESS => return Attr{ .attr = attr }, - .NOMEM => return error.SystemResources, - .INVAL => unreachable, - else => |err| return unexpectedErrno(err), - } - } - - pub fn deinit(self: *Attr) void { - defer self.* = undefined; - switch (errno(posix_spawnattr_destroy(&self.attr))) { - .SUCCESS => return, - .INVAL => unreachable, // Invalid parameters. - else => unreachable, - } - } - - pub fn get(self: Attr) Error!u16 { - var flags: c_short = undefined; - switch (errno(posix_spawnattr_getflags(&self.attr, &flags))) { - .SUCCESS => return @as(u16, @bitCast(flags)), - .INVAL => unreachable, - else => |err| return unexpectedErrno(err), - } - } - - pub fn set(self: *Attr, flags: u16) Error!void { - switch (errno(posix_spawnattr_setflags(&self.attr, @as(c_short, @bitCast(flags))))) { - .SUCCESS => return, - .INVAL => unreachable, - else => |err| return unexpectedErrno(err), - } - } - }; - - pub const Actions = struct { - actions: posix_spawn_file_actions_t, - - pub fn init() Error!Actions { - var actions: posix_spawn_file_actions_t = undefined; - switch (errno(posix_spawn_file_actions_init(&actions))) { - .SUCCESS => return Actions{ .actions = actions }, - .NOMEM => return error.SystemResources, - .INVAL => unreachable, - else => |err| return unexpectedErrno(err), - } - } - - pub fn deinit(self: *Actions) void { - defer self.* = undefined; - switch (errno(posix_spawn_file_actions_destroy(&self.actions))) { - .SUCCESS => return, - .INVAL => unreachable, // Invalid parameters. - else => unreachable, - } - } - - pub fn open(self: *Actions, fd: fd_t, path: []const u8, flags: u32, mode: mode_t) Error!void { - const posix_path = try std.os.toPosixPath(path); - return self.openZ(fd, &posix_path, flags, mode); - } - - pub fn openZ(self: *Actions, fd: fd_t, path: [*:0]const u8, flags: u32, mode: mode_t) Error!void { - switch (errno(posix_spawn_file_actions_addopen(&self.actions, fd, path, @as(c_int, @bitCast(flags)), mode))) { - .SUCCESS => return, - .BADF => return error.InvalidFileDescriptor, - .NOMEM => return error.SystemResources, - .NAMETOOLONG => return error.NameTooLong, - .INVAL => unreachable, // the value of file actions is invalid - else => |err| return unexpectedErrno(err), - } - } - - pub fn close(self: *Actions, fd: fd_t) Error!void { - switch (errno(posix_spawn_file_actions_addclose(&self.actions, fd))) { - .SUCCESS => return, - .BADF => return error.InvalidFileDescriptor, - .NOMEM => return error.SystemResources, - .INVAL => unreachable, // the value of file actions is invalid - .NAMETOOLONG => unreachable, - else => |err| return unexpectedErrno(err), - } - } - - pub fn dup2(self: *Actions, fd: fd_t, newfd: fd_t) Error!void { - switch (errno(posix_spawn_file_actions_adddup2(&self.actions, fd, newfd))) { - .SUCCESS => return, - .BADF => return error.InvalidFileDescriptor, - .NOMEM => return error.SystemResources, - .INVAL => unreachable, // the value of file actions is invalid - .NAMETOOLONG => unreachable, - else => |err| return unexpectedErrno(err), - } - } - - pub fn inherit(self: *Actions, fd: fd_t) Error!void { - switch (errno(posix_spawn_file_actions_addinherit_np(&self.actions, fd))) { - .SUCCESS => return, - .BADF => return error.InvalidFileDescriptor, - .NOMEM => return error.SystemResources, - .INVAL => unreachable, // the value of file actions is invalid - .NAMETOOLONG => unreachable, - else => |err| return unexpectedErrno(err), - } - } - - pub fn chdir(self: *Actions, path: []const u8) Error!void { - const posix_path = try std.os.toPosixPath(path); - return self.chdirZ(&posix_path); - } - - pub fn chdirZ(self: *Actions, path: [*:0]const u8) Error!void { - switch (errno(posix_spawn_file_actions_addchdir_np(&self.actions, path))) { - .SUCCESS => return, - .NOMEM => return error.SystemResources, - .NAMETOOLONG => return error.NameTooLong, - .BADF => unreachable, - .INVAL => unreachable, // the value of file actions is invalid - else => |err| return unexpectedErrno(err), - } - } - - pub fn fchdir(self: *Actions, fd: fd_t) Error!void { - switch (errno(posix_spawn_file_actions_addfchdir_np(&self.actions, fd))) { - .SUCCESS => return, - .BADF => return error.InvalidFileDescriptor, - .NOMEM => return error.SystemResources, - .INVAL => unreachable, // the value of file actions is invalid - .NAMETOOLONG => unreachable, - else => |err| return unexpectedErrno(err), - } - } - }; - - pub fn spawn( - path: []const u8, - actions: ?Actions, - attr: ?Attr, - argv: [*:null]?[*:0]const u8, - envp: [*:null]?[*:0]const u8, - ) Error!pid_t { - const posix_path = try std.os.toPosixPath(path); - return spawnZ(&posix_path, actions, attr, argv, envp); - } - - pub fn spawnZ( - path: [*:0]const u8, - actions: ?Actions, - attr: ?Attr, - argv: [*:null]?[*:0]const u8, - envp: [*:null]?[*:0]const u8, - ) Error!pid_t { - var pid: pid_t = undefined; - switch (errno(posix_spawn( - &pid, - path, - if (actions) |a| &a.actions else null, - if (attr) |a| &a.attr else null, - argv, - envp, - ))) { - .SUCCESS => return pid, - .@"2BIG" => return error.TooBig, - .NOMEM => return error.SystemResources, - .BADF => return error.InvalidFileDescriptor, - .ACCES => return error.PermissionDenied, - .IO => return error.InputOutput, - .LOOP => return error.FileSystem, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOEXEC => return error.InvalidExe, - .NOTDIR => return error.NotDir, - .TXTBSY => return error.FileBusy, - .BADARCH => return error.InvalidExe, - .BADEXEC => return error.InvalidExe, - .FAULT => unreachable, - .INVAL => unreachable, - else => |err| return unexpectedErrno(err), - } - } - - pub fn waitpid(pid: pid_t, flags: u32) Error!std.os.WaitPidResult { - var status: c_int = undefined; - while (true) { - const rc = waitpid(pid, &status, @as(c_int, @intCast(flags))); - switch (errno(rc)) { - .SUCCESS => return std.os.WaitPidResult{ - .pid = @as(pid_t, @intCast(rc)), - .status = @as(u32, @bitCast(status)), - }, - .INTR => continue, - .CHILD => return error.ChildExecFailed, - .INVAL => unreachable, // Invalid flags. - else => unreachable, - } - } - } -}; - pub fn getKernError(err: kern_return_t) KernE { return @as(KernE, @enumFromInt(@as(u32, @truncate(@as(usize, @intCast(err)))))); } -pub fn unexpectedKernError(err: KernE) std.os.UnexpectedError { - if (std.os.unexpected_error_tracing) { +pub fn unexpectedKernError(err: KernE) std.posix.UnexpectedError { + if (std.posix.unexpected_error_tracing) { std.debug.print("unexpected error: {d}\n", .{@intFromEnum(err)}); std.debug.dumpCurrentStackTrace(null); } @@ -3067,7 +2842,7 @@ pub const MachError = error{ /// Not enough permissions held to perform the requested kernel /// call. PermissionDenied, -} || std.os.UnexpectedError; +} || std.posix.UnexpectedError; pub const MachTask = extern struct { port: mach_port_name_t, @@ -3076,8 +2851,8 @@ pub const MachTask = extern struct { return self.port != TASK_NULL; } - pub fn pidForTask(self: MachTask) MachError!std.os.pid_t { - var pid: std.os.pid_t = undefined; + pub fn pidForTask(self: MachTask) MachError!std.c.pid_t { + var pid: std.c.pid_t = undefined; switch (getKernError(pid_for_task(self.port, &pid))) { .SUCCESS => return pid, .FAILURE => return error.PermissionDenied, @@ -3517,7 +3292,7 @@ pub const MachThread = extern struct { } }; -pub fn machTaskForPid(pid: std.os.pid_t) MachError!MachTask { +pub fn machTaskForPid(pid: std.c.pid_t) MachError!MachTask { var port: mach_port_name_t = undefined; switch (getKernError(task_for_pid(mach_task_self(), pid, &port))) { .SUCCESS => {}, diff --git a/lib/std/c/dragonfly.zig b/lib/std/c/dragonfly.zig index 183a81bba2..c265fd0ff2 100644 --- a/lib/std/c/dragonfly.zig +++ b/lib/std/c/dragonfly.zig @@ -2,7 +2,7 @@ const builtin = @import("builtin"); const std = @import("../std.zig"); const assert = std.debug.assert; const maxInt = std.math.maxInt; -const iovec = std.os.iovec; +const iovec = std.posix.iovec; extern "c" threadlocal var errno: c_int; pub fn _errno() *c_int { diff --git a/lib/std/c/freebsd.zig b/lib/std/c/freebsd.zig index a89ca30968..6d0b88e3c3 100644 --- a/lib/std/c/freebsd.zig +++ b/lib/std/c/freebsd.zig @@ -2,8 +2,8 @@ const std = @import("../std.zig"); const assert = std.debug.assert; const builtin = @import("builtin"); const maxInt = std.math.maxInt; -const iovec = std.os.iovec; -const iovec_const = std.os.iovec_const; +const iovec = std.posix.iovec; +const iovec_const = std.posix.iovec_const; extern "c" fn __error() *c_int; pub const _errno = __error; diff --git a/lib/std/c/haiku.zig b/lib/std/c/haiku.zig index 12b5201acd..58bd55d17e 100644 --- a/lib/std/c/haiku.zig +++ b/lib/std/c/haiku.zig @@ -2,8 +2,8 @@ const std = @import("../std.zig"); const assert = std.debug.assert; const builtin = @import("builtin"); const maxInt = std.math.maxInt; -const iovec = std.os.iovec; -const iovec_const = std.os.iovec_const; +const iovec = std.posix.iovec; +const iovec_const = std.posix.iovec_const; extern "c" fn _errnop() *c_int; diff --git a/lib/std/c/linux.zig b/lib/std/c/linux.zig index 03c90e5760..1a3c634515 100644 --- a/lib/std/c/linux.zig +++ b/lib/std/c/linux.zig @@ -3,8 +3,8 @@ const builtin = @import("builtin"); const native_abi = builtin.abi; const native_arch = builtin.cpu.arch; const linux = std.os.linux; -const iovec = std.os.iovec; -const iovec_const = std.os.iovec_const; +const iovec = std.posix.iovec; +const iovec_const = std.posix.iovec_const; const FILE = std.c.FILE; pub const AF = linux.AF; diff --git a/lib/std/c/netbsd.zig b/lib/std/c/netbsd.zig index c06857787a..fb2aefdb44 100644 --- a/lib/std/c/netbsd.zig +++ b/lib/std/c/netbsd.zig @@ -2,8 +2,8 @@ const std = @import("../std.zig"); const assert = std.debug.assert; const builtin = @import("builtin"); const maxInt = std.math.maxInt; -const iovec = std.os.iovec; -const iovec_const = std.os.iovec_const; +const iovec = std.posix.iovec; +const iovec_const = std.posix.iovec_const; const timezone = std.c.timezone; const rusage = std.c.rusage; diff --git a/lib/std/c/openbsd.zig b/lib/std/c/openbsd.zig index 4fd450cd5c..e97798b0e7 100644 --- a/lib/std/c/openbsd.zig +++ b/lib/std/c/openbsd.zig @@ -2,8 +2,8 @@ const std = @import("../std.zig"); const assert = std.debug.assert; const maxInt = std.math.maxInt; const builtin = @import("builtin"); -const iovec = std.os.iovec; -const iovec_const = std.os.iovec_const; +const iovec = std.posix.iovec; +const iovec_const = std.posix.iovec_const; extern "c" fn __errno() *c_int; pub const _errno = __errno; diff --git a/lib/std/c/solaris.zig b/lib/std/c/solaris.zig index 838b6985cc..31900c8372 100644 --- a/lib/std/c/solaris.zig +++ b/lib/std/c/solaris.zig @@ -2,8 +2,8 @@ const std = @import("../std.zig"); const assert = std.debug.assert; const builtin = @import("builtin"); const maxInt = std.math.maxInt; -const iovec = std.os.iovec; -const iovec_const = std.os.iovec_const; +const iovec = std.posix.iovec; +const iovec_const = std.posix.iovec_const; const timezone = std.c.timezone; extern "c" fn ___errno() *c_int; diff --git a/lib/std/c/wasi.zig b/lib/std/c/wasi.zig index 95558787ae..c7533dce92 100644 --- a/lib/std/c/wasi.zig +++ b/lib/std/c/wasi.zig @@ -8,6 +8,8 @@ pub fn _errno() *c_int { return &errno; } +pub const PATH_MAX = 4096; + pub const mode_t = u32; pub const time_t = i64; diff --git a/lib/std/child_process.zig b/lib/std/child_process.zig index 85fa3d294e..c9db06d40b 100644 --- a/lib/std/child_process.zig +++ b/lib/std/child_process.zig @@ -3,30 +3,31 @@ const builtin = @import("builtin"); const unicode = std.unicode; const io = std.io; const fs = std.fs; -const os = std.os; const process = std.process; const File = std.fs.File; -const windows = os.windows; -const linux = os.linux; +const windows = std.os.windows; +const linux = std.os.linux; +const posix = std.posix; const mem = std.mem; const math = std.math; const debug = std.debug; const EnvMap = process.EnvMap; const maxInt = std.math.maxInt; const assert = std.debug.assert; +const native_os = builtin.os.tag; pub const ChildProcess = struct { - pub const Id = switch (builtin.os.tag) { + pub const Id = switch (native_os) { .windows => windows.HANDLE, .wasi => void, - else => os.pid_t, + else => posix.pid_t, }; /// Available after calling `spawn()`. This becomes `undefined` after calling `wait()`. /// On Windows this is the hProcess. /// On POSIX this is the pid. id: Id, - thread_handle: if (builtin.os.tag == .windows) windows.HANDLE else void, + thread_handle: if (native_os == .windows) windows.HANDLE else void, allocator: mem.Allocator, @@ -46,10 +47,10 @@ pub const ChildProcess = struct { stderr_behavior: StdIo, /// Set to change the user id when spawning the child process. - uid: if (builtin.os.tag == .windows or builtin.os.tag == .wasi) void else ?os.uid_t, + uid: if (native_os == .windows or native_os == .wasi) void else ?posix.uid_t, /// Set to change the group id when spawning the child process. - gid: if (builtin.os.tag == .windows or builtin.os.tag == .wasi) void else ?os.gid_t, + gid: if (native_os == .windows or native_os == .wasi) void else ?posix.gid_t, /// Set to change the current working directory when spawning the child process. cwd: ?[]const u8, @@ -58,7 +59,7 @@ pub const ChildProcess = struct { /// Once that is done, `cwd` will be deprecated in favor of this field. cwd_dir: ?fs.Dir = null, - err_pipe: ?if (builtin.os.tag == .windows) void else [2]os.fd_t, + err_pipe: ?if (native_os == .windows) void else [2]posix.fd_t, expand_arg0: Arg0Expand, @@ -87,7 +88,7 @@ pub const ChildProcess = struct { /// Returns the peak resident set size of the child process, in bytes, /// if available. pub inline fn getMaxRss(rus: ResourceUsageStatistics) ?usize { - switch (builtin.os.tag) { + switch (native_os) { .linux => { if (rus.rusage) |ru| { return @as(usize, @intCast(ru.maxrss)) * 1024; @@ -114,14 +115,14 @@ pub const ChildProcess = struct { } } - const rusage_init = switch (builtin.os.tag) { - .linux, .macos, .ios => @as(?std.os.rusage, null), + const rusage_init = switch (native_os) { + .linux, .macos, .ios => @as(?posix.rusage, null), .windows => @as(?windows.VM_COUNTERS, null), else => {}, }; }; - pub const Arg0Expand = os.Arg0Expand; + pub const Arg0Expand = posix.Arg0Expand; pub const SpawnError = error{ OutOfMemory, @@ -136,9 +137,9 @@ pub const ChildProcess = struct { /// Windows-only. `cwd` was provided, but the path did not exist when spawning the child process. CurrentWorkingDirectoryUnlinked, } || - os.ExecveError || - os.SetIdError || - os.ChangeCurDirError || + posix.ExecveError || + posix.SetIdError || + posix.ChangeCurDirError || windows.CreateProcessError || windows.GetProcessMemoryInfoError || windows.WaitForSingleObjectError; @@ -168,8 +169,8 @@ pub const ChildProcess = struct { .term = null, .env_map = null, .cwd = null, - .uid = if (builtin.os.tag == .windows or builtin.os.tag == .wasi) {} else null, - .gid = if (builtin.os.tag == .windows or builtin.os.tag == .wasi) {} else null, + .uid = if (native_os == .windows or native_os == .wasi) {} else null, + .gid = if (native_os == .windows or native_os == .wasi) {} else null, .stdin = null, .stdout = null, .stderr = null, @@ -193,7 +194,7 @@ pub const ChildProcess = struct { @compileError("the target operating system cannot spawn processes"); } - if (builtin.os.tag == .windows) { + if (native_os == .windows) { return self.spawnWindows(); } else { return self.spawnPosix(); @@ -207,7 +208,7 @@ pub const ChildProcess = struct { /// Forcibly terminates child process and then cleans up all resources. pub fn kill(self: *ChildProcess) !Term { - if (builtin.os.tag == .windows) { + if (native_os == .windows) { return self.killWindows(1); } else { return self.killPosix(); @@ -241,7 +242,7 @@ pub const ChildProcess = struct { self.cleanupStreams(); return term; } - os.kill(self.id, os.SIG.TERM) catch |err| switch (err) { + posix.kill(self.id, posix.SIG.TERM) catch |err| switch (err) { error.ProcessNotFound => return error.AlreadyTerminated, else => return err, }; @@ -251,7 +252,7 @@ pub const ChildProcess = struct { /// Blocks until child process terminates and then cleans up all resources. pub fn wait(self: *ChildProcess) !Term { - const term = if (builtin.os.tag == .windows) + const term = if (native_os == .windows) try self.waitWindows() else try self.waitPosix(); @@ -318,7 +319,7 @@ pub const ChildProcess = struct { stderr.* = fifoToOwnedArrayList(poller.fifo(.stderr)); } - pub const RunError = os.GetCwdError || os.ReadError || SpawnError || os.PollError || error{ + pub const RunError = posix.GetCwdError || posix.ReadError || SpawnError || posix.PollError || error{ StdoutStreamTooLong, StderrStreamTooLong, }; @@ -396,19 +397,19 @@ pub const ChildProcess = struct { self.resource_usage_statistics.rusage = try windows.GetProcessMemoryInfo(self.id); } - os.close(self.id); - os.close(self.thread_handle); + posix.close(self.id); + posix.close(self.thread_handle); self.cleanupStreams(); return result; } fn waitUnwrapped(self: *ChildProcess) !void { - const res: os.WaitPidResult = res: { + const res: posix.WaitPidResult = res: { if (self.request_resource_usage_statistics) { - switch (builtin.os.tag) { + switch (native_os) { .linux, .macos, .ios => { - var ru: std.os.rusage = undefined; - const res = os.wait4(self.id, 0, &ru); + var ru: posix.rusage = undefined; + const res = posix.wait4(self.id, 0, &ru); self.resource_usage_statistics.rusage = ru; break :res res; }, @@ -416,7 +417,7 @@ pub const ChildProcess = struct { } } - break :res os.waitpid(self.id, 0); + break :res posix.waitpid(self.id, 0); }; const status = res.status; self.cleanupStreams(); @@ -446,20 +447,20 @@ pub const ChildProcess = struct { if (self.err_pipe) |err_pipe| { defer destroyPipe(err_pipe); - if (builtin.os.tag == .linux) { - var fd = [1]std.os.pollfd{std.os.pollfd{ + if (native_os == .linux) { + var fd = [1]posix.pollfd{posix.pollfd{ .fd = err_pipe[0], - .events = std.os.POLL.IN, + .events = posix.POLL.IN, .revents = undefined, }}; // Check if the eventfd buffer stores a non-zero value by polling // it, that's the error code returned by the child process. - _ = std.os.poll(&fd, 0) catch unreachable; + _ = posix.poll(&fd, 0) catch unreachable; // According to eventfd(2) the descriptor is readable if the counter // has a value greater than 0 - if ((fd[0].revents & std.os.POLL.IN) != 0) { + if ((fd[0].revents & posix.POLL.IN) != 0) { const err_int = try readIntFd(err_pipe[0]); return @as(SpawnError, @errorCast(@errorFromInt(err_int))); } @@ -483,36 +484,36 @@ pub const ChildProcess = struct { } fn statusToTerm(status: u32) Term { - return if (os.W.IFEXITED(status)) - Term{ .Exited = os.W.EXITSTATUS(status) } - else if (os.W.IFSIGNALED(status)) - Term{ .Signal = os.W.TERMSIG(status) } - else if (os.W.IFSTOPPED(status)) - Term{ .Stopped = os.W.STOPSIG(status) } + return if (posix.W.IFEXITED(status)) + Term{ .Exited = posix.W.EXITSTATUS(status) } + else if (posix.W.IFSIGNALED(status)) + Term{ .Signal = posix.W.TERMSIG(status) } + else if (posix.W.IFSTOPPED(status)) + Term{ .Stopped = posix.W.STOPSIG(status) } else Term{ .Unknown = status }; } fn spawnPosix(self: *ChildProcess) SpawnError!void { - const pipe_flags: os.O = .{}; - const stdin_pipe = if (self.stdin_behavior == StdIo.Pipe) try os.pipe2(pipe_flags) else undefined; + const pipe_flags: posix.O = .{}; + const stdin_pipe = if (self.stdin_behavior == StdIo.Pipe) try posix.pipe2(pipe_flags) else undefined; errdefer if (self.stdin_behavior == StdIo.Pipe) { destroyPipe(stdin_pipe); }; - const stdout_pipe = if (self.stdout_behavior == StdIo.Pipe) try os.pipe2(pipe_flags) else undefined; + const stdout_pipe = if (self.stdout_behavior == StdIo.Pipe) try posix.pipe2(pipe_flags) else undefined; errdefer if (self.stdout_behavior == StdIo.Pipe) { destroyPipe(stdout_pipe); }; - const stderr_pipe = if (self.stderr_behavior == StdIo.Pipe) try os.pipe2(pipe_flags) else undefined; + const stderr_pipe = if (self.stderr_behavior == StdIo.Pipe) try posix.pipe2(pipe_flags) else undefined; errdefer if (self.stderr_behavior == StdIo.Pipe) { destroyPipe(stderr_pipe); }; const any_ignore = (self.stdin_behavior == StdIo.Ignore or self.stdout_behavior == StdIo.Ignore or self.stderr_behavior == StdIo.Ignore); const dev_null_fd = if (any_ignore) - os.openZ("/dev/null", .{ .ACCMODE = .RDWR }, 0) catch |err| switch (err) { + posix.openZ("/dev/null", .{ .ACCMODE = .RDWR }, 0) catch |err| switch (err) { error.PathAlreadyExists => unreachable, error.NoSpaceLeft => unreachable, error.FileTooBig => unreachable, @@ -526,7 +527,7 @@ pub const ChildProcess = struct { else undefined; defer { - if (any_ignore) os.close(dev_null_fd); + if (any_ignore) posix.close(dev_null_fd); } var arena_allocator = std.heap.ArenaAllocator.init(self.allocator); @@ -554,7 +555,7 @@ pub const ChildProcess = struct { } else if (builtin.output_mode == .Exe) { // Then we have Zig start code and this works. // TODO type-safety for null-termination of `os.environ`. - break :m @as([*:null]const ?[*:0]const u8, @ptrCast(os.environ.ptr)); + break :m @as([*:null]const ?[*:0]const u8, @ptrCast(std.os.environ.ptr)); } else { // TODO come up with a solution for this. @compileError("missing std lib enhancement: ChildProcess implementation has no way to collect the environment variables to forward to the child process"); @@ -564,60 +565,60 @@ pub const ChildProcess = struct { // This pipe is used to communicate errors between the time of fork // and execve from the child process to the parent process. const err_pipe = blk: { - if (builtin.os.tag == .linux) { - const fd = try os.eventfd(0, linux.EFD.CLOEXEC); + if (native_os == .linux) { + const fd = try posix.eventfd(0, linux.EFD.CLOEXEC); // There's no distinction between the readable and the writeable // end with eventfd - break :blk [2]os.fd_t{ fd, fd }; + break :blk [2]posix.fd_t{ fd, fd }; } else { - break :blk try os.pipe2(.{ .CLOEXEC = true }); + break :blk try posix.pipe2(.{ .CLOEXEC = true }); } }; errdefer destroyPipe(err_pipe); - const pid_result = try os.fork(); + const pid_result = try posix.fork(); if (pid_result == 0) { // we are the child - setUpChildIo(self.stdin_behavior, stdin_pipe[0], os.STDIN_FILENO, dev_null_fd) catch |err| forkChildErrReport(err_pipe[1], err); - setUpChildIo(self.stdout_behavior, stdout_pipe[1], os.STDOUT_FILENO, dev_null_fd) catch |err| forkChildErrReport(err_pipe[1], err); - setUpChildIo(self.stderr_behavior, stderr_pipe[1], os.STDERR_FILENO, dev_null_fd) catch |err| forkChildErrReport(err_pipe[1], err); + setUpChildIo(self.stdin_behavior, stdin_pipe[0], posix.STDIN_FILENO, dev_null_fd) catch |err| forkChildErrReport(err_pipe[1], err); + setUpChildIo(self.stdout_behavior, stdout_pipe[1], posix.STDOUT_FILENO, dev_null_fd) catch |err| forkChildErrReport(err_pipe[1], err); + setUpChildIo(self.stderr_behavior, stderr_pipe[1], posix.STDERR_FILENO, dev_null_fd) catch |err| forkChildErrReport(err_pipe[1], err); if (self.stdin_behavior == .Pipe) { - os.close(stdin_pipe[0]); - os.close(stdin_pipe[1]); + posix.close(stdin_pipe[0]); + posix.close(stdin_pipe[1]); } if (self.stdout_behavior == .Pipe) { - os.close(stdout_pipe[0]); - os.close(stdout_pipe[1]); + posix.close(stdout_pipe[0]); + posix.close(stdout_pipe[1]); } if (self.stderr_behavior == .Pipe) { - os.close(stderr_pipe[0]); - os.close(stderr_pipe[1]); + posix.close(stderr_pipe[0]); + posix.close(stderr_pipe[1]); } if (self.cwd_dir) |cwd| { - os.fchdir(cwd.fd) catch |err| forkChildErrReport(err_pipe[1], err); + posix.fchdir(cwd.fd) catch |err| forkChildErrReport(err_pipe[1], err); } else if (self.cwd) |cwd| { - os.chdir(cwd) catch |err| forkChildErrReport(err_pipe[1], err); + posix.chdir(cwd) catch |err| forkChildErrReport(err_pipe[1], err); } if (self.gid) |gid| { - os.setregid(gid, gid) catch |err| forkChildErrReport(err_pipe[1], err); + posix.setregid(gid, gid) catch |err| forkChildErrReport(err_pipe[1], err); } if (self.uid) |uid| { - os.setreuid(uid, uid) catch |err| forkChildErrReport(err_pipe[1], err); + posix.setreuid(uid, uid) catch |err| forkChildErrReport(err_pipe[1], err); } const err = switch (self.expand_arg0) { - .expand => os.execvpeZ_expandArg0(.expand, argv_buf.ptr[0].?, argv_buf.ptr, envp), - .no_expand => os.execvpeZ_expandArg0(.no_expand, argv_buf.ptr[0].?, argv_buf.ptr, envp), + .expand => posix.execvpeZ_expandArg0(.expand, argv_buf.ptr[0].?, argv_buf.ptr, envp), + .no_expand => posix.execvpeZ_expandArg0(.no_expand, argv_buf.ptr[0].?, argv_buf.ptr, envp), }; forkChildErrReport(err_pipe[1], err); } // we are the parent - const pid = @as(i32, @intCast(pid_result)); + const pid: i32 = @intCast(pid_result); if (self.stdin_behavior == StdIo.Pipe) { self.stdin = File{ .handle = stdin_pipe[1] }; } else { @@ -639,13 +640,13 @@ pub const ChildProcess = struct { self.term = null; if (self.stdin_behavior == StdIo.Pipe) { - os.close(stdin_pipe[0]); + posix.close(stdin_pipe[0]); } if (self.stdout_behavior == StdIo.Pipe) { - os.close(stdout_pipe[1]); + posix.close(stdout_pipe[1]); } if (self.stderr_behavior == StdIo.Pipe) { - os.close(stderr_pipe[1]); + posix.close(stderr_pipe[1]); } } @@ -679,7 +680,7 @@ pub const ChildProcess = struct { else undefined; defer { - if (any_ignore) os.close(nul_handle); + if (any_ignore) posix.close(nul_handle); } var g_hChildStd_IN_Rd: ?windows.HANDLE = null; @@ -821,8 +822,8 @@ pub const ChildProcess = struct { defer self.allocator.free(cmd_line_w); run: { - const PATH: [:0]const u16 = std.os.getenvW(unicode.utf8ToUtf16LeStringLiteral("PATH")) orelse &[_:0]u16{}; - const PATHEXT: [:0]const u16 = std.os.getenvW(unicode.utf8ToUtf16LeStringLiteral("PATHEXT")) orelse &[_:0]u16{}; + const PATH: [:0]const u16 = std.process.getenvW(unicode.utf8ToUtf16LeStringLiteral("PATH")) orelse &[_:0]u16{}; + const PATHEXT: [:0]const u16 = std.process.getenvW(unicode.utf8ToUtf16LeStringLiteral("PATHEXT")) orelse &[_:0]u16{}; var app_buf = std.ArrayListUnmanaged(u16){}; defer app_buf.deinit(self.allocator); @@ -905,22 +906,22 @@ pub const ChildProcess = struct { self.term = null; if (self.stdin_behavior == StdIo.Pipe) { - os.close(g_hChildStd_IN_Rd.?); + posix.close(g_hChildStd_IN_Rd.?); } if (self.stderr_behavior == StdIo.Pipe) { - os.close(g_hChildStd_ERR_Wr.?); + posix.close(g_hChildStd_ERR_Wr.?); } if (self.stdout_behavior == StdIo.Pipe) { - os.close(g_hChildStd_OUT_Wr.?); + posix.close(g_hChildStd_OUT_Wr.?); } } fn setUpChildIo(stdio: StdIo, pipe_fd: i32, std_fileno: i32, dev_null_fd: i32) !void { switch (stdio) { - .Pipe => try os.dup2(pipe_fd, std_fileno), - .Close => os.close(std_fileno), + .Pipe => try posix.dup2(pipe_fd, std_fileno), + .Close => posix.close(std_fileno), .Inherit => {}, - .Ignore => try os.dup2(dev_null_fd, std_fileno), + .Ignore => try posix.dup2(dev_null_fd, std_fileno), } } }; @@ -987,7 +988,7 @@ fn windowsCreateProcessPathExt( // This 2048 is arbitrary, we just want it to be large enough to get multiple FILE_DIRECTORY_INFORMATION entries // returned per NtQueryDirectoryFile call. - var file_information_buf: [2048]u8 align(@alignOf(os.windows.FILE_DIRECTORY_INFORMATION)) = undefined; + var file_information_buf: [2048]u8 align(@alignOf(windows.FILE_DIRECTORY_INFORMATION)) = undefined; const file_info_maximum_single_entry_size = @sizeOf(windows.FILE_DIRECTORY_INFORMATION) + (windows.NAME_MAX * 2); if (file_information_buf.len < file_info_maximum_single_entry_size) { @compileError("file_information_buf must be large enough to contain at least one maximum size FILE_DIRECTORY_INFORMATION entry"); @@ -1391,8 +1392,8 @@ fn testArgvToCommandLineWindows(argv: []const []const u8, expected_cmd_line: []c } fn windowsDestroyPipe(rd: ?windows.HANDLE, wr: ?windows.HANDLE) void { - if (rd) |h| os.close(h); - if (wr) |h| os.close(h); + if (rd) |h| posix.close(h); + if (wr) |h| posix.close(h); } fn windowsMakePipeIn(rd: *?windows.HANDLE, wr: *?windows.HANDLE, sattr: *const windows.SECURITY_ATTRIBUTES) !void { @@ -1443,7 +1444,7 @@ fn windowsMakeAsyncPipe(rd: *?windows.HANDLE, wr: *?windows.HANDLE, sattr: *cons else => |err| return windows.unexpectedError(err), } } - errdefer os.close(read_handle); + errdefer posix.close(read_handle); var sattr_copy = sattr.*; const write_handle = windows.kernel32.CreateFileW( @@ -1460,7 +1461,7 @@ fn windowsMakeAsyncPipe(rd: *?windows.HANDLE, wr: *?windows.HANDLE, sattr: *cons else => |err| return windows.unexpectedError(err), } } - errdefer os.close(write_handle); + errdefer posix.close(write_handle); try windows.SetHandleInformation(read_handle, windows.HANDLE_FLAG_INHERIT, 0); @@ -1468,9 +1469,9 @@ fn windowsMakeAsyncPipe(rd: *?windows.HANDLE, wr: *?windows.HANDLE, sattr: *cons wr.* = write_handle; } -fn destroyPipe(pipe: [2]os.fd_t) void { - os.close(pipe[0]); - if (pipe[0] != pipe[1]) os.close(pipe[1]); +fn destroyPipe(pipe: [2]posix.fd_t) void { + posix.close(pipe[0]); + if (pipe[0] != pipe[1]) posix.close(pipe[1]); } // Child of fork calls this to report an error to the fork parent. @@ -1485,7 +1486,7 @@ fn forkChildErrReport(fd: i32, err: ChildProcess.SpawnError) noreturn { // The _exit(2) function does nothing but make the exit syscall, unlike exit(3) std.c._exit(1); } - os.exit(1); + posix.exit(1); } const ErrInt = std.meta.Int(.unsigned, @sizeOf(anyerror) * 8); diff --git a/lib/std/crypto/Certificate/Bundle.zig b/lib/std/crypto/Certificate/Bundle.zig index b1c3cfee2f..d1c0a9682c 100644 --- a/lib/std/crypto/Certificate/Bundle.zig +++ b/lib/std/crypto/Certificate/Bundle.zig @@ -125,7 +125,7 @@ fn rescanBSD(cb: *Bundle, gpa: Allocator, cert_file_path: []const u8) RescanBSDE cb.bytes.shrinkAndFree(gpa, cb.bytes.items.len); } -const RescanWindowsError = Allocator.Error || ParseCertError || std.os.UnexpectedError || error{FileNotFound}; +const RescanWindowsError = Allocator.Error || ParseCertError || std.posix.UnexpectedError || error{FileNotFound}; fn rescanWindows(cb: *Bundle, gpa: Allocator) RescanWindowsError!void { cb.bytes.clearRetainingCapacity(); diff --git a/lib/std/crypto/Certificate/Bundle/macos.zig b/lib/std/crypto/Certificate/Bundle/macos.zig index e4bbfecb7e..61e3339b33 100644 --- a/lib/std/crypto/Certificate/Bundle/macos.zig +++ b/lib/std/crypto/Certificate/Bundle/macos.zig @@ -42,7 +42,7 @@ pub fn rescanMac(cb: *Bundle, gpa: Allocator) RescanMacError!void { const table_header = try reader.readStructEndian(TableHeader, .big); - if (@as(std.os.darwin.cssm.DB_RECORDTYPE, @enumFromInt(table_header.table_id)) != .X509_CERTIFICATE) { + if (@as(std.c.cssm.DB_RECORDTYPE, @enumFromInt(table_header.table_id)) != .X509_CERTIFICATE) { continue; } diff --git a/lib/std/crypto/tlcsprng.zig b/lib/std/crypto/tlcsprng.zig index 973a0f8bb4..9293887a59 100644 --- a/lib/std/crypto/tlcsprng.zig +++ b/lib/std/crypto/tlcsprng.zig @@ -6,7 +6,8 @@ const std = @import("std"); const builtin = @import("builtin"); const mem = std.mem; -const os = std.os; +const native_os = builtin.os.tag; +const posix = std.posix; /// We use this as a layer of indirection because global const pointers cannot /// point to thread-local variables. @@ -15,7 +16,7 @@ pub const interface = std.Random{ .fillFn = tlsCsprngFill, }; -const os_has_fork = switch (builtin.os.tag) { +const os_has_fork = switch (native_os) { .dragonfly, .freebsd, .ios, @@ -41,7 +42,7 @@ const maybe_have_wipe_on_fork = builtin.os.isAtLeast(.linux, .{ .minor = 14, .patch = 0, }) orelse true; -const is_haiku = builtin.os.tag == .haiku; +const is_haiku = native_os == .haiku; const Rng = std.Random.DefaultCsprng; @@ -79,10 +80,10 @@ fn tlsCsprngFill(_: *anyopaque, buffer: []u8) void { if (want_fork_safety and maybe_have_wipe_on_fork or is_haiku) { // Allocate a per-process page, madvise operates with page // granularity. - wipe_mem = os.mmap( + wipe_mem = posix.mmap( null, @sizeOf(Context), - os.PROT.READ | os.PROT.WRITE, + posix.PROT.READ | posix.PROT.WRITE, .{ .TYPE = .PRIVATE, .ANONYMOUS = true }, -1, 0, @@ -115,11 +116,11 @@ fn tlsCsprngFill(_: *anyopaque, buffer: []u8) void { // Qemu user-mode emulation ignores any valid/invalid madvise // hint and returns success. Check if this is the case by // passing bogus parameters, we expect EINVAL as result. - if (os.madvise(wipe_mem.ptr, 0, 0xffffffff)) |_| { + if (posix.madvise(wipe_mem.ptr, 0, 0xffffffff)) |_| { break :wof; } else |_| {} - if (os.madvise(wipe_mem.ptr, wipe_mem.len, os.MADV.WIPEONFORK)) |_| { + if (posix.madvise(wipe_mem.ptr, wipe_mem.len, posix.MADV.WIPEONFORK)) |_| { return initAndFill(buffer); } else |_| {} } @@ -164,7 +165,7 @@ fn fillWithCsprng(buffer: []u8) void { } pub fn defaultRandomSeed(buffer: []u8) void { - os.getrandom(buffer) catch @panic("getrandom() failed to provide entropy"); + posix.getrandom(buffer) catch @panic("getrandom() failed to provide entropy"); } fn initAndFill(buffer: []u8) void { diff --git a/lib/std/crypto/tls/Client.zig b/lib/std/crypto/tls/Client.zig index f07cfe7810..682c1ffe0e 100644 --- a/lib/std/crypto/tls/Client.zig +++ b/lib/std/crypto/tls/Client.zig @@ -62,7 +62,7 @@ pub const StreamInterface = struct { /// The `iovecs` parameter is mutable because so that function may to /// mutate the fields in order to handle partial reads from the underlying /// stream layer. - pub fn readv(this: @This(), iovecs: []std.os.iovec) ReadError!usize { + pub fn readv(this: @This(), iovecs: []std.posix.iovec) ReadError!usize { _ = .{ this, iovecs }; @panic("unimplemented"); } @@ -72,7 +72,7 @@ pub const StreamInterface = struct { /// Returns the number of bytes read, which may be less than the buffer /// space provided. A short read does not indicate end-of-stream. - pub fn writev(this: @This(), iovecs: []const std.os.iovec_const) WriteError!usize { + pub fn writev(this: @This(), iovecs: []const std.posix.iovec_const) WriteError!usize { _ = .{ this, iovecs }; @panic("unimplemented"); } @@ -81,7 +81,7 @@ pub const StreamInterface = struct { /// space provided, indicating end-of-stream. /// The `iovecs` parameter is mutable in case this function needs to mutate /// the fields in order to handle partial writes from the underlying layer. - pub fn writevAll(this: @This(), iovecs: []std.os.iovec_const) WriteError!usize { + pub fn writevAll(this: @This(), iovecs: []std.posix.iovec_const) WriteError!usize { // This can be implemented in terms of writev, or specialized if desired. _ = .{ this, iovecs }; @panic("unimplemented"); @@ -215,7 +215,7 @@ pub fn init(stream: anytype, ca_bundle: Certificate.Bundle, host: []const u8) In } ++ int2(@intCast(out_handshake.len + host_len)) ++ out_handshake; { - var iovecs = [_]std.os.iovec_const{ + var iovecs = [_]std.posix.iovec_const{ .{ .iov_base = &plaintext_header, .iov_len = plaintext_header.len, @@ -677,7 +677,7 @@ pub fn init(stream: anytype, ca_bundle: Certificate.Bundle, host: []const u8) In P.AEAD.encrypt(ciphertext, auth_tag, &out_cleartext, ad, nonce, p.client_handshake_key); const both_msgs = client_change_cipher_spec_msg ++ finished_msg; - var both_msgs_vec = [_]std.os.iovec_const{.{ + var both_msgs_vec = [_]std.posix.iovec_const{.{ .iov_base = &both_msgs, .iov_len = both_msgs.len, }}; @@ -755,7 +755,7 @@ pub fn writeAllEnd(c: *Client, stream: anytype, bytes: []const u8, end: bool) !v /// TLS session, or a truncation attack. pub fn writeEnd(c: *Client, stream: anytype, bytes: []const u8, end: bool) !usize { var ciphertext_buf: [tls.max_ciphertext_record_len * 4]u8 = undefined; - var iovecs_buf: [6]std.os.iovec_const = undefined; + var iovecs_buf: [6]std.posix.iovec_const = undefined; var prepared = prepareCiphertextRecord(c, &iovecs_buf, &ciphertext_buf, bytes, .application_data); if (end) { prepared.iovec_end += prepareCiphertextRecord( @@ -796,7 +796,7 @@ pub fn writeEnd(c: *Client, stream: anytype, bytes: []const u8, end: bool) !usiz fn prepareCiphertextRecord( c: *Client, - iovecs: []std.os.iovec_const, + iovecs: []std.posix.iovec_const, ciphertext_buf: []u8, bytes: []const u8, inner_content_type: tls.ContentType, @@ -885,7 +885,7 @@ pub fn eof(c: Client) bool { /// If the number read is less than `len` it means the stream reached the end. /// Reaching the end of the stream is not an error condition. pub fn readAtLeast(c: *Client, stream: anytype, buffer: []u8, len: usize) !usize { - var iovecs = [1]std.os.iovec{.{ .iov_base = buffer.ptr, .iov_len = buffer.len }}; + var iovecs = [1]std.posix.iovec{.{ .iov_base = buffer.ptr, .iov_len = buffer.len }}; return readvAtLeast(c, stream, &iovecs, len); } @@ -908,7 +908,7 @@ pub fn readAll(c: *Client, stream: anytype, buffer: []u8) !usize { /// stream is not an error condition. /// The `iovecs` parameter is mutable because this function needs to mutate the fields in /// order to handle partial reads from the underlying stream layer. -pub fn readv(c: *Client, stream: anytype, iovecs: []std.os.iovec) !usize { +pub fn readv(c: *Client, stream: anytype, iovecs: []std.posix.iovec) !usize { return readvAtLeast(c, stream, iovecs, 1); } @@ -919,7 +919,7 @@ pub fn readv(c: *Client, stream: anytype, iovecs: []std.os.iovec) !usize { /// Reaching the end of the stream is not an error condition. /// The `iovecs` parameter is mutable because this function needs to mutate the fields in /// order to handle partial reads from the underlying stream layer. -pub fn readvAtLeast(c: *Client, stream: anytype, iovecs: []std.os.iovec, len: usize) !usize { +pub fn readvAtLeast(c: *Client, stream: anytype, iovecs: []std.posix.iovec, len: usize) !usize { if (c.eof()) return 0; var off_i: usize = 0; @@ -945,7 +945,7 @@ pub fn readvAtLeast(c: *Client, stream: anytype, iovecs: []std.os.iovec, len: us /// function asserts that `eof()` is `false`. /// See `readv` for a higher level function that has the same, familiar API as /// other read functions, such as `std.fs.File.read`. -pub fn readvAdvanced(c: *Client, stream: anytype, iovecs: []const std.os.iovec) !usize { +pub fn readvAdvanced(c: *Client, stream: anytype, iovecs: []const std.posix.iovec) !usize { var vp: VecPut = .{ .iovecs = iovecs }; // Give away the buffered cleartext we have, if any. @@ -998,7 +998,7 @@ pub fn readvAdvanced(c: *Client, stream: anytype, iovecs: []const std.os.iovec) c.partial_cleartext_idx = 0; const first_iov = c.partially_read_buffer[c.partial_ciphertext_end..]; - var ask_iovecs_buf: [2]std.os.iovec = .{ + var ask_iovecs_buf: [2]std.posix.iovec = .{ .{ .iov_base = first_iov.ptr, .iov_len = first_iov.len, @@ -1352,7 +1352,7 @@ fn SchemeEddsa(comptime scheme: tls.SignatureScheme) type { /// Abstraction for sending multiple byte buffers to a slice of iovecs. const VecPut = struct { - iovecs: []const std.os.iovec, + iovecs: []const std.posix.iovec, idx: usize = 0, off: usize = 0, total: usize = 0, @@ -1413,7 +1413,7 @@ const VecPut = struct { }; /// Limit iovecs to a specific byte size. -fn limitVecs(iovecs: []std.os.iovec, len: usize) []std.os.iovec { +fn limitVecs(iovecs: []std.posix.iovec, len: usize) []std.posix.iovec { var bytes_left: usize = len; for (iovecs, 0..) |*iovec, vec_i| { if (bytes_left <= iovec.iov_len) { diff --git a/lib/std/debug.zig b/lib/std/debug.zig index f190e7fee2..7baa02fe74 100644 --- a/lib/std/debug.zig +++ b/lib/std/debug.zig @@ -3,7 +3,7 @@ const builtin = @import("builtin"); const math = std.math; const mem = std.mem; const io = std.io; -const os = std.os; +const posix = std.posix; const fs = std.fs; const testing = std.testing; const elf = std.elf; @@ -34,7 +34,7 @@ pub const sys_can_stack_trace = switch (builtin.cpu.arch) { // "Non-Emscripten WebAssembly hasn't implemented __builtin_return_address". .wasm32, .wasm64, - => builtin.os.tag == .emscripten, + => native_os == .emscripten, // `@returnAddress()` is unsupported in LLVM 13. .bpfel, @@ -192,8 +192,8 @@ pub fn dumpCurrentStackTrace(start_addr: ?usize) void { } } -pub const have_ucontext = @hasDecl(os.system, "ucontext_t") and - (builtin.os.tag != .linux or switch (builtin.cpu.arch) { +pub const have_ucontext = @hasDecl(posix.system, "ucontext_t") and + (native_os != .linux or switch (builtin.cpu.arch) { .mips, .mipsel, .mips64, .mips64el, .riscv64 => false, else => true, }); @@ -203,9 +203,9 @@ pub const have_ucontext = @hasDecl(os.system, "ucontext_t") and /// use internal pointers within this structure. To make a copy, use `copyContext`. pub const ThreadContext = blk: { if (native_os == .windows) { - break :blk std.os.windows.CONTEXT; + break :blk windows.CONTEXT; } else if (have_ucontext) { - break :blk os.ucontext_t; + break :blk posix.ucontext_t; } else { break :blk void; } @@ -228,9 +228,9 @@ pub fn relocateContext(context: *ThreadContext) void { }; } -pub const have_getcontext = @hasDecl(os.system, "getcontext") and - builtin.os.tag != .openbsd and - (builtin.os.tag != .linux or switch (builtin.cpu.arch) { +pub const have_getcontext = @hasDecl(posix.system, "getcontext") and + native_os != .openbsd and + (native_os != .linux or switch (builtin.cpu.arch) { .x86, .x86_64, => true, @@ -249,7 +249,7 @@ pub inline fn getContext(context: *ThreadContext) bool { return true; } - const result = have_getcontext and os.system.getcontext(context) == 0; + const result = have_getcontext and posix.system.getcontext(context) == 0; if (native_os == .macos) { assert(context.mcsize == @sizeOf(std.c.mcontext_t)); @@ -470,12 +470,12 @@ pub fn panicImpl(trace: ?*const std.builtin.StackTrace, first_trace_addr: ?usize const stderr = io.getStdErr().writer(); if (builtin.single_threaded) { - stderr.print("panic: ", .{}) catch os.abort(); + stderr.print("panic: ", .{}) catch posix.abort(); } else { const current_thread_id = std.Thread.getCurrentId(); - stderr.print("thread {} panic: ", .{current_thread_id}) catch os.abort(); + stderr.print("thread {} panic: ", .{current_thread_id}) catch posix.abort(); } - stderr.print("{s}\n", .{msg}) catch os.abort(); + stderr.print("{s}\n", .{msg}) catch posix.abort(); if (trace) |t| { dumpStackTrace(t.*); } @@ -491,14 +491,14 @@ pub fn panicImpl(trace: ?*const std.builtin.StackTrace, first_trace_addr: ?usize // we're still holding the mutex but that's fine as we're going to // call abort() const stderr = io.getStdErr().writer(); - stderr.print("Panicked during a panic. Aborting.\n", .{}) catch os.abort(); + stderr.print("Panicked during a panic. Aborting.\n", .{}) catch posix.abort(); }, else => { // Panicked while printing "Panicked during a panic." }, }; - os.abort(); + posix.abort(); } /// Must be called only after adding 1 to `panicking`. There are three callsites. @@ -584,7 +584,7 @@ pub const StackIterator = struct { }; } - pub fn initWithContext(first_address: ?usize, debug_info: *DebugInfo, context: *const os.ucontext_t) !StackIterator { + pub fn initWithContext(first_address: ?usize, debug_info: *DebugInfo, context: *const posix.ucontext_t) !StackIterator { // The implementation of DWARF unwinding on aarch64-macos is not complete. However, Apple mandates that // the frame pointer register is always used, so on this platform we can safely use the FP-based unwinder. if (comptime builtin.target.isDarwin() and native_arch == .aarch64) { @@ -668,12 +668,11 @@ pub const StackIterator = struct { const aligned_memory = @as([*]align(mem.page_size) u8, @ptrFromInt(aligned_address))[0..mem.page_size]; if (native_os == .windows) { - const w = os.windows; - var memory_info: w.MEMORY_BASIC_INFORMATION = undefined; + var memory_info: windows.MEMORY_BASIC_INFORMATION = undefined; // The only error this function can throw is ERROR_INVALID_PARAMETER. // supply an address that invalid i'll be thrown. - const rc = w.VirtualQuery(aligned_memory, &memory_info, aligned_memory.len) catch { + const rc = windows.VirtualQuery(aligned_memory, &memory_info, aligned_memory.len) catch { return false; }; @@ -683,17 +682,15 @@ pub const StackIterator = struct { } // Free pages cannot be read, they are unmapped - if (memory_info.State == w.MEM_FREE) { + if (memory_info.State == windows.MEM_FREE) { return false; } return true; - } else if (@hasDecl(os.system, "msync") and native_os != .wasi and native_os != .emscripten) { - os.msync(aligned_memory, os.MSF.ASYNC) catch |err| { + } else if (@hasDecl(posix.system, "msync") and native_os != .wasi and native_os != .emscripten) { + posix.msync(aligned_memory, posix.MSF.ASYNC) catch |err| { switch (err) { - os.MSyncError.UnmappedMemory => { - return false; - }, + error.UnmappedMemory => return false, else => unreachable, } }; @@ -1296,7 +1293,7 @@ pub fn readElfDebugInfo( } var cwd_buf: [fs.MAX_PATH_BYTES]u8 = undefined; - const cwd_path = os.realpath(".", &cwd_buf) catch break :blk; + const cwd_path = posix.realpath(".", &cwd_buf) catch break :blk; // <global debug directory>/<absolute folder of current binary>/<gnu_debuglink> for (global_debug_directories) |global_directory| { @@ -1651,15 +1648,15 @@ fn mapWholeFile(file: File) ![]align(mem.page_size) const u8 { defer file.close(); const file_len = math.cast(usize, try file.getEndPos()) orelse math.maxInt(usize); - const mapped_mem = try os.mmap( + const mapped_mem = try posix.mmap( null, file_len, - os.PROT.READ, + posix.PROT.READ, .{ .TYPE = .SHARED }, file.handle, 0, ); - errdefer os.munmap(mapped_mem); + errdefer posix.munmap(mapped_mem); return mapped_mem; } @@ -1997,8 +1994,8 @@ pub const DebugInfo = struct { } = .{ .address = address }; const CtxTy = @TypeOf(ctx); - if (os.dl_iterate_phdr(&ctx, error{Found}, struct { - fn callback(info: *os.dl_phdr_info, size: usize, context: *CtxTy) !void { + if (posix.dl_iterate_phdr(&ctx, error{Found}, struct { + fn callback(info: *posix.dl_phdr_info, size: usize, context: *CtxTy) !void { _ = size; if (context.address < info.dlpi_addr) return; const phdrs = info.dlpi_phdr[0..info.dlpi_phnum]; @@ -2036,8 +2033,8 @@ pub const DebugInfo = struct { } = .{ .address = address }; const CtxTy = @TypeOf(ctx); - if (os.dl_iterate_phdr(&ctx, error{Found}, struct { - fn callback(info: *os.dl_phdr_info, size: usize, context: *CtxTy) !void { + if (posix.dl_iterate_phdr(&ctx, error{Found}, struct { + fn callback(info: *posix.dl_phdr_info, size: usize, context: *CtxTy) !void { _ = size; // The base address is too high if (context.address < info.dlpi_addr) @@ -2159,7 +2156,7 @@ pub const ModuleDebugInfo = switch (native_os) { } self.ofiles.deinit(); allocator.free(self.symbols); - os.munmap(self.mapped_memory); + posix.munmap(self.mapped_memory); } fn loadOFile(self: *@This(), allocator: mem.Allocator, o_file_path: []const u8) !*OFileInfo { @@ -2433,8 +2430,8 @@ pub const ModuleDebugInfo = switch (native_os) { pub fn deinit(self: *@This(), allocator: mem.Allocator) void { self.dwarf.deinit(allocator); - os.munmap(self.mapped_memory); - if (self.external_mapped_memory) |m| os.munmap(m); + posix.munmap(self.mapped_memory); + if (self.external_mapped_memory) |m| posix.munmap(m); } pub fn getSymbolAtAddress(self: *@This(), allocator: mem.Allocator, address: usize) !SymbolInfo { @@ -2514,7 +2511,7 @@ pub const have_segfault_handling_support = switch (native_os) { .windows, => true, - .freebsd, .openbsd => @hasDecl(os.system, "ucontext_t"), + .freebsd, .openbsd => @hasDecl(std.c, "ucontext_t"), else => false, }; @@ -2529,11 +2526,11 @@ pub fn maybeEnableSegfaultHandler() void { var windows_segfault_handle: ?windows.HANDLE = null; -pub fn updateSegfaultHandler(act: ?*const os.Sigaction) error{OperationNotSupported}!void { - try os.sigaction(os.SIG.SEGV, act, null); - try os.sigaction(os.SIG.ILL, act, null); - try os.sigaction(os.SIG.BUS, act, null); - try os.sigaction(os.SIG.FPE, act, null); +pub fn updateSegfaultHandler(act: ?*const posix.Sigaction) error{OperationNotSupported}!void { + try posix.sigaction(posix.SIG.SEGV, act, null); + try posix.sigaction(posix.SIG.ILL, act, null); + try posix.sigaction(posix.SIG.BUS, act, null); + try posix.sigaction(posix.SIG.FPE, act, null); } /// Attaches a global SIGSEGV handler which calls `@panic("segmentation fault");` @@ -2545,10 +2542,10 @@ pub fn attachSegfaultHandler() void { windows_segfault_handle = windows.kernel32.AddVectoredExceptionHandler(0, handleSegfaultWindows); return; } - var act = os.Sigaction{ + var act = posix.Sigaction{ .handler = .{ .sigaction = handleSegfaultPosix }, - .mask = os.empty_sigset, - .flags = (os.SA.SIGINFO | os.SA.RESTART | os.SA.RESETHAND), + .mask = posix.empty_sigset, + .flags = (posix.SA.SIGINFO | posix.SA.RESTART | posix.SA.RESETHAND), }; updateSegfaultHandler(&act) catch { @@ -2564,16 +2561,16 @@ fn resetSegfaultHandler() void { } return; } - var act = os.Sigaction{ - .handler = .{ .handler = os.SIG.DFL }, - .mask = os.empty_sigset, + var act = posix.Sigaction{ + .handler = .{ .handler = posix.SIG.DFL }, + .mask = posix.empty_sigset, .flags = 0, }; // To avoid a double-panic, do nothing if an error happens here. updateSegfaultHandler(&act) catch {}; } -fn handleSegfaultPosix(sig: i32, info: *const os.siginfo_t, ctx_ptr: ?*const anyopaque) callconv(.C) noreturn { +fn handleSegfaultPosix(sig: i32, info: *const posix.siginfo_t, ctx_ptr: ?*const anyopaque) callconv(.C) noreturn { // Reset to the default handler so that if a segfault happens in this handler it will crash // the process. Also when this handler returns, the original instruction will be repeated // and the resulting segfault will crash the process rather than continually dump stack traces. @@ -2612,13 +2609,13 @@ fn handleSegfaultPosix(sig: i32, info: *const os.siginfo_t, ctx_ptr: ?*const any // We cannot allow the signal handler to return because when it runs the original instruction // again, the memory may be mapped and undefined behavior would occur rather than repeating // the segfault. So we simply abort here. - os.abort(); + posix.abort(); } fn dumpSegfaultInfoPosix(sig: i32, code: i32, addr: usize, ctx_ptr: ?*const anyopaque) void { const stderr = io.getStdErr().writer(); _ = switch (sig) { - os.SIG.SEGV => if (native_arch == .x86_64 and native_os == .linux and code == 128) // SI_KERNEL + posix.SIG.SEGV => if (native_arch == .x86_64 and native_os == .linux and code == 128) // SI_KERNEL // x86_64 doesn't have a full 64-bit virtual address space. // Addresses outside of that address space are non-canonical // and the CPU won't provide the faulting address to us. @@ -2629,11 +2626,11 @@ fn dumpSegfaultInfoPosix(sig: i32, code: i32, addr: usize, ctx_ptr: ?*const anyo stderr.print("General protection exception (no address available)\n", .{}) else stderr.print("Segmentation fault at address 0x{x}\n", .{addr}), - os.SIG.ILL => stderr.print("Illegal instruction at address 0x{x}\n", .{addr}), - os.SIG.BUS => stderr.print("Bus error at address 0x{x}\n", .{addr}), - os.SIG.FPE => stderr.print("Arithmetic exception at address 0x{x}\n", .{addr}), + posix.SIG.ILL => stderr.print("Illegal instruction at address 0x{x}\n", .{addr}), + posix.SIG.BUS => stderr.print("Bus error at address 0x{x}\n", .{addr}), + posix.SIG.FPE => stderr.print("Arithmetic exception at address 0x{x}\n", .{addr}), else => unreachable, - } catch os.abort(); + } catch posix.abort(); switch (native_arch) { .x86, @@ -2641,7 +2638,7 @@ fn dumpSegfaultInfoPosix(sig: i32, code: i32, addr: usize, ctx_ptr: ?*const anyo .arm, .aarch64, => { - const ctx: *const os.ucontext_t = @ptrCast(@alignCast(ctx_ptr)); + const ctx: *const posix.ucontext_t = @ptrCast(@alignCast(ctx_ptr)); dumpStackTraceFromBase(ctx); }, else => {}, @@ -2684,7 +2681,7 @@ fn handleSegfaultWindowsExtra( dumpSegfaultInfoWindows(info, msg, label); }, }; - os.abort(); + posix.abort(); } else { switch (msg) { 0 => panicImpl(null, exception_address, "{s}", label.?), @@ -2707,7 +2704,7 @@ fn dumpSegfaultInfoWindows(info: *windows.EXCEPTION_POINTERS, msg: u8, label: ?[ 1 => stderr.print("Segmentation fault at address 0x{x}\n", .{info.ExceptionRecord.ExceptionInformation[1]}), 2 => stderr.print("Illegal instruction at address 0x{x}\n", .{info.ContextRecord.getRegs().ip}), else => unreachable, - } catch os.abort(); + } catch posix.abort(); dumpStackTraceFromBase(info.ContextRecord); } @@ -2722,9 +2719,9 @@ pub fn dumpStackPointerAddr(prefix: []const u8) void { test "manage resources correctly" { if (builtin.strip_debug_info) return error.SkipZigTest; - if (builtin.os.tag == .wasi) return error.SkipZigTest; + if (native_os == .wasi) return error.SkipZigTest; - if (builtin.os.tag == .windows) { + if (native_os == .windows) { // https://github.com/ziglang/zig/issues/13963 return error.SkipZigTest; } diff --git a/lib/std/dwarf.zig b/lib/std/dwarf.zig index b59f535691..a0f5a7f0a8 100644 --- a/lib/std/dwarf.zig +++ b/lib/std/dwarf.zig @@ -2188,12 +2188,12 @@ pub fn openDwarfDebugInfo(di: *DwarfInfo, allocator: mem.Allocator) !void { /// This function is to make it handy to comment out the return and make it /// into a crash when working on this file. fn badDwarf() error{InvalidDebugInfo} { - //std.os.abort(); // can be handy to uncomment when working on this file + //if (true) @panic("badDwarf"); // can be handy to uncomment when working on this file return error.InvalidDebugInfo; } fn missingDwarf() error{MissingDebugInfo} { - //std.os.abort(); // can be handy to uncomment when working on this file + //if (true) @panic("missingDwarf"); // can be handy to uncomment when working on this file return error.MissingDebugInfo; } diff --git a/lib/std/dwarf/abi.zig b/lib/std/dwarf/abi.zig index 7130341e8d..75ff3d1e9e 100644 --- a/lib/std/dwarf/abi.zig +++ b/lib/std/dwarf/abi.zig @@ -1,7 +1,8 @@ const builtin = @import("builtin"); const std = @import("../std.zig"); -const os = std.os; const mem = std.mem; +const native_os = builtin.os.tag; +const posix = std.posix; pub fn supportsUnwinding(target: std.Target) bool { return switch (target.cpu.arch) { @@ -138,7 +139,7 @@ pub fn regBytes( reg_number: u8, reg_context: ?RegisterContext, ) AbiError!RegBytesReturnType(@TypeOf(thread_context_ptr)) { - if (builtin.os.tag == .windows) { + if (native_os == .windows) { return switch (builtin.cpu.arch) { .x86 => switch (reg_number) { 0 => mem.asBytes(&thread_context_ptr.Eax), @@ -193,61 +194,61 @@ pub fn regBytes( const ucontext_ptr = thread_context_ptr; return switch (builtin.cpu.arch) { - .x86 => switch (builtin.os.tag) { + .x86 => switch (native_os) { .linux, .netbsd, .solaris, .illumos => switch (reg_number) { - 0 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.EAX]), - 1 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.ECX]), - 2 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.EDX]), - 3 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.EBX]), + 0 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.EAX]), + 1 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.ECX]), + 2 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.EDX]), + 3 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.EBX]), 4...5 => if (reg_context) |r| bytes: { if (reg_number == 4) { break :bytes if (r.eh_frame and r.is_macho) - mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.EBP]) + mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.EBP]) else - mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.ESP]); + mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.ESP]); } else { break :bytes if (r.eh_frame and r.is_macho) - mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.ESP]) + mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.ESP]) else - mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.EBP]); + mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.EBP]); } } else error.RegisterContextRequired, - 6 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.ESI]), - 7 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.EDI]), - 8 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.EIP]), - 9 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.EFL]), - 10 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.CS]), - 11 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.SS]), - 12 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.DS]), - 13 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.ES]), - 14 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.FS]), - 15 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.GS]), + 6 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.ESI]), + 7 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.EDI]), + 8 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.EIP]), + 9 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.EFL]), + 10 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.CS]), + 11 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.SS]), + 12 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.DS]), + 13 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.ES]), + 14 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.FS]), + 15 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.GS]), 16...23 => error.InvalidRegister, // TODO: Support loading ST0-ST7 from mcontext.fpregs 32...39 => error.InvalidRegister, // TODO: Support loading XMM0-XMM7 from mcontext.fpregs else => error.InvalidRegister, }, else => error.UnimplementedOs, }, - .x86_64 => switch (builtin.os.tag) { + .x86_64 => switch (native_os) { .linux, .solaris, .illumos => switch (reg_number) { - 0 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.RAX]), - 1 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.RDX]), - 2 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.RCX]), - 3 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.RBX]), - 4 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.RSI]), - 5 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.RDI]), - 6 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.RBP]), - 7 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.RSP]), - 8 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.R8]), - 9 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.R9]), - 10 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.R10]), - 11 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.R11]), - 12 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.R12]), - 13 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.R13]), - 14 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.R14]), - 15 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.R15]), - 16 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.RIP]), - 17...32 => |i| if (builtin.os.tag.isSolarish()) + 0 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.RAX]), + 1 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.RDX]), + 2 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.RCX]), + 3 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.RBX]), + 4 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.RSI]), + 5 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.RDI]), + 6 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.RBP]), + 7 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.RSP]), + 8 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.R8]), + 9 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.R9]), + 10 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.R10]), + 11 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.R11]), + 12 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.R12]), + 13 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.R13]), + 14 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.R14]), + 15 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.R15]), + 16 => mem.asBytes(&ucontext_ptr.mcontext.gregs[posix.REG.RIP]), + 17...32 => |i| if (native_os.isSolarish()) mem.asBytes(&ucontext_ptr.mcontext.fpregs.chip_state.xmm[i - 17]) else mem.asBytes(&ucontext_ptr.mcontext.fpregs.xmm[i - 17]), @@ -317,7 +318,7 @@ pub fn regBytes( }, else => error.UnimplementedOs, }, - .arm => switch (builtin.os.tag) { + .arm => switch (native_os) { .linux => switch (reg_number) { 0 => mem.asBytes(&ucontext_ptr.mcontext.arm_r0), 1 => mem.asBytes(&ucontext_ptr.mcontext.arm_r1), @@ -340,7 +341,7 @@ pub fn regBytes( }, else => error.UnimplementedOs, }, - .aarch64 => switch (builtin.os.tag) { + .aarch64 => switch (native_os) { .macos, .ios => switch (reg_number) { 0...28 => mem.asBytes(&ucontext_ptr.mcontext.ss.regs[reg_number]), 29 => mem.asBytes(&ucontext_ptr.mcontext.ss.fp), diff --git a/lib/std/dynamic_library.zig b/lib/std/dynamic_library.zig index 7a31c39f44..a6ef8ac6c7 100644 --- a/lib/std/dynamic_library.zig +++ b/lib/std/dynamic_library.zig @@ -1,16 +1,16 @@ const std = @import("std.zig"); const builtin = @import("builtin"); const mem = std.mem; -const os = std.os; const testing = std.testing; const elf = std.elf; const windows = std.os.windows; -const system = std.os.system; +const native_os = builtin.os.tag; +const posix = std.posix; /// Cross-platform dynamic library loading and symbol lookup. /// Platform-specific functionality is available through the `inner` field. pub const DynLib = struct { - const InnerType = switch (builtin.os.tag) { + const InnerType = switch (native_os) { .linux => if (!builtin.link_libc or builtin.abi == .musl and builtin.link_mode == .static) ElfDynLib else @@ -125,7 +125,7 @@ pub fn linkmap_iterator(phdrs: []elf.Phdr) error{InvalidExe}!LinkMap.Iterator { pub const ElfDynLib = struct { strings: [*:0]u8, syms: [*]elf.Sym, - hashtab: [*]os.Elf_Symndx, + hashtab: [*]posix.Elf_Symndx, versym: ?[*]u16, verdef: ?*elf.Verdef, memory: []align(mem.page_size) u8, @@ -138,27 +138,27 @@ pub const ElfDynLib = struct { ElfStringSectionNotFound, ElfSymSectionNotFound, ElfHashTableNotFound, - } || os.OpenError || os.MMapError; + } || posix.OpenError || posix.MMapError; /// Trusts the file. Malicious file will be able to execute arbitrary code. pub fn open(path: []const u8) Error!ElfDynLib { - const fd = try os.open(path, .{ .ACCMODE = .RDONLY, .CLOEXEC = true }, 0); - defer os.close(fd); + const fd = try posix.open(path, .{ .ACCMODE = .RDONLY, .CLOEXEC = true }, 0); + defer posix.close(fd); - const stat = try os.fstat(fd); + const stat = try posix.fstat(fd); const size = std.math.cast(usize, stat.size) orelse return error.FileTooBig; // This one is to read the ELF info. We do more mmapping later // corresponding to the actual LOAD sections. - const file_bytes = try os.mmap( + const file_bytes = try posix.mmap( null, mem.alignForward(usize, size, mem.page_size), - os.PROT.READ, + posix.PROT.READ, .{ .TYPE = .PRIVATE }, fd, 0, ); - defer os.munmap(file_bytes); + defer posix.munmap(file_bytes); const eh = @as(*elf.Ehdr, @ptrCast(file_bytes.ptr)); if (!mem.eql(u8, eh.e_ident[0..4], elf.MAGIC)) return error.NotElfFile; @@ -188,15 +188,15 @@ pub const ElfDynLib = struct { const dynv = maybe_dynv orelse return error.MissingDynamicLinkingInformation; // Reserve the entire range (with no permissions) so that we can do MAP.FIXED below. - const all_loaded_mem = try os.mmap( + const all_loaded_mem = try posix.mmap( null, virt_addr_end, - os.PROT.NONE, + posix.PROT.NONE, .{ .TYPE = .PRIVATE, .ANONYMOUS = true }, -1, 0, ); - errdefer os.munmap(all_loaded_mem); + errdefer posix.munmap(all_loaded_mem); const base = @intFromPtr(all_loaded_mem.ptr); @@ -220,7 +220,7 @@ pub const ElfDynLib = struct { const prot = elfToMmapProt(ph.p_flags); if ((ph.p_flags & elf.PF_W) == 0) { // If it does not need write access, it can be mapped from the fd. - _ = try os.mmap( + _ = try posix.mmap( ptr, extended_memsz, prot, @@ -229,7 +229,7 @@ pub const ElfDynLib = struct { ph.p_offset - extra_bytes, ); } else { - const sect_mem = try os.mmap( + const sect_mem = try posix.mmap( ptr, extended_memsz, prot, @@ -247,7 +247,7 @@ pub const ElfDynLib = struct { var maybe_strings: ?[*:0]u8 = null; var maybe_syms: ?[*]elf.Sym = null; - var maybe_hashtab: ?[*]os.Elf_Symndx = null; + var maybe_hashtab: ?[*]posix.Elf_Symndx = null; var maybe_versym: ?[*]u16 = null; var maybe_verdef: ?*elf.Verdef = null; @@ -258,7 +258,7 @@ pub const ElfDynLib = struct { switch (dynv[i]) { elf.DT_STRTAB => maybe_strings = @as([*:0]u8, @ptrFromInt(p)), elf.DT_SYMTAB => maybe_syms = @as([*]elf.Sym, @ptrFromInt(p)), - elf.DT_HASH => maybe_hashtab = @as([*]os.Elf_Symndx, @ptrFromInt(p)), + elf.DT_HASH => maybe_hashtab = @as([*]posix.Elf_Symndx, @ptrFromInt(p)), elf.DT_VERSYM => maybe_versym = @as([*]u16, @ptrFromInt(p)), elf.DT_VERDEF => maybe_verdef = @as(*elf.Verdef, @ptrFromInt(p)), else => {}, @@ -283,7 +283,7 @@ pub const ElfDynLib = struct { /// Trusts the file pub fn close(self: *ElfDynLib) void { - os.munmap(self.memory); + posix.munmap(self.memory); self.* = undefined; } @@ -320,10 +320,10 @@ pub const ElfDynLib = struct { } fn elfToMmapProt(elf_prot: u64) u32 { - var result: u32 = os.PROT.NONE; - if ((elf_prot & elf.PF_R) != 0) result |= os.PROT.READ; - if ((elf_prot & elf.PF_W) != 0) result |= os.PROT.WRITE; - if ((elf_prot & elf.PF_X) != 0) result |= os.PROT.EXEC; + var result: u32 = posix.PROT.NONE; + if ((elf_prot & elf.PF_R) != 0) result |= posix.PROT.READ; + if ((elf_prot & elf.PF_W) != 0) result |= posix.PROT.WRITE; + if ((elf_prot & elf.PF_X) != 0) result |= posix.PROT.EXEC; return result; } }; @@ -343,7 +343,7 @@ fn checkver(def_arg: *elf.Verdef, vsym_arg: i32, vername: []const u8, strings: [ } test "ElfDynLib" { - if (builtin.os.tag != .linux) { + if (native_os != .linux) { return error.SkipZigTest; } @@ -419,20 +419,20 @@ pub const DlDynLib = struct { handle: *anyopaque, pub fn open(path: []const u8) Error!DlDynLib { - const path_c = try os.toPosixPath(path); + const path_c = try posix.toPosixPath(path); return openZ(&path_c); } pub fn openZ(path_c: [*:0]const u8) Error!DlDynLib { return .{ - .handle = system.dlopen(path_c, system.RTLD.LAZY) orelse { + .handle = std.c.dlopen(path_c, std.c.RTLD.LAZY) orelse { return error.FileNotFound; }, }; } pub fn close(self: *DlDynLib) void { - switch (std.os.errno(system.dlclose(self.handle))) { + switch (posix.errno(std.c.dlclose(self.handle))) { .SUCCESS => return, else => unreachable, } @@ -442,7 +442,7 @@ pub const DlDynLib = struct { pub fn lookup(self: *DlDynLib, comptime T: type, name: [:0]const u8) ?T { // dlsym (and other dl-functions) secretly take shadow parameter - return address on stack // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66826 - if (@call(.never_tail, system.dlsym, .{ self.handle, name.ptr })) |symbol| { + if (@call(.never_tail, std.c.dlsym, .{ self.handle, name.ptr })) |symbol| { return @as(T, @ptrCast(@alignCast(symbol))); } else { return null; @@ -453,12 +453,12 @@ pub const DlDynLib = struct { /// Returns human readable string describing most recent error than occurred from `lookup` /// or `null` if no error has occurred since initialization or when `getError` was last called. pub fn getError() ?[:0]const u8 { - return mem.span(system.dlerror()); + return mem.span(std.c.dlerror()); } }; test "dynamic_library" { - const libname = switch (builtin.os.tag) { + const libname = switch (native_os) { .linux, .freebsd, .openbsd, .solaris, .illumos => "invalid_so.so", .windows => "invalid_dll.dll", .macos, .tvos, .watchos, .ios => "invalid_dylib.dylib", diff --git a/lib/std/fmt.zig b/lib/std/fmt.zig index e1a122510a..e5b359d30f 100644 --- a/lib/std/fmt.zig +++ b/lib/std/fmt.zig @@ -9,7 +9,6 @@ const assert = std.debug.assert; const mem = std.mem; const unicode = std.unicode; const meta = std.meta; -const ryu128 = @import("fmt/ryu128.zig"); const lossyCast = std.math.lossyCast; const expectFmt = std.testing.expectFmt; @@ -757,21 +756,25 @@ pub fn formatIntValue( return formatInt(int_value, base, case, options, writer); } +pub const format_float = @import("fmt/format_float.zig"); +pub const formatFloat = format_float.formatFloat; +pub const FormatFloatError = format_float.FormatError; + fn formatFloatValue( value: anytype, comptime fmt: []const u8, options: FormatOptions, writer: anytype, ) !void { - var buf: [ryu128.bufferSize(.decimal, f64)]u8 = undefined; + var buf: [format_float.bufferSize(.decimal, f64)]u8 = undefined; if (fmt.len == 0 or comptime std.mem.eql(u8, fmt, "e")) { - const s = ryu128.format(&buf, value, .{ .mode = .scientific, .precision = options.precision }) catch |err| switch (err) { + const s = formatFloat(&buf, value, .{ .mode = .scientific, .precision = options.precision }) catch |err| switch (err) { error.BufferTooSmall => "(float)", }; return formatBuf(s, options, writer); } else if (comptime std.mem.eql(u8, fmt, "d")) { - const s = ryu128.format(&buf, value, .{ .mode = .decimal, .precision = options.precision }) catch |err| switch (err) { + const s = formatFloat(&buf, value, .{ .mode = .decimal, .precision = options.precision }) catch |err| switch (err) { error.BufferTooSmall => "(float)", }; return formatBuf(s, options, writer); @@ -787,7 +790,7 @@ fn formatFloatValue( } test { - _ = &ryu128; + _ = &format_float; } pub const Case = enum { lower, upper }; @@ -890,7 +893,7 @@ fn formatSizeImpl(comptime base: comptime_int) type { return formatBuf("0B", options, writer); } // The worst case in terms of space needed is 32 bytes + 3 for the suffix. - var buf: [ryu128.min_buffer_size + 3]u8 = undefined; + var buf: [format_float.min_buffer_size + 3]u8 = undefined; const mags_si = " kMGTPEZY"; const mags_iec = " KMGTPEZY"; @@ -908,7 +911,7 @@ fn formatSizeImpl(comptime base: comptime_int) type { else => unreachable, }; - const s = ryu128.format(&buf, new_value, .{ .mode = .decimal, .precision = options.precision }) catch |err| switch (err) { + const s = formatFloat(&buf, new_value, .{ .mode = .decimal, .precision = options.precision }) catch |err| switch (err) { error.BufferTooSmall => unreachable, }; diff --git a/lib/std/fmt/ryu128.zig b/lib/std/fmt/format_float.zig index c67311ac36..b2194099bb 100644 --- a/lib/std/fmt/ryu128.zig +++ b/lib/std/fmt/format_float.zig @@ -27,7 +27,7 @@ pub fn bufferSize(comptime mode: Format, comptime T: type) comptime_int { }; } -pub const RyuError = error{ +pub const FormatError = error{ BufferTooSmall, }; @@ -52,7 +52,7 @@ pub const FormatOptions = struct { /// /// When printing full precision decimals, use `bufferSize` to get the required space. It is /// recommended to bound decimal output with a fixed precision to reduce the required buffer size. -pub fn format(buf: []u8, v_: anytype, options: FormatOptions) RyuError![]const u8 { +pub fn formatFloat(buf: []u8, v_: anytype, options: FormatOptions) FormatError![]const u8 { const v = switch (@TypeOf(v_)) { // comptime_float internally is a f128; this preserves precision. comptime_float => @as(f128, v_), @@ -182,7 +182,7 @@ fn round(f: FloatDecimal128, mode: RoundMode, precision: usize) FloatDecimal128 /// will not fit. /// /// It is recommended to bound decimal formatting with an exact precision. -pub fn formatScientific(buf: []u8, f_: FloatDecimal128, precision: ?usize) RyuError![]const u8 { +pub fn formatScientific(buf: []u8, f_: FloatDecimal128, precision: ?usize) FormatError![]const u8 { std.debug.assert(buf.len >= min_buffer_size); var f = f_; @@ -253,7 +253,7 @@ pub fn formatScientific(buf: []u8, f_: FloatDecimal128, precision: ?usize) RyuEr /// The buffer provided must be greater than `min_buffer_size` bytes in length. If no precision is /// specified, this may still return an error. If precision is specified, `2 + precision` bytes will /// always be written. -pub fn formatDecimal(buf: []u8, f_: FloatDecimal128, precision: ?usize) RyuError![]const u8 { +pub fn formatDecimal(buf: []u8, f_: FloatDecimal128, precision: ?usize) FormatError![]const u8 { std.debug.assert(buf.len >= min_buffer_size); var f = f_; @@ -964,7 +964,7 @@ fn check(comptime T: type, value: T, comptime expected: []const u8) !void { var buf: [6000]u8 = undefined; const value_bits: I = @bitCast(value); - const s = try format(&buf, value, .{}); + const s = try formatFloat(&buf, value, .{}); try std.testing.expectEqualStrings(expected, s); if (@bitSizeOf(T) != 80) { diff --git a/lib/std/fs.zig b/lib/std/fs.zig index 5c6e8c9c3a..109ce7fe23 100644 --- a/lib/std/fs.zig +++ b/lib/std/fs.zig @@ -3,21 +3,23 @@ const std = @import("std.zig"); const builtin = @import("builtin"); const root = @import("root"); -const os = std.os; const mem = std.mem; const base64 = std.base64; const crypto = std.crypto; const Allocator = std.mem.Allocator; const assert = std.debug.assert; +const native_os = builtin.os.tag; +const posix = std.posix; +const windows = std.os.windows; -const is_darwin = builtin.os.tag.isDarwin(); +const is_darwin = native_os.isDarwin(); pub const AtomicFile = @import("fs/AtomicFile.zig"); pub const Dir = @import("fs/Dir.zig"); pub const File = @import("fs/File.zig"); pub const path = @import("fs/path.zig"); -pub const has_executable_bit = switch (builtin.os.tag) { +pub const has_executable_bit = switch (native_os) { .windows, .wasi => false, else => true, }; @@ -26,36 +28,41 @@ pub const wasi = @import("fs/wasi.zig"); // TODO audit these APIs with respect to Dir and absolute paths -pub const realpath = os.realpath; -pub const realpathZ = os.realpathZ; -pub const realpathW = os.realpathW; +pub const realpath = posix.realpath; +pub const realpathZ = posix.realpathZ; +pub const realpathW = posix.realpathW; pub const getAppDataDir = @import("fs/get_app_data_dir.zig").getAppDataDir; pub const GetAppDataDirError = @import("fs/get_app_data_dir.zig").GetAppDataDirError; -/// This represents the maximum size of a `[]u8` file path that the -/// operating system will accept. Paths, including those returned from file -/// system operations, may be longer than this length, but such paths cannot -/// be successfully passed back in other file system operations. However, -/// all path components returned by file system operations are assumed to -/// fit into a `u8` array of this length. +/// Deprecated: use `max_path_bytes`. +pub const MAX_PATH_BYTES = max_path_bytes; + +/// The maximum length of a file path that the operating system will accept. +/// +/// Paths, including those returned from file system operations, may be longer +/// than this length, but such paths cannot be successfully passed back in +/// other file system operations. However, all path components returned by file +/// system operations are assumed to fit into a `u8` array of this length. +/// /// The byte count includes room for a null sentinel byte. -/// On Windows, `[]u8` file paths are encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On WASI, `[]u8` file paths are encoded as valid UTF-8. -/// On other platforms, `[]u8` file paths are opaque sequences of bytes with no particular encoding. -pub const MAX_PATH_BYTES = switch (builtin.os.tag) { - .linux, .macos, .ios, .freebsd, .openbsd, .netbsd, .dragonfly, .haiku, .solaris, .illumos, .plan9, .emscripten => os.PATH_MAX, +/// +/// * On Windows, `[]u8` file paths are encoded as +/// [WTF-8](https://simonsapin.github.io/wtf-8/). +/// * On WASI, `[]u8` file paths are encoded as valid UTF-8. +/// * On other platforms, `[]u8` file paths are opaque sequences of bytes with +/// no particular encoding. +pub const max_path_bytes = switch (native_os) { + .linux, .macos, .ios, .freebsd, .openbsd, .netbsd, .dragonfly, .haiku, .solaris, .illumos, .plan9, .emscripten, .wasi => posix.PATH_MAX, // Each WTF-16LE code unit may be expanded to 3 WTF-8 bytes. // If it would require 4 WTF-8 bytes, then there would be a surrogate // pair in the WTF-16LE, and we (over)account 3 bytes for it that way. // +1 for the null byte at the end, which can be encoded in 1 byte. - .windows => os.windows.PATH_MAX_WIDE * 3 + 1, - // TODO work out what a reasonable value we should use here - .wasi => 4096, + .windows => windows.PATH_MAX_WIDE * 3 + 1, else => if (@hasDecl(root, "os") and @hasDecl(root.os, "PATH_MAX")) root.os.PATH_MAX else - @compileError("PATH_MAX not implemented for " ++ @tagName(builtin.os.tag)), + @compileError("PATH_MAX not implemented for " ++ @tagName(native_os)), }; /// This represents the maximum size of a `[]u8` file name component that @@ -66,22 +73,22 @@ pub const MAX_PATH_BYTES = switch (builtin.os.tag) { /// On Windows, `[]u8` file name components are encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). /// On WASI, file name components are encoded as valid UTF-8. /// On other platforms, `[]u8` components are an opaque sequence of bytes with no particular encoding. -pub const MAX_NAME_BYTES = switch (builtin.os.tag) { - .linux, .macos, .ios, .freebsd, .openbsd, .netbsd, .dragonfly, .solaris, .illumos => os.NAME_MAX, +pub const MAX_NAME_BYTES = switch (native_os) { + .linux, .macos, .ios, .freebsd, .openbsd, .netbsd, .dragonfly, .solaris, .illumos => posix.NAME_MAX, // Haiku's NAME_MAX includes the null terminator, so subtract one. - .haiku => os.NAME_MAX - 1, + .haiku => posix.NAME_MAX - 1, // Each WTF-16LE character may be expanded to 3 WTF-8 bytes. // If it would require 4 WTF-8 bytes, then there would be a surrogate // pair in the WTF-16LE, and we (over)account 3 bytes for it that way. - .windows => os.windows.NAME_MAX * 3, + .windows => windows.NAME_MAX * 3, // For WASI, the MAX_NAME will depend on the host OS, so it needs to be // as large as the largest MAX_NAME_BYTES (Windows) in order to work on any host OS. // TODO determine if this is a reasonable approach - .wasi => os.windows.NAME_MAX * 3, + .wasi => windows.NAME_MAX * 3, else => if (@hasDecl(root, "os") and @hasDecl(root.os, "NAME_MAX")) root.os.NAME_MAX else - @compileError("NAME_MAX not implemented for " ++ @tagName(builtin.os.tag)), + @compileError("NAME_MAX not implemented for " ++ @tagName(native_os)), }; pub const base64_alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".*; @@ -167,19 +174,19 @@ pub fn copyFileAbsolute( /// On other platforms, `absolute_path` is an opaque sequence of bytes with no particular encoding. pub fn makeDirAbsolute(absolute_path: []const u8) !void { assert(path.isAbsolute(absolute_path)); - return os.mkdir(absolute_path, Dir.default_mode); + return posix.mkdir(absolute_path, Dir.default_mode); } /// Same as `makeDirAbsolute` except the parameter is null-terminated. pub fn makeDirAbsoluteZ(absolute_path_z: [*:0]const u8) !void { assert(path.isAbsoluteZ(absolute_path_z)); - return os.mkdirZ(absolute_path_z, Dir.default_mode); + return posix.mkdirZ(absolute_path_z, Dir.default_mode); } /// Same as `makeDirAbsolute` except the parameter is a null-terminated WTF-16 LE-encoded string. pub fn makeDirAbsoluteW(absolute_path_w: [*:0]const u16) !void { assert(path.isAbsoluteWindowsW(absolute_path_w)); - return os.mkdirW(absolute_path_w, Dir.default_mode); + return posix.mkdirW(absolute_path_w, Dir.default_mode); } /// Same as `Dir.deleteDir` except the path is absolute. @@ -188,19 +195,19 @@ pub fn makeDirAbsoluteW(absolute_path_w: [*:0]const u16) !void { /// On other platforms, `dir_path` is an opaque sequence of bytes with no particular encoding. pub fn deleteDirAbsolute(dir_path: []const u8) !void { assert(path.isAbsolute(dir_path)); - return os.rmdir(dir_path); + return posix.rmdir(dir_path); } /// Same as `deleteDirAbsolute` except the path parameter is null-terminated. pub fn deleteDirAbsoluteZ(dir_path: [*:0]const u8) !void { assert(path.isAbsoluteZ(dir_path)); - return os.rmdirZ(dir_path); + return posix.rmdirZ(dir_path); } /// Same as `deleteDirAbsolute` except the path parameter is WTF-16 and target OS is assumed Windows. pub fn deleteDirAbsoluteW(dir_path: [*:0]const u16) !void { assert(path.isAbsoluteWindowsW(dir_path)); - return os.rmdirW(dir_path); + return posix.rmdirW(dir_path); } /// Same as `Dir.rename` except the paths are absolute. @@ -210,49 +217,49 @@ pub fn deleteDirAbsoluteW(dir_path: [*:0]const u16) !void { pub fn renameAbsolute(old_path: []const u8, new_path: []const u8) !void { assert(path.isAbsolute(old_path)); assert(path.isAbsolute(new_path)); - return os.rename(old_path, new_path); + return posix.rename(old_path, new_path); } /// Same as `renameAbsolute` except the path parameters are null-terminated. pub fn renameAbsoluteZ(old_path: [*:0]const u8, new_path: [*:0]const u8) !void { assert(path.isAbsoluteZ(old_path)); assert(path.isAbsoluteZ(new_path)); - return os.renameZ(old_path, new_path); + return posix.renameZ(old_path, new_path); } /// Same as `renameAbsolute` except the path parameters are WTF-16 and target OS is assumed Windows. pub fn renameAbsoluteW(old_path: [*:0]const u16, new_path: [*:0]const u16) !void { assert(path.isAbsoluteWindowsW(old_path)); assert(path.isAbsoluteWindowsW(new_path)); - return os.renameW(old_path, new_path); + return posix.renameW(old_path, new_path); } /// Same as `Dir.rename`, except `new_sub_path` is relative to `new_dir` pub fn rename(old_dir: Dir, old_sub_path: []const u8, new_dir: Dir, new_sub_path: []const u8) !void { - return os.renameat(old_dir.fd, old_sub_path, new_dir.fd, new_sub_path); + return posix.renameat(old_dir.fd, old_sub_path, new_dir.fd, new_sub_path); } /// Same as `rename` except the parameters are null-terminated. pub fn renameZ(old_dir: Dir, old_sub_path_z: [*:0]const u8, new_dir: Dir, new_sub_path_z: [*:0]const u8) !void { - return os.renameatZ(old_dir.fd, old_sub_path_z, new_dir.fd, new_sub_path_z); + return posix.renameatZ(old_dir.fd, old_sub_path_z, new_dir.fd, new_sub_path_z); } /// Same as `rename` except the parameters are WTF16LE, NT prefixed. /// This function is Windows-only. pub fn renameW(old_dir: Dir, old_sub_path_w: []const u16, new_dir: Dir, new_sub_path_w: []const u16) !void { - return os.renameatW(old_dir.fd, old_sub_path_w, new_dir.fd, new_sub_path_w); + return posix.renameatW(old_dir.fd, old_sub_path_w, new_dir.fd, new_sub_path_w); } /// Returns a handle to the current working directory. It is not opened with iteration capability. /// Closing the returned `Dir` is checked illegal behavior. Iterating over the result is illegal behavior. /// On POSIX targets, this function is comptime-callable. pub fn cwd() Dir { - if (builtin.os.tag == .windows) { - return .{ .fd = os.windows.peb().ProcessParameters.CurrentDirectory.Handle }; - } else if (builtin.os.tag == .wasi) { + if (native_os == .windows) { + return .{ .fd = windows.peb().ProcessParameters.CurrentDirectory.Handle }; + } else if (native_os == .wasi) { return .{ .fd = std.options.wasiCwd() }; } else { - return .{ .fd = os.AT.FDCWD }; + return .{ .fd = posix.AT.FDCWD }; } } @@ -412,20 +419,20 @@ pub fn deleteTreeAbsolute(absolute_path: []const u8) !void { /// On other platforms, `pathname` is an opaque sequence of bytes with no particular encoding. pub fn readLinkAbsolute(pathname: []const u8, buffer: *[MAX_PATH_BYTES]u8) ![]u8 { assert(path.isAbsolute(pathname)); - return os.readlink(pathname, buffer); + return posix.readlink(pathname, buffer); } /// Windows-only. Same as `readlinkW`, except the path parameter is null-terminated, WTF16 /// encoded. pub fn readlinkAbsoluteW(pathname_w: [*:0]const u16, buffer: *[MAX_PATH_BYTES]u8) ![]u8 { assert(path.isAbsoluteWindowsW(pathname_w)); - return os.readlinkW(pathname_w, buffer); + return posix.readlinkW(pathname_w, buffer); } /// Same as `readLink`, except the path parameter is null-terminated. pub fn readLinkAbsoluteZ(pathname_c: [*:0]const u8, buffer: *[MAX_PATH_BYTES]u8) ![]u8 { assert(path.isAbsoluteZ(pathname_c)); - return os.readlinkZ(pathname_c, buffer); + return posix.readlinkZ(pathname_c, buffer); } /// Creates a symbolic link named `sym_link_path` which contains the string `target_path`. @@ -443,12 +450,12 @@ pub fn symLinkAbsolute( ) !void { assert(path.isAbsolute(target_path)); assert(path.isAbsolute(sym_link_path)); - if (builtin.os.tag == .windows) { - const target_path_w = try os.windows.sliceToPrefixedFileW(null, target_path); - const sym_link_path_w = try os.windows.sliceToPrefixedFileW(null, sym_link_path); - return os.windows.CreateSymbolicLink(null, sym_link_path_w.span(), target_path_w.span(), flags.is_directory); + if (native_os == .windows) { + const target_path_w = try windows.sliceToPrefixedFileW(null, target_path); + const sym_link_path_w = try windows.sliceToPrefixedFileW(null, sym_link_path); + return windows.CreateSymbolicLink(null, sym_link_path_w.span(), target_path_w.span(), flags.is_directory); } - return os.symlink(target_path, sym_link_path); + return posix.symlink(target_path, sym_link_path); } /// Windows-only. Same as `symLinkAbsolute` except the parameters are null-terminated, WTF16 LE encoded. @@ -462,7 +469,7 @@ pub fn symLinkAbsoluteW( ) !void { assert(path.isAbsoluteWindowsWTF16(target_path_w)); assert(path.isAbsoluteWindowsWTF16(sym_link_path_w)); - return os.windows.CreateSymbolicLink(null, sym_link_path_w, target_path_w, flags.is_directory); + return windows.CreateSymbolicLink(null, sym_link_path_w, target_path_w, flags.is_directory); } /// Same as `symLinkAbsolute` except the parameters are null-terminated pointers. @@ -474,27 +481,27 @@ pub fn symLinkAbsoluteZ( ) !void { assert(path.isAbsoluteZ(target_path_c)); assert(path.isAbsoluteZ(sym_link_path_c)); - if (builtin.os.tag == .windows) { - const target_path_w = try os.windows.cStrToPrefixedFileW(null, target_path_c); - const sym_link_path_w = try os.windows.cStrToPrefixedFileW(null, sym_link_path_c); - return os.windows.CreateSymbolicLink(null, sym_link_path_w.span(), target_path_w.span(), flags.is_directory); + if (native_os == .windows) { + const target_path_w = try windows.cStrToPrefixedFileW(null, target_path_c); + const sym_link_path_w = try windows.cStrToPrefixedFileW(null, sym_link_path_c); + return windows.CreateSymbolicLink(null, sym_link_path_w.span(), target_path_w.span(), flags.is_directory); } - return os.symlinkZ(target_path_c, sym_link_path_c); + return posix.symlinkZ(target_path_c, sym_link_path_c); } -pub const OpenSelfExeError = os.OpenError || SelfExePathError || os.FlockError; +pub const OpenSelfExeError = posix.OpenError || SelfExePathError || posix.FlockError; pub fn openSelfExe(flags: File.OpenFlags) OpenSelfExeError!File { - if (builtin.os.tag == .linux) { + if (native_os == .linux) { return openFileAbsoluteZ("/proc/self/exe", flags); } - if (builtin.os.tag == .windows) { + if (native_os == .windows) { // If ImagePathName is a symlink, then it will contain the path of the symlink, // not the path that the symlink points to. However, because we are opening // the file, we can let the openFileW call follow the symlink for us. - const image_path_unicode_string = &os.windows.peb().ProcessParameters.ImagePathName; + const image_path_unicode_string = &windows.peb().ProcessParameters.ImagePathName; const image_path_name = image_path_unicode_string.Buffer.?[0 .. image_path_unicode_string.Length / 2 :0]; - const prefixed_path_w = try os.windows.wToPrefixedFileW(null, image_path_name); + const prefixed_path_w = try windows.wToPrefixedFileW(null, image_path_name); return cwd().openFileW(prefixed_path_w.span(), flags); } // Use of MAX_PATH_BYTES here is valid as the resulting path is immediately @@ -505,7 +512,7 @@ pub fn openSelfExe(flags: File.OpenFlags) OpenSelfExeError!File { return openFileAbsoluteZ(buf[0..self_exe_path.len :0].ptr, flags); } -// This is os.ReadLinkError || os.RealPathError with impossible errors excluded +// This is `posix.ReadLinkError || posix.RealPathError` with impossible errors excluded pub const SelfExePathError = error{ FileNotFound, AccessDenied, @@ -542,7 +549,7 @@ pub const SelfExePathError = error{ /// On Windows, the volume does not contain a recognized file system. File /// system drivers might not be loaded, or the volume may be corrupt. UnrecognizedVolume, -} || os.SysCtlError; +} || posix.SysCtlError; /// `selfExePath` except allocates the result on the heap. /// Caller owns returned memory. @@ -580,7 +587,7 @@ pub fn selfExePath(out_buffer: []u8) SelfExePathError![]u8 { if (rc != 0) return error.NameTooLong; var real_path_buf: [MAX_PATH_BYTES]u8 = undefined; - const real_path = std.os.realpathZ(&symlink_path_buf, &real_path_buf) catch |err| switch (err) { + const real_path = std.posix.realpathZ(&symlink_path_buf, &real_path_buf) catch |err| switch (err) { error.InvalidWtf8 => unreachable, // Windows-only error.NetworkNotFound => unreachable, // Windows-only else => |e| return e, @@ -590,15 +597,15 @@ pub fn selfExePath(out_buffer: []u8) SelfExePathError![]u8 { @memcpy(result, real_path); return result; } - switch (builtin.os.tag) { - .linux => return os.readlinkZ("/proc/self/exe", out_buffer) catch |err| switch (err) { + switch (native_os) { + .linux => return posix.readlinkZ("/proc/self/exe", out_buffer) catch |err| switch (err) { error.InvalidUtf8 => unreachable, // WASI-only error.InvalidWtf8 => unreachable, // Windows-only error.UnsupportedReparsePointType => unreachable, // Windows-only error.NetworkNotFound => unreachable, // Windows-only else => |e| return e, }, - .solaris, .illumos => return os.readlinkZ("/proc/self/path/a.out", out_buffer) catch |err| switch (err) { + .solaris, .illumos => return posix.readlinkZ("/proc/self/path/a.out", out_buffer) catch |err| switch (err) { error.InvalidUtf8 => unreachable, // WASI-only error.InvalidWtf8 => unreachable, // Windows-only error.UnsupportedReparsePointType => unreachable, // Windows-only @@ -606,29 +613,29 @@ pub fn selfExePath(out_buffer: []u8) SelfExePathError![]u8 { else => |e| return e, }, .freebsd, .dragonfly => { - var mib = [4]c_int{ os.CTL.KERN, os.KERN.PROC, os.KERN.PROC_PATHNAME, -1 }; + var mib = [4]c_int{ posix.CTL.KERN, posix.KERN.PROC, posix.KERN.PROC_PATHNAME, -1 }; var out_len: usize = out_buffer.len; - try os.sysctl(&mib, out_buffer.ptr, &out_len, null, 0); + try posix.sysctl(&mib, out_buffer.ptr, &out_len, null, 0); // TODO could this slice from 0 to out_len instead? return mem.sliceTo(out_buffer, 0); }, .netbsd => { - var mib = [4]c_int{ os.CTL.KERN, os.KERN.PROC_ARGS, -1, os.KERN.PROC_PATHNAME }; + var mib = [4]c_int{ posix.CTL.KERN, posix.KERN.PROC_ARGS, -1, posix.KERN.PROC_PATHNAME }; var out_len: usize = out_buffer.len; - try os.sysctl(&mib, out_buffer.ptr, &out_len, null, 0); + try posix.sysctl(&mib, out_buffer.ptr, &out_len, null, 0); // TODO could this slice from 0 to out_len instead? return mem.sliceTo(out_buffer, 0); }, .openbsd, .haiku => { // OpenBSD doesn't support getting the path of a running process, so try to guess it - if (os.argv.len == 0) + if (std.os.argv.len == 0) return error.FileNotFound; - const argv0 = mem.span(os.argv[0]); + const argv0 = mem.span(std.os.argv[0]); if (mem.indexOf(u8, argv0, "/") != null) { // argv[0] is a path (relative or absolute): use realpath(3) directly var real_path_buf: [MAX_PATH_BYTES]u8 = undefined; - const real_path = os.realpathZ(os.argv[0], &real_path_buf) catch |err| switch (err) { + const real_path = posix.realpathZ(std.os.argv[0], &real_path_buf) catch |err| switch (err) { error.InvalidWtf8 => unreachable, // Windows-only error.NetworkNotFound => unreachable, // Windows-only else => |e| return e, @@ -640,17 +647,17 @@ pub fn selfExePath(out_buffer: []u8) SelfExePathError![]u8 { return result; } else if (argv0.len != 0) { // argv[0] is not empty (and not a path): search it inside PATH - const PATH = std.os.getenvZ("PATH") orelse return error.FileNotFound; + const PATH = posix.getenvZ("PATH") orelse return error.FileNotFound; var path_it = mem.tokenizeScalar(u8, PATH, path.delimiter); while (path_it.next()) |a_path| { var resolved_path_buf: [MAX_PATH_BYTES - 1:0]u8 = undefined; const resolved_path = std.fmt.bufPrintZ(&resolved_path_buf, "{s}/{s}", .{ a_path, - os.argv[0], + std.os.argv[0], }) catch continue; var real_path_buf: [MAX_PATH_BYTES]u8 = undefined; - if (os.realpathZ(resolved_path, &real_path_buf)) |real_path| { + if (posix.realpathZ(resolved_path, &real_path_buf)) |real_path| { // found a file, and hope it is the right file if (real_path.len > out_buffer.len) return error.NameTooLong; @@ -663,13 +670,13 @@ pub fn selfExePath(out_buffer: []u8) SelfExePathError![]u8 { return error.FileNotFound; }, .windows => { - const image_path_unicode_string = &os.windows.peb().ProcessParameters.ImagePathName; + const image_path_unicode_string = &windows.peb().ProcessParameters.ImagePathName; const image_path_name = image_path_unicode_string.Buffer.?[0 .. image_path_unicode_string.Length / 2 :0]; // If ImagePathName is a symlink, then it will contain the path of the // symlink, not the path that the symlink points to. We want the path // that the symlink points to, though, so we need to get the realpath. - const pathname_w = try os.windows.wToPrefixedFileW(null, image_path_name); + const pathname_w = try windows.wToPrefixedFileW(null, image_path_name); return std.fs.cwd().realpathW(pathname_w.span(), out_buffer) catch |err| switch (err) { error.InvalidWtf8 => unreachable, else => |e| return e, @@ -718,11 +725,11 @@ pub fn realpathAlloc(allocator: Allocator, pathname: []const u8) ![]u8 { // paths. musl supports passing NULL but restricts the output to PATH_MAX // anyway. var buf: [MAX_PATH_BYTES]u8 = undefined; - return allocator.dupe(u8, try os.realpath(pathname, &buf)); + return allocator.dupe(u8, try posix.realpath(pathname, &buf)); } test { - if (builtin.os.tag != .wasi) { + if (native_os != .wasi) { _ = &makeDirAbsolute; _ = &makeDirAbsoluteZ; _ = ©FileAbsolute; diff --git a/lib/std/fs/AtomicFile.zig b/lib/std/fs/AtomicFile.zig index c95ae9bcf2..17a17f8993 100644 --- a/lib/std/fs/AtomicFile.zig +++ b/lib/std/fs/AtomicFile.zig @@ -85,5 +85,4 @@ const File = std.fs.File; const Dir = std.fs.Dir; const fs = std.fs; const assert = std.debug.assert; -// https://github.com/ziglang/zig/issues/5019 -const posix = std.os; +const posix = std.posix; diff --git a/lib/std/fs/Dir.zig b/lib/std/fs/Dir.zig index 11fbc13c41..74d91239f8 100644 --- a/lib/std/fs/Dir.zig +++ b/lib/std/fs/Dir.zig @@ -18,7 +18,7 @@ const IteratorError = error{ InvalidUtf8, } || posix.UnexpectedError; -pub const Iterator = switch (builtin.os.tag) { +pub const Iterator = switch (native_os) { .macos, .ios, .freebsd, .netbsd, .dragonfly, .openbsd, .solaris, .illumos => struct { dir: Dir, seek: i64, @@ -34,7 +34,7 @@ pub const Iterator = switch (builtin.os.tag) { /// Memory such as file names referenced in this returned entry becomes invalid /// with subsequent calls to `next`, as well as when this `Dir` is deinitialized. pub fn next(self: *Self) Error!?Entry { - switch (builtin.os.tag) { + switch (native_os) { .macos, .ios => return self.nextDarwin(), .freebsd, .netbsd, .dragonfly, .openbsd => return self.nextBsd(), .solaris, .illumos => return self.nextSolaris(), @@ -183,7 +183,7 @@ pub const Iterator = switch (builtin.os.tag) { const name = @as([*]u8, @ptrCast(&bsd_entry.name))[0..bsd_entry.namlen]; - const skip_zero_fileno = switch (builtin.os.tag) { + const skip_zero_fileno = switch (native_os) { // fileno=0 is used to mark invalid entries or deleted files. .openbsd, .netbsd => true, else => false, @@ -315,7 +315,7 @@ pub const Iterator = switch (builtin.os.tag) { dir: Dir, // The if guard is solely there to prevent compile errors from missing `linux.dirent64` // definition when compiling for other OSes. It doesn't do anything when compiling for Linux. - buf: [1024]u8 align(if (builtin.os.tag != .linux) 1 else @alignOf(linux.dirent64)), + buf: [1024]u8 align(if (native_os != .linux) 1 else @alignOf(linux.dirent64)), index: usize, end_index: usize, first_iter: bool, @@ -348,7 +348,7 @@ pub const Iterator = switch (builtin.os.tag) { self.first_iter = false; } const rc = linux.getdents64(self.dir.fd, &self.buf, self.buf.len); - switch (linux.getErrno(rc)) { + switch (linux.E.init(rc)) { .SUCCESS => {}, .BADF => unreachable, // Dir is invalid or was opened without iteration ability .FAULT => unreachable, @@ -398,7 +398,7 @@ pub const Iterator = switch (builtin.os.tag) { }, .windows => struct { dir: Dir, - buf: [1024]u8 align(@alignOf(std.os.windows.FILE_BOTH_DIR_INFORMATION)), + buf: [1024]u8 align(@alignOf(windows.FILE_BOTH_DIR_INFORMATION)), index: usize, end_index: usize, first_iter: bool, @@ -411,8 +411,8 @@ pub const Iterator = switch (builtin.os.tag) { /// Memory such as file names referenced in this returned entry becomes invalid /// with subsequent calls to `next`, as well as when this `Dir` is deinitialized. pub fn next(self: *Self) Error!?Entry { + const w = windows; while (true) { - const w = std.os.windows; if (self.index >= self.end_index) { var io: w.IO_STATUS_BLOCK = undefined; const rc = w.ntdll.NtQueryDirectoryFile( @@ -582,7 +582,7 @@ pub fn iterateAssumeFirstIteration(self: Dir) Iterator { } fn iterateImpl(self: Dir, first_iter_start_value: bool) Iterator { - switch (builtin.os.tag) { + switch (native_os) { .macos, .ios, .freebsd, @@ -770,11 +770,11 @@ pub fn close(self: *Dir) void { /// On WASI, `sub_path` should be encoded as valid UTF-8. /// On other platforms, `sub_path` is an opaque sequence of bytes with no particular encoding. pub fn openFile(self: Dir, sub_path: []const u8, flags: File.OpenFlags) File.OpenError!File { - if (builtin.os.tag == .windows) { - const path_w = try std.os.windows.sliceToPrefixedFileW(self.fd, sub_path); + if (native_os == .windows) { + const path_w = try windows.sliceToPrefixedFileW(self.fd, sub_path); return self.openFileW(path_w.span(), flags); } - if (builtin.os.tag == .wasi) { + if (native_os == .wasi) { var base: std.os.wasi.rights_t = .{}; if (flags.isRead()) { base.FD_READ = true; @@ -803,9 +803,9 @@ pub fn openFile(self: Dir, sub_path: []const u8, flags: File.OpenFlags) File.Ope /// Same as `openFile` but the path parameter is null-terminated. pub fn openFileZ(self: Dir, sub_path: [*:0]const u8, flags: File.OpenFlags) File.OpenError!File { - switch (builtin.os.tag) { + switch (native_os) { .windows => { - const path_w = try std.os.windows.cStrToPrefixedFileW(self.fd, sub_path); + const path_w = try windows.cStrToPrefixedFileW(self.fd, sub_path); return self.openFileW(path_w.span(), flags); }, .wasi => { @@ -884,7 +884,7 @@ pub fn openFileZ(self: Dir, sub_path: [*:0]const u8, flags: File.OpenFlags) File /// Same as `openFile` but Windows-only and the path parameter is /// [WTF-16](https://simonsapin.github.io/wtf-8/#potentially-ill-formed-utf-16) encoded. pub fn openFileW(self: Dir, sub_path_w: []const u16, flags: File.OpenFlags) File.OpenError!File { - const w = std.os.windows; + const w = windows; const file: File = .{ .handle = try w.OpenFile(sub_path_w, .{ .dir = self.fd, @@ -925,11 +925,11 @@ pub fn openFileW(self: Dir, sub_path_w: []const u16, flags: File.OpenFlags) File /// On WASI, `sub_path` should be encoded as valid UTF-8. /// On other platforms, `sub_path` is an opaque sequence of bytes with no particular encoding. pub fn createFile(self: Dir, sub_path: []const u8, flags: File.CreateFlags) File.OpenError!File { - if (builtin.os.tag == .windows) { - const path_w = try std.os.windows.sliceToPrefixedFileW(self.fd, sub_path); + if (native_os == .windows) { + const path_w = try windows.sliceToPrefixedFileW(self.fd, sub_path); return self.createFileW(path_w.span(), flags); } - if (builtin.os.tag == .wasi) { + if (native_os == .wasi) { return .{ .handle = try posix.openatWasi(self.fd, sub_path, .{}, .{ .CREAT = true, @@ -957,9 +957,9 @@ pub fn createFile(self: Dir, sub_path: []const u8, flags: File.CreateFlags) File /// Same as `createFile` but the path parameter is null-terminated. pub fn createFileZ(self: Dir, sub_path_c: [*:0]const u8, flags: File.CreateFlags) File.OpenError!File { - switch (builtin.os.tag) { + switch (native_os) { .windows => { - const path_w = try std.os.windows.cStrToPrefixedFileW(self.fd, sub_path_c); + const path_w = try windows.cStrToPrefixedFileW(self.fd, sub_path_c); return self.createFileW(path_w.span(), flags); }, .wasi => { @@ -968,7 +968,7 @@ pub fn createFileZ(self: Dir, sub_path_c: [*:0]const u8, flags: File.CreateFlags else => {}, } - var os_flags: std.os.O = .{ + var os_flags: posix.O = .{ .ACCMODE = if (flags.read) .RDWR else .WRONLY, .CREAT = true, .TRUNC = flags.truncate, @@ -1032,7 +1032,7 @@ pub fn createFileZ(self: Dir, sub_path_c: [*:0]const u8, flags: File.CreateFlags /// Same as `createFile` but Windows-only and the path parameter is /// [WTF-16](https://simonsapin.github.io/wtf-8/#potentially-ill-formed-utf-16) encoded. pub fn createFileW(self: Dir, sub_path_w: []const u16, flags: File.CreateFlags) File.OpenError!File { - const w = std.os.windows; + const w = windows; const read_flag = if (flags.read) @as(u32, w.GENERIC_READ) else 0; const file: File = .{ .handle = try w.OpenFile(sub_path_w, .{ @@ -1145,7 +1145,7 @@ pub fn makePath(self: Dir, sub_path: []const u8) !void { /// have been modified regardless. /// `sub_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). fn makeOpenPathAccessMaskW(self: Dir, sub_path: []const u8, access_mask: u32, no_follow: bool) OpenError!Dir { - const w = std.os.windows; + const w = windows; var it = try fs.path.componentIterator(sub_path); // If there are no components in the path, then create a dummy component with the full path. var component = it.last() orelse fs.path.NativeComponentIterator.Component{ @@ -1180,9 +1180,9 @@ fn makeOpenPathAccessMaskW(self: Dir, sub_path: []const u8, access_mask: u32, no /// On WASI, `sub_path` should be encoded as valid UTF-8. /// On other platforms, `sub_path` is an opaque sequence of bytes with no particular encoding. pub fn makeOpenPath(self: Dir, sub_path: []const u8, open_dir_options: OpenDirOptions) !Dir { - return switch (builtin.os.tag) { + return switch (native_os) { .windows => { - const w = std.os.windows; + const w = windows; const base_flags = w.STANDARD_RIGHTS_READ | w.FILE_READ_ATTRIBUTES | w.FILE_READ_EA | w.SYNCHRONIZE | w.FILE_TRAVERSE | (if (open_dir_options.iterate) w.FILE_LIST_DIRECTORY else @as(u32, 0)); @@ -1215,11 +1215,11 @@ pub const RealPathError = posix.RealPathError; /// Currently supported hosts are: Linux, macOS, and Windows. /// See also `Dir.realpathZ`, `Dir.realpathW`, and `Dir.realpathAlloc`. pub fn realpath(self: Dir, pathname: []const u8, out_buffer: []u8) RealPathError![]u8 { - if (builtin.os.tag == .wasi) { + if (native_os == .wasi) { @compileError("realpath is not available on WASI"); } - if (builtin.os.tag == .windows) { - const pathname_w = try std.os.windows.sliceToPrefixedFileW(self.fd, pathname); + if (native_os == .windows) { + const pathname_w = try windows.sliceToPrefixedFileW(self.fd, pathname); return self.realpathW(pathname_w.span(), out_buffer); } const pathname_c = try posix.toPosixPath(pathname); @@ -1229,12 +1229,12 @@ pub fn realpath(self: Dir, pathname: []const u8, out_buffer: []u8) RealPathError /// Same as `Dir.realpath` except `pathname` is null-terminated. /// See also `Dir.realpath`, `realpathZ`. pub fn realpathZ(self: Dir, pathname: [*:0]const u8, out_buffer: []u8) RealPathError![]u8 { - if (builtin.os.tag == .windows) { - const pathname_w = try posix.windows.cStrToPrefixedFileW(self.fd, pathname); + if (native_os == .windows) { + const pathname_w = try windows.cStrToPrefixedFileW(self.fd, pathname); return self.realpathW(pathname_w.span(), out_buffer); } - const flags: posix.O = switch (builtin.os.tag) { + const flags: posix.O = switch (native_os) { .linux => .{ .NONBLOCK = true, .CLOEXEC = true, @@ -1255,14 +1255,8 @@ pub fn realpathZ(self: Dir, pathname: [*:0]const u8, out_buffer: []u8) RealPathE }; defer posix.close(fd); - // Use of MAX_PATH_BYTES here is valid as the realpath function does not - // have a variant that takes an arbitrary-size buffer. - // TODO(#4812): Consider reimplementing realpath or using the POSIX.1-2008 - // NULL out parameter (GNU's canonicalize_file_name) to handle overelong - // paths. musl supports passing NULL but restricts the output to PATH_MAX - // anyway. var buffer: [fs.MAX_PATH_BYTES]u8 = undefined; - const out_path = try posix.getFdPath(fd, &buffer); + const out_path = try std.os.getFdPath(fd, &buffer); if (out_path.len > out_buffer.len) { return error.NameTooLong; @@ -1277,7 +1271,7 @@ pub fn realpathZ(self: Dir, pathname: [*:0]const u8, out_buffer: []u8) RealPathE /// The result is encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). /// See also `Dir.realpath`, `realpathW`. pub fn realpathW(self: Dir, pathname: []const u16, out_buffer: []u8) RealPathError![]u8 { - const w = std.os.windows; + const w = windows; const access_mask = w.GENERIC_READ | w.SYNCHRONIZE; const share_access = w.FILE_SHARE_READ; @@ -1331,16 +1325,16 @@ pub fn realpathAlloc(self: Dir, allocator: Allocator, pathname: []const u8) Real /// Not all targets support this. For example, WASI does not have the concept /// of a current working directory. pub fn setAsCwd(self: Dir) !void { - if (builtin.os.tag == .wasi) { + if (native_os == .wasi) { @compileError("changing cwd is not currently possible in WASI"); } - if (builtin.os.tag == .windows) { - var dir_path_buffer: [std.os.windows.PATH_MAX_WIDE]u16 = undefined; - const dir_path = try std.os.windows.GetFinalPathNameByHandle(self.fd, .{}, &dir_path_buffer); + if (native_os == .windows) { + var dir_path_buffer: [windows.PATH_MAX_WIDE]u16 = undefined; + const dir_path = try windows.GetFinalPathNameByHandle(self.fd, .{}, &dir_path_buffer); if (builtin.link_libc) { return posix.chdirW(dir_path); } - return std.os.windows.SetCurrentDirectory(dir_path); + return windows.SetCurrentDirectory(dir_path); } try posix.fchdir(self.fd); } @@ -1368,9 +1362,9 @@ pub const OpenDirOptions = struct { /// On other platforms, `sub_path` is an opaque sequence of bytes with no particular encoding. /// Asserts that the path parameter has no null bytes. pub fn openDir(self: Dir, sub_path: []const u8, args: OpenDirOptions) OpenError!Dir { - switch (builtin.os.tag) { + switch (native_os) { .windows => { - const sub_path_w = try posix.windows.sliceToPrefixedFileW(self.fd, sub_path); + const sub_path_w = try windows.sliceToPrefixedFileW(self.fd, sub_path); return self.openDirW(sub_path_w.span().ptr, args); }, .wasi => { @@ -1427,9 +1421,9 @@ pub fn openDir(self: Dir, sub_path: []const u8, args: OpenDirOptions) OpenError! /// Same as `openDir` except the parameter is null-terminated. pub fn openDirZ(self: Dir, sub_path_c: [*:0]const u8, args: OpenDirOptions) OpenError!Dir { - switch (builtin.os.tag) { + switch (native_os) { .windows => { - const sub_path_w = try std.os.windows.cStrToPrefixedFileW(self.fd, sub_path_c); + const sub_path_w = try windows.cStrToPrefixedFileW(self.fd, sub_path_c); return self.openDirW(sub_path_w.span().ptr, args); }, .wasi => { @@ -1453,7 +1447,7 @@ pub fn openDirZ(self: Dir, sub_path_c: [*:0]const u8, args: OpenDirOptions) Open /// Same as `openDir` except the path parameter is WTF-16 LE encoded, NT-prefixed. /// This function asserts the target OS is Windows. pub fn openDirW(self: Dir, sub_path_w: [*:0]const u16, args: OpenDirOptions) OpenError!Dir { - const w = std.os.windows; + const w = windows; // TODO remove some of these flags if args.access_sub_paths is false const base_flags = w.STANDARD_RIGHTS_READ | w.FILE_READ_ATTRIBUTES | w.FILE_READ_EA | w.SYNCHRONIZE | w.FILE_TRAVERSE; @@ -1487,7 +1481,7 @@ const MakeOpenDirAccessMaskWOptions = struct { }; fn makeOpenDirAccessMaskW(self: Dir, sub_path_w: [*:0]const u16, access_mask: u32, flags: MakeOpenDirAccessMaskWOptions) OpenError!Dir { - const w = std.os.windows; + const w = windows; var result = Dir{ .fd = undefined, @@ -1545,10 +1539,10 @@ pub const DeleteFileError = posix.UnlinkError; /// On other platforms, `sub_path` is an opaque sequence of bytes with no particular encoding. /// Asserts that the path parameter has no null bytes. pub fn deleteFile(self: Dir, sub_path: []const u8) DeleteFileError!void { - if (builtin.os.tag == .windows) { - const sub_path_w = try std.os.windows.sliceToPrefixedFileW(self.fd, sub_path); + if (native_os == .windows) { + const sub_path_w = try windows.sliceToPrefixedFileW(self.fd, sub_path); return self.deleteFileW(sub_path_w.span()); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { + } else if (native_os == .wasi and !builtin.link_libc) { posix.unlinkat(self.fd, sub_path, 0) catch |err| switch (err) { error.DirNotEmpty => unreachable, // not passing AT.REMOVEDIR else => |e| return e, @@ -1563,7 +1557,7 @@ pub fn deleteFile(self: Dir, sub_path: []const u8) DeleteFileError!void { pub fn deleteFileZ(self: Dir, sub_path_c: [*:0]const u8) DeleteFileError!void { posix.unlinkatZ(self.fd, sub_path_c, 0) catch |err| switch (err) { error.DirNotEmpty => unreachable, // not passing AT.REMOVEDIR - error.AccessDenied => |e| switch (builtin.os.tag) { + error.AccessDenied => |e| switch (native_os) { // non-Linux POSIX systems return EPERM when trying to delete a directory, so // we need to handle that case specifically and translate the error .macos, .ios, .freebsd, .netbsd, .dragonfly, .openbsd, .solaris, .illumos => { @@ -1615,10 +1609,10 @@ pub const DeleteDirError = error{ /// On other platforms, `sub_path` is an opaque sequence of bytes with no particular encoding. /// Asserts that the path parameter has no null bytes. pub fn deleteDir(self: Dir, sub_path: []const u8) DeleteDirError!void { - if (builtin.os.tag == .windows) { - const sub_path_w = try std.os.windows.sliceToPrefixedFileW(self.fd, sub_path); + if (native_os == .windows) { + const sub_path_w = try windows.sliceToPrefixedFileW(self.fd, sub_path); return self.deleteDirW(sub_path_w.span()); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { + } else if (native_os == .wasi and !builtin.link_libc) { posix.unlinkat(self.fd, sub_path, posix.AT.REMOVEDIR) catch |err| switch (err) { error.IsDir => unreachable, // not possible since we pass AT.REMOVEDIR else => |e| return e, @@ -1691,15 +1685,15 @@ pub fn symLink( sym_link_path: []const u8, flags: SymLinkFlags, ) !void { - if (builtin.os.tag == .wasi and !builtin.link_libc) { + if (native_os == .wasi and !builtin.link_libc) { return self.symLinkWasi(target_path, sym_link_path, flags); } - if (builtin.os.tag == .windows) { + if (native_os == .windows) { // Target path does not use sliceToPrefixedFileW because certain paths // are handled differently when creating a symlink than they would be // when converting to an NT namespaced path. CreateSymbolicLink in // symLinkW will handle the necessary conversion. - var target_path_w: std.os.windows.PathSpace = undefined; + var target_path_w: windows.PathSpace = undefined; target_path_w.len = try std.unicode.wtf8ToWtf16Le(&target_path_w.data, target_path); target_path_w.data[target_path_w.len] = 0; // However, we need to canonicalize any path separators to `\`, since if @@ -1711,7 +1705,7 @@ pub fn symLink( mem.nativeToLittle(u16, '\\'), ); - const sym_link_path_w = try std.os.windows.sliceToPrefixedFileW(self.fd, sym_link_path); + const sym_link_path_w = try windows.sliceToPrefixedFileW(self.fd, sym_link_path); return self.symLinkW(target_path_w.span(), sym_link_path_w.span(), flags); } const target_path_c = try posix.toPosixPath(target_path); @@ -1736,9 +1730,9 @@ pub fn symLinkZ( sym_link_path_c: [*:0]const u8, flags: SymLinkFlags, ) !void { - if (builtin.os.tag == .windows) { - const target_path_w = try std.os.windows.cStrToPrefixedFileW(self.fd, target_path_c); - const sym_link_path_w = try std.os.windows.cStrToPrefixedFileW(self.fd, sym_link_path_c); + if (native_os == .windows) { + const target_path_w = try windows.cStrToPrefixedFileW(self.fd, target_path_c); + const sym_link_path_w = try windows.cStrToPrefixedFileW(self.fd, sym_link_path_c); return self.symLinkW(target_path_w.span(), sym_link_path_w.span(), flags); } return posix.symlinkatZ(target_path_c, self.fd, sym_link_path_c); @@ -1756,7 +1750,7 @@ pub fn symLinkW( sym_link_path_w: []const u16, flags: SymLinkFlags, ) !void { - return std.os.windows.CreateSymbolicLink(self.fd, sym_link_path_w, target_path_w, flags.is_directory); + return windows.CreateSymbolicLink(self.fd, sym_link_path_w, target_path_w, flags.is_directory); } pub const ReadLinkError = posix.ReadLinkError; @@ -1768,11 +1762,11 @@ pub const ReadLinkError = posix.ReadLinkError; /// On WASI, `sub_path` should be encoded as valid UTF-8. /// On other platforms, `sub_path` is an opaque sequence of bytes with no particular encoding. pub fn readLink(self: Dir, sub_path: []const u8, buffer: []u8) ReadLinkError![]u8 { - if (builtin.os.tag == .wasi and !builtin.link_libc) { + if (native_os == .wasi and !builtin.link_libc) { return self.readLinkWasi(sub_path, buffer); } - if (builtin.os.tag == .windows) { - const sub_path_w = try std.os.windows.sliceToPrefixedFileW(self.fd, sub_path); + if (native_os == .windows) { + const sub_path_w = try windows.sliceToPrefixedFileW(self.fd, sub_path); return self.readLinkW(sub_path_w.span(), buffer); } const sub_path_c = try posix.toPosixPath(sub_path); @@ -1786,8 +1780,8 @@ pub fn readLinkWasi(self: Dir, sub_path: []const u8, buffer: []u8) ![]u8 { /// Same as `readLink`, except the `sub_path_c` parameter is null-terminated. pub fn readLinkZ(self: Dir, sub_path_c: [*:0]const u8, buffer: []u8) ![]u8 { - if (builtin.os.tag == .windows) { - const sub_path_w = try std.os.windows.cStrToPrefixedFileW(self.fd, sub_path_c); + if (native_os == .windows) { + const sub_path_w = try windows.cStrToPrefixedFileW(self.fd, sub_path_c); return self.readLinkW(sub_path_w.span(), buffer); } return posix.readlinkatZ(self.fd, sub_path_c, buffer); @@ -1796,7 +1790,7 @@ pub fn readLinkZ(self: Dir, sub_path_c: [*:0]const u8, buffer: []u8) ![]u8 { /// Windows-only. Same as `readLink` except the pathname parameter /// is WTF16 LE encoded. pub fn readLinkW(self: Dir, sub_path_w: []const u16, buffer: []u8) ![]u8 { - return std.os.windows.ReadLink(self.fd, sub_path_w, buffer); + return windows.ReadLink(self.fd, sub_path_w, buffer); } /// Read all of file contents using a preallocated buffer. @@ -2319,8 +2313,8 @@ pub const AccessError = posix.AccessError; /// For example, instead of testing if a file exists and then opening it, just /// open it and handle the error for file not found. pub fn access(self: Dir, sub_path: []const u8, flags: File.OpenFlags) AccessError!void { - if (builtin.os.tag == .windows) { - const sub_path_w = std.os.windows.sliceToPrefixedFileW(self.fd, sub_path) catch |err| switch (err) { + if (native_os == .windows) { + const sub_path_w = windows.sliceToPrefixedFileW(self.fd, sub_path) catch |err| switch (err) { error.AccessDenied => return error.PermissionDenied, else => |e| return e, }; @@ -2332,8 +2326,8 @@ pub fn access(self: Dir, sub_path: []const u8, flags: File.OpenFlags) AccessErro /// Same as `access` except the path parameter is null-terminated. pub fn accessZ(self: Dir, sub_path: [*:0]const u8, flags: File.OpenFlags) AccessError!void { - if (builtin.os.tag == .windows) { - const sub_path_w = std.os.windows.cStrToPrefixedFileW(self.fd, sub_path) catch |err| switch (err) { + if (native_os == .windows) { + const sub_path_w = windows.cStrToPrefixedFileW(self.fd, sub_path) catch |err| switch (err) { error.AccessDenied => return error.PermissionDenied, else => |e| return e, }; @@ -2355,7 +2349,7 @@ pub fn accessZ(self: Dir, sub_path: [*:0]const u8, flags: File.OpenFlags) Access /// TODO currently this ignores `flags`. pub fn accessW(self: Dir, sub_path_w: [*:0]const u16, flags: File.OpenFlags) AccessError!void { _ = flags; - return posix.faccessatW(self.fd, sub_path_w, 0, 0); + return posix.faccessatW(self.fd, sub_path_w); } pub const CopyFileOptions = struct { @@ -2473,7 +2467,7 @@ fn copy_file(fd_in: posix.fd_t, fd_out: posix.fd_t, maybe_size: ?u64) CopyFileRa } } - if (builtin.os.tag == .linux) { + if (native_os == .linux) { // Try copy_file_range first as that works at the FS level and is the // most efficient method (if available). var offset: u64 = 0; @@ -2555,13 +2549,13 @@ pub const StatFileError = File.OpenError || File.StatError || posix.FStatAtError /// On WASI, `sub_path` should be encoded as valid UTF-8. /// On other platforms, `sub_path` is an opaque sequence of bytes with no particular encoding. pub fn statFile(self: Dir, sub_path: []const u8) StatFileError!Stat { - if (builtin.os.tag == .windows) { + if (native_os == .windows) { var file = try self.openFile(sub_path, .{}); defer file.close(); return file.stat(); } - if (builtin.os.tag == .wasi and !builtin.link_libc) { - const st = try posix.fstatat_wasi(self.fd, sub_path, .{ .SYMLINK_FOLLOW = true }); + if (native_os == .wasi and !builtin.link_libc) { + const st = try std.os.fstatat_wasi(self.fd, sub_path, .{ .SYMLINK_FOLLOW = true }); return Stat.fromWasi(st); } const st = try posix.fstatat(self.fd, sub_path, 0); @@ -2617,9 +2611,10 @@ const builtin = @import("builtin"); const std = @import("../std.zig"); const File = std.fs.File; const AtomicFile = std.fs.AtomicFile; -// https://github.com/ziglang/zig/issues/5019 -const posix = std.os; +const posix = std.posix; const mem = std.mem; const fs = std.fs; const Allocator = std.mem.Allocator; const assert = std.debug.assert; +const windows = std.os.windows; +const native_os = builtin.os.tag; diff --git a/lib/std/fs/File.zig b/lib/std/fs/File.zig index 669f1b72e3..0b5058c5fe 100644 --- a/lib/std/fs/File.zig +++ b/lib/std/fs/File.zig @@ -193,6 +193,58 @@ pub fn isTty(self: File) bool { return posix.isatty(self.handle); } +pub fn isCygwinPty(file: File) bool { + if (builtin.os.tag != .windows) return false; + + const handle = file.handle; + + // If this is a MSYS2/cygwin pty, then it will be a named pipe with a name in one of these formats: + // msys-[...]-ptyN-[...] + // cygwin-[...]-ptyN-[...] + // + // Example: msys-1888ae32e00d56aa-pty0-to-master + + // First, just check that the handle is a named pipe. + // This allows us to avoid the more costly NtQueryInformationFile call + // for handles that aren't named pipes. + { + var io_status: windows.IO_STATUS_BLOCK = undefined; + var device_info: windows.FILE_FS_DEVICE_INFORMATION = undefined; + const rc = windows.ntdll.NtQueryVolumeInformationFile(handle, &io_status, &device_info, @sizeOf(windows.FILE_FS_DEVICE_INFORMATION), .FileFsDeviceInformation); + switch (rc) { + .SUCCESS => {}, + else => return false, + } + if (device_info.DeviceType != windows.FILE_DEVICE_NAMED_PIPE) return false; + } + + const name_bytes_offset = @offsetOf(windows.FILE_NAME_INFO, "FileName"); + // `NAME_MAX` UTF-16 code units (2 bytes each) + // This buffer may not be long enough to handle *all* possible paths + // (PATH_MAX_WIDE would be necessary for that), but because we only care + // about certain paths and we know they must be within a reasonable length, + // we can use this smaller buffer and just return false on any error from + // NtQueryInformationFile. + const num_name_bytes = windows.MAX_PATH * 2; + var name_info_bytes align(@alignOf(windows.FILE_NAME_INFO)) = [_]u8{0} ** (name_bytes_offset + num_name_bytes); + + var io_status_block: windows.IO_STATUS_BLOCK = undefined; + const rc = windows.ntdll.NtQueryInformationFile(handle, &io_status_block, &name_info_bytes, @intCast(name_info_bytes.len), .FileNameInformation); + switch (rc) { + .SUCCESS => {}, + .INVALID_PARAMETER => unreachable, + else => return false, + } + + const name_info: *const windows.FILE_NAME_INFO = @ptrCast(&name_info_bytes); + const name_bytes = name_info_bytes[name_bytes_offset .. name_bytes_offset + name_info.FileNameLength]; + const name_wide = std.mem.bytesAsSlice(u16, name_bytes); + // The name we get from NtQueryInformationFile will be prefixed with a '\', e.g. \msys-1888ae32e00d56aa-pty0-to-master + return (std.mem.startsWith(u16, name_wide, &[_]u16{ '\\', 'm', 's', 'y', 's', '-' }) or + std.mem.startsWith(u16, name_wide, &[_]u16{ '\\', 'c', 'y', 'g', 'w', 'i', 'n', '-' })) and + std.mem.indexOf(u16, name_wide, &[_]u16{ '-', 'p', 't', 'y' }) != null; +} + /// Test whether ANSI escape codes will be treated as such. pub fn supportsAnsiEscapeCodes(self: File) bool { if (builtin.os.tag == .windows) { @@ -201,7 +253,7 @@ pub fn supportsAnsiEscapeCodes(self: File) bool { if (console_mode & windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING != 0) return true; } - return posix.isCygwinPty(self.handle); + return self.isCygwinPty(); } if (builtin.os.tag == .wasi) { // WASI sanitizes stdout when fd is a tty so ANSI escape codes @@ -405,7 +457,7 @@ pub fn stat(self: File) StatError!Stat { } if (builtin.os.tag == .wasi and !builtin.link_libc) { - const st = try posix.fstat_wasi(self.handle); + const st = try std.os.fstat_wasi(self.handle); return Stat.fromWasi(st); } @@ -952,7 +1004,7 @@ pub fn metadata(self: File) MetadataError!Metadata { .statx = stx, }; }, - .wasi => .{ .stat = try posix.fstat_wasi(self.handle) }, + .wasi => .{ .stat = try std.os.fstat_wasi(self.handle) }, else => .{ .stat = try posix.fstat(self.handle) }, }, }; @@ -1634,8 +1686,7 @@ const File = @This(); const std = @import("../std.zig"); const builtin = @import("builtin"); const Allocator = std.mem.Allocator; -// https://github.com/ziglang/zig/issues/5019 -const posix = std.os; +const posix = std.posix; const io = std.io; const math = std.math; const assert = std.debug.assert; diff --git a/lib/std/fs/get_app_data_dir.zig b/lib/std/fs/get_app_data_dir.zig index 4fcd17efe2..9c84291199 100644 --- a/lib/std/fs/get_app_data_dir.zig +++ b/lib/std/fs/get_app_data_dir.zig @@ -3,7 +3,8 @@ const builtin = @import("builtin"); const unicode = std.unicode; const mem = std.mem; const fs = std.fs; -const os = std.os; +const native_os = builtin.os.tag; +const posix = std.posix; pub const GetAppDataDirError = error{ OutOfMemory, @@ -13,7 +14,7 @@ pub const GetAppDataDirError = error{ /// Caller owns returned memory. /// TODO determine if we can remove the allocator requirement pub fn getAppDataDir(allocator: mem.Allocator, appname: []const u8) GetAppDataDirError![]u8 { - switch (builtin.os.tag) { + switch (native_os) { .windows => { const local_app_data_dir = std.process.getEnvVarOwned(allocator, "LOCALAPPDATA") catch |err| switch (err) { error.OutOfMemory => |e| return e, @@ -23,18 +24,18 @@ pub fn getAppDataDir(allocator: mem.Allocator, appname: []const u8) GetAppDataDi return fs.path.join(allocator, &[_][]const u8{ local_app_data_dir, appname }); }, .macos => { - const home_dir = os.getenv("HOME") orelse { + const home_dir = posix.getenv("HOME") orelse { // TODO look in /etc/passwd return error.AppDataDirUnavailable; }; return fs.path.join(allocator, &[_][]const u8{ home_dir, "Library", "Application Support", appname }); }, .linux, .freebsd, .netbsd, .dragonfly, .openbsd, .solaris, .illumos => { - if (os.getenv("XDG_DATA_HOME")) |xdg| { + if (posix.getenv("XDG_DATA_HOME")) |xdg| { return fs.path.join(allocator, &[_][]const u8{ xdg, appname }); } - const home_dir = os.getenv("HOME") orelse { + const home_dir = posix.getenv("HOME") orelse { // TODO look in /etc/passwd return error.AppDataDirUnavailable; }; @@ -48,7 +49,7 @@ pub fn getAppDataDir(allocator: mem.Allocator, appname: []const u8) GetAppDataDi } // TODO look into directory_which const be_user_settings = 0xbbe; - const rc = os.system.find_directory(be_user_settings, -1, true, dir_path_ptr, 1); + const rc = std.c.find_directory(be_user_settings, -1, true, dir_path_ptr, 1); const settings_dir = try allocator.dupeZ(u8, mem.sliceTo(dir_path_ptr, 0)); defer allocator.free(settings_dir); switch (rc) { @@ -61,7 +62,7 @@ pub fn getAppDataDir(allocator: mem.Allocator, appname: []const u8) GetAppDataDi } test "getAppDataDir" { - if (builtin.os.tag == .wasi) return error.SkipZigTest; + if (native_os == .wasi) return error.SkipZigTest; // We can't actually validate the result const dir = getAppDataDir(std.testing.allocator, "zig") catch return; diff --git a/lib/std/fs/test.zig b/lib/std/fs/test.zig index 740e0655c5..3aa932cf01 100644 --- a/lib/std/fs/test.zig +++ b/lib/std/fs/test.zig @@ -1,10 +1,12 @@ const std = @import("../std.zig"); const builtin = @import("builtin"); const testing = std.testing; -const os = std.os; const fs = std.fs; const mem = std.mem; const wasi = std.os.wasi; +const native_os = builtin.os.tag; +const windows = std.os.windows; +const posix = std.posix; const ArenaAllocator = std.heap.ArenaAllocator; const Dir = std.fs.Dir; @@ -25,7 +27,7 @@ const PathType = enum { }; } - pub const TransformError = std.os.RealPathError || error{OutOfMemory}; + pub const TransformError = posix.RealPathError || error{OutOfMemory}; pub const TransformFn = fn (allocator: mem.Allocator, dir: Dir, relative_path: [:0]const u8) TransformError![:0]const u8; pub fn getTransformFn(comptime path_type: PathType) TransformFn { @@ -42,7 +44,7 @@ const PathType = enum { // The final path may not actually exist which would cause realpath to fail. // So instead, we get the path of the dir and join it with the relative path. var fd_path_buf: [fs.MAX_PATH_BYTES]u8 = undefined; - const dir_path = try os.getFdPath(dir.fd, &fd_path_buf); + const dir_path = try std.os.getFdPath(dir.fd, &fd_path_buf); return fs.path.joinZ(allocator, &.{ dir_path, relative_path }); } }.transform, @@ -51,8 +53,8 @@ const PathType = enum { // Any drive absolute path (C:\foo) can be converted into a UNC path by // using '127.0.0.1' as the server name and '<drive letter>$' as the share name. var fd_path_buf: [fs.MAX_PATH_BYTES]u8 = undefined; - const dir_path = try os.getFdPath(dir.fd, &fd_path_buf); - const windows_path_type = std.os.windows.getUnprefixedPathType(u8, dir_path); + const dir_path = try std.os.getFdPath(dir.fd, &fd_path_buf); + const windows_path_type = windows.getUnprefixedPathType(u8, dir_path); switch (windows_path_type) { .unc_absolute => return fs.path.joinZ(allocator, &.{ dir_path, relative_path }), .drive_absolute => { @@ -102,7 +104,7 @@ const TestContext = struct { pub fn transformPath(self: *TestContext, relative_path: [:0]const u8) ![:0]const u8 { const allocator = self.arena.allocator(); const transformed_path = try self.transform_fn(allocator, self.dir, relative_path); - if (builtin.os.tag == .windows) { + if (native_os == .windows) { const transformed_sep_path = try allocator.dupeZ(u8, transformed_path); std.mem.replaceScalar(u8, transformed_sep_path, switch (self.path_sep) { '/' => '\\', @@ -119,7 +121,7 @@ const TestContext = struct { /// If path separators are replaced, then the result is allocated by the /// TestContext's arena and will be free'd during `TestContext.deinit`. pub fn toCanonicalPathSep(self: *TestContext, path: [:0]const u8) ![:0]const u8 { - if (builtin.os.tag == .windows) { + if (native_os == .windows) { const allocator = self.arena.allocator(); const transformed_sep_path = try allocator.dupeZ(u8, path); std.mem.replaceScalar(u8, transformed_sep_path, '/', '\\'); @@ -157,7 +159,7 @@ fn testWithPathTypeIfSupported(comptime path_type: PathType, comptime path_sep: fn setupSymlink(dir: Dir, target: []const u8, link: []const u8, flags: SymLinkFlags) !void { return dir.symLink(target, link, flags) catch |err| switch (err) { // Symlink requires admin privileges on windows, so this test can legitimately fail. - error.AccessDenied => if (builtin.os.tag == .windows) return error.SkipZigTest else return err, + error.AccessDenied => if (native_os == .windows) return error.SkipZigTest else return err, else => return err, }; } @@ -166,7 +168,7 @@ fn setupSymlink(dir: Dir, target: []const u8, link: []const u8, flags: SymLinkFl // AccessDenied, then make the test failure silent (it is not a Zig failure). fn setupSymlinkAbsolute(target: []const u8, link: []const u8, flags: SymLinkFlags) !void { return fs.symLinkAbsolute(target, link, flags) catch |err| switch (err) { - error.AccessDenied => if (builtin.os.tag == .windows) return error.SkipZigTest else return err, + error.AccessDenied => if (native_os == .windows) return error.SkipZigTest else return err, else => return err, }; } @@ -232,60 +234,58 @@ test "File.stat on a File that is a symlink returns Kind.sym_link" { var symlink = switch (builtin.target.os.tag) { .windows => windows_symlink: { - const w = std.os.windows; - - const sub_path_w = try std.os.windows.cStrToPrefixedFileW(ctx.dir.fd, "symlink"); + const sub_path_w = try windows.cStrToPrefixedFileW(ctx.dir.fd, "symlink"); var result = Dir{ .fd = undefined, }; const path_len_bytes = @as(u16, @intCast(sub_path_w.span().len * 2)); - var nt_name = w.UNICODE_STRING{ + var nt_name = windows.UNICODE_STRING{ .Length = path_len_bytes, .MaximumLength = path_len_bytes, .Buffer = @constCast(&sub_path_w.data), }; - var attr = w.OBJECT_ATTRIBUTES{ - .Length = @sizeOf(w.OBJECT_ATTRIBUTES), + var attr = windows.OBJECT_ATTRIBUTES{ + .Length = @sizeOf(windows.OBJECT_ATTRIBUTES), .RootDirectory = if (fs.path.isAbsoluteWindowsW(sub_path_w.span())) null else ctx.dir.fd, .Attributes = 0, .ObjectName = &nt_name, .SecurityDescriptor = null, .SecurityQualityOfService = null, }; - var io: w.IO_STATUS_BLOCK = undefined; - const rc = w.ntdll.NtCreateFile( + var io: windows.IO_STATUS_BLOCK = undefined; + const rc = windows.ntdll.NtCreateFile( &result.fd, - w.STANDARD_RIGHTS_READ | w.FILE_READ_ATTRIBUTES | w.FILE_READ_EA | w.SYNCHRONIZE | w.FILE_TRAVERSE, + windows.STANDARD_RIGHTS_READ | windows.FILE_READ_ATTRIBUTES | windows.FILE_READ_EA | windows.SYNCHRONIZE | windows.FILE_TRAVERSE, &attr, &io, null, - w.FILE_ATTRIBUTE_NORMAL, - w.FILE_SHARE_READ | w.FILE_SHARE_WRITE, - w.FILE_OPEN, + windows.FILE_ATTRIBUTE_NORMAL, + windows.FILE_SHARE_READ | windows.FILE_SHARE_WRITE, + windows.FILE_OPEN, // FILE_OPEN_REPARSE_POINT is the important thing here - w.FILE_OPEN_REPARSE_POINT | w.FILE_DIRECTORY_FILE | w.FILE_SYNCHRONOUS_IO_NONALERT | w.FILE_OPEN_FOR_BACKUP_INTENT, + windows.FILE_OPEN_REPARSE_POINT | windows.FILE_DIRECTORY_FILE | windows.FILE_SYNCHRONOUS_IO_NONALERT | windows.FILE_OPEN_FOR_BACKUP_INTENT, null, 0, ); switch (rc) { .SUCCESS => break :windows_symlink result, - else => return w.unexpectedStatus(rc), + else => return windows.unexpectedStatus(rc), } }, .linux => linux_symlink: { - const sub_path_c = try os.toPosixPath("symlink"); + const sub_path_c = try posix.toPosixPath("symlink"); // the O_NOFOLLOW | O_PATH combination can obtain a fd to a symlink // note that if O_DIRECTORY is set, then this will error with ENOTDIR - const flags: os.O = .{ + const flags: posix.O = .{ .NOFOLLOW = true, .PATH = true, .ACCMODE = .RDONLY, .CLOEXEC = true, }; - const fd = try os.openatZ(ctx.dir.fd, &sub_path_c, flags, 0); + const fd = try posix.openatZ(ctx.dir.fd, &sub_path_c, flags, 0); break :linux_symlink Dir{ .fd = fd }; }, else => unreachable, @@ -315,7 +315,7 @@ test "openDir" { } test "accessAbsolute" { - if (builtin.os.tag == .wasi) return error.SkipZigTest; + if (native_os == .wasi) return error.SkipZigTest; var tmp = tmpDir(.{}); defer tmp.cleanup(); @@ -333,7 +333,7 @@ test "accessAbsolute" { } test "openDirAbsolute" { - if (builtin.os.tag == .wasi) return error.SkipZigTest; + if (native_os == .wasi) return error.SkipZigTest; var tmp = tmpDir(.{}); defer tmp.cleanup(); @@ -361,14 +361,14 @@ test "openDirAbsolute" { } test "openDir cwd parent '..'" { - if (builtin.os.tag == .wasi) return error.SkipZigTest; + if (native_os == .wasi) return error.SkipZigTest; var dir = try fs.cwd().openDir("..", .{}); defer dir.close(); } test "openDir non-cwd parent '..'" { - switch (builtin.os.tag) { + switch (native_os) { .wasi, .netbsd, .openbsd => return error.SkipZigTest, else => {}, } @@ -392,7 +392,7 @@ test "openDir non-cwd parent '..'" { } test "readLinkAbsolute" { - if (builtin.os.tag == .wasi) return error.SkipZigTest; + if (native_os == .wasi) return error.SkipZigTest; var tmp = tmpDir(.{}); defer tmp.cleanup(); @@ -587,7 +587,7 @@ test "Dir.Iterator but dir is deleted during iteration" { try std.testing.expect(entry == null); // On Linux, we can opt-in to receiving a more specific error by calling `nextLinux` - if (builtin.os.tag == .linux) { + if (native_os == .linux) { try std.testing.expectError(error.DirNotFound, iterator.nextLinux()); } } @@ -744,7 +744,7 @@ test "directory operations on files" { test "file operations on directories" { // TODO: fix this test on FreeBSD. https://github.com/ziglang/zig/issues/1759 - if (builtin.os.tag == .freebsd) return error.SkipZigTest; + if (native_os == .freebsd) return error.SkipZigTest; try testWithAllSupportedPathTypes(struct { fn impl(ctx: *TestContext) !void { @@ -754,7 +754,7 @@ test "file operations on directories" { try testing.expectError(error.IsDir, ctx.dir.createFile(test_dir_name, .{})); try testing.expectError(error.IsDir, ctx.dir.deleteFile(test_dir_name)); - switch (builtin.os.tag) { + switch (native_os) { // no error when reading a directory. .dragonfly, .netbsd => {}, // Currently, WASI will return error.Unexpected (via ENOTCAPABLE) when attempting fd_read on a directory handle. @@ -895,7 +895,7 @@ test "Dir.rename directories" { test "Dir.rename directory onto empty dir" { // TODO: Fix on Windows, see https://github.com/ziglang/zig/issues/6364 - if (builtin.os.tag == .windows) return error.SkipZigTest; + if (native_os == .windows) return error.SkipZigTest; try testWithAllSupportedPathTypes(struct { fn impl(ctx: *TestContext) !void { @@ -916,7 +916,7 @@ test "Dir.rename directory onto empty dir" { test "Dir.rename directory onto non-empty dir" { // TODO: Fix on Windows, see https://github.com/ziglang/zig/issues/6364 - if (builtin.os.tag == .windows) return error.SkipZigTest; + if (native_os == .windows) return error.SkipZigTest; try testWithAllSupportedPathTypes(struct { fn impl(ctx: *TestContext) !void { @@ -942,7 +942,7 @@ test "Dir.rename directory onto non-empty dir" { test "Dir.rename file <-> dir" { // TODO: Fix on Windows, see https://github.com/ziglang/zig/issues/6364 - if (builtin.os.tag == .windows) return error.SkipZigTest; + if (native_os == .windows) return error.SkipZigTest; try testWithAllSupportedPathTypes(struct { fn impl(ctx: *TestContext) !void { @@ -979,7 +979,7 @@ test "rename" { } test "renameAbsolute" { - if (builtin.os.tag == .wasi) return error.SkipZigTest; + if (native_os == .wasi) return error.SkipZigTest; var tmp_dir = tmpDir(.{}); defer tmp_dir.cleanup(); @@ -1032,14 +1032,14 @@ test "renameAbsolute" { } test "openSelfExe" { - if (builtin.os.tag == .wasi) return error.SkipZigTest; + if (native_os == .wasi) return error.SkipZigTest; const self_exe_file = try std.fs.openSelfExe(.{}); self_exe_file.close(); } test "selfExePath" { - if (builtin.os.tag == .wasi) return error.SkipZigTest; + if (native_os == .wasi) return error.SkipZigTest; var buf: [fs.MAX_PATH_BYTES]u8 = undefined; const buf_self_exe_path = try std.fs.selfExePath(&buf); @@ -1120,7 +1120,7 @@ test "makePath, put some files in it, deleteTreeMinStackSize" { } test "makePath in a directory that no longer exists" { - if (builtin.os.tag == .windows) return error.SkipZigTest; // Windows returns FileBusy if attempting to remove an open dir + if (native_os == .windows) return error.SkipZigTest; // Windows returns FileBusy if attempting to remove an open dir var tmp = tmpDir(.{}); defer tmp.cleanup(); @@ -1182,7 +1182,7 @@ test "makepath relative walks" { try tmp.dir.makePath(relPath); // How .. is handled is different on Windows than non-Windows - switch (builtin.os.tag) { + switch (native_os) { .windows => { // On Windows, .. is resolved before passing the path to NtCreateFile, // meaning everything except `first/C` drops out. @@ -1248,12 +1248,12 @@ test "max file name component lengths" { var tmp = tmpDir(.{ .iterate = true }); defer tmp.cleanup(); - if (builtin.os.tag == .windows) { + if (native_os == .windows) { // U+FFFF is the character with the largest code point that is encoded as a single // UTF-16 code unit, so Windows allows for NAME_MAX of them. - const maxed_windows_filename = ("\u{FFFF}".*) ** std.os.windows.NAME_MAX; + const maxed_windows_filename = ("\u{FFFF}".*) ** windows.NAME_MAX; try testFilenameLimits(tmp.dir, &maxed_windows_filename); - } else if (builtin.os.tag == .wasi) { + } else if (native_os == .wasi) { // On WASI, the maxed filename depends on the host OS, so in order for this test to // work on any host, we need to use a length that will work for all platforms // (i.e. the minimum MAX_NAME_BYTES of all supported platforms). @@ -1274,7 +1274,7 @@ test "writev, readv" { var buf1: [line1.len]u8 = undefined; var buf2: [line2.len]u8 = undefined; - var write_vecs = [_]std.os.iovec_const{ + var write_vecs = [_]posix.iovec_const{ .{ .iov_base = line1, .iov_len = line1.len, @@ -1284,7 +1284,7 @@ test "writev, readv" { .iov_len = line2.len, }, }; - var read_vecs = [_]std.os.iovec{ + var read_vecs = [_]posix.iovec{ .{ .iov_base = &buf2, .iov_len = buf2.len, @@ -1316,7 +1316,7 @@ test "pwritev, preadv" { var buf1: [line1.len]u8 = undefined; var buf2: [line2.len]u8 = undefined; - var write_vecs = [_]std.os.iovec_const{ + var write_vecs = [_]posix.iovec_const{ .{ .iov_base = line1, .iov_len = line1.len, @@ -1326,7 +1326,7 @@ test "pwritev, preadv" { .iov_len = line2.len, }, }; - var read_vecs = [_]std.os.iovec{ + var read_vecs = [_]posix.iovec{ .{ .iov_base = &buf2, .iov_len = buf2.len, @@ -1376,7 +1376,7 @@ test "sendfile" { const line1 = "line1\n"; const line2 = "second line\n"; - var vecs = [_]std.os.iovec_const{ + var vecs = [_]posix.iovec_const{ .{ .iov_base = line1, .iov_len = line1.len, @@ -1399,7 +1399,7 @@ test "sendfile" { const header2 = "second header\n"; const trailer1 = "trailer1\n"; const trailer2 = "second trailer\n"; - var hdtr = [_]std.os.iovec_const{ + var hdtr = [_]posix.iovec_const{ .{ .iov_base = header1, .iov_len = header1.len, @@ -1510,7 +1510,7 @@ test "AtomicFile" { } test "open file with exclusive nonblocking lock twice" { - if (builtin.os.tag == .wasi) return error.SkipZigTest; + if (native_os == .wasi) return error.SkipZigTest; try testWithAllSupportedPathTypes(struct { fn impl(ctx: *TestContext) !void { @@ -1526,7 +1526,7 @@ test "open file with exclusive nonblocking lock twice" { } test "open file with shared and exclusive nonblocking lock" { - if (builtin.os.tag == .wasi) return error.SkipZigTest; + if (native_os == .wasi) return error.SkipZigTest; try testWithAllSupportedPathTypes(struct { fn impl(ctx: *TestContext) !void { @@ -1542,7 +1542,7 @@ test "open file with shared and exclusive nonblocking lock" { } test "open file with exclusive and shared nonblocking lock" { - if (builtin.os.tag == .wasi) return error.SkipZigTest; + if (native_os == .wasi) return error.SkipZigTest; try testWithAllSupportedPathTypes(struct { fn impl(ctx: *TestContext) !void { @@ -1601,7 +1601,7 @@ test "open file with exclusive lock twice, make sure second lock waits" { } test "open file with exclusive nonblocking lock twice (absolute paths)" { - if (builtin.os.tag == .wasi) return error.SkipZigTest; + if (native_os == .wasi) return error.SkipZigTest; var random_bytes: [12]u8 = undefined; std.crypto.random.bytes(&random_bytes); @@ -1634,7 +1634,7 @@ test "open file with exclusive nonblocking lock twice (absolute paths)" { } test "walker" { - if (builtin.os.tag == .wasi and builtin.link_libc) return error.SkipZigTest; + if (native_os == .wasi and builtin.link_libc) return error.SkipZigTest; var tmp = tmpDir(.{ .iterate = true }); defer tmp.cleanup(); @@ -1687,7 +1687,7 @@ test "walker" { } test "walker without fully iterating" { - if (builtin.os.tag == .wasi and builtin.link_libc) return error.SkipZigTest; + if (native_os == .wasi and builtin.link_libc) return error.SkipZigTest; var tmp = tmpDir(.{ .iterate = true }); defer tmp.cleanup(); @@ -1710,9 +1710,9 @@ test "walker without fully iterating" { } test "'.' and '..' in fs.Dir functions" { - if (builtin.os.tag == .wasi and builtin.link_libc) return error.SkipZigTest; + if (native_os == .wasi and builtin.link_libc) return error.SkipZigTest; - if (builtin.os.tag == .windows and builtin.cpu.arch == .aarch64) { + if (native_os == .windows and builtin.cpu.arch == .aarch64) { // https://github.com/ziglang/zig/issues/17134 return error.SkipZigTest; } @@ -1750,7 +1750,7 @@ test "'.' and '..' in fs.Dir functions" { } test "'.' and '..' in absolute functions" { - if (builtin.os.tag == .wasi) return error.SkipZigTest; + if (native_os == .wasi) return error.SkipZigTest; var tmp = tmpDir(.{}); defer tmp.cleanup(); @@ -1794,7 +1794,7 @@ test "'.' and '..' in absolute functions" { } test "chmod" { - if (builtin.os.tag == .windows or builtin.os.tag == .wasi) + if (native_os == .windows or native_os == .wasi) return error.SkipZigTest; var tmp = tmpDir(.{}); @@ -1816,7 +1816,7 @@ test "chmod" { } test "chown" { - if (builtin.os.tag == .windows or builtin.os.tag == .wasi) + if (native_os == .windows or native_os == .wasi) return error.SkipZigTest; var tmp = tmpDir(.{}); @@ -1849,7 +1849,7 @@ test "File.Metadata" { } test "File.Permissions" { - if (builtin.os.tag == .wasi) + if (native_os == .wasi) return error.SkipZigTest; var tmp = tmpDir(.{}); @@ -1875,7 +1875,7 @@ test "File.Permissions" { } test "File.PermissionsUnix" { - if (builtin.os.tag == .windows or builtin.os.tag == .wasi) + if (native_os == .windows or native_os == .wasi) return error.SkipZigTest; var tmp = tmpDir(.{}); @@ -1910,7 +1910,7 @@ test "File.PermissionsUnix" { } test "delete a read-only file on windows" { - if (builtin.os.tag != .windows) + if (native_os != .windows) return error.SkipZigTest; var tmp = testing.tmpDir(.{}); @@ -1941,7 +1941,7 @@ test "delete a read-only file on windows" { } test "delete a setAsCwd directory on Windows" { - if (builtin.os.tag != .windows) return error.SkipZigTest; + if (native_os != .windows) return error.SkipZigTest; var tmp = tmpDir(.{}); // Set tmp dir as current working directory. @@ -1956,7 +1956,7 @@ test "delete a setAsCwd directory on Windows" { } test "invalid UTF-8/WTF-8 paths" { - const expected_err = switch (builtin.os.tag) { + const expected_err = switch (native_os) { .wasi => error.InvalidUtf8, .windows => error.InvalidWtf8, else => return error.SkipZigTest, @@ -1993,13 +1993,13 @@ test "invalid UTF-8/WTF-8 paths" { try testing.expectError(expected_err, ctx.dir.symLink(invalid_path, invalid_path, .{})); try testing.expectError(expected_err, ctx.dir.symLinkZ(invalid_path, invalid_path, .{})); - if (builtin.os.tag == .wasi) { + if (native_os == .wasi) { try testing.expectError(expected_err, ctx.dir.symLinkWasi(invalid_path, invalid_path, .{})); } try testing.expectError(expected_err, ctx.dir.readLink(invalid_path, &[_]u8{})); try testing.expectError(expected_err, ctx.dir.readLinkZ(invalid_path, &[_]u8{})); - if (builtin.os.tag == .wasi) { + if (native_os == .wasi) { try testing.expectError(expected_err, ctx.dir.readLinkWasi(invalid_path, &[_]u8{})); } @@ -2023,7 +2023,7 @@ test "invalid UTF-8/WTF-8 paths" { try testing.expectError(expected_err, ctx.dir.statFile(invalid_path)); - if (builtin.os.tag != .wasi) { + if (native_os != .wasi) { try testing.expectError(expected_err, ctx.dir.realpath(invalid_path, &[_]u8{})); try testing.expectError(expected_err, ctx.dir.realpathZ(invalid_path, &[_]u8{})); try testing.expectError(expected_err, ctx.dir.realpathAlloc(testing.allocator, invalid_path)); @@ -2032,7 +2032,7 @@ test "invalid UTF-8/WTF-8 paths" { try testing.expectError(expected_err, fs.rename(ctx.dir, invalid_path, ctx.dir, invalid_path)); try testing.expectError(expected_err, fs.renameZ(ctx.dir, invalid_path, ctx.dir, invalid_path)); - if (builtin.os.tag != .wasi and ctx.path_type != .relative) { + if (native_os != .wasi and ctx.path_type != .relative) { try testing.expectError(expected_err, fs.updateFileAbsolute(invalid_path, invalid_path, .{})); try testing.expectError(expected_err, fs.copyFileAbsolute(invalid_path, invalid_path, .{})); try testing.expectError(expected_err, fs.makeDirAbsolute(invalid_path)); diff --git a/lib/std/fs/wasi.zig b/lib/std/fs/wasi.zig index 7ed7a75ea9..040dd4ca3e 100644 --- a/lib/std/fs/wasi.zig +++ b/lib/std/fs/wasi.zig @@ -1,6 +1,5 @@ const std = @import("std"); const builtin = @import("builtin"); -const os = std.os; const mem = std.mem; const math = std.math; const fs = std.fs; @@ -14,10 +13,10 @@ pub const Preopens = struct { // Indexed by file descriptor number. names: []const []const u8, - pub fn find(p: Preopens, name: []const u8) ?os.fd_t { + pub fn find(p: Preopens, name: []const u8) ?std.posix.fd_t { for (p.names, 0..) |elem_name, i| { if (mem.eql(u8, elem_name, name)) { - return @as(os.fd_t, @intCast(i)); + return @intCast(i); } } return null; diff --git a/lib/std/hash/benchmark.zig b/lib/std/hash/benchmark.zig index 35e96a655b..518b4ca99e 100644 --- a/lib/std/hash/benchmark.zig +++ b/lib/std/hash/benchmark.zig @@ -367,7 +367,7 @@ pub fn main() !void { i += 1; if (i == args.len) { usage(); - std.os.exit(1); + std.process.exit(1); } seed = try std.fmt.parseUnsigned(u32, args[i], 10); @@ -376,7 +376,7 @@ pub fn main() !void { i += 1; if (i == args.len) { usage(); - std.os.exit(1); + std.process.exit(1); } filter = args[i]; @@ -384,7 +384,7 @@ pub fn main() !void { i += 1; if (i == args.len) { usage(); - std.os.exit(1); + std.process.exit(1); } const c = try std.fmt.parseUnsigned(usize, args[i], 10); @@ -393,13 +393,13 @@ pub fn main() !void { i += 1; if (i == args.len) { usage(); - std.os.exit(1); + std.process.exit(1); } key_size = try std.fmt.parseUnsigned(usize, args[i], 10); if (key_size.? > block_size) { try stdout.print("key_size cannot exceed block size of {}\n", .{block_size}); - std.os.exit(1); + std.process.exit(1); } } else if (std.mem.eql(u8, args[i], "--iterative-only")) { test_iterative_only = true; @@ -410,7 +410,7 @@ pub fn main() !void { return; } else { usage(); - std.os.exit(1); + std.process.exit(1); } } diff --git a/lib/std/hash_map.zig b/lib/std/hash_map.zig index f44bf1435d..862d14f452 100644 --- a/lib/std/hash_map.zig +++ b/lib/std/hash_map.zig @@ -1559,9 +1559,9 @@ pub fn HashMapUnmanaged( assert(std.math.isPowerOfTwo(new_cap)); var map: Self = .{}; - defer map.deinit(allocator); - map.pointer_stability.lock(); try map.allocate(allocator, new_cap); + errdefer comptime unreachable; + map.pointer_stability.lock(); map.initMetadatas(); map.available = @truncate((new_cap * max_load_percentage) / 100); @@ -1581,6 +1581,7 @@ pub fn HashMapUnmanaged( self.size = 0; self.pointer_stability = .{ .state = .unlocked }; std.mem.swap(Self, self, &map); + map.deinit(allocator); } fn allocate(self: *Self, allocator: Allocator, new_capacity: Size) Allocator.Error!void { @@ -2266,3 +2267,8 @@ test "repeat fetchRemove" { try testing.expect(map.get(2) != null); try testing.expect(map.get(3) != null); } + +test "getOrPut allocation failure" { + var map: std.StringHashMapUnmanaged(void) = .{}; + try testing.expectError(error.OutOfMemory, map.getOrPut(std.testing.failing_allocator, "hello")); +} diff --git a/lib/std/heap.zig b/lib/std/heap.zig index e49b3c1e5c..9b99f7e1d9 100644 --- a/lib/std/heap.zig +++ b/lib/std/heap.zig @@ -4,9 +4,9 @@ const root = @import("root"); const assert = std.debug.assert; const testing = std.testing; const mem = std.mem; -const os = std.os; const c = std.c; const Allocator = std.mem.Allocator; +const windows = std.os.windows; pub const LoggingAllocator = @import("heap/logging_allocator.zig").LoggingAllocator; pub const loggingAllocator = @import("heap/logging_allocator.zig").loggingAllocator; @@ -263,7 +263,7 @@ pub const HeapAllocator = switch (builtin.os.tag) { .windows => struct { heap_handle: ?HeapHandle, - const HeapHandle = os.windows.HANDLE; + const HeapHandle = windows.HANDLE; pub fn init() HeapAllocator { return HeapAllocator{ @@ -284,7 +284,7 @@ pub const HeapAllocator = switch (builtin.os.tag) { pub fn deinit(self: *HeapAllocator) void { if (self.heap_handle) |heap_handle| { - os.windows.HeapDestroy(heap_handle); + windows.HeapDestroy(heap_handle); } } @@ -305,13 +305,13 @@ pub const HeapAllocator = switch (builtin.os.tag) { const amt = n + ptr_align - 1 + @sizeOf(usize); const optional_heap_handle = @atomicLoad(?HeapHandle, &self.heap_handle, .seq_cst); const heap_handle = optional_heap_handle orelse blk: { - const options = if (builtin.single_threaded) os.windows.HEAP_NO_SERIALIZE else 0; - const hh = os.windows.kernel32.HeapCreate(options, amt, 0) orelse return null; + const options = if (builtin.single_threaded) windows.HEAP_NO_SERIALIZE else 0; + const hh = windows.kernel32.HeapCreate(options, amt, 0) orelse return null; const other_hh = @cmpxchgStrong(?HeapHandle, &self.heap_handle, null, hh, .seq_cst, .seq_cst) orelse break :blk hh; - os.windows.HeapDestroy(hh); + windows.HeapDestroy(hh); break :blk other_hh.?; // can't be null because of the cmpxchg }; - const ptr = os.windows.kernel32.HeapAlloc(heap_handle, 0, amt) orelse return null; + const ptr = windows.kernel32.HeapAlloc(heap_handle, 0, amt) orelse return null; const root_addr = @intFromPtr(ptr); const aligned_addr = mem.alignForward(usize, root_addr, ptr_align); const buf = @as([*]u8, @ptrFromInt(aligned_addr))[0..n]; @@ -333,9 +333,9 @@ pub const HeapAllocator = switch (builtin.os.tag) { const root_addr = getRecordPtr(buf).*; const align_offset = @intFromPtr(buf.ptr) - root_addr; const amt = align_offset + new_size + @sizeOf(usize); - const new_ptr = os.windows.kernel32.HeapReAlloc( + const new_ptr = windows.kernel32.HeapReAlloc( self.heap_handle.?, - os.windows.HEAP_REALLOC_IN_PLACE_ONLY, + windows.HEAP_REALLOC_IN_PLACE_ONLY, @as(*anyopaque, @ptrFromInt(root_addr)), amt, ) orelse return false; @@ -353,7 +353,7 @@ pub const HeapAllocator = switch (builtin.os.tag) { _ = log2_buf_align; _ = return_address; const self: *HeapAllocator = @ptrCast(@alignCast(ctx)); - os.windows.HeapFree(self.heap_handle.?, 0, @as(*anyopaque, @ptrFromInt(getRecordPtr(buf).*))); + windows.HeapFree(self.heap_handle.?, 0, @as(*anyopaque, @ptrFromInt(getRecordPtr(buf).*))); } }, else => @compileError("Unsupported OS"), diff --git a/lib/std/heap/PageAllocator.zig b/lib/std/heap/PageAllocator.zig index 5f8c506f24..67cafe48d9 100644 --- a/lib/std/heap/PageAllocator.zig +++ b/lib/std/heap/PageAllocator.zig @@ -2,9 +2,11 @@ const std = @import("../std.zig"); const builtin = @import("builtin"); const Allocator = std.mem.Allocator; const mem = std.mem; -const os = std.os; const maxInt = std.math.maxInt; const assert = std.debug.assert; +const native_os = builtin.os.tag; +const windows = std.os.windows; +const posix = std.posix; pub const vtable = Allocator.VTable{ .alloc = alloc, @@ -19,22 +21,21 @@ fn alloc(_: *anyopaque, n: usize, log2_align: u8, ra: usize) ?[*]u8 { if (n > maxInt(usize) - (mem.page_size - 1)) return null; const aligned_len = mem.alignForward(usize, n, mem.page_size); - if (builtin.os.tag == .windows) { - const w = os.windows; - const addr = w.VirtualAlloc( + if (native_os == .windows) { + const addr = windows.VirtualAlloc( null, aligned_len, - w.MEM_COMMIT | w.MEM_RESERVE, - w.PAGE_READWRITE, + windows.MEM_COMMIT | windows.MEM_RESERVE, + windows.PAGE_READWRITE, ) catch return null; return @ptrCast(addr); } const hint = @atomicLoad(@TypeOf(std.heap.next_mmap_addr_hint), &std.heap.next_mmap_addr_hint, .unordered); - const slice = os.mmap( + const slice = posix.mmap( hint, aligned_len, - os.PROT.READ | os.PROT.WRITE, + posix.PROT.READ | posix.PROT.WRITE, .{ .TYPE = .PRIVATE, .ANONYMOUS = true }, -1, 0, @@ -56,8 +57,7 @@ fn resize( _ = return_address; const new_size_aligned = mem.alignForward(usize, new_size, mem.page_size); - if (builtin.os.tag == .windows) { - const w = os.windows; + if (native_os == .windows) { if (new_size <= buf_unaligned.len) { const base_addr = @intFromPtr(buf_unaligned.ptr); const old_addr_end = base_addr + buf_unaligned.len; @@ -65,10 +65,10 @@ fn resize( if (old_addr_end > new_addr_end) { // For shrinking that is not releasing, we will only // decommit the pages not needed anymore. - w.VirtualFree( + windows.VirtualFree( @as(*anyopaque, @ptrFromInt(new_addr_end)), old_addr_end - new_addr_end, - w.MEM_DECOMMIT, + windows.MEM_DECOMMIT, ); } return true; @@ -87,7 +87,7 @@ fn resize( if (new_size_aligned < buf_aligned_len) { const ptr = buf_unaligned.ptr + new_size_aligned; // TODO: if the next_mmap_addr_hint is within the unmapped range, update it - os.munmap(@alignCast(ptr[0 .. buf_aligned_len - new_size_aligned])); + posix.munmap(@alignCast(ptr[0 .. buf_aligned_len - new_size_aligned])); return true; } @@ -100,10 +100,10 @@ fn free(_: *anyopaque, slice: []u8, log2_buf_align: u8, return_address: usize) v _ = log2_buf_align; _ = return_address; - if (builtin.os.tag == .windows) { - os.windows.VirtualFree(slice.ptr, 0, os.windows.MEM_RELEASE); + if (native_os == .windows) { + windows.VirtualFree(slice.ptr, 0, windows.MEM_RELEASE); } else { const buf_aligned_len = mem.alignForward(usize, slice.len, mem.page_size); - os.munmap(@alignCast(slice.ptr[0..buf_aligned_len])); + posix.munmap(@alignCast(slice.ptr[0..buf_aligned_len])); } } diff --git a/lib/std/http/Client.zig b/lib/std/http/Client.zig index 339afdb96e..0e70b839b4 100644 --- a/lib/std/http/Client.zig +++ b/lib/std/http/Client.zig @@ -220,7 +220,7 @@ pub const Connection = struct { pub const Protocol = enum { plain, tls }; - pub fn readvDirectTls(conn: *Connection, buffers: []std.os.iovec) ReadError!usize { + pub fn readvDirectTls(conn: *Connection, buffers: []std.posix.iovec) ReadError!usize { return conn.tls_client.readv(conn.stream, buffers) catch |err| { // https://github.com/ziglang/zig/issues/2473 if (mem.startsWith(u8, @errorName(err), "TlsAlert")) return error.TlsAlert; @@ -234,7 +234,7 @@ pub const Connection = struct { }; } - pub fn readvDirect(conn: *Connection, buffers: []std.os.iovec) ReadError!usize { + pub fn readvDirect(conn: *Connection, buffers: []std.posix.iovec) ReadError!usize { if (conn.protocol == .tls) { if (disable_tls) unreachable; @@ -252,7 +252,7 @@ pub const Connection = struct { pub fn fill(conn: *Connection) ReadError!void { if (conn.read_end != conn.read_start) return; - var iovecs = [1]std.os.iovec{ + var iovecs = [1]std.posix.iovec{ .{ .iov_base = &conn.read_buf, .iov_len = conn.read_buf.len }, }; const nread = try conn.readvDirect(&iovecs); @@ -288,7 +288,7 @@ pub const Connection = struct { return available_read; } - var iovecs = [2]std.os.iovec{ + var iovecs = [2]std.posix.iovec{ .{ .iov_base = buffer.ptr, .iov_len = buffer.len }, .{ .iov_base = &conn.read_buf, .iov_len = conn.read_buf.len }, }; @@ -1387,7 +1387,7 @@ pub fn connectTcp(client: *Client, host: []const u8, port: u16, protocol: Connec return &conn.data; } -pub const ConnectUnixError = Allocator.Error || std.os.SocketError || error{NameTooLong} || std.os.ConnectError; +pub const ConnectUnixError = Allocator.Error || std.posix.SocketError || error{NameTooLong} || std.posix.ConnectError; /// Connect to `path` as a unix domain socket. This will reuse a connection if one is already open. /// diff --git a/lib/std/io.zig b/lib/std/io.zig index df220e2489..58724c582e 100644 --- a/lib/std/io.zig +++ b/lib/std/io.zig @@ -2,74 +2,76 @@ const std = @import("std.zig"); const builtin = @import("builtin"); const root = @import("root"); const c = std.c; +const is_windows = builtin.os.tag == .windows; +const windows = std.os.windows; +const posix = std.posix; const math = std.math; const assert = std.debug.assert; -const os = std.os; const fs = std.fs; const mem = std.mem; const meta = std.meta; const File = std.fs.File; const Allocator = std.mem.Allocator; -fn getStdOutHandle() os.fd_t { - if (builtin.os.tag == .windows) { +fn getStdOutHandle() posix.fd_t { + if (is_windows) { if (builtin.zig_backend == .stage2_aarch64) { // TODO: this is just a temporary workaround until we advance aarch64 backend further along. - return os.windows.GetStdHandle(os.windows.STD_OUTPUT_HANDLE) catch os.windows.INVALID_HANDLE_VALUE; + return windows.GetStdHandle(windows.STD_OUTPUT_HANDLE) catch windows.INVALID_HANDLE_VALUE; } - return os.windows.peb().ProcessParameters.hStdOutput; + return windows.peb().ProcessParameters.hStdOutput; } if (@hasDecl(root, "os") and @hasDecl(root.os, "io") and @hasDecl(root.os.io, "getStdOutHandle")) { return root.os.io.getStdOutHandle(); } - return os.STDOUT_FILENO; + return posix.STDOUT_FILENO; } pub fn getStdOut() File { - return File{ .handle = getStdOutHandle() }; + return .{ .handle = getStdOutHandle() }; } -fn getStdErrHandle() os.fd_t { - if (builtin.os.tag == .windows) { +fn getStdErrHandle() posix.fd_t { + if (is_windows) { if (builtin.zig_backend == .stage2_aarch64) { // TODO: this is just a temporary workaround until we advance aarch64 backend further along. - return os.windows.GetStdHandle(os.windows.STD_ERROR_HANDLE) catch os.windows.INVALID_HANDLE_VALUE; + return windows.GetStdHandle(windows.STD_ERROR_HANDLE) catch windows.INVALID_HANDLE_VALUE; } - return os.windows.peb().ProcessParameters.hStdError; + return windows.peb().ProcessParameters.hStdError; } if (@hasDecl(root, "os") and @hasDecl(root.os, "io") and @hasDecl(root.os.io, "getStdErrHandle")) { return root.os.io.getStdErrHandle(); } - return os.STDERR_FILENO; + return posix.STDERR_FILENO; } pub fn getStdErr() File { - return File{ .handle = getStdErrHandle() }; + return .{ .handle = getStdErrHandle() }; } -fn getStdInHandle() os.fd_t { - if (builtin.os.tag == .windows) { +fn getStdInHandle() posix.fd_t { + if (is_windows) { if (builtin.zig_backend == .stage2_aarch64) { // TODO: this is just a temporary workaround until we advance aarch64 backend further along. - return os.windows.GetStdHandle(os.windows.STD_INPUT_HANDLE) catch os.windows.INVALID_HANDLE_VALUE; + return windows.GetStdHandle(windows.STD_INPUT_HANDLE) catch windows.INVALID_HANDLE_VALUE; } - return os.windows.peb().ProcessParameters.hStdInput; + return windows.peb().ProcessParameters.hStdInput; } if (@hasDecl(root, "os") and @hasDecl(root.os, "io") and @hasDecl(root.os.io, "getStdInHandle")) { return root.os.io.getStdInHandle(); } - return os.STDIN_FILENO; + return posix.STDIN_FILENO; } pub fn getStdIn() File { - return File{ .handle = getStdInHandle() }; + return .{ .handle = getStdInHandle() }; } pub fn GenericReader( @@ -408,9 +410,6 @@ pub const BufferedAtomicFile = @import("io/buffered_atomic_file.zig").BufferedAt pub const StreamSource = @import("io/stream_source.zig").StreamSource; -pub const BufferedTee = @import("io/buffered_tee.zig").BufferedTee; -pub const bufferedTee = @import("io/buffered_tee.zig").bufferedTee; - pub const tty = @import("io/tty.zig"); /// A Writer that doesn't write to anything. @@ -434,10 +433,10 @@ pub fn poll( const enum_fields = @typeInfo(StreamEnum).Enum.fields; var result: Poller(StreamEnum) = undefined; - if (builtin.os.tag == .windows) result.windows = .{ + if (is_windows) result.windows = .{ .first_read_done = false, - .overlapped = [1]os.windows.OVERLAPPED{ - mem.zeroes(os.windows.OVERLAPPED), + .overlapped = [1]windows.OVERLAPPED{ + mem.zeroes(windows.OVERLAPPED), } ** enum_fields.len, .active = .{ .count = 0, @@ -453,12 +452,12 @@ pub fn poll( .head = 0, .count = 0, }; - if (builtin.os.tag == .windows) { + if (is_windows) { result.windows.active.handles_buf[i] = @field(files, enum_fields[i].name).handle; } else { result.poll_fds[i] = .{ .fd = @field(files, enum_fields[i].name).handle, - .events = os.POLL.IN, + .events = posix.POLL.IN, .revents = undefined, }; } @@ -471,16 +470,16 @@ pub const PollFifo = std.fifo.LinearFifo(u8, .Dynamic); pub fn Poller(comptime StreamEnum: type) type { return struct { const enum_fields = @typeInfo(StreamEnum).Enum.fields; - const PollFd = if (builtin.os.tag == .windows) void else std.os.pollfd; + const PollFd = if (is_windows) void else posix.pollfd; fifos: [enum_fields.len]PollFifo, poll_fds: [enum_fields.len]PollFd, - windows: if (builtin.os.tag == .windows) struct { + windows: if (is_windows) struct { first_read_done: bool, - overlapped: [enum_fields.len]os.windows.OVERLAPPED, + overlapped: [enum_fields.len]windows.OVERLAPPED, active: struct { count: math.IntFittingRange(0, enum_fields.len), - handles_buf: [enum_fields.len]os.windows.HANDLE, + handles_buf: [enum_fields.len]windows.HANDLE, stream_map: [enum_fields.len]StreamEnum, pub fn removeAt(self: *@This(), index: u32) void { @@ -497,10 +496,10 @@ pub fn Poller(comptime StreamEnum: type) type { const Self = @This(); pub fn deinit(self: *Self) void { - if (builtin.os.tag == .windows) { + if (is_windows) { // cancel any pending IO to prevent clobbering OVERLAPPED value for (self.windows.active.handles_buf[0..self.windows.active.count]) |h| { - _ = os.windows.kernel32.CancelIo(h); + _ = windows.kernel32.CancelIo(h); } } inline for (&self.fifos) |*q| q.deinit(); @@ -508,7 +507,7 @@ pub fn Poller(comptime StreamEnum: type) type { } pub fn poll(self: *Self) !bool { - if (builtin.os.tag == .windows) { + if (is_windows) { return pollWindows(self, null); } else { return pollPosix(self, null); @@ -516,7 +515,7 @@ pub fn Poller(comptime StreamEnum: type) type { } pub fn pollTimeout(self: *Self, nanoseconds: u64) !bool { - if (builtin.os.tag == .windows) { + if (is_windows) { return pollWindows(self, nanoseconds); } else { return pollPosix(self, nanoseconds); @@ -554,39 +553,39 @@ pub fn Poller(comptime StreamEnum: type) type { while (true) { if (self.windows.active.count == 0) return false; - const status = os.windows.kernel32.WaitForMultipleObjects( + const status = windows.kernel32.WaitForMultipleObjects( self.windows.active.count, &self.windows.active.handles_buf, 0, if (nanoseconds) |ns| - @min(std.math.cast(u32, ns / std.time.ns_per_ms) orelse (os.windows.INFINITE - 1), os.windows.INFINITE - 1) + @min(std.math.cast(u32, ns / std.time.ns_per_ms) orelse (windows.INFINITE - 1), windows.INFINITE - 1) else - os.windows.INFINITE, + windows.INFINITE, ); - if (status == os.windows.WAIT_FAILED) - return os.windows.unexpectedError(os.windows.kernel32.GetLastError()); - if (status == os.windows.WAIT_TIMEOUT) + if (status == windows.WAIT_FAILED) + return windows.unexpectedError(windows.kernel32.GetLastError()); + if (status == windows.WAIT_TIMEOUT) return true; - if (status < os.windows.WAIT_OBJECT_0 or status > os.windows.WAIT_OBJECT_0 + enum_fields.len - 1) + if (status < windows.WAIT_OBJECT_0 or status > windows.WAIT_OBJECT_0 + enum_fields.len - 1) unreachable; - const active_idx = status - os.windows.WAIT_OBJECT_0; + const active_idx = status - windows.WAIT_OBJECT_0; const handle = self.windows.active.handles_buf[active_idx]; const stream_idx = @intFromEnum(self.windows.active.stream_map[active_idx]); var read_bytes: u32 = undefined; - if (0 == os.windows.kernel32.GetOverlappedResult( + if (0 == windows.kernel32.GetOverlappedResult( handle, &self.windows.overlapped[stream_idx], &read_bytes, 0, - )) switch (os.windows.kernel32.GetLastError()) { + )) switch (windows.kernel32.GetLastError()) { .BROKEN_PIPE => { self.windows.active.removeAt(active_idx); continue; }, - else => |err| return os.windows.unexpectedError(err), + else => |err| return windows.unexpectedError(err), }; self.fifos[stream_idx].update(read_bytes); @@ -611,9 +610,9 @@ pub fn Poller(comptime StreamEnum: type) type { // allocate grows exponentially. const bump_amt = 512; - const err_mask = os.POLL.ERR | os.POLL.NVAL | os.POLL.HUP; + const err_mask = posix.POLL.ERR | posix.POLL.NVAL | posix.POLL.HUP; - const events_len = try os.poll(&self.poll_fds, if (nanoseconds) |ns| + const events_len = try posix.poll(&self.poll_fds, if (nanoseconds) |ns| std.math.cast(i32, ns / std.time.ns_per_ms) orelse std.math.maxInt(i32) else -1); @@ -629,9 +628,9 @@ pub fn Poller(comptime StreamEnum: type) type { // conditions. // It's still possible to read after a POLL.HUP is received, // always check if there's some data waiting to be read first. - if (poll_fd.revents & os.POLL.IN != 0) { + if (poll_fd.revents & posix.POLL.IN != 0) { const buf = try q.writableWithSize(bump_amt); - const amt = try os.read(poll_fd.fd, buf); + const amt = try posix.read(poll_fd.fd, buf); q.update(amt); if (amt == 0) { // Remove the fd when the EOF condition is met. @@ -652,19 +651,19 @@ pub fn Poller(comptime StreamEnum: type) type { } fn windowsAsyncRead( - handle: os.windows.HANDLE, - overlapped: *os.windows.OVERLAPPED, + handle: windows.HANDLE, + overlapped: *windows.OVERLAPPED, fifo: *PollFifo, bump_amt: usize, ) !enum { pending, closed } { while (true) { const buf = try fifo.writableWithSize(bump_amt); var read_bytes: u32 = undefined; - const read_result = os.windows.kernel32.ReadFile(handle, buf.ptr, math.cast(u32, buf.len) orelse math.maxInt(u32), &read_bytes, overlapped); - if (read_result == 0) return switch (os.windows.kernel32.GetLastError()) { + const read_result = windows.kernel32.ReadFile(handle, buf.ptr, math.cast(u32, buf.len) orelse math.maxInt(u32), &read_bytes, overlapped); + if (read_result == 0) return switch (windows.kernel32.GetLastError()) { .IO_PENDING => .pending, .BROKEN_PIPE => .closed, - else => |err| os.windows.unexpectedError(err), + else => |err| windows.unexpectedError(err), }; fifo.update(read_bytes); } @@ -707,5 +706,4 @@ test { _ = @import("io/seekable_stream.zig"); _ = @import("io/stream_source.zig"); _ = @import("io/test.zig"); - _ = @import("io/buffered_tee.zig"); } diff --git a/lib/std/io/buffered_tee.zig b/lib/std/io/buffered_tee.zig deleted file mode 100644 index d5748c3a52..0000000000 --- a/lib/std/io/buffered_tee.zig +++ /dev/null @@ -1,379 +0,0 @@ -const std = @import("std"); -const io = std.io; -const assert = std.debug.assert; -const testing = std.testing; - -/// BufferedTee provides reader interface to the consumer. Data read by consumer -/// is also written to the output. Output is hold lookahead_size bytes behind -/// consumer. Allowing consumer to put back some bytes to be read again. On flush -/// all consumed bytes are flushed to the output. -/// -/// input -> tee -> consumer -/// | -/// output -/// -/// input - underlying unbuffered reader -/// output - writer, receives data read by consumer -/// consumer - uses provided reader interface -/// -/// If lookahead_size is zero output always has same bytes as consumer. -/// -pub fn BufferedTee( - comptime buffer_size: usize, // internal buffer size in bytes - comptime lookahead_size: usize, // lookahead, number of bytes to hold output behind consumer - comptime InputReaderType: type, - comptime OutputWriterType: type, -) type { - comptime assert(buffer_size > lookahead_size); - - return struct { - input: InputReaderType, - output: OutputWriterType, - - buf: [buffer_size]u8 = undefined, // internal buffer - tail: usize = 0, // buffer is filled up to this position with bytes from input - rp: usize = 0, // reader pointer; consumer has read up to this position - wp: usize = 0, // writer pointer; data is sent to the output up to this position - - pub const Error = InputReaderType.Error || OutputWriterType.Error; - pub const Reader = io.Reader(*Self, Error, read); - - const Self = @This(); - - pub fn read(self: *Self, dest: []u8) Error!usize { - var dest_index: usize = 0; - - while (dest_index < dest.len) { - const written = @min(dest.len - dest_index, self.tail - self.rp); - if (written == 0) { - try self.preserveLookahead(); - // fill upper part of the buf - const n = try self.input.read(self.buf[self.tail..]); - if (n == 0) { - // reading from the unbuffered stream returned nothing - // so we have nothing left to read. - return dest_index; - } - self.tail += n; - } else { - @memcpy(dest[dest_index..][0..written], self.buf[self.rp..][0..written]); - self.rp += written; - dest_index += written; - try self.flush_(lookahead_size); - } - } - return dest.len; - } - - /// Move lookahead_size bytes to the buffer start. - fn preserveLookahead(self: *Self) !void { - assert(self.tail == self.rp); - if (lookahead_size == 0) { - // Flush is called on each read so wp must follow rp when lookahead_size == 0. - assert(self.wp == self.rp); - // Nothing to preserve rewind pointer to the buffer start - self.rp = 0; - self.wp = 0; - self.tail = 0; - return; - } - if (self.tail <= lookahead_size) { - // There is still palce in the buffer, append to buffer from tail position. - return; - } - try self.flush_(lookahead_size); - const head = self.tail - lookahead_size; - // Preserve head..tail at the start of the buffer. - std.mem.copyForwards(u8, self.buf[0..lookahead_size], self.buf[head..self.tail]); - self.wp -= head; - assert(self.wp <= lookahead_size); - self.rp = lookahead_size; - self.tail = lookahead_size; - } - - /// Flush to the output all but lookahead size bytes. - fn flush_(self: *Self, lookahead: usize) !void { - if (self.rp <= self.wp + lookahead) return; - const new_wp = self.rp - lookahead; - try self.output.writeAll(self.buf[self.wp..new_wp]); - self.wp = new_wp; - } - - /// Flush to the output all consumed bytes. - pub fn flush(self: *Self) !void { - try self.flush_(0); - } - - /// Put back some bytes to be consumed again. Usefull when we overshoot - /// reading and want to return that overshoot bytes. Can return maximum - /// of lookahead_size number of bytes. - pub fn putBack(self: *Self, n: usize) void { - assert(n <= lookahead_size and n <= self.rp); - self.rp -= n; - } - - pub fn reader(self: *Self) Reader { - return .{ .context = self }; - } - }; -} - -pub fn bufferedTee( - comptime buffer_size: usize, - comptime lookahead_size: usize, - input: anytype, - output: anytype, -) BufferedTee( - buffer_size, - lookahead_size, - @TypeOf(input), - @TypeOf(output), -) { - return .{ .input = input, .output = output }; -} - -// Running test from std.io.BufferedReader on BufferedTee -// It should act as BufferedReader for consumer. - -fn BufferedReader(comptime buffer_size: usize, comptime ReaderType: type) type { - return BufferedTee(buffer_size, 0, ReaderType, @TypeOf(io.null_writer)); -} - -fn bufferedReader(reader: anytype) BufferedReader(4096, @TypeOf(reader)) { - return .{ - .input = reader, - .output = io.null_writer, - }; -} - -test "OneByte" { - const OneByteReadReader = struct { - str: []const u8, - curr: usize, - - const Error = error{NoError}; - const Self = @This(); - const Reader = io.Reader(*Self, Error, read); - - fn init(str: []const u8) Self { - return Self{ - .str = str, - .curr = 0, - }; - } - - fn read(self: *Self, dest: []u8) Error!usize { - if (self.str.len <= self.curr or dest.len == 0) - return 0; - - dest[0] = self.str[self.curr]; - self.curr += 1; - return 1; - } - - fn reader(self: *Self) Reader { - return .{ .context = self }; - } - }; - - const str = "This is a test"; - var one_byte_stream = OneByteReadReader.init(str); - var buf_reader = bufferedReader(one_byte_stream.reader()); - const stream = buf_reader.reader(); - - const res = try stream.readAllAlloc(testing.allocator, str.len + 1); - defer testing.allocator.free(res); - try testing.expectEqualSlices(u8, str, res); -} - -test "Block" { - const BlockReader = struct { - block: []const u8, - reads_allowed: usize, - curr_read: usize, - - const Error = error{NoError}; - const Self = @This(); - const Reader = io.Reader(*Self, Error, read); - - fn init(block: []const u8, reads_allowed: usize) Self { - return Self{ - .block = block, - .reads_allowed = reads_allowed, - .curr_read = 0, - }; - } - - fn read(self: *Self, dest: []u8) Error!usize { - if (self.curr_read >= self.reads_allowed) return 0; - @memcpy(dest[0..self.block.len], self.block); - - self.curr_read += 1; - return self.block.len; - } - - fn reader(self: *Self) Reader { - return .{ .context = self }; - } - }; - - const block = "0123"; - - // len out == block - { - var test_buf_reader: BufferedReader(4, BlockReader) = .{ - .input = BlockReader.init(block, 2), - .output = io.null_writer, - }; - var out_buf: [4]u8 = undefined; - _ = try test_buf_reader.read(&out_buf); - try testing.expectEqualSlices(u8, &out_buf, block); - _ = try test_buf_reader.read(&out_buf); - try testing.expectEqualSlices(u8, &out_buf, block); - try testing.expectEqual(try test_buf_reader.read(&out_buf), 0); - } - - // len out < block - { - var test_buf_reader: BufferedReader(4, BlockReader) = .{ - .input = BlockReader.init(block, 2), - .output = io.null_writer, - }; - var out_buf: [3]u8 = undefined; - _ = try test_buf_reader.read(&out_buf); - try testing.expectEqualSlices(u8, &out_buf, "012"); - _ = try test_buf_reader.read(&out_buf); - try testing.expectEqualSlices(u8, &out_buf, "301"); - const n = try test_buf_reader.read(&out_buf); - try testing.expectEqualSlices(u8, out_buf[0..n], "23"); - try testing.expectEqual(try test_buf_reader.read(&out_buf), 0); - } - - // len out > block - { - var test_buf_reader: BufferedReader(4, BlockReader) = .{ - .input = BlockReader.init(block, 2), - .output = io.null_writer, - }; - var out_buf: [5]u8 = undefined; - _ = try test_buf_reader.read(&out_buf); - try testing.expectEqualSlices(u8, &out_buf, "01230"); - const n = try test_buf_reader.read(&out_buf); - try testing.expectEqualSlices(u8, out_buf[0..n], "123"); - try testing.expectEqual(try test_buf_reader.read(&out_buf), 0); - } - - // len out == 0 - { - var test_buf_reader: BufferedReader(4, BlockReader) = .{ - .input = BlockReader.init(block, 2), - .output = io.null_writer, - }; - var out_buf: [0]u8 = undefined; - _ = try test_buf_reader.read(&out_buf); - try testing.expectEqualSlices(u8, &out_buf, ""); - } - - // len bufreader buf > block - { - var test_buf_reader: BufferedReader(5, BlockReader) = .{ - .input = BlockReader.init(block, 2), - .output = io.null_writer, - }; - var out_buf: [4]u8 = undefined; - _ = try test_buf_reader.read(&out_buf); - try testing.expectEqualSlices(u8, &out_buf, block); - _ = try test_buf_reader.read(&out_buf); - try testing.expectEqualSlices(u8, &out_buf, block); - try testing.expectEqual(try test_buf_reader.read(&out_buf), 0); - } -} - -test "with zero lookahead" { - // output has same bytes as consumer - const data = [_]u8{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } ** 12; - var in = io.fixedBufferStream(&data); - var out = std.ArrayList(u8).init(testing.allocator); - defer out.deinit(); - - var bt = bufferedTee(8, 0, in.reader(), out.writer()); - - var buf: [16]u8 = undefined; - var read_len: usize = 0; - for (0..buf.len) |i| { - const n = try bt.read(buf[0..i]); - try testing.expectEqual(i, n); - read_len += i; - try testing.expectEqual(read_len, out.items.len); - } -} - -test "with lookahead" { - // output is lookahead bytes behind consumer - inline for (1..8) |lookahead| { - const data = [_]u8{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } ** 12; - var in = io.fixedBufferStream(&data); - var out = std.ArrayList(u8).init(testing.allocator); - defer out.deinit(); - - var bt = bufferedTee(8, lookahead, in.reader(), out.writer()); - var buf: [16]u8 = undefined; - - var read_len: usize = 0; - for (1..buf.len) |i| { - const n = try bt.read(buf[0..i]); - try testing.expectEqual(i, n); - read_len += i; - const out_len = if (read_len < lookahead) 0 else read_len - lookahead; - try testing.expectEqual(out_len, out.items.len); - } - try testing.expectEqual(read_len, out.items.len + lookahead); - try bt.flush(); - try testing.expectEqual(read_len, out.items.len); - } -} - -test "internal state" { - const data = [_]u8{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } ** 2; - var in = io.fixedBufferStream(&data); - var out = std.ArrayList(u8).init(testing.allocator); - defer out.deinit(); - - var bt = bufferedTee(8, 4, in.reader(), out.writer()); - - var buf: [16]u8 = undefined; - var n = try bt.read(buf[0..3]); - try testing.expectEqual(3, n); - try testing.expectEqualSlices(u8, data[0..3], buf[0..n]); - try testing.expectEqual(8, bt.tail); - try testing.expectEqual(3, bt.rp); - try testing.expectEqual(0, out.items.len); - - n = try bt.read(buf[0..6]); - try testing.expectEqual(6, n); - try testing.expectEqualSlices(u8, data[3..9], buf[0..n]); - try testing.expectEqual(8, bt.tail); - try testing.expectEqual(5, bt.rp); - try testing.expectEqualSlices(u8, data[4..12], &bt.buf); - try testing.expectEqual(5, out.items.len); - - n = try bt.read(buf[0..9]); - try testing.expectEqual(9, n); - try testing.expectEqualSlices(u8, data[9..18], buf[0..n]); - try testing.expectEqual(8, bt.tail); - try testing.expectEqual(6, bt.rp); - try testing.expectEqualSlices(u8, data[12..20], &bt.buf); - try testing.expectEqual(14, out.items.len); - - try bt.flush(); - try testing.expectEqual(18, out.items.len); - - bt.putBack(4); - n = try bt.read(buf[0..4]); - try testing.expectEqual(4, n); - try testing.expectEqualSlices(u8, data[14..18], buf[0..n]); - - try testing.expectEqual(18, out.items.len); - try bt.flush(); - try testing.expectEqual(18, out.items.len); -} diff --git a/lib/std/io/c_writer.zig b/lib/std/io/c_writer.zig index ee87a28dc6..cbe4e7834d 100644 --- a/lib/std/io/c_writer.zig +++ b/lib/std/io/c_writer.zig @@ -2,7 +2,6 @@ const std = @import("../std.zig"); const builtin = @import("builtin"); const io = std.io; const testing = std.testing; -const os = std.os; pub const CWriter = io.Writer(*std.c.FILE, std.fs.File.WriteError, cWriterWrite); @@ -13,7 +12,7 @@ pub fn cWriter(c_file: *std.c.FILE) CWriter { fn cWriterWrite(c_file: *std.c.FILE, bytes: []const u8) std.fs.File.WriteError!usize { const amt_written = std.c.fwrite(bytes.ptr, 1, bytes.len, c_file); if (amt_written >= 0) return amt_written; - switch (@as(os.E, @enumFromInt(std.c._errno().*))) { + switch (@as(std.c.E, @enumFromInt(std.c._errno().*))) { .SUCCESS => unreachable, .INVAL => unreachable, .FAULT => unreachable, @@ -26,11 +25,11 @@ fn cWriterWrite(c_file: *std.c.FILE, bytes: []const u8) std.fs.File.WriteError!u .NOSPC => return error.NoSpaceLeft, .PERM => return error.AccessDenied, .PIPE => return error.BrokenPipe, - else => |err| return os.unexpectedErrno(err), + else => |err| return std.posix.unexpectedErrno(err), } } -test "C Writer" { +test cWriter { if (!builtin.link_libc or builtin.os.tag == .wasi) return error.SkipZigTest; const filename = "tmp_io_test_file.txt"; diff --git a/lib/std/math/frexp.zig b/lib/std/math/frexp.zig index f295b959cb..97b578db98 100644 --- a/lib/std/math/frexp.zig +++ b/lib/std/math/frexp.zig @@ -1,13 +1,8 @@ -// Ported from musl, which is MIT licensed: -// https://git.musl-libc.org/cgit/musl/tree/COPYRIGHT -// -// https://git.musl-libc.org/cgit/musl/tree/src/math/frexpl.c -// https://git.musl-libc.org/cgit/musl/tree/src/math/frexpf.c -// https://git.musl-libc.org/cgit/musl/tree/src/math/frexp.c - const std = @import("../std.zig"); const math = std.math; const expect = std.testing.expect; +const expectEqual = std.testing.expectEqual; +const expectApproxEqAbs = std.testing.expectApproxEqAbs; pub fn Frexp(comptime T: type) type { return struct { @@ -24,228 +19,210 @@ pub fn Frexp(comptime T: type) type { /// - frexp(+-inf) = +-inf, 0 /// - frexp(nan) = nan, undefined pub fn frexp(x: anytype) Frexp(@TypeOf(x)) { - const T = @TypeOf(x); - return switch (T) { - f32 => frexp32(x), - f64 => frexp64(x), - f128 => frexp128(x), - else => @compileError("frexp not implemented for " ++ @typeName(T)), - }; -} - -// TODO: unify all these implementations using generics - -fn frexp32(x: f32) Frexp(f32) { - var result: Frexp(f32) = undefined; - - var y = @as(u32, @bitCast(x)); - const e = @as(i32, @intCast(y >> 23)) & 0xFF; - - if (e == 0) { - if (x != 0) { - // subnormal - result = frexp32(x * 0x1.0p64); - result.exponent -= 64; - } else { - // frexp(+-0) = (+-0, 0) - result.significand = x; - result.exponent = 0; - } - return result; - } else if (e == 0xFF) { - // frexp(nan) = (nan, undefined) - result.significand = x; - result.exponent = undefined; - - // frexp(+-inf) = (+-inf, 0) - if (math.isInf(x)) { - result.exponent = 0; - } - - return result; + const T: type = @TypeOf(x); + + const bits: comptime_int = @typeInfo(T).Float.bits; + const Int: type = std.meta.Int(.unsigned, bits); + + const exp_bits: comptime_int = math.floatExponentBits(T); + const mant_bits: comptime_int = math.floatMantissaBits(T); + const frac_bits: comptime_int = math.floatFractionalBits(T); + const exp_min: comptime_int = math.floatExponentMin(T); + + const ExpInt: type = std.meta.Int(.unsigned, exp_bits); + const MantInt: type = std.meta.Int(.unsigned, mant_bits); + const FracInt: type = std.meta.Int(.unsigned, frac_bits); + + const unreal_exponent: comptime_int = (1 << exp_bits) - 1; + const bias: comptime_int = (1 << (exp_bits - 1)) - 2; + const exp_mask: comptime_int = unreal_exponent << mant_bits; + const zero_exponent: comptime_int = bias << mant_bits; + const sign_mask: comptime_int = 1 << (bits - 1); + const not_exp: comptime_int = ~@as(Int, exp_mask); + const ones_place: comptime_int = mant_bits - frac_bits; + const extra_denorm_shift: comptime_int = 1 - ones_place; + + var result: Frexp(T) = undefined; + var v: Int = @bitCast(x); + + const m: MantInt = @truncate(v); + const e: ExpInt = @truncate(v >> mant_bits); + + switch (e) { + 0 => { + if (m != 0) { + // subnormal + const offset = @clz(m); + const shift = offset + extra_denorm_shift; + + v &= sign_mask; + v |= zero_exponent; + v |= math.shl(MantInt, m, shift); + + result.exponent = exp_min - @as(i32, offset) + ones_place; + } else { + // +-0 = (+-0, 0) + result.exponent = 0; + } + }, + unreal_exponent => { + // +-nan -> {+-nan, undefined} + result.exponent = undefined; + + // +-inf -> {+-inf, 0} + if (@as(FracInt, @truncate(v)) == 0) + result.exponent = 0; + }, + else => { + // normal + v &= not_exp; + v |= zero_exponent; + result.exponent = @as(i32, e) - bias; + }, } - result.exponent = e - 0x7E; - y &= 0x807FFFFF; - y |= 0x3F000000; - result.significand = @as(f32, @bitCast(y)); + result.significand = @bitCast(v); return result; } -fn frexp64(x: f64) Frexp(f64) { - var result: Frexp(f64) = undefined; - - var y = @as(u64, @bitCast(x)); - const e = @as(i32, @intCast(y >> 52)) & 0x7FF; - - if (e == 0) { - if (x != 0) { - // subnormal - result = frexp64(x * 0x1.0p64); - result.exponent -= 64; - } else { - // frexp(+-0) = (+-0, 0) - result.significand = x; - result.exponent = 0; +/// Generate a namespace of tests for frexp on values of the given type +fn FrexpTests(comptime Float: type) type { + return struct { + const T = Float; + test "normal" { + const epsilon = 1e-6; + var r: Frexp(T) = undefined; + + r = frexp(@as(T, 1.3)); + try expectApproxEqAbs(0.65, r.significand, epsilon); + try expectEqual(1, r.exponent); + + r = frexp(@as(T, 78.0234)); + try expectApproxEqAbs(0.609558, r.significand, epsilon); + try expectEqual(7, r.exponent); + + r = frexp(@as(T, -1234.5678)); + try expectEqual(11, r.exponent); + try expectApproxEqAbs(-0.602816, r.significand, epsilon); } - return result; - } else if (e == 0x7FF) { - // frexp(nan) = (nan, undefined) - result.significand = x; - result.exponent = undefined; - - // frexp(+-inf) = (+-inf, 0) - if (math.isInf(x)) { - result.exponent = 0; + test "max" { + const exponent = math.floatExponentMax(T) + 1; + const significand = 1.0 - math.floatEps(T) / 2; + const r: Frexp(T) = frexp(math.floatMax(T)); + try expectEqual(exponent, r.exponent); + try expectEqual(significand, r.significand); } - - return result; - } - - result.exponent = e - 0x3FE; - y &= 0x800FFFFFFFFFFFFF; - y |= 0x3FE0000000000000; - result.significand = @as(f64, @bitCast(y)); - return result; -} - -fn frexp128(x: f128) Frexp(f128) { - var result: Frexp(f128) = undefined; - - var y = @as(u128, @bitCast(x)); - const e = @as(i32, @intCast(y >> 112)) & 0x7FFF; - - if (e == 0) { - if (x != 0) { - // subnormal - result = frexp128(x * 0x1.0p120); - result.exponent -= 120; - } else { - // frexp(+-0) = (+-0, 0) - result.significand = x; - result.exponent = 0; + test "min" { + const exponent = math.floatExponentMin(T) + 1; + const r: Frexp(T) = frexp(math.floatMin(T)); + try expectEqual(exponent, r.exponent); + try expectEqual(0.5, r.significand); } - return result; - } else if (e == 0x7FFF) { - // frexp(nan) = (nan, undefined) - result.significand = x; - result.exponent = undefined; - - // frexp(+-inf) = (+-inf, 0) - if (math.isInf(x)) { - result.exponent = 0; + test "subnormal" { + const normal_min_exponent = math.floatExponentMin(T) + 1; + const exponent = normal_min_exponent - math.floatFractionalBits(T); + const r: Frexp(T) = frexp(math.floatTrueMin(T)); + try expectEqual(exponent, r.exponent); + try expectEqual(0.5, r.significand); } + test "zero" { + var r: Frexp(T) = undefined; - return result; - } - - result.exponent = e - 0x3FFE; - y &= 0x8000FFFFFFFFFFFFFFFFFFFFFFFFFFFF; - y |= 0x3FFE0000000000000000000000000000; - result.significand = @as(f128, @bitCast(y)); - return result; -} - -test "type dispatch" { - const a = frexp(@as(f32, 1.3)); - const b = frexp32(1.3); - try expect(a.significand == b.significand and a.exponent == b.exponent); - - const c = frexp(@as(f64, 1.3)); - const d = frexp64(1.3); - try expect(c.significand == d.significand and c.exponent == d.exponent); - - const e = frexp(@as(f128, 1.3)); - const f = frexp128(1.3); - try expect(e.significand == f.significand and e.exponent == f.exponent); -} - -test "32" { - const epsilon = 0.000001; - var r: Frexp(f32) = undefined; - - r = frexp32(1.3); - try expect(math.approxEqAbs(f32, r.significand, 0.65, epsilon) and r.exponent == 1); - - r = frexp32(78.0234); - try expect(math.approxEqAbs(f32, r.significand, 0.609558, epsilon) and r.exponent == 7); -} - -test "64" { - const epsilon = 0.000001; - var r: Frexp(f64) = undefined; - - r = frexp64(1.3); - try expect(math.approxEqAbs(f64, r.significand, 0.65, epsilon) and r.exponent == 1); - - r = frexp64(78.0234); - try expect(math.approxEqAbs(f64, r.significand, 0.609558, epsilon) and r.exponent == 7); -} - -test "128" { - const epsilon = 0.000001; - var r: Frexp(f128) = undefined; - - r = frexp128(1.3); - try expect(math.approxEqAbs(f128, r.significand, 0.65, epsilon) and r.exponent == 1); + r = frexp(@as(T, 0.0)); + try expectEqual(0, r.exponent); + try expect(math.isPositiveZero(r.significand)); - r = frexp128(78.0234); - try expect(math.approxEqAbs(f128, r.significand, 0.609558, epsilon) and r.exponent == 7); -} - -test "32 special" { - var r: Frexp(f32) = undefined; - - r = frexp32(0.0); - try expect(r.significand == 0.0 and r.exponent == 0); - - r = frexp32(-0.0); - try expect(r.significand == -0.0 and r.exponent == 0); - - r = frexp32(math.inf(f32)); - try expect(math.isPositiveInf(r.significand) and r.exponent == 0); + r = frexp(@as(T, -0.0)); + try expectEqual(0, r.exponent); + try expect(math.isNegativeZero(r.significand)); + } + test "inf" { + var r: Frexp(T) = undefined; - r = frexp32(-math.inf(f32)); - try expect(math.isNegativeInf(r.significand) and r.exponent == 0); + r = frexp(math.inf(T)); + try expectEqual(0, r.exponent); + try expect(math.isPositiveInf(r.significand)); - r = frexp32(math.nan(f32)); - try expect(math.isNan(r.significand)); + r = frexp(-math.inf(T)); + try expectEqual(0, r.exponent); + try expect(math.isNegativeInf(r.significand)); + } + test "nan" { + const r: Frexp(T) = frexp(math.nan(T)); + try expect(math.isNan(r.significand)); + } + }; } -test "64 special" { - var r: Frexp(f64) = undefined; - - r = frexp64(0.0); - try expect(r.significand == 0.0 and r.exponent == 0); - - r = frexp64(-0.0); - try expect(r.significand == -0.0 and r.exponent == 0); - - r = frexp64(math.inf(f64)); - try expect(math.isPositiveInf(r.significand) and r.exponent == 0); - - r = frexp64(-math.inf(f64)); - try expect(math.isNegativeInf(r.significand) and r.exponent == 0); - - r = frexp64(math.nan(f64)); - try expect(math.isNan(r.significand)); +// Generate tests for each floating point type +comptime { + for ([_]type{ f16, f32, f64, f80, f128 }) |T| { + _ = FrexpTests(T); + } } -test "128 special" { - var r: Frexp(f128) = undefined; - - r = frexp128(0.0); - try expect(r.significand == 0.0 and r.exponent == 0); - - r = frexp128(-0.0); - try expect(r.significand == -0.0 and r.exponent == 0); - - r = frexp128(math.inf(f128)); - try expect(math.isPositiveInf(r.significand) and r.exponent == 0); - - r = frexp128(-math.inf(f128)); - try expect(math.isNegativeInf(r.significand) and r.exponent == 0); - - r = frexp128(math.nan(f128)); - try expect(math.isNan(r.significand)); +test frexp { + inline for ([_]type{ f16, f32, f64, f80, f128 }) |T| { + const max_exponent = math.floatExponentMax(T) + 1; + const min_exponent = math.floatExponentMin(T) + 1; + const truemin_exponent = min_exponent - math.floatFractionalBits(T); + + var result: Frexp(T) = undefined; + comptime var x: T = undefined; + + // basic usage + // value -> {significand, exponent}, + // value == significand * (2 ^ exponent) + x = 1234.5678; + result = frexp(x); + try expectEqual(11, result.exponent); + try expectApproxEqAbs(0.602816, result.significand, 1e-6); + try expectEqual(x, math.ldexp(result.significand, result.exponent)); + + // float maximum + x = math.floatMax(T); + result = frexp(x); + try expectEqual(max_exponent, result.exponent); + try expectEqual(1.0 - math.floatEps(T) / 2, result.significand); + try expectEqual(x, math.ldexp(result.significand, result.exponent)); + + // float minimum + x = math.floatMin(T); + result = frexp(x); + try expectEqual(min_exponent, result.exponent); + try expectEqual(0.5, result.significand); + try expectEqual(x, math.ldexp(result.significand, result.exponent)); + + // float true minimum + // subnormal -> {normal, exponent} + x = math.floatTrueMin(T); + result = frexp(x); + try expectEqual(truemin_exponent, result.exponent); + try expectEqual(0.5, result.significand); + try expectEqual(x, math.ldexp(result.significand, result.exponent)); + + // infinity -> {infinity, zero} (+) + result = frexp(math.inf(T)); + try expectEqual(0, result.exponent); + try expect(math.isPositiveInf(result.significand)); + + // infinity -> {infinity, zero} (-) + result = frexp(-math.inf(T)); + try expectEqual(0, result.exponent); + try expect(math.isNegativeInf(result.significand)); + + // zero -> {zero, zero} (+) + result = frexp(@as(T, 0.0)); + try expectEqual(0, result.exponent); + try expect(math.isPositiveZero(result.significand)); + + // zero -> {zero, zero} (-) + result = frexp(@as(T, -0.0)); + try expectEqual(0, result.exponent); + try expect(math.isNegativeZero(result.significand)); + + // nan -> {nan, undefined} + result = frexp(math.nan(T)); + try expect(math.isNan(result.significand)); + } } diff --git a/lib/std/net.zig b/lib/std/net.zig index e68adc4207..b12fb1932d 100644 --- a/lib/std/net.zig +++ b/lib/std/net.zig @@ -5,15 +5,16 @@ const builtin = @import("builtin"); const assert = std.debug.assert; const net = @This(); const mem = std.mem; -const os = std.os; const posix = std.posix; const fs = std.fs; const io = std.io; const native_endian = builtin.target.cpu.arch.endian(); +const native_os = builtin.os.tag; +const windows = std.os.windows; // Windows 10 added support for unix sockets in build 17063, redstone 4 is the // first release to support them. -pub const has_unix_sockets = switch (builtin.os.tag) { +pub const has_unix_sockets = switch (native_os) { .windows => builtin.os.version_range.windows.isAtLeast(.win10_rs4) orelse false, else => true, }; @@ -28,14 +29,14 @@ pub const IPParseError = error{ pub const IPv4ParseError = IPParseError || error{NonCanonical}; pub const IPv6ParseError = IPParseError || error{InvalidIpv4Mapping}; -pub const IPv6InterfaceError = os.SocketError || os.IoCtl_SIOCGIFINDEX_Error || error{NameTooLong}; +pub const IPv6InterfaceError = posix.SocketError || posix.IoCtl_SIOCGIFINDEX_Error || error{NameTooLong}; pub const IPv6ResolveError = IPv6ParseError || IPv6InterfaceError; pub const Address = extern union { - any: os.sockaddr, + any: posix.sockaddr, in: Ip4Address, in6: Ip6Address, - un: if (has_unix_sockets) os.sockaddr.un else void, + un: if (has_unix_sockets) posix.sockaddr.un else void, /// Parse the given IP address string into an Address value. /// It is recommended to use `resolveIp` instead, to handle @@ -85,38 +86,38 @@ pub const Address = extern union { return error.InvalidIPAddressFormat; } - pub fn parseExpectingFamily(name: []const u8, family: os.sa_family_t, port: u16) !Address { + pub fn parseExpectingFamily(name: []const u8, family: posix.sa_family_t, port: u16) !Address { switch (family) { - os.AF.INET => return parseIp4(name, port), - os.AF.INET6 => return parseIp6(name, port), - os.AF.UNSPEC => return parseIp(name, port), + posix.AF.INET => return parseIp4(name, port), + posix.AF.INET6 => return parseIp6(name, port), + posix.AF.UNSPEC => return parseIp(name, port), else => unreachable, } } pub fn parseIp6(buf: []const u8, port: u16) IPv6ParseError!Address { - return Address{ .in6 = try Ip6Address.parse(buf, port) }; + return .{ .in6 = try Ip6Address.parse(buf, port) }; } pub fn resolveIp6(buf: []const u8, port: u16) IPv6ResolveError!Address { - return Address{ .in6 = try Ip6Address.resolve(buf, port) }; + return .{ .in6 = try Ip6Address.resolve(buf, port) }; } pub fn parseIp4(buf: []const u8, port: u16) IPv4ParseError!Address { - return Address{ .in = try Ip4Address.parse(buf, port) }; + return .{ .in = try Ip4Address.parse(buf, port) }; } pub fn initIp4(addr: [4]u8, port: u16) Address { - return Address{ .in = Ip4Address.init(addr, port) }; + return .{ .in = Ip4Address.init(addr, port) }; } pub fn initIp6(addr: [16]u8, port: u16, flowinfo: u32, scope_id: u32) Address { - return Address{ .in6 = Ip6Address.init(addr, port, flowinfo, scope_id) }; + return .{ .in6 = Ip6Address.init(addr, port, flowinfo, scope_id) }; } pub fn initUnix(path: []const u8) !Address { - var sock_addr = os.sockaddr.un{ - .family = os.AF.UNIX, + var sock_addr = posix.sockaddr.un{ + .family = posix.AF.UNIX, .path = undefined, }; @@ -133,8 +134,8 @@ pub const Address = extern union { /// Asserts that the address is ip4 or ip6. pub fn getPort(self: Address) u16 { return switch (self.any.family) { - os.AF.INET => self.in.getPort(), - os.AF.INET6 => self.in6.getPort(), + posix.AF.INET => self.in.getPort(), + posix.AF.INET6 => self.in6.getPort(), else => unreachable, }; } @@ -143,8 +144,8 @@ pub const Address = extern union { /// Asserts that the address is ip4 or ip6. pub fn setPort(self: *Address, port: u16) void { switch (self.any.family) { - os.AF.INET => self.in.setPort(port), - os.AF.INET6 => self.in6.setPort(port), + posix.AF.INET => self.in.setPort(port), + posix.AF.INET6 => self.in6.setPort(port), else => unreachable, } } @@ -152,10 +153,10 @@ pub const Address = extern union { /// Asserts that `addr` is an IP address. /// This function will read past the end of the pointer, with a size depending /// on the address family. - pub fn initPosix(addr: *align(4) const os.sockaddr) Address { + pub fn initPosix(addr: *align(4) const posix.sockaddr) Address { switch (addr.family) { - os.AF.INET => return Address{ .in = Ip4Address{ .sa = @as(*const os.sockaddr.in, @ptrCast(addr)).* } }, - os.AF.INET6 => return Address{ .in6 = Ip6Address{ .sa = @as(*const os.sockaddr.in6, @ptrCast(addr)).* } }, + posix.AF.INET => return Address{ .in = Ip4Address{ .sa = @as(*const posix.sockaddr.in, @ptrCast(addr)).* } }, + posix.AF.INET6 => return Address{ .in6 = Ip6Address{ .sa = @as(*const posix.sockaddr.in6, @ptrCast(addr)).* } }, else => unreachable, } } @@ -168,9 +169,9 @@ pub const Address = extern union { ) !void { if (fmt.len != 0) std.fmt.invalidFmtError(fmt, self); switch (self.any.family) { - os.AF.INET => try self.in.format(fmt, options, out_stream), - os.AF.INET6 => try self.in6.format(fmt, options, out_stream), - os.AF.UNIX => { + posix.AF.INET => try self.in.format(fmt, options, out_stream), + posix.AF.INET6 => try self.in6.format(fmt, options, out_stream), + posix.AF.UNIX => { if (!has_unix_sockets) { unreachable; } @@ -187,11 +188,11 @@ pub const Address = extern union { return mem.eql(u8, a_bytes, b_bytes); } - pub fn getOsSockLen(self: Address) os.socklen_t { + pub fn getOsSockLen(self: Address) posix.socklen_t { switch (self.any.family) { - os.AF.INET => return self.in.getOsSockLen(), - os.AF.INET6 => return self.in6.getOsSockLen(), - os.AF.UNIX => { + posix.AF.INET => return self.in.getOsSockLen(), + posix.AF.INET6 => return self.in6.getOsSockLen(), + posix.AF.UNIX => { if (!has_unix_sockets) { unreachable; } @@ -204,7 +205,7 @@ pub const Address = extern union { // provide the full buffer size (e.g. getsockname, getpeername, recvfrom, accept). // // To access the path, std.mem.sliceTo(&address.un.path, 0) should be used. - return @as(os.socklen_t, @intCast(@sizeOf(os.sockaddr.un))); + return @as(posix.socklen_t, @intCast(@sizeOf(posix.sockaddr.un))); }, else => unreachable, @@ -247,7 +248,7 @@ pub const Address = extern union { posix.SO.REUSEADDR, &mem.toBytes(@as(c_int, 1)), ); - switch (builtin.os.tag) { + switch (native_os) { .windows => {}, else => try posix.setsockopt( sockfd, @@ -267,7 +268,7 @@ pub const Address = extern union { }; pub const Ip4Address = extern struct { - sa: os.sockaddr.in, + sa: posix.sockaddr.in, pub fn parse(buf: []const u8, port: u16) IPv4ParseError!Ip4Address { var result = Ip4Address{ @@ -330,7 +331,7 @@ pub const Ip4Address = extern struct { pub fn init(addr: [4]u8, port: u16) Ip4Address { return Ip4Address{ - .sa = os.sockaddr.in{ + .sa = posix.sockaddr.in{ .port = mem.nativeToBig(u16, port), .addr = @as(*align(1) const u32, @ptrCast(&addr)).*, }, @@ -367,21 +368,21 @@ pub const Ip4Address = extern struct { }); } - pub fn getOsSockLen(self: Ip4Address) os.socklen_t { + pub fn getOsSockLen(self: Ip4Address) posix.socklen_t { _ = self; - return @sizeOf(os.sockaddr.in); + return @sizeOf(posix.sockaddr.in); } }; pub const Ip6Address = extern struct { - sa: os.sockaddr.in6, + sa: posix.sockaddr.in6, /// Parse a given IPv6 address string into an Address. /// Assumes the Scope ID of the address is fully numeric. /// For non-numeric addresses, see `resolveIp6`. pub fn parse(buf: []const u8, port: u16) IPv6ParseError!Ip6Address { var result = Ip6Address{ - .sa = os.sockaddr.in6{ + .sa = posix.sockaddr.in6{ .scope_id = 0, .port = mem.nativeToBig(u16, port), .flowinfo = 0, @@ -499,7 +500,7 @@ pub const Ip6Address = extern struct { pub fn resolve(buf: []const u8, port: u16) IPv6ResolveError!Ip6Address { // TODO: Unify the implementations of resolveIp6 and parseIp6. var result = Ip6Address{ - .sa = os.sockaddr.in6{ + .sa = posix.sockaddr.in6{ .scope_id = 0, .port = mem.nativeToBig(u16, port), .flowinfo = 0, @@ -516,7 +517,7 @@ pub const Ip6Address = extern struct { var abbrv = false; var scope_id = false; - var scope_id_value: [os.IFNAMESIZE - 1]u8 = undefined; + var scope_id_value: [posix.IFNAMESIZE - 1]u8 = undefined; var scope_id_index: usize = 0; for (buf, 0..) |c, i| { @@ -632,7 +633,7 @@ pub const Ip6Address = extern struct { pub fn init(addr: [16]u8, port: u16, flowinfo: u32, scope_id: u32) Ip6Address { return Ip6Address{ - .sa = os.sockaddr.in6{ + .sa = posix.sockaddr.in6{ .addr = addr, .port = mem.nativeToBig(u16, port), .flowinfo = flowinfo, @@ -702,51 +703,51 @@ pub const Ip6Address = extern struct { try std.fmt.format(out_stream, "]:{}", .{port}); } - pub fn getOsSockLen(self: Ip6Address) os.socklen_t { + pub fn getOsSockLen(self: Ip6Address) posix.socklen_t { _ = self; - return @sizeOf(os.sockaddr.in6); + return @sizeOf(posix.sockaddr.in6); } }; pub fn connectUnixSocket(path: []const u8) !Stream { const opt_non_block = 0; - const sockfd = try os.socket( - os.AF.UNIX, - os.SOCK.STREAM | os.SOCK.CLOEXEC | opt_non_block, + const sockfd = try posix.socket( + posix.AF.UNIX, + posix.SOCK.STREAM | posix.SOCK.CLOEXEC | opt_non_block, 0, ); errdefer Stream.close(.{ .handle = sockfd }); var addr = try std.net.Address.initUnix(path); - try os.connect(sockfd, &addr.any, addr.getOsSockLen()); + try posix.connect(sockfd, &addr.any, addr.getOsSockLen()); - return Stream{ .handle = sockfd }; + return .{ .handle = sockfd }; } fn if_nametoindex(name: []const u8) IPv6InterfaceError!u32 { - if (builtin.target.os.tag == .linux) { - var ifr: os.ifreq = undefined; - const sockfd = try os.socket(os.AF.UNIX, os.SOCK.DGRAM | os.SOCK.CLOEXEC, 0); + if (native_os == .linux) { + var ifr: posix.ifreq = undefined; + const sockfd = try posix.socket(posix.AF.UNIX, posix.SOCK.DGRAM | posix.SOCK.CLOEXEC, 0); defer Stream.close(.{ .handle = sockfd }); @memcpy(ifr.ifrn.name[0..name.len], name); ifr.ifrn.name[name.len] = 0; // TODO investigate if this needs to be integrated with evented I/O. - try os.ioctl_SIOCGIFINDEX(sockfd, &ifr); + try posix.ioctl_SIOCGIFINDEX(sockfd, &ifr); - return @as(u32, @bitCast(ifr.ifru.ivalue)); + return @bitCast(ifr.ifru.ivalue); } - if (comptime builtin.target.os.tag.isDarwin()) { - if (name.len >= os.IFNAMESIZE) + if (native_os.isDarwin()) { + if (name.len >= posix.IFNAMESIZE) return error.NameTooLong; - var if_name: [os.IFNAMESIZE:0]u8 = undefined; + var if_name: [posix.IFNAMESIZE:0]u8 = undefined; @memcpy(if_name[0..name.len], name); if_name[name.len] = 0; const if_slice = if_name[0..name.len :0]; - const index = os.system.if_nametoindex(if_slice); + const index = std.c.if_nametoindex(if_slice); if (index == 0) return error.InterfaceNotFound; return @as(u32, @bitCast(index)); @@ -786,24 +787,24 @@ pub fn tcpConnectToHost(allocator: mem.Allocator, name: []const u8, port: u16) T else => return err, }; } - return std.os.ConnectError.ConnectionRefused; + return posix.ConnectError.ConnectionRefused; } -pub const TcpConnectToAddressError = std.os.SocketError || std.os.ConnectError; +pub const TcpConnectToAddressError = posix.SocketError || posix.ConnectError; pub fn tcpConnectToAddress(address: Address) TcpConnectToAddressError!Stream { const nonblock = 0; - const sock_flags = os.SOCK.STREAM | nonblock | - (if (builtin.target.os.tag == .windows) 0 else os.SOCK.CLOEXEC); - const sockfd = try os.socket(address.any.family, sock_flags, os.IPPROTO.TCP); + const sock_flags = posix.SOCK.STREAM | nonblock | + (if (native_os == .windows) 0 else posix.SOCK.CLOEXEC); + const sockfd = try posix.socket(address.any.family, sock_flags, posix.IPPROTO.TCP); errdefer Stream.close(.{ .handle = sockfd }); - try os.connect(sockfd, &address.any, address.getOsSockLen()); + try posix.connect(sockfd, &address.any, address.getOsSockLen()); return Stream{ .handle = sockfd }; } -const GetAddressListError = std.mem.Allocator.Error || std.fs.File.OpenError || std.fs.File.ReadError || std.os.SocketError || std.os.BindError || std.os.SetSockOptError || error{ +const GetAddressListError = std.mem.Allocator.Error || std.fs.File.OpenError || std.fs.File.ReadError || posix.SocketError || posix.BindError || posix.SetSockOptError || error{ // TODO: break this up into error sets from the various underlying functions TemporaryNameServerFailure, @@ -844,30 +845,30 @@ pub fn getAddressList(allocator: mem.Allocator, name: []const u8, port: u16) Get const arena = result.arena.allocator(); errdefer result.deinit(); - if (builtin.target.os.tag == .windows) { + if (native_os == .windows) { const name_c = try allocator.dupeZ(u8, name); defer allocator.free(name_c); const port_c = try std.fmt.allocPrintZ(allocator, "{}", .{port}); defer allocator.free(port_c); - const ws2_32 = os.windows.ws2_32; - const hints = os.addrinfo{ + const ws2_32 = windows.ws2_32; + const hints = posix.addrinfo{ .flags = ws2_32.AI.NUMERICSERV, - .family = os.AF.UNSPEC, - .socktype = os.SOCK.STREAM, - .protocol = os.IPPROTO.TCP, + .family = posix.AF.UNSPEC, + .socktype = posix.SOCK.STREAM, + .protocol = posix.IPPROTO.TCP, .canonname = null, .addr = null, .addrlen = 0, .next = null, }; - var res: ?*os.addrinfo = null; + var res: ?*posix.addrinfo = null; var first = true; while (true) { const rc = ws2_32.getaddrinfo(name_c.ptr, port_c.ptr, &hints, &res); - switch (@as(os.windows.ws2_32.WinsockError, @enumFromInt(@as(u16, @intCast(rc))))) { - @as(os.windows.ws2_32.WinsockError, @enumFromInt(0)) => break, + switch (@as(windows.ws2_32.WinsockError, @enumFromInt(@as(u16, @intCast(rc))))) { + @as(windows.ws2_32.WinsockError, @enumFromInt(0)) => break, .WSATRY_AGAIN => return error.TemporaryNameServerFailure, .WSANO_RECOVERY => return error.NameServerFailure, .WSAEAFNOSUPPORT => return error.AddressFamilyNotSupported, @@ -879,10 +880,10 @@ pub fn getAddressList(allocator: mem.Allocator, name: []const u8, port: u16) Get .WSANOTINITIALISED => { if (!first) return error.Unexpected; first = false; - try os.windows.callWSAStartup(); + try windows.callWSAStartup(); continue; }, - else => |err| return os.windows.unexpectedWSAError(err), + else => |err| return windows.unexpectedWSAError(err), } } defer ws2_32.freeaddrinfo(res); @@ -923,18 +924,18 @@ pub fn getAddressList(allocator: mem.Allocator, name: []const u8, port: u16) Get const port_c = try std.fmt.allocPrintZ(allocator, "{}", .{port}); defer allocator.free(port_c); - const sys = if (builtin.target.os.tag == .windows) os.windows.ws2_32 else os.system; - const hints = os.addrinfo{ + const sys = if (native_os == .windows) windows.ws2_32 else posix.system; + const hints = posix.addrinfo{ .flags = sys.AI.NUMERICSERV, - .family = os.AF.UNSPEC, - .socktype = os.SOCK.STREAM, - .protocol = os.IPPROTO.TCP, + .family = posix.AF.UNSPEC, + .socktype = posix.SOCK.STREAM, + .protocol = posix.IPPROTO.TCP, .canonname = null, .addr = null, .addrlen = 0, .next = null, }; - var res: ?*os.addrinfo = null; + var res: ?*posix.addrinfo = null; switch (sys.getaddrinfo(name_c.ptr, port_c.ptr, &hints, &res)) { @as(sys.EAI, @enumFromInt(0)) => {}, .ADDRFAMILY => return error.HostLacksNetworkAddresses, @@ -947,8 +948,8 @@ pub fn getAddressList(allocator: mem.Allocator, name: []const u8, port: u16) Get .NONAME => return error.UnknownHostName, .SERVICE => return error.ServiceUnavailable, .SOCKTYPE => unreachable, // Invalid socket type requested in hints - .SYSTEM => switch (os.errno(-1)) { - else => |e| return os.unexpectedErrno(e), + .SYSTEM => switch (posix.errno(-1)) { + else => |e| return posix.unexpectedErrno(e), }, else => unreachable, } @@ -983,9 +984,9 @@ pub fn getAddressList(allocator: mem.Allocator, name: []const u8, port: u16) Get return result; } - if (builtin.target.os.tag == .linux) { + if (native_os == .linux) { const flags = std.c.AI.NUMERICSERV; - const family = os.AF.UNSPEC; + const family = posix.AF.UNSPEC; var lookup_addrs = std.ArrayList(LookupAddr).init(allocator); defer lookup_addrs.deinit(); @@ -1026,7 +1027,7 @@ fn linuxLookupName( addrs: *std.ArrayList(LookupAddr), canon: *std.ArrayList(u8), opt_name: ?[]const u8, - family: os.sa_family_t, + family: posix.sa_family_t, flags: u32, port: u16, ) !void { @@ -1066,9 +1067,9 @@ fn linuxLookupName( // No further processing is needed if there are fewer than 2 // results or if there are only IPv4 results. - if (addrs.items.len == 1 or family == os.AF.INET) return; + if (addrs.items.len == 1 or family == posix.AF.INET) return; const all_ip4 = for (addrs.items) |addr| { - if (addr.addr.any.family != os.AF.INET) break false; + if (addr.addr.any.family != posix.AF.INET) break false; } else true; if (all_ip4) return; @@ -1081,42 +1082,42 @@ fn linuxLookupName( // A more idiomatic "ziggy" implementation would be welcome. for (addrs.items, 0..) |*addr, i| { var key: i32 = 0; - var sa6: os.sockaddr.in6 = undefined; - @memset(@as([*]u8, @ptrCast(&sa6))[0..@sizeOf(os.sockaddr.in6)], 0); - var da6 = os.sockaddr.in6{ - .family = os.AF.INET6, + var sa6: posix.sockaddr.in6 = undefined; + @memset(@as([*]u8, @ptrCast(&sa6))[0..@sizeOf(posix.sockaddr.in6)], 0); + var da6 = posix.sockaddr.in6{ + .family = posix.AF.INET6, .scope_id = addr.addr.in6.sa.scope_id, .port = 65535, .flowinfo = 0, .addr = [1]u8{0} ** 16, }; - var sa4: os.sockaddr.in = undefined; - @memset(@as([*]u8, @ptrCast(&sa4))[0..@sizeOf(os.sockaddr.in)], 0); - var da4 = os.sockaddr.in{ - .family = os.AF.INET, + var sa4: posix.sockaddr.in = undefined; + @memset(@as([*]u8, @ptrCast(&sa4))[0..@sizeOf(posix.sockaddr.in)], 0); + var da4 = posix.sockaddr.in{ + .family = posix.AF.INET, .port = 65535, .addr = 0, .zero = [1]u8{0} ** 8, }; - var sa: *align(4) os.sockaddr = undefined; - var da: *align(4) os.sockaddr = undefined; - var salen: os.socklen_t = undefined; - var dalen: os.socklen_t = undefined; - if (addr.addr.any.family == os.AF.INET6) { + var sa: *align(4) posix.sockaddr = undefined; + var da: *align(4) posix.sockaddr = undefined; + var salen: posix.socklen_t = undefined; + var dalen: posix.socklen_t = undefined; + if (addr.addr.any.family == posix.AF.INET6) { da6.addr = addr.addr.in6.sa.addr; da = @ptrCast(&da6); - dalen = @sizeOf(os.sockaddr.in6); + dalen = @sizeOf(posix.sockaddr.in6); sa = @ptrCast(&sa6); - salen = @sizeOf(os.sockaddr.in6); + salen = @sizeOf(posix.sockaddr.in6); } else { sa6.addr[0..12].* = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff".*; da6.addr[0..12].* = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff".*; mem.writeInt(u32, da6.addr[12..], addr.addr.in.sa.addr, native_endian); da4.addr = addr.addr.in.sa.addr; da = @ptrCast(&da4); - dalen = @sizeOf(os.sockaddr.in); + dalen = @sizeOf(posix.sockaddr.in); sa = @ptrCast(&sa4); - salen = @sizeOf(os.sockaddr.in); + salen = @sizeOf(posix.sockaddr.in); } const dpolicy = policyOf(da6.addr); const dscope: i32 = scopeOf(da6.addr); @@ -1124,13 +1125,13 @@ fn linuxLookupName( const dprec: i32 = dpolicy.prec; const MAXADDRS = 3; var prefixlen: i32 = 0; - const sock_flags = os.SOCK.DGRAM | os.SOCK.CLOEXEC; - if (os.socket(addr.addr.any.family, sock_flags, os.IPPROTO.UDP)) |fd| syscalls: { + const sock_flags = posix.SOCK.DGRAM | posix.SOCK.CLOEXEC; + if (posix.socket(addr.addr.any.family, sock_flags, posix.IPPROTO.UDP)) |fd| syscalls: { defer Stream.close(.{ .handle = fd }); - os.connect(fd, da, dalen) catch break :syscalls; + posix.connect(fd, da, dalen) catch break :syscalls; key |= DAS_USABLE; - os.getsockname(fd, sa, &salen) catch break :syscalls; - if (addr.addr.any.family == os.AF.INET) { + posix.getsockname(fd, sa, &salen) catch break :syscalls; + if (addr.addr.any.family == posix.AF.INET) { mem.writeInt(u32, sa6.addr[12..16], sa4.addr, native_endian); } if (dscope == @as(i32, scopeOf(sa6.addr))) key |= DAS_MATCHINGSCOPE; @@ -1267,28 +1268,28 @@ fn addrCmpLessThan(context: void, b: LookupAddr, a: LookupAddr) bool { fn linuxLookupNameFromNull( addrs: *std.ArrayList(LookupAddr), - family: os.sa_family_t, + family: posix.sa_family_t, flags: u32, port: u16, ) !void { if ((flags & std.c.AI.PASSIVE) != 0) { - if (family != os.AF.INET6) { + if (family != posix.AF.INET6) { (try addrs.addOne()).* = LookupAddr{ .addr = Address.initIp4([1]u8{0} ** 4, port), }; } - if (family != os.AF.INET) { + if (family != posix.AF.INET) { (try addrs.addOne()).* = LookupAddr{ .addr = Address.initIp6([1]u8{0} ** 16, port, 0, 0), }; } } else { - if (family != os.AF.INET6) { + if (family != posix.AF.INET6) { (try addrs.addOne()).* = LookupAddr{ .addr = Address.initIp4([4]u8{ 127, 0, 0, 1 }, port), }; } - if (family != os.AF.INET) { + if (family != posix.AF.INET) { (try addrs.addOne()).* = LookupAddr{ .addr = Address.initIp6(([1]u8{0} ** 15) ++ [1]u8{1}, port, 0, 0), }; @@ -1300,7 +1301,7 @@ fn linuxLookupNameFromHosts( addrs: *std.ArrayList(LookupAddr), canon: *std.ArrayList(u8), name: []const u8, - family: os.sa_family_t, + family: posix.sa_family_t, port: u16, ) !void { const file = fs.openFileAbsoluteZ("/etc/hosts", .{}) catch |err| switch (err) { @@ -1374,7 +1375,7 @@ fn linuxLookupNameFromDnsSearch( addrs: *std.ArrayList(LookupAddr), canon: *std.ArrayList(u8), name: []const u8, - family: os.sa_family_t, + family: posix.sa_family_t, port: u16, ) !void { var rc: ResolvConf = undefined; @@ -1429,7 +1430,7 @@ fn linuxLookupNameFromDns( addrs: *std.ArrayList(LookupAddr), canon: *std.ArrayList(u8), name: []const u8, - family: os.sa_family_t, + family: posix.sa_family_t, rc: ResolvConf, port: u16, ) !void { @@ -1439,12 +1440,12 @@ fn linuxLookupNameFromDns( .port = port, }; const AfRr = struct { - af: os.sa_family_t, + af: posix.sa_family_t, rr: u8, }; const afrrs = [_]AfRr{ - AfRr{ .af = os.AF.INET6, .rr = os.RR.A }, - AfRr{ .af = os.AF.INET, .rr = os.RR.AAAA }, + AfRr{ .af = posix.AF.INET6, .rr = posix.RR.A }, + AfRr{ .af = posix.AF.INET, .rr = posix.RR.AAAA }, }; var qbuf: [2][280]u8 = undefined; var abuf: [2][512]u8 = undefined; @@ -1454,7 +1455,7 @@ fn linuxLookupNameFromDns( for (afrrs) |afrr| { if (family != afrr.af) { - const len = os.res_mkquery(0, name, 1, afrr.rr, &[_]u8{}, null, &qbuf[nq]); + const len = posix.res_mkquery(0, name, 1, afrr.rr, &[_]u8{}, null, &qbuf[nq]); qp[nq] = qbuf[nq][0..len]; nq += 1; } @@ -1582,8 +1583,8 @@ fn resMSendRc( const timeout = 1000 * rc.timeout; const attempts = rc.attempts; - var sl: os.socklen_t = @sizeOf(os.sockaddr.in); - var family: os.sa_family_t = os.AF.INET; + var sl: posix.socklen_t = @sizeOf(posix.sockaddr.in); + var family: posix.sa_family_t = posix.AF.INET; var ns_list = std.ArrayList(Address).init(rc.ns.allocator); defer ns_list.deinit(); @@ -1594,18 +1595,18 @@ fn resMSendRc( for (rc.ns.items, 0..) |iplit, i| { ns[i] = iplit.addr; assert(ns[i].getPort() == 53); - if (iplit.addr.any.family != os.AF.INET) { - family = os.AF.INET6; + if (iplit.addr.any.family != posix.AF.INET) { + family = posix.AF.INET6; } } - const flags = os.SOCK.DGRAM | os.SOCK.CLOEXEC | os.SOCK.NONBLOCK; - const fd = os.socket(family, flags, 0) catch |err| switch (err) { + const flags = posix.SOCK.DGRAM | posix.SOCK.CLOEXEC | posix.SOCK.NONBLOCK; + const fd = posix.socket(family, flags, 0) catch |err| switch (err) { error.AddressFamilyNotSupported => blk: { // Handle case where system lacks IPv6 support - if (family == os.AF.INET6) { - family = os.AF.INET; - break :blk try os.socket(os.AF.INET, flags, 0); + if (family == posix.AF.INET6) { + family = posix.AF.INET; + break :blk try posix.socket(posix.AF.INET, flags, 0); } return err; }, @@ -1618,33 +1619,33 @@ fn resMSendRc( // packet which is up to the caller to interpret. // Convert any IPv4 addresses in a mixed environment to v4-mapped - if (family == os.AF.INET6) { - try os.setsockopt( + if (family == posix.AF.INET6) { + try posix.setsockopt( fd, - os.SOL.IPV6, - os.linux.IPV6.V6ONLY, + posix.SOL.IPV6, + std.os.linux.IPV6.V6ONLY, &mem.toBytes(@as(c_int, 0)), ); for (0..ns.len) |i| { - if (ns[i].any.family != os.AF.INET) continue; + if (ns[i].any.family != posix.AF.INET) continue; mem.writeInt(u32, ns[i].in6.sa.addr[12..], ns[i].in.sa.addr, native_endian); ns[i].in6.sa.addr[0..12].* = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff".*; - ns[i].any.family = os.AF.INET6; + ns[i].any.family = posix.AF.INET6; ns[i].in6.sa.flowinfo = 0; ns[i].in6.sa.scope_id = 0; } - sl = @sizeOf(os.sockaddr.in6); + sl = @sizeOf(posix.sockaddr.in6); } // Get local address and open/bind a socket var sa: Address = undefined; @memset(@as([*]u8, @ptrCast(&sa))[0..@sizeOf(Address)], 0); sa.any.family = family; - try os.bind(fd, &sa.any, sl); + try posix.bind(fd, &sa.any, sl); - var pfd = [1]os.pollfd{os.pollfd{ + var pfd = [1]posix.pollfd{posix.pollfd{ .fd = fd, - .events = os.POLL.IN, + .events = posix.POLL.IN, .revents = undefined, }}; const retry_interval = timeout / attempts; @@ -1663,7 +1664,7 @@ fn resMSendRc( if (answers[i].len == 0) { var j: usize = 0; while (j < ns.len) : (j += 1) { - _ = os.sendto(fd, queries[i], os.MSG.NOSIGNAL, &ns[j].any, sl) catch undefined; + _ = posix.sendto(fd, queries[i], posix.MSG.NOSIGNAL, &ns[j].any, sl) catch undefined; } } } @@ -1673,12 +1674,12 @@ fn resMSendRc( // Wait for a response, or until time to retry const clamped_timeout = @min(@as(u31, std.math.maxInt(u31)), t1 + retry_interval - t2); - const nevents = os.poll(&pfd, clamped_timeout) catch 0; + const nevents = posix.poll(&pfd, clamped_timeout) catch 0; if (nevents == 0) continue; while (true) { var sl_copy = sl; - const rlen = os.recvfrom(fd, answer_bufs[next], 0, &sa.any, &sl_copy) catch break; + const rlen = posix.recvfrom(fd, answer_bufs[next], 0, &sa.any, &sl_copy) catch break; // Ignore non-identifiable packets if (rlen < 4) continue; @@ -1704,7 +1705,7 @@ fn resMSendRc( 0, 3 => {}, 2 => if (servfail_retry != 0) { servfail_retry -= 1; - _ = os.sendto(fd, queries[i], os.MSG.NOSIGNAL, &ns[j].any, sl) catch undefined; + _ = posix.sendto(fd, queries[i], posix.MSG.NOSIGNAL, &ns[j].any, sl) catch undefined; }, else => continue, } @@ -1758,24 +1759,24 @@ fn dnsParse( fn dnsParseCallback(ctx: dpc_ctx, rr: u8, data: []const u8, packet: []const u8) !void { switch (rr) { - os.RR.A => { + posix.RR.A => { if (data.len != 4) return error.InvalidDnsARecord; const new_addr = try ctx.addrs.addOne(); new_addr.* = LookupAddr{ .addr = Address.initIp4(data[0..4].*, ctx.port), }; }, - os.RR.AAAA => { + posix.RR.AAAA => { if (data.len != 16) return error.InvalidDnsAAAARecord; const new_addr = try ctx.addrs.addOne(); new_addr.* = LookupAddr{ .addr = Address.initIp6(data[0..16].*, ctx.port, 0, 0), }; }, - os.RR.CNAME => { + posix.RR.CNAME => { var tmp: [256]u8 = undefined; // Returns len of compressed name. strlen to get canon name. - _ = try os.dn_expand(packet, data, &tmp); + _ = try posix.dn_expand(packet, data, &tmp); const canon_name = mem.sliceTo(&tmp, 0); if (isValidHostName(canon_name)) { ctx.canon.items.len = 0; @@ -1792,14 +1793,14 @@ pub const Stream = struct { handle: posix.socket_t, pub fn close(s: Stream) void { - switch (builtin.os.tag) { - .windows => std.os.windows.closesocket(s.handle) catch unreachable, + switch (native_os) { + .windows => windows.closesocket(s.handle) catch unreachable, else => posix.close(s.handle), } } - pub const ReadError = os.ReadError; - pub const WriteError = os.WriteError; + pub const ReadError = posix.ReadError; + pub const WriteError = posix.WriteError; pub const Reader = io.Reader(Stream, ReadError, read); pub const Writer = io.Writer(Stream, WriteError, write); @@ -1813,22 +1814,22 @@ pub const Stream = struct { } pub fn read(self: Stream, buffer: []u8) ReadError!usize { - if (builtin.os.tag == .windows) { - return os.windows.ReadFile(self.handle, buffer, null); + if (native_os == .windows) { + return windows.ReadFile(self.handle, buffer, null); } - return os.read(self.handle, buffer); + return posix.read(self.handle, buffer); } - pub fn readv(s: Stream, iovecs: []const os.iovec) ReadError!usize { - if (builtin.os.tag == .windows) { + pub fn readv(s: Stream, iovecs: []const posix.iovec) ReadError!usize { + if (native_os == .windows) { // TODO improve this to use ReadFileScatter if (iovecs.len == 0) return @as(usize, 0); const first = iovecs[0]; - return os.windows.ReadFile(s.handle, first.iov_base[0..first.iov_len], null); + return windows.ReadFile(s.handle, first.iov_base[0..first.iov_len], null); } - return os.readv(s.handle, iovecs); + return posix.readv(s.handle, iovecs); } /// Returns the number of bytes read. If the number read is smaller than @@ -1858,11 +1859,11 @@ pub const Stream = struct { /// file system thread instead of non-blocking. It needs to be reworked to properly /// use non-blocking I/O. pub fn write(self: Stream, buffer: []const u8) WriteError!usize { - if (builtin.os.tag == .windows) { - return os.windows.WriteFile(self.handle, buffer, null); + if (native_os == .windows) { + return windows.WriteFile(self.handle, buffer, null); } - return os.write(self.handle, buffer); + return posix.write(self.handle, buffer); } pub fn writeAll(self: Stream, bytes: []const u8) WriteError!void { @@ -1874,15 +1875,15 @@ pub const Stream = struct { /// See https://github.com/ziglang/zig/issues/7699 /// See equivalent function: `std.fs.File.writev`. - pub fn writev(self: Stream, iovecs: []const os.iovec_const) WriteError!usize { - return os.writev(self.handle, iovecs); + pub fn writev(self: Stream, iovecs: []const posix.iovec_const) WriteError!usize { + return posix.writev(self.handle, iovecs); } /// The `iovecs` parameter is mutable because this function needs to mutate the fields in /// order to handle partial writes from the underlying OS layer. /// See https://github.com/ziglang/zig/issues/7699 /// See equivalent function: `std.fs.File.writevAll`. - pub fn writevAll(self: Stream, iovecs: []os.iovec_const) WriteError!void { + pub fn writevAll(self: Stream, iovecs: []posix.iovec_const) WriteError!void { if (iovecs.len == 0) return; var i: usize = 0; diff --git a/lib/std/os.zig b/lib/std/os.zig index 2138f5cd20..53f1bef4fe 100644 --- a/lib/std/os.zig +++ b/lib/std/os.zig @@ -11,8 +11,6 @@ //! On Linux libc can be side-stepped by using `std.os.linux` directly. //! * For Windows, this file represents the API that libc would provide for //! Windows. For thin wrappers around Windows-specific APIs, see `std.os.windows`. -//! Note: The Zig standard library does not support POSIX thread cancellation, and -//! in general EINTR is handled by trying again. const root = @import("root"); const std = @import("std.zig"); @@ -24,15 +22,8 @@ const elf = std.elf; const fs = std.fs; const dl = @import("dynamic_library.zig"); const MAX_PATH_BYTES = std.fs.MAX_PATH_BYTES; +const posix = std.posix; -pub const darwin = std.c; -pub const dragonfly = std.c; -pub const freebsd = std.c; -pub const haiku = std.c; -pub const netbsd = std.c; -pub const openbsd = std.c; -pub const solaris = std.c; -pub const illumos = std.c; pub const linux = @import("os/linux.zig"); pub const plan9 = @import("os/plan9.zig"); pub const uefi = @import("os/uefi.zig"); @@ -40,214 +31,15 @@ pub const wasi = @import("os/wasi.zig"); pub const emscripten = @import("os/emscripten.zig"); pub const windows = @import("os/windows.zig"); -comptime { - assert(@import("std") == std); // std lib tests require --zig-lib-dir -} - test { - _ = darwin; _ = linux; if (builtin.os.tag == .uefi) { _ = uefi; } _ = wasi; _ = windows; - - _ = @import("os/test.zig"); } -/// Applications can override the `system` API layer in their root source file. -/// Otherwise, when linking libc, this is the C API. -/// When not linking libc, it is the OS-specific system interface. -pub const system = if (@hasDecl(root, "os") and @hasDecl(root.os, "system") and root.os != @This()) - root.os.system -else if (use_libc) - std.c -else switch (builtin.os.tag) { - .linux => linux, - .plan9 => plan9, - .uefi => uefi, - else => struct {}, -}; - -/// Whether to use libc for the POSIX API layer. -const use_libc = builtin.link_libc or switch (builtin.os.tag) { - .windows, .wasi => true, - else => false, -}; - -pub const AF = system.AF; -pub const AF_SUN = system.AF_SUN; -pub const ARCH = system.ARCH; -pub const AT = system.AT; -pub const AT_SUN = system.AT_SUN; -pub const CLOCK = system.CLOCK; -pub const CPU_COUNT = system.CPU_COUNT; -pub const CTL = system.CTL; -pub const DT = system.DT; -pub const E = system.E; -pub const Elf_Symndx = system.Elf_Symndx; -pub const F = system.F; -pub const FD_CLOEXEC = system.FD_CLOEXEC; -pub const Flock = system.Flock; -pub const HOST_NAME_MAX = system.HOST_NAME_MAX; -pub const HW = system.HW; -pub const IFNAMESIZE = system.IFNAMESIZE; -pub const IOV_MAX = system.IOV_MAX; -pub const IPPROTO = system.IPPROTO; -pub const KERN = system.KERN; -pub const Kevent = system.Kevent; -pub const LOCK = system.LOCK; -pub const MADV = system.MADV; -pub const MAP = system.MAP; -pub const MSF = system.MSF; -pub const MAX_ADDR_LEN = system.MAX_ADDR_LEN; -pub const MFD = system.MFD; -pub const MMAP2_UNIT = system.MMAP2_UNIT; -pub const MSG = system.MSG; -pub const NAME_MAX = system.NAME_MAX; -pub const O = system.O; -pub const PATH_MAX = system.PATH_MAX; -pub const POLL = system.POLL; -pub const POSIX_FADV = system.POSIX_FADV; -pub const PR = system.PR; -pub const PROT = system.PROT; -pub const REG = system.REG; -pub const RLIM = system.RLIM; -pub const RR = system.RR; -pub const S = system.S; -pub const SA = system.SA; -pub const SC = system.SC; -pub const _SC = system._SC; -pub const SEEK = system.SEEK; -pub const SHUT = system.SHUT; -pub const SIG = system.SIG; -pub const SIOCGIFINDEX = system.SIOCGIFINDEX; -pub const SO = system.SO; -pub const SOCK = system.SOCK; -pub const SOL = system.SOL; -pub const STDERR_FILENO = system.STDERR_FILENO; -pub const STDIN_FILENO = system.STDIN_FILENO; -pub const STDOUT_FILENO = system.STDOUT_FILENO; -pub const SYS = system.SYS; -pub const Sigaction = system.Sigaction; -pub const Stat = system.Stat; -pub const T = system.T; -pub const TCSA = system.TCSA; -pub const TCP = system.TCP; -pub const VDSO = system.VDSO; -pub const W = system.W; -pub const addrinfo = system.addrinfo; -pub const blkcnt_t = system.blkcnt_t; -pub const blksize_t = system.blksize_t; -pub const clock_t = system.clock_t; -pub const cpu_set_t = system.cpu_set_t; -pub const dev_t = system.dev_t; -pub const dl_phdr_info = system.dl_phdr_info; -pub const empty_sigset = system.empty_sigset; -pub const filled_sigset = system.filled_sigset; -pub const fd_t = system.fd_t; -pub const gid_t = system.gid_t; -pub const ifreq = system.ifreq; -pub const ino_t = system.ino_t; -pub const mcontext_t = system.mcontext_t; -pub const mode_t = system.mode_t; -pub const msghdr = system.msghdr; -pub const msghdr_const = system.msghdr_const; -pub const nfds_t = system.nfds_t; -pub const nlink_t = system.nlink_t; -pub const off_t = system.off_t; -pub const pid_t = system.pid_t; -pub const pollfd = system.pollfd; -pub const port_t = system.port_t; -pub const port_event = system.port_event; -pub const port_notify = system.port_notify; -pub const file_obj = system.file_obj; -pub const rlim_t = system.rlim_t; -pub const rlimit = system.rlimit; -pub const rlimit_resource = system.rlimit_resource; -pub const rusage = system.rusage; -pub const sa_family_t = system.sa_family_t; -pub const siginfo_t = system.siginfo_t; -pub const sigset_t = system.sigset_t; -pub const sockaddr = system.sockaddr; -pub const socklen_t = system.socklen_t; -pub const stack_t = system.stack_t; -pub const time_t = system.time_t; -pub const timespec = system.timespec; -pub const timestamp_t = system.timestamp_t; -pub const timeval = system.timeval; -pub const timezone = system.timezone; -pub const ucontext_t = system.ucontext_t; -pub const uid_t = system.uid_t; -pub const user_desc = system.user_desc; -pub const utsname = system.utsname; -pub const winsize = system.winsize; - -pub const termios = system.termios; -pub const CSIZE = system.CSIZE; -pub const NCCS = system.NCCS; -pub const cc_t = system.cc_t; -pub const V = system.V; -pub const speed_t = system.speed_t; -pub const tc_iflag_t = system.tc_iflag_t; -pub const tc_oflag_t = system.tc_oflag_t; -pub const tc_cflag_t = system.tc_cflag_t; -pub const tc_lflag_t = system.tc_lflag_t; - -pub const F_OK = system.F_OK; -pub const R_OK = system.R_OK; -pub const W_OK = system.W_OK; -pub const X_OK = system.X_OK; - -pub const iovec = extern struct { - iov_base: [*]u8, - iov_len: usize, -}; - -pub const iovec_const = extern struct { - iov_base: [*]const u8, - iov_len: usize, -}; - -pub const ACCMODE = enum(u2) { - RDONLY = 0, - WRONLY = 1, - RDWR = 2, -}; - -pub const LOG = struct { - /// system is unusable - pub const EMERG = 0; - /// action must be taken immediately - pub const ALERT = 1; - /// critical conditions - pub const CRIT = 2; - /// error conditions - pub const ERR = 3; - /// warning conditions - pub const WARNING = 4; - /// normal but significant condition - pub const NOTICE = 5; - /// informational - pub const INFO = 6; - /// debug-level messages - pub const DEBUG = 7; -}; - -/// An fd-relative file path -/// -/// This is currently only used for WASI-specific functionality, but the concept -/// is the same as the dirfd/pathname pairs in the `*at(...)` POSIX functions. -pub const RelativePathWasi = struct { - /// Handle to directory - dir_fd: fd_t, - /// Path to resource within `dir_fd`. - relative_path: []const u8, -}; - -pub const socket_t = if (builtin.os.tag == .windows) windows.ws2_32.SOCKET else fd_t; - /// See also `getenv`. Populated by startup code before main(). /// TODO this is a footgun because the value will be undefined when using `zig build-lib`. /// https://github.com/ziglang/zig/issues/4524 @@ -262,4662 +54,9 @@ pub var argv: [][*:0]u8 = if (builtin.link_libc) undefined else switch (builtin. else => undefined, }; -pub const have_sigpipe_support = @hasDecl(@This(), "SIG") and @hasDecl(SIG, "PIPE"); - -fn noopSigHandler(_: c_int) callconv(.C) void {} - -/// On default executed by posix startup code before main(), if SIGPIPE is supported. -pub fn maybeIgnoreSigpipe() void { - if (have_sigpipe_support and !std.options.keep_sigpipe) { - const act = Sigaction{ - // We set handler to a noop function instead of SIG.IGN so we don't leak our - // signal disposition to a child process - .handler = .{ .handler = noopSigHandler }, - .mask = empty_sigset, - .flags = 0, - }; - sigaction(SIG.PIPE, &act, null) catch |err| - std.debug.panic("failed to install noop SIGPIPE handler with '{s}'", .{@errorName(err)}); - } -} - -/// To obtain errno, call this function with the return value of the -/// system function call. For some systems this will obtain the value directly -/// from the return code; for others it will use a thread-local errno variable. -/// Therefore, this function only returns a well-defined value when it is called -/// directly after the system function call which one wants to learn the errno -/// value of. -pub const errno = system.getErrno; - -/// Closes the file descriptor. -/// This function is not capable of returning any indication of failure. An -/// application which wants to ensure writes have succeeded before closing -/// must call `fsync` before `close`. -/// Note: The Zig standard library does not support POSIX thread cancellation. -pub fn close(fd: fd_t) void { - if (builtin.os.tag == .windows) { - return windows.CloseHandle(fd); - } - if (builtin.os.tag == .wasi and !builtin.link_libc) { - _ = wasi.fd_close(fd); - return; - } - if (builtin.target.isDarwin()) { - // This avoids the EINTR problem. - switch (darwin.getErrno(darwin.@"close$NOCANCEL"(fd))) { - .BADF => unreachable, // Always a race condition. - else => return, - } - } - switch (errno(system.close(fd))) { - .BADF => unreachable, // Always a race condition. - .INTR => return, // This is still a success. See https://github.com/ziglang/zig/issues/2425 - else => return, - } -} - -pub const FChmodError = error{ - AccessDenied, - InputOutput, - SymLinkLoop, - FileNotFound, - SystemResources, - ReadOnlyFileSystem, -} || UnexpectedError; - -/// Changes the mode of the file referred to by the file descriptor. -/// The process must have the correct privileges in order to do this -/// successfully, or must have the effective user ID matching the owner -/// of the file. -pub fn fchmod(fd: fd_t, mode: mode_t) FChmodError!void { - if (!std.fs.has_executable_bit) @compileError("fchmod unsupported by target OS"); - - while (true) { - const res = system.fchmod(fd, mode); - - switch (system.getErrno(res)) { - .SUCCESS => return, - .INTR => continue, - .BADF => unreachable, - .FAULT => unreachable, - .INVAL => unreachable, - .ACCES => return error.AccessDenied, - .IO => return error.InputOutput, - .LOOP => return error.SymLinkLoop, - .NOENT => return error.FileNotFound, - .NOMEM => return error.SystemResources, - .NOTDIR => return error.FileNotFound, - .PERM => return error.AccessDenied, - .ROFS => return error.ReadOnlyFileSystem, - else => |err| return unexpectedErrno(err), - } - } -} - -const FChmodAtError = FChmodError || error{ - /// A component of `path` exceeded `NAME_MAX`, or the entire path exceeded - /// `PATH_MAX`. - NameTooLong, - /// `path` resolves to a symbolic link, and `AT.SYMLINK_NOFOLLOW` was set - /// in `flags`. This error only occurs on Linux, where changing the mode of - /// a symbolic link has no meaning and can cause undefined behaviour on - /// certain filesystems. - /// - /// The procfs fallback was used but procfs was not mounted. - OperationNotSupported, - /// The procfs fallback was used but the process exceeded its open file - /// limit. - ProcessFdQuotaExceeded, - /// The procfs fallback was used but the system exceeded it open file limit. - SystemFdQuotaExceeded, -}; - -var has_fchmodat2_syscall = std.atomic.Value(bool).init(true); - -/// Changes the `mode` of `path` relative to the directory referred to by -/// `dirfd`. The process must have the correct privileges in order to do this -/// successfully, or must have the effective user ID matching the owner of the -/// file. -/// -/// On Linux the `fchmodat2` syscall will be used if available, otherwise a -/// workaround using procfs will be employed. Changing the mode of a symbolic -/// link with `AT.SYMLINK_NOFOLLOW` set will also return -/// `OperationNotSupported`, as: -/// -/// 1. Permissions on the link are ignored when resolving its target. -/// 2. This operation has been known to invoke undefined behaviour across -/// different filesystems[1]. -/// -/// [1]: https://sourceware.org/legacy-ml/libc-alpha/2020-02/msg00467.html. -pub inline fn fchmodat(dirfd: fd_t, path: []const u8, mode: mode_t, flags: u32) FChmodAtError!void { - if (!std.fs.has_executable_bit) @compileError("fchmodat unsupported by target OS"); - - // No special handling for linux is needed if we can use the libc fallback - // or `flags` is empty. Glibc only added the fallback in 2.32. - const skip_fchmodat_fallback = builtin.os.tag != .linux or - std.c.versionCheck(.{ .major = 2, .minor = 32, .patch = 0 }) or - flags == 0; - - // This function is marked inline so that when flags is comptime-known, - // skip_fchmodat_fallback will be comptime-known true. - if (skip_fchmodat_fallback) - return fchmodat1(dirfd, path, mode, flags); - - return fchmodat2(dirfd, path, mode, flags); -} - -fn fchmodat1(dirfd: fd_t, path: []const u8, mode: mode_t, flags: u32) FChmodAtError!void { - const path_c = try toPosixPath(path); - while (true) { - const res = system.fchmodat(dirfd, &path_c, mode, flags); - switch (system.getErrno(res)) { - .SUCCESS => return, - .INTR => continue, - .BADF => unreachable, - .FAULT => unreachable, - .INVAL => unreachable, - .ACCES => return error.AccessDenied, - .IO => return error.InputOutput, - .LOOP => return error.SymLinkLoop, - .MFILE => return error.ProcessFdQuotaExceeded, - .NAMETOOLONG => return error.NameTooLong, - .NFILE => return error.SystemFdQuotaExceeded, - .NOENT => return error.FileNotFound, - .NOTDIR => return error.FileNotFound, - .NOMEM => return error.SystemResources, - .OPNOTSUPP => return error.OperationNotSupported, - .PERM => return error.AccessDenied, - .ROFS => return error.ReadOnlyFileSystem, - else => |err| return unexpectedErrno(err), - } - } -} - -fn fchmodat2(dirfd: fd_t, path: []const u8, mode: mode_t, flags: u32) FChmodAtError!void { - const path_c = try toPosixPath(path); - const use_fchmodat2 = (builtin.os.isAtLeast(.linux, .{ .major = 6, .minor = 6, .patch = 0 }) orelse false) and - has_fchmodat2_syscall.load(.monotonic); - while (use_fchmodat2) { - // Later on this should be changed to `system.fchmodat2` - // when the musl/glibc add a wrapper. - const res = linux.fchmodat2(dirfd, &path_c, mode, flags); - switch (linux.getErrno(res)) { - .SUCCESS => return, - .INTR => continue, - .BADF => unreachable, - .FAULT => unreachable, - .INVAL => unreachable, - .ACCES => return error.AccessDenied, - .IO => return error.InputOutput, - .LOOP => return error.SymLinkLoop, - .NOENT => return error.FileNotFound, - .NOMEM => return error.SystemResources, - .NOTDIR => return error.FileNotFound, - .OPNOTSUPP => return error.OperationNotSupported, - .PERM => return error.AccessDenied, - .ROFS => return error.ReadOnlyFileSystem, - - .NOSYS => { // Use fallback. - has_fchmodat2_syscall.store(false, .monotonic); - break; - }, - else => |err| return unexpectedErrno(err), - } - } - - // Fallback to changing permissions using procfs: - // - // 1. Open `path` as a `PATH` descriptor. - // 2. Stat the fd and check if it isn't a symbolic link. - // 3. Generate the procfs reference to the fd via `/proc/self/fd/{fd}`. - // 4. Pass the procfs path to `chmod` with the `mode`. - var pathfd: fd_t = undefined; - while (true) { - const rc = system.openat(dirfd, &path_c, .{ .PATH = true, .NOFOLLOW = true, .CLOEXEC = true }, @as(mode_t, 0)); - switch (system.getErrno(rc)) { - .SUCCESS => { - pathfd = @intCast(rc); - break; - }, - .INTR => continue, - .FAULT => unreachable, - .INVAL => unreachable, - .ACCES => return error.AccessDenied, - .PERM => return error.AccessDenied, - .LOOP => return error.SymLinkLoop, - .MFILE => return error.ProcessFdQuotaExceeded, - .NAMETOOLONG => return error.NameTooLong, - .NFILE => return error.SystemFdQuotaExceeded, - .NOENT => return error.FileNotFound, - .NOMEM => return error.SystemResources, - else => |err| return unexpectedErrno(err), - } - } - defer close(pathfd); - - const stat = fstatatZ(pathfd, "", AT.EMPTY_PATH) catch |err| switch (err) { - error.NameTooLong => unreachable, - error.FileNotFound => unreachable, - error.InvalidUtf8 => unreachable, - else => |e| return e, - }; - if ((stat.mode & S.IFMT) == S.IFLNK) - return error.OperationNotSupported; - - var procfs_buf: ["/proc/self/fd/-2147483648\x00".len]u8 = undefined; - const proc_path = std.fmt.bufPrintZ(procfs_buf[0..], "/proc/self/fd/{d}", .{pathfd}) catch unreachable; - while (true) { - const res = system.chmod(proc_path, mode); - switch (system.getErrno(res)) { - // Getting NOENT here means that procfs isn't mounted. - .NOENT => return error.OperationNotSupported, - - .SUCCESS => return, - .INTR => continue, - .BADF => unreachable, - .FAULT => unreachable, - .INVAL => unreachable, - .ACCES => return error.AccessDenied, - .IO => return error.InputOutput, - .LOOP => return error.SymLinkLoop, - .NOMEM => return error.SystemResources, - .NOTDIR => return error.FileNotFound, - .PERM => return error.AccessDenied, - .ROFS => return error.ReadOnlyFileSystem, - else => |err| return unexpectedErrno(err), - } - } -} - -pub const FChownError = error{ - AccessDenied, - InputOutput, - SymLinkLoop, - FileNotFound, - SystemResources, - ReadOnlyFileSystem, -} || UnexpectedError; - -/// Changes the owner and group of the file referred to by the file descriptor. -/// The process must have the correct privileges in order to do this -/// successfully. The group may be changed by the owner of the directory to -/// any group of which the owner is a member. If the owner or group is -/// specified as `null`, the ID is not changed. -pub fn fchown(fd: fd_t, owner: ?uid_t, group: ?gid_t) FChownError!void { - switch (builtin.os.tag) { - .windows, .wasi => @compileError("Unsupported OS"), - else => {}, - } - - while (true) { - const res = system.fchown(fd, owner orelse ~@as(uid_t, 0), group orelse ~@as(gid_t, 0)); - - switch (system.getErrno(res)) { - .SUCCESS => return, - .INTR => continue, - .BADF => unreachable, // Can be reached if the fd refers to a directory opened without `OpenDirOptions{ .iterate = true }` - - .FAULT => unreachable, - .INVAL => unreachable, - .ACCES => return error.AccessDenied, - .IO => return error.InputOutput, - .LOOP => return error.SymLinkLoop, - .NOENT => return error.FileNotFound, - .NOMEM => return error.SystemResources, - .NOTDIR => return error.FileNotFound, - .PERM => return error.AccessDenied, - .ROFS => return error.ReadOnlyFileSystem, - else => |err| return unexpectedErrno(err), - } - } -} - -pub const RebootError = error{ - PermissionDenied, -} || UnexpectedError; - -pub const RebootCommand = switch (builtin.os.tag) { - .linux => union(linux.LINUX_REBOOT.CMD) { - RESTART: void, - HALT: void, - CAD_ON: void, - CAD_OFF: void, - POWER_OFF: void, - RESTART2: [*:0]const u8, - SW_SUSPEND: void, - KEXEC: void, - }, - else => @compileError("Unsupported OS"), -}; - -pub fn reboot(cmd: RebootCommand) RebootError!void { - switch (builtin.os.tag) { - .linux => { - switch (system.getErrno(linux.reboot( - .MAGIC1, - .MAGIC2, - cmd, - switch (cmd) { - .RESTART2 => |s| s, - else => null, - }, - ))) { - .SUCCESS => {}, - .PERM => return error.PermissionDenied, - else => |err| return std.os.unexpectedErrno(err), - } - switch (cmd) { - .CAD_OFF => {}, - .CAD_ON => {}, - .SW_SUSPEND => {}, - - .HALT => unreachable, - .KEXEC => unreachable, - .POWER_OFF => unreachable, - .RESTART => unreachable, - .RESTART2 => unreachable, - } - }, - else => @compileError("Unsupported OS"), - } -} - -pub const GetRandomError = OpenError; - -/// Obtain a series of random bytes. These bytes can be used to seed user-space -/// random number generators or for cryptographic purposes. -/// When linking against libc, this calls the -/// appropriate OS-specific library call. Otherwise it uses the zig standard -/// library implementation. -pub fn getrandom(buffer: []u8) GetRandomError!void { - if (builtin.os.tag == .windows) { - return windows.RtlGenRandom(buffer); - } - if (builtin.os.tag == .linux or builtin.os.tag == .freebsd) { - var buf = buffer; - const use_c = builtin.os.tag != .linux or - std.c.versionCheck(std.SemanticVersion{ .major = 2, .minor = 25, .patch = 0 }); - - while (buf.len != 0) { - const num_read: usize, const err = if (use_c) res: { - const rc = std.c.getrandom(buf.ptr, buf.len, 0); - break :res .{ - @bitCast(rc), - std.c.getErrno(rc), - }; - } else res: { - const rc = linux.getrandom(buf.ptr, buf.len, 0); - break :res .{ - rc, - linux.getErrno(rc), - }; - }; - - switch (err) { - .SUCCESS => buf = buf[num_read..], - .INVAL => unreachable, - .FAULT => unreachable, - .INTR => continue, - .NOSYS => return getRandomBytesDevURandom(buf), - else => return unexpectedErrno(err), - } - } - return; - } - if (builtin.os.tag == .emscripten) { - const err = std.c.getErrno(std.c.getentropy(buffer.ptr, buffer.len)); - switch (err) { - .SUCCESS => return, - else => return unexpectedErrno(err), - } - } - switch (builtin.os.tag) { - .netbsd, .openbsd, .macos, .ios, .tvos, .watchos => { - system.arc4random_buf(buffer.ptr, buffer.len); - return; - }, - .wasi => switch (wasi.random_get(buffer.ptr, buffer.len)) { - .SUCCESS => return, - else => |err| return unexpectedErrno(err), - }, - else => return getRandomBytesDevURandom(buffer), - } -} - -fn getRandomBytesDevURandom(buf: []u8) !void { - const fd = try openZ("/dev/urandom", .{ .ACCMODE = .RDONLY, .CLOEXEC = true }, 0); - defer close(fd); - - const st = try fstat(fd); - if (!S.ISCHR(st.mode)) { - return error.NoDevice; - } - - const file = std.fs.File{ .handle = fd }; - const stream = file.reader(); - stream.readNoEof(buf) catch return error.Unexpected; -} - -/// Causes abnormal process termination. -/// If linking against libc, this calls the abort() libc function. Otherwise -/// it raises SIGABRT followed by SIGKILL and finally lo -/// Invokes the current signal handler for SIGABRT, if any. -pub fn abort() noreturn { - @setCold(true); - // MSVCRT abort() sometimes opens a popup window which is undesirable, so - // even when linking libc on Windows we use our own abort implementation. - // See https://github.com/ziglang/zig/issues/2071 for more details. - if (builtin.os.tag == .windows) { - if (builtin.mode == .Debug) { - @breakpoint(); - } - windows.kernel32.ExitProcess(3); - } - if (!builtin.link_libc and builtin.os.tag == .linux) { - // The Linux man page says that the libc abort() function - // "first unblocks the SIGABRT signal", but this is a footgun - // for user-defined signal handlers that want to restore some state in - // some program sections and crash in others. - // So, the user-installed SIGABRT handler is run, if present. - raise(SIG.ABRT) catch {}; - - // Disable all signal handlers. - sigprocmask(SIG.BLOCK, &linux.all_mask, null); - - // Only one thread may proceed to the rest of abort(). - if (!builtin.single_threaded) { - const global = struct { - var abort_entered: bool = false; - }; - while (@cmpxchgWeak(bool, &global.abort_entered, false, true, .seq_cst, .seq_cst)) |_| {} - } - - // Install default handler so that the tkill below will terminate. - const sigact = Sigaction{ - .handler = .{ .handler = SIG.DFL }, - .mask = empty_sigset, - .flags = 0, - }; - sigaction(SIG.ABRT, &sigact, null) catch |err| switch (err) { - error.OperationNotSupported => unreachable, - }; - - _ = linux.tkill(linux.gettid(), SIG.ABRT); - - const sigabrtmask: linux.sigset_t = [_]u32{0} ** 31 ++ [_]u32{1 << (SIG.ABRT - 1)}; - sigprocmask(SIG.UNBLOCK, &sigabrtmask, null); - - // Beyond this point should be unreachable. - @as(*allowzero volatile u8, @ptrFromInt(0)).* = 0; - raise(SIG.KILL) catch {}; - exit(127); // Pid 1 might not be signalled in some containers. - } - switch (builtin.os.tag) { - .uefi, .wasi, .emscripten, .cuda, .amdhsa => @trap(), - else => system.abort(), - } -} - -pub const RaiseError = UnexpectedError; - -pub fn raise(sig: u8) RaiseError!void { - if (builtin.link_libc) { - switch (errno(system.raise(sig))) { - .SUCCESS => return, - else => |err| return unexpectedErrno(err), - } - } - - if (builtin.os.tag == .linux) { - var set: sigset_t = undefined; - // block application signals - sigprocmask(SIG.BLOCK, &linux.app_mask, &set); - - const tid = linux.gettid(); - const rc = linux.tkill(tid, sig); - - // restore signal mask - sigprocmask(SIG.SETMASK, &set, null); - - switch (errno(rc)) { - .SUCCESS => return, - else => |err| return unexpectedErrno(err), - } - } - - @compileError("std.os.raise unimplemented for this target"); -} - -pub const KillError = error{ ProcessNotFound, PermissionDenied } || UnexpectedError; - -pub fn kill(pid: pid_t, sig: u8) KillError!void { - switch (errno(system.kill(pid, sig))) { - .SUCCESS => return, - .INVAL => unreachable, // invalid signal - .PERM => return error.PermissionDenied, - .SRCH => return error.ProcessNotFound, - else => |err| return unexpectedErrno(err), - } -} - -/// Exits the program cleanly with the specified status code. -pub fn exit(status: u8) noreturn { - if (builtin.link_libc) { - system.exit(status); - } - if (builtin.os.tag == .windows) { - windows.kernel32.ExitProcess(status); - } - if (builtin.os.tag == .wasi) { - wasi.proc_exit(status); - } - if (builtin.os.tag == .linux and !builtin.single_threaded) { - linux.exit_group(status); - } - if (builtin.os.tag == .uefi) { - // exit() is only available if exitBootServices() has not been called yet. - // This call to exit should not fail, so we don't care about its return value. - if (uefi.system_table.boot_services) |bs| { - _ = bs.exit(uefi.handle, @enumFromInt(status), 0, null); - } - // If we can't exit, reboot the system instead. - uefi.system_table.runtime_services.resetSystem(.ResetCold, @enumFromInt(status), 0, null); - } - system.exit(status); -} - -pub const ReadError = error{ - InputOutput, - SystemResources, - IsDir, - OperationAborted, - BrokenPipe, - ConnectionResetByPeer, - ConnectionTimedOut, - NotOpenForReading, - SocketNotConnected, - - /// This error occurs when no global event loop is configured, - /// and reading from the file descriptor would block. - WouldBlock, - - /// In WASI, this error occurs when the file descriptor does - /// not hold the required rights to read from it. - AccessDenied, -} || UnexpectedError; - -/// Returns the number of bytes that were read, which can be less than -/// buf.len. If 0 bytes were read, that means EOF. -/// If `fd` is opened in non blocking mode, the function will return error.WouldBlock -/// when EAGAIN is received. -/// -/// Linux has a limit on how many bytes may be transferred in one `read` call, which is `0x7ffff000` -/// on both 64-bit and 32-bit systems. This is due to using a signed C int as the return value, as -/// well as stuffing the errno codes into the last `4096` values. This is noted on the `read` man page. -/// The limit on Darwin is `0x7fffffff`, trying to read more than that returns EINVAL. -/// The corresponding POSIX limit is `math.maxInt(isize)`. -pub fn read(fd: fd_t, buf: []u8) ReadError!usize { - if (buf.len == 0) return 0; - if (builtin.os.tag == .windows) { - return windows.ReadFile(fd, buf, null); - } - if (builtin.os.tag == .wasi and !builtin.link_libc) { - const iovs = [1]iovec{iovec{ - .iov_base = buf.ptr, - .iov_len = buf.len, - }}; - - var nread: usize = undefined; - switch (wasi.fd_read(fd, &iovs, iovs.len, &nread)) { - .SUCCESS => return nread, - .INTR => unreachable, - .INVAL => unreachable, - .FAULT => unreachable, - .AGAIN => unreachable, - .BADF => return error.NotOpenForReading, // Can be a race condition. - .IO => return error.InputOutput, - .ISDIR => return error.IsDir, - .NOBUFS => return error.SystemResources, - .NOMEM => return error.SystemResources, - .NOTCONN => return error.SocketNotConnected, - .CONNRESET => return error.ConnectionResetByPeer, - .TIMEDOUT => return error.ConnectionTimedOut, - .NOTCAPABLE => return error.AccessDenied, - else => |err| return unexpectedErrno(err), - } - } - - // Prevents EINVAL. - const max_count = switch (builtin.os.tag) { - .linux => 0x7ffff000, - .macos, .ios, .watchos, .tvos => math.maxInt(i32), - else => math.maxInt(isize), - }; - while (true) { - const rc = system.read(fd, buf.ptr, @min(buf.len, max_count)); - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - .INTR => continue, - .INVAL => unreachable, - .FAULT => unreachable, - .AGAIN => return error.WouldBlock, - .BADF => return error.NotOpenForReading, // Can be a race condition. - .IO => return error.InputOutput, - .ISDIR => return error.IsDir, - .NOBUFS => return error.SystemResources, - .NOMEM => return error.SystemResources, - .NOTCONN => return error.SocketNotConnected, - .CONNRESET => return error.ConnectionResetByPeer, - .TIMEDOUT => return error.ConnectionTimedOut, - else => |err| return unexpectedErrno(err), - } - } -} - -/// Number of bytes read is returned. Upon reading end-of-file, zero is returned. -/// -/// For POSIX systems, if `fd` is opened in non blocking mode, the function will -/// return error.WouldBlock when EAGAIN is received. -/// On Windows, if the application has a global event loop enabled, I/O Completion Ports are -/// used to perform the I/O. `error.WouldBlock` is not possible on Windows. -/// -/// This operation is non-atomic on the following systems: -/// * Windows -/// On these systems, the read races with concurrent writes to the same file descriptor. -/// -/// This function assumes that all vectors, including zero-length vectors, have -/// a pointer within the address space of the application. -pub fn readv(fd: fd_t, iov: []const iovec) ReadError!usize { - if (builtin.os.tag == .windows) { - // TODO improve this to use ReadFileScatter - if (iov.len == 0) return 0; - const first = iov[0]; - return read(fd, first.iov_base[0..first.iov_len]); - } - if (builtin.os.tag == .wasi and !builtin.link_libc) { - var nread: usize = undefined; - switch (wasi.fd_read(fd, iov.ptr, iov.len, &nread)) { - .SUCCESS => return nread, - .INTR => unreachable, - .INVAL => unreachable, - .FAULT => unreachable, - .AGAIN => unreachable, // currently not support in WASI - .BADF => return error.NotOpenForReading, // can be a race condition - .IO => return error.InputOutput, - .ISDIR => return error.IsDir, - .NOBUFS => return error.SystemResources, - .NOMEM => return error.SystemResources, - .NOTCONN => return error.SocketNotConnected, - .CONNRESET => return error.ConnectionResetByPeer, - .TIMEDOUT => return error.ConnectionTimedOut, - .NOTCAPABLE => return error.AccessDenied, - else => |err| return unexpectedErrno(err), - } - } - - while (true) { - const rc = system.readv(fd, iov.ptr, @min(iov.len, IOV_MAX)); - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - .INTR => continue, - .INVAL => unreachable, - .FAULT => unreachable, - .AGAIN => return error.WouldBlock, - .BADF => return error.NotOpenForReading, // can be a race condition - .IO => return error.InputOutput, - .ISDIR => return error.IsDir, - .NOBUFS => return error.SystemResources, - .NOMEM => return error.SystemResources, - .NOTCONN => return error.SocketNotConnected, - .CONNRESET => return error.ConnectionResetByPeer, - .TIMEDOUT => return error.ConnectionTimedOut, - else => |err| return unexpectedErrno(err), - } - } -} - -pub const PReadError = ReadError || error{Unseekable}; - -/// Number of bytes read is returned. Upon reading end-of-file, zero is returned. -/// -/// Retries when interrupted by a signal. -/// -/// For POSIX systems, if `fd` is opened in non blocking mode, the function will -/// return error.WouldBlock when EAGAIN is received. -/// On Windows, if the application has a global event loop enabled, I/O Completion Ports are -/// used to perform the I/O. `error.WouldBlock` is not possible on Windows. -/// -/// Linux has a limit on how many bytes may be transferred in one `pread` call, which is `0x7ffff000` -/// on both 64-bit and 32-bit systems. This is due to using a signed C int as the return value, as -/// well as stuffing the errno codes into the last `4096` values. This is noted on the `read` man page. -/// The limit on Darwin is `0x7fffffff`, trying to read more than that returns EINVAL. -/// The corresponding POSIX limit is `math.maxInt(isize)`. -pub fn pread(fd: fd_t, buf: []u8, offset: u64) PReadError!usize { - if (buf.len == 0) return 0; - if (builtin.os.tag == .windows) { - return windows.ReadFile(fd, buf, offset); - } - if (builtin.os.tag == .wasi and !builtin.link_libc) { - const iovs = [1]iovec{iovec{ - .iov_base = buf.ptr, - .iov_len = buf.len, - }}; - - var nread: usize = undefined; - switch (wasi.fd_pread(fd, &iovs, iovs.len, offset, &nread)) { - .SUCCESS => return nread, - .INTR => unreachable, - .INVAL => unreachable, - .FAULT => unreachable, - .AGAIN => unreachable, - .BADF => return error.NotOpenForReading, // Can be a race condition. - .IO => return error.InputOutput, - .ISDIR => return error.IsDir, - .NOBUFS => return error.SystemResources, - .NOMEM => return error.SystemResources, - .NOTCONN => return error.SocketNotConnected, - .CONNRESET => return error.ConnectionResetByPeer, - .TIMEDOUT => return error.ConnectionTimedOut, - .NXIO => return error.Unseekable, - .SPIPE => return error.Unseekable, - .OVERFLOW => return error.Unseekable, - .NOTCAPABLE => return error.AccessDenied, - else => |err| return unexpectedErrno(err), - } - } - - // Prevent EINVAL. - const max_count = switch (builtin.os.tag) { - .linux => 0x7ffff000, - .macos, .ios, .watchos, .tvos => math.maxInt(i32), - else => math.maxInt(isize), - }; - - const pread_sym = if (lfs64_abi) system.pread64 else system.pread; - while (true) { - const rc = pread_sym(fd, buf.ptr, @min(buf.len, max_count), @bitCast(offset)); - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - .INTR => continue, - .INVAL => unreachable, - .FAULT => unreachable, - .AGAIN => return error.WouldBlock, - .BADF => return error.NotOpenForReading, // Can be a race condition. - .IO => return error.InputOutput, - .ISDIR => return error.IsDir, - .NOBUFS => return error.SystemResources, - .NOMEM => return error.SystemResources, - .NOTCONN => return error.SocketNotConnected, - .CONNRESET => return error.ConnectionResetByPeer, - .TIMEDOUT => return error.ConnectionTimedOut, - .NXIO => return error.Unseekable, - .SPIPE => return error.Unseekable, - .OVERFLOW => return error.Unseekable, - else => |err| return unexpectedErrno(err), - } - } -} - -pub const TruncateError = error{ - FileTooBig, - InputOutput, - FileBusy, - - /// In WASI, this error occurs when the file descriptor does - /// not hold the required rights to call `ftruncate` on it. - AccessDenied, -} || UnexpectedError; - -pub fn ftruncate(fd: fd_t, length: u64) TruncateError!void { - if (builtin.os.tag == .windows) { - var io_status_block: windows.IO_STATUS_BLOCK = undefined; - var eof_info = windows.FILE_END_OF_FILE_INFORMATION{ - .EndOfFile = @bitCast(length), - }; - - const rc = windows.ntdll.NtSetInformationFile( - fd, - &io_status_block, - &eof_info, - @sizeOf(windows.FILE_END_OF_FILE_INFORMATION), - .FileEndOfFileInformation, - ); - - switch (rc) { - .SUCCESS => return, - .INVALID_HANDLE => unreachable, // Handle not open for writing - .ACCESS_DENIED => return error.AccessDenied, - else => return windows.unexpectedStatus(rc), - } - } - if (builtin.os.tag == .wasi and !builtin.link_libc) { - switch (wasi.fd_filestat_set_size(fd, length)) { - .SUCCESS => return, - .INTR => unreachable, - .FBIG => return error.FileTooBig, - .IO => return error.InputOutput, - .PERM => return error.AccessDenied, - .TXTBSY => return error.FileBusy, - .BADF => unreachable, // Handle not open for writing - .INVAL => unreachable, // Handle not open for writing - .NOTCAPABLE => return error.AccessDenied, - else => |err| return unexpectedErrno(err), - } - } - - const ftruncate_sym = if (lfs64_abi) system.ftruncate64 else system.ftruncate; - while (true) { - switch (errno(ftruncate_sym(fd, @bitCast(length)))) { - .SUCCESS => return, - .INTR => continue, - .FBIG => return error.FileTooBig, - .IO => return error.InputOutput, - .PERM => return error.AccessDenied, - .TXTBSY => return error.FileBusy, - .BADF => unreachable, // Handle not open for writing - .INVAL => unreachable, // Handle not open for writing - else => |err| return unexpectedErrno(err), - } - } -} - -/// Number of bytes read is returned. Upon reading end-of-file, zero is returned. -/// -/// Retries when interrupted by a signal. -/// -/// For POSIX systems, if `fd` is opened in non blocking mode, the function will -/// return error.WouldBlock when EAGAIN is received. -/// On Windows, if the application has a global event loop enabled, I/O Completion Ports are -/// used to perform the I/O. `error.WouldBlock` is not possible on Windows. -/// -/// This operation is non-atomic on the following systems: -/// * Darwin -/// * Windows -/// On these systems, the read races with concurrent writes to the same file descriptor. -pub fn preadv(fd: fd_t, iov: []const iovec, offset: u64) PReadError!usize { - const have_pread_but_not_preadv = switch (builtin.os.tag) { - .windows, .macos, .ios, .watchos, .tvos, .haiku => true, - else => false, - }; - if (have_pread_but_not_preadv) { - // We could loop here; but proper usage of `preadv` must handle partial reads anyway. - // So we simply read into the first vector only. - if (iov.len == 0) return 0; - const first = iov[0]; - return pread(fd, first.iov_base[0..first.iov_len], offset); - } - if (builtin.os.tag == .wasi and !builtin.link_libc) { - var nread: usize = undefined; - switch (wasi.fd_pread(fd, iov.ptr, iov.len, offset, &nread)) { - .SUCCESS => return nread, - .INTR => unreachable, - .INVAL => unreachable, - .FAULT => unreachable, - .AGAIN => unreachable, - .BADF => return error.NotOpenForReading, // can be a race condition - .IO => return error.InputOutput, - .ISDIR => return error.IsDir, - .NOBUFS => return error.SystemResources, - .NOMEM => return error.SystemResources, - .NOTCONN => return error.SocketNotConnected, - .CONNRESET => return error.ConnectionResetByPeer, - .TIMEDOUT => return error.ConnectionTimedOut, - .NXIO => return error.Unseekable, - .SPIPE => return error.Unseekable, - .OVERFLOW => return error.Unseekable, - .NOTCAPABLE => return error.AccessDenied, - else => |err| return unexpectedErrno(err), - } - } - - const preadv_sym = if (lfs64_abi) system.preadv64 else system.preadv; - while (true) { - const rc = preadv_sym(fd, iov.ptr, @min(iov.len, IOV_MAX), @bitCast(offset)); - switch (errno(rc)) { - .SUCCESS => return @bitCast(rc), - .INTR => continue, - .INVAL => unreachable, - .FAULT => unreachable, - .AGAIN => return error.WouldBlock, - .BADF => return error.NotOpenForReading, // can be a race condition - .IO => return error.InputOutput, - .ISDIR => return error.IsDir, - .NOBUFS => return error.SystemResources, - .NOMEM => return error.SystemResources, - .NOTCONN => return error.SocketNotConnected, - .CONNRESET => return error.ConnectionResetByPeer, - .TIMEDOUT => return error.ConnectionTimedOut, - .NXIO => return error.Unseekable, - .SPIPE => return error.Unseekable, - .OVERFLOW => return error.Unseekable, - else => |err| return unexpectedErrno(err), - } - } -} - -pub const WriteError = error{ - DiskQuota, - FileTooBig, - InputOutput, - NoSpaceLeft, - DeviceBusy, - InvalidArgument, - - /// In WASI, this error may occur when the file descriptor does - /// not hold the required rights to write to it. - AccessDenied, - BrokenPipe, - SystemResources, - OperationAborted, - NotOpenForWriting, - - /// The process cannot access the file because another process has locked - /// a portion of the file. Windows-only. - LockViolation, - - /// This error occurs when no global event loop is configured, - /// and reading from the file descriptor would block. - WouldBlock, - - /// Connection reset by peer. - ConnectionResetByPeer, -} || UnexpectedError; - -/// Write to a file descriptor. -/// Retries when interrupted by a signal. -/// Returns the number of bytes written. If nonzero bytes were supplied, this will be nonzero. -/// -/// Note that a successful write() may transfer fewer than count bytes. Such partial writes can -/// occur for various reasons; for example, because there was insufficient space on the disk -/// device to write all of the requested bytes, or because a blocked write() to a socket, pipe, or -/// similar was interrupted by a signal handler after it had transferred some, but before it had -/// transferred all of the requested bytes. In the event of a partial write, the caller can make -/// another write() call to transfer the remaining bytes. The subsequent call will either -/// transfer further bytes or may result in an error (e.g., if the disk is now full). -/// -/// For POSIX systems, if `fd` is opened in non blocking mode, the function will -/// return error.WouldBlock when EAGAIN is received. -/// On Windows, if the application has a global event loop enabled, I/O Completion Ports are -/// used to perform the I/O. `error.WouldBlock` is not possible on Windows. -/// -/// Linux has a limit on how many bytes may be transferred in one `write` call, which is `0x7ffff000` -/// on both 64-bit and 32-bit systems. This is due to using a signed C int as the return value, as -/// well as stuffing the errno codes into the last `4096` values. This is noted on the `write` man page. -/// The limit on Darwin is `0x7fffffff`, trying to read more than that returns EINVAL. -/// The corresponding POSIX limit is `math.maxInt(isize)`. -pub fn write(fd: fd_t, bytes: []const u8) WriteError!usize { - if (bytes.len == 0) return 0; - if (builtin.os.tag == .windows) { - return windows.WriteFile(fd, bytes, null); - } - - if (builtin.os.tag == .wasi and !builtin.link_libc) { - const ciovs = [_]iovec_const{iovec_const{ - .iov_base = bytes.ptr, - .iov_len = bytes.len, - }}; - var nwritten: usize = undefined; - switch (wasi.fd_write(fd, &ciovs, ciovs.len, &nwritten)) { - .SUCCESS => return nwritten, - .INTR => unreachable, - .INVAL => unreachable, - .FAULT => unreachable, - .AGAIN => unreachable, - .BADF => return error.NotOpenForWriting, // can be a race condition. - .DESTADDRREQ => unreachable, // `connect` was never called. - .DQUOT => return error.DiskQuota, - .FBIG => return error.FileTooBig, - .IO => return error.InputOutput, - .NOSPC => return error.NoSpaceLeft, - .PERM => return error.AccessDenied, - .PIPE => return error.BrokenPipe, - .NOTCAPABLE => return error.AccessDenied, - else => |err| return unexpectedErrno(err), - } - } - - const max_count = switch (builtin.os.tag) { - .linux => 0x7ffff000, - .macos, .ios, .watchos, .tvos => math.maxInt(i32), - else => math.maxInt(isize), - }; - while (true) { - const rc = system.write(fd, bytes.ptr, @min(bytes.len, max_count)); - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - .INTR => continue, - .INVAL => return error.InvalidArgument, - .FAULT => unreachable, - .AGAIN => return error.WouldBlock, - .BADF => return error.NotOpenForWriting, // can be a race condition. - .DESTADDRREQ => unreachable, // `connect` was never called. - .DQUOT => return error.DiskQuota, - .FBIG => return error.FileTooBig, - .IO => return error.InputOutput, - .NOSPC => return error.NoSpaceLeft, - .PERM => return error.AccessDenied, - .PIPE => return error.BrokenPipe, - .CONNRESET => return error.ConnectionResetByPeer, - .BUSY => return error.DeviceBusy, - else => |err| return unexpectedErrno(err), - } - } -} - -/// Write multiple buffers to a file descriptor. -/// Retries when interrupted by a signal. -/// Returns the number of bytes written. If nonzero bytes were supplied, this will be nonzero. -/// -/// Note that a successful write() may transfer fewer bytes than supplied. Such partial writes can -/// occur for various reasons; for example, because there was insufficient space on the disk -/// device to write all of the requested bytes, or because a blocked write() to a socket, pipe, or -/// similar was interrupted by a signal handler after it had transferred some, but before it had -/// transferred all of the requested bytes. In the event of a partial write, the caller can make -/// another write() call to transfer the remaining bytes. The subsequent call will either -/// transfer further bytes or may result in an error (e.g., if the disk is now full). -/// -/// For POSIX systems, if `fd` is opened in non blocking mode, the function will -/// return error.WouldBlock when EAGAIN is received. -/// On Windows, if the application has a global event loop enabled, I/O Completion Ports are -/// used to perform the I/O. `error.WouldBlock` is not possible on Windows. -/// -/// If `iov.len` is larger than `IOV_MAX`, a partial write will occur. -/// -/// This function assumes that all vectors, including zero-length vectors, have -/// a pointer within the address space of the application. -pub fn writev(fd: fd_t, iov: []const iovec_const) WriteError!usize { - if (builtin.os.tag == .windows) { - // TODO improve this to use WriteFileScatter - if (iov.len == 0) return 0; - const first = iov[0]; - return write(fd, first.iov_base[0..first.iov_len]); - } - if (builtin.os.tag == .wasi and !builtin.link_libc) { - var nwritten: usize = undefined; - switch (wasi.fd_write(fd, iov.ptr, iov.len, &nwritten)) { - .SUCCESS => return nwritten, - .INTR => unreachable, - .INVAL => unreachable, - .FAULT => unreachable, - .AGAIN => unreachable, - .BADF => return error.NotOpenForWriting, // can be a race condition. - .DESTADDRREQ => unreachable, // `connect` was never called. - .DQUOT => return error.DiskQuota, - .FBIG => return error.FileTooBig, - .IO => return error.InputOutput, - .NOSPC => return error.NoSpaceLeft, - .PERM => return error.AccessDenied, - .PIPE => return error.BrokenPipe, - .NOTCAPABLE => return error.AccessDenied, - else => |err| return unexpectedErrno(err), - } - } - - while (true) { - const rc = system.writev(fd, iov.ptr, @min(iov.len, IOV_MAX)); - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - .INTR => continue, - .INVAL => return error.InvalidArgument, - .FAULT => unreachable, - .AGAIN => return error.WouldBlock, - .BADF => return error.NotOpenForWriting, // Can be a race condition. - .DESTADDRREQ => unreachable, // `connect` was never called. - .DQUOT => return error.DiskQuota, - .FBIG => return error.FileTooBig, - .IO => return error.InputOutput, - .NOSPC => return error.NoSpaceLeft, - .PERM => return error.AccessDenied, - .PIPE => return error.BrokenPipe, - .CONNRESET => return error.ConnectionResetByPeer, - .BUSY => return error.DeviceBusy, - else => |err| return unexpectedErrno(err), - } - } -} - -pub const PWriteError = WriteError || error{Unseekable}; - -/// Write to a file descriptor, with a position offset. -/// Retries when interrupted by a signal. -/// Returns the number of bytes written. If nonzero bytes were supplied, this will be nonzero. -/// -/// Note that a successful write() may transfer fewer bytes than supplied. Such partial writes can -/// occur for various reasons; for example, because there was insufficient space on the disk -/// device to write all of the requested bytes, or because a blocked write() to a socket, pipe, or -/// similar was interrupted by a signal handler after it had transferred some, but before it had -/// transferred all of the requested bytes. In the event of a partial write, the caller can make -/// another write() call to transfer the remaining bytes. The subsequent call will either -/// transfer further bytes or may result in an error (e.g., if the disk is now full). -/// -/// For POSIX systems, if `fd` is opened in non blocking mode, the function will -/// return error.WouldBlock when EAGAIN is received. -/// On Windows, if the application has a global event loop enabled, I/O Completion Ports are -/// used to perform the I/O. `error.WouldBlock` is not possible on Windows. -/// -/// Linux has a limit on how many bytes may be transferred in one `pwrite` call, which is `0x7ffff000` -/// on both 64-bit and 32-bit systems. This is due to using a signed C int as the return value, as -/// well as stuffing the errno codes into the last `4096` values. This is noted on the `write` man page. -/// The limit on Darwin is `0x7fffffff`, trying to write more than that returns EINVAL. -/// The corresponding POSIX limit is `math.maxInt(isize)`. -pub fn pwrite(fd: fd_t, bytes: []const u8, offset: u64) PWriteError!usize { - if (bytes.len == 0) return 0; - if (builtin.os.tag == .windows) { - return windows.WriteFile(fd, bytes, offset); - } - if (builtin.os.tag == .wasi and !builtin.link_libc) { - const ciovs = [1]iovec_const{iovec_const{ - .iov_base = bytes.ptr, - .iov_len = bytes.len, - }}; - - var nwritten: usize = undefined; - switch (wasi.fd_pwrite(fd, &ciovs, ciovs.len, offset, &nwritten)) { - .SUCCESS => return nwritten, - .INTR => unreachable, - .INVAL => unreachable, - .FAULT => unreachable, - .AGAIN => unreachable, - .BADF => return error.NotOpenForWriting, // can be a race condition. - .DESTADDRREQ => unreachable, // `connect` was never called. - .DQUOT => return error.DiskQuota, - .FBIG => return error.FileTooBig, - .IO => return error.InputOutput, - .NOSPC => return error.NoSpaceLeft, - .PERM => return error.AccessDenied, - .PIPE => return error.BrokenPipe, - .NXIO => return error.Unseekable, - .SPIPE => return error.Unseekable, - .OVERFLOW => return error.Unseekable, - .NOTCAPABLE => return error.AccessDenied, - else => |err| return unexpectedErrno(err), - } - } - - // Prevent EINVAL. - const max_count = switch (builtin.os.tag) { - .linux => 0x7ffff000, - .macos, .ios, .watchos, .tvos => math.maxInt(i32), - else => math.maxInt(isize), - }; - - const pwrite_sym = if (lfs64_abi) system.pwrite64 else system.pwrite; - while (true) { - const rc = pwrite_sym(fd, bytes.ptr, @min(bytes.len, max_count), @bitCast(offset)); - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - .INTR => continue, - .INVAL => return error.InvalidArgument, - .FAULT => unreachable, - .AGAIN => return error.WouldBlock, - .BADF => return error.NotOpenForWriting, // Can be a race condition. - .DESTADDRREQ => unreachable, // `connect` was never called. - .DQUOT => return error.DiskQuota, - .FBIG => return error.FileTooBig, - .IO => return error.InputOutput, - .NOSPC => return error.NoSpaceLeft, - .PERM => return error.AccessDenied, - .PIPE => return error.BrokenPipe, - .NXIO => return error.Unseekable, - .SPIPE => return error.Unseekable, - .OVERFLOW => return error.Unseekable, - .BUSY => return error.DeviceBusy, - else => |err| return unexpectedErrno(err), - } - } -} - -/// Write multiple buffers to a file descriptor, with a position offset. -/// Retries when interrupted by a signal. -/// Returns the number of bytes written. If nonzero bytes were supplied, this will be nonzero. -/// -/// Note that a successful write() may transfer fewer than count bytes. Such partial writes can -/// occur for various reasons; for example, because there was insufficient space on the disk -/// device to write all of the requested bytes, or because a blocked write() to a socket, pipe, or -/// similar was interrupted by a signal handler after it had transferred some, but before it had -/// transferred all of the requested bytes. In the event of a partial write, the caller can make -/// another write() call to transfer the remaining bytes. The subsequent call will either -/// transfer further bytes or may result in an error (e.g., if the disk is now full). -/// -/// If `fd` is opened in non blocking mode, the function will -/// return error.WouldBlock when EAGAIN is received. -/// -/// The following systems do not have this syscall, and will return partial writes if more than one -/// vector is provided: -/// * Darwin -/// * Windows -/// -/// If `iov.len` is larger than `IOV_MAX`, a partial write will occur. -pub fn pwritev(fd: fd_t, iov: []const iovec_const, offset: u64) PWriteError!usize { - const have_pwrite_but_not_pwritev = switch (builtin.os.tag) { - .windows, .macos, .ios, .watchos, .tvos, .haiku => true, - else => false, - }; - - if (have_pwrite_but_not_pwritev) { - // We could loop here; but proper usage of `pwritev` must handle partial writes anyway. - // So we simply write the first vector only. - if (iov.len == 0) return 0; - const first = iov[0]; - return pwrite(fd, first.iov_base[0..first.iov_len], offset); - } - if (builtin.os.tag == .wasi and !builtin.link_libc) { - var nwritten: usize = undefined; - switch (wasi.fd_pwrite(fd, iov.ptr, iov.len, offset, &nwritten)) { - .SUCCESS => return nwritten, - .INTR => unreachable, - .INVAL => unreachable, - .FAULT => unreachable, - .AGAIN => unreachable, - .BADF => return error.NotOpenForWriting, // Can be a race condition. - .DESTADDRREQ => unreachable, // `connect` was never called. - .DQUOT => return error.DiskQuota, - .FBIG => return error.FileTooBig, - .IO => return error.InputOutput, - .NOSPC => return error.NoSpaceLeft, - .PERM => return error.AccessDenied, - .PIPE => return error.BrokenPipe, - .NXIO => return error.Unseekable, - .SPIPE => return error.Unseekable, - .OVERFLOW => return error.Unseekable, - .NOTCAPABLE => return error.AccessDenied, - else => |err| return unexpectedErrno(err), - } - } - - const pwritev_sym = if (lfs64_abi) system.pwritev64 else system.pwritev; - while (true) { - const rc = pwritev_sym(fd, iov.ptr, @min(iov.len, IOV_MAX), @bitCast(offset)); - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - .INTR => continue, - .INVAL => return error.InvalidArgument, - .FAULT => unreachable, - .AGAIN => return error.WouldBlock, - .BADF => return error.NotOpenForWriting, // Can be a race condition. - .DESTADDRREQ => unreachable, // `connect` was never called. - .DQUOT => return error.DiskQuota, - .FBIG => return error.FileTooBig, - .IO => return error.InputOutput, - .NOSPC => return error.NoSpaceLeft, - .PERM => return error.AccessDenied, - .PIPE => return error.BrokenPipe, - .NXIO => return error.Unseekable, - .SPIPE => return error.Unseekable, - .OVERFLOW => return error.Unseekable, - .BUSY => return error.DeviceBusy, - else => |err| return unexpectedErrno(err), - } - } -} - -pub const OpenError = error{ - /// In WASI, this error may occur when the file descriptor does - /// not hold the required rights to open a new resource relative to it. - AccessDenied, - SymLinkLoop, - ProcessFdQuotaExceeded, - SystemFdQuotaExceeded, - NoDevice, - FileNotFound, - - /// The path exceeded `MAX_PATH_BYTES` bytes. - NameTooLong, - - /// Insufficient kernel memory was available, or - /// the named file is a FIFO and per-user hard limit on - /// memory allocation for pipes has been reached. - SystemResources, - - /// The file is too large to be opened. This error is unreachable - /// for 64-bit targets, as well as when opening directories. - FileTooBig, - - /// The path refers to directory but the `DIRECTORY` flag was not provided. - IsDir, - - /// A new path cannot be created because the device has no room for the new file. - /// This error is only reachable when the `CREAT` flag is provided. - NoSpaceLeft, - - /// A component used as a directory in the path was not, in fact, a directory, or - /// `DIRECTORY` was specified and the path was not a directory. - NotDir, - - /// The path already exists and the `CREAT` and `EXCL` flags were provided. - PathAlreadyExists, - DeviceBusy, - - /// The underlying filesystem does not support file locks - FileLocksNotSupported, - - /// Path contains characters that are disallowed by the underlying filesystem. - BadPathName, - - /// WASI-only; file paths must be valid UTF-8. - InvalidUtf8, - - /// Windows-only; file paths provided by the user must be valid WTF-8. - /// https://simonsapin.github.io/wtf-8/ - InvalidWtf8, - - /// On Windows, `\\server` or `\\server\share` was not found. - NetworkNotFound, - - /// One of these three things: - /// * pathname refers to an executable image which is currently being - /// executed and write access was requested. - /// * pathname refers to a file that is currently in use as a swap - /// file, and the O_TRUNC flag was specified. - /// * pathname refers to a file that is currently being read by the - /// kernel (e.g., for module/firmware loading), and write access was - /// requested. - FileBusy, - - WouldBlock, -} || UnexpectedError; - -/// Open and possibly create a file. Keeps trying if it gets interrupted. -/// On Windows, `file_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On WASI, `file_path` should be encoded as valid UTF-8. -/// On other platforms, `file_path` is an opaque sequence of bytes with no particular encoding. -/// See also `openZ`. -pub fn open(file_path: []const u8, flags: O, perm: mode_t) OpenError!fd_t { - if (builtin.os.tag == .windows) { - @compileError("Windows does not support POSIX; use Windows-specific API or cross-platform std.fs API"); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - return openat(AT.FDCWD, file_path, flags, perm); - } - const file_path_c = try toPosixPath(file_path); - return openZ(&file_path_c, flags, perm); -} - -/// Open and possibly create a file. Keeps trying if it gets interrupted. -/// On Windows, `file_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On WASI, `file_path` should be encoded as valid UTF-8. -/// On other platforms, `file_path` is an opaque sequence of bytes with no particular encoding. -/// See also `open`. -pub fn openZ(file_path: [*:0]const u8, flags: O, perm: mode_t) OpenError!fd_t { - if (builtin.os.tag == .windows) { - @compileError("Windows does not support POSIX; use Windows-specific API or cross-platform std.fs API"); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - return open(mem.sliceTo(file_path, 0), flags, perm); - } - - const open_sym = if (lfs64_abi) system.open64 else system.open; - while (true) { - const rc = open_sym(file_path, flags, perm); - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - .INTR => continue, - - .FAULT => unreachable, - .INVAL => unreachable, - .ACCES => return error.AccessDenied, - .FBIG => return error.FileTooBig, - .OVERFLOW => return error.FileTooBig, - .ISDIR => return error.IsDir, - .LOOP => return error.SymLinkLoop, - .MFILE => return error.ProcessFdQuotaExceeded, - .NAMETOOLONG => return error.NameTooLong, - .NFILE => return error.SystemFdQuotaExceeded, - .NODEV => return error.NoDevice, - .NOENT => return error.FileNotFound, - .NOMEM => return error.SystemResources, - .NOSPC => return error.NoSpaceLeft, - .NOTDIR => return error.NotDir, - .PERM => return error.AccessDenied, - .EXIST => return error.PathAlreadyExists, - .BUSY => return error.DeviceBusy, - else => |err| return unexpectedErrno(err), - } - } -} - -/// Open and possibly create a file. Keeps trying if it gets interrupted. -/// `file_path` is relative to the open directory handle `dir_fd`. -/// On Windows, `file_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On WASI, `file_path` should be encoded as valid UTF-8. -/// On other platforms, `file_path` is an opaque sequence of bytes with no particular encoding. -/// See also `openatZ`. -pub fn openat(dir_fd: fd_t, file_path: []const u8, flags: O, mode: mode_t) OpenError!fd_t { - if (builtin.os.tag == .windows) { - @compileError("Windows does not support POSIX; use Windows-specific API or cross-platform std.fs API"); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - // `mode` is ignored on WASI, which does not support unix-style file permissions - const opts = try openOptionsFromFlagsWasi(flags); - const fd = try openatWasi( - dir_fd, - file_path, - opts.lookup_flags, - opts.oflags, - opts.fs_flags, - opts.fs_rights_base, - opts.fs_rights_inheriting, - ); - errdefer close(fd); - - if (flags.write) { - const info = try fstat_wasi(fd); - if (info.filetype == .DIRECTORY) - return error.IsDir; - } - - return fd; - } - const file_path_c = try toPosixPath(file_path); - return openatZ(dir_fd, &file_path_c, flags, mode); -} - -pub const CommonOpenFlags = packed struct { - ACCMODE: ACCMODE = .RDONLY, - CREAT: bool = false, - EXCL: bool = false, - LARGEFILE: bool = false, - DIRECTORY: bool = false, - CLOEXEC: bool = false, - NONBLOCK: bool = false, - - pub fn lower(cof: CommonOpenFlags) O { - if (builtin.os.tag == .wasi) return .{ - .read = cof.ACCMODE != .WRONLY, - .write = cof.ACCMODE != .RDONLY, - .CREAT = cof.CREAT, - .EXCL = cof.EXCL, - .DIRECTORY = cof.DIRECTORY, - .NONBLOCK = cof.NONBLOCK, - }; - var result: O = .{ - .ACCMODE = cof.ACCMODE, - .CREAT = cof.CREAT, - .EXCL = cof.EXCL, - .DIRECTORY = cof.DIRECTORY, - .NONBLOCK = cof.NONBLOCK, - .CLOEXEC = cof.CLOEXEC, - }; - if (@hasField(O, "LARGEFILE")) result.LARGEFILE = cof.LARGEFILE; - return result; - } -}; - -/// A struct to contain all lookup/rights flags accepted by `wasi.path_open` -const WasiOpenOptions = struct { - oflags: wasi.oflags_t, - lookup_flags: wasi.lookupflags_t, - fs_rights_base: wasi.rights_t, - fs_rights_inheriting: wasi.rights_t, - fs_flags: wasi.fdflags_t, -}; - -/// Compute rights + flags corresponding to the provided POSIX access mode. -fn openOptionsFromFlagsWasi(oflag: O) OpenError!WasiOpenOptions { - const w = std.os.wasi; - - // Next, calculate the read/write rights to request, depending on the - // provided POSIX access mode - var rights: w.rights_t = .{}; - if (oflag.read) { - rights.FD_READ = true; - rights.FD_READDIR = true; - } - if (oflag.write) { - rights.FD_DATASYNC = true; - rights.FD_WRITE = true; - rights.FD_ALLOCATE = true; - rights.FD_FILESTAT_SET_SIZE = true; - } - - // https://github.com/ziglang/zig/issues/18882 - const flag_bits: u32 = @bitCast(oflag); - const oflags_int: u16 = @as(u12, @truncate(flag_bits >> 12)); - const fs_flags_int: u16 = @as(u12, @truncate(flag_bits)); - - return .{ - // https://github.com/ziglang/zig/issues/18882 - .oflags = @bitCast(oflags_int), - .lookup_flags = .{ - .SYMLINK_FOLLOW = !oflag.NOFOLLOW, - }, - .fs_rights_base = rights, - .fs_rights_inheriting = rights, - // https://github.com/ziglang/zig/issues/18882 - .fs_flags = @bitCast(fs_flags_int), - }; -} - -/// Open and possibly create a file in WASI. -pub fn openatWasi( - dir_fd: fd_t, - file_path: []const u8, - lookup_flags: wasi.lookupflags_t, - oflags: wasi.oflags_t, - fdflags: wasi.fdflags_t, - base: wasi.rights_t, - inheriting: wasi.rights_t, -) OpenError!fd_t { - while (true) { - var fd: fd_t = undefined; - switch (wasi.path_open(dir_fd, lookup_flags, file_path.ptr, file_path.len, oflags, base, inheriting, fdflags, &fd)) { - .SUCCESS => return fd, - .INTR => continue, - - .FAULT => unreachable, - .INVAL => unreachable, - .BADF => unreachable, - .ACCES => return error.AccessDenied, - .FBIG => return error.FileTooBig, - .OVERFLOW => return error.FileTooBig, - .ISDIR => return error.IsDir, - .LOOP => return error.SymLinkLoop, - .MFILE => return error.ProcessFdQuotaExceeded, - .NAMETOOLONG => return error.NameTooLong, - .NFILE => return error.SystemFdQuotaExceeded, - .NODEV => return error.NoDevice, - .NOENT => return error.FileNotFound, - .NOMEM => return error.SystemResources, - .NOSPC => return error.NoSpaceLeft, - .NOTDIR => return error.NotDir, - .PERM => return error.AccessDenied, - .EXIST => return error.PathAlreadyExists, - .BUSY => return error.DeviceBusy, - .NOTCAPABLE => return error.AccessDenied, - .ILSEQ => return error.InvalidUtf8, - else => |err| return unexpectedErrno(err), - } - } -} - -/// Open and possibly create a file. Keeps trying if it gets interrupted. -/// `file_path` is relative to the open directory handle `dir_fd`. -/// On Windows, `file_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On WASI, `file_path` should be encoded as valid UTF-8. -/// On other platforms, `file_path` is an opaque sequence of bytes with no particular encoding. -/// See also `openat`. -pub fn openatZ(dir_fd: fd_t, file_path: [*:0]const u8, flags: O, mode: mode_t) OpenError!fd_t { - if (builtin.os.tag == .windows) { - @compileError("Windows does not support POSIX; use Windows-specific API or cross-platform std.fs API"); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - return openat(dir_fd, mem.sliceTo(file_path, 0), flags, mode); - } - - const openat_sym = if (lfs64_abi) system.openat64 else system.openat; - while (true) { - const rc = openat_sym(dir_fd, file_path, flags, mode); - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - .INTR => continue, - - .FAULT => unreachable, - .INVAL => unreachable, - .BADF => unreachable, - .ACCES => return error.AccessDenied, - .FBIG => return error.FileTooBig, - .OVERFLOW => return error.FileTooBig, - .ISDIR => return error.IsDir, - .LOOP => return error.SymLinkLoop, - .MFILE => return error.ProcessFdQuotaExceeded, - .NAMETOOLONG => return error.NameTooLong, - .NFILE => return error.SystemFdQuotaExceeded, - .NODEV => return error.NoDevice, - .NOENT => return error.FileNotFound, - .NOMEM => return error.SystemResources, - .NOSPC => return error.NoSpaceLeft, - .NOTDIR => return error.NotDir, - .PERM => return error.AccessDenied, - .EXIST => return error.PathAlreadyExists, - .BUSY => return error.DeviceBusy, - .OPNOTSUPP => return error.FileLocksNotSupported, - .AGAIN => return error.WouldBlock, - .TXTBSY => return error.FileBusy, - else => |err| return unexpectedErrno(err), - } - } -} - -pub fn dup(old_fd: fd_t) !fd_t { - const rc = system.dup(old_fd); - return switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - .MFILE => error.ProcessFdQuotaExceeded, - .BADF => unreachable, // invalid file descriptor - else => |err| return unexpectedErrno(err), - }; -} - -pub fn dup2(old_fd: fd_t, new_fd: fd_t) !void { - while (true) { - switch (errno(system.dup2(old_fd, new_fd))) { - .SUCCESS => return, - .BUSY, .INTR => continue, - .MFILE => return error.ProcessFdQuotaExceeded, - .INVAL => unreachable, // invalid parameters passed to dup2 - .BADF => unreachable, // invalid file descriptor - else => |err| return unexpectedErrno(err), - } - } -} - -pub const ExecveError = error{ - SystemResources, - AccessDenied, - InvalidExe, - FileSystem, - IsDir, - FileNotFound, - NotDir, - FileBusy, - ProcessFdQuotaExceeded, - SystemFdQuotaExceeded, - NameTooLong, -} || UnexpectedError; - -/// This function ignores PATH environment variable. See `execvpeZ` for that. -pub fn execveZ( - path: [*:0]const u8, - child_argv: [*:null]const ?[*:0]const u8, - envp: [*:null]const ?[*:0]const u8, -) ExecveError { - switch (errno(system.execve(path, child_argv, envp))) { - .SUCCESS => unreachable, - .FAULT => unreachable, - .@"2BIG" => return error.SystemResources, - .MFILE => return error.ProcessFdQuotaExceeded, - .NAMETOOLONG => return error.NameTooLong, - .NFILE => return error.SystemFdQuotaExceeded, - .NOMEM => return error.SystemResources, - .ACCES => return error.AccessDenied, - .PERM => return error.AccessDenied, - .INVAL => return error.InvalidExe, - .NOEXEC => return error.InvalidExe, - .IO => return error.FileSystem, - .LOOP => return error.FileSystem, - .ISDIR => return error.IsDir, - .NOENT => return error.FileNotFound, - .NOTDIR => return error.NotDir, - .TXTBSY => return error.FileBusy, - else => |err| switch (builtin.os.tag) { - .macos, .ios, .tvos, .watchos => switch (err) { - .BADEXEC => return error.InvalidExe, - .BADARCH => return error.InvalidExe, - else => return unexpectedErrno(err), - }, - .linux => switch (err) { - .LIBBAD => return error.InvalidExe, - else => return unexpectedErrno(err), - }, - else => return unexpectedErrno(err), - }, - } -} - -pub const Arg0Expand = enum { - expand, - no_expand, -}; - -/// Like `execvpeZ` except if `arg0_expand` is `.expand`, then `argv` is mutable, -/// and `argv[0]` is expanded to be the same absolute path that is passed to the execve syscall. -/// If this function returns with an error, `argv[0]` will be restored to the value it was when it was passed in. -pub fn execvpeZ_expandArg0( - comptime arg0_expand: Arg0Expand, - file: [*:0]const u8, - child_argv: switch (arg0_expand) { - .expand => [*:null]?[*:0]const u8, - .no_expand => [*:null]const ?[*:0]const u8, - }, - envp: [*:null]const ?[*:0]const u8, -) ExecveError { - const file_slice = mem.sliceTo(file, 0); - if (mem.indexOfScalar(u8, file_slice, '/') != null) return execveZ(file, child_argv, envp); - - const PATH = getenvZ("PATH") orelse "/usr/local/bin:/bin/:/usr/bin"; - // Use of MAX_PATH_BYTES here is valid as the path_buf will be passed - // directly to the operating system in execveZ. - var path_buf: [MAX_PATH_BYTES]u8 = undefined; - var it = mem.tokenizeScalar(u8, PATH, ':'); - var seen_eacces = false; - var err: ExecveError = error.FileNotFound; - - // In case of expanding arg0 we must put it back if we return with an error. - const prev_arg0 = child_argv[0]; - defer switch (arg0_expand) { - .expand => child_argv[0] = prev_arg0, - .no_expand => {}, - }; - - while (it.next()) |search_path| { - const path_len = search_path.len + file_slice.len + 1; - if (path_buf.len < path_len + 1) return error.NameTooLong; - @memcpy(path_buf[0..search_path.len], search_path); - path_buf[search_path.len] = '/'; - @memcpy(path_buf[search_path.len + 1 ..][0..file_slice.len], file_slice); - path_buf[path_len] = 0; - const full_path = path_buf[0..path_len :0].ptr; - switch (arg0_expand) { - .expand => child_argv[0] = full_path, - .no_expand => {}, - } - err = execveZ(full_path, child_argv, envp); - switch (err) { - error.AccessDenied => seen_eacces = true, - error.FileNotFound, error.NotDir => {}, - else => |e| return e, - } - } - if (seen_eacces) return error.AccessDenied; - return err; -} - -/// This function also uses the PATH environment variable to get the full path to the executable. -/// If `file` is an absolute path, this is the same as `execveZ`. -pub fn execvpeZ( - file: [*:0]const u8, - argv_ptr: [*:null]const ?[*:0]const u8, - envp: [*:null]const ?[*:0]const u8, -) ExecveError { - return execvpeZ_expandArg0(.no_expand, file, argv_ptr, envp); -} - -/// Get an environment variable. -/// See also `getenvZ`. -pub fn getenv(key: []const u8) ?[:0]const u8 { - if (builtin.os.tag == .windows) { - @compileError("std.os.getenv is unavailable for Windows because environment strings are in WTF-16 format. See std.process.getEnvVarOwned for a cross-platform API or std.os.getenvW for a Windows-specific API."); - } - if (builtin.link_libc) { - var ptr = std.c.environ; - while (ptr[0]) |line| : (ptr += 1) { - var line_i: usize = 0; - while (line[line_i] != 0 and line[line_i] != '=') : (line_i += 1) {} - const this_key = line[0..line_i]; - - if (!mem.eql(u8, this_key, key)) continue; - - return mem.sliceTo(line + line_i + 1, 0); - } - return null; - } - if (builtin.os.tag == .wasi) { - @compileError("std.os.getenv is unavailable for WASI. See std.process.getEnvMap or std.process.getEnvVarOwned for a cross-platform API."); - } - // The simplified start logic doesn't populate environ. - if (std.start.simplified_logic) return null; - // TODO see https://github.com/ziglang/zig/issues/4524 - for (environ) |ptr| { - var line_i: usize = 0; - while (ptr[line_i] != 0 and ptr[line_i] != '=') : (line_i += 1) {} - const this_key = ptr[0..line_i]; - if (!mem.eql(u8, key, this_key)) continue; - - return mem.sliceTo(ptr + line_i + 1, 0); - } - return null; -} - -/// Get an environment variable with a null-terminated name. -/// See also `getenv`. -pub fn getenvZ(key: [*:0]const u8) ?[:0]const u8 { - if (builtin.link_libc) { - const value = system.getenv(key) orelse return null; - return mem.sliceTo(value, 0); - } - if (builtin.os.tag == .windows) { - @compileError("std.os.getenvZ is unavailable for Windows because environment string is in WTF-16 format. See std.process.getEnvVarOwned for cross-platform API or std.os.getenvW for Windows-specific API."); - } - return getenv(mem.sliceTo(key, 0)); -} - -/// Windows-only. Get an environment variable with a null-terminated, WTF-16 encoded name. -/// See also `getenv`. -/// This function performs a Unicode-aware case-insensitive lookup using RtlEqualUnicodeString. -pub fn getenvW(key: [*:0]const u16) ?[:0]const u16 { - if (builtin.os.tag != .windows) { - @compileError("std.os.getenvW is a Windows-only API"); - } - const key_slice = mem.sliceTo(key, 0); - const ptr = windows.peb().ProcessParameters.Environment; - var i: usize = 0; - while (ptr[i] != 0) { - const key_start = i; - - // There are some special environment variables that start with =, - // so we need a special case to not treat = as a key/value separator - // if it's the first character. - // https://devblogs.microsoft.com/oldnewthing/20100506-00/?p=14133 - if (ptr[key_start] == '=') i += 1; - - while (ptr[i] != 0 and ptr[i] != '=') : (i += 1) {} - const this_key = ptr[key_start..i]; - - if (ptr[i] == '=') i += 1; - - const value_start = i; - while (ptr[i] != 0) : (i += 1) {} - const this_value = ptr[value_start..i :0]; - - if (windows.eqlIgnoreCaseWTF16(key_slice, this_key)) { - return this_value; - } - - i += 1; // skip over null byte - } - return null; -} - -pub const GetCwdError = error{ - NameTooLong, - CurrentWorkingDirectoryUnlinked, -} || UnexpectedError; - -/// The result is a slice of out_buffer, indexed from 0. -pub fn getcwd(out_buffer: []u8) GetCwdError![]u8 { - if (builtin.os.tag == .windows) { - return windows.GetCurrentDirectory(out_buffer); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - const path = "."; - if (out_buffer.len < path.len) return error.NameTooLong; - const result = out_buffer[0..path.len]; - @memcpy(result, path); - return result; - } - - const err: E = if (builtin.link_libc) err: { - const c_err = if (std.c.getcwd(out_buffer.ptr, out_buffer.len)) |_| 0 else std.c._errno().*; - break :err @enumFromInt(c_err); - } else err: { - break :err errno(system.getcwd(out_buffer.ptr, out_buffer.len)); - }; - switch (err) { - .SUCCESS => return mem.sliceTo(out_buffer, 0), - .FAULT => unreachable, - .INVAL => unreachable, - .NOENT => return error.CurrentWorkingDirectoryUnlinked, - .RANGE => return error.NameTooLong, - else => return unexpectedErrno(err), - } -} - -pub const SymLinkError = error{ - /// In WASI, this error may occur when the file descriptor does - /// not hold the required rights to create a new symbolic link relative to it. - AccessDenied, - DiskQuota, - PathAlreadyExists, - FileSystem, - SymLinkLoop, - FileNotFound, - SystemResources, - NoSpaceLeft, - ReadOnlyFileSystem, - NotDir, - NameTooLong, - - /// WASI-only; file paths must be valid UTF-8. - InvalidUtf8, - - /// Windows-only; file paths provided by the user must be valid WTF-8. - /// https://simonsapin.github.io/wtf-8/ - InvalidWtf8, - - BadPathName, -} || UnexpectedError; - -/// Creates a symbolic link named `sym_link_path` which contains the string `target_path`. -/// A symbolic link (also known as a soft link) may point to an existing file or to a nonexistent -/// one; the latter case is known as a dangling link. -/// On Windows, both paths should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On WASI, both paths should be encoded as valid UTF-8. -/// On other platforms, both paths are an opaque sequence of bytes with no particular encoding. -/// If `sym_link_path` exists, it will not be overwritten. -/// See also `symlinkZ. -pub fn symlink(target_path: []const u8, sym_link_path: []const u8) SymLinkError!void { - if (builtin.os.tag == .windows) { - @compileError("symlink is not supported on Windows; use std.os.windows.CreateSymbolicLink instead"); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - return symlinkat(target_path, wasi.AT.FDCWD, sym_link_path); - } - const target_path_c = try toPosixPath(target_path); - const sym_link_path_c = try toPosixPath(sym_link_path); - return symlinkZ(&target_path_c, &sym_link_path_c); -} - -/// This is the same as `symlink` except the parameters are null-terminated pointers. -/// See also `symlink`. -pub fn symlinkZ(target_path: [*:0]const u8, sym_link_path: [*:0]const u8) SymLinkError!void { - if (builtin.os.tag == .windows) { - @compileError("symlink is not supported on Windows; use std.os.windows.CreateSymbolicLink instead"); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - return symlinkatZ(target_path, fs.cwd().fd, sym_link_path); - } - switch (errno(system.symlink(target_path, sym_link_path))) { - .SUCCESS => return, - .FAULT => unreachable, - .INVAL => unreachable, - .ACCES => return error.AccessDenied, - .PERM => return error.AccessDenied, - .DQUOT => return error.DiskQuota, - .EXIST => return error.PathAlreadyExists, - .IO => return error.FileSystem, - .LOOP => return error.SymLinkLoop, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOTDIR => return error.NotDir, - .NOMEM => return error.SystemResources, - .NOSPC => return error.NoSpaceLeft, - .ROFS => return error.ReadOnlyFileSystem, - .ILSEQ => |err| if (builtin.os.tag == .wasi) - return error.InvalidUtf8 - else - return unexpectedErrno(err), - else => |err| return unexpectedErrno(err), - } -} - -/// Similar to `symlink`, however, creates a symbolic link named `sym_link_path` which contains the string -/// `target_path` **relative** to `newdirfd` directory handle. -/// A symbolic link (also known as a soft link) may point to an existing file or to a nonexistent -/// one; the latter case is known as a dangling link. -/// On Windows, both paths should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On WASI, both paths should be encoded as valid UTF-8. -/// On other platforms, both paths are an opaque sequence of bytes with no particular encoding. -/// If `sym_link_path` exists, it will not be overwritten. -/// See also `symlinkatWasi`, `symlinkatZ` and `symlinkatW`. -pub fn symlinkat(target_path: []const u8, newdirfd: fd_t, sym_link_path: []const u8) SymLinkError!void { - if (builtin.os.tag == .windows) { - @compileError("symlinkat is not supported on Windows; use std.os.windows.CreateSymbolicLink instead"); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - return symlinkatWasi(target_path, newdirfd, sym_link_path); - } - const target_path_c = try toPosixPath(target_path); - const sym_link_path_c = try toPosixPath(sym_link_path); - return symlinkatZ(&target_path_c, newdirfd, &sym_link_path_c); -} - -/// WASI-only. The same as `symlinkat` but targeting WASI. -/// See also `symlinkat`. -pub fn symlinkatWasi(target_path: []const u8, newdirfd: fd_t, sym_link_path: []const u8) SymLinkError!void { - switch (wasi.path_symlink(target_path.ptr, target_path.len, newdirfd, sym_link_path.ptr, sym_link_path.len)) { - .SUCCESS => {}, - .FAULT => unreachable, - .INVAL => unreachable, - .BADF => unreachable, - .ACCES => return error.AccessDenied, - .PERM => return error.AccessDenied, - .DQUOT => return error.DiskQuota, - .EXIST => return error.PathAlreadyExists, - .IO => return error.FileSystem, - .LOOP => return error.SymLinkLoop, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOTDIR => return error.NotDir, - .NOMEM => return error.SystemResources, - .NOSPC => return error.NoSpaceLeft, - .ROFS => return error.ReadOnlyFileSystem, - .NOTCAPABLE => return error.AccessDenied, - .ILSEQ => return error.InvalidUtf8, - else => |err| return unexpectedErrno(err), - } -} - -/// The same as `symlinkat` except the parameters are null-terminated pointers. -/// See also `symlinkat`. -pub fn symlinkatZ(target_path: [*:0]const u8, newdirfd: fd_t, sym_link_path: [*:0]const u8) SymLinkError!void { - if (builtin.os.tag == .windows) { - @compileError("symlinkat is not supported on Windows; use std.os.windows.CreateSymbolicLink instead"); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - return symlinkat(mem.sliceTo(target_path, 0), newdirfd, mem.sliceTo(sym_link_path, 0)); - } - switch (errno(system.symlinkat(target_path, newdirfd, sym_link_path))) { - .SUCCESS => return, - .FAULT => unreachable, - .INVAL => unreachable, - .ACCES => return error.AccessDenied, - .PERM => return error.AccessDenied, - .DQUOT => return error.DiskQuota, - .EXIST => return error.PathAlreadyExists, - .IO => return error.FileSystem, - .LOOP => return error.SymLinkLoop, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOTDIR => return error.NotDir, - .NOMEM => return error.SystemResources, - .NOSPC => return error.NoSpaceLeft, - .ROFS => return error.ReadOnlyFileSystem, - .ILSEQ => |err| if (builtin.os.tag == .wasi) - return error.InvalidUtf8 - else - return unexpectedErrno(err), - else => |err| return unexpectedErrno(err), - } -} - -pub const LinkError = UnexpectedError || error{ - AccessDenied, - DiskQuota, - PathAlreadyExists, - FileSystem, - SymLinkLoop, - LinkQuotaExceeded, - NameTooLong, - FileNotFound, - SystemResources, - NoSpaceLeft, - ReadOnlyFileSystem, - NotSameFileSystem, - - /// WASI-only; file paths must be valid UTF-8. - InvalidUtf8, -}; - -/// On WASI, both paths should be encoded as valid UTF-8. -/// On other platforms, both paths are an opaque sequence of bytes with no particular encoding. -pub fn linkZ(oldpath: [*:0]const u8, newpath: [*:0]const u8, flags: i32) LinkError!void { - if (builtin.os.tag == .wasi and !builtin.link_libc) { - return link(mem.sliceTo(oldpath, 0), mem.sliceTo(newpath, 0), flags); - } - switch (errno(system.link(oldpath, newpath, flags))) { - .SUCCESS => return, - .ACCES => return error.AccessDenied, - .DQUOT => return error.DiskQuota, - .EXIST => return error.PathAlreadyExists, - .FAULT => unreachable, - .IO => return error.FileSystem, - .LOOP => return error.SymLinkLoop, - .MLINK => return error.LinkQuotaExceeded, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOMEM => return error.SystemResources, - .NOSPC => return error.NoSpaceLeft, - .PERM => return error.AccessDenied, - .ROFS => return error.ReadOnlyFileSystem, - .XDEV => return error.NotSameFileSystem, - .INVAL => unreachable, - .ILSEQ => |err| if (builtin.os.tag == .wasi) - return error.InvalidUtf8 - else - return unexpectedErrno(err), - else => |err| return unexpectedErrno(err), - } -} - -/// On WASI, both paths should be encoded as valid UTF-8. -/// On other platforms, both paths are an opaque sequence of bytes with no particular encoding. -pub fn link(oldpath: []const u8, newpath: []const u8, flags: i32) LinkError!void { - if (builtin.os.tag == .wasi and !builtin.link_libc) { - return linkat(wasi.AT.FDCWD, oldpath, wasi.AT.FDCWD, newpath, flags) catch |err| switch (err) { - error.NotDir => unreachable, // link() does not support directories - else => |e| return e, - }; - } - const old = try toPosixPath(oldpath); - const new = try toPosixPath(newpath); - return try linkZ(&old, &new, flags); -} - -pub const LinkatError = LinkError || error{NotDir}; - -/// On WASI, both paths should be encoded as valid UTF-8. -/// On other platforms, both paths are an opaque sequence of bytes with no particular encoding. -pub fn linkatZ( - olddir: fd_t, - oldpath: [*:0]const u8, - newdir: fd_t, - newpath: [*:0]const u8, - flags: i32, -) LinkatError!void { - if (builtin.os.tag == .wasi and !builtin.link_libc) { - return linkat(olddir, mem.sliceTo(oldpath, 0), newdir, mem.sliceTo(newpath, 0), flags); - } - switch (errno(system.linkat(olddir, oldpath, newdir, newpath, flags))) { - .SUCCESS => return, - .ACCES => return error.AccessDenied, - .DQUOT => return error.DiskQuota, - .EXIST => return error.PathAlreadyExists, - .FAULT => unreachable, - .IO => return error.FileSystem, - .LOOP => return error.SymLinkLoop, - .MLINK => return error.LinkQuotaExceeded, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOMEM => return error.SystemResources, - .NOSPC => return error.NoSpaceLeft, - .NOTDIR => return error.NotDir, - .PERM => return error.AccessDenied, - .ROFS => return error.ReadOnlyFileSystem, - .XDEV => return error.NotSameFileSystem, - .INVAL => unreachable, - .ILSEQ => |err| if (builtin.os.tag == .wasi) - return error.InvalidUtf8 - else - return unexpectedErrno(err), - else => |err| return unexpectedErrno(err), - } -} - -/// On WASI, both paths should be encoded as valid UTF-8. -/// On other platforms, both paths are an opaque sequence of bytes with no particular encoding. -pub fn linkat( - olddir: fd_t, - oldpath: []const u8, - newdir: fd_t, - newpath: []const u8, - flags: i32, -) LinkatError!void { - if (builtin.os.tag == .wasi and !builtin.link_libc) { - const old: RelativePathWasi = .{ .dir_fd = olddir, .relative_path = oldpath }; - const new: RelativePathWasi = .{ .dir_fd = newdir, .relative_path = newpath }; - const old_flags: wasi.lookupflags_t = .{ - .SYMLINK_FOLLOW = (flags & AT.SYMLINK_FOLLOW) != 0, - }; - switch (wasi.path_link( - old.dir_fd, - old_flags, - old.relative_path.ptr, - old.relative_path.len, - new.dir_fd, - new.relative_path.ptr, - new.relative_path.len, - )) { - .SUCCESS => return, - .ACCES => return error.AccessDenied, - .DQUOT => return error.DiskQuota, - .EXIST => return error.PathAlreadyExists, - .FAULT => unreachable, - .IO => return error.FileSystem, - .LOOP => return error.SymLinkLoop, - .MLINK => return error.LinkQuotaExceeded, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOMEM => return error.SystemResources, - .NOSPC => return error.NoSpaceLeft, - .NOTDIR => return error.NotDir, - .PERM => return error.AccessDenied, - .ROFS => return error.ReadOnlyFileSystem, - .XDEV => return error.NotSameFileSystem, - .INVAL => unreachable, - .ILSEQ => return error.InvalidUtf8, - else => |err| return unexpectedErrno(err), - } - } - const old = try toPosixPath(oldpath); - const new = try toPosixPath(newpath); - return try linkatZ(olddir, &old, newdir, &new, flags); -} - -pub const UnlinkError = error{ - FileNotFound, - - /// In WASI, this error may occur when the file descriptor does - /// not hold the required rights to unlink a resource by path relative to it. - AccessDenied, - FileBusy, - FileSystem, - IsDir, - SymLinkLoop, - NameTooLong, - NotDir, - SystemResources, - ReadOnlyFileSystem, - - /// WASI-only; file paths must be valid UTF-8. - InvalidUtf8, - - /// Windows-only; file paths provided by the user must be valid WTF-8. - /// https://simonsapin.github.io/wtf-8/ - InvalidWtf8, - - /// On Windows, file paths cannot contain these characters: - /// '/', '*', '?', '"', '<', '>', '|' - BadPathName, - - /// On Windows, `\\server` or `\\server\share` was not found. - NetworkNotFound, -} || UnexpectedError; - -/// Delete a name and possibly the file it refers to. -/// On Windows, `file_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On WASI, `file_path` should be encoded as valid UTF-8. -/// On other platforms, `file_path` is an opaque sequence of bytes with no particular encoding. -/// See also `unlinkZ`. -pub fn unlink(file_path: []const u8) UnlinkError!void { - if (builtin.os.tag == .wasi and !builtin.link_libc) { - return unlinkat(wasi.AT.FDCWD, file_path, 0) catch |err| switch (err) { - error.DirNotEmpty => unreachable, // only occurs when targeting directories - else => |e| return e, - }; - } else if (builtin.os.tag == .windows) { - const file_path_w = try windows.sliceToPrefixedFileW(null, file_path); - return unlinkW(file_path_w.span()); - } else { - const file_path_c = try toPosixPath(file_path); - return unlinkZ(&file_path_c); - } -} - -/// Same as `unlink` except the parameter is null terminated. -pub fn unlinkZ(file_path: [*:0]const u8) UnlinkError!void { - if (builtin.os.tag == .windows) { - const file_path_w = try windows.cStrToPrefixedFileW(null, file_path); - return unlinkW(file_path_w.span()); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - return unlink(mem.sliceTo(file_path, 0)); - } - switch (errno(system.unlink(file_path))) { - .SUCCESS => return, - .ACCES => return error.AccessDenied, - .PERM => return error.AccessDenied, - .BUSY => return error.FileBusy, - .FAULT => unreachable, - .INVAL => unreachable, - .IO => return error.FileSystem, - .ISDIR => return error.IsDir, - .LOOP => return error.SymLinkLoop, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOTDIR => return error.NotDir, - .NOMEM => return error.SystemResources, - .ROFS => return error.ReadOnlyFileSystem, - .ILSEQ => |err| if (builtin.os.tag == .wasi) - return error.InvalidUtf8 - else - return unexpectedErrno(err), - else => |err| return unexpectedErrno(err), - } -} - -/// Windows-only. Same as `unlink` except the parameter is null-terminated, WTF16 LE encoded. -pub fn unlinkW(file_path_w: []const u16) UnlinkError!void { - windows.DeleteFile(file_path_w, .{ .dir = std.fs.cwd().fd }) catch |err| switch (err) { - error.DirNotEmpty => unreachable, // we're not passing .remove_dir = true - else => |e| return e, - }; -} - -pub const UnlinkatError = UnlinkError || error{ - /// When passing `AT.REMOVEDIR`, this error occurs when the named directory is not empty. - DirNotEmpty, -}; - -/// Delete a file name and possibly the file it refers to, based on an open directory handle. -/// On Windows, `file_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On WASI, `file_path` should be encoded as valid UTF-8. -/// On other platforms, `file_path` is an opaque sequence of bytes with no particular encoding. -/// Asserts that the path parameter has no null bytes. -pub fn unlinkat(dirfd: fd_t, file_path: []const u8, flags: u32) UnlinkatError!void { - if (builtin.os.tag == .windows) { - const file_path_w = try windows.sliceToPrefixedFileW(dirfd, file_path); - return unlinkatW(dirfd, file_path_w.span(), flags); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - return unlinkatWasi(dirfd, file_path, flags); - } else { - const file_path_c = try toPosixPath(file_path); - return unlinkatZ(dirfd, &file_path_c, flags); - } -} - -/// WASI-only. Same as `unlinkat` but targeting WASI. -/// See also `unlinkat`. -pub fn unlinkatWasi(dirfd: fd_t, file_path: []const u8, flags: u32) UnlinkatError!void { - const remove_dir = (flags & AT.REMOVEDIR) != 0; - const res = if (remove_dir) - wasi.path_remove_directory(dirfd, file_path.ptr, file_path.len) - else - wasi.path_unlink_file(dirfd, file_path.ptr, file_path.len); - switch (res) { - .SUCCESS => return, - .ACCES => return error.AccessDenied, - .PERM => return error.AccessDenied, - .BUSY => return error.FileBusy, - .FAULT => unreachable, - .IO => return error.FileSystem, - .ISDIR => return error.IsDir, - .LOOP => return error.SymLinkLoop, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOTDIR => return error.NotDir, - .NOMEM => return error.SystemResources, - .ROFS => return error.ReadOnlyFileSystem, - .NOTEMPTY => return error.DirNotEmpty, - .NOTCAPABLE => return error.AccessDenied, - .ILSEQ => return error.InvalidUtf8, - - .INVAL => unreachable, // invalid flags, or pathname has . as last component - .BADF => unreachable, // always a race condition - - else => |err| return unexpectedErrno(err), - } -} - -/// Same as `unlinkat` but `file_path` is a null-terminated string. -pub fn unlinkatZ(dirfd: fd_t, file_path_c: [*:0]const u8, flags: u32) UnlinkatError!void { - if (builtin.os.tag == .windows) { - const file_path_w = try windows.cStrToPrefixedFileW(dirfd, file_path_c); - return unlinkatW(dirfd, file_path_w.span(), flags); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - return unlinkat(dirfd, mem.sliceTo(file_path_c, 0), flags); - } - switch (errno(system.unlinkat(dirfd, file_path_c, flags))) { - .SUCCESS => return, - .ACCES => return error.AccessDenied, - .PERM => return error.AccessDenied, - .BUSY => return error.FileBusy, - .FAULT => unreachable, - .IO => return error.FileSystem, - .ISDIR => return error.IsDir, - .LOOP => return error.SymLinkLoop, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOTDIR => return error.NotDir, - .NOMEM => return error.SystemResources, - .ROFS => return error.ReadOnlyFileSystem, - .EXIST => return error.DirNotEmpty, - .NOTEMPTY => return error.DirNotEmpty, - .ILSEQ => |err| if (builtin.os.tag == .wasi) - return error.InvalidUtf8 - else - return unexpectedErrno(err), - - .INVAL => unreachable, // invalid flags, or pathname has . as last component - .BADF => unreachable, // always a race condition - - else => |err| return unexpectedErrno(err), - } -} - -/// Same as `unlinkat` but `sub_path_w` is WTF16LE, NT prefixed. Windows only. -pub fn unlinkatW(dirfd: fd_t, sub_path_w: []const u16, flags: u32) UnlinkatError!void { - const remove_dir = (flags & AT.REMOVEDIR) != 0; - return windows.DeleteFile(sub_path_w, .{ .dir = dirfd, .remove_dir = remove_dir }); -} - -pub const RenameError = error{ - /// In WASI, this error may occur when the file descriptor does - /// not hold the required rights to rename a resource by path relative to it. - /// - /// On Windows, this error may be returned instead of PathAlreadyExists when - /// renaming a directory over an existing directory. - AccessDenied, - FileBusy, - DiskQuota, - IsDir, - SymLinkLoop, - LinkQuotaExceeded, - NameTooLong, - FileNotFound, - NotDir, - SystemResources, - NoSpaceLeft, - PathAlreadyExists, - ReadOnlyFileSystem, - RenameAcrossMountPoints, - /// WASI-only; file paths must be valid UTF-8. - InvalidUtf8, - /// Windows-only; file paths provided by the user must be valid WTF-8. - /// https://simonsapin.github.io/wtf-8/ - InvalidWtf8, - BadPathName, - NoDevice, - SharingViolation, - PipeBusy, - /// On Windows, `\\server` or `\\server\share` was not found. - NetworkNotFound, - /// On Windows, antivirus software is enabled by default. It can be - /// disabled, but Windows Update sometimes ignores the user's preference - /// and re-enables it. When enabled, antivirus software on Windows - /// intercepts file system operations and makes them significantly slower - /// in addition to possibly failing with this error code. - AntivirusInterference, -} || UnexpectedError; - -/// Change the name or location of a file. -/// On Windows, both paths should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On WASI, both paths should be encoded as valid UTF-8. -/// On other platforms, both paths are an opaque sequence of bytes with no particular encoding. -pub fn rename(old_path: []const u8, new_path: []const u8) RenameError!void { - if (builtin.os.tag == .wasi and !builtin.link_libc) { - return renameat(wasi.AT.FDCWD, old_path, wasi.AT.FDCWD, new_path); - } else if (builtin.os.tag == .windows) { - const old_path_w = try windows.sliceToPrefixedFileW(null, old_path); - const new_path_w = try windows.sliceToPrefixedFileW(null, new_path); - return renameW(old_path_w.span().ptr, new_path_w.span().ptr); - } else { - const old_path_c = try toPosixPath(old_path); - const new_path_c = try toPosixPath(new_path); - return renameZ(&old_path_c, &new_path_c); - } -} - -/// Same as `rename` except the parameters are null-terminated. -pub fn renameZ(old_path: [*:0]const u8, new_path: [*:0]const u8) RenameError!void { - if (builtin.os.tag == .windows) { - const old_path_w = try windows.cStrToPrefixedFileW(null, old_path); - const new_path_w = try windows.cStrToPrefixedFileW(null, new_path); - return renameW(old_path_w.span().ptr, new_path_w.span().ptr); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - return rename(mem.sliceTo(old_path, 0), mem.sliceTo(new_path, 0)); - } - switch (errno(system.rename(old_path, new_path))) { - .SUCCESS => return, - .ACCES => return error.AccessDenied, - .PERM => return error.AccessDenied, - .BUSY => return error.FileBusy, - .DQUOT => return error.DiskQuota, - .FAULT => unreachable, - .INVAL => unreachable, - .ISDIR => return error.IsDir, - .LOOP => return error.SymLinkLoop, - .MLINK => return error.LinkQuotaExceeded, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOTDIR => return error.NotDir, - .NOMEM => return error.SystemResources, - .NOSPC => return error.NoSpaceLeft, - .EXIST => return error.PathAlreadyExists, - .NOTEMPTY => return error.PathAlreadyExists, - .ROFS => return error.ReadOnlyFileSystem, - .XDEV => return error.RenameAcrossMountPoints, - .ILSEQ => |err| if (builtin.os.tag == .wasi) - return error.InvalidUtf8 - else - return unexpectedErrno(err), - else => |err| return unexpectedErrno(err), - } -} - -/// Same as `rename` except the parameters are null-terminated and WTF16LE encoded. -/// Assumes target is Windows. -pub fn renameW(old_path: [*:0]const u16, new_path: [*:0]const u16) RenameError!void { - const flags = windows.MOVEFILE_REPLACE_EXISTING | windows.MOVEFILE_WRITE_THROUGH; - return windows.MoveFileExW(old_path, new_path, flags); -} - -/// Change the name or location of a file based on an open directory handle. -/// On Windows, both paths should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On WASI, both paths should be encoded as valid UTF-8. -/// On other platforms, both paths are an opaque sequence of bytes with no particular encoding. -pub fn renameat( - old_dir_fd: fd_t, - old_path: []const u8, - new_dir_fd: fd_t, - new_path: []const u8, -) RenameError!void { - if (builtin.os.tag == .windows) { - const old_path_w = try windows.sliceToPrefixedFileW(old_dir_fd, old_path); - const new_path_w = try windows.sliceToPrefixedFileW(new_dir_fd, new_path); - return renameatW(old_dir_fd, old_path_w.span(), new_dir_fd, new_path_w.span(), windows.TRUE); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - const old: RelativePathWasi = .{ .dir_fd = old_dir_fd, .relative_path = old_path }; - const new: RelativePathWasi = .{ .dir_fd = new_dir_fd, .relative_path = new_path }; - return renameatWasi(old, new); - } else { - const old_path_c = try toPosixPath(old_path); - const new_path_c = try toPosixPath(new_path); - return renameatZ(old_dir_fd, &old_path_c, new_dir_fd, &new_path_c); - } -} - -/// WASI-only. Same as `renameat` expect targeting WASI. -/// See also `renameat`. -pub fn renameatWasi(old: RelativePathWasi, new: RelativePathWasi) RenameError!void { - switch (wasi.path_rename(old.dir_fd, old.relative_path.ptr, old.relative_path.len, new.dir_fd, new.relative_path.ptr, new.relative_path.len)) { - .SUCCESS => return, - .ACCES => return error.AccessDenied, - .PERM => return error.AccessDenied, - .BUSY => return error.FileBusy, - .DQUOT => return error.DiskQuota, - .FAULT => unreachable, - .INVAL => unreachable, - .ISDIR => return error.IsDir, - .LOOP => return error.SymLinkLoop, - .MLINK => return error.LinkQuotaExceeded, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOTDIR => return error.NotDir, - .NOMEM => return error.SystemResources, - .NOSPC => return error.NoSpaceLeft, - .EXIST => return error.PathAlreadyExists, - .NOTEMPTY => return error.PathAlreadyExists, - .ROFS => return error.ReadOnlyFileSystem, - .XDEV => return error.RenameAcrossMountPoints, - .NOTCAPABLE => return error.AccessDenied, - .ILSEQ => return error.InvalidUtf8, - else => |err| return unexpectedErrno(err), - } -} - -/// Same as `renameat` except the parameters are null-terminated. -pub fn renameatZ( - old_dir_fd: fd_t, - old_path: [*:0]const u8, - new_dir_fd: fd_t, - new_path: [*:0]const u8, -) RenameError!void { - if (builtin.os.tag == .windows) { - const old_path_w = try windows.cStrToPrefixedFileW(old_dir_fd, old_path); - const new_path_w = try windows.cStrToPrefixedFileW(new_dir_fd, new_path); - return renameatW(old_dir_fd, old_path_w.span(), new_dir_fd, new_path_w.span(), windows.TRUE); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - return renameat(old_dir_fd, mem.sliceTo(old_path, 0), new_dir_fd, mem.sliceTo(new_path, 0)); - } - - switch (errno(system.renameat(old_dir_fd, old_path, new_dir_fd, new_path))) { - .SUCCESS => return, - .ACCES => return error.AccessDenied, - .PERM => return error.AccessDenied, - .BUSY => return error.FileBusy, - .DQUOT => return error.DiskQuota, - .FAULT => unreachable, - .INVAL => unreachable, - .ISDIR => return error.IsDir, - .LOOP => return error.SymLinkLoop, - .MLINK => return error.LinkQuotaExceeded, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOTDIR => return error.NotDir, - .NOMEM => return error.SystemResources, - .NOSPC => return error.NoSpaceLeft, - .EXIST => return error.PathAlreadyExists, - .NOTEMPTY => return error.PathAlreadyExists, - .ROFS => return error.ReadOnlyFileSystem, - .XDEV => return error.RenameAcrossMountPoints, - .ILSEQ => |err| if (builtin.os.tag == .wasi) - return error.InvalidUtf8 - else - return unexpectedErrno(err), - else => |err| return unexpectedErrno(err), - } -} - -/// Same as `renameat` but Windows-only and the path parameters are -/// [WTF-16](https://simonsapin.github.io/wtf-8/#potentially-ill-formed-utf-16) encoded. -pub fn renameatW( - old_dir_fd: fd_t, - old_path_w: []const u16, - new_dir_fd: fd_t, - new_path_w: []const u16, - ReplaceIfExists: windows.BOOLEAN, -) RenameError!void { - const src_fd = windows.OpenFile(old_path_w, .{ - .dir = old_dir_fd, - .access_mask = windows.SYNCHRONIZE | windows.GENERIC_WRITE | windows.DELETE, - .creation = windows.FILE_OPEN, - .filter = .any, // This function is supposed to rename both files and directories. - .follow_symlinks = false, - }) catch |err| switch (err) { - error.WouldBlock => unreachable, // Not possible without `.share_access_nonblocking = true`. - else => |e| return e, - }; - defer windows.CloseHandle(src_fd); - - var need_fallback = true; - var rc: windows.NTSTATUS = undefined; - // FILE_RENAME_INFORMATION_EX and FILE_RENAME_POSIX_SEMANTICS require >= win10_rs1, - // but FILE_RENAME_IGNORE_READONLY_ATTRIBUTE requires >= win10_rs5. We check >= rs5 here - // so that we only use POSIX_SEMANTICS when we know IGNORE_READONLY_ATTRIBUTE will also be - // supported in order to avoid either (1) using a redundant call that we can know in advance will return - // STATUS_NOT_SUPPORTED or (2) only setting IGNORE_READONLY_ATTRIBUTE when >= rs5 - // and therefore having different behavior when the Windows version is >= rs1 but < rs5. - if (builtin.target.os.isAtLeast(.windows, .win10_rs5) orelse false) { - const struct_buf_len = @sizeOf(windows.FILE_RENAME_INFORMATION_EX) + (MAX_PATH_BYTES - 1); - var rename_info_buf: [struct_buf_len]u8 align(@alignOf(windows.FILE_RENAME_INFORMATION_EX)) = undefined; - const struct_len = @sizeOf(windows.FILE_RENAME_INFORMATION_EX) - 1 + new_path_w.len * 2; - if (struct_len > struct_buf_len) return error.NameTooLong; - - const rename_info: *windows.FILE_RENAME_INFORMATION_EX = @ptrCast(&rename_info_buf); - var io_status_block: windows.IO_STATUS_BLOCK = undefined; - - var flags: windows.ULONG = windows.FILE_RENAME_POSIX_SEMANTICS | windows.FILE_RENAME_IGNORE_READONLY_ATTRIBUTE; - if (ReplaceIfExists == windows.TRUE) flags |= windows.FILE_RENAME_REPLACE_IF_EXISTS; - rename_info.* = .{ - .Flags = flags, - .RootDirectory = if (std.fs.path.isAbsoluteWindowsWTF16(new_path_w)) null else new_dir_fd, - .FileNameLength = @intCast(new_path_w.len * 2), // already checked error.NameTooLong - .FileName = undefined, - }; - @memcpy((&rename_info.FileName).ptr, new_path_w); - rc = windows.ntdll.NtSetInformationFile( - src_fd, - &io_status_block, - rename_info, - @intCast(struct_len), // already checked for error.NameTooLong - .FileRenameInformationEx, - ); - switch (rc) { - .SUCCESS => return, - // INVALID_PARAMETER here means that the filesystem does not support FileRenameInformationEx - .INVALID_PARAMETER => {}, - .DIRECTORY_NOT_EMPTY => return error.PathAlreadyExists, - .FILE_IS_A_DIRECTORY => return error.IsDir, - .NOT_A_DIRECTORY => return error.NotDir, - // For all other statuses, fall down to the switch below to handle them. - else => need_fallback = false, - } - } - - if (need_fallback) { - const struct_buf_len = @sizeOf(windows.FILE_RENAME_INFORMATION) + (MAX_PATH_BYTES - 1); - var rename_info_buf: [struct_buf_len]u8 align(@alignOf(windows.FILE_RENAME_INFORMATION)) = undefined; - const struct_len = @sizeOf(windows.FILE_RENAME_INFORMATION) - 1 + new_path_w.len * 2; - if (struct_len > struct_buf_len) return error.NameTooLong; - - const rename_info: *windows.FILE_RENAME_INFORMATION = @ptrCast(&rename_info_buf); - var io_status_block: windows.IO_STATUS_BLOCK = undefined; - - rename_info.* = .{ - .Flags = ReplaceIfExists, - .RootDirectory = if (std.fs.path.isAbsoluteWindowsWTF16(new_path_w)) null else new_dir_fd, - .FileNameLength = @intCast(new_path_w.len * 2), // already checked error.NameTooLong - .FileName = undefined, - }; - @memcpy((&rename_info.FileName).ptr, new_path_w); - - rc = - windows.ntdll.NtSetInformationFile( - src_fd, - &io_status_block, - rename_info, - @intCast(struct_len), // already checked for error.NameTooLong - .FileRenameInformation, - ); - } - - switch (rc) { - .SUCCESS => {}, - .INVALID_HANDLE => unreachable, - .INVALID_PARAMETER => unreachable, - .OBJECT_PATH_SYNTAX_BAD => unreachable, - .ACCESS_DENIED => return error.AccessDenied, - .OBJECT_NAME_NOT_FOUND => return error.FileNotFound, - .OBJECT_PATH_NOT_FOUND => return error.FileNotFound, - .NOT_SAME_DEVICE => return error.RenameAcrossMountPoints, - .OBJECT_NAME_COLLISION => return error.PathAlreadyExists, - else => return windows.unexpectedStatus(rc), - } -} - -/// On Windows, `sub_dir_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On WASI, `sub_dir_path` should be encoded as valid UTF-8. -/// On other platforms, `sub_dir_path` is an opaque sequence of bytes with no particular encoding. -pub fn mkdirat(dir_fd: fd_t, sub_dir_path: []const u8, mode: u32) MakeDirError!void { - if (builtin.os.tag == .windows) { - const sub_dir_path_w = try windows.sliceToPrefixedFileW(dir_fd, sub_dir_path); - return mkdiratW(dir_fd, sub_dir_path_w.span(), mode); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - return mkdiratWasi(dir_fd, sub_dir_path, mode); - } else { - const sub_dir_path_c = try toPosixPath(sub_dir_path); - return mkdiratZ(dir_fd, &sub_dir_path_c, mode); - } -} - -pub fn mkdiratWasi(dir_fd: fd_t, sub_dir_path: []const u8, mode: u32) MakeDirError!void { - _ = mode; - switch (wasi.path_create_directory(dir_fd, sub_dir_path.ptr, sub_dir_path.len)) { - .SUCCESS => return, - .ACCES => return error.AccessDenied, - .BADF => unreachable, - .PERM => return error.AccessDenied, - .DQUOT => return error.DiskQuota, - .EXIST => return error.PathAlreadyExists, - .FAULT => unreachable, - .LOOP => return error.SymLinkLoop, - .MLINK => return error.LinkQuotaExceeded, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOMEM => return error.SystemResources, - .NOSPC => return error.NoSpaceLeft, - .NOTDIR => return error.NotDir, - .ROFS => return error.ReadOnlyFileSystem, - .NOTCAPABLE => return error.AccessDenied, - .ILSEQ => return error.InvalidUtf8, - else => |err| return unexpectedErrno(err), - } -} - -/// Same as `mkdirat` except the parameters are null-terminated. -pub fn mkdiratZ(dir_fd: fd_t, sub_dir_path: [*:0]const u8, mode: u32) MakeDirError!void { - if (builtin.os.tag == .windows) { - const sub_dir_path_w = try windows.cStrToPrefixedFileW(dir_fd, sub_dir_path); - return mkdiratW(dir_fd, sub_dir_path_w.span(), mode); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - return mkdirat(dir_fd, mem.sliceTo(sub_dir_path, 0), mode); - } - switch (errno(system.mkdirat(dir_fd, sub_dir_path, mode))) { - .SUCCESS => return, - .ACCES => return error.AccessDenied, - .BADF => unreachable, - .PERM => return error.AccessDenied, - .DQUOT => return error.DiskQuota, - .EXIST => return error.PathAlreadyExists, - .FAULT => unreachable, - .LOOP => return error.SymLinkLoop, - .MLINK => return error.LinkQuotaExceeded, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOMEM => return error.SystemResources, - .NOSPC => return error.NoSpaceLeft, - .NOTDIR => return error.NotDir, - .ROFS => return error.ReadOnlyFileSystem, - // dragonfly: when dir_fd is unlinked from filesystem - .NOTCONN => return error.FileNotFound, - .ILSEQ => |err| if (builtin.os.tag == .wasi) - return error.InvalidUtf8 - else - return unexpectedErrno(err), - else => |err| return unexpectedErrno(err), - } -} - -/// Windows-only. Same as `mkdirat` except the parameter WTF16 LE encoded. -pub fn mkdiratW(dir_fd: fd_t, sub_path_w: []const u16, mode: u32) MakeDirError!void { - _ = mode; - const sub_dir_handle = windows.OpenFile(sub_path_w, .{ - .dir = dir_fd, - .access_mask = windows.GENERIC_READ | windows.SYNCHRONIZE, - .creation = windows.FILE_CREATE, - .filter = .dir_only, - }) catch |err| switch (err) { - error.IsDir => return error.Unexpected, - error.PipeBusy => return error.Unexpected, - error.WouldBlock => return error.Unexpected, - error.AntivirusInterference => return error.Unexpected, - else => |e| return e, - }; - windows.CloseHandle(sub_dir_handle); -} - -pub const MakeDirError = error{ - /// In WASI, this error may occur when the file descriptor does - /// not hold the required rights to create a new directory relative to it. - AccessDenied, - DiskQuota, - PathAlreadyExists, - SymLinkLoop, - LinkQuotaExceeded, - NameTooLong, - FileNotFound, - SystemResources, - NoSpaceLeft, - NotDir, - ReadOnlyFileSystem, - /// WASI-only; file paths must be valid UTF-8. - InvalidUtf8, - /// Windows-only; file paths provided by the user must be valid WTF-8. - /// https://simonsapin.github.io/wtf-8/ - InvalidWtf8, - BadPathName, - NoDevice, - /// On Windows, `\\server` or `\\server\share` was not found. - NetworkNotFound, -} || UnexpectedError; - -/// Create a directory. -/// `mode` is ignored on Windows and WASI. -/// On Windows, `dir_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On WASI, `dir_path` should be encoded as valid UTF-8. -/// On other platforms, `dir_path` is an opaque sequence of bytes with no particular encoding. -pub fn mkdir(dir_path: []const u8, mode: u32) MakeDirError!void { - if (builtin.os.tag == .wasi and !builtin.link_libc) { - return mkdirat(wasi.AT.FDCWD, dir_path, mode); - } else if (builtin.os.tag == .windows) { - const dir_path_w = try windows.sliceToPrefixedFileW(null, dir_path); - return mkdirW(dir_path_w.span(), mode); - } else { - const dir_path_c = try toPosixPath(dir_path); - return mkdirZ(&dir_path_c, mode); - } -} - -/// Same as `mkdir` but the parameter is null-terminated. -/// On Windows, `dir_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On WASI, `dir_path` should be encoded as valid UTF-8. -/// On other platforms, `dir_path` is an opaque sequence of bytes with no particular encoding. -pub fn mkdirZ(dir_path: [*:0]const u8, mode: u32) MakeDirError!void { - if (builtin.os.tag == .windows) { - const dir_path_w = try windows.cStrToPrefixedFileW(null, dir_path); - return mkdirW(dir_path_w.span(), mode); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - return mkdir(mem.sliceTo(dir_path, 0), mode); - } - switch (errno(system.mkdir(dir_path, mode))) { - .SUCCESS => return, - .ACCES => return error.AccessDenied, - .PERM => return error.AccessDenied, - .DQUOT => return error.DiskQuota, - .EXIST => return error.PathAlreadyExists, - .FAULT => unreachable, - .LOOP => return error.SymLinkLoop, - .MLINK => return error.LinkQuotaExceeded, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOMEM => return error.SystemResources, - .NOSPC => return error.NoSpaceLeft, - .NOTDIR => return error.NotDir, - .ROFS => return error.ReadOnlyFileSystem, - .ILSEQ => |err| if (builtin.os.tag == .wasi) - return error.InvalidUtf8 - else - return unexpectedErrno(err), - else => |err| return unexpectedErrno(err), - } -} - -/// Windows-only. Same as `mkdir` but the parameters is WTF16LE encoded. -pub fn mkdirW(dir_path_w: []const u16, mode: u32) MakeDirError!void { - _ = mode; - const sub_dir_handle = windows.OpenFile(dir_path_w, .{ - .dir = std.fs.cwd().fd, - .access_mask = windows.GENERIC_READ | windows.SYNCHRONIZE, - .creation = windows.FILE_CREATE, - .filter = .dir_only, - }) catch |err| switch (err) { - error.IsDir => return error.Unexpected, - error.PipeBusy => return error.Unexpected, - error.WouldBlock => return error.Unexpected, - error.AntivirusInterference => return error.Unexpected, - else => |e| return e, - }; - windows.CloseHandle(sub_dir_handle); -} - -pub const DeleteDirError = error{ - AccessDenied, - FileBusy, - SymLinkLoop, - NameTooLong, - FileNotFound, - SystemResources, - NotDir, - DirNotEmpty, - ReadOnlyFileSystem, - /// WASI-only; file paths must be valid UTF-8. - InvalidUtf8, - /// Windows-only; file paths provided by the user must be valid WTF-8. - /// https://simonsapin.github.io/wtf-8/ - InvalidWtf8, - BadPathName, - /// On Windows, `\\server` or `\\server\share` was not found. - NetworkNotFound, -} || UnexpectedError; - -/// Deletes an empty directory. -/// On Windows, `dir_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On WASI, `dir_path` should be encoded as valid UTF-8. -/// On other platforms, `dir_path` is an opaque sequence of bytes with no particular encoding. -pub fn rmdir(dir_path: []const u8) DeleteDirError!void { - if (builtin.os.tag == .wasi and !builtin.link_libc) { - return unlinkat(wasi.AT.FDCWD, dir_path, AT.REMOVEDIR) catch |err| switch (err) { - error.FileSystem => unreachable, // only occurs when targeting files - error.IsDir => unreachable, // only occurs when targeting files - else => |e| return e, - }; - } else if (builtin.os.tag == .windows) { - const dir_path_w = try windows.sliceToPrefixedFileW(null, dir_path); - return rmdirW(dir_path_w.span()); - } else { - const dir_path_c = try toPosixPath(dir_path); - return rmdirZ(&dir_path_c); - } -} - -/// Same as `rmdir` except the parameter is null-terminated. -/// On Windows, `dir_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On WASI, `dir_path` should be encoded as valid UTF-8. -/// On other platforms, `dir_path` is an opaque sequence of bytes with no particular encoding. -pub fn rmdirZ(dir_path: [*:0]const u8) DeleteDirError!void { - if (builtin.os.tag == .windows) { - const dir_path_w = try windows.cStrToPrefixedFileW(null, dir_path); - return rmdirW(dir_path_w.span()); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - return rmdir(mem.sliceTo(dir_path, 0)); - } - switch (errno(system.rmdir(dir_path))) { - .SUCCESS => return, - .ACCES => return error.AccessDenied, - .PERM => return error.AccessDenied, - .BUSY => return error.FileBusy, - .FAULT => unreachable, - .INVAL => return error.BadPathName, - .LOOP => return error.SymLinkLoop, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOMEM => return error.SystemResources, - .NOTDIR => return error.NotDir, - .EXIST => return error.DirNotEmpty, - .NOTEMPTY => return error.DirNotEmpty, - .ROFS => return error.ReadOnlyFileSystem, - .ILSEQ => |err| if (builtin.os.tag == .wasi) - return error.InvalidUtf8 - else - return unexpectedErrno(err), - else => |err| return unexpectedErrno(err), - } -} - -/// Windows-only. Same as `rmdir` except the parameter is WTF-16 LE encoded. -pub fn rmdirW(dir_path_w: []const u16) DeleteDirError!void { - return windows.DeleteFile(dir_path_w, .{ .dir = std.fs.cwd().fd, .remove_dir = true }) catch |err| switch (err) { - error.IsDir => unreachable, - else => |e| return e, - }; -} - -pub const ChangeCurDirError = error{ - AccessDenied, - FileSystem, - SymLinkLoop, - NameTooLong, - FileNotFound, - SystemResources, - NotDir, - BadPathName, - /// WASI-only; file paths must be valid UTF-8. - InvalidUtf8, - /// Windows-only; file paths provided by the user must be valid WTF-8. - /// https://simonsapin.github.io/wtf-8/ - InvalidWtf8, -} || UnexpectedError; - -/// Changes the current working directory of the calling process. -/// On Windows, `dir_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On WASI, `dir_path` should be encoded as valid UTF-8. -/// On other platforms, `dir_path` is an opaque sequence of bytes with no particular encoding. -pub fn chdir(dir_path: []const u8) ChangeCurDirError!void { - if (builtin.os.tag == .wasi and !builtin.link_libc) { - @compileError("WASI does not support os.chdir"); - } else if (builtin.os.tag == .windows) { - var wtf16_dir_path: [windows.PATH_MAX_WIDE]u16 = undefined; - const len = try std.unicode.wtf8ToWtf16Le(wtf16_dir_path[0..], dir_path); - if (len > wtf16_dir_path.len) return error.NameTooLong; - return chdirW(wtf16_dir_path[0..len]); - } else { - const dir_path_c = try toPosixPath(dir_path); - return chdirZ(&dir_path_c); - } -} - -/// Same as `chdir` except the parameter is null-terminated. -/// On Windows, `dir_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On WASI, `dir_path` should be encoded as valid UTF-8. -/// On other platforms, `dir_path` is an opaque sequence of bytes with no particular encoding. -pub fn chdirZ(dir_path: [*:0]const u8) ChangeCurDirError!void { - if (builtin.os.tag == .windows) { - var wtf16_dir_path: [windows.PATH_MAX_WIDE]u16 = undefined; - const len = try std.unicode.wtf8ToWtf16Le(wtf16_dir_path[0..], mem.span(dir_path)); - if (len > wtf16_dir_path.len) return error.NameTooLong; - return chdirW(wtf16_dir_path[0..len]); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - return chdir(mem.span(dir_path)); - } - switch (errno(system.chdir(dir_path))) { - .SUCCESS => return, - .ACCES => return error.AccessDenied, - .FAULT => unreachable, - .IO => return error.FileSystem, - .LOOP => return error.SymLinkLoop, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOMEM => return error.SystemResources, - .NOTDIR => return error.NotDir, - .ILSEQ => |err| if (builtin.os.tag == .wasi) - return error.InvalidUtf8 - else - return unexpectedErrno(err), - else => |err| return unexpectedErrno(err), - } -} - -/// Windows-only. Same as `chdir` except the parameter is WTF16 LE encoded. -pub fn chdirW(dir_path: []const u16) ChangeCurDirError!void { - windows.SetCurrentDirectory(dir_path) catch |err| switch (err) { - error.NoDevice => return error.FileSystem, - else => |e| return e, - }; -} - -pub const FchdirError = error{ - AccessDenied, - NotDir, - FileSystem, -} || UnexpectedError; - -pub fn fchdir(dirfd: fd_t) FchdirError!void { - if (dirfd == AT.FDCWD) return; - while (true) { - switch (errno(system.fchdir(dirfd))) { - .SUCCESS => return, - .ACCES => return error.AccessDenied, - .BADF => unreachable, - .NOTDIR => return error.NotDir, - .INTR => continue, - .IO => return error.FileSystem, - else => |err| return unexpectedErrno(err), - } - } -} - -pub const ReadLinkError = error{ - /// In WASI, this error may occur when the file descriptor does - /// not hold the required rights to read value of a symbolic link relative to it. - AccessDenied, - FileSystem, - SymLinkLoop, - NameTooLong, - FileNotFound, - SystemResources, - NotLink, - NotDir, - /// WASI-only; file paths must be valid UTF-8. - InvalidUtf8, - /// Windows-only; file paths provided by the user must be valid WTF-8. - /// https://simonsapin.github.io/wtf-8/ - InvalidWtf8, - BadPathName, - /// Windows-only. This error may occur if the opened reparse point is - /// of unsupported type. - UnsupportedReparsePointType, - /// On Windows, `\\server` or `\\server\share` was not found. - NetworkNotFound, -} || UnexpectedError; - -/// Read value of a symbolic link. -/// On Windows, `file_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On WASI, `file_path` should be encoded as valid UTF-8. -/// On other platforms, `file_path` is an opaque sequence of bytes with no particular encoding. -/// The return value is a slice of `out_buffer` from index 0. -/// On Windows, the result is encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On WASI, the result is encoded as UTF-8. -/// On other platforms, the result is an opaque sequence of bytes with no particular encoding. -pub fn readlink(file_path: []const u8, out_buffer: []u8) ReadLinkError![]u8 { - if (builtin.os.tag == .wasi and !builtin.link_libc) { - return readlinkat(wasi.AT.FDCWD, file_path, out_buffer); - } else if (builtin.os.tag == .windows) { - const file_path_w = try windows.sliceToPrefixedFileW(null, file_path); - return readlinkW(file_path_w.span(), out_buffer); - } else { - const file_path_c = try toPosixPath(file_path); - return readlinkZ(&file_path_c, out_buffer); - } -} - -/// Windows-only. Same as `readlink` except `file_path` is WTF16 LE encoded. -/// The result is encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// See also `readlinkZ`. -pub fn readlinkW(file_path: []const u16, out_buffer: []u8) ReadLinkError![]u8 { - return windows.ReadLink(std.fs.cwd().fd, file_path, out_buffer); -} - -/// Same as `readlink` except `file_path` is null-terminated. -pub fn readlinkZ(file_path: [*:0]const u8, out_buffer: []u8) ReadLinkError![]u8 { - if (builtin.os.tag == .windows) { - const file_path_w = try windows.cStrToPrefixedFileW(null, file_path); - return readlinkW(file_path_w.span(), out_buffer); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - return readlink(mem.sliceTo(file_path, 0), out_buffer); - } - const rc = system.readlink(file_path, out_buffer.ptr, out_buffer.len); - switch (errno(rc)) { - .SUCCESS => return out_buffer[0..@bitCast(rc)], - .ACCES => return error.AccessDenied, - .FAULT => unreachable, - .INVAL => return error.NotLink, - .IO => return error.FileSystem, - .LOOP => return error.SymLinkLoop, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOMEM => return error.SystemResources, - .NOTDIR => return error.NotDir, - .ILSEQ => |err| if (builtin.os.tag == .wasi) - return error.InvalidUtf8 - else - return unexpectedErrno(err), - else => |err| return unexpectedErrno(err), - } -} - -/// Similar to `readlink` except reads value of a symbolink link **relative** to `dirfd` directory handle. -/// On Windows, `file_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On WASI, `file_path` should be encoded as valid UTF-8. -/// On other platforms, `file_path` is an opaque sequence of bytes with no particular encoding. -/// The return value is a slice of `out_buffer` from index 0. -/// On Windows, the result is encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On WASI, the result is encoded as UTF-8. -/// On other platforms, the result is an opaque sequence of bytes with no particular encoding. -/// See also `readlinkatWasi`, `realinkatZ` and `realinkatW`. -pub fn readlinkat(dirfd: fd_t, file_path: []const u8, out_buffer: []u8) ReadLinkError![]u8 { - if (builtin.os.tag == .wasi and !builtin.link_libc) { - return readlinkatWasi(dirfd, file_path, out_buffer); - } - if (builtin.os.tag == .windows) { - const file_path_w = try windows.sliceToPrefixedFileW(dirfd, file_path); - return readlinkatW(dirfd, file_path_w.span(), out_buffer); - } - const file_path_c = try toPosixPath(file_path); - return readlinkatZ(dirfd, &file_path_c, out_buffer); -} - -/// WASI-only. Same as `readlinkat` but targets WASI. -/// See also `readlinkat`. -pub fn readlinkatWasi(dirfd: fd_t, file_path: []const u8, out_buffer: []u8) ReadLinkError![]u8 { - var bufused: usize = undefined; - switch (wasi.path_readlink(dirfd, file_path.ptr, file_path.len, out_buffer.ptr, out_buffer.len, &bufused)) { - .SUCCESS => return out_buffer[0..bufused], - .ACCES => return error.AccessDenied, - .FAULT => unreachable, - .INVAL => return error.NotLink, - .IO => return error.FileSystem, - .LOOP => return error.SymLinkLoop, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOMEM => return error.SystemResources, - .NOTDIR => return error.NotDir, - .NOTCAPABLE => return error.AccessDenied, - .ILSEQ => return error.InvalidUtf8, - else => |err| return unexpectedErrno(err), - } -} - -/// Windows-only. Same as `readlinkat` except `file_path` is null-terminated, WTF16 LE encoded. -/// The result is encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// See also `readlinkat`. -pub fn readlinkatW(dirfd: fd_t, file_path: []const u16, out_buffer: []u8) ReadLinkError![]u8 { - return windows.ReadLink(dirfd, file_path, out_buffer); -} - -/// Same as `readlinkat` except `file_path` is null-terminated. -/// See also `readlinkat`. -pub fn readlinkatZ(dirfd: fd_t, file_path: [*:0]const u8, out_buffer: []u8) ReadLinkError![]u8 { - if (builtin.os.tag == .windows) { - const file_path_w = try windows.cStrToPrefixedFileW(dirfd, file_path); - return readlinkatW(dirfd, file_path_w.span(), out_buffer); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - return readlinkat(dirfd, mem.sliceTo(file_path, 0), out_buffer); - } - const rc = system.readlinkat(dirfd, file_path, out_buffer.ptr, out_buffer.len); - switch (errno(rc)) { - .SUCCESS => return out_buffer[0..@bitCast(rc)], - .ACCES => return error.AccessDenied, - .FAULT => unreachable, - .INVAL => return error.NotLink, - .IO => return error.FileSystem, - .LOOP => return error.SymLinkLoop, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOMEM => return error.SystemResources, - .NOTDIR => return error.NotDir, - .ILSEQ => |err| if (builtin.os.tag == .wasi) - return error.InvalidUtf8 - else - return unexpectedErrno(err), - else => |err| return unexpectedErrno(err), - } -} - -pub const SetEidError = error{ - InvalidUserId, - PermissionDenied, -} || UnexpectedError; - -pub const SetIdError = error{ResourceLimitReached} || SetEidError; - -pub fn setuid(uid: uid_t) SetIdError!void { - switch (errno(system.setuid(uid))) { - .SUCCESS => return, - .AGAIN => return error.ResourceLimitReached, - .INVAL => return error.InvalidUserId, - .PERM => return error.PermissionDenied, - else => |err| return unexpectedErrno(err), - } -} - -pub fn seteuid(uid: uid_t) SetEidError!void { - switch (errno(system.seteuid(uid))) { - .SUCCESS => return, - .INVAL => return error.InvalidUserId, - .PERM => return error.PermissionDenied, - else => |err| return unexpectedErrno(err), - } -} - -pub fn setreuid(ruid: uid_t, euid: uid_t) SetIdError!void { - switch (errno(system.setreuid(ruid, euid))) { - .SUCCESS => return, - .AGAIN => return error.ResourceLimitReached, - .INVAL => return error.InvalidUserId, - .PERM => return error.PermissionDenied, - else => |err| return unexpectedErrno(err), - } -} - -pub fn setgid(gid: gid_t) SetIdError!void { - switch (errno(system.setgid(gid))) { - .SUCCESS => return, - .AGAIN => return error.ResourceLimitReached, - .INVAL => return error.InvalidUserId, - .PERM => return error.PermissionDenied, - else => |err| return unexpectedErrno(err), - } -} - -pub fn setegid(uid: uid_t) SetEidError!void { - switch (errno(system.setegid(uid))) { - .SUCCESS => return, - .INVAL => return error.InvalidUserId, - .PERM => return error.PermissionDenied, - else => |err| return unexpectedErrno(err), - } -} - -pub fn setregid(rgid: gid_t, egid: gid_t) SetIdError!void { - switch (errno(system.setregid(rgid, egid))) { - .SUCCESS => return, - .AGAIN => return error.ResourceLimitReached, - .INVAL => return error.InvalidUserId, - .PERM => return error.PermissionDenied, - else => |err| return unexpectedErrno(err), - } -} - -/// Test whether a file descriptor refers to a terminal. -pub fn isatty(handle: fd_t) bool { - if (builtin.os.tag == .windows) { - if (isCygwinPty(handle)) - return true; - - var out: windows.DWORD = undefined; - return windows.kernel32.GetConsoleMode(handle, &out) != 0; - } - if (builtin.link_libc) { - return system.isatty(handle) != 0; - } - if (builtin.os.tag == .wasi) { - var statbuf: wasi.fdstat_t = undefined; - const err = wasi.fd_fdstat_get(handle, &statbuf); - if (err != .SUCCESS) - return false; - - // A tty is a character device that we can't seek or tell on. - if (statbuf.fs_filetype != .CHARACTER_DEVICE) - return false; - if (statbuf.fs_rights_base.FD_SEEK or statbuf.fs_rights_base.FD_TELL) - return false; - - return true; - } - if (builtin.os.tag == .linux) { - while (true) { - var wsz: linux.winsize = undefined; - const fd: usize = @bitCast(@as(isize, handle)); - const rc = linux.syscall3(.ioctl, fd, linux.T.IOCGWINSZ, @intFromPtr(&wsz)); - switch (linux.getErrno(rc)) { - .SUCCESS => return true, - .INTR => continue, - else => return false, - } - } - } - return system.isatty(handle) != 0; -} - -pub fn isCygwinPty(handle: fd_t) bool { - if (builtin.os.tag != .windows) return false; - - // If this is a MSYS2/cygwin pty, then it will be a named pipe with a name in one of these formats: - // msys-[...]-ptyN-[...] - // cygwin-[...]-ptyN-[...] - // - // Example: msys-1888ae32e00d56aa-pty0-to-master - - // First, just check that the handle is a named pipe. - // This allows us to avoid the more costly NtQueryInformationFile call - // for handles that aren't named pipes. - { - var io_status: windows.IO_STATUS_BLOCK = undefined; - var device_info: windows.FILE_FS_DEVICE_INFORMATION = undefined; - const rc = windows.ntdll.NtQueryVolumeInformationFile(handle, &io_status, &device_info, @sizeOf(windows.FILE_FS_DEVICE_INFORMATION), .FileFsDeviceInformation); - switch (rc) { - .SUCCESS => {}, - else => return false, - } - if (device_info.DeviceType != windows.FILE_DEVICE_NAMED_PIPE) return false; - } - - const name_bytes_offset = @offsetOf(windows.FILE_NAME_INFO, "FileName"); - // `NAME_MAX` UTF-16 code units (2 bytes each) - // Note: This buffer may not be long enough to handle *all* possible paths (PATH_MAX_WIDE would be necessary for that), - // but because we only care about certain paths and we know they must be within a reasonable length, - // we can use this smaller buffer and just return false on any error from NtQueryInformationFile. - const num_name_bytes = windows.MAX_PATH * 2; - var name_info_bytes align(@alignOf(windows.FILE_NAME_INFO)) = [_]u8{0} ** (name_bytes_offset + num_name_bytes); - - var io_status_block: windows.IO_STATUS_BLOCK = undefined; - const rc = windows.ntdll.NtQueryInformationFile(handle, &io_status_block, &name_info_bytes, @intCast(name_info_bytes.len), .FileNameInformation); - switch (rc) { - .SUCCESS => {}, - .INVALID_PARAMETER => unreachable, - else => return false, - } - - const name_info: *const windows.FILE_NAME_INFO = @ptrCast(&name_info_bytes); - const name_bytes = name_info_bytes[name_bytes_offset .. name_bytes_offset + name_info.FileNameLength]; - const name_wide = mem.bytesAsSlice(u16, name_bytes); - // Note: The name we get from NtQueryInformationFile will be prefixed with a '\', e.g. \msys-1888ae32e00d56aa-pty0-to-master - return (mem.startsWith(u16, name_wide, &[_]u16{ '\\', 'm', 's', 'y', 's', '-' }) or - mem.startsWith(u16, name_wide, &[_]u16{ '\\', 'c', 'y', 'g', 'w', 'i', 'n', '-' })) and - mem.indexOf(u16, name_wide, &[_]u16{ '-', 'p', 't', 'y' }) != null; -} - -pub const SocketError = error{ - /// Permission to create a socket of the specified type and/or - /// pro‐tocol is denied. - PermissionDenied, - - /// The implementation does not support the specified address family. - AddressFamilyNotSupported, - - /// Unknown protocol, or protocol family not available. - ProtocolFamilyNotAvailable, - - /// The per-process limit on the number of open file descriptors has been reached. - ProcessFdQuotaExceeded, - - /// The system-wide limit on the total number of open files has been reached. - SystemFdQuotaExceeded, - - /// Insufficient memory is available. The socket cannot be created until sufficient - /// resources are freed. - SystemResources, - - /// The protocol type or the specified protocol is not supported within this domain. - ProtocolNotSupported, - - /// The socket type is not supported by the protocol. - SocketTypeNotSupported, -} || UnexpectedError; - -pub fn socket(domain: u32, socket_type: u32, protocol: u32) SocketError!socket_t { - if (builtin.os.tag == .windows) { - // NOTE: windows translates the SOCK.NONBLOCK/SOCK.CLOEXEC flags into - // windows-analagous operations - const filtered_sock_type = socket_type & ~@as(u32, SOCK.NONBLOCK | SOCK.CLOEXEC); - const flags: u32 = if ((socket_type & SOCK.CLOEXEC) != 0) - windows.ws2_32.WSA_FLAG_NO_HANDLE_INHERIT - else - 0; - const rc = try windows.WSASocketW( - @bitCast(domain), - @bitCast(filtered_sock_type), - @bitCast(protocol), - null, - 0, - flags, - ); - errdefer windows.closesocket(rc) catch unreachable; - if ((socket_type & SOCK.NONBLOCK) != 0) { - var mode: c_ulong = 1; // nonblocking - if (windows.ws2_32.SOCKET_ERROR == windows.ws2_32.ioctlsocket(rc, windows.ws2_32.FIONBIO, &mode)) { - switch (windows.ws2_32.WSAGetLastError()) { - // have not identified any error codes that should be handled yet - else => unreachable, - } - } - } - return rc; - } - - const have_sock_flags = !builtin.target.isDarwin(); - const filtered_sock_type = if (!have_sock_flags) - socket_type & ~@as(u32, SOCK.NONBLOCK | SOCK.CLOEXEC) - else - socket_type; - const rc = system.socket(domain, filtered_sock_type, protocol); - switch (errno(rc)) { - .SUCCESS => { - const fd: fd_t = @intCast(rc); - errdefer close(fd); - if (!have_sock_flags) { - try setSockFlags(fd, socket_type); - } - return fd; - }, - .ACCES => return error.PermissionDenied, - .AFNOSUPPORT => return error.AddressFamilyNotSupported, - .INVAL => return error.ProtocolFamilyNotAvailable, - .MFILE => return error.ProcessFdQuotaExceeded, - .NFILE => return error.SystemFdQuotaExceeded, - .NOBUFS => return error.SystemResources, - .NOMEM => return error.SystemResources, - .PROTONOSUPPORT => return error.ProtocolNotSupported, - .PROTOTYPE => return error.SocketTypeNotSupported, - else => |err| return unexpectedErrno(err), - } -} - -pub const ShutdownError = error{ - ConnectionAborted, - - /// Connection was reset by peer, application should close socket as it is no longer usable. - ConnectionResetByPeer, - BlockingOperationInProgress, - - /// The network subsystem has failed. - NetworkSubsystemFailed, - - /// The socket is not connected (connection-oriented sockets only). - SocketNotConnected, - SystemResources, -} || UnexpectedError; - -pub const ShutdownHow = enum { recv, send, both }; - -/// Shutdown socket send/receive operations -pub fn shutdown(sock: socket_t, how: ShutdownHow) ShutdownError!void { - if (builtin.os.tag == .windows) { - const result = windows.ws2_32.shutdown(sock, switch (how) { - .recv => windows.ws2_32.SD_RECEIVE, - .send => windows.ws2_32.SD_SEND, - .both => windows.ws2_32.SD_BOTH, - }); - if (0 != result) switch (windows.ws2_32.WSAGetLastError()) { - .WSAECONNABORTED => return error.ConnectionAborted, - .WSAECONNRESET => return error.ConnectionResetByPeer, - .WSAEINPROGRESS => return error.BlockingOperationInProgress, - .WSAEINVAL => unreachable, - .WSAENETDOWN => return error.NetworkSubsystemFailed, - .WSAENOTCONN => return error.SocketNotConnected, - .WSAENOTSOCK => unreachable, - .WSANOTINITIALISED => unreachable, - else => |err| return windows.unexpectedWSAError(err), - }; - } else { - const rc = system.shutdown(sock, switch (how) { - .recv => SHUT.RD, - .send => SHUT.WR, - .both => SHUT.RDWR, - }); - switch (errno(rc)) { - .SUCCESS => return, - .BADF => unreachable, - .INVAL => unreachable, - .NOTCONN => return error.SocketNotConnected, - .NOTSOCK => unreachable, - .NOBUFS => return error.SystemResources, - else => |err| return unexpectedErrno(err), - } - } -} - -pub const BindError = error{ - /// The address is protected, and the user is not the superuser. - /// For UNIX domain sockets: Search permission is denied on a component - /// of the path prefix. - AccessDenied, - - /// The given address is already in use, or in the case of Internet domain sockets, - /// The port number was specified as zero in the socket - /// address structure, but, upon attempting to bind to an ephemeral port, it was - /// determined that all port numbers in the ephemeral port range are currently in - /// use. See the discussion of /proc/sys/net/ipv4/ip_local_port_range ip(7). - AddressInUse, - - /// A nonexistent interface was requested or the requested address was not local. - AddressNotAvailable, - - /// The address is not valid for the address family of socket. - AddressFamilyNotSupported, - - /// Too many symbolic links were encountered in resolving addr. - SymLinkLoop, - - /// addr is too long. - NameTooLong, - - /// A component in the directory prefix of the socket pathname does not exist. - FileNotFound, - - /// Insufficient kernel memory was available. - SystemResources, - - /// A component of the path prefix is not a directory. - NotDir, - - /// The socket inode would reside on a read-only filesystem. - ReadOnlyFileSystem, - - /// The network subsystem has failed. - NetworkSubsystemFailed, - - FileDescriptorNotASocket, - - AlreadyBound, -} || UnexpectedError; - -/// addr is `*const T` where T is one of the sockaddr -pub fn bind(sock: socket_t, addr: *const sockaddr, len: socklen_t) BindError!void { - if (builtin.os.tag == .windows) { - const rc = windows.bind(sock, addr, len); - if (rc == windows.ws2_32.SOCKET_ERROR) { - switch (windows.ws2_32.WSAGetLastError()) { - .WSANOTINITIALISED => unreachable, // not initialized WSA - .WSAEACCES => return error.AccessDenied, - .WSAEADDRINUSE => return error.AddressInUse, - .WSAEADDRNOTAVAIL => return error.AddressNotAvailable, - .WSAENOTSOCK => return error.FileDescriptorNotASocket, - .WSAEFAULT => unreachable, // invalid pointers - .WSAEINVAL => return error.AlreadyBound, - .WSAENOBUFS => return error.SystemResources, - .WSAENETDOWN => return error.NetworkSubsystemFailed, - else => |err| return windows.unexpectedWSAError(err), - } - unreachable; - } - return; - } else { - const rc = system.bind(sock, addr, len); - switch (errno(rc)) { - .SUCCESS => return, - .ACCES, .PERM => return error.AccessDenied, - .ADDRINUSE => return error.AddressInUse, - .BADF => unreachable, // always a race condition if this error is returned - .INVAL => unreachable, // invalid parameters - .NOTSOCK => unreachable, // invalid `sockfd` - .AFNOSUPPORT => return error.AddressFamilyNotSupported, - .ADDRNOTAVAIL => return error.AddressNotAvailable, - .FAULT => unreachable, // invalid `addr` pointer - .LOOP => return error.SymLinkLoop, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOMEM => return error.SystemResources, - .NOTDIR => return error.NotDir, - .ROFS => return error.ReadOnlyFileSystem, - else => |err| return unexpectedErrno(err), - } - } - unreachable; -} - -pub const ListenError = error{ - /// Another socket is already listening on the same port. - /// For Internet domain sockets, the socket referred to by sockfd had not previously - /// been bound to an address and, upon attempting to bind it to an ephemeral port, it - /// was determined that all port numbers in the ephemeral port range are currently in - /// use. See the discussion of /proc/sys/net/ipv4/ip_local_port_range in ip(7). - AddressInUse, - - /// The file descriptor sockfd does not refer to a socket. - FileDescriptorNotASocket, - - /// The socket is not of a type that supports the listen() operation. - OperationNotSupported, - - /// The network subsystem has failed. - NetworkSubsystemFailed, - - /// Ran out of system resources - /// On Windows it can either run out of socket descriptors or buffer space - SystemResources, - - /// Already connected - AlreadyConnected, - - /// Socket has not been bound yet - SocketNotBound, -} || UnexpectedError; - -pub fn listen(sock: socket_t, backlog: u31) ListenError!void { - if (builtin.os.tag == .windows) { - const rc = windows.listen(sock, backlog); - if (rc == windows.ws2_32.SOCKET_ERROR) { - switch (windows.ws2_32.WSAGetLastError()) { - .WSANOTINITIALISED => unreachable, // not initialized WSA - .WSAENETDOWN => return error.NetworkSubsystemFailed, - .WSAEADDRINUSE => return error.AddressInUse, - .WSAEISCONN => return error.AlreadyConnected, - .WSAEINVAL => return error.SocketNotBound, - .WSAEMFILE, .WSAENOBUFS => return error.SystemResources, - .WSAENOTSOCK => return error.FileDescriptorNotASocket, - .WSAEOPNOTSUPP => return error.OperationNotSupported, - .WSAEINPROGRESS => unreachable, - else => |err| return windows.unexpectedWSAError(err), - } - } - return; - } else { - const rc = system.listen(sock, backlog); - switch (errno(rc)) { - .SUCCESS => return, - .ADDRINUSE => return error.AddressInUse, - .BADF => unreachable, - .NOTSOCK => return error.FileDescriptorNotASocket, - .OPNOTSUPP => return error.OperationNotSupported, - else => |err| return unexpectedErrno(err), - } - } -} - -pub const AcceptError = error{ - ConnectionAborted, - - /// The file descriptor sockfd does not refer to a socket. - FileDescriptorNotASocket, - - /// The per-process limit on the number of open file descriptors has been reached. - ProcessFdQuotaExceeded, - - /// The system-wide limit on the total number of open files has been reached. - SystemFdQuotaExceeded, - - /// Not enough free memory. This often means that the memory allocation is limited - /// by the socket buffer limits, not by the system memory. - SystemResources, - - /// Socket is not listening for new connections. - SocketNotListening, - - ProtocolFailure, - - /// Firewall rules forbid connection. - BlockedByFirewall, - - /// This error occurs when no global event loop is configured, - /// and accepting from the socket would block. - WouldBlock, - - /// An incoming connection was indicated, but was subsequently terminated by the - /// remote peer prior to accepting the call. - ConnectionResetByPeer, - - /// The network subsystem has failed. - NetworkSubsystemFailed, - - /// The referenced socket is not a type that supports connection-oriented service. - OperationNotSupported, -} || UnexpectedError; - -/// Accept a connection on a socket. -/// If `sockfd` is opened in non blocking mode, the function will -/// return error.WouldBlock when EAGAIN is received. -pub fn accept( - /// This argument is a socket that has been created with `socket`, bound to a local address - /// with `bind`, and is listening for connections after a `listen`. - sock: socket_t, - /// This argument is a pointer to a sockaddr structure. This structure is filled in with the - /// address of the peer socket, as known to the communications layer. The exact format of the - /// address returned addr is determined by the socket's address family (see `socket` and the - /// respective protocol man pages). - addr: ?*sockaddr, - /// This argument is a value-result argument: the caller must initialize it to contain the - /// size (in bytes) of the structure pointed to by addr; on return it will contain the actual size - /// of the peer address. - /// - /// The returned address is truncated if the buffer provided is too small; in this case, `addr_size` - /// will return a value greater than was supplied to the call. - addr_size: ?*socklen_t, - /// The following values can be bitwise ORed in flags to obtain different behavior: - /// * `SOCK.NONBLOCK` - Set the `NONBLOCK` file status flag on the open file description (see `open`) - /// referred to by the new file descriptor. Using this flag saves extra calls to `fcntl` to achieve - /// the same result. - /// * `SOCK.CLOEXEC` - Set the close-on-exec (`FD_CLOEXEC`) flag on the new file descriptor. See the - /// description of the `CLOEXEC` flag in `open` for reasons why this may be useful. - flags: u32, -) AcceptError!socket_t { - const have_accept4 = !(builtin.target.isDarwin() or builtin.os.tag == .windows); - assert(0 == (flags & ~@as(u32, SOCK.NONBLOCK | SOCK.CLOEXEC))); // Unsupported flag(s) - - const accepted_sock: socket_t = while (true) { - const rc = if (have_accept4) - system.accept4(sock, addr, addr_size, flags) - else if (builtin.os.tag == .windows) - windows.accept(sock, addr, addr_size) - else - system.accept(sock, addr, addr_size); - - if (builtin.os.tag == .windows) { - if (rc == windows.ws2_32.INVALID_SOCKET) { - switch (windows.ws2_32.WSAGetLastError()) { - .WSANOTINITIALISED => unreachable, // not initialized WSA - .WSAECONNRESET => return error.ConnectionResetByPeer, - .WSAEFAULT => unreachable, - .WSAEINVAL => return error.SocketNotListening, - .WSAEMFILE => return error.ProcessFdQuotaExceeded, - .WSAENETDOWN => return error.NetworkSubsystemFailed, - .WSAENOBUFS => return error.FileDescriptorNotASocket, - .WSAEOPNOTSUPP => return error.OperationNotSupported, - .WSAEWOULDBLOCK => return error.WouldBlock, - else => |err| return windows.unexpectedWSAError(err), - } - } else { - break rc; - } - } else { - switch (errno(rc)) { - .SUCCESS => break @intCast(rc), - .INTR => continue, - .AGAIN => return error.WouldBlock, - .BADF => unreachable, // always a race condition - .CONNABORTED => return error.ConnectionAborted, - .FAULT => unreachable, - .INVAL => return error.SocketNotListening, - .NOTSOCK => unreachable, - .MFILE => return error.ProcessFdQuotaExceeded, - .NFILE => return error.SystemFdQuotaExceeded, - .NOBUFS => return error.SystemResources, - .NOMEM => return error.SystemResources, - .OPNOTSUPP => unreachable, - .PROTO => return error.ProtocolFailure, - .PERM => return error.BlockedByFirewall, - else => |err| return unexpectedErrno(err), - } - } - }; - - errdefer switch (builtin.os.tag) { - .windows => windows.closesocket(accepted_sock) catch unreachable, - else => close(accepted_sock), - }; - if (!have_accept4) { - try setSockFlags(accepted_sock, flags); - } - return accepted_sock; -} - -pub const EpollCreateError = error{ - /// The per-user limit on the number of epoll instances imposed by - /// /proc/sys/fs/epoll/max_user_instances was encountered. See epoll(7) for further - /// details. - /// Or, The per-process limit on the number of open file descriptors has been reached. - ProcessFdQuotaExceeded, - - /// The system-wide limit on the total number of open files has been reached. - SystemFdQuotaExceeded, - - /// There was insufficient memory to create the kernel object. - SystemResources, -} || UnexpectedError; - -pub fn epoll_create1(flags: u32) EpollCreateError!i32 { - const rc = system.epoll_create1(flags); - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - else => |err| return unexpectedErrno(err), - - .INVAL => unreachable, - .MFILE => return error.ProcessFdQuotaExceeded, - .NFILE => return error.SystemFdQuotaExceeded, - .NOMEM => return error.SystemResources, - } -} - -pub const EpollCtlError = error{ - /// op was EPOLL_CTL_ADD, and the supplied file descriptor fd is already registered - /// with this epoll instance. - FileDescriptorAlreadyPresentInSet, - - /// fd refers to an epoll instance and this EPOLL_CTL_ADD operation would result in a - /// circular loop of epoll instances monitoring one another. - OperationCausesCircularLoop, - - /// op was EPOLL_CTL_MOD or EPOLL_CTL_DEL, and fd is not registered with this epoll - /// instance. - FileDescriptorNotRegistered, - - /// There was insufficient memory to handle the requested op control operation. - SystemResources, - - /// The limit imposed by /proc/sys/fs/epoll/max_user_watches was encountered while - /// trying to register (EPOLL_CTL_ADD) a new file descriptor on an epoll instance. - /// See epoll(7) for further details. - UserResourceLimitReached, - - /// The target file fd does not support epoll. This error can occur if fd refers to, - /// for example, a regular file or a directory. - FileDescriptorIncompatibleWithEpoll, -} || UnexpectedError; - -pub fn epoll_ctl(epfd: i32, op: u32, fd: i32, event: ?*linux.epoll_event) EpollCtlError!void { - const rc = system.epoll_ctl(epfd, op, fd, event); - switch (errno(rc)) { - .SUCCESS => return, - else => |err| return unexpectedErrno(err), - - .BADF => unreachable, // always a race condition if this happens - .EXIST => return error.FileDescriptorAlreadyPresentInSet, - .INVAL => unreachable, - .LOOP => return error.OperationCausesCircularLoop, - .NOENT => return error.FileDescriptorNotRegistered, - .NOMEM => return error.SystemResources, - .NOSPC => return error.UserResourceLimitReached, - .PERM => return error.FileDescriptorIncompatibleWithEpoll, - } -} - -/// Waits for an I/O event on an epoll file descriptor. -/// Returns the number of file descriptors ready for the requested I/O, -/// or zero if no file descriptor became ready during the requested timeout milliseconds. -pub fn epoll_wait(epfd: i32, events: []linux.epoll_event, timeout: i32) usize { - while (true) { - // TODO get rid of the @intCast - const rc = system.epoll_wait(epfd, events.ptr, @intCast(events.len), timeout); - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - .INTR => continue, - .BADF => unreachable, - .FAULT => unreachable, - .INVAL => unreachable, - else => unreachable, - } - } -} - -pub const EventFdError = error{ - SystemResources, - ProcessFdQuotaExceeded, - SystemFdQuotaExceeded, -} || UnexpectedError; - -pub fn eventfd(initval: u32, flags: u32) EventFdError!i32 { - const rc = system.eventfd(initval, flags); - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - else => |err| return unexpectedErrno(err), - - .INVAL => unreachable, // invalid parameters - .MFILE => return error.ProcessFdQuotaExceeded, - .NFILE => return error.SystemFdQuotaExceeded, - .NODEV => return error.SystemResources, - .NOMEM => return error.SystemResources, - } -} - -pub const GetSockNameError = error{ - /// Insufficient resources were available in the system to perform the operation. - SystemResources, - - /// The network subsystem has failed. - NetworkSubsystemFailed, - - /// Socket hasn't been bound yet - SocketNotBound, - - FileDescriptorNotASocket, -} || UnexpectedError; - -pub fn getsockname(sock: socket_t, addr: *sockaddr, addrlen: *socklen_t) GetSockNameError!void { - if (builtin.os.tag == .windows) { - const rc = windows.getsockname(sock, addr, addrlen); - if (rc == windows.ws2_32.SOCKET_ERROR) { - switch (windows.ws2_32.WSAGetLastError()) { - .WSANOTINITIALISED => unreachable, - .WSAENETDOWN => return error.NetworkSubsystemFailed, - .WSAEFAULT => unreachable, // addr or addrlen have invalid pointers or addrlen points to an incorrect value - .WSAENOTSOCK => return error.FileDescriptorNotASocket, - .WSAEINVAL => return error.SocketNotBound, - else => |err| return windows.unexpectedWSAError(err), - } - } - return; - } else { - const rc = system.getsockname(sock, addr, addrlen); - switch (errno(rc)) { - .SUCCESS => return, - else => |err| return unexpectedErrno(err), - - .BADF => unreachable, // always a race condition - .FAULT => unreachable, - .INVAL => unreachable, // invalid parameters - .NOTSOCK => return error.FileDescriptorNotASocket, - .NOBUFS => return error.SystemResources, - } - } -} - -pub fn getpeername(sock: socket_t, addr: *sockaddr, addrlen: *socklen_t) GetSockNameError!void { - if (builtin.os.tag == .windows) { - const rc = windows.getpeername(sock, addr, addrlen); - if (rc == windows.ws2_32.SOCKET_ERROR) { - switch (windows.ws2_32.WSAGetLastError()) { - .WSANOTINITIALISED => unreachable, - .WSAENETDOWN => return error.NetworkSubsystemFailed, - .WSAEFAULT => unreachable, // addr or addrlen have invalid pointers or addrlen points to an incorrect value - .WSAENOTSOCK => return error.FileDescriptorNotASocket, - .WSAEINVAL => return error.SocketNotBound, - else => |err| return windows.unexpectedWSAError(err), - } - } - return; - } else { - const rc = system.getpeername(sock, addr, addrlen); - switch (errno(rc)) { - .SUCCESS => return, - else => |err| return unexpectedErrno(err), - - .BADF => unreachable, // always a race condition - .FAULT => unreachable, - .INVAL => unreachable, // invalid parameters - .NOTSOCK => return error.FileDescriptorNotASocket, - .NOBUFS => return error.SystemResources, - } - } -} - -pub const ConnectError = error{ - /// For UNIX domain sockets, which are identified by pathname: Write permission is denied on the socket - /// file, or search permission is denied for one of the directories in the path prefix. - /// or - /// The user tried to connect to a broadcast address without having the socket broadcast flag enabled or - /// the connection request failed because of a local firewall rule. - PermissionDenied, - - /// Local address is already in use. - AddressInUse, - - /// (Internet domain sockets) The socket referred to by sockfd had not previously been bound to an - /// address and, upon attempting to bind it to an ephemeral port, it was determined that all port numbers - /// in the ephemeral port range are currently in use. See the discussion of - /// /proc/sys/net/ipv4/ip_local_port_range in ip(7). - AddressNotAvailable, - - /// The passed address didn't have the correct address family in its sa_family field. - AddressFamilyNotSupported, - - /// Insufficient entries in the routing cache. - SystemResources, - - /// A connect() on a stream socket found no one listening on the remote address. - ConnectionRefused, - - /// Network is unreachable. - NetworkUnreachable, - - /// Timeout while attempting connection. The server may be too busy to accept new connections. Note - /// that for IP sockets the timeout may be very long when syncookies are enabled on the server. - ConnectionTimedOut, - - /// This error occurs when no global event loop is configured, - /// and connecting to the socket would block. - WouldBlock, - - /// The given path for the unix socket does not exist. - FileNotFound, - - /// Connection was reset by peer before connect could complete. - ConnectionResetByPeer, - - /// Socket is non-blocking and already has a pending connection in progress. - ConnectionPending, -} || UnexpectedError; - -/// Initiate a connection on a socket. -/// If `sockfd` is opened in non blocking mode, the function will -/// return error.WouldBlock when EAGAIN or EINPROGRESS is received. -pub fn connect(sock: socket_t, sock_addr: *const sockaddr, len: socklen_t) ConnectError!void { - if (builtin.os.tag == .windows) { - const rc = windows.ws2_32.connect(sock, sock_addr, @intCast(len)); - if (rc == 0) return; - switch (windows.ws2_32.WSAGetLastError()) { - .WSAEADDRINUSE => return error.AddressInUse, - .WSAEADDRNOTAVAIL => return error.AddressNotAvailable, - .WSAECONNREFUSED => return error.ConnectionRefused, - .WSAECONNRESET => return error.ConnectionResetByPeer, - .WSAETIMEDOUT => return error.ConnectionTimedOut, - .WSAEHOSTUNREACH, // TODO: should we return NetworkUnreachable in this case as well? - .WSAENETUNREACH, - => return error.NetworkUnreachable, - .WSAEFAULT => unreachable, - .WSAEINVAL => unreachable, - .WSAEISCONN => unreachable, - .WSAENOTSOCK => unreachable, - .WSAEWOULDBLOCK => return error.WouldBlock, - .WSAEACCES => unreachable, - .WSAENOBUFS => return error.SystemResources, - .WSAEAFNOSUPPORT => return error.AddressFamilyNotSupported, - else => |err| return windows.unexpectedWSAError(err), - } - return; - } - - while (true) { - switch (errno(system.connect(sock, sock_addr, len))) { - .SUCCESS => return, - .ACCES => return error.PermissionDenied, - .PERM => return error.PermissionDenied, - .ADDRINUSE => return error.AddressInUse, - .ADDRNOTAVAIL => return error.AddressNotAvailable, - .AFNOSUPPORT => return error.AddressFamilyNotSupported, - .AGAIN, .INPROGRESS => return error.WouldBlock, - .ALREADY => return error.ConnectionPending, - .BADF => unreachable, // sockfd is not a valid open file descriptor. - .CONNREFUSED => return error.ConnectionRefused, - .CONNRESET => return error.ConnectionResetByPeer, - .FAULT => unreachable, // The socket structure address is outside the user's address space. - .INTR => continue, - .ISCONN => unreachable, // The socket is already connected. - .HOSTUNREACH => return error.NetworkUnreachable, - .NETUNREACH => return error.NetworkUnreachable, - .NOTSOCK => unreachable, // The file descriptor sockfd does not refer to a socket. - .PROTOTYPE => unreachable, // The socket type does not support the requested communications protocol. - .TIMEDOUT => return error.ConnectionTimedOut, - .NOENT => return error.FileNotFound, // Returned when socket is AF.UNIX and the given path does not exist. - .CONNABORTED => unreachable, // Tried to reuse socket that previously received error.ConnectionRefused. - else => |err| return unexpectedErrno(err), - } - } -} - -pub fn getsockoptError(sockfd: fd_t) ConnectError!void { - var err_code: i32 = undefined; - var size: u32 = @sizeOf(u32); - const rc = system.getsockopt(sockfd, SOL.SOCKET, SO.ERROR, @ptrCast(&err_code), &size); - assert(size == 4); - switch (errno(rc)) { - .SUCCESS => switch (@as(E, @enumFromInt(err_code))) { - .SUCCESS => return, - .ACCES => return error.PermissionDenied, - .PERM => return error.PermissionDenied, - .ADDRINUSE => return error.AddressInUse, - .ADDRNOTAVAIL => return error.AddressNotAvailable, - .AFNOSUPPORT => return error.AddressFamilyNotSupported, - .AGAIN => return error.SystemResources, - .ALREADY => return error.ConnectionPending, - .BADF => unreachable, // sockfd is not a valid open file descriptor. - .CONNREFUSED => return error.ConnectionRefused, - .FAULT => unreachable, // The socket structure address is outside the user's address space. - .ISCONN => unreachable, // The socket is already connected. - .HOSTUNREACH => return error.NetworkUnreachable, - .NETUNREACH => return error.NetworkUnreachable, - .NOTSOCK => unreachable, // The file descriptor sockfd does not refer to a socket. - .PROTOTYPE => unreachable, // The socket type does not support the requested communications protocol. - .TIMEDOUT => return error.ConnectionTimedOut, - .CONNRESET => return error.ConnectionResetByPeer, - else => |err| return unexpectedErrno(err), - }, - .BADF => unreachable, // The argument sockfd is not a valid file descriptor. - .FAULT => unreachable, // The address pointed to by optval or optlen is not in a valid part of the process address space. - .INVAL => unreachable, - .NOPROTOOPT => unreachable, // The option is unknown at the level indicated. - .NOTSOCK => unreachable, // The file descriptor sockfd does not refer to a socket. - else => |err| return unexpectedErrno(err), - } -} - -pub const WaitPidResult = struct { - pid: pid_t, - status: u32, -}; - -/// Use this version of the `waitpid` wrapper if you spawned your child process using explicit -/// `fork` and `execve` method. -pub fn waitpid(pid: pid_t, flags: u32) WaitPidResult { - var status: if (builtin.link_libc) c_int else u32 = undefined; - while (true) { - const rc = system.waitpid(pid, &status, @intCast(flags)); - switch (errno(rc)) { - .SUCCESS => return .{ - .pid = @intCast(rc), - .status = @bitCast(status), - }, - .INTR => continue, - .CHILD => unreachable, // The process specified does not exist. It would be a race condition to handle this error. - .INVAL => unreachable, // Invalid flags. - else => unreachable, - } - } -} - -pub fn wait4(pid: pid_t, flags: u32, ru: ?*rusage) WaitPidResult { - var status: if (builtin.link_libc) c_int else u32 = undefined; - while (true) { - const rc = system.wait4(pid, &status, @intCast(flags), ru); - switch (errno(rc)) { - .SUCCESS => return .{ - .pid = @intCast(rc), - .status = @bitCast(status), - }, - .INTR => continue, - .CHILD => unreachable, // The process specified does not exist. It would be a race condition to handle this error. - .INVAL => unreachable, // Invalid flags. - else => unreachable, - } - } -} - -pub const FStatError = error{ - SystemResources, - - /// In WASI, this error may occur when the file descriptor does - /// not hold the required rights to get its filestat information. - AccessDenied, -} || UnexpectedError; - -/// Return information about a file descriptor. -pub fn fstat(fd: fd_t) FStatError!Stat { - if (builtin.os.tag == .wasi and !builtin.link_libc) { - return Stat.fromFilestat(try fstat_wasi(fd)); - } - if (builtin.os.tag == .windows) { - @compileError("fstat is not yet implemented on Windows"); - } - - const fstat_sym = if (lfs64_abi) system.fstat64 else system.fstat; - var stat = mem.zeroes(Stat); - switch (errno(fstat_sym(fd, &stat))) { - .SUCCESS => return stat, - .INVAL => unreachable, - .BADF => unreachable, // Always a race condition. - .NOMEM => return error.SystemResources, - .ACCES => return error.AccessDenied, - else => |err| return unexpectedErrno(err), - } -} - -pub fn fstat_wasi(fd: fd_t) FStatError!wasi.filestat_t { - var stat: wasi.filestat_t = undefined; - switch (wasi.fd_filestat_get(fd, &stat)) { - .SUCCESS => return stat, - .INVAL => unreachable, - .BADF => unreachable, // Always a race condition. - .NOMEM => return error.SystemResources, - .ACCES => return error.AccessDenied, - .NOTCAPABLE => return error.AccessDenied, - else => |err| return unexpectedErrno(err), - } -} - -pub const FStatAtError = FStatError || error{ - NameTooLong, - FileNotFound, - SymLinkLoop, - /// WASI-only; file paths must be valid UTF-8. - InvalidUtf8, -}; - -/// Similar to `fstat`, but returns stat of a resource pointed to by `pathname` -/// which is relative to `dirfd` handle. -/// On WASI, `pathname` should be encoded as valid UTF-8. -/// On other platforms, `pathname` is an opaque sequence of bytes with no particular encoding. -/// See also `fstatatZ` and `fstatat_wasi`. -pub fn fstatat(dirfd: fd_t, pathname: []const u8, flags: u32) FStatAtError!Stat { - if (builtin.os.tag == .wasi and !builtin.link_libc) { - const filestat = try fstatat_wasi(dirfd, pathname, .{ - .SYMLINK_FOLLOW = (flags & AT.SYMLINK_NOFOLLOW) == 0, - }); - return Stat.fromFilestat(filestat); - } else if (builtin.os.tag == .windows) { - @compileError("fstatat is not yet implemented on Windows"); - } else { - const pathname_c = try toPosixPath(pathname); - return fstatatZ(dirfd, &pathname_c, flags); - } -} - -/// WASI-only. Same as `fstatat` but targeting WASI. -/// `pathname` should be encoded as valid UTF-8. -/// See also `fstatat`. -pub fn fstatat_wasi(dirfd: fd_t, pathname: []const u8, flags: wasi.lookupflags_t) FStatAtError!wasi.filestat_t { - var stat: wasi.filestat_t = undefined; - switch (wasi.path_filestat_get(dirfd, flags, pathname.ptr, pathname.len, &stat)) { - .SUCCESS => return stat, - .INVAL => unreachable, - .BADF => unreachable, // Always a race condition. - .NOMEM => return error.SystemResources, - .ACCES => return error.AccessDenied, - .FAULT => unreachable, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOTDIR => return error.FileNotFound, - .NOTCAPABLE => return error.AccessDenied, - .ILSEQ => return error.InvalidUtf8, - else => |err| return unexpectedErrno(err), - } -} - -/// Same as `fstatat` but `pathname` is null-terminated. -/// See also `fstatat`. -pub fn fstatatZ(dirfd: fd_t, pathname: [*:0]const u8, flags: u32) FStatAtError!Stat { - if (builtin.os.tag == .wasi and !builtin.link_libc) { - const filestat = try fstatat_wasi(dirfd, mem.sliceTo(pathname, 0), .{ - .SYMLINK_FOLLOW = (flags & AT.SYMLINK_NOFOLLOW) == 0, - }); - return Stat.fromFilestat(filestat); - } - - const fstatat_sym = if (lfs64_abi) system.fstatat64 else system.fstatat; - var stat = mem.zeroes(Stat); - switch (errno(fstatat_sym(dirfd, pathname, &stat, flags))) { - .SUCCESS => return stat, - .INVAL => unreachable, - .BADF => unreachable, // Always a race condition. - .NOMEM => return error.SystemResources, - .ACCES => return error.AccessDenied, - .PERM => return error.AccessDenied, - .FAULT => unreachable, - .NAMETOOLONG => return error.NameTooLong, - .LOOP => return error.SymLinkLoop, - .NOENT => return error.FileNotFound, - .NOTDIR => return error.FileNotFound, - .ILSEQ => |err| if (builtin.os.tag == .wasi) - return error.InvalidUtf8 - else - return unexpectedErrno(err), - else => |err| return unexpectedErrno(err), - } -} - -pub const KQueueError = error{ - /// The per-process limit on the number of open file descriptors has been reached. - ProcessFdQuotaExceeded, - - /// The system-wide limit on the total number of open files has been reached. - SystemFdQuotaExceeded, -} || UnexpectedError; - -pub fn kqueue() KQueueError!i32 { - const rc = system.kqueue(); - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - .MFILE => return error.ProcessFdQuotaExceeded, - .NFILE => return error.SystemFdQuotaExceeded, - else => |err| return unexpectedErrno(err), - } -} - -pub const KEventError = error{ - /// The process does not have permission to register a filter. - AccessDenied, - - /// The event could not be found to be modified or deleted. - EventNotFound, - - /// No memory was available to register the event. - SystemResources, - - /// The specified process to attach to does not exist. - ProcessNotFound, - - /// changelist or eventlist had too many items on it. - /// TODO remove this possibility - Overflow, -}; - -pub fn kevent( - kq: i32, - changelist: []const Kevent, - eventlist: []Kevent, - timeout: ?*const timespec, -) KEventError!usize { - while (true) { - const rc = system.kevent( - kq, - changelist.ptr, - math.cast(c_int, changelist.len) orelse return error.Overflow, - eventlist.ptr, - math.cast(c_int, eventlist.len) orelse return error.Overflow, - timeout, - ); - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - .ACCES => return error.AccessDenied, - .FAULT => unreachable, - .BADF => unreachable, // Always a race condition. - .INTR => continue, - .INVAL => unreachable, - .NOENT => return error.EventNotFound, - .NOMEM => return error.SystemResources, - .SRCH => return error.ProcessNotFound, - else => unreachable, - } - } -} - -pub const INotifyInitError = error{ - ProcessFdQuotaExceeded, - SystemFdQuotaExceeded, - SystemResources, -} || UnexpectedError; - -/// initialize an inotify instance -pub fn inotify_init1(flags: u32) INotifyInitError!i32 { - const rc = system.inotify_init1(flags); - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - .INVAL => unreachable, - .MFILE => return error.ProcessFdQuotaExceeded, - .NFILE => return error.SystemFdQuotaExceeded, - .NOMEM => return error.SystemResources, - else => |err| return unexpectedErrno(err), - } -} - -pub const INotifyAddWatchError = error{ - AccessDenied, - NameTooLong, - FileNotFound, - SystemResources, - UserResourceLimitReached, - NotDir, - WatchAlreadyExists, -} || UnexpectedError; - -/// add a watch to an initialized inotify instance -pub fn inotify_add_watch(inotify_fd: i32, pathname: []const u8, mask: u32) INotifyAddWatchError!i32 { - const pathname_c = try toPosixPath(pathname); - return inotify_add_watchZ(inotify_fd, &pathname_c, mask); -} - -/// Same as `inotify_add_watch` except pathname is null-terminated. -pub fn inotify_add_watchZ(inotify_fd: i32, pathname: [*:0]const u8, mask: u32) INotifyAddWatchError!i32 { - const rc = system.inotify_add_watch(inotify_fd, pathname, mask); - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - .ACCES => return error.AccessDenied, - .BADF => unreachable, - .FAULT => unreachable, - .INVAL => unreachable, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOMEM => return error.SystemResources, - .NOSPC => return error.UserResourceLimitReached, - .NOTDIR => return error.NotDir, - .EXIST => return error.WatchAlreadyExists, - else => |err| return unexpectedErrno(err), - } -} - -/// remove an existing watch from an inotify instance -pub fn inotify_rm_watch(inotify_fd: i32, wd: i32) void { - switch (errno(system.inotify_rm_watch(inotify_fd, wd))) { - .SUCCESS => return, - .BADF => unreachable, - .INVAL => unreachable, - else => unreachable, - } -} - -pub const FanotifyInitError = error{ - ProcessFdQuotaExceeded, - SystemFdQuotaExceeded, - SystemResources, - OperationNotSupported, - PermissionDenied, -} || UnexpectedError; - -pub fn fanotify_init(flags: u32, event_f_flags: u32) FanotifyInitError!i32 { - const rc = system.fanotify_init(flags, event_f_flags); - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - .INVAL => unreachable, - .MFILE => return error.ProcessFdQuotaExceeded, - .NFILE => return error.SystemFdQuotaExceeded, - .NOMEM => return error.SystemResources, - .NOSYS => return error.OperationNotSupported, - .PERM => return error.PermissionDenied, - else => |err| return unexpectedErrno(err), - } -} - -pub const FanotifyMarkError = error{ - MarkAlreadyExists, - IsDir, - NotAssociatedWithFileSystem, - FileNotFound, - SystemResources, - UserMarkQuotaExceeded, - NotImplemented, - NotDir, - OperationNotSupported, - PermissionDenied, - NotSameFileSystem, - NameTooLong, -} || UnexpectedError; - -pub fn fanotify_mark(fanotify_fd: i32, flags: u32, mask: u64, dirfd: i32, pathname: ?[]const u8) FanotifyMarkError!void { - if (pathname) |path| { - const path_c = try toPosixPath(path); - return fanotify_markZ(fanotify_fd, flags, mask, dirfd, &path_c); - } - - return fanotify_markZ(fanotify_fd, flags, mask, dirfd, null); -} - -pub fn fanotify_markZ(fanotify_fd: i32, flags: u32, mask: u64, dirfd: i32, pathname: ?[*:0]const u8) FanotifyMarkError!void { - const rc = system.fanotify_mark(fanotify_fd, flags, mask, dirfd, pathname); - switch (errno(rc)) { - .SUCCESS => return, - .BADF => unreachable, - .EXIST => return error.MarkAlreadyExists, - .INVAL => unreachable, - .ISDIR => return error.IsDir, - .NODEV => return error.NotAssociatedWithFileSystem, - .NOENT => return error.FileNotFound, - .NOMEM => return error.SystemResources, - .NOSPC => return error.UserMarkQuotaExceeded, - .NOSYS => return error.NotImplemented, - .NOTDIR => return error.NotDir, - .OPNOTSUPP => return error.OperationNotSupported, - .PERM => return error.PermissionDenied, - .XDEV => return error.NotSameFileSystem, - else => |err| return unexpectedErrno(err), - } -} - -pub const MProtectError = error{ - /// The memory cannot be given the specified access. This can happen, for example, if you - /// mmap(2) a file to which you have read-only access, then ask mprotect() to mark it - /// PROT_WRITE. - AccessDenied, - - /// Changing the protection of a memory region would result in the total number of map‐ - /// pings with distinct attributes (e.g., read versus read/write protection) exceeding the - /// allowed maximum. (For example, making the protection of a range PROT_READ in the mid‐ - /// dle of a region currently protected as PROT_READ|PROT_WRITE would result in three map‐ - /// pings: two read/write mappings at each end and a read-only mapping in the middle.) - OutOfMemory, -} || UnexpectedError; - -/// `memory.len` must be page-aligned. -pub fn mprotect(memory: []align(mem.page_size) u8, protection: u32) MProtectError!void { - assert(mem.isAligned(memory.len, mem.page_size)); - if (builtin.os.tag == .windows) { - const win_prot: windows.DWORD = switch (@as(u3, @truncate(protection))) { - 0b000 => windows.PAGE_NOACCESS, - 0b001 => windows.PAGE_READONLY, - 0b010 => unreachable, // +w -r not allowed - 0b011 => windows.PAGE_READWRITE, - 0b100 => windows.PAGE_EXECUTE, - 0b101 => windows.PAGE_EXECUTE_READ, - 0b110 => unreachable, // +w -r not allowed - 0b111 => windows.PAGE_EXECUTE_READWRITE, - }; - var old: windows.DWORD = undefined; - windows.VirtualProtect(memory.ptr, memory.len, win_prot, &old) catch |err| switch (err) { - error.InvalidAddress => return error.AccessDenied, - error.Unexpected => return error.Unexpected, - }; - } else { - switch (errno(system.mprotect(memory.ptr, memory.len, protection))) { - .SUCCESS => return, - .INVAL => unreachable, - .ACCES => return error.AccessDenied, - .NOMEM => return error.OutOfMemory, - else => |err| return unexpectedErrno(err), - } - } -} - -pub const ForkError = error{SystemResources} || UnexpectedError; - -pub fn fork() ForkError!pid_t { - const rc = system.fork(); - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - .AGAIN => return error.SystemResources, - .NOMEM => return error.SystemResources, - else => |err| return unexpectedErrno(err), - } -} - -pub const MMapError = error{ - /// The underlying filesystem of the specified file does not support memory mapping. - MemoryMappingNotSupported, - - /// A file descriptor refers to a non-regular file. Or a file mapping was requested, - /// but the file descriptor is not open for reading. Or `MAP.SHARED` was requested - /// and `PROT_WRITE` is set, but the file descriptor is not open in `RDWR` mode. - /// Or `PROT_WRITE` is set, but the file is append-only. - AccessDenied, - - /// The `prot` argument asks for `PROT_EXEC` but the mapped area belongs to a file on - /// a filesystem that was mounted no-exec. - PermissionDenied, - LockedMemoryLimitExceeded, - ProcessFdQuotaExceeded, - SystemFdQuotaExceeded, - OutOfMemory, -} || UnexpectedError; - -/// Map files or devices into memory. -/// `length` does not need to be aligned. -/// Use of a mapped region can result in these signals: -/// * SIGSEGV - Attempted write into a region mapped as read-only. -/// * SIGBUS - Attempted access to a portion of the buffer that does not correspond to the file -pub fn mmap( - ptr: ?[*]align(mem.page_size) u8, - length: usize, - prot: u32, - flags: system.MAP, - fd: fd_t, - offset: u64, -) MMapError![]align(mem.page_size) u8 { - const mmap_sym = if (lfs64_abi) system.mmap64 else system.mmap; - const rc = mmap_sym(ptr, length, prot, @bitCast(flags), fd, @bitCast(offset)); - const err: E = if (builtin.link_libc) blk: { - if (rc != std.c.MAP_FAILED) return @as([*]align(mem.page_size) u8, @ptrCast(@alignCast(rc)))[0..length]; - break :blk @enumFromInt(system._errno().*); - } else blk: { - const err = errno(rc); - if (err == .SUCCESS) return @as([*]align(mem.page_size) u8, @ptrFromInt(rc))[0..length]; - break :blk err; - }; - switch (err) { - .SUCCESS => unreachable, - .TXTBSY => return error.AccessDenied, - .ACCES => return error.AccessDenied, - .PERM => return error.PermissionDenied, - .AGAIN => return error.LockedMemoryLimitExceeded, - .BADF => unreachable, // Always a race condition. - .OVERFLOW => unreachable, // The number of pages used for length + offset would overflow. - .NODEV => return error.MemoryMappingNotSupported, - .INVAL => unreachable, // Invalid parameters to mmap() - .MFILE => return error.ProcessFdQuotaExceeded, - .NFILE => return error.SystemFdQuotaExceeded, - .NOMEM => return error.OutOfMemory, - else => return unexpectedErrno(err), - } -} - -/// Deletes the mappings for the specified address range, causing -/// further references to addresses within the range to generate invalid memory references. -/// Note that while POSIX allows unmapping a region in the middle of an existing mapping, -/// Zig's munmap function does not, for two reasons: -/// * It violates the Zig principle that resource deallocation must succeed. -/// * The Windows function, VirtualFree, has this restriction. -pub fn munmap(memory: []align(mem.page_size) const u8) void { - switch (errno(system.munmap(memory.ptr, memory.len))) { - .SUCCESS => return, - .INVAL => unreachable, // Invalid parameters. - .NOMEM => unreachable, // Attempted to unmap a region in the middle of an existing mapping. - else => unreachable, - } -} - -pub const MSyncError = error{ - UnmappedMemory, -} || UnexpectedError; - -pub fn msync(memory: []align(mem.page_size) u8, flags: i32) MSyncError!void { - switch (errno(system.msync(memory.ptr, memory.len, flags))) { - .SUCCESS => return, - .NOMEM => return error.UnmappedMemory, // Unsuccessful, provided pointer does not point mapped memory - .INVAL => unreachable, // Invalid parameters. - else => unreachable, - } -} - -pub const AccessError = error{ - PermissionDenied, - FileNotFound, - NameTooLong, - InputOutput, - SystemResources, - BadPathName, - FileBusy, - SymLinkLoop, - ReadOnlyFileSystem, - /// WASI-only; file paths must be valid UTF-8. - InvalidUtf8, - /// Windows-only; file paths provided by the user must be valid WTF-8. - /// https://simonsapin.github.io/wtf-8/ - InvalidWtf8, -} || UnexpectedError; - -/// check user's permissions for a file -/// On Windows, `path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On WASI, `path` should be encoded as valid UTF-8. -/// On other platforms, `path` is an opaque sequence of bytes with no particular encoding. -/// TODO currently this assumes `mode` is `F.OK` on Windows. -pub fn access(path: []const u8, mode: u32) AccessError!void { - if (builtin.os.tag == .windows) { - const path_w = windows.sliceToPrefixedFileW(null, path) catch |err| switch (err) { - error.AccessDenied => return error.PermissionDenied, - else => |e| return e, - }; - _ = try windows.GetFileAttributesW(path_w.span().ptr); - return; - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - return faccessat(wasi.AT.FDCWD, path, mode, 0); - } - const path_c = try toPosixPath(path); - return accessZ(&path_c, mode); -} - -/// Same as `access` except `path` is null-terminated. -pub fn accessZ(path: [*:0]const u8, mode: u32) AccessError!void { - if (builtin.os.tag == .windows) { - const path_w = windows.cStrToPrefixedFileW(null, path) catch |err| switch (err) { - error.AccessDenied => return error.PermissionDenied, - else => |e| return e, - }; - _ = try windows.GetFileAttributesW(path_w.span().ptr); - return; - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - return access(mem.sliceTo(path, 0), mode); - } - switch (errno(system.access(path, mode))) { - .SUCCESS => return, - .ACCES => return error.PermissionDenied, - .ROFS => return error.ReadOnlyFileSystem, - .LOOP => return error.SymLinkLoop, - .TXTBSY => return error.FileBusy, - .NOTDIR => return error.FileNotFound, - .NOENT => return error.FileNotFound, - .NAMETOOLONG => return error.NameTooLong, - .INVAL => unreachable, - .FAULT => unreachable, - .IO => return error.InputOutput, - .NOMEM => return error.SystemResources, - .ILSEQ => |err| if (builtin.os.tag == .wasi) - return error.InvalidUtf8 - else - return unexpectedErrno(err), - else => |err| return unexpectedErrno(err), - } -} - /// Call from Windows-specific code if you already have a WTF-16LE encoded, null terminated string. /// Otherwise use `access` or `accessZ`. -/// TODO currently this ignores `mode`. -pub fn accessW(path: [*:0]const u16, mode: u32) windows.GetFileAttributesError!void { - _ = mode; +pub fn accessW(path: [*:0]const u16) windows.GetFileAttributesError!void { const ret = try windows.GetFileAttributesW(path); if (ret != windows.INVALID_FILE_ATTRIBUTES) { return; @@ -4930,700 +69,6 @@ pub fn accessW(path: [*:0]const u16, mode: u32) windows.GetFileAttributesError!v } } -/// Check user's permissions for a file, based on an open directory handle. -/// On Windows, `path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On WASI, `path` should be encoded as valid UTF-8. -/// On other platforms, `path` is an opaque sequence of bytes with no particular encoding. -/// TODO currently this ignores `mode` and `flags` on Windows. -pub fn faccessat(dirfd: fd_t, path: []const u8, mode: u32, flags: u32) AccessError!void { - if (builtin.os.tag == .windows) { - const path_w = try windows.sliceToPrefixedFileW(dirfd, path); - return faccessatW(dirfd, path_w.span().ptr, mode, flags); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - const resolved: RelativePathWasi = .{ .dir_fd = dirfd, .relative_path = path }; - - const st = blk: { - break :blk fstatat_wasi(dirfd, path, .{ - .SYMLINK_FOLLOW = (flags & AT.SYMLINK_NOFOLLOW) == 0, - }); - } catch |err| switch (err) { - error.AccessDenied => return error.PermissionDenied, - else => |e| return e, - }; - - if (mode != F_OK) { - var directory: wasi.fdstat_t = undefined; - if (wasi.fd_fdstat_get(resolved.dir_fd, &directory) != .SUCCESS) { - return error.PermissionDenied; - } - - var rights: wasi.rights_t = .{}; - if (mode & R_OK != 0) { - if (st.filetype == .DIRECTORY) { - rights.FD_READDIR = true; - } else { - rights.FD_READ = true; - } - } - if (mode & W_OK != 0) { - rights.FD_WRITE = true; - } - // No validation for X_OK - - // https://github.com/ziglang/zig/issues/18882 - const rights_int: u64 = @bitCast(rights); - const inheriting_int: u64 = @bitCast(directory.fs_rights_inheriting); - if ((rights_int & inheriting_int) != rights_int) { - return error.PermissionDenied; - } - } - return; - } - const path_c = try toPosixPath(path); - return faccessatZ(dirfd, &path_c, mode, flags); -} - -/// Same as `faccessat` except the path parameter is null-terminated. -pub fn faccessatZ(dirfd: fd_t, path: [*:0]const u8, mode: u32, flags: u32) AccessError!void { - if (builtin.os.tag == .windows) { - const path_w = try windows.cStrToPrefixedFileW(dirfd, path); - return faccessatW(dirfd, path_w.span().ptr, mode, flags); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - return faccessat(dirfd, mem.sliceTo(path, 0), mode, flags); - } - switch (errno(system.faccessat(dirfd, path, mode, flags))) { - .SUCCESS => return, - .ACCES => return error.PermissionDenied, - .ROFS => return error.ReadOnlyFileSystem, - .LOOP => return error.SymLinkLoop, - .TXTBSY => return error.FileBusy, - .NOTDIR => return error.FileNotFound, - .NOENT => return error.FileNotFound, - .NAMETOOLONG => return error.NameTooLong, - .INVAL => unreachable, - .FAULT => unreachable, - .IO => return error.InputOutput, - .NOMEM => return error.SystemResources, - .ILSEQ => |err| if (builtin.os.tag == .wasi) - return error.InvalidUtf8 - else - return unexpectedErrno(err), - else => |err| return unexpectedErrno(err), - } -} - -/// Same as `faccessat` except asserts the target is Windows and the path parameter -/// is NtDll-prefixed, null-terminated, WTF-16 encoded. -/// TODO currently this ignores `mode` and `flags` -pub fn faccessatW(dirfd: fd_t, sub_path_w: [*:0]const u16, mode: u32, flags: u32) AccessError!void { - _ = mode; - _ = flags; - if (sub_path_w[0] == '.' and sub_path_w[1] == 0) { - return; - } - if (sub_path_w[0] == '.' and sub_path_w[1] == '.' and sub_path_w[2] == 0) { - return; - } - - const path_len_bytes = math.cast(u16, mem.sliceTo(sub_path_w, 0).len * 2) orelse return error.NameTooLong; - var nt_name = windows.UNICODE_STRING{ - .Length = path_len_bytes, - .MaximumLength = path_len_bytes, - .Buffer = @constCast(sub_path_w), - }; - var attr = windows.OBJECT_ATTRIBUTES{ - .Length = @sizeOf(windows.OBJECT_ATTRIBUTES), - .RootDirectory = if (std.fs.path.isAbsoluteWindowsW(sub_path_w)) null else dirfd, - .Attributes = 0, // Note we do not use OBJ_CASE_INSENSITIVE here. - .ObjectName = &nt_name, - .SecurityDescriptor = null, - .SecurityQualityOfService = null, - }; - var basic_info: windows.FILE_BASIC_INFORMATION = undefined; - switch (windows.ntdll.NtQueryAttributesFile(&attr, &basic_info)) { - .SUCCESS => return, - .OBJECT_NAME_NOT_FOUND => return error.FileNotFound, - .OBJECT_PATH_NOT_FOUND => return error.FileNotFound, - .OBJECT_NAME_INVALID => unreachable, - .INVALID_PARAMETER => unreachable, - .ACCESS_DENIED => return error.PermissionDenied, - .OBJECT_PATH_SYNTAX_BAD => unreachable, - else => |rc| return windows.unexpectedStatus(rc), - } -} - -pub const PipeError = error{ - SystemFdQuotaExceeded, - ProcessFdQuotaExceeded, -} || UnexpectedError; - -/// Creates a unidirectional data channel that can be used for interprocess communication. -pub fn pipe() PipeError![2]fd_t { - var fds: [2]fd_t = undefined; - switch (errno(system.pipe(&fds))) { - .SUCCESS => return fds, - .INVAL => unreachable, // Invalid parameters to pipe() - .FAULT => unreachable, // Invalid fds pointer - .NFILE => return error.SystemFdQuotaExceeded, - .MFILE => return error.ProcessFdQuotaExceeded, - else => |err| return unexpectedErrno(err), - } -} - -pub fn pipe2(flags: O) PipeError![2]fd_t { - if (@hasDecl(system, "pipe2")) { - var fds: [2]fd_t = undefined; - switch (errno(system.pipe2(&fds, flags))) { - .SUCCESS => return fds, - .INVAL => unreachable, // Invalid flags - .FAULT => unreachable, // Invalid fds pointer - .NFILE => return error.SystemFdQuotaExceeded, - .MFILE => return error.ProcessFdQuotaExceeded, - else => |err| return unexpectedErrno(err), - } - } - - const fds: [2]fd_t = try pipe(); - errdefer { - close(fds[0]); - close(fds[1]); - } - - // https://github.com/ziglang/zig/issues/18882 - if (@as(u32, @bitCast(flags)) == 0) - return fds; - - // CLOEXEC is special, it's a file descriptor flag and must be set using - // F.SETFD. - if (flags.CLOEXEC) { - for (fds) |fd| { - switch (errno(system.fcntl(fd, F.SETFD, @as(u32, FD_CLOEXEC)))) { - .SUCCESS => {}, - .INVAL => unreachable, // Invalid flags - .BADF => unreachable, // Always a race condition - else => |err| return unexpectedErrno(err), - } - } - } - - const new_flags: u32 = f: { - var new_flags = flags; - new_flags.CLOEXEC = false; - break :f @bitCast(new_flags); - }; - // Set every other flag affecting the file status using F.SETFL. - if (new_flags != 0) { - for (fds) |fd| { - switch (errno(system.fcntl(fd, F.SETFL, new_flags))) { - .SUCCESS => {}, - .INVAL => unreachable, // Invalid flags - .BADF => unreachable, // Always a race condition - else => |err| return unexpectedErrno(err), - } - } - } - - return fds; -} - -pub const SysCtlError = error{ - PermissionDenied, - SystemResources, - NameTooLong, - UnknownName, -} || UnexpectedError; - -pub fn sysctl( - name: []const c_int, - oldp: ?*anyopaque, - oldlenp: ?*usize, - newp: ?*anyopaque, - newlen: usize, -) SysCtlError!void { - if (builtin.os.tag == .wasi) { - @panic("unsupported"); // TODO should be compile error, not panic - } - if (builtin.os.tag == .haiku) { - @panic("unsupported"); // TODO should be compile error, not panic - } - - const name_len = math.cast(c_uint, name.len) orelse return error.NameTooLong; - switch (errno(system.sysctl(name.ptr, name_len, oldp, oldlenp, newp, newlen))) { - .SUCCESS => return, - .FAULT => unreachable, - .PERM => return error.PermissionDenied, - .NOMEM => return error.SystemResources, - .NOENT => return error.UnknownName, - else => |err| return unexpectedErrno(err), - } -} - -pub fn sysctlbynameZ( - name: [*:0]const u8, - oldp: ?*anyopaque, - oldlenp: ?*usize, - newp: ?*anyopaque, - newlen: usize, -) SysCtlError!void { - if (builtin.os.tag == .wasi) { - @panic("unsupported"); // TODO should be compile error, not panic - } - if (builtin.os.tag == .haiku) { - @panic("unsupported"); // TODO should be compile error, not panic - } - - switch (errno(system.sysctlbyname(name, oldp, oldlenp, newp, newlen))) { - .SUCCESS => return, - .FAULT => unreachable, - .PERM => return error.PermissionDenied, - .NOMEM => return error.SystemResources, - .NOENT => return error.UnknownName, - else => |err| return unexpectedErrno(err), - } -} - -pub fn gettimeofday(tv: ?*timeval, tz: ?*timezone) void { - switch (errno(system.gettimeofday(tv, tz))) { - .SUCCESS => return, - .INVAL => unreachable, - else => unreachable, - } -} - -pub const SeekError = error{ - Unseekable, - - /// In WASI, this error may occur when the file descriptor does - /// not hold the required rights to seek on it. - AccessDenied, -} || UnexpectedError; - -/// Repositions read/write file offset relative to the beginning. -pub fn lseek_SET(fd: fd_t, offset: u64) SeekError!void { - if (builtin.os.tag == .linux and !builtin.link_libc and @sizeOf(usize) == 4) { - var result: u64 = undefined; - switch (errno(system.llseek(fd, offset, &result, SEEK.SET))) { - .SUCCESS => return, - .BADF => unreachable, // always a race condition - .INVAL => return error.Unseekable, - .OVERFLOW => return error.Unseekable, - .SPIPE => return error.Unseekable, - .NXIO => return error.Unseekable, - else => |err| return unexpectedErrno(err), - } - } - if (builtin.os.tag == .windows) { - return windows.SetFilePointerEx_BEGIN(fd, offset); - } - if (builtin.os.tag == .wasi and !builtin.link_libc) { - var new_offset: wasi.filesize_t = undefined; - switch (wasi.fd_seek(fd, @bitCast(offset), .SET, &new_offset)) { - .SUCCESS => return, - .BADF => unreachable, // always a race condition - .INVAL => return error.Unseekable, - .OVERFLOW => return error.Unseekable, - .SPIPE => return error.Unseekable, - .NXIO => return error.Unseekable, - .NOTCAPABLE => return error.AccessDenied, - else => |err| return unexpectedErrno(err), - } - } - - const lseek_sym = if (lfs64_abi) system.lseek64 else system.lseek; - switch (errno(lseek_sym(fd, @bitCast(offset), SEEK.SET))) { - .SUCCESS => return, - .BADF => unreachable, // always a race condition - .INVAL => return error.Unseekable, - .OVERFLOW => return error.Unseekable, - .SPIPE => return error.Unseekable, - .NXIO => return error.Unseekable, - else => |err| return unexpectedErrno(err), - } -} - -/// Repositions read/write file offset relative to the current offset. -pub fn lseek_CUR(fd: fd_t, offset: i64) SeekError!void { - if (builtin.os.tag == .linux and !builtin.link_libc and @sizeOf(usize) == 4) { - var result: u64 = undefined; - switch (errno(system.llseek(fd, @bitCast(offset), &result, SEEK.CUR))) { - .SUCCESS => return, - .BADF => unreachable, // always a race condition - .INVAL => return error.Unseekable, - .OVERFLOW => return error.Unseekable, - .SPIPE => return error.Unseekable, - .NXIO => return error.Unseekable, - else => |err| return unexpectedErrno(err), - } - } - if (builtin.os.tag == .windows) { - return windows.SetFilePointerEx_CURRENT(fd, offset); - } - if (builtin.os.tag == .wasi and !builtin.link_libc) { - var new_offset: wasi.filesize_t = undefined; - switch (wasi.fd_seek(fd, offset, .CUR, &new_offset)) { - .SUCCESS => return, - .BADF => unreachable, // always a race condition - .INVAL => return error.Unseekable, - .OVERFLOW => return error.Unseekable, - .SPIPE => return error.Unseekable, - .NXIO => return error.Unseekable, - .NOTCAPABLE => return error.AccessDenied, - else => |err| return unexpectedErrno(err), - } - } - const lseek_sym = if (lfs64_abi) system.lseek64 else system.lseek; - switch (errno(lseek_sym(fd, @bitCast(offset), SEEK.CUR))) { - .SUCCESS => return, - .BADF => unreachable, // always a race condition - .INVAL => return error.Unseekable, - .OVERFLOW => return error.Unseekable, - .SPIPE => return error.Unseekable, - .NXIO => return error.Unseekable, - else => |err| return unexpectedErrno(err), - } -} - -/// Repositions read/write file offset relative to the end. -pub fn lseek_END(fd: fd_t, offset: i64) SeekError!void { - if (builtin.os.tag == .linux and !builtin.link_libc and @sizeOf(usize) == 4) { - var result: u64 = undefined; - switch (errno(system.llseek(fd, @bitCast(offset), &result, SEEK.END))) { - .SUCCESS => return, - .BADF => unreachable, // always a race condition - .INVAL => return error.Unseekable, - .OVERFLOW => return error.Unseekable, - .SPIPE => return error.Unseekable, - .NXIO => return error.Unseekable, - else => |err| return unexpectedErrno(err), - } - } - if (builtin.os.tag == .windows) { - return windows.SetFilePointerEx_END(fd, offset); - } - if (builtin.os.tag == .wasi and !builtin.link_libc) { - var new_offset: wasi.filesize_t = undefined; - switch (wasi.fd_seek(fd, offset, .END, &new_offset)) { - .SUCCESS => return, - .BADF => unreachable, // always a race condition - .INVAL => return error.Unseekable, - .OVERFLOW => return error.Unseekable, - .SPIPE => return error.Unseekable, - .NXIO => return error.Unseekable, - .NOTCAPABLE => return error.AccessDenied, - else => |err| return unexpectedErrno(err), - } - } - const lseek_sym = if (lfs64_abi) system.lseek64 else system.lseek; - switch (errno(lseek_sym(fd, @bitCast(offset), SEEK.END))) { - .SUCCESS => return, - .BADF => unreachable, // always a race condition - .INVAL => return error.Unseekable, - .OVERFLOW => return error.Unseekable, - .SPIPE => return error.Unseekable, - .NXIO => return error.Unseekable, - else => |err| return unexpectedErrno(err), - } -} - -/// Returns the read/write file offset relative to the beginning. -pub fn lseek_CUR_get(fd: fd_t) SeekError!u64 { - if (builtin.os.tag == .linux and !builtin.link_libc and @sizeOf(usize) == 4) { - var result: u64 = undefined; - switch (errno(system.llseek(fd, 0, &result, SEEK.CUR))) { - .SUCCESS => return result, - .BADF => unreachable, // always a race condition - .INVAL => return error.Unseekable, - .OVERFLOW => return error.Unseekable, - .SPIPE => return error.Unseekable, - .NXIO => return error.Unseekable, - else => |err| return unexpectedErrno(err), - } - } - if (builtin.os.tag == .windows) { - return windows.SetFilePointerEx_CURRENT_get(fd); - } - if (builtin.os.tag == .wasi and !builtin.link_libc) { - var new_offset: wasi.filesize_t = undefined; - switch (wasi.fd_seek(fd, 0, .CUR, &new_offset)) { - .SUCCESS => return new_offset, - .BADF => unreachable, // always a race condition - .INVAL => return error.Unseekable, - .OVERFLOW => return error.Unseekable, - .SPIPE => return error.Unseekable, - .NXIO => return error.Unseekable, - .NOTCAPABLE => return error.AccessDenied, - else => |err| return unexpectedErrno(err), - } - } - const lseek_sym = if (lfs64_abi) system.lseek64 else system.lseek; - const rc = lseek_sym(fd, 0, SEEK.CUR); - switch (errno(rc)) { - .SUCCESS => return @bitCast(rc), - .BADF => unreachable, // always a race condition - .INVAL => return error.Unseekable, - .OVERFLOW => return error.Unseekable, - .SPIPE => return error.Unseekable, - .NXIO => return error.Unseekable, - else => |err| return unexpectedErrno(err), - } -} - -pub const FcntlError = error{ - PermissionDenied, - FileBusy, - ProcessFdQuotaExceeded, - Locked, - DeadLock, - LockedRegionLimitExceeded, -} || UnexpectedError; - -pub fn fcntl(fd: fd_t, cmd: i32, arg: usize) FcntlError!usize { - while (true) { - const rc = system.fcntl(fd, cmd, arg); - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - .INTR => continue, - .AGAIN, .ACCES => return error.Locked, - .BADF => unreachable, - .BUSY => return error.FileBusy, - .INVAL => unreachable, // invalid parameters - .PERM => return error.PermissionDenied, - .MFILE => return error.ProcessFdQuotaExceeded, - .NOTDIR => unreachable, // invalid parameter - .DEADLK => return error.DeadLock, - .NOLCK => return error.LockedRegionLimitExceeded, - else => |err| return unexpectedErrno(err), - } - } -} - -fn setSockFlags(sock: socket_t, flags: u32) !void { - if ((flags & SOCK.CLOEXEC) != 0) { - if (builtin.os.tag == .windows) { - // TODO: Find out if this is supported for sockets - } else { - var fd_flags = fcntl(sock, F.GETFD, 0) catch |err| switch (err) { - error.FileBusy => unreachable, - error.Locked => unreachable, - error.PermissionDenied => unreachable, - error.DeadLock => unreachable, - error.LockedRegionLimitExceeded => unreachable, - else => |e| return e, - }; - fd_flags |= FD_CLOEXEC; - _ = fcntl(sock, F.SETFD, fd_flags) catch |err| switch (err) { - error.FileBusy => unreachable, - error.Locked => unreachable, - error.PermissionDenied => unreachable, - error.DeadLock => unreachable, - error.LockedRegionLimitExceeded => unreachable, - else => |e| return e, - }; - } - } - if ((flags & SOCK.NONBLOCK) != 0) { - if (builtin.os.tag == .windows) { - var mode: c_ulong = 1; - if (windows.ws2_32.ioctlsocket(sock, windows.ws2_32.FIONBIO, &mode) == windows.ws2_32.SOCKET_ERROR) { - switch (windows.ws2_32.WSAGetLastError()) { - .WSANOTINITIALISED => unreachable, - .WSAENETDOWN => return error.NetworkSubsystemFailed, - .WSAENOTSOCK => return error.FileDescriptorNotASocket, - // TODO: handle more errors - else => |err| return windows.unexpectedWSAError(err), - } - } - } else { - var fl_flags = fcntl(sock, F.GETFL, 0) catch |err| switch (err) { - error.FileBusy => unreachable, - error.Locked => unreachable, - error.PermissionDenied => unreachable, - error.DeadLock => unreachable, - error.LockedRegionLimitExceeded => unreachable, - else => |e| return e, - }; - fl_flags |= 1 << @bitOffsetOf(O, "NONBLOCK"); - _ = fcntl(sock, F.SETFL, fl_flags) catch |err| switch (err) { - error.FileBusy => unreachable, - error.Locked => unreachable, - error.PermissionDenied => unreachable, - error.DeadLock => unreachable, - error.LockedRegionLimitExceeded => unreachable, - else => |e| return e, - }; - } - } -} - -pub const FlockError = error{ - WouldBlock, - - /// The kernel ran out of memory for allocating file locks - SystemResources, - - /// The underlying filesystem does not support file locks - FileLocksNotSupported, -} || UnexpectedError; - -/// Depending on the operating system `flock` may or may not interact with -/// `fcntl` locks made by other processes. -pub fn flock(fd: fd_t, operation: i32) FlockError!void { - while (true) { - const rc = system.flock(fd, operation); - switch (errno(rc)) { - .SUCCESS => return, - .BADF => unreachable, - .INTR => continue, - .INVAL => unreachable, // invalid parameters - .NOLCK => return error.SystemResources, - .AGAIN => return error.WouldBlock, // TODO: integrate with async instead of just returning an error - .OPNOTSUPP => return error.FileLocksNotSupported, - else => |err| return unexpectedErrno(err), - } - } -} - -pub const RealPathError = error{ - FileNotFound, - AccessDenied, - NameTooLong, - NotSupported, - NotDir, - SymLinkLoop, - InputOutput, - FileTooBig, - IsDir, - ProcessFdQuotaExceeded, - SystemFdQuotaExceeded, - NoDevice, - SystemResources, - NoSpaceLeft, - FileSystem, - BadPathName, - DeviceBusy, - - SharingViolation, - PipeBusy, - - /// Windows-only; file paths provided by the user must be valid WTF-8. - /// https://simonsapin.github.io/wtf-8/ - InvalidWtf8, - - /// On Windows, `\\server` or `\\server\share` was not found. - NetworkNotFound, - - PathAlreadyExists, - - /// On Windows, antivirus software is enabled by default. It can be - /// disabled, but Windows Update sometimes ignores the user's preference - /// and re-enables it. When enabled, antivirus software on Windows - /// intercepts file system operations and makes them significantly slower - /// in addition to possibly failing with this error code. - AntivirusInterference, - - /// On Windows, the volume does not contain a recognized file system. File - /// system drivers might not be loaded, or the volume may be corrupt. - UnrecognizedVolume, -} || UnexpectedError; - -/// Return the canonicalized absolute pathname. -/// Expands all symbolic links and resolves references to `.`, `..`, and -/// extra `/` characters in `pathname`. -/// On Windows, `pathname` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On other platforms, `pathname` is an opaque sequence of bytes with no particular encoding. -/// The return value is a slice of `out_buffer`, but not necessarily from the beginning. -/// See also `realpathZ` and `realpathW`. -/// On Windows, the result is encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On other platforms, the result is an opaque sequence of bytes with no particular encoding. -/// Calling this function is usually a bug. -pub fn realpath(pathname: []const u8, out_buffer: *[MAX_PATH_BYTES]u8) RealPathError![]u8 { - if (builtin.os.tag == .windows) { - const pathname_w = try windows.sliceToPrefixedFileW(null, pathname); - return realpathW(pathname_w.span(), out_buffer); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - @compileError("WASI does not support os.realpath"); - } - const pathname_c = try toPosixPath(pathname); - return realpathZ(&pathname_c, out_buffer); -} - -/// Same as `realpath` except `pathname` is null-terminated. -/// Calling this function is usually a bug. -pub fn realpathZ(pathname: [*:0]const u8, out_buffer: *[MAX_PATH_BYTES]u8) RealPathError![]u8 { - if (builtin.os.tag == .windows) { - const pathname_w = try windows.cStrToPrefixedFileW(null, pathname); - return realpathW(pathname_w.span(), out_buffer); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { - return realpath(mem.sliceTo(pathname, 0), out_buffer); - } - if (!builtin.link_libc) { - const flags: O = switch (builtin.os.tag) { - .linux => .{ - .NONBLOCK = true, - .CLOEXEC = true, - .PATH = true, - }, - else => .{ - .NONBLOCK = true, - .CLOEXEC = true, - }, - }; - const fd = openZ(pathname, flags, 0) catch |err| switch (err) { - error.FileLocksNotSupported => unreachable, - error.WouldBlock => unreachable, - error.FileBusy => unreachable, // not asking for write permissions - error.InvalidUtf8 => unreachable, // WASI-only - else => |e| return e, - }; - defer close(fd); - - return getFdPath(fd, out_buffer); - } - const result_path = std.c.realpath(pathname, out_buffer) orelse switch (@as(E, @enumFromInt(std.c._errno().*))) { - .SUCCESS => unreachable, - .INVAL => unreachable, - .BADF => unreachable, - .FAULT => unreachable, - .ACCES => return error.AccessDenied, - .NOENT => return error.FileNotFound, - .OPNOTSUPP => return error.NotSupported, - .NOTDIR => return error.NotDir, - .NAMETOOLONG => return error.NameTooLong, - .LOOP => return error.SymLinkLoop, - .IO => return error.InputOutput, - else => |err| return unexpectedErrno(err), - }; - return mem.sliceTo(result_path, 0); -} - -/// Same as `realpath` except `pathname` is WTF16LE-encoded. -/// The result is encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// Calling this function is usually a bug. -pub fn realpathW(pathname: []const u16, out_buffer: *[MAX_PATH_BYTES]u8) RealPathError![]u8 { - const w = windows; - - const dir = std.fs.cwd().fd; - const access_mask = w.GENERIC_READ | w.SYNCHRONIZE; - const share_access = w.FILE_SHARE_READ; - const creation = w.FILE_OPEN; - const h_file = blk: { - const res = w.OpenFile(pathname, .{ - .dir = dir, - .access_mask = access_mask, - .share_access = share_access, - .creation = creation, - .filter = .any, - }) catch |err| switch (err) { - error.WouldBlock => unreachable, - else => |e| return e, - }; - break :blk res; - }; - defer w.CloseHandle(h_file); - - return getFdPath(h_file, out_buffer); -} - pub fn isGetFdPathSupportedOnTarget(os: std.Target.Os) bool { return switch (os.tag) { .windows, @@ -5644,13 +89,16 @@ pub fn isGetFdPathSupportedOnTarget(os: std.Target.Os) bool { } /// Return canonical path of handle `fd`. +/// /// This function is very host-specific and is not universally supported by all hosts. /// For example, while it generally works on Linux, macOS, FreeBSD or Windows, it is /// unsupported on WASI. -/// On Windows, the result is encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). -/// On other platforms, the result is an opaque sequence of bytes with no particular encoding. +/// +/// * On Windows, the result is encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// * On other platforms, the result is an opaque sequence of bytes with no particular encoding. +/// /// Calling this function is usually a bug. -pub fn getFdPath(fd: fd_t, out_buffer: *[MAX_PATH_BYTES]u8) RealPathError![]u8 { +pub fn getFdPath(fd: std.posix.fd_t, out_buffer: *[MAX_PATH_BYTES]u8) std.posix.RealPathError![]u8 { if (!comptime isGetFdPathSupportedOnTarget(builtin.os)) { @compileError("querying for canonical path of a handle is unsupported on this host"); } @@ -5666,13 +114,13 @@ pub fn getFdPath(fd: fd_t, out_buffer: *[MAX_PATH_BYTES]u8) RealPathError![]u8 { // On macOS, we can use F.GETPATH fcntl command to query the OS for // the path to the file descriptor. @memset(out_buffer[0..MAX_PATH_BYTES], 0); - switch (errno(system.fcntl(fd, F.GETPATH, out_buffer))) { + switch (posix.errno(posix.system.fcntl(fd, posix.F.GETPATH, out_buffer))) { .SUCCESS => {}, .BADF => return error.FileNotFound, .NOSPC => return error.NameTooLong, // TODO man pages for fcntl on macOS don't really tell you what // errno values to expect when command is F.GETPATH... - else => |err| return unexpectedErrno(err), + else => |err| return posix.unexpectedErrno(err), } const len = mem.indexOfScalar(u8, out_buffer[0..], 0) orelse MAX_PATH_BYTES; return out_buffer[0..len]; @@ -5681,7 +129,7 @@ pub fn getFdPath(fd: fd_t, out_buffer: *[MAX_PATH_BYTES]u8) RealPathError![]u8 { var procfs_buf: ["/proc/self/fd/-2147483648\x00".len]u8 = undefined; const proc_path = std.fmt.bufPrintZ(procfs_buf[0..], "/proc/self/fd/{d}", .{fd}) catch unreachable; - const target = readlinkZ(proc_path, out_buffer) catch |err| { + const target = posix.readlinkZ(proc_path, out_buffer) catch |err| { switch (err) { error.NotLink => unreachable, error.BadPathName => unreachable, @@ -5698,7 +146,7 @@ pub fn getFdPath(fd: fd_t, out_buffer: *[MAX_PATH_BYTES]u8) RealPathError![]u8 { var procfs_buf: ["/proc/self/path/-2147483648\x00".len]u8 = undefined; const proc_path = std.fmt.bufPrintZ(procfs_buf[0..], "/proc/self/path/{d}", .{fd}) catch unreachable; - const target = readlinkZ(proc_path, out_buffer) catch |err| switch (err) { + const target = posix.readlinkZ(proc_path, out_buffer) catch |err| switch (err) { error.UnsupportedReparsePointType => unreachable, error.NotLink => unreachable, else => |e| return e, @@ -5707,12 +155,12 @@ pub fn getFdPath(fd: fd_t, out_buffer: *[MAX_PATH_BYTES]u8) RealPathError![]u8 { }, .freebsd => { if (comptime builtin.os.isAtLeast(.freebsd, .{ .major = 13, .minor = 0, .patch = 0 }) orelse false) { - var kfile: system.kinfo_file = undefined; - kfile.structsize = system.KINFO_FILE_SIZE; - switch (errno(system.fcntl(fd, system.F.KINFO, @intFromPtr(&kfile)))) { + var kfile: std.c.kinfo_file = undefined; + kfile.structsize = std.c.KINFO_FILE_SIZE; + switch (posix.errno(std.c.fcntl(fd, std.c.F.KINFO, @intFromPtr(&kfile)))) { .SUCCESS => {}, .BADF => return error.FileNotFound, - else => |err| return unexpectedErrno(err), + else => |err| return posix.unexpectedErrno(err), } const len = mem.indexOfScalar(u8, &kfile.path, 0) orelse MAX_PATH_BYTES; if (len == 0) return error.NameTooLong; @@ -5723,9 +171,9 @@ pub fn getFdPath(fd: fd_t, out_buffer: *[MAX_PATH_BYTES]u8) RealPathError![]u8 { // This fallback implementation reimplements libutil's `kinfo_getfile()`. // The motivation is to avoid linking -lutil when building zig or general // user executables. - var mib = [4]c_int{ CTL.KERN, KERN.PROC, KERN.PROC_FILEDESC, system.getpid() }; + var mib = [4]c_int{ posix.CTL.KERN, posix.KERN.PROC, posix.KERN.PROC_FILEDESC, std.c.getpid() }; var len: usize = undefined; - sysctl(&mib, null, &len, null, 0) catch |err| switch (err) { + posix.sysctl(&mib, null, &len, null, 0) catch |err| switch (err) { error.PermissionDenied => unreachable, error.SystemResources => return error.SystemResources, error.NameTooLong => unreachable, @@ -5736,7 +184,7 @@ pub fn getFdPath(fd: fd_t, out_buffer: *[MAX_PATH_BYTES]u8) RealPathError![]u8 { const buf = std.heap.c_allocator.alloc(u8, len) catch return error.SystemResources; defer std.heap.c_allocator.free(buf); len = buf.len; - sysctl(&mib, &buf[0], &len, null, 0) catch |err| switch (err) { + posix.sysctl(&mib, &buf[0], &len, null, 0) catch |err| switch (err) { error.PermissionDenied => unreachable, error.SystemResources => return error.SystemResources, error.NameTooLong => unreachable, @@ -5745,7 +193,7 @@ pub fn getFdPath(fd: fd_t, out_buffer: *[MAX_PATH_BYTES]u8) RealPathError![]u8 { }; var i: usize = 0; while (i < len) { - const kf: *align(1) system.kinfo_file = @ptrCast(&buf[i]); + const kf: *align(1) std.c.kinfo_file = @ptrCast(&buf[i]); if (kf.fd == fd) { len = mem.indexOfScalar(u8, &kf.path, 0) orelse MAX_PATH_BYTES; if (len == 0) return error.NameTooLong; @@ -5760,25 +208,25 @@ pub fn getFdPath(fd: fd_t, out_buffer: *[MAX_PATH_BYTES]u8) RealPathError![]u8 { }, .dragonfly => { @memset(out_buffer[0..MAX_PATH_BYTES], 0); - switch (errno(system.fcntl(fd, F.GETPATH, out_buffer))) { + switch (posix.errno(std.c.fcntl(fd, posix.F.GETPATH, out_buffer))) { .SUCCESS => {}, .BADF => return error.FileNotFound, .RANGE => return error.NameTooLong, - else => |err| return unexpectedErrno(err), + else => |err| return posix.unexpectedErrno(err), } const len = mem.indexOfScalar(u8, out_buffer[0..], 0) orelse MAX_PATH_BYTES; return out_buffer[0..len]; }, .netbsd => { @memset(out_buffer[0..MAX_PATH_BYTES], 0); - switch (errno(system.fcntl(fd, F.GETPATH, out_buffer))) { + switch (posix.errno(std.c.fcntl(fd, posix.F.GETPATH, out_buffer))) { .SUCCESS => {}, .ACCES => return error.AccessDenied, .BADF => return error.FileNotFound, .NOENT => return error.FileNotFound, .NOMEM => return error.SystemResources, .RANGE => return error.NameTooLong, - else => |err| return unexpectedErrno(err), + else => |err| return posix.unexpectedErrno(err), } const len = mem.indexOfScalar(u8, out_buffer[0..], 0) orelse MAX_PATH_BYTES; return out_buffer[0..len]; @@ -5787,1908 +235,36 @@ pub fn getFdPath(fd: fd_t, out_buffer: *[MAX_PATH_BYTES]u8) RealPathError![]u8 { } } -/// Spurious wakeups are possible and no precision of timing is guaranteed. -pub fn nanosleep(seconds: u64, nanoseconds: u64) void { - var req = timespec{ - .tv_sec = math.cast(isize, seconds) orelse math.maxInt(isize), - .tv_nsec = math.cast(isize, nanoseconds) orelse math.maxInt(isize), - }; - var rem: timespec = undefined; - while (true) { - switch (errno(system.nanosleep(&req, &rem))) { - .FAULT => unreachable, - .INVAL => { - // Sometimes Darwin returns EINVAL for no reason. - // We treat it as a spurious wakeup. - return; - }, - .INTR => { - req = rem; - continue; - }, - // This prong handles success as well as unexpected errors. - else => return, - } - } -} - -pub fn dl_iterate_phdr( - context: anytype, - comptime Error: type, - comptime callback: fn (info: *dl_phdr_info, size: usize, context: @TypeOf(context)) Error!void, -) Error!void { - const Context = @TypeOf(context); - - switch (builtin.object_format) { - .elf, .c => {}, - else => @compileError("dl_iterate_phdr is not available for this target"), - } - - if (builtin.link_libc) { - switch (system.dl_iterate_phdr(struct { - fn callbackC(info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int { - const context_ptr: *const Context = @ptrCast(@alignCast(data)); - callback(info, size, context_ptr.*) catch |err| return @intFromError(err); - return 0; - } - }.callbackC, @ptrCast(@constCast(&context)))) { - 0 => return, - else => |err| return @as(Error, @errorCast(@errorFromInt(@as(std.meta.Int(.unsigned, @bitSizeOf(anyerror)), @intCast(err))))), - } - } - - const elf_base = std.process.getBaseAddress(); - const ehdr: *elf.Ehdr = @ptrFromInt(elf_base); - // Make sure the base address points to an ELF image. - assert(mem.eql(u8, ehdr.e_ident[0..4], elf.MAGIC)); - const n_phdr = ehdr.e_phnum; - const phdrs = (@as([*]elf.Phdr, @ptrFromInt(elf_base + ehdr.e_phoff)))[0..n_phdr]; - - var it = dl.linkmap_iterator(phdrs) catch unreachable; - - // The executable has no dynamic link segment, create a single entry for - // the whole ELF image. - if (it.end()) { - // Find the base address for the ELF image, if this is a PIE the value - // is non-zero. - const base_address = for (phdrs) |*phdr| { - if (phdr.p_type == elf.PT_PHDR) { - break @intFromPtr(phdrs.ptr) - phdr.p_vaddr; - // We could try computing the difference between _DYNAMIC and - // the p_vaddr of the PT_DYNAMIC section, but using the phdr is - // good enough (Is it?). - } - } else unreachable; - - var info = dl_phdr_info{ - .dlpi_addr = base_address, - .dlpi_name = "/proc/self/exe", - .dlpi_phdr = phdrs.ptr, - .dlpi_phnum = ehdr.e_phnum, - }; - - return callback(&info, @sizeOf(dl_phdr_info), context); - } - - // Last return value from the callback function. - while (it.next()) |entry| { - var dlpi_phdr: [*]elf.Phdr = undefined; - var dlpi_phnum: u16 = undefined; - - if (entry.l_addr != 0) { - const elf_header: *elf.Ehdr = @ptrFromInt(entry.l_addr); - dlpi_phdr = @ptrFromInt(entry.l_addr + elf_header.e_phoff); - dlpi_phnum = elf_header.e_phnum; - } else { - // This is the running ELF image - dlpi_phdr = @ptrFromInt(elf_base + ehdr.e_phoff); - dlpi_phnum = ehdr.e_phnum; - } - - var info = dl_phdr_info{ - .dlpi_addr = entry.l_addr, - .dlpi_name = entry.l_name, - .dlpi_phdr = dlpi_phdr, - .dlpi_phnum = dlpi_phnum, - }; - - try callback(&info, @sizeOf(dl_phdr_info), context); - } -} - -pub const ClockGetTimeError = error{UnsupportedClock} || UnexpectedError; - -/// TODO: change this to return the timespec as a return value -/// TODO: look into making clk_id an enum -pub fn clock_gettime(clk_id: i32, tp: *timespec) ClockGetTimeError!void { - if (builtin.os.tag == .wasi and !builtin.link_libc) { - var ts: timestamp_t = undefined; - switch (system.clock_time_get(@bitCast(clk_id), 1, &ts)) { - .SUCCESS => { - tp.* = .{ - .tv_sec = @intCast(ts / std.time.ns_per_s), - .tv_nsec = @intCast(ts % std.time.ns_per_s), - }; - }, - .INVAL => return error.UnsupportedClock, - else => |err| return unexpectedErrno(err), - } - return; - } - if (builtin.os.tag == .windows) { - if (clk_id == CLOCK.REALTIME) { - var ft: windows.FILETIME = undefined; - windows.kernel32.GetSystemTimeAsFileTime(&ft); - // FileTime has a granularity of 100 nanoseconds and uses the NTFS/Windows epoch. - const ft64 = (@as(u64, ft.dwHighDateTime) << 32) | ft.dwLowDateTime; - const ft_per_s = std.time.ns_per_s / 100; - tp.* = .{ - .tv_sec = @as(i64, @intCast(ft64 / ft_per_s)) + std.time.epoch.windows, - .tv_nsec = @as(c_long, @intCast(ft64 % ft_per_s)) * 100, - }; - return; - } else { - // TODO POSIX implementation of CLOCK.MONOTONIC on Windows. - return error.UnsupportedClock; - } - } - - switch (errno(system.clock_gettime(clk_id, tp))) { - .SUCCESS => return, - .FAULT => unreachable, - .INVAL => return error.UnsupportedClock, - else => |err| return unexpectedErrno(err), - } -} - -pub fn clock_getres(clk_id: i32, res: *timespec) ClockGetTimeError!void { - if (builtin.os.tag == .wasi and !builtin.link_libc) { - var ts: timestamp_t = undefined; - switch (system.clock_res_get(@bitCast(clk_id), &ts)) { - .SUCCESS => res.* = .{ - .tv_sec = @intCast(ts / std.time.ns_per_s), - .tv_nsec = @intCast(ts % std.time.ns_per_s), - }, - .INVAL => return error.UnsupportedClock, - else => |err| return unexpectedErrno(err), - } - return; - } - - switch (errno(system.clock_getres(clk_id, res))) { - .SUCCESS => return, - .FAULT => unreachable, - .INVAL => return error.UnsupportedClock, - else => |err| return unexpectedErrno(err), - } -} - -pub const SchedGetAffinityError = error{PermissionDenied} || UnexpectedError; - -pub fn sched_getaffinity(pid: pid_t) SchedGetAffinityError!cpu_set_t { - var set: cpu_set_t = undefined; - switch (errno(system.sched_getaffinity(pid, @sizeOf(cpu_set_t), &set))) { - .SUCCESS => return set, - .FAULT => unreachable, - .INVAL => unreachable, - .SRCH => unreachable, - .PERM => return error.PermissionDenied, - else => |err| return unexpectedErrno(err), - } -} - -/// Used to convert a slice to a null terminated slice on the stack. -/// TODO https://github.com/ziglang/zig/issues/287 -pub fn toPosixPath(file_path: []const u8) error{NameTooLong}![MAX_PATH_BYTES - 1:0]u8 { - if (std.debug.runtime_safety) assert(std.mem.indexOfScalar(u8, file_path, 0) == null); - var path_with_null: [MAX_PATH_BYTES - 1:0]u8 = undefined; - // >= rather than > to make room for the null byte - if (file_path.len >= MAX_PATH_BYTES) return error.NameTooLong; - @memcpy(path_with_null[0..file_path.len], file_path); - path_with_null[file_path.len] = 0; - return path_with_null; -} - -/// Whether or not error.Unexpected will print its value and a stack trace. -/// if this happens the fix is to add the error code to the corresponding -/// switch expression, possibly introduce a new error in the error set, and -/// send a patch to Zig. -pub const unexpected_error_tracing = builtin.zig_backend == .stage2_llvm and builtin.mode == .Debug; - -pub const UnexpectedError = error{ - /// The Operating System returned an undocumented error code. - /// This error is in theory not possible, but it would be better - /// to handle this error than to invoke undefined behavior. - Unexpected, -}; - -/// Call this when you made a syscall or something that sets errno -/// and you get an unexpected error. -pub fn unexpectedErrno(err: E) UnexpectedError { - if (unexpected_error_tracing) { - std.debug.print("unexpected errno: {d}\n", .{@intFromEnum(err)}); - std.debug.dumpCurrentStackTrace(null); - } - return error.Unexpected; -} - -pub const SigaltstackError = error{ - /// The supplied stack size was less than MINSIGSTKSZ. - SizeTooSmall, - - /// Attempted to change the signal stack while it was active. - PermissionDenied, -} || UnexpectedError; - -pub fn sigaltstack(ss: ?*stack_t, old_ss: ?*stack_t) SigaltstackError!void { - switch (errno(system.sigaltstack(ss, old_ss))) { - .SUCCESS => return, - .FAULT => unreachable, - .INVAL => unreachable, - .NOMEM => return error.SizeTooSmall, - .PERM => return error.PermissionDenied, - else => |err| return unexpectedErrno(err), - } -} - -/// Examine and change a signal action. -pub fn sigaction(sig: u6, noalias act: ?*const Sigaction, noalias oact: ?*Sigaction) error{OperationNotSupported}!void { - switch (errno(system.sigaction(sig, act, oact))) { - .SUCCESS => return, - .INVAL, .NOSYS => return error.OperationNotSupported, - else => unreachable, - } -} - -/// Sets the thread signal mask. -pub fn sigprocmask(flags: u32, noalias set: ?*const sigset_t, noalias oldset: ?*sigset_t) void { - switch (errno(system.sigprocmask(@bitCast(flags), set, oldset))) { - .SUCCESS => return, - .FAULT => unreachable, +/// WASI-only. Same as `fstatat` but targeting WASI. +/// `pathname` should be encoded as valid UTF-8. +/// See also `fstatat`. +pub fn fstatat_wasi(dirfd: posix.fd_t, pathname: []const u8, flags: wasi.lookupflags_t) posix.FStatAtError!wasi.filestat_t { + var stat: wasi.filestat_t = undefined; + switch (wasi.path_filestat_get(dirfd, flags, pathname.ptr, pathname.len, &stat)) { + .SUCCESS => return stat, .INVAL => unreachable, - else => unreachable, - } -} - -pub const FutimensError = error{ - /// times is NULL, or both tv_nsec values are UTIME_NOW, and either: - /// * the effective user ID of the caller does not match the owner - /// of the file, the caller does not have write access to the - /// file, and the caller is not privileged (Linux: does not have - /// either the CAP_FOWNER or the CAP_DAC_OVERRIDE capability); - /// or, - /// * the file is marked immutable (see chattr(1)). - AccessDenied, - - /// The caller attempted to change one or both timestamps to a value - /// other than the current time, or to change one of the timestamps - /// to the current time while leaving the other timestamp unchanged, - /// (i.e., times is not NULL, neither tv_nsec field is UTIME_NOW, - /// and neither tv_nsec field is UTIME_OMIT) and either: - /// * the caller's effective user ID does not match the owner of - /// file, and the caller is not privileged (Linux: does not have - /// the CAP_FOWNER capability); or, - /// * the file is marked append-only or immutable (see chattr(1)). - PermissionDenied, - - ReadOnlyFileSystem, -} || UnexpectedError; - -pub fn futimens(fd: fd_t, times: *const [2]timespec) FutimensError!void { - if (builtin.os.tag == .wasi and !builtin.link_libc) { - // TODO WASI encodes `wasi.fstflags` to signify magic values - // similar to UTIME_NOW and UTIME_OMIT. Currently, we ignore - // this here, but we should really handle it somehow. - const atim = times[0].toTimestamp(); - const mtim = times[1].toTimestamp(); - switch (wasi.fd_filestat_set_times(fd, atim, mtim, .{ - .ATIM = true, - .MTIM = true, - })) { - .SUCCESS => return, - .ACCES => return error.AccessDenied, - .PERM => return error.PermissionDenied, - .BADF => unreachable, // always a race condition - .FAULT => unreachable, - .INVAL => unreachable, - .ROFS => return error.ReadOnlyFileSystem, - else => |err| return unexpectedErrno(err), - } - } - - switch (errno(system.futimens(fd, times))) { - .SUCCESS => return, + .BADF => unreachable, // Always a race condition. + .NOMEM => return error.SystemResources, .ACCES => return error.AccessDenied, - .PERM => return error.PermissionDenied, - .BADF => unreachable, // always a race condition - .FAULT => unreachable, - .INVAL => unreachable, - .ROFS => return error.ReadOnlyFileSystem, - else => |err| return unexpectedErrno(err), - } -} - -pub const GetHostNameError = error{PermissionDenied} || UnexpectedError; - -pub fn gethostname(name_buffer: *[HOST_NAME_MAX]u8) GetHostNameError![]u8 { - if (builtin.link_libc) { - switch (errno(system.gethostname(name_buffer, name_buffer.len))) { - .SUCCESS => return mem.sliceTo(name_buffer, 0), - .FAULT => unreachable, - .NAMETOOLONG => unreachable, // HOST_NAME_MAX prevents this - .PERM => return error.PermissionDenied, - else => |err| return unexpectedErrno(err), - } - } - if (builtin.os.tag == .linux) { - const uts = uname(); - const hostname = mem.sliceTo(&uts.nodename, 0); - const result = name_buffer[0..hostname.len]; - @memcpy(result, hostname); - return result; - } - - @compileError("TODO implement gethostname for this OS"); -} - -pub fn uname() utsname { - var uts: utsname = undefined; - switch (errno(system.uname(&uts))) { - .SUCCESS => return uts, - .FAULT => unreachable, - else => unreachable, - } -} - -pub fn res_mkquery( - op: u4, - dname: []const u8, - class: u8, - ty: u8, - data: []const u8, - newrr: ?[*]const u8, - buf: []u8, -) usize { - _ = data; - _ = newrr; - // This implementation is ported from musl libc. - // A more idiomatic "ziggy" implementation would be welcome. - var name = dname; - if (mem.endsWith(u8, name, ".")) name.len -= 1; - assert(name.len <= 253); - const n = 17 + name.len + @intFromBool(name.len != 0); - - // Construct query template - ID will be filled later - var q: [280]u8 = undefined; - @memset(q[0..n], 0); - q[2] = @as(u8, op) * 8 + 1; - q[5] = 1; - @memcpy(q[13..][0..name.len], name); - var i: usize = 13; - var j: usize = undefined; - while (q[i] != 0) : (i = j + 1) { - j = i; - while (q[j] != 0 and q[j] != '.') : (j += 1) {} - // TODO determine the circumstances for this and whether or - // not this should be an error. - if (j - i - 1 > 62) unreachable; - q[i - 1] = @intCast(j - i); - } - q[i + 1] = ty; - q[i + 3] = class; - - // Make a reasonably unpredictable id - var ts: timespec = undefined; - clock_gettime(CLOCK.REALTIME, &ts) catch {}; - const UInt = std.meta.Int(.unsigned, @bitSizeOf(@TypeOf(ts.tv_nsec))); - const unsec: UInt = @bitCast(ts.tv_nsec); - const id: u32 = @truncate(unsec + unsec / 65536); - q[0] = @truncate(id / 256); - q[1] = @truncate(id); - - @memcpy(buf[0..n], q[0..n]); - return n; -} - -pub const SendError = error{ - /// (For UNIX domain sockets, which are identified by pathname) Write permission is denied - /// on the destination socket file, or search permission is denied for one of the - /// directories the path prefix. (See path_resolution(7).) - /// (For UDP sockets) An attempt was made to send to a network/broadcast address as though - /// it was a unicast address. - AccessDenied, - - /// The socket is marked nonblocking and the requested operation would block, and - /// there is no global event loop configured. - /// It's also possible to get this error under the following condition: - /// (Internet domain datagram sockets) The socket referred to by sockfd had not previously - /// been bound to an address and, upon attempting to bind it to an ephemeral port, it was - /// determined that all port numbers in the ephemeral port range are currently in use. See - /// the discussion of /proc/sys/net/ipv4/ip_local_port_range in ip(7). - WouldBlock, - - /// Another Fast Open is already in progress. - FastOpenAlreadyInProgress, - - /// Connection reset by peer. - ConnectionResetByPeer, - - /// The socket type requires that message be sent atomically, and the size of the message - /// to be sent made this impossible. The message is not transmitted. - MessageTooBig, - - /// The output queue for a network interface was full. This generally indicates that the - /// interface has stopped sending, but may be caused by transient congestion. (Normally, - /// this does not occur in Linux. Packets are just silently dropped when a device queue - /// overflows.) - /// This is also caused when there is not enough kernel memory available. - SystemResources, - - /// The local end has been shut down on a connection oriented socket. In this case, the - /// process will also receive a SIGPIPE unless MSG.NOSIGNAL is set. - BrokenPipe, - - FileDescriptorNotASocket, - - /// Network is unreachable. - NetworkUnreachable, - - /// The local network interface used to reach the destination is down. - NetworkSubsystemFailed, -} || UnexpectedError; - -pub const SendMsgError = SendError || error{ - /// The passed address didn't have the correct address family in its sa_family field. - AddressFamilyNotSupported, - - /// Returned when socket is AF.UNIX and the given path has a symlink loop. - SymLinkLoop, - - /// Returned when socket is AF.UNIX and the given path length exceeds `MAX_PATH_BYTES` bytes. - NameTooLong, - - /// Returned when socket is AF.UNIX and the given path does not point to an existing file. - FileNotFound, - NotDir, - - /// The socket is not connected (connection-oriented sockets only). - SocketNotConnected, - AddressNotAvailable, -}; - -pub fn sendmsg( - /// The file descriptor of the sending socket. - sockfd: socket_t, - /// Message header and iovecs - msg: *const msghdr_const, - flags: u32, -) SendMsgError!usize { - while (true) { - const rc = system.sendmsg(sockfd, msg, flags); - if (builtin.os.tag == .windows) { - if (rc == windows.ws2_32.SOCKET_ERROR) { - switch (windows.ws2_32.WSAGetLastError()) { - .WSAEACCES => return error.AccessDenied, - .WSAEADDRNOTAVAIL => return error.AddressNotAvailable, - .WSAECONNRESET => return error.ConnectionResetByPeer, - .WSAEMSGSIZE => return error.MessageTooBig, - .WSAENOBUFS => return error.SystemResources, - .WSAENOTSOCK => return error.FileDescriptorNotASocket, - .WSAEAFNOSUPPORT => return error.AddressFamilyNotSupported, - .WSAEDESTADDRREQ => unreachable, // A destination address is required. - .WSAEFAULT => unreachable, // The lpBuffers, lpTo, lpOverlapped, lpNumberOfBytesSent, or lpCompletionRoutine parameters are not part of the user address space, or the lpTo parameter is too small. - .WSAEHOSTUNREACH => return error.NetworkUnreachable, - // TODO: WSAEINPROGRESS, WSAEINTR - .WSAEINVAL => unreachable, - .WSAENETDOWN => return error.NetworkSubsystemFailed, - .WSAENETRESET => return error.ConnectionResetByPeer, - .WSAENETUNREACH => return error.NetworkUnreachable, - .WSAENOTCONN => return error.SocketNotConnected, - .WSAESHUTDOWN => unreachable, // The socket has been shut down; it is not possible to WSASendTo on a socket after shutdown has been invoked with how set to SD_SEND or SD_BOTH. - .WSAEWOULDBLOCK => return error.WouldBlock, - .WSANOTINITIALISED => unreachable, // A successful WSAStartup call must occur before using this function. - else => |err| return windows.unexpectedWSAError(err), - } - } else { - return @intCast(rc); - } - } else { - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - - .ACCES => return error.AccessDenied, - .AGAIN => return error.WouldBlock, - .ALREADY => return error.FastOpenAlreadyInProgress, - .BADF => unreachable, // always a race condition - .CONNRESET => return error.ConnectionResetByPeer, - .DESTADDRREQ => unreachable, // The socket is not connection-mode, and no peer address is set. - .FAULT => unreachable, // An invalid user space address was specified for an argument. - .INTR => continue, - .INVAL => unreachable, // Invalid argument passed. - .ISCONN => unreachable, // connection-mode socket was connected already but a recipient was specified - .MSGSIZE => return error.MessageTooBig, - .NOBUFS => return error.SystemResources, - .NOMEM => return error.SystemResources, - .NOTSOCK => unreachable, // The file descriptor sockfd does not refer to a socket. - .OPNOTSUPP => unreachable, // Some bit in the flags argument is inappropriate for the socket type. - .PIPE => return error.BrokenPipe, - .AFNOSUPPORT => return error.AddressFamilyNotSupported, - .LOOP => return error.SymLinkLoop, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOTDIR => return error.NotDir, - .HOSTUNREACH => return error.NetworkUnreachable, - .NETUNREACH => return error.NetworkUnreachable, - .NOTCONN => return error.SocketNotConnected, - .NETDOWN => return error.NetworkSubsystemFailed, - else => |err| return unexpectedErrno(err), - } - } - } -} - -pub const SendToError = SendMsgError || error{ - /// The destination address is not reachable by the bound address. - UnreachableAddress, -}; - -/// Transmit a message to another socket. -/// -/// The `sendto` call may be used only when the socket is in a connected state (so that the intended -/// recipient is known). The following call -/// -/// send(sockfd, buf, len, flags); -/// -/// is equivalent to -/// -/// sendto(sockfd, buf, len, flags, NULL, 0); -/// -/// If sendto() is used on a connection-mode (`SOCK.STREAM`, `SOCK.SEQPACKET`) socket, the arguments -/// `dest_addr` and `addrlen` are asserted to be `null` and `0` respectively, and asserted -/// that the socket was actually connected. -/// Otherwise, the address of the target is given by `dest_addr` with `addrlen` specifying its size. -/// -/// If the message is too long to pass atomically through the underlying protocol, -/// `SendError.MessageTooBig` is returned, and the message is not transmitted. -/// -/// There is no indication of failure to deliver. -/// -/// When the message does not fit into the send buffer of the socket, `sendto` normally blocks, -/// unless the socket has been placed in nonblocking I/O mode. In nonblocking mode it would fail -/// with `SendError.WouldBlock`. The `select` call may be used to determine when it is -/// possible to send more data. -pub fn sendto( - /// The file descriptor of the sending socket. - sockfd: socket_t, - /// Message to send. - buf: []const u8, - flags: u32, - dest_addr: ?*const sockaddr, - addrlen: socklen_t, -) SendToError!usize { - if (builtin.os.tag == .windows) { - switch (windows.sendto(sockfd, buf.ptr, buf.len, flags, dest_addr, addrlen)) { - windows.ws2_32.SOCKET_ERROR => switch (windows.ws2_32.WSAGetLastError()) { - .WSAEACCES => return error.AccessDenied, - .WSAEADDRNOTAVAIL => return error.AddressNotAvailable, - .WSAECONNRESET => return error.ConnectionResetByPeer, - .WSAEMSGSIZE => return error.MessageTooBig, - .WSAENOBUFS => return error.SystemResources, - .WSAENOTSOCK => return error.FileDescriptorNotASocket, - .WSAEAFNOSUPPORT => return error.AddressFamilyNotSupported, - .WSAEDESTADDRREQ => unreachable, // A destination address is required. - .WSAEFAULT => unreachable, // The lpBuffers, lpTo, lpOverlapped, lpNumberOfBytesSent, or lpCompletionRoutine parameters are not part of the user address space, or the lpTo parameter is too small. - .WSAEHOSTUNREACH => return error.NetworkUnreachable, - // TODO: WSAEINPROGRESS, WSAEINTR - .WSAEINVAL => unreachable, - .WSAENETDOWN => return error.NetworkSubsystemFailed, - .WSAENETRESET => return error.ConnectionResetByPeer, - .WSAENETUNREACH => return error.NetworkUnreachable, - .WSAENOTCONN => return error.SocketNotConnected, - .WSAESHUTDOWN => unreachable, // The socket has been shut down; it is not possible to WSASendTo on a socket after shutdown has been invoked with how set to SD_SEND or SD_BOTH. - .WSAEWOULDBLOCK => return error.WouldBlock, - .WSANOTINITIALISED => unreachable, // A successful WSAStartup call must occur before using this function. - else => |err| return windows.unexpectedWSAError(err), - }, - else => |rc| return @intCast(rc), - } - } - while (true) { - const rc = system.sendto(sockfd, buf.ptr, buf.len, flags, dest_addr, addrlen); - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - - .ACCES => return error.AccessDenied, - .AGAIN => return error.WouldBlock, - .ALREADY => return error.FastOpenAlreadyInProgress, - .BADF => unreachable, // always a race condition - .CONNRESET => return error.ConnectionResetByPeer, - .DESTADDRREQ => unreachable, // The socket is not connection-mode, and no peer address is set. - .FAULT => unreachable, // An invalid user space address was specified for an argument. - .INTR => continue, - .INVAL => return error.UnreachableAddress, - .ISCONN => unreachable, // connection-mode socket was connected already but a recipient was specified - .MSGSIZE => return error.MessageTooBig, - .NOBUFS => return error.SystemResources, - .NOMEM => return error.SystemResources, - .NOTSOCK => unreachable, // The file descriptor sockfd does not refer to a socket. - .OPNOTSUPP => unreachable, // Some bit in the flags argument is inappropriate for the socket type. - .PIPE => return error.BrokenPipe, - .AFNOSUPPORT => return error.AddressFamilyNotSupported, - .LOOP => return error.SymLinkLoop, - .NAMETOOLONG => return error.NameTooLong, - .NOENT => return error.FileNotFound, - .NOTDIR => return error.NotDir, - .HOSTUNREACH => return error.NetworkUnreachable, - .NETUNREACH => return error.NetworkUnreachable, - .NOTCONN => return error.SocketNotConnected, - .NETDOWN => return error.NetworkSubsystemFailed, - else => |err| return unexpectedErrno(err), - } - } -} - -/// Transmit a message to another socket. -/// -/// The `send` call may be used only when the socket is in a connected state (so that the intended -/// recipient is known). The only difference between `send` and `write` is the presence of -/// flags. With a zero flags argument, `send` is equivalent to `write`. Also, the following -/// call -/// -/// send(sockfd, buf, len, flags); -/// -/// is equivalent to -/// -/// sendto(sockfd, buf, len, flags, NULL, 0); -/// -/// There is no indication of failure to deliver. -/// -/// When the message does not fit into the send buffer of the socket, `send` normally blocks, -/// unless the socket has been placed in nonblocking I/O mode. In nonblocking mode it would fail -/// with `SendError.WouldBlock`. The `select` call may be used to determine when it is -/// possible to send more data. -pub fn send( - /// The file descriptor of the sending socket. - sockfd: socket_t, - buf: []const u8, - flags: u32, -) SendError!usize { - return sendto(sockfd, buf, flags, null, 0) catch |err| switch (err) { - error.AddressFamilyNotSupported => unreachable, - error.SymLinkLoop => unreachable, - error.NameTooLong => unreachable, - error.FileNotFound => unreachable, - error.NotDir => unreachable, - error.NetworkUnreachable => unreachable, - error.AddressNotAvailable => unreachable, - error.SocketNotConnected => unreachable, - error.UnreachableAddress => unreachable, - else => |e| return e, - }; -} - -pub const SendFileError = PReadError || WriteError || SendError; - -fn count_iovec_bytes(iovs: []const iovec_const) usize { - var count: usize = 0; - for (iovs) |iov| { - count += iov.iov_len; - } - return count; -} - -/// Transfer data between file descriptors, with optional headers and trailers. -/// Returns the number of bytes written, which can be zero. -/// -/// The `sendfile` call copies `in_len` bytes from one file descriptor to another. When possible, -/// this is done within the operating system kernel, which can provide better performance -/// characteristics than transferring data from kernel to user space and back, such as with -/// `read` and `write` calls. When `in_len` is `0`, it means to copy until the end of the input file has been -/// reached. Note, however, that partial writes are still possible in this case. -/// -/// `in_fd` must be a file descriptor opened for reading, and `out_fd` must be a file descriptor -/// opened for writing. They may be any kind of file descriptor; however, if `in_fd` is not a regular -/// file system file, it may cause this function to fall back to calling `read` and `write`, in which case -/// atomicity guarantees no longer apply. -/// -/// Copying begins reading at `in_offset`. The input file descriptor seek position is ignored and not updated. -/// If the output file descriptor has a seek position, it is updated as bytes are written. When -/// `in_offset` is past the end of the input file, it successfully reads 0 bytes. -/// -/// `flags` has different meanings per operating system; refer to the respective man pages. -/// -/// These systems support atomically sending everything, including headers and trailers: -/// * macOS -/// * FreeBSD -/// -/// These systems support in-kernel data copying, but headers and trailers are not sent atomically: -/// * Linux -/// -/// Other systems fall back to calling `read` / `write`. -/// -/// Linux has a limit on how many bytes may be transferred in one `sendfile` call, which is `0x7ffff000` -/// on both 64-bit and 32-bit systems. This is due to using a signed C int as the return value, as -/// well as stuffing the errno codes into the last `4096` values. This is noted on the `sendfile` man page. -/// The limit on Darwin is `0x7fffffff`, trying to write more than that returns EINVAL. -/// The corresponding POSIX limit on this is `math.maxInt(isize)`. -pub fn sendfile( - out_fd: fd_t, - in_fd: fd_t, - in_offset: u64, - in_len: u64, - headers: []const iovec_const, - trailers: []const iovec_const, - flags: u32, -) SendFileError!usize { - var header_done = false; - var total_written: usize = 0; - - // Prevents EOVERFLOW. - const size_t = std.meta.Int(.unsigned, @typeInfo(usize).Int.bits - 1); - const max_count = switch (builtin.os.tag) { - .linux => 0x7ffff000, - .macos, .ios, .watchos, .tvos => math.maxInt(i32), - else => math.maxInt(size_t), - }; - - switch (builtin.os.tag) { - .linux => sf: { - // sendfile() first appeared in Linux 2.2, glibc 2.1. - const call_sf = comptime if (builtin.link_libc) - std.c.versionCheck(.{ .major = 2, .minor = 1, .patch = 0 }) - else - builtin.os.version_range.linux.range.max.order(.{ .major = 2, .minor = 2, .patch = 0 }) != .lt; - if (!call_sf) break :sf; - - if (headers.len != 0) { - const amt = try writev(out_fd, headers); - total_written += amt; - if (amt < count_iovec_bytes(headers)) return total_written; - header_done = true; - } - - // Here we match BSD behavior, making a zero count value send as many bytes as possible. - const adjusted_count = if (in_len == 0) max_count else @min(in_len, max_count); - - const sendfile_sym = if (lfs64_abi) system.sendfile64 else system.sendfile; - while (true) { - var offset: off_t = @bitCast(in_offset); - const rc = sendfile_sym(out_fd, in_fd, &offset, adjusted_count); - switch (errno(rc)) { - .SUCCESS => { - const amt: usize = @bitCast(rc); - total_written += amt; - if (in_len == 0 and amt == 0) { - // We have detected EOF from `in_fd`. - break; - } else if (amt < in_len) { - return total_written; - } else { - break; - } - }, - - .BADF => unreachable, // Always a race condition. - .FAULT => unreachable, // Segmentation fault. - .OVERFLOW => unreachable, // We avoid passing too large of a `count`. - .NOTCONN => return error.BrokenPipe, // `out_fd` is an unconnected socket - - .INVAL, .NOSYS => { - // EINVAL could be any of the following situations: - // * Descriptor is not valid or locked - // * an mmap(2)-like operation is not available for in_fd - // * count is negative - // * out_fd has the APPEND flag set - // Because of the "mmap(2)-like operation" possibility, we fall back to doing read/write - // manually, the same as ENOSYS. - break :sf; - }, - .AGAIN => return error.WouldBlock, - .IO => return error.InputOutput, - .PIPE => return error.BrokenPipe, - .NOMEM => return error.SystemResources, - .NXIO => return error.Unseekable, - .SPIPE => return error.Unseekable, - else => |err| { - unexpectedErrno(err) catch {}; - break :sf; - }, - } - } - - if (trailers.len != 0) { - total_written += try writev(out_fd, trailers); - } - - return total_written; - }, - .freebsd => sf: { - var hdtr_data: std.c.sf_hdtr = undefined; - var hdtr: ?*std.c.sf_hdtr = null; - if (headers.len != 0 or trailers.len != 0) { - // Here we carefully avoid `@intCast` by returning partial writes when - // too many io vectors are provided. - const hdr_cnt = math.cast(u31, headers.len) orelse math.maxInt(u31); - if (headers.len > hdr_cnt) return writev(out_fd, headers); - - const trl_cnt = math.cast(u31, trailers.len) orelse math.maxInt(u31); - - hdtr_data = std.c.sf_hdtr{ - .headers = headers.ptr, - .hdr_cnt = hdr_cnt, - .trailers = trailers.ptr, - .trl_cnt = trl_cnt, - }; - hdtr = &hdtr_data; - } - - while (true) { - var sbytes: off_t = undefined; - const err = errno(system.sendfile(in_fd, out_fd, @bitCast(in_offset), @min(in_len, max_count), hdtr, &sbytes, flags)); - const amt: usize = @bitCast(sbytes); - switch (err) { - .SUCCESS => return amt, - - .BADF => unreachable, // Always a race condition. - .FAULT => unreachable, // Segmentation fault. - .NOTCONN => return error.BrokenPipe, // `out_fd` is an unconnected socket - - .INVAL, .OPNOTSUPP, .NOTSOCK, .NOSYS => { - // EINVAL could be any of the following situations: - // * The fd argument is not a regular file. - // * The s argument is not a SOCK.STREAM type socket. - // * The offset argument is negative. - // Because of some of these possibilities, we fall back to doing read/write - // manually, the same as ENOSYS. - break :sf; - }, - - .INTR => if (amt != 0) return amt else continue, - - .AGAIN => if (amt != 0) { - return amt; - } else { - return error.WouldBlock; - }, - - .BUSY => if (amt != 0) { - return amt; - } else { - return error.WouldBlock; - }, - - .IO => return error.InputOutput, - .NOBUFS => return error.SystemResources, - .PIPE => return error.BrokenPipe, - - else => { - unexpectedErrno(err) catch {}; - if (amt != 0) { - return amt; - } else { - break :sf; - } - }, - } - } - }, - .macos, .ios, .tvos, .watchos => sf: { - var hdtr_data: std.c.sf_hdtr = undefined; - var hdtr: ?*std.c.sf_hdtr = null; - if (headers.len != 0 or trailers.len != 0) { - // Here we carefully avoid `@intCast` by returning partial writes when - // too many io vectors are provided. - const hdr_cnt = math.cast(u31, headers.len) orelse math.maxInt(u31); - if (headers.len > hdr_cnt) return writev(out_fd, headers); - - const trl_cnt = math.cast(u31, trailers.len) orelse math.maxInt(u31); - - hdtr_data = std.c.sf_hdtr{ - .headers = headers.ptr, - .hdr_cnt = hdr_cnt, - .trailers = trailers.ptr, - .trl_cnt = trl_cnt, - }; - hdtr = &hdtr_data; - } - - while (true) { - var sbytes: off_t = @min(in_len, max_count); - const err = errno(system.sendfile(in_fd, out_fd, @bitCast(in_offset), &sbytes, hdtr, flags)); - const amt: usize = @bitCast(sbytes); - switch (err) { - .SUCCESS => return amt, - - .BADF => unreachable, // Always a race condition. - .FAULT => unreachable, // Segmentation fault. - .INVAL => unreachable, - .NOTCONN => return error.BrokenPipe, // `out_fd` is an unconnected socket - - .OPNOTSUPP, .NOTSOCK, .NOSYS => break :sf, - - .INTR => if (amt != 0) return amt else continue, - - .AGAIN => if (amt != 0) { - return amt; - } else { - return error.WouldBlock; - }, - - .IO => return error.InputOutput, - .PIPE => return error.BrokenPipe, - - else => { - unexpectedErrno(err) catch {}; - if (amt != 0) { - return amt; - } else { - break :sf; - } - }, - } - } - }, - else => {}, // fall back to read/write - } - - if (headers.len != 0 and !header_done) { - const amt = try writev(out_fd, headers); - total_written += amt; - if (amt < count_iovec_bytes(headers)) return total_written; - } - - rw: { - var buf: [8 * 4096]u8 = undefined; - // Here we match BSD behavior, making a zero count value send as many bytes as possible. - const adjusted_count = if (in_len == 0) buf.len else @min(buf.len, in_len); - const amt_read = try pread(in_fd, buf[0..adjusted_count], in_offset); - if (amt_read == 0) { - if (in_len == 0) { - // We have detected EOF from `in_fd`. - break :rw; - } else { - return total_written; - } - } - const amt_written = try write(out_fd, buf[0..amt_read]); - total_written += amt_written; - if (amt_written < in_len or in_len == 0) return total_written; - } - - if (trailers.len != 0) { - total_written += try writev(out_fd, trailers); - } - - return total_written; -} - -pub const CopyFileRangeError = error{ - FileTooBig, - InputOutput, - /// `fd_in` is not open for reading; or `fd_out` is not open for writing; - /// or the `APPEND` flag is set for `fd_out`. - FilesOpenedWithWrongFlags, - IsDir, - OutOfMemory, - NoSpaceLeft, - Unseekable, - PermissionDenied, - SwapFile, - CorruptedData, -} || PReadError || PWriteError || UnexpectedError; - -var has_copy_file_range_syscall = std.atomic.Value(bool).init(true); - -/// Transfer data between file descriptors at specified offsets. -/// Returns the number of bytes written, which can less than requested. -/// -/// The `copy_file_range` call copies `len` bytes from one file descriptor to another. When possible, -/// this is done within the operating system kernel, which can provide better performance -/// characteristics than transferring data from kernel to user space and back, such as with -/// `pread` and `pwrite` calls. -/// -/// `fd_in` must be a file descriptor opened for reading, and `fd_out` must be a file descriptor -/// opened for writing. They may be any kind of file descriptor; however, if `fd_in` is not a regular -/// file system file, it may cause this function to fall back to calling `pread` and `pwrite`, in which case -/// atomicity guarantees no longer apply. -/// -/// If `fd_in` and `fd_out` are the same, source and target ranges must not overlap. -/// The file descriptor seek positions are ignored and not updated. -/// When `off_in` is past the end of the input file, it successfully reads 0 bytes. -/// -/// `flags` has different meanings per operating system; refer to the respective man pages. -/// -/// These systems support in-kernel data copying: -/// * Linux 4.5 (cross-filesystem 5.3) -/// * FreeBSD 13.0 -/// -/// Other systems fall back to calling `pread` / `pwrite`. -/// -/// Maximum offsets on Linux and FreeBSD are `math.maxInt(i64)`. -pub fn copy_file_range(fd_in: fd_t, off_in: u64, fd_out: fd_t, off_out: u64, len: usize, flags: u32) CopyFileRangeError!usize { - if ((comptime builtin.os.isAtLeast(.freebsd, .{ .major = 13, .minor = 0, .patch = 0 }) orelse false) or - ((comptime builtin.os.isAtLeast(.linux, .{ .major = 4, .minor = 5, .patch = 0 }) orelse false and - std.c.versionCheck(.{ .major = 2, .minor = 27, .patch = 0 })) and - has_copy_file_range_syscall.load(.monotonic))) - { - var off_in_copy: i64 = @bitCast(off_in); - var off_out_copy: i64 = @bitCast(off_out); - - while (true) { - const rc = system.copy_file_range(fd_in, &off_in_copy, fd_out, &off_out_copy, len, flags); - if (builtin.os.tag == .freebsd) { - switch (system.getErrno(rc)) { - .SUCCESS => return @intCast(rc), - .BADF => return error.FilesOpenedWithWrongFlags, - .FBIG => return error.FileTooBig, - .IO => return error.InputOutput, - .ISDIR => return error.IsDir, - .NOSPC => return error.NoSpaceLeft, - .INVAL => break, // these may not be regular files, try fallback - .INTEGRITY => return error.CorruptedData, - .INTR => continue, - else => |err| return unexpectedErrno(err), - } - } else { // assume linux - switch (system.getErrno(rc)) { - .SUCCESS => return @intCast(rc), - .BADF => return error.FilesOpenedWithWrongFlags, - .FBIG => return error.FileTooBig, - .IO => return error.InputOutput, - .ISDIR => return error.IsDir, - .NOSPC => return error.NoSpaceLeft, - .INVAL => break, // these may not be regular files, try fallback - .NOMEM => return error.OutOfMemory, - .OVERFLOW => return error.Unseekable, - .PERM => return error.PermissionDenied, - .TXTBSY => return error.SwapFile, - .XDEV => break, // support for cross-filesystem copy added in Linux 5.3, use fallback - .NOSYS => { // syscall added in Linux 4.5, use fallback - has_copy_file_range_syscall.store(false, .monotonic); - break; - }, - else => |err| return unexpectedErrno(err), - } - } - } - } - - var buf: [8 * 4096]u8 = undefined; - const amt_read = try pread(fd_in, buf[0..@min(buf.len, len)], off_in); - if (amt_read == 0) return 0; - return pwrite(fd_out, buf[0..amt_read], off_out); -} - -pub const PollError = error{ - /// The network subsystem has failed. - NetworkSubsystemFailed, - - /// The kernel had no space to allocate file descriptor tables. - SystemResources, -} || UnexpectedError; - -pub fn poll(fds: []pollfd, timeout: i32) PollError!usize { - while (true) { - const fds_count = math.cast(nfds_t, fds.len) orelse return error.SystemResources; - const rc = system.poll(fds.ptr, fds_count, timeout); - if (builtin.os.tag == .windows) { - if (rc == windows.ws2_32.SOCKET_ERROR) { - switch (windows.ws2_32.WSAGetLastError()) { - .WSANOTINITIALISED => unreachable, - .WSAENETDOWN => return error.NetworkSubsystemFailed, - .WSAENOBUFS => return error.SystemResources, - // TODO: handle more errors - else => |err| return windows.unexpectedWSAError(err), - } - } else { - return @intCast(rc); - } - } else { - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - .FAULT => unreachable, - .INTR => continue, - .INVAL => unreachable, - .NOMEM => return error.SystemResources, - else => |err| return unexpectedErrno(err), - } - } - unreachable; - } -} - -pub const PPollError = error{ - /// The operation was interrupted by a delivery of a signal before it could complete. - SignalInterrupt, - - /// The kernel had no space to allocate file descriptor tables. - SystemResources, -} || UnexpectedError; - -pub fn ppoll(fds: []pollfd, timeout: ?*const timespec, mask: ?*const sigset_t) PPollError!usize { - var ts: timespec = undefined; - var ts_ptr: ?*timespec = null; - if (timeout) |timeout_ns| { - ts_ptr = &ts; - ts = timeout_ns.*; - } - const fds_count = math.cast(nfds_t, fds.len) orelse return error.SystemResources; - const rc = system.ppoll(fds.ptr, fds_count, ts_ptr, mask); - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), .FAULT => unreachable, - .INTR => return error.SignalInterrupt, - .INVAL => unreachable, - .NOMEM => return error.SystemResources, - else => |err| return unexpectedErrno(err), - } -} - -pub const RecvFromError = error{ - /// The socket is marked nonblocking and the requested operation would block, and - /// there is no global event loop configured. - WouldBlock, - - /// A remote host refused to allow the network connection, typically because it is not - /// running the requested service. - ConnectionRefused, - - /// Could not allocate kernel memory. - SystemResources, - - ConnectionResetByPeer, - ConnectionTimedOut, - - /// The socket has not been bound. - SocketNotBound, - - /// The UDP message was too big for the buffer and part of it has been discarded - MessageTooBig, - - /// The network subsystem has failed. - NetworkSubsystemFailed, - - /// The socket is not connected (connection-oriented sockets only). - SocketNotConnected, -} || UnexpectedError; - -pub fn recv(sock: socket_t, buf: []u8, flags: u32) RecvFromError!usize { - return recvfrom(sock, buf, flags, null, null); -} - -/// If `sockfd` is opened in non blocking mode, the function will -/// return error.WouldBlock when EAGAIN is received. -pub fn recvfrom( - sockfd: socket_t, - buf: []u8, - flags: u32, - src_addr: ?*sockaddr, - addrlen: ?*socklen_t, -) RecvFromError!usize { - while (true) { - const rc = system.recvfrom(sockfd, buf.ptr, buf.len, flags, src_addr, addrlen); - if (builtin.os.tag == .windows) { - if (rc == windows.ws2_32.SOCKET_ERROR) { - switch (windows.ws2_32.WSAGetLastError()) { - .WSANOTINITIALISED => unreachable, - .WSAECONNRESET => return error.ConnectionResetByPeer, - .WSAEINVAL => return error.SocketNotBound, - .WSAEMSGSIZE => return error.MessageTooBig, - .WSAENETDOWN => return error.NetworkSubsystemFailed, - .WSAENOTCONN => return error.SocketNotConnected, - .WSAEWOULDBLOCK => return error.WouldBlock, - .WSAETIMEDOUT => return error.ConnectionTimedOut, - // TODO: handle more errors - else => |err| return windows.unexpectedWSAError(err), - } - } else { - return @intCast(rc); - } - } else { - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - .BADF => unreachable, // always a race condition - .FAULT => unreachable, - .INVAL => unreachable, - .NOTCONN => return error.SocketNotConnected, - .NOTSOCK => unreachable, - .INTR => continue, - .AGAIN => return error.WouldBlock, - .NOMEM => return error.SystemResources, - .CONNREFUSED => return error.ConnectionRefused, - .CONNRESET => return error.ConnectionResetByPeer, - .TIMEDOUT => return error.ConnectionTimedOut, - else => |err| return unexpectedErrno(err), - } - } - } -} - -pub const DnExpandError = error{InvalidDnsPacket}; - -pub fn dn_expand( - msg: []const u8, - comp_dn: []const u8, - exp_dn: []u8, -) DnExpandError!usize { - // This implementation is ported from musl libc. - // A more idiomatic "ziggy" implementation would be welcome. - var p = comp_dn.ptr; - var len: usize = std.math.maxInt(usize); - const end = msg.ptr + msg.len; - if (p == end or exp_dn.len == 0) return error.InvalidDnsPacket; - var dest = exp_dn.ptr; - const dend = dest + @min(exp_dn.len, 254); - // detect reference loop using an iteration counter - var i: usize = 0; - while (i < msg.len) : (i += 2) { - // loop invariants: p<end, dest<dend - if ((p[0] & 0xc0) != 0) { - if (p + 1 == end) return error.InvalidDnsPacket; - const j = @as(usize, p[0] & 0x3f) << 8 | p[1]; - if (len == std.math.maxInt(usize)) len = @intFromPtr(p) + 2 - @intFromPtr(comp_dn.ptr); - if (j >= msg.len) return error.InvalidDnsPacket; - p = msg.ptr + j; - } else if (p[0] != 0) { - if (dest != exp_dn.ptr) { - dest[0] = '.'; - dest += 1; - } - var j = p[0]; - p += 1; - if (j >= @intFromPtr(end) - @intFromPtr(p) or j >= @intFromPtr(dend) - @intFromPtr(dest)) { - return error.InvalidDnsPacket; - } - while (j != 0) { - j -= 1; - dest[0] = p[0]; - dest += 1; - p += 1; - } - } else { - dest[0] = 0; - if (len == std.math.maxInt(usize)) len = @intFromPtr(p) + 1 - @intFromPtr(comp_dn.ptr); - return len; - } - } - return error.InvalidDnsPacket; -} - -pub const SetSockOptError = error{ - /// The socket is already connected, and a specified option cannot be set while the socket is connected. - AlreadyConnected, - - /// The option is not supported by the protocol. - InvalidProtocolOption, - - /// The send and receive timeout values are too big to fit into the timeout fields in the socket structure. - TimeoutTooBig, - - /// Insufficient resources are available in the system to complete the call. - SystemResources, - - // Setting the socket option requires more elevated permissions. - PermissionDenied, - - NetworkSubsystemFailed, - FileDescriptorNotASocket, - SocketNotBound, - NoDevice, -} || UnexpectedError; - -/// Set a socket's options. -pub fn setsockopt(fd: socket_t, level: u32, optname: u32, opt: []const u8) SetSockOptError!void { - if (builtin.os.tag == .windows) { - const rc = windows.ws2_32.setsockopt(fd, @intCast(level), @intCast(optname), opt.ptr, @intCast(opt.len)); - if (rc == windows.ws2_32.SOCKET_ERROR) { - switch (windows.ws2_32.WSAGetLastError()) { - .WSANOTINITIALISED => unreachable, - .WSAENETDOWN => return error.NetworkSubsystemFailed, - .WSAEFAULT => unreachable, - .WSAENOTSOCK => return error.FileDescriptorNotASocket, - .WSAEINVAL => return error.SocketNotBound, - else => |err| return windows.unexpectedWSAError(err), - } - } - return; - } else { - switch (errno(system.setsockopt(fd, level, optname, opt.ptr, @intCast(opt.len)))) { - .SUCCESS => {}, - .BADF => unreachable, // always a race condition - .NOTSOCK => unreachable, // always a race condition - .INVAL => unreachable, - .FAULT => unreachable, - .DOM => return error.TimeoutTooBig, - .ISCONN => return error.AlreadyConnected, - .NOPROTOOPT => return error.InvalidProtocolOption, - .NOMEM => return error.SystemResources, - .NOBUFS => return error.SystemResources, - .PERM => return error.PermissionDenied, - .NODEV => return error.NoDevice, - else => |err| return unexpectedErrno(err), - } - } -} - -pub const MemFdCreateError = error{ - SystemFdQuotaExceeded, - ProcessFdQuotaExceeded, - OutOfMemory, - - /// memfd_create is available in Linux 3.17 and later. This error is returned - /// for older kernel versions. - SystemOutdated, -} || UnexpectedError; - -pub fn memfd_createZ(name: [*:0]const u8, flags: u32) MemFdCreateError!fd_t { - switch (builtin.os.tag) { - .linux => { - // memfd_create is available only in glibc versions starting with 2.27. - const use_c = std.c.versionCheck(.{ .major = 2, .minor = 27, .patch = 0 }); - const sys = if (use_c) std.c else linux; - const getErrno = if (use_c) std.c.getErrno else linux.getErrno; - const rc = sys.memfd_create(name, flags); - switch (getErrno(rc)) { - .SUCCESS => return @intCast(rc), - .FAULT => unreachable, // name has invalid memory - .INVAL => unreachable, // name/flags are faulty - .NFILE => return error.SystemFdQuotaExceeded, - .MFILE => return error.ProcessFdQuotaExceeded, - .NOMEM => return error.OutOfMemory, - .NOSYS => return error.SystemOutdated, - else => |err| return unexpectedErrno(err), - } - }, - .freebsd => { - if (comptime builtin.os.version_range.semver.max.order(.{ .major = 13, .minor = 0, .patch = 0 }) == .lt) - @compileError("memfd_create is unavailable on FreeBSD < 13.0"); - const rc = system.memfd_create(name, flags); - switch (errno(rc)) { - .SUCCESS => return rc, - .BADF => unreachable, // name argument NULL - .INVAL => unreachable, // name too long or invalid/unsupported flags. - .MFILE => return error.ProcessFdQuotaExceeded, - .NFILE => return error.SystemFdQuotaExceeded, - .NOSYS => return error.SystemOutdated, - else => |err| return unexpectedErrno(err), - } - }, - else => @compileError("target OS does not support memfd_create()"), + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOTDIR => return error.FileNotFound, + .NOTCAPABLE => return error.AccessDenied, + .ILSEQ => return error.InvalidUtf8, + else => |err| return posix.unexpectedErrno(err), } } -pub const MFD_NAME_PREFIX = "memfd:"; -pub const MFD_MAX_NAME_LEN = NAME_MAX - MFD_NAME_PREFIX.len; -fn toMemFdPath(name: []const u8) ![MFD_MAX_NAME_LEN:0]u8 { - var path_with_null: [MFD_MAX_NAME_LEN:0]u8 = undefined; - // >= rather than > to make room for the null byte - if (name.len >= MFD_MAX_NAME_LEN) return error.NameTooLong; - @memcpy(path_with_null[0..name.len], name); - path_with_null[name.len] = 0; - return path_with_null; -} - -pub fn memfd_create(name: []const u8, flags: u32) !fd_t { - const name_t = try toMemFdPath(name); - return memfd_createZ(&name_t, flags); -} - -pub fn getrusage(who: i32) rusage { - var result: rusage = undefined; - const rc = system.getrusage(who, &result); - switch (errno(rc)) { - .SUCCESS => return result, +pub fn fstat_wasi(fd: posix.fd_t) posix.FStatError!wasi.filestat_t { + var stat: wasi.filestat_t = undefined; + switch (wasi.fd_filestat_get(fd, &stat)) { + .SUCCESS => return stat, .INVAL => unreachable, - .FAULT => unreachable, - else => unreachable, - } -} - -pub const TIOCError = error{NotATerminal}; - -pub const TermiosGetError = TIOCError || UnexpectedError; - -pub fn tcgetattr(handle: fd_t) TermiosGetError!termios { - while (true) { - var term: termios = undefined; - switch (errno(system.tcgetattr(handle, &term))) { - .SUCCESS => return term, - .INTR => continue, - .BADF => unreachable, - .NOTTY => return error.NotATerminal, - else => |err| return unexpectedErrno(err), - } - } -} - -pub const TermiosSetError = TermiosGetError || error{ProcessOrphaned}; - -pub fn tcsetattr(handle: fd_t, optional_action: TCSA, termios_p: termios) TermiosSetError!void { - while (true) { - switch (errno(system.tcsetattr(handle, optional_action, &termios_p))) { - .SUCCESS => return, - .BADF => unreachable, - .INTR => continue, - .INVAL => unreachable, - .NOTTY => return error.NotATerminal, - .IO => return error.ProcessOrphaned, - else => |err| return unexpectedErrno(err), - } - } -} - -pub const TermioGetPgrpError = TIOCError || UnexpectedError; - -/// Returns the process group ID for the TTY associated with the given handle. -pub fn tcgetpgrp(handle: fd_t) TermioGetPgrpError!pid_t { - while (true) { - var pgrp: pid_t = undefined; - switch (errno(system.tcgetpgrp(handle, &pgrp))) { - .SUCCESS => return pgrp, - .BADF => unreachable, - .INVAL => unreachable, - .INTR => continue, - .NOTTY => return error.NotATerminal, - else => |err| return unexpectedErrno(err), - } - } -} - -pub const TermioSetPgrpError = TermioGetPgrpError || error{NotAPgrpMember}; - -/// Sets the controlling process group ID for given TTY. -/// handle must be valid fd_t to a TTY associated with calling process. -/// pgrp must be a valid process group, and the calling process must be a member -/// of that group. -pub fn tcsetpgrp(handle: fd_t, pgrp: pid_t) TermioSetPgrpError!void { - while (true) { - switch (errno(system.tcsetpgrp(handle, &pgrp))) { - .SUCCESS => return, - .BADF => unreachable, - .INVAL => unreachable, - .INTR => continue, - .NOTTY => return error.NotATerminal, - .PERM => return TermioSetPgrpError.NotAPgrpMember, - else => |err| return unexpectedErrno(err), - } - } -} - -pub const IoCtl_SIOCGIFINDEX_Error = error{ - FileSystem, - InterfaceNotFound, -} || UnexpectedError; - -pub fn ioctl_SIOCGIFINDEX(fd: fd_t, ifr: *ifreq) IoCtl_SIOCGIFINDEX_Error!void { - while (true) { - switch (errno(system.ioctl(fd, SIOCGIFINDEX, @intFromPtr(ifr)))) { - .SUCCESS => return, - .INVAL => unreachable, // Bad parameters. - .NOTTY => unreachable, - .NXIO => unreachable, - .BADF => unreachable, // Always a race condition. - .FAULT => unreachable, // Bad pointer parameter. - .INTR => continue, - .IO => return error.FileSystem, - .NODEV => return error.InterfaceNotFound, - else => |err| return unexpectedErrno(err), - } - } -} - -pub fn signalfd(fd: fd_t, mask: *const sigset_t, flags: u32) !fd_t { - const rc = system.signalfd(fd, mask, flags); - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - .BADF, .INVAL => unreachable, - .NFILE => return error.SystemFdQuotaExceeded, + .BADF => unreachable, // Always a race condition. .NOMEM => return error.SystemResources, - .MFILE => return error.ProcessResources, - .NODEV => return error.InodeMountFail, - .NOSYS => return error.SystemOutdated, - else => |err| return unexpectedErrno(err), - } -} - -pub const SyncError = error{ - InputOutput, - NoSpaceLeft, - DiskQuota, - AccessDenied, -} || UnexpectedError; - -/// Write all pending file contents and metadata modifications to all filesystems. -pub fn sync() void { - system.sync(); -} - -/// Write all pending file contents and metadata modifications to the filesystem which contains the specified file. -pub fn syncfs(fd: fd_t) SyncError!void { - const rc = system.syncfs(fd); - switch (errno(rc)) { - .SUCCESS => return, - .BADF, .INVAL, .ROFS => unreachable, - .IO => return error.InputOutput, - .NOSPC => return error.NoSpaceLeft, - .DQUOT => return error.DiskQuota, - else => |err| return unexpectedErrno(err), - } -} - -/// Write all pending file contents and metadata modifications for the specified file descriptor to the underlying filesystem. -pub fn fsync(fd: fd_t) SyncError!void { - if (builtin.os.tag == .windows) { - if (windows.kernel32.FlushFileBuffers(fd) != 0) - return; - switch (windows.kernel32.GetLastError()) { - .SUCCESS => return, - .INVALID_HANDLE => unreachable, - .ACCESS_DENIED => return error.AccessDenied, // a sync was performed but the system couldn't update the access time - .UNEXP_NET_ERR => return error.InputOutput, - else => return error.InputOutput, - } - } - const rc = system.fsync(fd); - switch (errno(rc)) { - .SUCCESS => return, - .BADF, .INVAL, .ROFS => unreachable, - .IO => return error.InputOutput, - .NOSPC => return error.NoSpaceLeft, - .DQUOT => return error.DiskQuota, - else => |err| return unexpectedErrno(err), - } -} - -/// Write all pending file contents for the specified file descriptor to the underlying filesystem, but not necessarily the metadata. -pub fn fdatasync(fd: fd_t) SyncError!void { - if (builtin.os.tag == .windows) { - return fsync(fd) catch |err| switch (err) { - SyncError.AccessDenied => return, // fdatasync doesn't promise that the access time was synced - else => return err, - }; - } - const rc = system.fdatasync(fd); - switch (errno(rc)) { - .SUCCESS => return, - .BADF, .INVAL, .ROFS => unreachable, - .IO => return error.InputOutput, - .NOSPC => return error.NoSpaceLeft, - .DQUOT => return error.DiskQuota, - else => |err| return unexpectedErrno(err), - } -} - -pub const PrctlError = error{ - /// Can only occur with PR_SET_SECCOMP/SECCOMP_MODE_FILTER or - /// PR_SET_MM/PR_SET_MM_EXE_FILE - AccessDenied, - /// Can only occur with PR_SET_MM/PR_SET_MM_EXE_FILE - InvalidFileDescriptor, - InvalidAddress, - /// Can only occur with PR_SET_SPECULATION_CTRL, PR_MPX_ENABLE_MANAGEMENT, - /// or PR_MPX_DISABLE_MANAGEMENT - UnsupportedFeature, - /// Can only occur with PR_SET_FP_MODE - OperationNotSupported, - PermissionDenied, -} || UnexpectedError; - -pub fn prctl(option: PR, args: anytype) PrctlError!u31 { - if (@typeInfo(@TypeOf(args)) != .Struct) - @compileError("Expected tuple or struct argument, found " ++ @typeName(@TypeOf(args))); - if (args.len > 4) - @compileError("prctl takes a maximum of 4 optional arguments"); - - var buf: [4]usize = undefined; - { - comptime var i = 0; - inline while (i < args.len) : (i += 1) buf[i] = args[i]; - } - - const rc = system.prctl(@intFromEnum(option), buf[0], buf[1], buf[2], buf[3]); - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), .ACCES => return error.AccessDenied, - .BADF => return error.InvalidFileDescriptor, - .FAULT => return error.InvalidAddress, - .INVAL => unreachable, - .NODEV, .NXIO => return error.UnsupportedFeature, - .OPNOTSUPP => return error.OperationNotSupported, - .PERM, .BUSY => return error.PermissionDenied, - .RANGE => unreachable, - else => |err| return unexpectedErrno(err), - } -} - -pub const GetrlimitError = UnexpectedError; - -pub fn getrlimit(resource: rlimit_resource) GetrlimitError!rlimit { - const getrlimit_sym = if (lfs64_abi) system.getrlimit64 else system.getrlimit; - - var limits: rlimit = undefined; - switch (errno(getrlimit_sym(resource, &limits))) { - .SUCCESS => return limits, - .FAULT => unreachable, // bogus pointer - .INVAL => unreachable, - else => |err| return unexpectedErrno(err), - } -} - -pub const SetrlimitError = error{ PermissionDenied, LimitTooBig } || UnexpectedError; - -pub fn setrlimit(resource: rlimit_resource, limits: rlimit) SetrlimitError!void { - const setrlimit_sym = if (lfs64_abi) system.setrlimit64 else system.setrlimit; - - switch (errno(setrlimit_sym(resource, &limits))) { - .SUCCESS => return, - .FAULT => unreachable, // bogus pointer - .INVAL => return error.LimitTooBig, // this could also mean "invalid resource", but that would be unreachable - .PERM => return error.PermissionDenied, - else => |err| return unexpectedErrno(err), - } -} - -pub const MincoreError = error{ - /// A kernel resource was temporarily unavailable. - SystemResources, - /// vec points to an invalid address. - InvalidAddress, - /// addr is not page-aligned. - InvalidSyscall, - /// One of the following: - /// * length is greater than user space TASK_SIZE - addr - /// * addr + length contains unmapped memory - OutOfMemory, - /// The mincore syscall is not available on this version and configuration - /// of this UNIX-like kernel. - MincoreUnavailable, -} || UnexpectedError; - -/// Determine whether pages are resident in memory. -pub fn mincore(ptr: [*]align(mem.page_size) u8, length: usize, vec: [*]u8) MincoreError!void { - return switch (errno(system.mincore(ptr, length, vec))) { - .SUCCESS => {}, - .AGAIN => error.SystemResources, - .FAULT => error.InvalidAddress, - .INVAL => error.InvalidSyscall, - .NOMEM => error.OutOfMemory, - .NOSYS => error.MincoreUnavailable, - else => |err| unexpectedErrno(err), - }; -} - -pub const MadviseError = error{ - /// advice is MADV.REMOVE, but the specified address range is not a shared writable mapping. - AccessDenied, - /// advice is MADV.HWPOISON, but the caller does not have the CAP_SYS_ADMIN capability. - PermissionDenied, - /// A kernel resource was temporarily unavailable. - SystemResources, - /// One of the following: - /// * addr is not page-aligned or length is negative - /// * advice is not valid - /// * advice is MADV.DONTNEED or MADV.REMOVE and the specified address range - /// includes locked, Huge TLB pages, or VM_PFNMAP pages. - /// * advice is MADV.MERGEABLE or MADV.UNMERGEABLE, but the kernel was not - /// configured with CONFIG_KSM. - /// * advice is MADV.FREE or MADV.WIPEONFORK but the specified address range - /// includes file, Huge TLB, MAP.SHARED, or VM_PFNMAP ranges. - InvalidSyscall, - /// (for MADV.WILLNEED) Paging in this area would exceed the process's - /// maximum resident set size. - WouldExceedMaximumResidentSetSize, - /// One of the following: - /// * (for MADV.WILLNEED) Not enough memory: paging in failed. - /// * Addresses in the specified range are not currently mapped, or - /// are outside the address space of the process. - OutOfMemory, - /// The madvise syscall is not available on this version and configuration - /// of the Linux kernel. - MadviseUnavailable, - /// The operating system returned an undocumented error code. - Unexpected, -}; - -/// Give advice about use of memory. -/// This syscall is optional and is sometimes configured to be disabled. -pub fn madvise(ptr: [*]align(mem.page_size) u8, length: usize, advice: u32) MadviseError!void { - switch (errno(system.madvise(ptr, length, advice))) { - .SUCCESS => return, - .ACCES => return error.AccessDenied, - .AGAIN => return error.SystemResources, - .BADF => unreachable, // The map exists, but the area maps something that isn't a file. - .INVAL => return error.InvalidSyscall, - .IO => return error.WouldExceedMaximumResidentSetSize, - .NOMEM => return error.OutOfMemory, - .NOSYS => return error.MadviseUnavailable, - else => |err| return unexpectedErrno(err), - } -} - -pub const PerfEventOpenError = error{ - /// Returned if the perf_event_attr size value is too small (smaller - /// than PERF_ATTR_SIZE_VER0), too big (larger than the page size), - /// or larger than the kernel supports and the extra bytes are not - /// zero. When E2BIG is returned, the perf_event_attr size field is - /// overwritten by the kernel to be the size of the structure it was - /// expecting. - TooBig, - /// Returned when the requested event requires CAP_SYS_ADMIN permis‐ - /// sions (or a more permissive perf_event paranoid setting). Some - /// common cases where an unprivileged process may encounter this - /// error: attaching to a process owned by a different user; moni‐ - /// toring all processes on a given CPU (i.e., specifying the pid - /// argument as -1); and not setting exclude_kernel when the para‐ - /// noid setting requires it. - /// Also: - /// Returned on many (but not all) architectures when an unsupported - /// exclude_hv, exclude_idle, exclude_user, or exclude_kernel set‐ - /// ting is specified. - /// It can also happen, as with EACCES, when the requested event re‐ - /// quires CAP_SYS_ADMIN permissions (or a more permissive - /// perf_event paranoid setting). This includes setting a break‐ - /// point on a kernel address, and (since Linux 3.13) setting a ker‐ - /// nel function-trace tracepoint. - PermissionDenied, - /// Returned if another event already has exclusive access to the - /// PMU. - DeviceBusy, - /// Each opened event uses one file descriptor. If a large number - /// of events are opened, the per-process limit on the number of - /// open file descriptors will be reached, and no more events can be - /// created. - ProcessResources, - EventRequiresUnsupportedCpuFeature, - /// Returned if you try to add more breakpoint - /// events than supported by the hardware. - TooManyBreakpoints, - /// Returned if PERF_SAMPLE_STACK_USER is set in sample_type and it - /// is not supported by hardware. - SampleStackNotSupported, - /// Returned if an event requiring a specific hardware feature is - /// requested but there is no hardware support. This includes re‐ - /// questing low-skid events if not supported, branch tracing if it - /// is not available, sampling if no PMU interrupt is available, and - /// branch stacks for software events. - EventNotSupported, - /// Returned if PERF_SAMPLE_CALLCHAIN is requested and sam‐ - /// ple_max_stack is larger than the maximum specified in - /// /proc/sys/kernel/perf_event_max_stack. - SampleMaxStackOverflow, - /// Returned if attempting to attach to a process that does not exist. - ProcessNotFound, -} || UnexpectedError; - -pub fn perf_event_open( - attr: *linux.perf_event_attr, - pid: pid_t, - cpu: i32, - group_fd: fd_t, - flags: usize, -) PerfEventOpenError!fd_t { - const rc = linux.perf_event_open(attr, pid, cpu, group_fd, flags); - switch (errno(rc)) { - .SUCCESS => return @intCast(rc), - .@"2BIG" => return error.TooBig, - .ACCES => return error.PermissionDenied, - .BADF => unreachable, // group_fd file descriptor is not valid. - .BUSY => return error.DeviceBusy, - .FAULT => unreachable, // Segmentation fault. - .INVAL => unreachable, // Bad attr settings. - .INTR => unreachable, // Mixed perf and ftrace handling for a uprobe. - .MFILE => return error.ProcessResources, - .NODEV => return error.EventRequiresUnsupportedCpuFeature, - .NOENT => unreachable, // Invalid type setting. - .NOSPC => return error.TooManyBreakpoints, - .NOSYS => return error.SampleStackNotSupported, - .OPNOTSUPP => return error.EventNotSupported, - .OVERFLOW => return error.SampleMaxStackOverflow, - .PERM => return error.PermissionDenied, - .SRCH => return error.ProcessNotFound, - else => |err| return unexpectedErrno(err), + .NOTCAPABLE => return error.AccessDenied, + else => |err| return posix.unexpectedErrno(err), } } - -pub const TimerFdCreateError = error{ - AccessDenied, - ProcessFdQuotaExceeded, - SystemFdQuotaExceeded, - NoDevice, - SystemResources, -} || UnexpectedError; - -pub const TimerFdGetError = error{InvalidHandle} || UnexpectedError; -pub const TimerFdSetError = TimerFdGetError || error{Canceled}; - -pub fn timerfd_create(clokid: i32, flags: linux.TFD) TimerFdCreateError!fd_t { - const rc = linux.timerfd_create(clokid, flags); - return switch (errno(rc)) { - .SUCCESS => @intCast(rc), - .INVAL => unreachable, - .MFILE => return error.ProcessFdQuotaExceeded, - .NFILE => return error.SystemFdQuotaExceeded, - .NODEV => return error.NoDevice, - .NOMEM => return error.SystemResources, - .PERM => return error.AccessDenied, - else => |err| return unexpectedErrno(err), - }; -} - -pub fn timerfd_settime( - fd: i32, - flags: linux.TFD.TIMER, - new_value: *const linux.itimerspec, - old_value: ?*linux.itimerspec, -) TimerFdSetError!void { - const rc = linux.timerfd_settime(fd, flags, new_value, old_value); - return switch (errno(rc)) { - .SUCCESS => {}, - .BADF => error.InvalidHandle, - .FAULT => unreachable, - .INVAL => unreachable, - .CANCELED => error.Canceled, - else => |err| return unexpectedErrno(err), - }; -} - -pub fn timerfd_gettime(fd: i32) TimerFdGetError!linux.itimerspec { - var curr_value: linux.itimerspec = undefined; - const rc = linux.timerfd_gettime(fd, &curr_value); - return switch (errno(rc)) { - .SUCCESS => return curr_value, - .BADF => error.InvalidHandle, - .FAULT => unreachable, - .INVAL => unreachable, - else => |err| return unexpectedErrno(err), - }; -} - -pub const PtraceError = error{ - DeviceBusy, - InputOutput, - ProcessNotFound, - PermissionDenied, -} || UnexpectedError; - -pub fn ptrace(request: u32, pid: pid_t, addr: usize, signal: usize) PtraceError!void { - if (builtin.os.tag == .windows or builtin.os.tag == .wasi) - @compileError("Unsupported OS"); - - return switch (builtin.os.tag) { - .linux => switch (errno(linux.ptrace(request, pid, addr, signal, 0))) { - .SUCCESS => {}, - .SRCH => error.ProcessNotFound, - .FAULT => unreachable, - .INVAL => unreachable, - .IO => return error.InputOutput, - .PERM => error.PermissionDenied, - .BUSY => error.DeviceBusy, - else => |err| return unexpectedErrno(err), - }, - - .macos, .ios, .tvos, .watchos => switch (errno(darwin.ptrace( - @intCast(request), - pid, - @ptrFromInt(addr), - @intCast(signal), - ))) { - .SUCCESS => {}, - .SRCH => error.ProcessNotFound, - .INVAL => unreachable, - .PERM => error.PermissionDenied, - .BUSY => error.DeviceBusy, - else => |err| return unexpectedErrno(err), - }, - - else => switch (errno(system.ptrace(request, pid, addr, signal))) { - .SUCCESS => {}, - .SRCH => error.ProcessNotFound, - .INVAL => unreachable, - .PERM => error.PermissionDenied, - .BUSY => error.DeviceBusy, - else => |err| return unexpectedErrno(err), - }, - }; -} - -const lfs64_abi = builtin.os.tag == .linux and builtin.link_libc and builtin.abi.isGnu(); diff --git a/lib/std/os/emscripten.zig b/lib/std/os/emscripten.zig index 924b2dd0b2..a37b2b1f5c 100644 --- a/lib/std/os/emscripten.zig +++ b/lib/std/os/emscripten.zig @@ -1,8 +1,8 @@ const std = @import("std"); const builtin = @import("builtin"); const wasi = std.os.wasi; -const iovec = std.os.iovec; -const iovec_const = std.os.iovec_const; +const iovec = std.posix.iovec; +const iovec_const = std.posix.iovec_const; const c = std.c; pub const FILE = c.FILE; diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig index a5cdab18ce..9ff272a332 100644 --- a/lib/std/os/linux.zig +++ b/lib/std/os/linux.zig @@ -18,9 +18,9 @@ const is_mips = native_arch.isMIPS(); const is_ppc = native_arch.isPPC(); const is_ppc64 = native_arch.isPPC64(); const is_sparc = native_arch.isSPARC(); -const iovec = std.os.iovec; -const iovec_const = std.os.iovec_const; -const ACCMODE = std.os.ACCMODE; +const iovec = std.posix.iovec; +const iovec_const = std.posix.iovec_const; +const ACCMODE = std.posix.ACCMODE; test { if (builtin.os.tag == .linux) { @@ -451,10 +451,11 @@ fn splitValue64(val: i64) [2]u32 { } /// Get the errno from a syscall return value, or 0 for no error. -pub fn getErrno(r: usize) E { - const signed_r = @as(isize, @bitCast(r)); +/// The public API is exposed via the `E` namespace. +fn errnoFromSyscall(r: usize) E { + const signed_r: isize = @bitCast(r); const int = if (signed_r > -4096 and signed_r < 0) -signed_r else 0; - return @as(E, @enumFromInt(int)); + return @enumFromInt(int); } pub fn dup(old: i32) usize { @@ -1561,7 +1562,7 @@ pub fn sigaction(sig: u6, noalias act: ?*const Sigaction, noalias oact: ?*Sigact .sparc, .sparc64 => syscall5(.rt_sigaction, sig, ksa_arg, oldksa_arg, @intFromPtr(ksa.restorer), mask_size), else => syscall4(.rt_sigaction, sig, ksa_arg, oldksa_arg, mask_size), }; - if (getErrno(result) != .SUCCESS) return result; + if (E.init(result) != .SUCCESS) return result; if (oact) |old| { old.handler.handler = oldksa.handler; @@ -1648,12 +1649,12 @@ pub fn sendmmsg(fd: i32, msgvec: [*]mmsghdr_const, vlen: u32, flags: u32) usize if (next_unsent < i) { const batch_size = i - next_unsent; const r = syscall4(.sendmmsg, @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(&msgvec[next_unsent]), batch_size, flags); - if (getErrno(r) != 0) return next_unsent; + if (E.init(r) != 0) return next_unsent; if (r < batch_size) return next_unsent + r; } // send current message as own packet const r = sendmsg(fd, &msg.msg_hdr, flags); - if (getErrno(r) != 0) return r; + if (E.init(r) != 0) return r; // Linux limits the total bytes sent by sendmsg to INT_MAX, so this cast is safe. msg.msg_len = @as(u32, @intCast(r)); next_unsent = i + 1; @@ -1665,7 +1666,7 @@ pub fn sendmmsg(fd: i32, msgvec: [*]mmsghdr_const, vlen: u32, flags: u32) usize if (next_unsent < kvlen or next_unsent == 0) { // want to make sure at least one syscall occurs (e.g. to trigger MSG.EOR) const batch_size = kvlen - next_unsent; const r = syscall4(.sendmmsg, @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(&msgvec[next_unsent]), batch_size, flags); - if (getErrno(r) != 0) return r; + if (E.init(r) != 0) return r; return next_unsent + r; } return kvlen; @@ -2263,13 +2264,609 @@ pub fn map_shadow_stack(addr: u64, size: u64, flags: u32) usize { } pub const E = switch (native_arch) { - .mips, .mipsel => @import("linux/errno/mips.zig").E, - .sparc, .sparcel, .sparc64 => @import("linux/errno/sparc.zig").E, - else => @import("linux/errno/generic.zig").E, + .mips, .mipsel => enum(u16) { + /// No error occurred. + SUCCESS = 0, + + PERM = 1, + NOENT = 2, + SRCH = 3, + INTR = 4, + IO = 5, + NXIO = 6, + @"2BIG" = 7, + NOEXEC = 8, + BADF = 9, + CHILD = 10, + /// Also used for WOULDBLOCK. + AGAIN = 11, + NOMEM = 12, + ACCES = 13, + FAULT = 14, + NOTBLK = 15, + BUSY = 16, + EXIST = 17, + XDEV = 18, + NODEV = 19, + NOTDIR = 20, + ISDIR = 21, + INVAL = 22, + NFILE = 23, + MFILE = 24, + NOTTY = 25, + TXTBSY = 26, + FBIG = 27, + NOSPC = 28, + SPIPE = 29, + ROFS = 30, + MLINK = 31, + PIPE = 32, + DOM = 33, + RANGE = 34, + + NOMSG = 35, + IDRM = 36, + CHRNG = 37, + L2NSYNC = 38, + L3HLT = 39, + L3RST = 40, + LNRNG = 41, + UNATCH = 42, + NOCSI = 43, + L2HLT = 44, + DEADLK = 45, + NOLCK = 46, + BADE = 50, + BADR = 51, + XFULL = 52, + NOANO = 53, + BADRQC = 54, + BADSLT = 55, + DEADLOCK = 56, + BFONT = 59, + NOSTR = 60, + NODATA = 61, + TIME = 62, + NOSR = 63, + NONET = 64, + NOPKG = 65, + REMOTE = 66, + NOLINK = 67, + ADV = 68, + SRMNT = 69, + COMM = 70, + PROTO = 71, + DOTDOT = 73, + MULTIHOP = 74, + BADMSG = 77, + NAMETOOLONG = 78, + OVERFLOW = 79, + NOTUNIQ = 80, + BADFD = 81, + REMCHG = 82, + LIBACC = 83, + LIBBAD = 84, + LIBSCN = 85, + LIBMAX = 86, + LIBEXEC = 87, + ILSEQ = 88, + NOSYS = 89, + LOOP = 90, + RESTART = 91, + STRPIPE = 92, + NOTEMPTY = 93, + USERS = 94, + NOTSOCK = 95, + DESTADDRREQ = 96, + MSGSIZE = 97, + PROTOTYPE = 98, + NOPROTOOPT = 99, + PROTONOSUPPORT = 120, + SOCKTNOSUPPORT = 121, + OPNOTSUPP = 122, + PFNOSUPPORT = 123, + AFNOSUPPORT = 124, + ADDRINUSE = 125, + ADDRNOTAVAIL = 126, + NETDOWN = 127, + NETUNREACH = 128, + NETRESET = 129, + CONNABORTED = 130, + CONNRESET = 131, + NOBUFS = 132, + ISCONN = 133, + NOTCONN = 134, + UCLEAN = 135, + NOTNAM = 137, + NAVAIL = 138, + ISNAM = 139, + REMOTEIO = 140, + SHUTDOWN = 143, + TOOMANYREFS = 144, + TIMEDOUT = 145, + CONNREFUSED = 146, + HOSTDOWN = 147, + HOSTUNREACH = 148, + ALREADY = 149, + INPROGRESS = 150, + STALE = 151, + CANCELED = 158, + NOMEDIUM = 159, + MEDIUMTYPE = 160, + NOKEY = 161, + KEYEXPIRED = 162, + KEYREVOKED = 163, + KEYREJECTED = 164, + OWNERDEAD = 165, + NOTRECOVERABLE = 166, + RFKILL = 167, + HWPOISON = 168, + DQUOT = 1133, + _, + + pub const init = errnoFromSyscall; + }, + .sparc, .sparcel, .sparc64 => enum(u16) { + /// No error occurred. + SUCCESS = 0, + + PERM = 1, + NOENT = 2, + SRCH = 3, + INTR = 4, + IO = 5, + NXIO = 6, + @"2BIG" = 7, + NOEXEC = 8, + BADF = 9, + CHILD = 10, + /// Also used for WOULDBLOCK + AGAIN = 11, + NOMEM = 12, + ACCES = 13, + FAULT = 14, + NOTBLK = 15, + BUSY = 16, + EXIST = 17, + XDEV = 18, + NODEV = 19, + NOTDIR = 20, + ISDIR = 21, + INVAL = 22, + NFILE = 23, + MFILE = 24, + NOTTY = 25, + TXTBSY = 26, + FBIG = 27, + NOSPC = 28, + SPIPE = 29, + ROFS = 30, + MLINK = 31, + PIPE = 32, + DOM = 33, + RANGE = 34, + + INPROGRESS = 36, + ALREADY = 37, + NOTSOCK = 38, + DESTADDRREQ = 39, + MSGSIZE = 40, + PROTOTYPE = 41, + NOPROTOOPT = 42, + PROTONOSUPPORT = 43, + SOCKTNOSUPPORT = 44, + /// Also used for NOTSUP + OPNOTSUPP = 45, + PFNOSUPPORT = 46, + AFNOSUPPORT = 47, + ADDRINUSE = 48, + ADDRNOTAVAIL = 49, + NETDOWN = 50, + NETUNREACH = 51, + NETRESET = 52, + CONNABORTED = 53, + CONNRESET = 54, + NOBUFS = 55, + ISCONN = 56, + NOTCONN = 57, + SHUTDOWN = 58, + TOOMANYREFS = 59, + TIMEDOUT = 60, + CONNREFUSED = 61, + LOOP = 62, + NAMETOOLONG = 63, + HOSTDOWN = 64, + HOSTUNREACH = 65, + NOTEMPTY = 66, + PROCLIM = 67, + USERS = 68, + DQUOT = 69, + STALE = 70, + REMOTE = 71, + NOSTR = 72, + TIME = 73, + NOSR = 74, + NOMSG = 75, + BADMSG = 76, + IDRM = 77, + DEADLK = 78, + NOLCK = 79, + NONET = 80, + RREMOTE = 81, + NOLINK = 82, + ADV = 83, + SRMNT = 84, + COMM = 85, + PROTO = 86, + MULTIHOP = 87, + DOTDOT = 88, + REMCHG = 89, + NOSYS = 90, + STRPIPE = 91, + OVERFLOW = 92, + BADFD = 93, + CHRNG = 94, + L2NSYNC = 95, + L3HLT = 96, + L3RST = 97, + LNRNG = 98, + UNATCH = 99, + NOCSI = 100, + L2HLT = 101, + BADE = 102, + BADR = 103, + XFULL = 104, + NOANO = 105, + BADRQC = 106, + BADSLT = 107, + DEADLOCK = 108, + BFONT = 109, + LIBEXEC = 110, + NODATA = 111, + LIBBAD = 112, + NOPKG = 113, + LIBACC = 114, + NOTUNIQ = 115, + RESTART = 116, + UCLEAN = 117, + NOTNAM = 118, + NAVAIL = 119, + ISNAM = 120, + REMOTEIO = 121, + ILSEQ = 122, + LIBMAX = 123, + LIBSCN = 124, + NOMEDIUM = 125, + MEDIUMTYPE = 126, + CANCELED = 127, + NOKEY = 128, + KEYEXPIRED = 129, + KEYREVOKED = 130, + KEYREJECTED = 131, + OWNERDEAD = 132, + NOTRECOVERABLE = 133, + RFKILL = 134, + HWPOISON = 135, + _, + + pub const init = errnoFromSyscall; + }, + else => enum(u16) { + /// No error occurred. + /// Same code used for `NSROK`. + SUCCESS = 0, + /// Operation not permitted + PERM = 1, + /// No such file or directory + NOENT = 2, + /// No such process + SRCH = 3, + /// Interrupted system call + INTR = 4, + /// I/O error + IO = 5, + /// No such device or address + NXIO = 6, + /// Arg list too long + @"2BIG" = 7, + /// Exec format error + NOEXEC = 8, + /// Bad file number + BADF = 9, + /// No child processes + CHILD = 10, + /// Try again + /// Also means: WOULDBLOCK: operation would block + AGAIN = 11, + /// Out of memory + NOMEM = 12, + /// Permission denied + ACCES = 13, + /// Bad address + FAULT = 14, + /// Block device required + NOTBLK = 15, + /// Device or resource busy + BUSY = 16, + /// File exists + EXIST = 17, + /// Cross-device link + XDEV = 18, + /// No such device + NODEV = 19, + /// Not a directory + NOTDIR = 20, + /// Is a directory + ISDIR = 21, + /// Invalid argument + INVAL = 22, + /// File table overflow + NFILE = 23, + /// Too many open files + MFILE = 24, + /// Not a typewriter + NOTTY = 25, + /// Text file busy + TXTBSY = 26, + /// File too large + FBIG = 27, + /// No space left on device + NOSPC = 28, + /// Illegal seek + SPIPE = 29, + /// Read-only file system + ROFS = 30, + /// Too many links + MLINK = 31, + /// Broken pipe + PIPE = 32, + /// Math argument out of domain of func + DOM = 33, + /// Math result not representable + RANGE = 34, + /// Resource deadlock would occur + DEADLK = 35, + /// File name too long + NAMETOOLONG = 36, + /// No record locks available + NOLCK = 37, + /// Function not implemented + NOSYS = 38, + /// Directory not empty + NOTEMPTY = 39, + /// Too many symbolic links encountered + LOOP = 40, + /// No message of desired type + NOMSG = 42, + /// Identifier removed + IDRM = 43, + /// Channel number out of range + CHRNG = 44, + /// Level 2 not synchronized + L2NSYNC = 45, + /// Level 3 halted + L3HLT = 46, + /// Level 3 reset + L3RST = 47, + /// Link number out of range + LNRNG = 48, + /// Protocol driver not attached + UNATCH = 49, + /// No CSI structure available + NOCSI = 50, + /// Level 2 halted + L2HLT = 51, + /// Invalid exchange + BADE = 52, + /// Invalid request descriptor + BADR = 53, + /// Exchange full + XFULL = 54, + /// No anode + NOANO = 55, + /// Invalid request code + BADRQC = 56, + /// Invalid slot + BADSLT = 57, + /// Bad font file format + BFONT = 59, + /// Device not a stream + NOSTR = 60, + /// No data available + NODATA = 61, + /// Timer expired + TIME = 62, + /// Out of streams resources + NOSR = 63, + /// Machine is not on the network + NONET = 64, + /// Package not installed + NOPKG = 65, + /// Object is remote + REMOTE = 66, + /// Link has been severed + NOLINK = 67, + /// Advertise error + ADV = 68, + /// Srmount error + SRMNT = 69, + /// Communication error on send + COMM = 70, + /// Protocol error + PROTO = 71, + /// Multihop attempted + MULTIHOP = 72, + /// RFS specific error + DOTDOT = 73, + /// Not a data message + BADMSG = 74, + /// Value too large for defined data type + OVERFLOW = 75, + /// Name not unique on network + NOTUNIQ = 76, + /// File descriptor in bad state + BADFD = 77, + /// Remote address changed + REMCHG = 78, + /// Can not access a needed shared library + LIBACC = 79, + /// Accessing a corrupted shared library + LIBBAD = 80, + /// .lib section in a.out corrupted + LIBSCN = 81, + /// Attempting to link in too many shared libraries + LIBMAX = 82, + /// Cannot exec a shared library directly + LIBEXEC = 83, + /// Illegal byte sequence + ILSEQ = 84, + /// Interrupted system call should be restarted + RESTART = 85, + /// Streams pipe error + STRPIPE = 86, + /// Too many users + USERS = 87, + /// Socket operation on non-socket + NOTSOCK = 88, + /// Destination address required + DESTADDRREQ = 89, + /// Message too long + MSGSIZE = 90, + /// Protocol wrong type for socket + PROTOTYPE = 91, + /// Protocol not available + NOPROTOOPT = 92, + /// Protocol not supported + PROTONOSUPPORT = 93, + /// Socket type not supported + SOCKTNOSUPPORT = 94, + /// Operation not supported on transport endpoint + /// This code also means `NOTSUP`. + OPNOTSUPP = 95, + /// Protocol family not supported + PFNOSUPPORT = 96, + /// Address family not supported by protocol + AFNOSUPPORT = 97, + /// Address already in use + ADDRINUSE = 98, + /// Cannot assign requested address + ADDRNOTAVAIL = 99, + /// Network is down + NETDOWN = 100, + /// Network is unreachable + NETUNREACH = 101, + /// Network dropped connection because of reset + NETRESET = 102, + /// Software caused connection abort + CONNABORTED = 103, + /// Connection reset by peer + CONNRESET = 104, + /// No buffer space available + NOBUFS = 105, + /// Transport endpoint is already connected + ISCONN = 106, + /// Transport endpoint is not connected + NOTCONN = 107, + /// Cannot send after transport endpoint shutdown + SHUTDOWN = 108, + /// Too many references: cannot splice + TOOMANYREFS = 109, + /// Connection timed out + TIMEDOUT = 110, + /// Connection refused + CONNREFUSED = 111, + /// Host is down + HOSTDOWN = 112, + /// No route to host + HOSTUNREACH = 113, + /// Operation already in progress + ALREADY = 114, + /// Operation now in progress + INPROGRESS = 115, + /// Stale NFS file handle + STALE = 116, + /// Structure needs cleaning + UCLEAN = 117, + /// Not a XENIX named type file + NOTNAM = 118, + /// No XENIX semaphores available + NAVAIL = 119, + /// Is a named type file + ISNAM = 120, + /// Remote I/O error + REMOTEIO = 121, + /// Quota exceeded + DQUOT = 122, + /// No medium found + NOMEDIUM = 123, + /// Wrong medium type + MEDIUMTYPE = 124, + /// Operation canceled + CANCELED = 125, + /// Required key not available + NOKEY = 126, + /// Key has expired + KEYEXPIRED = 127, + /// Key has been revoked + KEYREVOKED = 128, + /// Key was rejected by service + KEYREJECTED = 129, + // for robust mutexes + /// Owner died + OWNERDEAD = 130, + /// State not recoverable + NOTRECOVERABLE = 131, + /// Operation not possible due to RF-kill + RFKILL = 132, + /// Memory page has hardware error + HWPOISON = 133, + // nameserver query return codes + /// DNS server returned answer with no data + NSRNODATA = 160, + /// DNS server claims query was misformatted + NSRFORMERR = 161, + /// DNS server returned general failure + NSRSERVFAIL = 162, + /// Domain name not found + NSRNOTFOUND = 163, + /// DNS server does not implement requested operation + NSRNOTIMP = 164, + /// DNS server refused query + NSRREFUSED = 165, + /// Misformatted DNS query + NSRBADQUERY = 166, + /// Misformatted domain name + NSRBADNAME = 167, + /// Unsupported address family + NSRBADFAMILY = 168, + /// Misformatted DNS reply + NSRBADRESP = 169, + /// Could not contact DNS servers + NSRCONNREFUSED = 170, + /// Timeout while contacting DNS servers + NSRTIMEOUT = 171, + /// End of file + NSROF = 172, + /// Error reading file + NSRFILE = 173, + /// Out of memory + NSRNOMEM = 174, + /// Application terminated lookup + NSRDESTRUCTION = 175, + /// Domain name is too long + NSRQUERYDOMAINTOOLONG = 176, + /// Domain name is too long + NSRCNAMELOOP = 177, + + _, + + pub const init = errnoFromSyscall; + }, }; pub const pid_t = i32; pub const fd_t = i32; +pub const socket_t = i32; pub const uid_t = u32; pub const gid_t = u32; pub const clock_t = isize; diff --git a/lib/std/os/linux/IoUring.zig b/lib/std/os/linux/IoUring.zig index 9e9957c697..0e3c4ce338 100644 --- a/lib/std/os/linux/IoUring.zig +++ b/lib/std/os/linux/IoUring.zig @@ -4,12 +4,12 @@ const builtin = @import("builtin"); const assert = std.debug.assert; const mem = std.mem; const net = std.net; -const os = std.os; const posix = std.posix; -const linux = os.linux; +const linux = std.os.linux; const testing = std.testing; +const is_linux = builtin.os.tag == .linux; -fd: os.fd_t = -1, +fd: posix.fd_t = -1, sq: SubmissionQueue, cq: CompletionQueue, flags: u32, @@ -45,7 +45,7 @@ pub fn init_params(entries: u16, p: *linux.io_uring_params) !IoUring { assert(p.resv[2] == 0); const res = linux.io_uring_setup(entries, p); - switch (linux.getErrno(res)) { + switch (linux.E.init(res)) { .SUCCESS => {}, .FAULT => return error.ParamsOutsideAccessibleAddressSpace, // The resv array contains non-zero data, p.flags contains an unsupported flag, @@ -59,11 +59,11 @@ pub fn init_params(entries: u16, p: *linux.io_uring_params) !IoUring { // or a container seccomp policy prohibits io_uring syscalls: .PERM => return error.PermissionDenied, .NOSYS => return error.SystemOutdated, - else => |errno| return os.unexpectedErrno(errno), + else => |errno| return posix.unexpectedErrno(errno), } - const fd = @as(os.fd_t, @intCast(res)); + const fd = @as(posix.fd_t, @intCast(res)); assert(fd >= 0); - errdefer os.close(fd); + errdefer posix.close(fd); // Kernel versions 5.4 and up use only one mmap() for the submission and completion queues. // This is not an optional feature for us... if the kernel does it, we have to do it. @@ -121,7 +121,7 @@ pub fn deinit(self: *IoUring) void { // The mmaps depend on the fd, so the order of these calls is important: self.cq.deinit(); self.sq.deinit(); - os.close(self.fd); + posix.close(self.fd); self.fd = -1; } @@ -174,7 +174,7 @@ pub fn submit_and_wait(self: *IoUring, wait_nr: u32) !u32 { pub fn enter(self: *IoUring, to_submit: u32, min_complete: u32, flags: u32) !u32 { assert(self.fd >= 0); const res = linux.io_uring_enter(self.fd, to_submit, min_complete, flags, null); - switch (linux.getErrno(res)) { + switch (linux.E.init(res)) { .SUCCESS => {}, // The kernel was unable to allocate memory or ran out of resources for the request. // The application should wait for some completions and try again: @@ -200,7 +200,7 @@ pub fn enter(self: *IoUring, to_submit: u32, min_complete: u32, flags: u32) !u32 // The operation was interrupted by a delivery of a signal before it could complete. // This can happen while waiting for events with IORING_ENTER_GETEVENTS: .INTR => return error.SignalInterrupt, - else => |errno| return os.unexpectedErrno(errno), + else => |errno| return posix.unexpectedErrno(errno), } return @as(u32, @intCast(res)); } @@ -344,7 +344,7 @@ pub fn cq_advance(self: *IoUring, count: u32) void { /// apply to the write, since the fsync may complete before the write is issued to the disk. /// You should preferably use `link_with_next_sqe()` on a write's SQE to link it with an fsync, /// or else insert a full write barrier using `drain_previous_sqes()` when queueing an fsync. -pub fn fsync(self: *IoUring, user_data: u64, fd: os.fd_t, flags: u32) !*linux.io_uring_sqe { +pub fn fsync(self: *IoUring, user_data: u64, fd: posix.fd_t, flags: u32) !*linux.io_uring_sqe { const sqe = try self.get_sqe(); sqe.prep_fsync(fd, flags); sqe.user_data = user_data; @@ -369,7 +369,7 @@ pub const ReadBuffer = union(enum) { buffer: []u8, /// io_uring will read directly into these buffers using readv. - iovecs: []const os.iovec, + iovecs: []const posix.iovec, /// io_uring will select a buffer that has previously been provided with `provide_buffers`. /// The buffer group reference by `group_id` must contain at least one buffer for the read to work. @@ -389,7 +389,7 @@ pub const ReadBuffer = union(enum) { pub fn read( self: *IoUring, user_data: u64, - fd: os.fd_t, + fd: posix.fd_t, buffer: ReadBuffer, offset: u64, ) !*linux.io_uring_sqe { @@ -412,7 +412,7 @@ pub fn read( pub fn write( self: *IoUring, user_data: u64, - fd: os.fd_t, + fd: posix.fd_t, buffer: []const u8, offset: u64, ) !*linux.io_uring_sqe { @@ -436,7 +436,7 @@ pub fn write( /// See https://github.com/axboe/liburing/issues/291 /// /// Returns a pointer to the SQE so that you can further modify the SQE for advanced use cases. -pub fn splice(self: *IoUring, user_data: u64, fd_in: os.fd_t, off_in: u64, fd_out: os.fd_t, off_out: u64, len: usize) !*linux.io_uring_sqe { +pub fn splice(self: *IoUring, user_data: u64, fd_in: posix.fd_t, off_in: u64, fd_out: posix.fd_t, off_out: u64, len: usize) !*linux.io_uring_sqe { const sqe = try self.get_sqe(); sqe.prep_splice(fd_in, off_in, fd_out, off_out, len); sqe.user_data = user_data; @@ -451,8 +451,8 @@ pub fn splice(self: *IoUring, user_data: u64, fd_in: os.fd_t, off_in: u64, fd_ou pub fn read_fixed( self: *IoUring, user_data: u64, - fd: os.fd_t, - buffer: *os.iovec, + fd: posix.fd_t, + buffer: *posix.iovec, offset: u64, buffer_index: u16, ) !*linux.io_uring_sqe { @@ -469,8 +469,8 @@ pub fn read_fixed( pub fn writev( self: *IoUring, user_data: u64, - fd: os.fd_t, - iovecs: []const os.iovec_const, + fd: posix.fd_t, + iovecs: []const posix.iovec_const, offset: u64, ) !*linux.io_uring_sqe { const sqe = try self.get_sqe(); @@ -487,8 +487,8 @@ pub fn writev( pub fn write_fixed( self: *IoUring, user_data: u64, - fd: os.fd_t, - buffer: *os.iovec, + fd: posix.fd_t, + buffer: *posix.iovec, offset: u64, buffer_index: u16, ) !*linux.io_uring_sqe { @@ -504,9 +504,9 @@ pub fn write_fixed( pub fn accept( self: *IoUring, user_data: u64, - fd: os.fd_t, - addr: ?*os.sockaddr, - addrlen: ?*os.socklen_t, + fd: posix.fd_t, + addr: ?*posix.sockaddr, + addrlen: ?*posix.socklen_t, flags: u32, ) !*linux.io_uring_sqe { const sqe = try self.get_sqe(); @@ -526,9 +526,9 @@ pub fn accept( pub fn accept_multishot( self: *IoUring, user_data: u64, - fd: os.fd_t, - addr: ?*os.sockaddr, - addrlen: ?*os.socklen_t, + fd: posix.fd_t, + addr: ?*posix.sockaddr, + addrlen: ?*posix.socklen_t, flags: u32, ) !*linux.io_uring_sqe { const sqe = try self.get_sqe(); @@ -551,9 +551,9 @@ pub fn accept_multishot( pub fn accept_direct( self: *IoUring, user_data: u64, - fd: os.fd_t, - addr: ?*os.sockaddr, - addrlen: ?*os.socklen_t, + fd: posix.fd_t, + addr: ?*posix.sockaddr, + addrlen: ?*posix.socklen_t, flags: u32, ) !*linux.io_uring_sqe { const sqe = try self.get_sqe(); @@ -567,9 +567,9 @@ pub fn accept_direct( pub fn accept_multishot_direct( self: *IoUring, user_data: u64, - fd: os.fd_t, - addr: ?*os.sockaddr, - addrlen: ?*os.socklen_t, + fd: posix.fd_t, + addr: ?*posix.sockaddr, + addrlen: ?*posix.socklen_t, flags: u32, ) !*linux.io_uring_sqe { const sqe = try self.get_sqe(); @@ -583,9 +583,9 @@ pub fn accept_multishot_direct( pub fn connect( self: *IoUring, user_data: u64, - fd: os.fd_t, - addr: *const os.sockaddr, - addrlen: os.socklen_t, + fd: posix.fd_t, + addr: *const posix.sockaddr, + addrlen: posix.socklen_t, ) !*linux.io_uring_sqe { const sqe = try self.get_sqe(); sqe.prep_connect(fd, addr, addrlen); @@ -598,8 +598,8 @@ pub fn connect( pub fn epoll_ctl( self: *IoUring, user_data: u64, - epfd: os.fd_t, - fd: os.fd_t, + epfd: posix.fd_t, + fd: posix.fd_t, op: u32, ev: ?*linux.epoll_event, ) !*linux.io_uring_sqe { @@ -629,7 +629,7 @@ pub const RecvBuffer = union(enum) { pub fn recv( self: *IoUring, user_data: u64, - fd: os.fd_t, + fd: posix.fd_t, buffer: RecvBuffer, flags: u32, ) !*linux.io_uring_sqe { @@ -653,7 +653,7 @@ pub fn recv( pub fn send( self: *IoUring, user_data: u64, - fd: os.fd_t, + fd: posix.fd_t, buffer: []const u8, flags: u32, ) !*linux.io_uring_sqe { @@ -681,7 +681,7 @@ pub fn send( pub fn send_zc( self: *IoUring, user_data: u64, - fd: os.fd_t, + fd: posix.fd_t, buffer: []const u8, send_flags: u32, zc_flags: u16, @@ -698,7 +698,7 @@ pub fn send_zc( pub fn send_zc_fixed( self: *IoUring, user_data: u64, - fd: os.fd_t, + fd: posix.fd_t, buffer: []const u8, send_flags: u32, zc_flags: u16, @@ -716,8 +716,8 @@ pub fn send_zc_fixed( pub fn recvmsg( self: *IoUring, user_data: u64, - fd: os.fd_t, - msg: *os.msghdr, + fd: posix.fd_t, + msg: *posix.msghdr, flags: u32, ) !*linux.io_uring_sqe { const sqe = try self.get_sqe(); @@ -732,8 +732,8 @@ pub fn recvmsg( pub fn sendmsg( self: *IoUring, user_data: u64, - fd: os.fd_t, - msg: *const os.msghdr_const, + fd: posix.fd_t, + msg: *const posix.msghdr_const, flags: u32, ) !*linux.io_uring_sqe { const sqe = try self.get_sqe(); @@ -748,8 +748,8 @@ pub fn sendmsg( pub fn sendmsg_zc( self: *IoUring, user_data: u64, - fd: os.fd_t, - msg: *const os.msghdr_const, + fd: posix.fd_t, + msg: *const posix.msghdr_const, flags: u32, ) !*linux.io_uring_sqe { const sqe = try self.get_sqe(); @@ -764,10 +764,10 @@ pub fn sendmsg_zc( pub fn openat( self: *IoUring, user_data: u64, - fd: os.fd_t, + fd: posix.fd_t, path: [*:0]const u8, flags: linux.O, - mode: os.mode_t, + mode: posix.mode_t, ) !*linux.io_uring_sqe { const sqe = try self.get_sqe(); sqe.prep_openat(fd, path, flags, mode); @@ -789,10 +789,10 @@ pub fn openat( pub fn openat_direct( self: *IoUring, user_data: u64, - fd: os.fd_t, + fd: posix.fd_t, path: [*:0]const u8, flags: linux.O, - mode: os.mode_t, + mode: posix.mode_t, file_index: u32, ) !*linux.io_uring_sqe { const sqe = try self.get_sqe(); @@ -804,7 +804,7 @@ pub fn openat_direct( /// Queues (but does not submit) an SQE to perform a `close(2)`. /// Returns a pointer to the SQE. /// Available since 5.6. -pub fn close(self: *IoUring, user_data: u64, fd: os.fd_t) !*linux.io_uring_sqe { +pub fn close(self: *IoUring, user_data: u64, fd: posix.fd_t) !*linux.io_uring_sqe { const sqe = try self.get_sqe(); sqe.prep_close(fd); sqe.user_data = user_data; @@ -836,7 +836,7 @@ pub fn close_direct(self: *IoUring, user_data: u64, file_index: u32) !*linux.io_ pub fn timeout( self: *IoUring, user_data: u64, - ts: *const os.linux.kernel_timespec, + ts: *const linux.kernel_timespec, count: u32, flags: u32, ) !*linux.io_uring_sqe { @@ -885,7 +885,7 @@ pub fn timeout_remove( pub fn link_timeout( self: *IoUring, user_data: u64, - ts: *const os.linux.kernel_timespec, + ts: *const linux.kernel_timespec, flags: u32, ) !*linux.io_uring_sqe { const sqe = try self.get_sqe(); @@ -899,7 +899,7 @@ pub fn link_timeout( pub fn poll_add( self: *IoUring, user_data: u64, - fd: os.fd_t, + fd: posix.fd_t, poll_mask: u32, ) !*linux.io_uring_sqe { const sqe = try self.get_sqe(); @@ -942,7 +942,7 @@ pub fn poll_update( pub fn fallocate( self: *IoUring, user_data: u64, - fd: os.fd_t, + fd: posix.fd_t, mode: i32, offset: u64, len: u64, @@ -958,7 +958,7 @@ pub fn fallocate( pub fn statx( self: *IoUring, user_data: u64, - fd: os.fd_t, + fd: posix.fd_t, path: [:0]const u8, flags: u32, mask: u32, @@ -997,7 +997,7 @@ pub fn cancel( pub fn shutdown( self: *IoUring, user_data: u64, - sockfd: os.socket_t, + sockfd: posix.socket_t, how: u32, ) !*linux.io_uring_sqe { const sqe = try self.get_sqe(); @@ -1011,9 +1011,9 @@ pub fn shutdown( pub fn renameat( self: *IoUring, user_data: u64, - old_dir_fd: os.fd_t, + old_dir_fd: posix.fd_t, old_path: [*:0]const u8, - new_dir_fd: os.fd_t, + new_dir_fd: posix.fd_t, new_path: [*:0]const u8, flags: u32, ) !*linux.io_uring_sqe { @@ -1028,7 +1028,7 @@ pub fn renameat( pub fn unlinkat( self: *IoUring, user_data: u64, - dir_fd: os.fd_t, + dir_fd: posix.fd_t, path: [*:0]const u8, flags: u32, ) !*linux.io_uring_sqe { @@ -1043,9 +1043,9 @@ pub fn unlinkat( pub fn mkdirat( self: *IoUring, user_data: u64, - dir_fd: os.fd_t, + dir_fd: posix.fd_t, path: [*:0]const u8, - mode: os.mode_t, + mode: posix.mode_t, ) !*linux.io_uring_sqe { const sqe = try self.get_sqe(); sqe.prep_mkdirat(dir_fd, path, mode); @@ -1059,7 +1059,7 @@ pub fn symlinkat( self: *IoUring, user_data: u64, target: [*:0]const u8, - new_dir_fd: os.fd_t, + new_dir_fd: posix.fd_t, link_path: [*:0]const u8, ) !*linux.io_uring_sqe { const sqe = try self.get_sqe(); @@ -1073,9 +1073,9 @@ pub fn symlinkat( pub fn linkat( self: *IoUring, user_data: u64, - old_dir_fd: os.fd_t, + old_dir_fd: posix.fd_t, old_path: [*:0]const u8, - new_dir_fd: os.fd_t, + new_dir_fd: posix.fd_t, new_path: [*:0]const u8, flags: u32, ) !*linux.io_uring_sqe { @@ -1147,7 +1147,7 @@ pub fn waitid( /// Registering file descriptors will wait for the ring to idle. /// Files are automatically unregistered by the kernel when the ring is torn down. /// An application need unregister only if it wants to register a new array of file descriptors. -pub fn register_files(self: *IoUring, fds: []const os.fd_t) !void { +pub fn register_files(self: *IoUring, fds: []const posix.fd_t) !void { assert(self.fd >= 0); const res = linux.io_uring_register( self.fd, @@ -1166,7 +1166,7 @@ pub fn register_files(self: *IoUring, fds: []const os.fd_t) !void { /// * removing an existing entry (set the fd to -1) /// * replacing an existing entry with a new fd /// Adding new file descriptors must be done with `register_files`. -pub fn register_files_update(self: *IoUring, offset: u32, fds: []const os.fd_t) !void { +pub fn register_files_update(self: *IoUring, offset: u32, fds: []const posix.fd_t) !void { assert(self.fd >= 0); const FilesUpdate = extern struct { @@ -1192,7 +1192,7 @@ pub fn register_files_update(self: *IoUring, offset: u32, fds: []const os.fd_t) /// Registers the file descriptor for an eventfd that will be notified of completion events on /// an io_uring instance. /// Only a single a eventfd can be registered at any given point in time. -pub fn register_eventfd(self: *IoUring, fd: os.fd_t) !void { +pub fn register_eventfd(self: *IoUring, fd: posix.fd_t) !void { assert(self.fd >= 0); const res = linux.io_uring_register( self.fd, @@ -1207,7 +1207,7 @@ pub fn register_eventfd(self: *IoUring, fd: os.fd_t) !void { /// an io_uring instance. Notifications are only posted for events that complete in an async manner. /// This means that events that complete inline while being submitted do not trigger a notification event. /// Only a single eventfd can be registered at any given point in time. -pub fn register_eventfd_async(self: *IoUring, fd: os.fd_t) !void { +pub fn register_eventfd_async(self: *IoUring, fd: posix.fd_t) !void { assert(self.fd >= 0); const res = linux.io_uring_register( self.fd, @@ -1231,7 +1231,7 @@ pub fn unregister_eventfd(self: *IoUring) !void { } /// Registers an array of buffers for use with `read_fixed` and `write_fixed`. -pub fn register_buffers(self: *IoUring, buffers: []const os.iovec) !void { +pub fn register_buffers(self: *IoUring, buffers: []const posix.iovec) !void { assert(self.fd >= 0); const res = linux.io_uring_register( self.fd, @@ -1246,15 +1246,15 @@ pub fn register_buffers(self: *IoUring, buffers: []const os.iovec) !void { pub fn unregister_buffers(self: *IoUring) !void { assert(self.fd >= 0); const res = linux.io_uring_register(self.fd, .UNREGISTER_BUFFERS, null, 0); - switch (linux.getErrno(res)) { + switch (linux.E.init(res)) { .SUCCESS => {}, .NXIO => return error.BuffersNotRegistered, - else => |errno| return os.unexpectedErrno(errno), + else => |errno| return posix.unexpectedErrno(errno), } } fn handle_registration_result(res: usize) !void { - switch (linux.getErrno(res)) { + switch (linux.E.init(res)) { .SUCCESS => {}, // One or more fds in the array are invalid, or the kernel does not support sparse sets: .BADF => return error.FileDescriptorInvalid, @@ -1271,7 +1271,7 @@ fn handle_registration_result(res: usize) !void { .NOMEM => return error.SystemResources, // Attempt to register files on a ring already registering files or being torn down: .NXIO => return error.RingShuttingDownOrAlreadyRegisteringFiles, - else => |errno| return os.unexpectedErrno(errno), + else => |errno| return posix.unexpectedErrno(errno), } } @@ -1279,10 +1279,10 @@ fn handle_registration_result(res: usize) !void { pub fn unregister_files(self: *IoUring) !void { assert(self.fd >= 0); const res = linux.io_uring_register(self.fd, .UNREGISTER_FILES, null, 0); - switch (linux.getErrno(res)) { + switch (linux.E.init(res)) { .SUCCESS => {}, .NXIO => return error.FilesNotRegistered, - else => |errno| return os.unexpectedErrno(errno), + else => |errno| return posix.unexpectedErrno(errno), } } @@ -1355,36 +1355,36 @@ pub const SubmissionQueue = struct { sqe_head: u32 = 0, sqe_tail: u32 = 0, - pub fn init(fd: os.fd_t, p: linux.io_uring_params) !SubmissionQueue { + pub fn init(fd: posix.fd_t, p: linux.io_uring_params) !SubmissionQueue { assert(fd >= 0); assert((p.features & linux.IORING_FEAT_SINGLE_MMAP) != 0); const size = @max( p.sq_off.array + p.sq_entries * @sizeOf(u32), p.cq_off.cqes + p.cq_entries * @sizeOf(linux.io_uring_cqe), ); - const mmap = try os.mmap( + const mmap = try posix.mmap( null, size, - os.PROT.READ | os.PROT.WRITE, + posix.PROT.READ | posix.PROT.WRITE, .{ .TYPE = .SHARED, .POPULATE = true }, fd, linux.IORING_OFF_SQ_RING, ); - errdefer os.munmap(mmap); + errdefer posix.munmap(mmap); assert(mmap.len == size); // The motivation for the `sqes` and `array` indirection is to make it possible for the // application to preallocate static linux.io_uring_sqe entries and then replay them when needed. const size_sqes = p.sq_entries * @sizeOf(linux.io_uring_sqe); - const mmap_sqes = try os.mmap( + const mmap_sqes = try posix.mmap( null, size_sqes, - os.PROT.READ | os.PROT.WRITE, + posix.PROT.READ | posix.PROT.WRITE, .{ .TYPE = .SHARED, .POPULATE = true }, fd, linux.IORING_OFF_SQES, ); - errdefer os.munmap(mmap_sqes); + errdefer posix.munmap(mmap_sqes); assert(mmap_sqes.len == size_sqes); const array: [*]u32 = @ptrCast(@alignCast(&mmap[p.sq_off.array])); @@ -1406,8 +1406,8 @@ pub const SubmissionQueue = struct { } pub fn deinit(self: *SubmissionQueue) void { - os.munmap(self.mmap_sqes); - os.munmap(self.mmap); + posix.munmap(self.mmap_sqes); + posix.munmap(self.mmap); } }; @@ -1418,7 +1418,7 @@ pub const CompletionQueue = struct { overflow: *u32, cqes: []linux.io_uring_cqe, - pub fn init(fd: os.fd_t, p: linux.io_uring_params, sq: SubmissionQueue) !CompletionQueue { + pub fn init(fd: posix.fd_t, p: linux.io_uring_params, sq: SubmissionQueue) !CompletionQueue { assert(fd >= 0); assert((p.features & linux.IORING_FEAT_SINGLE_MMAP) != 0); const mmap = sq.mmap; @@ -1506,7 +1506,7 @@ pub const BufferGroup = struct { } // Prepare recv operation which will select buffer from this group. - pub fn recv(self: *BufferGroup, user_data: u64, fd: os.fd_t, flags: u32) !*linux.io_uring_sqe { + pub fn recv(self: *BufferGroup, user_data: u64, fd: posix.fd_t, flags: u32) !*linux.io_uring_sqe { var sqe = try self.ring.get_sqe(); sqe.prep_rw(.RECV, fd, 0, 0, 0); sqe.rw_flags = flags; @@ -1517,7 +1517,7 @@ pub const BufferGroup = struct { } // Prepare multishot recv operation which will select buffer from this group. - pub fn recv_multishot(self: *BufferGroup, user_data: u64, fd: os.fd_t, flags: u32) !*linux.io_uring_sqe { + pub fn recv_multishot(self: *BufferGroup, user_data: u64, fd: posix.fd_t, flags: u32) !*linux.io_uring_sqe { var sqe = try self.recv(user_data, fd, flags); sqe.ioprio |= linux.IORING_RECV_MULTISHOT; return sqe; @@ -1559,20 +1559,20 @@ pub const BufferGroup = struct { /// `fd` is IO_Uring.fd for which the provided buffer ring is being registered. /// `entries` is the number of entries requested in the buffer ring, must be power of 2. /// `group_id` is the chosen buffer group ID, unique in IO_Uring. -pub fn setup_buf_ring(fd: os.fd_t, entries: u16, group_id: u16) !*align(mem.page_size) linux.io_uring_buf_ring { +pub fn setup_buf_ring(fd: posix.fd_t, entries: u16, group_id: u16) !*align(mem.page_size) linux.io_uring_buf_ring { if (entries == 0 or entries > 1 << 15) return error.EntriesNotInRange; if (!std.math.isPowerOfTwo(entries)) return error.EntriesNotPowerOfTwo; const mmap_size = entries * @sizeOf(linux.io_uring_buf); - const mmap = try os.mmap( + const mmap = try posix.mmap( null, mmap_size, - os.PROT.READ | os.PROT.WRITE, + posix.PROT.READ | posix.PROT.WRITE, .{ .TYPE = .PRIVATE, .ANONYMOUS = true }, -1, 0, ); - errdefer os.munmap(mmap); + errdefer posix.munmap(mmap); assert(mmap.len == mmap_size); const br: *align(mem.page_size) linux.io_uring_buf_ring = @ptrCast(mmap.ptr); @@ -1580,7 +1580,7 @@ pub fn setup_buf_ring(fd: os.fd_t, entries: u16, group_id: u16) !*align(mem.page return br; } -fn register_buf_ring(fd: os.fd_t, addr: u64, entries: u32, group_id: u16) !void { +fn register_buf_ring(fd: posix.fd_t, addr: u64, entries: u32, group_id: u16) !void { var reg = mem.zeroInit(linux.io_uring_buf_reg, .{ .ring_addr = addr, .ring_entries = entries, @@ -1595,7 +1595,7 @@ fn register_buf_ring(fd: os.fd_t, addr: u64, entries: u32, group_id: u16) !void try handle_register_buf_ring_result(res); } -fn unregister_buf_ring(fd: os.fd_t, group_id: u16) !void { +fn unregister_buf_ring(fd: posix.fd_t, group_id: u16) !void { var reg = mem.zeroInit(linux.io_uring_buf_reg, .{ .bgid = group_id, }); @@ -1609,20 +1609,20 @@ fn unregister_buf_ring(fd: os.fd_t, group_id: u16) !void { } fn handle_register_buf_ring_result(res: usize) !void { - switch (linux.getErrno(res)) { + switch (linux.E.init(res)) { .SUCCESS => {}, .INVAL => return error.ArgumentsInvalid, - else => |errno| return os.unexpectedErrno(errno), + else => |errno| return posix.unexpectedErrno(errno), } } // Unregisters a previously registered shared buffer ring, returned from io_uring_setup_buf_ring. -pub fn free_buf_ring(fd: os.fd_t, br: *align(mem.page_size) linux.io_uring_buf_ring, entries: u32, group_id: u16) void { +pub fn free_buf_ring(fd: posix.fd_t, br: *align(mem.page_size) linux.io_uring_buf_ring, entries: u32, group_id: u16) void { unregister_buf_ring(fd, group_id) catch {}; var mmap: []align(mem.page_size) u8 = undefined; mmap.ptr = @ptrCast(br); mmap.len = entries * @sizeOf(linux.io_uring_buf); - os.munmap(mmap); + posix.munmap(mmap); } /// Initialises `br` so that it is ready to be used. @@ -1664,7 +1664,7 @@ pub fn buf_ring_advance(br: *linux.io_uring_buf_ring, count: u16) void { } test "structs/offsets/entries" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; try testing.expectEqual(@as(usize, 120), @sizeOf(linux.io_uring_params)); try testing.expectEqual(@as(usize, 64), @sizeOf(linux.io_uring_sqe)); @@ -1679,7 +1679,7 @@ test "structs/offsets/entries" { } test "nop" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(1, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -1688,7 +1688,7 @@ test "nop" { }; defer { ring.deinit(); - testing.expectEqual(@as(os.fd_t, -1), ring.fd) catch @panic("test failed"); + testing.expectEqual(@as(posix.fd_t, -1), ring.fd) catch @panic("test failed"); } const sqe = try ring.nop(0xaaaaaaaa); @@ -1746,7 +1746,7 @@ test "nop" { } test "readv" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(1, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -1755,8 +1755,8 @@ test "readv" { }; defer ring.deinit(); - const fd = try os.openZ("/dev/zero", .{ .ACCMODE = .RDONLY, .CLOEXEC = true }, 0); - defer os.close(fd); + const fd = try posix.openZ("/dev/zero", .{ .ACCMODE = .RDONLY, .CLOEXEC = true }, 0); + defer posix.close(fd); // Linux Kernel 5.4 supports IORING_REGISTER_FILES but not sparse fd sets (i.e. an fd of -1). // Linux Kernel 5.5 adds support for sparse fd sets. @@ -1764,13 +1764,13 @@ test "readv" { // https://github.com/torvalds/linux/blob/v5.4/fs/io_uring.c#L3119-L3124 vs // https://github.com/torvalds/linux/blob/v5.8/fs/io_uring.c#L6687-L6691 // We therefore avoid stressing sparse fd sets here: - var registered_fds = [_]os.fd_t{0} ** 1; + var registered_fds = [_]posix.fd_t{0} ** 1; const fd_index = 0; registered_fds[fd_index] = fd; try ring.register_files(registered_fds[0..]); var buffer = [_]u8{42} ** 128; - var iovecs = [_]os.iovec{os.iovec{ .iov_base = &buffer, .iov_len = buffer.len }}; + var iovecs = [_]posix.iovec{posix.iovec{ .iov_base = &buffer, .iov_len = buffer.len }}; const sqe = try ring.read(0xcccccccc, fd_index, .{ .iovecs = iovecs[0..] }, 0); try testing.expectEqual(linux.IORING_OP.READV, sqe.opcode); sqe.flags |= linux.IOSQE_FIXED_FILE; @@ -1788,7 +1788,7 @@ test "readv" { } test "writev/fsync/readv" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(4, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -1806,12 +1806,12 @@ test "writev/fsync/readv" { const fd = file.handle; const buffer_write = [_]u8{42} ** 128; - const iovecs_write = [_]os.iovec_const{ - os.iovec_const{ .iov_base = &buffer_write, .iov_len = buffer_write.len }, + const iovecs_write = [_]posix.iovec_const{ + posix.iovec_const{ .iov_base = &buffer_write, .iov_len = buffer_write.len }, }; var buffer_read = [_]u8{0} ** 128; - var iovecs_read = [_]os.iovec{ - os.iovec{ .iov_base = &buffer_read, .iov_len = buffer_read.len }, + var iovecs_read = [_]posix.iovec{ + posix.iovec{ .iov_base = &buffer_read, .iov_len = buffer_read.len }, }; const sqe_writev = try ring.writev(0xdddddddd, fd, iovecs_write[0..], 17); @@ -1858,7 +1858,7 @@ test "writev/fsync/readv" { } test "write/read" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(2, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -1905,7 +1905,7 @@ test "write/read" { } test "splice/read" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(4, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -1929,7 +1929,7 @@ test "splice/read" { var buffer_read = [_]u8{98} ** 20; _ = try file_src.write(&buffer_write); - const fds = try os.pipe(); + const fds = try posix.pipe(); const pipe_offset: u64 = std.math.maxInt(u64); const sqe_splice_to_pipe = try ring.splice(0x11111111, fd_src, 0, fds[1], pipe_offset, buffer_write.len); @@ -1976,7 +1976,7 @@ test "splice/read" { } test "write_fixed/read_fixed" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(2, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -1998,7 +1998,7 @@ test "write_fixed/read_fixed" { @memset(&raw_buffers[0], 'z'); raw_buffers[0][0.."foobar".len].* = "foobar".*; - var buffers = [2]os.iovec{ + var buffers = [2]posix.iovec{ .{ .iov_base = &raw_buffers[0], .iov_len = raw_buffers[0].len }, .{ .iov_base = &raw_buffers[1], .iov_len = raw_buffers[1].len }, }; @@ -2041,7 +2041,7 @@ test "write_fixed/read_fixed" { } test "openat" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(1, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -2063,7 +2063,7 @@ test "openat" { } else @intFromPtr(path); const flags: linux.O = .{ .CLOEXEC = true, .ACCMODE = .RDWR, .CREAT = true }; - const mode: os.mode_t = 0o666; + const mode: posix.mode_t = 0o666; const sqe_openat = try ring.openat(0x33333333, tmp.dir.fd, path, flags, mode); try testing.expectEqual(linux.io_uring_sqe{ .opcode = .OPENAT, @@ -2091,11 +2091,11 @@ test "openat" { try testing.expect(cqe_openat.res > 0); try testing.expectEqual(@as(u32, 0), cqe_openat.flags); - os.close(cqe_openat.res); + posix.close(cqe_openat.res); } test "close" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(1, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -2126,7 +2126,7 @@ test "close" { } test "accept/connect/send/recv" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(16, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -2167,7 +2167,7 @@ test "accept/connect/send/recv" { } test "sendmsg/recvmsg" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(2, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -2178,24 +2178,24 @@ test "sendmsg/recvmsg" { var address_server = try net.Address.parseIp4("127.0.0.1", 0); - const server = try os.socket(address_server.any.family, os.SOCK.DGRAM, 0); - defer os.close(server); - try os.setsockopt(server, os.SOL.SOCKET, os.SO.REUSEPORT, &mem.toBytes(@as(c_int, 1))); - try os.setsockopt(server, os.SOL.SOCKET, os.SO.REUSEADDR, &mem.toBytes(@as(c_int, 1))); - try os.bind(server, &address_server.any, address_server.getOsSockLen()); + const server = try posix.socket(address_server.any.family, posix.SOCK.DGRAM, 0); + defer posix.close(server); + try posix.setsockopt(server, posix.SOL.SOCKET, posix.SO.REUSEPORT, &mem.toBytes(@as(c_int, 1))); + try posix.setsockopt(server, posix.SOL.SOCKET, posix.SO.REUSEADDR, &mem.toBytes(@as(c_int, 1))); + try posix.bind(server, &address_server.any, address_server.getOsSockLen()); // set address_server to the OS-chosen IP/port. - var slen: os.socklen_t = address_server.getOsSockLen(); - try os.getsockname(server, &address_server.any, &slen); + var slen: posix.socklen_t = address_server.getOsSockLen(); + try posix.getsockname(server, &address_server.any, &slen); - const client = try os.socket(address_server.any.family, os.SOCK.DGRAM, 0); - defer os.close(client); + const client = try posix.socket(address_server.any.family, posix.SOCK.DGRAM, 0); + defer posix.close(client); const buffer_send = [_]u8{42} ** 128; - const iovecs_send = [_]os.iovec_const{ - os.iovec_const{ .iov_base = &buffer_send, .iov_len = buffer_send.len }, + const iovecs_send = [_]posix.iovec_const{ + posix.iovec_const{ .iov_base = &buffer_send, .iov_len = buffer_send.len }, }; - const msg_send = os.msghdr_const{ + const msg_send: posix.msghdr_const = .{ .name = &address_server.any, .namelen = address_server.getOsSockLen(), .iov = &iovecs_send, @@ -2210,12 +2210,12 @@ test "sendmsg/recvmsg" { try testing.expectEqual(client, sqe_sendmsg.fd); var buffer_recv = [_]u8{0} ** 128; - var iovecs_recv = [_]os.iovec{ - os.iovec{ .iov_base = &buffer_recv, .iov_len = buffer_recv.len }, + var iovecs_recv = [_]posix.iovec{ + posix.iovec{ .iov_base = &buffer_recv, .iov_len = buffer_recv.len }, }; const addr = [_]u8{0} ** 4; var address_recv = net.Address.initIp4(addr, 0); - var msg_recv: os.msghdr = os.msghdr{ + var msg_recv: posix.msghdr = .{ .name = &address_recv.any, .namelen = address_recv.getOsSockLen(), .iov = &iovecs_recv, @@ -2254,7 +2254,7 @@ test "sendmsg/recvmsg" { } test "timeout (after a relative time)" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(1, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -2265,7 +2265,7 @@ test "timeout (after a relative time)" { const ms = 10; const margin = 5; - const ts = os.linux.kernel_timespec{ .tv_sec = 0, .tv_nsec = ms * 1000000 }; + const ts: linux.kernel_timespec = .{ .tv_sec = 0, .tv_nsec = ms * 1000000 }; const started = std.time.milliTimestamp(); const sqe = try ring.timeout(0x55555555, &ts, 0, 0); @@ -2285,7 +2285,7 @@ test "timeout (after a relative time)" { } test "timeout (after a number of completions)" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(2, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -2294,7 +2294,7 @@ test "timeout (after a number of completions)" { }; defer ring.deinit(); - const ts = os.linux.kernel_timespec{ .tv_sec = 3, .tv_nsec = 0 }; + const ts: linux.kernel_timespec = .{ .tv_sec = 3, .tv_nsec = 0 }; const count_completions: u64 = 1; const sqe_timeout = try ring.timeout(0x66666666, &ts, count_completions, 0); try testing.expectEqual(linux.IORING_OP.TIMEOUT, sqe_timeout.opcode); @@ -2318,7 +2318,7 @@ test "timeout (after a number of completions)" { } test "timeout_remove" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(2, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -2327,7 +2327,7 @@ test "timeout_remove" { }; defer ring.deinit(); - const ts = os.linux.kernel_timespec{ .tv_sec = 3, .tv_nsec = 0 }; + const ts: linux.kernel_timespec = .{ .tv_sec = 3, .tv_nsec = 0 }; const sqe_timeout = try ring.timeout(0x88888888, &ts, 0, 0); try testing.expectEqual(linux.IORING_OP.TIMEOUT, sqe_timeout.opcode); try testing.expectEqual(@as(u64, 0x88888888), sqe_timeout.user_data); @@ -2343,7 +2343,7 @@ test "timeout_remove" { // * kernel 5.10 gives user data 0x88888888 first, 0x99999999 second // * kernel 5.18 gives user data 0x99999999 first, 0x88888888 second - var cqes: [2]os.linux.io_uring_cqe = undefined; + var cqes: [2]linux.io_uring_cqe = undefined; cqes[0] = try ring.copy_cqe(); cqes[1] = try ring.copy_cqe(); @@ -2378,7 +2378,7 @@ test "timeout_remove" { } test "accept/connect/recv/link_timeout" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(16, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -2395,7 +2395,7 @@ test "accept/connect/recv/link_timeout" { const sqe_recv = try ring.recv(0xffffffff, socket_test_harness.server, .{ .buffer = buffer_recv[0..] }, 0); sqe_recv.flags |= linux.IOSQE_IO_LINK; - const ts = os.linux.kernel_timespec{ .tv_sec = 0, .tv_nsec = 1000000 }; + const ts = linux.kernel_timespec{ .tv_sec = 0, .tv_nsec = 1000000 }; _ = try ring.link_timeout(0x22222222, &ts, 0); const nr_wait = try ring.submit(); @@ -2427,7 +2427,7 @@ test "accept/connect/recv/link_timeout" { } test "fallocate" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(1, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -2473,7 +2473,7 @@ test "fallocate" { } test "statx" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(1, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -2525,12 +2525,12 @@ test "statx" { .flags = 0, }, cqe); - try testing.expect(buf.mask & os.linux.STATX_SIZE == os.linux.STATX_SIZE); + try testing.expect(buf.mask & linux.STATX_SIZE == linux.STATX_SIZE); try testing.expectEqual(@as(u64, 6), buf.size); } test "accept/connect/recv/cancel" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(16, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -2580,7 +2580,7 @@ test "accept/connect/recv/cancel" { } test "register_files_update" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(1, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -2589,10 +2589,10 @@ test "register_files_update" { }; defer ring.deinit(); - const fd = try os.openZ("/dev/zero", .{ .ACCMODE = .RDONLY, .CLOEXEC = true }, 0); - defer os.close(fd); + const fd = try posix.openZ("/dev/zero", .{ .ACCMODE = .RDONLY, .CLOEXEC = true }, 0); + defer posix.close(fd); - var registered_fds = [_]os.fd_t{0} ** 2; + var registered_fds = [_]posix.fd_t{0} ** 2; const fd_index = 0; const fd_index2 = 1; registered_fds[fd_index] = fd; @@ -2607,8 +2607,8 @@ test "register_files_update" { // Test IORING_REGISTER_FILES_UPDATE // Only available since Linux 5.5 - const fd2 = try os.openZ("/dev/zero", .{ .ACCMODE = .RDONLY, .CLOEXEC = true }, 0); - defer os.close(fd2); + const fd2 = try posix.openZ("/dev/zero", .{ .ACCMODE = .RDONLY, .CLOEXEC = true }, 0); + defer posix.close(fd2); registered_fds[fd_index] = fd2; registered_fds[fd_index2] = -1; @@ -2660,14 +2660,14 @@ test "register_files_update" { try testing.expectEqual(@as(u32, 1), try ring.submit()); const cqe = try ring.copy_cqe(); - try testing.expectEqual(os.linux.E.BADF, cqe.err()); + try testing.expectEqual(linux.E.BADF, cqe.err()); } try ring.unregister_files(); } test "shutdown" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(16, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -2680,17 +2680,17 @@ test "shutdown" { // Socket bound, expect shutdown to work { - const server = try os.socket(address.any.family, os.SOCK.STREAM | os.SOCK.CLOEXEC, 0); - defer os.close(server); - try os.setsockopt(server, os.SOL.SOCKET, os.SO.REUSEADDR, &mem.toBytes(@as(c_int, 1))); - try os.bind(server, &address.any, address.getOsSockLen()); - try os.listen(server, 1); + const server = try posix.socket(address.any.family, posix.SOCK.STREAM | posix.SOCK.CLOEXEC, 0); + defer posix.close(server); + try posix.setsockopt(server, posix.SOL.SOCKET, posix.SO.REUSEADDR, &mem.toBytes(@as(c_int, 1))); + try posix.bind(server, &address.any, address.getOsSockLen()); + try posix.listen(server, 1); // set address to the OS-chosen IP/port. - var slen: os.socklen_t = address.getOsSockLen(); - try os.getsockname(server, &address.any, &slen); + var slen: posix.socklen_t = address.getOsSockLen(); + try posix.getsockname(server, &address.any, &slen); - const shutdown_sqe = try ring.shutdown(0x445445445, server, os.linux.SHUT.RD); + const shutdown_sqe = try ring.shutdown(0x445445445, server, linux.SHUT.RD); try testing.expectEqual(linux.IORING_OP.SHUTDOWN, shutdown_sqe.opcode); try testing.expectEqual(@as(i32, server), shutdown_sqe.fd); @@ -2713,10 +2713,10 @@ test "shutdown" { // Socket not bound, expect to fail with ENOTCONN { - const server = try os.socket(address.any.family, os.SOCK.STREAM | os.SOCK.CLOEXEC, 0); - defer os.close(server); + const server = try posix.socket(address.any.family, posix.SOCK.STREAM | posix.SOCK.CLOEXEC, 0); + defer posix.close(server); - const shutdown_sqe = ring.shutdown(0x445445445, server, os.linux.SHUT.RD) catch |err| switch (err) { + const shutdown_sqe = ring.shutdown(0x445445445, server, linux.SHUT.RD) catch |err| switch (err) { else => |errno| std.debug.panic("unhandled errno: {}", .{errno}), }; try testing.expectEqual(linux.IORING_OP.SHUTDOWN, shutdown_sqe.opcode); @@ -2726,12 +2726,12 @@ test "shutdown" { const cqe = try ring.copy_cqe(); try testing.expectEqual(@as(u64, 0x445445445), cqe.user_data); - try testing.expectEqual(os.linux.E.NOTCONN, cqe.err()); + try testing.expectEqual(linux.E.NOTCONN, cqe.err()); } } test "renameat" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(1, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -2800,7 +2800,7 @@ test "renameat" { } test "unlinkat" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(1, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -2852,7 +2852,7 @@ test "unlinkat" { } test "mkdirat" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(1, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -2896,7 +2896,7 @@ test "mkdirat" { } test "symlinkat" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(1, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -2944,7 +2944,7 @@ test "symlinkat" { } test "linkat" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(1, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -3003,7 +3003,7 @@ test "linkat" { } test "provide_buffers: read" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(1, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -3012,8 +3012,8 @@ test "provide_buffers: read" { }; defer ring.deinit(); - const fd = try os.openZ("/dev/zero", .{ .ACCMODE = .RDONLY, .CLOEXEC = true }, 0); - defer os.close(fd); + const fd = try posix.openZ("/dev/zero", .{ .ACCMODE = .RDONLY, .CLOEXEC = true }, 0); + defer posix.close(fd); const group_id = 1337; const buffer_id = 0; @@ -3135,7 +3135,7 @@ test "provide_buffers: read" { } test "remove_buffers" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(1, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -3144,8 +3144,8 @@ test "remove_buffers" { }; defer ring.deinit(); - const fd = try os.openZ("/dev/zero", .{ .ACCMODE = .RDONLY, .CLOEXEC = true }, 0); - defer os.close(fd); + const fd = try posix.openZ("/dev/zero", .{ .ACCMODE = .RDONLY, .CLOEXEC = true }, 0); + defer posix.close(fd); const group_id = 1337; const buffer_id = 0; @@ -3224,7 +3224,7 @@ test "remove_buffers" { } test "provide_buffers: accept/connect/send/recv" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(16, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -3391,9 +3391,9 @@ test "provide_buffers: accept/connect/send/recv" { /// Used for testing server/client interactions. const SocketTestHarness = struct { - listener: os.socket_t, - server: os.socket_t, - client: os.socket_t, + listener: posix.socket_t, + server: posix.socket_t, + client: posix.socket_t, fn close(self: SocketTestHarness) void { posix.close(self.client); @@ -3408,12 +3408,12 @@ fn createSocketTestHarness(ring: *IoUring) !SocketTestHarness { errdefer posix.close(listener_socket); // Submit 1 accept - var accept_addr: os.sockaddr = undefined; - var accept_addr_len: os.socklen_t = @sizeOf(@TypeOf(accept_addr)); + var accept_addr: posix.sockaddr = undefined; + var accept_addr_len: posix.socklen_t = @sizeOf(@TypeOf(accept_addr)); _ = try ring.accept(0xaaaaaaaa, listener_socket, &accept_addr, &accept_addr_len, 0); // Create a TCP client socket - const client = try os.socket(address.any.family, os.SOCK.STREAM | os.SOCK.CLOEXEC, 0); + const client = try posix.socket(address.any.family, posix.SOCK.STREAM | posix.SOCK.CLOEXEC, 0); errdefer posix.close(client); _ = try ring.connect(0xcccccccc, client, &address.any, address.getOsSockLen()); @@ -3451,24 +3451,24 @@ fn createSocketTestHarness(ring: *IoUring) !SocketTestHarness { }; } -fn createListenerSocket(address: *net.Address) !os.socket_t { +fn createListenerSocket(address: *net.Address) !posix.socket_t { const kernel_backlog = 1; - const listener_socket = try os.socket(address.any.family, os.SOCK.STREAM | os.SOCK.CLOEXEC, 0); + const listener_socket = try posix.socket(address.any.family, posix.SOCK.STREAM | posix.SOCK.CLOEXEC, 0); errdefer posix.close(listener_socket); - try os.setsockopt(listener_socket, os.SOL.SOCKET, os.SO.REUSEADDR, &mem.toBytes(@as(c_int, 1))); - try os.bind(listener_socket, &address.any, address.getOsSockLen()); - try os.listen(listener_socket, kernel_backlog); + try posix.setsockopt(listener_socket, posix.SOL.SOCKET, posix.SO.REUSEADDR, &mem.toBytes(@as(c_int, 1))); + try posix.bind(listener_socket, &address.any, address.getOsSockLen()); + try posix.listen(listener_socket, kernel_backlog); // set address to the OS-chosen IP/port. - var slen: os.socklen_t = address.getOsSockLen(); - try os.getsockname(listener_socket, &address.any, &slen); + var slen: posix.socklen_t = address.getOsSockLen(); + try posix.getsockname(listener_socket, &address.any, &slen); return listener_socket; } test "accept multishot" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(16, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -3482,8 +3482,8 @@ test "accept multishot" { defer posix.close(listener_socket); // submit multishot accept operation - var addr: os.sockaddr = undefined; - var addr_len: os.socklen_t = @sizeOf(@TypeOf(addr)); + var addr: posix.sockaddr = undefined; + var addr_len: posix.socklen_t = @sizeOf(@TypeOf(addr)); const userdata: u64 = 0xaaaaaaaa; _ = try ring.accept_multishot(userdata, listener_socket, &addr, &addr_len, 0); try testing.expectEqual(@as(u32, 1), try ring.submit()); @@ -3491,9 +3491,9 @@ test "accept multishot" { var nr: usize = 4; // number of clients to connect while (nr > 0) : (nr -= 1) { // connect client - const client = try os.socket(address.any.family, os.SOCK.STREAM | os.SOCK.CLOEXEC, 0); + const client = try posix.socket(address.any.family, posix.SOCK.STREAM | posix.SOCK.CLOEXEC, 0); errdefer posix.close(client); - try os.connect(client, &address.any, address.getOsSockLen()); + try posix.connect(client, &address.any, address.getOsSockLen()); // test accept completion var cqe = try ring.copy_cqe(); @@ -3571,7 +3571,7 @@ test "accept_direct" { var address = try net.Address.parseIp4("127.0.0.1", 0); // register direct file descriptors - var registered_fds = [_]os.fd_t{-1} ** 2; + var registered_fds = [_]posix.fd_t{-1} ** 2; try ring.register_files(registered_fds[0..]); const listener_socket = try createListenerSocket(&address); @@ -3591,19 +3591,19 @@ test "accept_direct" { try testing.expectEqual(@as(u32, 1), try ring.submit()); // connect - const client = try os.socket(address.any.family, os.SOCK.STREAM | os.SOCK.CLOEXEC, 0); - try os.connect(client, &address.any, address.getOsSockLen()); + const client = try posix.socket(address.any.family, posix.SOCK.STREAM | posix.SOCK.CLOEXEC, 0); + try posix.connect(client, &address.any, address.getOsSockLen()); defer posix.close(client); // accept completion const cqe_accept = try ring.copy_cqe(); - try testing.expectEqual(os.E.SUCCESS, cqe_accept.err()); + try testing.expectEqual(posix.E.SUCCESS, cqe_accept.err()); const fd_index = cqe_accept.res; try testing.expect(fd_index < registered_fds.len); try testing.expect(cqe_accept.user_data == accept_userdata); // send data - _ = try os.send(client, buffer_send, 0); + _ = try posix.send(client, buffer_send, 0); // Example of how to use registered fd: // Submit receive to fixed file returned by accept (fd_index). @@ -3625,13 +3625,13 @@ test "accept_direct" { _ = try ring.accept_direct(accept_userdata, listener_socket, null, null, 0); try testing.expectEqual(@as(u32, 1), try ring.submit()); // connect - const client = try os.socket(address.any.family, os.SOCK.STREAM | os.SOCK.CLOEXEC, 0); - try os.connect(client, &address.any, address.getOsSockLen()); + const client = try posix.socket(address.any.family, posix.SOCK.STREAM | posix.SOCK.CLOEXEC, 0); + try posix.connect(client, &address.any, address.getOsSockLen()); defer posix.close(client); // completion with error const cqe_accept = try ring.copy_cqe(); try testing.expect(cqe_accept.user_data == accept_userdata); - try testing.expectEqual(os.E.NFILE, cqe_accept.err()); + try testing.expectEqual(posix.E.NFILE, cqe_accept.err()); } // return file descriptors to kernel try ring.register_files_update(0, registered_fds[0..]); @@ -3651,7 +3651,7 @@ test "accept_multishot_direct" { var address = try net.Address.parseIp4("127.0.0.1", 0); - var registered_fds = [_]os.fd_t{-1} ** 2; + var registered_fds = [_]posix.fd_t{-1} ** 2; try ring.register_files(registered_fds[0..]); const listener_socket = try createListenerSocket(&address); @@ -3667,8 +3667,8 @@ test "accept_multishot_direct" { for (registered_fds) |_| { // connect - const client = try os.socket(address.any.family, os.SOCK.STREAM | os.SOCK.CLOEXEC, 0); - try os.connect(client, &address.any, address.getOsSockLen()); + const client = try posix.socket(address.any.family, posix.SOCK.STREAM | posix.SOCK.CLOEXEC, 0); + try posix.connect(client, &address.any, address.getOsSockLen()); defer posix.close(client); // accept completion @@ -3682,13 +3682,13 @@ test "accept_multishot_direct" { // Multishot is terminated (more flag is not set). { // connect - const client = try os.socket(address.any.family, os.SOCK.STREAM | os.SOCK.CLOEXEC, 0); - try os.connect(client, &address.any, address.getOsSockLen()); + const client = try posix.socket(address.any.family, posix.SOCK.STREAM | posix.SOCK.CLOEXEC, 0); + try posix.connect(client, &address.any, address.getOsSockLen()); defer posix.close(client); // completion with error const cqe_accept = try ring.copy_cqe(); try testing.expect(cqe_accept.user_data == accept_userdata); - try testing.expectEqual(os.E.NFILE, cqe_accept.err()); + try testing.expectEqual(posix.E.NFILE, cqe_accept.err()); try testing.expect(cqe_accept.flags & linux.IORING_CQE_F_MORE == 0); // has more is not set } // return file descriptors to kernel @@ -3708,16 +3708,16 @@ test "socket" { defer ring.deinit(); // prepare, submit socket operation - _ = try ring.socket(0, linux.AF.INET, os.SOCK.STREAM, 0, 0); + _ = try ring.socket(0, linux.AF.INET, posix.SOCK.STREAM, 0, 0); try testing.expectEqual(@as(u32, 1), try ring.submit()); // test completion var cqe = try ring.copy_cqe(); - try testing.expectEqual(os.E.SUCCESS, cqe.err()); - const fd: os.fd_t = @intCast(cqe.res); + try testing.expectEqual(posix.E.SUCCESS, cqe.err()); + const fd: posix.fd_t = @intCast(cqe.res); try testing.expect(fd > 2); - os.close(fd); + posix.close(fd); } test "socket_direct/socket_direct_alloc/close_direct" { @@ -3730,29 +3730,29 @@ test "socket_direct/socket_direct_alloc/close_direct" { }; defer ring.deinit(); - var registered_fds = [_]os.fd_t{-1} ** 3; + var registered_fds = [_]posix.fd_t{-1} ** 3; try ring.register_files(registered_fds[0..]); // create socket in registered file descriptor at index 0 (last param) - _ = try ring.socket_direct(0, linux.AF.INET, os.SOCK.STREAM, 0, 0, 0); + _ = try ring.socket_direct(0, linux.AF.INET, posix.SOCK.STREAM, 0, 0, 0); try testing.expectEqual(@as(u32, 1), try ring.submit()); var cqe_socket = try ring.copy_cqe(); - try testing.expectEqual(os.E.SUCCESS, cqe_socket.err()); + try testing.expectEqual(posix.E.SUCCESS, cqe_socket.err()); try testing.expect(cqe_socket.res == 0); // create socket in registered file descriptor at index 1 (last param) - _ = try ring.socket_direct(0, linux.AF.INET, os.SOCK.STREAM, 0, 0, 1); + _ = try ring.socket_direct(0, linux.AF.INET, posix.SOCK.STREAM, 0, 0, 1); try testing.expectEqual(@as(u32, 1), try ring.submit()); cqe_socket = try ring.copy_cqe(); - try testing.expectEqual(os.E.SUCCESS, cqe_socket.err()); + try testing.expectEqual(posix.E.SUCCESS, cqe_socket.err()); try testing.expect(cqe_socket.res == 0); // res is 0 when index is specified // create socket in kernel chosen file descriptor index (_alloc version) // completion res has index from registered files - _ = try ring.socket_direct_alloc(0, linux.AF.INET, os.SOCK.STREAM, 0, 0); + _ = try ring.socket_direct_alloc(0, linux.AF.INET, posix.SOCK.STREAM, 0, 0); try testing.expectEqual(@as(u32, 1), try ring.submit()); cqe_socket = try ring.copy_cqe(); - try testing.expectEqual(os.E.SUCCESS, cqe_socket.err()); + try testing.expectEqual(posix.E.SUCCESS, cqe_socket.err()); try testing.expect(cqe_socket.res == 2); // returns registered file index // use sockets from registered_fds in connect operation @@ -3782,17 +3782,17 @@ test "socket_direct/socket_direct_alloc/close_direct" { } // test connect completion try testing.expect(cqe_connect.user_data == connect_userdata); - try testing.expectEqual(os.E.SUCCESS, cqe_connect.err()); + try testing.expectEqual(posix.E.SUCCESS, cqe_connect.err()); // test accept completion try testing.expect(cqe_accept.user_data == accept_userdata); - try testing.expectEqual(os.E.SUCCESS, cqe_accept.err()); + try testing.expectEqual(posix.E.SUCCESS, cqe_accept.err()); // submit and test close_direct _ = try ring.close_direct(close_userdata, @intCast(fd_index)); try testing.expectEqual(@as(u32, 1), try ring.submit()); var cqe_close = try ring.copy_cqe(); try testing.expect(cqe_close.user_data == close_userdata); - try testing.expectEqual(os.E.SUCCESS, cqe_close.err()); + try testing.expectEqual(posix.E.SUCCESS, cqe_close.err()); } try ring.unregister_files(); @@ -3808,35 +3808,35 @@ test "openat_direct/close_direct" { }; defer ring.deinit(); - var registered_fds = [_]os.fd_t{-1} ** 3; + var registered_fds = [_]posix.fd_t{-1} ** 3; try ring.register_files(registered_fds[0..]); var tmp = std.testing.tmpDir(.{}); defer tmp.cleanup(); const path = "test_io_uring_close_direct"; const flags: linux.O = .{ .ACCMODE = .RDWR, .CREAT = true }; - const mode: os.mode_t = 0o666; + const mode: posix.mode_t = 0o666; const user_data: u64 = 0; // use registered file at index 0 (last param) _ = try ring.openat_direct(user_data, tmp.dir.fd, path, flags, mode, 0); try testing.expectEqual(@as(u32, 1), try ring.submit()); var cqe = try ring.copy_cqe(); - try testing.expectEqual(os.E.SUCCESS, cqe.err()); + try testing.expectEqual(posix.E.SUCCESS, cqe.err()); try testing.expect(cqe.res == 0); // use registered file at index 1 _ = try ring.openat_direct(user_data, tmp.dir.fd, path, flags, mode, 1); try testing.expectEqual(@as(u32, 1), try ring.submit()); cqe = try ring.copy_cqe(); - try testing.expectEqual(os.E.SUCCESS, cqe.err()); + try testing.expectEqual(posix.E.SUCCESS, cqe.err()); try testing.expect(cqe.res == 0); // res is 0 when we specify index // let kernel choose registered file index _ = try ring.openat_direct(user_data, tmp.dir.fd, path, flags, mode, linux.IORING_FILE_INDEX_ALLOC); try testing.expectEqual(@as(u32, 1), try ring.submit()); cqe = try ring.copy_cqe(); - try testing.expectEqual(os.E.SUCCESS, cqe.err()); + try testing.expectEqual(posix.E.SUCCESS, cqe.err()); try testing.expect(cqe.res == 2); // chosen index is in res // close all open file descriptors @@ -3844,7 +3844,7 @@ test "openat_direct/close_direct" { _ = try ring.close_direct(user_data, @intCast(fd_index)); try testing.expectEqual(@as(u32, 1), try ring.submit()); var cqe_close = try ring.copy_cqe(); - try testing.expectEqual(os.E.SUCCESS, cqe_close.err()); + try testing.expectEqual(posix.E.SUCCESS, cqe_close.err()); } try ring.unregister_files(); } @@ -3859,13 +3859,13 @@ test "waitid" { }; defer ring.deinit(); - const pid = try os.fork(); + const pid = try posix.fork(); if (pid == 0) { - os.exit(7); + posix.exit(7); } - var siginfo: os.siginfo_t = undefined; - _ = try ring.waitid(0, .PID, pid, &siginfo, os.W.EXITED, 0); + var siginfo: posix.siginfo_t = undefined; + _ = try ring.waitid(0, .PID, pid, &siginfo, posix.W.EXITED, 0); try testing.expectEqual(1, try ring.submit()); @@ -3877,13 +3877,13 @@ test "waitid" { /// For use in tests. Returns SkipZigTest if kernel version is less than required. inline fn skipKernelLessThan(required: std.SemanticVersion) !void { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var uts: linux.utsname = undefined; const res = linux.uname(&uts); - switch (linux.getErrno(res)) { + switch (linux.E.init(res)) { .SUCCESS => {}, - else => |errno| return os.unexpectedErrno(errno), + else => |errno| return posix.unexpectedErrno(errno), } const release = mem.sliceTo(&uts.release, 0); @@ -3893,7 +3893,7 @@ inline fn skipKernelLessThan(required: std.SemanticVersion) !void { } test BufferGroup { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; // Init IoUring var ring = IoUring.init(16, 0) catch |err| switch (err) { @@ -3948,7 +3948,7 @@ test BufferGroup { const cqe = try ring.copy_cqe(); try testing.expectEqual(2, cqe.user_data); // matches submitted user_data try testing.expect(cqe.res >= 0); // success - try testing.expectEqual(os.E.SUCCESS, cqe.err()); + try testing.expectEqual(posix.E.SUCCESS, cqe.err()); try testing.expectEqual(data.len, @as(usize, @intCast(cqe.res))); // cqe.res holds received data len // Read buffer_id and used buffer len from cqe @@ -3963,7 +3963,7 @@ test BufferGroup { } test "ring mapped buffers recv" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(16, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -4029,7 +4029,7 @@ test "ring mapped buffers recv" { const cqe = try ring.copy_cqe(); try testing.expectEqual(user_data, cqe.user_data); try testing.expect(cqe.res < 0); // fail - try testing.expectEqual(os.E.NOBUFS, cqe.err()); + try testing.expectEqual(posix.E.NOBUFS, cqe.err()); try testing.expect(cqe.flags & linux.IORING_CQE_F_BUFFER == 0); // IORING_CQE_F_BUFFER flags is set on success only try testing.expectError(error.NoBufferSelected, cqe.buffer_id()); } @@ -4049,7 +4049,7 @@ test "ring mapped buffers recv" { } test "ring mapped buffers multishot recv" { - if (builtin.os.tag != .linux) return error.SkipZigTest; + if (!is_linux) return error.SkipZigTest; var ring = IoUring.init(16, 0) catch |err| switch (err) { error.SystemOutdated => return error.SkipZigTest, @@ -4120,7 +4120,7 @@ test "ring mapped buffers multishot recv" { const cqe = try ring.copy_cqe(); try testing.expectEqual(recv_user_data, cqe.user_data); try testing.expect(cqe.res < 0); // fail - try testing.expectEqual(os.E.NOBUFS, cqe.err()); + try testing.expectEqual(posix.E.NOBUFS, cqe.err()); try testing.expect(cqe.flags & linux.IORING_CQE_F_BUFFER == 0); // IORING_CQE_F_BUFFER flags is set on success only // has more is not set // indicates that multishot is finished @@ -4194,7 +4194,7 @@ test "ring mapped buffers multishot recv" { fn expect_buf_grp_recv( ring: *IoUring, buf_grp: *BufferGroup, - fd: os.fd_t, + fd: posix.fd_t, user_data: u64, expected: []const u8, ) !u16 { @@ -4220,7 +4220,7 @@ fn expect_buf_grp_cqe( try testing.expect(cqe.res >= 0); // success try testing.expect(cqe.flags & linux.IORING_CQE_F_BUFFER == linux.IORING_CQE_F_BUFFER); // IORING_CQE_F_BUFFER flag is set try testing.expectEqual(expected.len, @as(usize, @intCast(cqe.res))); - try testing.expectEqual(os.E.SUCCESS, cqe.err()); + try testing.expectEqual(posix.E.SUCCESS, cqe.err()); // get buffer from pool const buffer_id = try cqe.buffer_id(); diff --git a/lib/std/os/linux/arm-eabi.zig b/lib/std/os/linux/arm-eabi.zig index 68575c3344..e589305725 100644 --- a/lib/std/os/linux/arm-eabi.zig +++ b/lib/std/os/linux/arm-eabi.zig @@ -2,8 +2,8 @@ const std = @import("../../std.zig"); const maxInt = std.math.maxInt; const linux = std.os.linux; const SYS = linux.SYS; -const iovec = std.os.iovec; -const iovec_const = std.os.iovec_const; +const iovec = std.posix.iovec; +const iovec_const = std.posix.iovec_const; const socklen_t = linux.socklen_t; const stack_t = linux.stack_t; const sigset_t = linux.sigset_t; diff --git a/lib/std/os/linux/arm64.zig b/lib/std/os/linux/arm64.zig index f2331c1309..fd1db34004 100644 --- a/lib/std/os/linux/arm64.zig +++ b/lib/std/os/linux/arm64.zig @@ -4,8 +4,8 @@ const linux = std.os.linux; const SYS = linux.SYS; const socklen_t = linux.socklen_t; const sockaddr = linux.sockaddr; -const iovec = std.os.iovec; -const iovec_const = std.os.iovec_const; +const iovec = std.posix.iovec; +const iovec_const = std.posix.iovec_const; const uid_t = linux.uid_t; const gid_t = linux.gid_t; const pid_t = linux.pid_t; diff --git a/lib/std/os/linux/bpf.zig b/lib/std/os/linux/bpf.zig index 145fe3212d..5e02485b15 100644 --- a/lib/std/os/linux/bpf.zig +++ b/lib/std/os/linux/bpf.zig @@ -1,5 +1,5 @@ const std = @import("../../std.zig"); -const errno = getErrno; +const errno = linux.E.init; const unexpectedErrno = std.os.unexpectedErrno; const expectEqual = std.testing.expectEqual; const expectError = std.testing.expectError; @@ -8,7 +8,6 @@ const expect = std.testing.expect; const linux = std.os.linux; const fd_t = linux.fd_t; const pid_t = linux.pid_t; -const getErrno = linux.getErrno; pub const btf = @import("bpf/btf.zig"); pub const kern = @import("bpf/kern.zig"); diff --git a/lib/std/os/linux/errno/generic.zig b/lib/std/os/linux/errno/generic.zig deleted file mode 100644 index 730c71a5a2..0000000000 --- a/lib/std/os/linux/errno/generic.zig +++ /dev/null @@ -1,460 +0,0 @@ -pub const E = enum(u16) { - /// No error occurred. - /// Same code used for `NSROK`. - SUCCESS = 0, - - /// Operation not permitted - PERM = 1, - - /// No such file or directory - NOENT = 2, - - /// No such process - SRCH = 3, - - /// Interrupted system call - INTR = 4, - - /// I/O error - IO = 5, - - /// No such device or address - NXIO = 6, - - /// Arg list too long - @"2BIG" = 7, - - /// Exec format error - NOEXEC = 8, - - /// Bad file number - BADF = 9, - - /// No child processes - CHILD = 10, - - /// Try again - /// Also means: WOULDBLOCK: operation would block - AGAIN = 11, - - /// Out of memory - NOMEM = 12, - - /// Permission denied - ACCES = 13, - - /// Bad address - FAULT = 14, - - /// Block device required - NOTBLK = 15, - - /// Device or resource busy - BUSY = 16, - - /// File exists - EXIST = 17, - - /// Cross-device link - XDEV = 18, - - /// No such device - NODEV = 19, - - /// Not a directory - NOTDIR = 20, - - /// Is a directory - ISDIR = 21, - - /// Invalid argument - INVAL = 22, - - /// File table overflow - NFILE = 23, - - /// Too many open files - MFILE = 24, - - /// Not a typewriter - NOTTY = 25, - - /// Text file busy - TXTBSY = 26, - - /// File too large - FBIG = 27, - - /// No space left on device - NOSPC = 28, - - /// Illegal seek - SPIPE = 29, - - /// Read-only file system - ROFS = 30, - - /// Too many links - MLINK = 31, - - /// Broken pipe - PIPE = 32, - - /// Math argument out of domain of func - DOM = 33, - - /// Math result not representable - RANGE = 34, - - /// Resource deadlock would occur - DEADLK = 35, - - /// File name too long - NAMETOOLONG = 36, - - /// No record locks available - NOLCK = 37, - - /// Function not implemented - NOSYS = 38, - - /// Directory not empty - NOTEMPTY = 39, - - /// Too many symbolic links encountered - LOOP = 40, - - /// No message of desired type - NOMSG = 42, - - /// Identifier removed - IDRM = 43, - - /// Channel number out of range - CHRNG = 44, - - /// Level 2 not synchronized - L2NSYNC = 45, - - /// Level 3 halted - L3HLT = 46, - - /// Level 3 reset - L3RST = 47, - - /// Link number out of range - LNRNG = 48, - - /// Protocol driver not attached - UNATCH = 49, - - /// No CSI structure available - NOCSI = 50, - - /// Level 2 halted - L2HLT = 51, - - /// Invalid exchange - BADE = 52, - - /// Invalid request descriptor - BADR = 53, - - /// Exchange full - XFULL = 54, - - /// No anode - NOANO = 55, - - /// Invalid request code - BADRQC = 56, - - /// Invalid slot - BADSLT = 57, - - /// Bad font file format - BFONT = 59, - - /// Device not a stream - NOSTR = 60, - - /// No data available - NODATA = 61, - - /// Timer expired - TIME = 62, - - /// Out of streams resources - NOSR = 63, - - /// Machine is not on the network - NONET = 64, - - /// Package not installed - NOPKG = 65, - - /// Object is remote - REMOTE = 66, - - /// Link has been severed - NOLINK = 67, - - /// Advertise error - ADV = 68, - - /// Srmount error - SRMNT = 69, - - /// Communication error on send - COMM = 70, - - /// Protocol error - PROTO = 71, - - /// Multihop attempted - MULTIHOP = 72, - - /// RFS specific error - DOTDOT = 73, - - /// Not a data message - BADMSG = 74, - - /// Value too large for defined data type - OVERFLOW = 75, - - /// Name not unique on network - NOTUNIQ = 76, - - /// File descriptor in bad state - BADFD = 77, - - /// Remote address changed - REMCHG = 78, - - /// Can not access a needed shared library - LIBACC = 79, - - /// Accessing a corrupted shared library - LIBBAD = 80, - - /// .lib section in a.out corrupted - LIBSCN = 81, - - /// Attempting to link in too many shared libraries - LIBMAX = 82, - - /// Cannot exec a shared library directly - LIBEXEC = 83, - - /// Illegal byte sequence - ILSEQ = 84, - - /// Interrupted system call should be restarted - RESTART = 85, - - /// Streams pipe error - STRPIPE = 86, - - /// Too many users - USERS = 87, - - /// Socket operation on non-socket - NOTSOCK = 88, - - /// Destination address required - DESTADDRREQ = 89, - - /// Message too long - MSGSIZE = 90, - - /// Protocol wrong type for socket - PROTOTYPE = 91, - - /// Protocol not available - NOPROTOOPT = 92, - - /// Protocol not supported - PROTONOSUPPORT = 93, - - /// Socket type not supported - SOCKTNOSUPPORT = 94, - - /// Operation not supported on transport endpoint - /// This code also means `NOTSUP`. - OPNOTSUPP = 95, - - /// Protocol family not supported - PFNOSUPPORT = 96, - - /// Address family not supported by protocol - AFNOSUPPORT = 97, - - /// Address already in use - ADDRINUSE = 98, - - /// Cannot assign requested address - ADDRNOTAVAIL = 99, - - /// Network is down - NETDOWN = 100, - - /// Network is unreachable - NETUNREACH = 101, - - /// Network dropped connection because of reset - NETRESET = 102, - - /// Software caused connection abort - CONNABORTED = 103, - - /// Connection reset by peer - CONNRESET = 104, - - /// No buffer space available - NOBUFS = 105, - - /// Transport endpoint is already connected - ISCONN = 106, - - /// Transport endpoint is not connected - NOTCONN = 107, - - /// Cannot send after transport endpoint shutdown - SHUTDOWN = 108, - - /// Too many references: cannot splice - TOOMANYREFS = 109, - - /// Connection timed out - TIMEDOUT = 110, - - /// Connection refused - CONNREFUSED = 111, - - /// Host is down - HOSTDOWN = 112, - - /// No route to host - HOSTUNREACH = 113, - - /// Operation already in progress - ALREADY = 114, - - /// Operation now in progress - INPROGRESS = 115, - - /// Stale NFS file handle - STALE = 116, - - /// Structure needs cleaning - UCLEAN = 117, - - /// Not a XENIX named type file - NOTNAM = 118, - - /// No XENIX semaphores available - NAVAIL = 119, - - /// Is a named type file - ISNAM = 120, - - /// Remote I/O error - REMOTEIO = 121, - - /// Quota exceeded - DQUOT = 122, - - /// No medium found - NOMEDIUM = 123, - - /// Wrong medium type - MEDIUMTYPE = 124, - - /// Operation canceled - CANCELED = 125, - - /// Required key not available - NOKEY = 126, - - /// Key has expired - KEYEXPIRED = 127, - - /// Key has been revoked - KEYREVOKED = 128, - - /// Key was rejected by service - KEYREJECTED = 129, - - // for robust mutexes - - /// Owner died - OWNERDEAD = 130, - - /// State not recoverable - NOTRECOVERABLE = 131, - - /// Operation not possible due to RF-kill - RFKILL = 132, - - /// Memory page has hardware error - HWPOISON = 133, - - // nameserver query return codes - - /// DNS server returned answer with no data - NSRNODATA = 160, - - /// DNS server claims query was misformatted - NSRFORMERR = 161, - - /// DNS server returned general failure - NSRSERVFAIL = 162, - - /// Domain name not found - NSRNOTFOUND = 163, - - /// DNS server does not implement requested operation - NSRNOTIMP = 164, - - /// DNS server refused query - NSRREFUSED = 165, - - /// Misformatted DNS query - NSRBADQUERY = 166, - - /// Misformatted domain name - NSRBADNAME = 167, - - /// Unsupported address family - NSRBADFAMILY = 168, - - /// Misformatted DNS reply - NSRBADRESP = 169, - - /// Could not contact DNS servers - NSRCONNREFUSED = 170, - - /// Timeout while contacting DNS servers - NSRTIMEOUT = 171, - - /// End of file - NSROF = 172, - - /// Error reading file - NSRFILE = 173, - - /// Out of memory - NSRNOMEM = 174, - - /// Application terminated lookup - NSRDESTRUCTION = 175, - - /// Domain name is too long - NSRQUERYDOMAINTOOLONG = 176, - - /// Domain name is too long - NSRCNAMELOOP = 177, - - _, -}; diff --git a/lib/std/os/linux/errno/mips.zig b/lib/std/os/linux/errno/mips.zig deleted file mode 100644 index 39fb9f71ea..0000000000 --- a/lib/std/os/linux/errno/mips.zig +++ /dev/null @@ -1,141 +0,0 @@ -//! These are MIPS ABI compatible. -pub const E = enum(i32) { - /// No error occurred. - SUCCESS = 0, - - PERM = 1, - NOENT = 2, - SRCH = 3, - INTR = 4, - IO = 5, - NXIO = 6, - @"2BIG" = 7, - NOEXEC = 8, - BADF = 9, - CHILD = 10, - /// Also used for WOULDBLOCK. - AGAIN = 11, - NOMEM = 12, - ACCES = 13, - FAULT = 14, - NOTBLK = 15, - BUSY = 16, - EXIST = 17, - XDEV = 18, - NODEV = 19, - NOTDIR = 20, - ISDIR = 21, - INVAL = 22, - NFILE = 23, - MFILE = 24, - NOTTY = 25, - TXTBSY = 26, - FBIG = 27, - NOSPC = 28, - SPIPE = 29, - ROFS = 30, - MLINK = 31, - PIPE = 32, - DOM = 33, - RANGE = 34, - - NOMSG = 35, - IDRM = 36, - CHRNG = 37, - L2NSYNC = 38, - L3HLT = 39, - L3RST = 40, - LNRNG = 41, - UNATCH = 42, - NOCSI = 43, - L2HLT = 44, - DEADLK = 45, - NOLCK = 46, - BADE = 50, - BADR = 51, - XFULL = 52, - NOANO = 53, - BADRQC = 54, - BADSLT = 55, - DEADLOCK = 56, - BFONT = 59, - NOSTR = 60, - NODATA = 61, - TIME = 62, - NOSR = 63, - NONET = 64, - NOPKG = 65, - REMOTE = 66, - NOLINK = 67, - ADV = 68, - SRMNT = 69, - COMM = 70, - PROTO = 71, - DOTDOT = 73, - MULTIHOP = 74, - BADMSG = 77, - NAMETOOLONG = 78, - OVERFLOW = 79, - NOTUNIQ = 80, - BADFD = 81, - REMCHG = 82, - LIBACC = 83, - LIBBAD = 84, - LIBSCN = 85, - LIBMAX = 86, - LIBEXEC = 87, - ILSEQ = 88, - NOSYS = 89, - LOOP = 90, - RESTART = 91, - STRPIPE = 92, - NOTEMPTY = 93, - USERS = 94, - NOTSOCK = 95, - DESTADDRREQ = 96, - MSGSIZE = 97, - PROTOTYPE = 98, - NOPROTOOPT = 99, - PROTONOSUPPORT = 120, - SOCKTNOSUPPORT = 121, - OPNOTSUPP = 122, - PFNOSUPPORT = 123, - AFNOSUPPORT = 124, - ADDRINUSE = 125, - ADDRNOTAVAIL = 126, - NETDOWN = 127, - NETUNREACH = 128, - NETRESET = 129, - CONNABORTED = 130, - CONNRESET = 131, - NOBUFS = 132, - ISCONN = 133, - NOTCONN = 134, - UCLEAN = 135, - NOTNAM = 137, - NAVAIL = 138, - ISNAM = 139, - REMOTEIO = 140, - SHUTDOWN = 143, - TOOMANYREFS = 144, - TIMEDOUT = 145, - CONNREFUSED = 146, - HOSTDOWN = 147, - HOSTUNREACH = 148, - ALREADY = 149, - INPROGRESS = 150, - STALE = 151, - CANCELED = 158, - NOMEDIUM = 159, - MEDIUMTYPE = 160, - NOKEY = 161, - KEYEXPIRED = 162, - KEYREVOKED = 163, - KEYREJECTED = 164, - OWNERDEAD = 165, - NOTRECOVERABLE = 166, - RFKILL = 167, - HWPOISON = 168, - DQUOT = 1133, - _, -}; diff --git a/lib/std/os/linux/errno/sparc.zig b/lib/std/os/linux/errno/sparc.zig deleted file mode 100644 index c4ab65f34a..0000000000 --- a/lib/std/os/linux/errno/sparc.zig +++ /dev/null @@ -1,144 +0,0 @@ -//! These match the SunOS error numbering scheme. -pub const E = enum(i32) { - /// No error occurred. - SUCCESS = 0, - - PERM = 1, - NOENT = 2, - SRCH = 3, - INTR = 4, - IO = 5, - NXIO = 6, - @"2BIG" = 7, - NOEXEC = 8, - BADF = 9, - CHILD = 10, - /// Also used for WOULDBLOCK - AGAIN = 11, - NOMEM = 12, - ACCES = 13, - FAULT = 14, - NOTBLK = 15, - BUSY = 16, - EXIST = 17, - XDEV = 18, - NODEV = 19, - NOTDIR = 20, - ISDIR = 21, - INVAL = 22, - NFILE = 23, - MFILE = 24, - NOTTY = 25, - TXTBSY = 26, - FBIG = 27, - NOSPC = 28, - SPIPE = 29, - ROFS = 30, - MLINK = 31, - PIPE = 32, - DOM = 33, - RANGE = 34, - - INPROGRESS = 36, - ALREADY = 37, - NOTSOCK = 38, - DESTADDRREQ = 39, - MSGSIZE = 40, - PROTOTYPE = 41, - NOPROTOOPT = 42, - PROTONOSUPPORT = 43, - SOCKTNOSUPPORT = 44, - /// Also used for NOTSUP - OPNOTSUPP = 45, - PFNOSUPPORT = 46, - AFNOSUPPORT = 47, - ADDRINUSE = 48, - ADDRNOTAVAIL = 49, - NETDOWN = 50, - NETUNREACH = 51, - NETRESET = 52, - CONNABORTED = 53, - CONNRESET = 54, - NOBUFS = 55, - ISCONN = 56, - NOTCONN = 57, - SHUTDOWN = 58, - TOOMANYREFS = 59, - TIMEDOUT = 60, - CONNREFUSED = 61, - LOOP = 62, - NAMETOOLONG = 63, - HOSTDOWN = 64, - HOSTUNREACH = 65, - NOTEMPTY = 66, - PROCLIM = 67, - USERS = 68, - DQUOT = 69, - STALE = 70, - REMOTE = 71, - NOSTR = 72, - TIME = 73, - NOSR = 74, - NOMSG = 75, - BADMSG = 76, - IDRM = 77, - DEADLK = 78, - NOLCK = 79, - NONET = 80, - RREMOTE = 81, - NOLINK = 82, - ADV = 83, - SRMNT = 84, - COMM = 85, - PROTO = 86, - MULTIHOP = 87, - DOTDOT = 88, - REMCHG = 89, - NOSYS = 90, - STRPIPE = 91, - OVERFLOW = 92, - BADFD = 93, - CHRNG = 94, - L2NSYNC = 95, - L3HLT = 96, - L3RST = 97, - LNRNG = 98, - UNATCH = 99, - NOCSI = 100, - L2HLT = 101, - BADE = 102, - BADR = 103, - XFULL = 104, - NOANO = 105, - BADRQC = 106, - BADSLT = 107, - DEADLOCK = 108, - BFONT = 109, - LIBEXEC = 110, - NODATA = 111, - LIBBAD = 112, - NOPKG = 113, - LIBACC = 114, - NOTUNIQ = 115, - RESTART = 116, - UCLEAN = 117, - NOTNAM = 118, - NAVAIL = 119, - ISNAM = 120, - REMOTEIO = 121, - ILSEQ = 122, - LIBMAX = 123, - LIBSCN = 124, - NOMEDIUM = 125, - MEDIUMTYPE = 126, - CANCELED = 127, - NOKEY = 128, - KEYEXPIRED = 129, - KEYREVOKED = 130, - KEYREJECTED = 131, - OWNERDEAD = 132, - NOTRECOVERABLE = 133, - RFKILL = 134, - HWPOISON = 135, - _, -}; diff --git a/lib/std/os/linux/io_uring_sqe.zig b/lib/std/os/linux/io_uring_sqe.zig index 73ee195687..7306cf8eed 100644 --- a/lib/std/os/linux/io_uring_sqe.zig +++ b/lib/std/os/linux/io_uring_sqe.zig @@ -2,8 +2,7 @@ //! Split into its own file to compartmentalize the initialization methods. const std = @import("../../std.zig"); -const os = std.os; -const linux = os.linux; +const linux = std.os.linux; pub const io_uring_sqe = extern struct { opcode: linux.IORING_OP, @@ -40,7 +39,7 @@ pub const io_uring_sqe = extern struct { }; } - pub fn prep_fsync(sqe: *linux.io_uring_sqe, fd: os.fd_t, flags: u32) void { + pub fn prep_fsync(sqe: *linux.io_uring_sqe, fd: linux.fd_t, flags: u32) void { sqe.* = .{ .opcode = .FSYNC, .flags = 0, @@ -62,7 +61,7 @@ pub const io_uring_sqe = extern struct { pub fn prep_rw( sqe: *linux.io_uring_sqe, op: linux.IORING_OP, - fd: os.fd_t, + fd: linux.fd_t, addr: u64, len: usize, offset: u64, @@ -85,15 +84,15 @@ pub const io_uring_sqe = extern struct { }; } - pub fn prep_read(sqe: *linux.io_uring_sqe, fd: os.fd_t, buffer: []u8, offset: u64) void { + pub fn prep_read(sqe: *linux.io_uring_sqe, fd: linux.fd_t, buffer: []u8, offset: u64) void { sqe.prep_rw(.READ, fd, @intFromPtr(buffer.ptr), buffer.len, offset); } - pub fn prep_write(sqe: *linux.io_uring_sqe, fd: os.fd_t, buffer: []const u8, offset: u64) void { + pub fn prep_write(sqe: *linux.io_uring_sqe, fd: linux.fd_t, buffer: []const u8, offset: u64) void { sqe.prep_rw(.WRITE, fd, @intFromPtr(buffer.ptr), buffer.len, offset); } - pub fn prep_splice(sqe: *linux.io_uring_sqe, fd_in: os.fd_t, off_in: u64, fd_out: os.fd_t, off_out: u64, len: usize) void { + pub fn prep_splice(sqe: *linux.io_uring_sqe, fd_in: linux.fd_t, off_in: u64, fd_out: linux.fd_t, off_out: u64, len: usize) void { sqe.prep_rw(.SPLICE, fd_out, undefined, len, off_out); sqe.addr = off_in; sqe.splice_fd_in = fd_in; @@ -101,8 +100,8 @@ pub const io_uring_sqe = extern struct { pub fn prep_readv( sqe: *linux.io_uring_sqe, - fd: os.fd_t, - iovecs: []const os.iovec, + fd: linux.fd_t, + iovecs: []const std.posix.iovec, offset: u64, ) void { sqe.prep_rw(.READV, fd, @intFromPtr(iovecs.ptr), iovecs.len, offset); @@ -110,28 +109,28 @@ pub const io_uring_sqe = extern struct { pub fn prep_writev( sqe: *linux.io_uring_sqe, - fd: os.fd_t, - iovecs: []const os.iovec_const, + fd: linux.fd_t, + iovecs: []const std.posix.iovec_const, offset: u64, ) void { sqe.prep_rw(.WRITEV, fd, @intFromPtr(iovecs.ptr), iovecs.len, offset); } - pub fn prep_read_fixed(sqe: *linux.io_uring_sqe, fd: os.fd_t, buffer: *os.iovec, offset: u64, buffer_index: u16) void { + pub fn prep_read_fixed(sqe: *linux.io_uring_sqe, fd: linux.fd_t, buffer: *std.posix.iovec, offset: u64, buffer_index: u16) void { sqe.prep_rw(.READ_FIXED, fd, @intFromPtr(buffer.iov_base), buffer.iov_len, offset); sqe.buf_index = buffer_index; } - pub fn prep_write_fixed(sqe: *linux.io_uring_sqe, fd: os.fd_t, buffer: *os.iovec, offset: u64, buffer_index: u16) void { + pub fn prep_write_fixed(sqe: *linux.io_uring_sqe, fd: linux.fd_t, buffer: *std.posix.iovec, offset: u64, buffer_index: u16) void { sqe.prep_rw(.WRITE_FIXED, fd, @intFromPtr(buffer.iov_base), buffer.iov_len, offset); sqe.buf_index = buffer_index; } pub fn prep_accept( sqe: *linux.io_uring_sqe, - fd: os.fd_t, - addr: ?*os.sockaddr, - addrlen: ?*os.socklen_t, + fd: linux.fd_t, + addr: ?*linux.sockaddr, + addrlen: ?*linux.socklen_t, flags: u32, ) void { // `addr` holds a pointer to `sockaddr`, and `addr2` holds a pointer to socklen_t`. @@ -142,9 +141,9 @@ pub const io_uring_sqe = extern struct { pub fn prep_accept_direct( sqe: *linux.io_uring_sqe, - fd: os.fd_t, - addr: ?*os.sockaddr, - addrlen: ?*os.socklen_t, + fd: linux.fd_t, + addr: ?*linux.sockaddr, + addrlen: ?*linux.socklen_t, flags: u32, file_index: u32, ) void { @@ -154,9 +153,9 @@ pub const io_uring_sqe = extern struct { pub fn prep_multishot_accept_direct( sqe: *linux.io_uring_sqe, - fd: os.fd_t, - addr: ?*os.sockaddr, - addrlen: ?*os.socklen_t, + fd: linux.fd_t, + addr: ?*linux.sockaddr, + addrlen: ?*linux.socklen_t, flags: u32, ) void { prep_multishot_accept(sqe, fd, addr, addrlen, flags); @@ -177,9 +176,9 @@ pub const io_uring_sqe = extern struct { pub fn prep_connect( sqe: *linux.io_uring_sqe, - fd: os.fd_t, - addr: *const os.sockaddr, - addrlen: os.socklen_t, + fd: linux.fd_t, + addr: *const linux.sockaddr, + addrlen: linux.socklen_t, ) void { // `addrlen` maps to `sqe.off` (u64) instead of `sqe.len` (which is only a u32). sqe.prep_rw(.CONNECT, fd, @intFromPtr(addr), 0, addrlen); @@ -187,22 +186,22 @@ pub const io_uring_sqe = extern struct { pub fn prep_epoll_ctl( sqe: *linux.io_uring_sqe, - epfd: os.fd_t, - fd: os.fd_t, + epfd: linux.fd_t, + fd: linux.fd_t, op: u32, ev: ?*linux.epoll_event, ) void { sqe.prep_rw(.EPOLL_CTL, epfd, @intFromPtr(ev), op, @intCast(fd)); } - pub fn prep_recv(sqe: *linux.io_uring_sqe, fd: os.fd_t, buffer: []u8, flags: u32) void { + pub fn prep_recv(sqe: *linux.io_uring_sqe, fd: linux.fd_t, buffer: []u8, flags: u32) void { sqe.prep_rw(.RECV, fd, @intFromPtr(buffer.ptr), buffer.len, 0); sqe.rw_flags = flags; } pub fn prep_recv_multishot( sqe: *linux.io_uring_sqe, - fd: os.fd_t, + fd: linux.fd_t, buffer: []u8, flags: u32, ) void { @@ -212,8 +211,8 @@ pub const io_uring_sqe = extern struct { pub fn prep_recvmsg( sqe: *linux.io_uring_sqe, - fd: os.fd_t, - msg: *os.msghdr, + fd: linux.fd_t, + msg: *linux.msghdr, flags: u32, ) void { sqe.prep_rw(.RECVMSG, fd, @intFromPtr(msg), 1, 0); @@ -222,26 +221,26 @@ pub const io_uring_sqe = extern struct { pub fn prep_recvmsg_multishot( sqe: *linux.io_uring_sqe, - fd: os.fd_t, - msg: *os.msghdr, + fd: linux.fd_t, + msg: *linux.msghdr, flags: u32, ) void { sqe.prep_recvmsg(fd, msg, flags); sqe.ioprio |= linux.IORING_RECV_MULTISHOT; } - pub fn prep_send(sqe: *linux.io_uring_sqe, fd: os.fd_t, buffer: []const u8, flags: u32) void { + pub fn prep_send(sqe: *linux.io_uring_sqe, fd: linux.fd_t, buffer: []const u8, flags: u32) void { sqe.prep_rw(.SEND, fd, @intFromPtr(buffer.ptr), buffer.len, 0); sqe.rw_flags = flags; } - pub fn prep_send_zc(sqe: *linux.io_uring_sqe, fd: os.fd_t, buffer: []const u8, flags: u32, zc_flags: u16) void { + pub fn prep_send_zc(sqe: *linux.io_uring_sqe, fd: linux.fd_t, buffer: []const u8, flags: u32, zc_flags: u16) void { sqe.prep_rw(.SEND_ZC, fd, @intFromPtr(buffer.ptr), buffer.len, 0); sqe.rw_flags = flags; sqe.ioprio = zc_flags; } - pub fn prep_send_zc_fixed(sqe: *linux.io_uring_sqe, fd: os.fd_t, buffer: []const u8, flags: u32, zc_flags: u16, buf_index: u16) void { + pub fn prep_send_zc_fixed(sqe: *linux.io_uring_sqe, fd: linux.fd_t, buffer: []const u8, flags: u32, zc_flags: u16, buf_index: u16) void { prep_send_zc(sqe, fd, buffer, flags, zc_flags); sqe.ioprio |= linux.IORING_RECVSEND_FIXED_BUF; sqe.buf_index = buf_index; @@ -249,8 +248,8 @@ pub const io_uring_sqe = extern struct { pub fn prep_sendmsg_zc( sqe: *linux.io_uring_sqe, - fd: os.fd_t, - msg: *const os.msghdr_const, + fd: linux.fd_t, + msg: *const linux.msghdr_const, flags: u32, ) void { prep_sendmsg(sqe, fd, msg, flags); @@ -259,8 +258,8 @@ pub const io_uring_sqe = extern struct { pub fn prep_sendmsg( sqe: *linux.io_uring_sqe, - fd: os.fd_t, - msg: *const os.msghdr_const, + fd: linux.fd_t, + msg: *const linux.msghdr_const, flags: u32, ) void { sqe.prep_rw(.SENDMSG, fd, @intFromPtr(msg), 1, 0); @@ -269,10 +268,10 @@ pub const io_uring_sqe = extern struct { pub fn prep_openat( sqe: *linux.io_uring_sqe, - fd: os.fd_t, + fd: linux.fd_t, path: [*:0]const u8, flags: linux.O, - mode: os.mode_t, + mode: linux.mode_t, ) void { sqe.prep_rw(.OPENAT, fd, @intFromPtr(path), mode, 0); sqe.rw_flags = @bitCast(flags); @@ -280,17 +279,17 @@ pub const io_uring_sqe = extern struct { pub fn prep_openat_direct( sqe: *linux.io_uring_sqe, - fd: os.fd_t, + fd: linux.fd_t, path: [*:0]const u8, flags: linux.O, - mode: os.mode_t, + mode: linux.mode_t, file_index: u32, ) void { prep_openat(sqe, fd, path, flags, mode); __io_uring_set_target_fixed_file(sqe, file_index); } - pub fn prep_close(sqe: *linux.io_uring_sqe, fd: os.fd_t) void { + pub fn prep_close(sqe: *linux.io_uring_sqe, fd: linux.fd_t) void { sqe.* = .{ .opcode = .CLOSE, .flags = 0, @@ -316,7 +315,7 @@ pub const io_uring_sqe = extern struct { pub fn prep_timeout( sqe: *linux.io_uring_sqe, - ts: *const os.linux.kernel_timespec, + ts: *const linux.kernel_timespec, count: u32, flags: u32, ) void { @@ -345,7 +344,7 @@ pub const io_uring_sqe = extern struct { pub fn prep_link_timeout( sqe: *linux.io_uring_sqe, - ts: *const os.linux.kernel_timespec, + ts: *const linux.kernel_timespec, flags: u32, ) void { sqe.prep_rw(.LINK_TIMEOUT, -1, @intFromPtr(ts), 1, 0); @@ -354,7 +353,7 @@ pub const io_uring_sqe = extern struct { pub fn prep_poll_add( sqe: *linux.io_uring_sqe, - fd: os.fd_t, + fd: linux.fd_t, poll_mask: u32, ) void { sqe.prep_rw(.POLL_ADD, fd, @intFromPtr(@as(?*anyopaque, null)), 0, 0); @@ -393,7 +392,7 @@ pub const io_uring_sqe = extern struct { pub fn prep_fallocate( sqe: *linux.io_uring_sqe, - fd: os.fd_t, + fd: linux.fd_t, mode: i32, offset: u64, len: u64, @@ -418,7 +417,7 @@ pub const io_uring_sqe = extern struct { pub fn prep_statx( sqe: *linux.io_uring_sqe, - fd: os.fd_t, + fd: linux.fd_t, path: [*:0]const u8, flags: u32, mask: u32, @@ -439,7 +438,7 @@ pub const io_uring_sqe = extern struct { pub fn prep_shutdown( sqe: *linux.io_uring_sqe, - sockfd: os.socket_t, + sockfd: linux.socket_t, how: u32, ) void { sqe.prep_rw(.SHUTDOWN, sockfd, 0, how, 0); @@ -447,9 +446,9 @@ pub const io_uring_sqe = extern struct { pub fn prep_renameat( sqe: *linux.io_uring_sqe, - old_dir_fd: os.fd_t, + old_dir_fd: linux.fd_t, old_path: [*:0]const u8, - new_dir_fd: os.fd_t, + new_dir_fd: linux.fd_t, new_path: [*:0]const u8, flags: u32, ) void { @@ -466,7 +465,7 @@ pub const io_uring_sqe = extern struct { pub fn prep_unlinkat( sqe: *linux.io_uring_sqe, - dir_fd: os.fd_t, + dir_fd: linux.fd_t, path: [*:0]const u8, flags: u32, ) void { @@ -476,9 +475,9 @@ pub const io_uring_sqe = extern struct { pub fn prep_mkdirat( sqe: *linux.io_uring_sqe, - dir_fd: os.fd_t, + dir_fd: linux.fd_t, path: [*:0]const u8, - mode: os.mode_t, + mode: linux.mode_t, ) void { sqe.prep_rw(.MKDIRAT, dir_fd, @intFromPtr(path), mode, 0); } @@ -486,7 +485,7 @@ pub const io_uring_sqe = extern struct { pub fn prep_symlinkat( sqe: *linux.io_uring_sqe, target: [*:0]const u8, - new_dir_fd: os.fd_t, + new_dir_fd: linux.fd_t, link_path: [*:0]const u8, ) void { sqe.prep_rw( @@ -500,9 +499,9 @@ pub const io_uring_sqe = extern struct { pub fn prep_linkat( sqe: *linux.io_uring_sqe, - old_dir_fd: os.fd_t, + old_dir_fd: linux.fd_t, old_path: [*:0]const u8, - new_dir_fd: os.fd_t, + new_dir_fd: linux.fd_t, new_path: [*:0]const u8, flags: u32, ) void { @@ -541,9 +540,9 @@ pub const io_uring_sqe = extern struct { pub fn prep_multishot_accept( sqe: *linux.io_uring_sqe, - fd: os.fd_t, - addr: ?*os.sockaddr, - addrlen: ?*os.socklen_t, + fd: linux.fd_t, + addr: ?*linux.sockaddr, + addrlen: ?*linux.socklen_t, flags: u32, ) void { prep_accept(sqe, fd, addr, addrlen, flags); diff --git a/lib/std/os/linux/mips.zig b/lib/std/os/linux/mips.zig index 896757f1f6..b0f33894c8 100644 --- a/lib/std/os/linux/mips.zig +++ b/lib/std/os/linux/mips.zig @@ -3,8 +3,8 @@ const maxInt = std.math.maxInt; const linux = std.os.linux; const SYS = linux.SYS; const socklen_t = linux.socklen_t; -const iovec = std.os.iovec; -const iovec_const = std.os.iovec_const; +const iovec = std.posix.iovec; +const iovec_const = std.posix.iovec_const; const uid_t = linux.uid_t; const gid_t = linux.gid_t; const pid_t = linux.pid_t; diff --git a/lib/std/os/linux/mips64.zig b/lib/std/os/linux/mips64.zig index 4a34f30dd9..c1b352328b 100644 --- a/lib/std/os/linux/mips64.zig +++ b/lib/std/os/linux/mips64.zig @@ -3,8 +3,8 @@ const maxInt = std.math.maxInt; const linux = std.os.linux; const SYS = linux.SYS; const socklen_t = linux.socklen_t; -const iovec = std.os.iovec; -const iovec_const = std.os.iovec_const; +const iovec = std.posix.iovec; +const iovec_const = std.posix.iovec_const; const uid_t = linux.uid_t; const gid_t = linux.gid_t; const pid_t = linux.pid_t; diff --git a/lib/std/os/linux/powerpc.zig b/lib/std/os/linux/powerpc.zig index 4d13e90166..af7c8f0c06 100644 --- a/lib/std/os/linux/powerpc.zig +++ b/lib/std/os/linux/powerpc.zig @@ -3,8 +3,8 @@ const maxInt = std.math.maxInt; const linux = std.os.linux; const SYS = linux.SYS; const socklen_t = linux.socklen_t; -const iovec = std.os.iovec; -const iovec_const = std.os.iovec_const; +const iovec = std.posix.iovec; +const iovec_const = std.posix.iovec_const; const uid_t = linux.uid_t; const gid_t = linux.gid_t; const pid_t = linux.pid_t; diff --git a/lib/std/os/linux/powerpc64.zig b/lib/std/os/linux/powerpc64.zig index c81ef382c2..9a17fb9a35 100644 --- a/lib/std/os/linux/powerpc64.zig +++ b/lib/std/os/linux/powerpc64.zig @@ -3,8 +3,8 @@ const maxInt = std.math.maxInt; const linux = std.os.linux; const SYS = linux.SYS; const socklen_t = linux.socklen_t; -const iovec = std.os.iovec; -const iovec_const = std.os.iovec_const; +const iovec = std.posix.iovec; +const iovec_const = std.posix.iovec_const; const uid_t = linux.uid_t; const gid_t = linux.gid_t; const pid_t = linux.pid_t; diff --git a/lib/std/os/linux/riscv64.zig b/lib/std/os/linux/riscv64.zig index c23fc5e4df..88b5c70fbc 100644 --- a/lib/std/os/linux/riscv64.zig +++ b/lib/std/os/linux/riscv64.zig @@ -1,6 +1,6 @@ const std = @import("../../std.zig"); -const iovec = std.os.iovec; -const iovec_const = std.os.iovec_const; +const iovec = std.posix.iovec; +const iovec_const = std.posix.iovec_const; const linux = std.os.linux; const SYS = linux.SYS; const uid_t = std.os.linux.uid_t; diff --git a/lib/std/os/linux/sparc64.zig b/lib/std/os/linux/sparc64.zig index 0a344e2bf4..796c6e0905 100644 --- a/lib/std/os/linux/sparc64.zig +++ b/lib/std/os/linux/sparc64.zig @@ -10,8 +10,8 @@ const linux = std.os.linux; const SYS = linux.SYS; const sockaddr = linux.sockaddr; const socklen_t = linux.socklen_t; -const iovec = std.os.iovec; -const iovec_const = std.os.iovec_const; +const iovec = std.posix.iovec; +const iovec_const = std.posix.iovec_const; const timespec = linux.timespec; pub fn syscall_pipe(fd: *[2]i32) usize { diff --git a/lib/std/os/linux/start_pie.zig b/lib/std/os/linux/start_pie.zig index cf557f9d66..b576134042 100644 --- a/lib/std/os/linux/start_pie.zig +++ b/lib/std/os/linux/start_pie.zig @@ -81,7 +81,7 @@ pub fn relocate(phdrs: []elf.Phdr) void { break :base @intFromPtr(dynv) - phdr.p_vaddr; } // This is not supposed to happen for well-formed binaries. - std.os.abort(); + @trap(); }; var rel_addr: usize = 0; diff --git a/lib/std/os/linux/test.zig b/lib/std/os/linux/test.zig index 2224224c5d..5aa8a565cf 100644 --- a/lib/std/os/linux/test.zig +++ b/lib/std/os/linux/test.zig @@ -18,7 +18,7 @@ test "fallocate" { try expect((try file.stat()).size == 0); const len: i64 = 65536; - switch (linux.getErrno(linux.fallocate(file.handle, 0, 0, len))) { + switch (linux.E.init(linux.fallocate(file.handle, 0, 0, len))) { .SUCCESS => {}, .NOSYS => return error.SkipZigTest, .OPNOTSUPP => return error.SkipZigTest, @@ -34,11 +34,11 @@ test "getpid" { test "timer" { const epoll_fd = linux.epoll_create(); - var err: linux.E = linux.getErrno(epoll_fd); + var err: linux.E = linux.E.init(epoll_fd); try expect(err == .SUCCESS); const timer_fd = linux.timerfd_create(linux.CLOCK.MONOTONIC, .{}); - try expect(linux.getErrno(timer_fd) == .SUCCESS); + try expect(linux.E.init(timer_fd) == .SUCCESS); const time_interval = linux.timespec{ .tv_sec = 0, @@ -50,7 +50,7 @@ test "timer" { .it_value = time_interval, }; - err = linux.getErrno(linux.timerfd_settime(@as(i32, @intCast(timer_fd)), .{}, &new_time, null)); + err = linux.E.init(linux.timerfd_settime(@as(i32, @intCast(timer_fd)), .{}, &new_time, null)); try expect(err == .SUCCESS); var event = linux.epoll_event{ @@ -58,13 +58,13 @@ test "timer" { .data = linux.epoll_data{ .ptr = 0 }, }; - err = linux.getErrno(linux.epoll_ctl(@as(i32, @intCast(epoll_fd)), linux.EPOLL.CTL_ADD, @as(i32, @intCast(timer_fd)), &event)); + err = linux.E.init(linux.epoll_ctl(@as(i32, @intCast(epoll_fd)), linux.EPOLL.CTL_ADD, @as(i32, @intCast(timer_fd)), &event)); try expect(err == .SUCCESS); const events_one: linux.epoll_event = undefined; var events = [_]linux.epoll_event{events_one} ** 8; - err = linux.getErrno(linux.epoll_wait(@as(i32, @intCast(epoll_fd)), &events, 8, -1)); + err = linux.E.init(linux.epoll_wait(@as(i32, @intCast(epoll_fd)), &events, 8, -1)); try expect(err == .SUCCESS); } @@ -77,7 +77,7 @@ test "statx" { defer file.close(); var statx_buf: linux.Statx = undefined; - switch (linux.getErrno(linux.statx(file.handle, "", linux.AT.EMPTY_PATH, linux.STATX_BASIC_STATS, &statx_buf))) { + switch (linux.E.init(linux.statx(file.handle, "", linux.AT.EMPTY_PATH, linux.STATX_BASIC_STATS, &statx_buf))) { .SUCCESS => {}, // The statx syscall was only introduced in linux 4.11 .NOSYS => return error.SkipZigTest, @@ -85,7 +85,7 @@ test "statx" { } var stat_buf: linux.Stat = undefined; - switch (linux.getErrno(linux.fstatat(file.handle, "", &stat_buf, linux.AT.EMPTY_PATH))) { + switch (linux.E.init(linux.fstatat(file.handle, "", &stat_buf, linux.AT.EMPTY_PATH))) { .SUCCESS => {}, else => unreachable, } diff --git a/lib/std/os/linux/tls.zig b/lib/std/os/linux/tls.zig index 6973d1ea2e..82dc3bf759 100644 --- a/lib/std/os/linux/tls.zig +++ b/lib/std/os/linux/tls.zig @@ -1,10 +1,11 @@ const std = @import("std"); -const os = std.os; const mem = std.mem; const elf = std.elf; const math = std.math; const assert = std.debug.assert; const native_arch = @import("builtin").cpu.arch; +const linux = std.os.linux; +const posix = std.posix; // This file implements the two TLS variants [1] used by ELF-based systems. // @@ -111,7 +112,7 @@ pub var tls_image: TLSImage = undefined; pub fn setThreadPointer(addr: usize) void { switch (native_arch) { .x86 => { - var user_desc = std.os.linux.user_desc{ + var user_desc: linux.user_desc = .{ .entry_number = tls_image.gdt_entry_number, .base_addr = addr, .limit = 0xfffff, @@ -124,7 +125,7 @@ pub fn setThreadPointer(addr: usize) void { .useable = 1, }, }; - const rc = std.os.linux.syscall1(.set_thread_area, @intFromPtr(&user_desc)); + const rc = linux.syscall1(.set_thread_area, @intFromPtr(&user_desc)); assert(rc == 0); const gdt_entry_number = user_desc.entry_number; @@ -137,7 +138,7 @@ pub fn setThreadPointer(addr: usize) void { ); }, .x86_64 => { - const rc = std.os.linux.syscall2(.arch_prctl, std.os.linux.ARCH.SET_FS, addr); + const rc = linux.syscall2(.arch_prctl, linux.ARCH.SET_FS, addr); assert(rc == 0); }, .aarch64, .aarch64_be => { @@ -148,7 +149,7 @@ pub fn setThreadPointer(addr: usize) void { ); }, .arm, .thumb => { - const rc = std.os.linux.syscall1(.set_tls, addr); + const rc = linux.syscall1(.set_tls, addr); assert(rc == 0); }, .riscv64 => { @@ -159,7 +160,7 @@ pub fn setThreadPointer(addr: usize) void { ); }, .mips, .mipsel, .mips64, .mips64el => { - const rc = std.os.linux.syscall1(.set_thread_area, addr); + const rc = linux.syscall1(.set_thread_area, addr); assert(rc == 0); }, .powerpc, .powerpcle => { @@ -320,14 +321,14 @@ pub fn initStaticTLS(phdrs: []elf.Phdr) void { break :blk main_thread_tls_buffer[0..tls_image.alloc_size]; } - const alloc_tls_area = os.mmap( + const alloc_tls_area = posix.mmap( null, tls_image.alloc_size + tls_image.alloc_align - 1, - os.PROT.READ | os.PROT.WRITE, + posix.PROT.READ | posix.PROT.WRITE, .{ .TYPE = .PRIVATE, .ANONYMOUS = true }, -1, 0, - ) catch os.abort(); + ) catch posix.abort(); // Make sure the slice is correctly aligned. const begin_addr = @intFromPtr(alloc_tls_area.ptr); diff --git a/lib/std/os/linux/vdso.zig b/lib/std/os/linux/vdso.zig index 50e7ce1dfd..4e62679b26 100644 --- a/lib/std/os/linux/vdso.zig +++ b/lib/std/os/linux/vdso.zig @@ -5,7 +5,7 @@ const mem = std.mem; const maxInt = std.math.maxInt; pub fn lookup(vername: []const u8, name: []const u8) usize { - const vdso_addr = std.os.system.getauxval(std.elf.AT_SYSINFO_EHDR); + const vdso_addr = linux.getauxval(std.elf.AT_SYSINFO_EHDR); if (vdso_addr == 0) return 0; const eh = @as(*elf.Ehdr, @ptrFromInt(vdso_addr)); diff --git a/lib/std/os/linux/x86.zig b/lib/std/os/linux/x86.zig index 44ee45d316..52a0215922 100644 --- a/lib/std/os/linux/x86.zig +++ b/lib/std/os/linux/x86.zig @@ -3,8 +3,8 @@ const maxInt = std.math.maxInt; const linux = std.os.linux; const SYS = linux.SYS; const socklen_t = linux.socklen_t; -const iovec = std.os.iovec; -const iovec_const = std.os.iovec_const; +const iovec = std.posix.iovec; +const iovec_const = std.posix.iovec_const; const uid_t = linux.uid_t; const gid_t = linux.gid_t; const pid_t = linux.pid_t; diff --git a/lib/std/os/linux/x86_64.zig b/lib/std/os/linux/x86_64.zig index 2d69d539ae..b21e56c0e5 100644 --- a/lib/std/os/linux/x86_64.zig +++ b/lib/std/os/linux/x86_64.zig @@ -2,8 +2,8 @@ const std = @import("../../std.zig"); const maxInt = std.math.maxInt; const linux = std.os.linux; const SYS = linux.SYS; -const iovec = std.os.iovec; -const iovec_const = std.os.iovec_const; +const iovec = std.posix.iovec; +const iovec_const = std.posix.iovec_const; const pid_t = linux.pid_t; const uid_t = linux.uid_t; diff --git a/lib/std/os/plan9.zig b/lib/std/os/plan9.zig index 354e05e570..a01e6f59eb 100644 --- a/lib/std/os/plan9.zig +++ b/lib/std/os/plan9.zig @@ -11,13 +11,96 @@ pub const syscall_bits = switch (builtin.cpu.arch) { .x86_64 => @import("plan9/x86_64.zig"), else => @compileError("more plan9 syscall implementations (needs more inline asm in stage2"), }; -pub const E = @import("plan9/errno.zig").E; -/// Get the errno from a syscall return value, or 0 for no error. -pub fn getErrno(r: usize) E { - const signed_r = @as(isize, @bitCast(r)); - const int = if (signed_r > -4096 and signed_r < 0) -signed_r else 0; - return @as(E, @enumFromInt(int)); -} +/// Ported from /sys/include/ape/errno.h +pub const E = enum(u16) { + SUCCESS = 0, + DOM = 1000, + RANGE = 1001, + PLAN9 = 1002, + + @"2BIG" = 1, + ACCES = 2, + AGAIN = 3, + // WOULDBLOCK = 3, // TODO errno.h has 2 names for 3 + BADF = 4, + BUSY = 5, + CHILD = 6, + DEADLK = 7, + EXIST = 8, + FAULT = 9, + FBIG = 10, + INTR = 11, + INVAL = 12, + IO = 13, + ISDIR = 14, + MFILE = 15, + MLINK = 16, + NAMETOOLONG = 17, + NFILE = 18, + NODEV = 19, + NOENT = 20, + NOEXEC = 21, + NOLCK = 22, + NOMEM = 23, + NOSPC = 24, + NOSYS = 25, + NOTDIR = 26, + NOTEMPTY = 27, + NOTTY = 28, + NXIO = 29, + PERM = 30, + PIPE = 31, + ROFS = 32, + SPIPE = 33, + SRCH = 34, + XDEV = 35, + + // bsd networking software + NOTSOCK = 36, + PROTONOSUPPORT = 37, + // PROTOTYPE = 37, // TODO errno.h has two names for 37 + CONNREFUSED = 38, + AFNOSUPPORT = 39, + NOBUFS = 40, + OPNOTSUPP = 41, + ADDRINUSE = 42, + DESTADDRREQ = 43, + MSGSIZE = 44, + NOPROTOOPT = 45, + SOCKTNOSUPPORT = 46, + PFNOSUPPORT = 47, + ADDRNOTAVAIL = 48, + NETDOWN = 49, + NETUNREACH = 50, + NETRESET = 51, + CONNABORTED = 52, + ISCONN = 53, + NOTCONN = 54, + SHUTDOWN = 55, + TOOMANYREFS = 56, + TIMEDOUT = 57, + HOSTDOWN = 58, + HOSTUNREACH = 59, + GREG = 60, + + // These added in 1003.1b-1993 + CANCELED = 61, + INPROGRESS = 62, + + // We just add these to be compatible with std.os, which uses them, + // They should never get used. + DQUOT, + CONNRESET, + OVERFLOW, + LOOP, + TXTBSY, + + pub fn init(r: usize) E { + const signed_r: isize = @bitCast(r); + const int = if (signed_r > -4096 and signed_r < 0) -signed_r else 0; + return @enumFromInt(int); + } +}; // The max bytes that can be in the errstr buff pub const ERRMAX = 128; var errstr_buf: [ERRMAX]u8 = undefined; diff --git a/lib/std/os/plan9/errno.zig b/lib/std/os/plan9/errno.zig deleted file mode 100644 index 47a232e67c..0000000000 --- a/lib/std/os/plan9/errno.zig +++ /dev/null @@ -1,84 +0,0 @@ -//! Ported from /sys/include/ape/errno.h -pub const E = enum(u16) { - SUCCESS = 0, - DOM = 1000, - RANGE = 1001, - PLAN9 = 1002, - - @"2BIG" = 1, - ACCES = 2, - AGAIN = 3, - // WOULDBLOCK = 3, // TODO errno.h has 2 names for 3 - BADF = 4, - BUSY = 5, - CHILD = 6, - DEADLK = 7, - EXIST = 8, - FAULT = 9, - FBIG = 10, - INTR = 11, - INVAL = 12, - IO = 13, - ISDIR = 14, - MFILE = 15, - MLINK = 16, - NAMETOOLONG = 17, - NFILE = 18, - NODEV = 19, - NOENT = 20, - NOEXEC = 21, - NOLCK = 22, - NOMEM = 23, - NOSPC = 24, - NOSYS = 25, - NOTDIR = 26, - NOTEMPTY = 27, - NOTTY = 28, - NXIO = 29, - PERM = 30, - PIPE = 31, - ROFS = 32, - SPIPE = 33, - SRCH = 34, - XDEV = 35, - - // bsd networking software - NOTSOCK = 36, - PROTONOSUPPORT = 37, - // PROTOTYPE = 37, // TODO errno.h has two names for 37 - CONNREFUSED = 38, - AFNOSUPPORT = 39, - NOBUFS = 40, - OPNOTSUPP = 41, - ADDRINUSE = 42, - DESTADDRREQ = 43, - MSGSIZE = 44, - NOPROTOOPT = 45, - SOCKTNOSUPPORT = 46, - PFNOSUPPORT = 47, - ADDRNOTAVAIL = 48, - NETDOWN = 49, - NETUNREACH = 50, - NETRESET = 51, - CONNABORTED = 52, - ISCONN = 53, - NOTCONN = 54, - SHUTDOWN = 55, - TOOMANYREFS = 56, - TIMEDOUT = 57, - HOSTDOWN = 58, - HOSTUNREACH = 59, - GREG = 60, - - // These added in 1003.1b-1993 - CANCELED = 61, - INPROGRESS = 62, - - // We just add these to be compatible with std.os, which uses them, - // They should never get used. - DQUOT, - CONNRESET, - OVERFLOW, - LOOP, - TXTBSY, -}; diff --git a/lib/std/os/wasi.zig b/lib/std/os/wasi.zig index 016ce38a9f..d0f8bdbb66 100644 --- a/lib/std/os/wasi.zig +++ b/lib/std/os/wasi.zig @@ -17,8 +17,8 @@ comptime { // assert(@alignOf(u64) == 8); } -pub const iovec_t = std.os.iovec; -pub const ciovec_t = std.os.iovec_const; +pub const iovec_t = std.posix.iovec; +pub const ciovec_t = std.posix.iovec_const; pub extern "wasi_snapshot_preview1" fn args_get(argv: [*][*:0]u8, argv_buf: [*]u8) errno_t; pub extern "wasi_snapshot_preview1" fn args_sizes_get(argc: *usize, argv_buf_size: *usize) errno_t; diff --git a/lib/std/os/windows.zig b/lib/std/os/windows.zig index dec5402609..6ea7611fd7 100644 --- a/lib/std/os/windows.zig +++ b/lib/std/os/windows.zig @@ -11,6 +11,7 @@ const assert = std.debug.assert; const math = std.math; const maxInt = std.math.maxInt; const native_arch = builtin.cpu.arch; +const UnexpectedError = std.posix.UnexpectedError; test { if (builtin.os.tag == .windows) { @@ -547,7 +548,7 @@ pub const GetQueuedCompletionStatusError = error{ Cancelled, EOF, Timeout, -} || std.os.UnexpectedError; +} || UnexpectedError; pub fn GetQueuedCompletionStatusEx( completion_port: HANDLE, @@ -1701,7 +1702,7 @@ pub fn VirtualProtectEx(handle: HANDLE, addr: ?LPVOID, size: SIZE_T, new_prot: D .SUCCESS => return old_prot, .INVALID_ADDRESS => return error.InvalidAddress, // TODO: map errors - else => |rc| return std.os.windows.unexpectedStatus(rc), + else => |rc| return unexpectedStatus(rc), } } @@ -1946,7 +1947,7 @@ pub fn SetFileTime( pub const LockFileError = error{ SystemResources, WouldBlock, -} || std.os.UnexpectedError; +} || UnexpectedError; pub fn LockFile( FileHandle: HANDLE, @@ -1983,7 +1984,7 @@ pub fn LockFile( pub const UnlockFileError = error{ RangeNotLocked, -} || std.os.UnexpectedError; +} || UnexpectedError; pub fn UnlockFile( FileHandle: HANDLE, @@ -2672,8 +2673,8 @@ pub fn loadWinsockExtensionFunction(comptime T: type, sock: ws2_32.SOCKET, guid: /// Call this when you made a windows DLL call or something that does SetLastError /// and you get an unexpected error. -pub fn unexpectedError(err: Win32Error) std.os.UnexpectedError { - if (std.os.unexpected_error_tracing) { +pub fn unexpectedError(err: Win32Error) UnexpectedError { + if (std.posix.unexpected_error_tracing) { // 614 is the length of the longest windows error description var buf_wstr: [614]WCHAR = undefined; const len = kernel32.FormatMessageW( @@ -2694,14 +2695,14 @@ pub fn unexpectedError(err: Win32Error) std.os.UnexpectedError { return error.Unexpected; } -pub fn unexpectedWSAError(err: ws2_32.WinsockError) std.os.UnexpectedError { +pub fn unexpectedWSAError(err: ws2_32.WinsockError) UnexpectedError { return unexpectedError(@as(Win32Error, @enumFromInt(@intFromEnum(err)))); } /// Call this when you made a windows NtDll call /// and you get an unexpected status. -pub fn unexpectedStatus(status: NTSTATUS) std.os.UnexpectedError { - if (std.os.unexpected_error_tracing) { +pub fn unexpectedStatus(status: NTSTATUS) UnexpectedError { + if (std.posix.unexpected_error_tracing) { std.debug.print("error.Unexpected NTSTATUS=0x{x}\n", .{@intFromEnum(status)}); std.debug.dumpCurrentStackTrace(@returnAddress()); } @@ -4246,7 +4247,7 @@ pub const KNONVOLATILE_CONTEXT_POINTERS = switch (native_arch) { pub const EXCEPTION_POINTERS = extern struct { ExceptionRecord: *EXCEPTION_RECORD, - ContextRecord: *std.os.windows.CONTEXT, + ContextRecord: *CONTEXT, }; pub const VECTORED_EXCEPTION_HANDLER = *const fn (ExceptionInfo: *EXCEPTION_POINTERS) callconv(WINAPI) c_long; diff --git a/lib/std/os/windows/test.zig b/lib/std/os/windows/test.zig index 64d554c836..c9f6ccbce0 100644 --- a/lib/std/os/windows/test.zig +++ b/lib/std/os/windows/test.zig @@ -245,7 +245,7 @@ test "loadWinsockExtensionFunction" { const LPFN_CONNECTEX = *const fn ( Socket: windows.ws2_32.SOCKET, SockAddr: *const windows.ws2_32.sockaddr, - SockLen: std.os.socklen_t, + SockLen: std.posix.socklen_t, SendBuf: ?*const anyopaque, SendBufLen: windows.DWORD, BytesSent: *windows.DWORD, @@ -254,7 +254,7 @@ test "loadWinsockExtensionFunction" { _ = windows.loadWinsockExtensionFunction( LPFN_CONNECTEX, - try std.os.socket(std.os.AF.INET, std.os.SOCK.DGRAM, 0), + try std.posix.socket(std.posix.AF.INET, std.posix.SOCK.DGRAM, 0), windows.ws2_32.WSAID_CONNECTEX, ) catch |err| switch (err) { error.OperationNotSupported => unreachable, diff --git a/lib/std/os/windows/ws2_32.zig b/lib/std/os/windows/ws2_32.zig index ea53d621fd..12817906c2 100644 --- a/lib/std/os/windows/ws2_32.zig +++ b/lib/std/os/windows/ws2_32.zig @@ -850,6 +850,8 @@ pub const POLL = struct { pub const ERR = 1; pub const HUP = 2; pub const NVAL = 4; + pub const IN = RDNORM | RDBAND; + pub const OUT = WRNORM; }; pub const TF_DISCONNECT = 1; diff --git a/lib/std/pdb.zig b/lib/std/pdb.zig index 9640ec3569..ece1cc63dc 100644 --- a/lib/std/pdb.zig +++ b/lib/std/pdb.zig @@ -2,7 +2,6 @@ const std = @import("std.zig"); const io = std.io; const math = std.math; const mem = std.mem; -const os = std.os; const coff = std.coff; const fs = std.fs; const File = std.fs.File; diff --git a/lib/std/posix.zig b/lib/std/posix.zig new file mode 100644 index 0000000000..fb2262e267 --- /dev/null +++ b/lib/std/posix.zig @@ -0,0 +1,7326 @@ +//! POSIX API layer. +//! +//! This is more cross platform than using OS-specific APIs, however, it is +//! lower-level and less portable than other namespaces such as `std.fs` and +//! `std.process`. +//! +//! These APIs are generally lowered to libc function calls if and only if libc +//! is linked. Most operating systems other than Windows, Linux, and WASI +//! require always linking libc because they use it as the stable syscall ABI. +//! +//! Operating systems that are not POSIX-compliant are sometimes supported by +//! this API layer; sometimes not. Generally, an implementation will be +//! provided only if such implementation is straightforward on that operating +//! system. Otherwise, programmers are expected to use OS-specific logic to +//! deal with the exception. + +const builtin = @import("builtin"); +const root = @import("root"); +const std = @import("std.zig"); +const mem = std.mem; +const fs = std.fs; +const max_path_bytes = fs.MAX_PATH_BYTES; +const maxInt = std.math.maxInt; +const cast = std.math.cast; +const assert = std.debug.assert; +const native_os = builtin.os.tag; + +test { + _ = @import("posix/test.zig"); +} + +/// Whether to use libc for the POSIX API layer. +const use_libc = builtin.link_libc or switch (native_os) { + .windows, .wasi => true, + else => false, +}; + +const linux = std.os.linux; +const windows = std.os.windows; +const wasi = std.os.wasi; + +/// A libc-compatible API layer. +pub const system = if (use_libc) + std.c +else switch (native_os) { + .linux => linux, + .plan9 => std.os.plan9, + else => struct {}, +}; + +pub const AF = system.AF; +pub const AF_SUN = system.AF_SUN; +pub const ARCH = system.ARCH; +pub const AT = system.AT; +pub const AT_SUN = system.AT_SUN; +pub const CLOCK = system.CLOCK; +pub const CPU_COUNT = system.CPU_COUNT; +pub const CTL = system.CTL; +pub const DT = system.DT; +pub const E = system.E; +pub const Elf_Symndx = system.Elf_Symndx; +pub const F = system.F; +pub const FD_CLOEXEC = system.FD_CLOEXEC; +pub const Flock = system.Flock; +pub const HOST_NAME_MAX = system.HOST_NAME_MAX; +pub const HW = system.HW; +pub const IFNAMESIZE = system.IFNAMESIZE; +pub const IOV_MAX = system.IOV_MAX; +pub const IPPROTO = system.IPPROTO; +pub const KERN = system.KERN; +pub const Kevent = system.Kevent; +pub const LOCK = system.LOCK; +pub const MADV = system.MADV; +pub const MAP = system.MAP; +pub const MSF = system.MSF; +pub const MAX_ADDR_LEN = system.MAX_ADDR_LEN; +pub const MFD = system.MFD; +pub const MMAP2_UNIT = system.MMAP2_UNIT; +pub const MSG = system.MSG; +pub const NAME_MAX = system.NAME_MAX; +pub const O = system.O; +pub const PATH_MAX = system.PATH_MAX; +pub const POLL = system.POLL; +pub const POSIX_FADV = system.POSIX_FADV; +pub const PR = system.PR; +pub const PROT = system.PROT; +pub const REG = system.REG; +pub const RLIM = system.RLIM; +pub const RR = system.RR; +pub const S = system.S; +pub const SA = system.SA; +pub const SC = system.SC; +pub const _SC = system._SC; +pub const SEEK = system.SEEK; +pub const SHUT = system.SHUT; +pub const SIG = system.SIG; +pub const SIOCGIFINDEX = system.SIOCGIFINDEX; +pub const SO = system.SO; +pub const SOCK = system.SOCK; +pub const SOL = system.SOL; +pub const STDERR_FILENO = system.STDERR_FILENO; +pub const STDIN_FILENO = system.STDIN_FILENO; +pub const STDOUT_FILENO = system.STDOUT_FILENO; +pub const SYS = system.SYS; +pub const Sigaction = system.Sigaction; +pub const Stat = system.Stat; +pub const T = system.T; +pub const TCSA = system.TCSA; +pub const TCP = system.TCP; +pub const VDSO = system.VDSO; +pub const W = system.W; +pub const addrinfo = system.addrinfo; +pub const blkcnt_t = system.blkcnt_t; +pub const blksize_t = system.blksize_t; +pub const clock_t = system.clock_t; +pub const cpu_set_t = system.cpu_set_t; +pub const dev_t = system.dev_t; +pub const dl_phdr_info = system.dl_phdr_info; +pub const empty_sigset = system.empty_sigset; +pub const filled_sigset = system.filled_sigset; +pub const fd_t = system.fd_t; +pub const gid_t = system.gid_t; +pub const ifreq = system.ifreq; +pub const ino_t = system.ino_t; +pub const mcontext_t = system.mcontext_t; +pub const mode_t = system.mode_t; +pub const msghdr = system.msghdr; +pub const msghdr_const = system.msghdr_const; +pub const nfds_t = system.nfds_t; +pub const nlink_t = system.nlink_t; +pub const off_t = system.off_t; +pub const pid_t = system.pid_t; +pub const pollfd = system.pollfd; +pub const port_t = system.port_t; +pub const port_event = system.port_event; +pub const port_notify = system.port_notify; +pub const file_obj = system.file_obj; +pub const rlim_t = system.rlim_t; +pub const rlimit = system.rlimit; +pub const rlimit_resource = system.rlimit_resource; +pub const rusage = system.rusage; +pub const sa_family_t = system.sa_family_t; +pub const siginfo_t = system.siginfo_t; +pub const sigset_t = system.sigset_t; +pub const sockaddr = system.sockaddr; +pub const socklen_t = system.socklen_t; +pub const stack_t = system.stack_t; +pub const time_t = system.time_t; +pub const timespec = system.timespec; +pub const timestamp_t = system.timestamp_t; +pub const timeval = system.timeval; +pub const timezone = system.timezone; +pub const ucontext_t = system.ucontext_t; +pub const uid_t = system.uid_t; +pub const user_desc = system.user_desc; +pub const utsname = system.utsname; +pub const winsize = system.winsize; + +pub const termios = system.termios; +pub const CSIZE = system.CSIZE; +pub const NCCS = system.NCCS; +pub const cc_t = system.cc_t; +pub const V = system.V; +pub const speed_t = system.speed_t; +pub const tc_iflag_t = system.tc_iflag_t; +pub const tc_oflag_t = system.tc_oflag_t; +pub const tc_cflag_t = system.tc_cflag_t; +pub const tc_lflag_t = system.tc_lflag_t; + +pub const F_OK = system.F_OK; +pub const R_OK = system.R_OK; +pub const W_OK = system.W_OK; +pub const X_OK = system.X_OK; + +pub const iovec = extern struct { + iov_base: [*]u8, + iov_len: usize, +}; + +pub const iovec_const = extern struct { + iov_base: [*]const u8, + iov_len: usize, +}; + +pub const ACCMODE = enum(u2) { + RDONLY = 0, + WRONLY = 1, + RDWR = 2, +}; + +pub const LOG = struct { + /// system is unusable + pub const EMERG = 0; + /// action must be taken immediately + pub const ALERT = 1; + /// critical conditions + pub const CRIT = 2; + /// error conditions + pub const ERR = 3; + /// warning conditions + pub const WARNING = 4; + /// normal but significant condition + pub const NOTICE = 5; + /// informational + pub const INFO = 6; + /// debug-level messages + pub const DEBUG = 7; +}; + +pub const socket_t = if (native_os == .windows) windows.ws2_32.SOCKET else fd_t; + +/// Obtains errno from the return value of a system function call. +/// +/// For some systems this will obtain the value directly from the syscall return value; +/// for others it will use a thread-local errno variable. Therefore, this +/// function only returns a well-defined value when it is called directly after +/// the system function call whose errno value is intended to be observed. +pub fn errno(rc: anytype) E { + if (use_libc) { + return if (rc == -1) @enumFromInt(std.c._errno().*) else .SUCCESS; + } + const signed: isize = @bitCast(rc); + const int = if (signed > -4096 and signed < 0) -signed else 0; + return @enumFromInt(int); +} + +/// Closes the file descriptor. +/// +/// This function is not capable of returning any indication of failure. An +/// application which wants to ensure writes have succeeded before closing must +/// call `fsync` before `close`. +/// +/// The Zig standard library does not support POSIX thread cancellation. +pub fn close(fd: fd_t) void { + if (native_os == .windows) { + return windows.CloseHandle(fd); + } + if (native_os == .wasi and !builtin.link_libc) { + _ = std.os.wasi.fd_close(fd); + return; + } + if (builtin.target.isDarwin()) { + // This avoids the EINTR problem. + switch (errno(std.c.@"close$NOCANCEL"(fd))) { + .BADF => unreachable, // Always a race condition. + else => return, + } + } + switch (errno(system.close(fd))) { + .BADF => unreachable, // Always a race condition. + .INTR => return, // This is still a success. See https://github.com/ziglang/zig/issues/2425 + else => return, + } +} + +pub const FChmodError = error{ + AccessDenied, + InputOutput, + SymLinkLoop, + FileNotFound, + SystemResources, + ReadOnlyFileSystem, +} || UnexpectedError; + +/// Changes the mode of the file referred to by the file descriptor. +/// +/// The process must have the correct privileges in order to do this +/// successfully, or must have the effective user ID matching the owner +/// of the file. +pub fn fchmod(fd: fd_t, mode: mode_t) FChmodError!void { + if (!fs.has_executable_bit) @compileError("fchmod unsupported by target OS"); + + while (true) { + const res = system.fchmod(fd, mode); + switch (errno(res)) { + .SUCCESS => return, + .INTR => continue, + .BADF => unreachable, + .FAULT => unreachable, + .INVAL => unreachable, + .ACCES => return error.AccessDenied, + .IO => return error.InputOutput, + .LOOP => return error.SymLinkLoop, + .NOENT => return error.FileNotFound, + .NOMEM => return error.SystemResources, + .NOTDIR => return error.FileNotFound, + .PERM => return error.AccessDenied, + .ROFS => return error.ReadOnlyFileSystem, + else => |err| return unexpectedErrno(err), + } + } +} + +pub const FChmodAtError = FChmodError || error{ + /// A component of `path` exceeded `NAME_MAX`, or the entire path exceeded + /// `PATH_MAX`. + NameTooLong, + /// `path` resolves to a symbolic link, and `AT.SYMLINK_NOFOLLOW` was set + /// in `flags`. This error only occurs on Linux, where changing the mode of + /// a symbolic link has no meaning and can cause undefined behaviour on + /// certain filesystems. + /// + /// The procfs fallback was used but procfs was not mounted. + OperationNotSupported, + /// The procfs fallback was used but the process exceeded its open file + /// limit. + ProcessFdQuotaExceeded, + /// The procfs fallback was used but the system exceeded it open file limit. + SystemFdQuotaExceeded, +}; + +/// Changes the `mode` of `path` relative to the directory referred to by +/// `dirfd`. The process must have the correct privileges in order to do this +/// successfully, or must have the effective user ID matching the owner of the +/// file. +/// +/// On Linux the `fchmodat2` syscall will be used if available, otherwise a +/// workaround using procfs will be employed. Changing the mode of a symbolic +/// link with `AT.SYMLINK_NOFOLLOW` set will also return +/// `OperationNotSupported`, as: +/// +/// 1. Permissions on the link are ignored when resolving its target. +/// 2. This operation has been known to invoke undefined behaviour across +/// different filesystems[1]. +/// +/// [1]: https://sourceware.org/legacy-ml/libc-alpha/2020-02/msg00467.html. +pub inline fn fchmodat(dirfd: fd_t, path: []const u8, mode: mode_t, flags: u32) FChmodAtError!void { + if (!fs.has_executable_bit) @compileError("fchmodat unsupported by target OS"); + + // No special handling for linux is needed if we can use the libc fallback + // or `flags` is empty. Glibc only added the fallback in 2.32. + const skip_fchmodat_fallback = native_os != .linux or + std.c.versionCheck(.{ .major = 2, .minor = 32, .patch = 0 }) or + flags == 0; + + // This function is marked inline so that when flags is comptime-known, + // skip_fchmodat_fallback will be comptime-known true. + if (skip_fchmodat_fallback) + return fchmodat1(dirfd, path, mode, flags); + + return fchmodat2(dirfd, path, mode, flags); +} + +fn fchmodat1(dirfd: fd_t, path: []const u8, mode: mode_t, flags: u32) FChmodAtError!void { + const path_c = try toPosixPath(path); + while (true) { + const res = system.fchmodat(dirfd, &path_c, mode, flags); + switch (errno(res)) { + .SUCCESS => return, + .INTR => continue, + .BADF => unreachable, + .FAULT => unreachable, + .INVAL => unreachable, + .ACCES => return error.AccessDenied, + .IO => return error.InputOutput, + .LOOP => return error.SymLinkLoop, + .MFILE => return error.ProcessFdQuotaExceeded, + .NAMETOOLONG => return error.NameTooLong, + .NFILE => return error.SystemFdQuotaExceeded, + .NOENT => return error.FileNotFound, + .NOTDIR => return error.FileNotFound, + .NOMEM => return error.SystemResources, + .OPNOTSUPP => return error.OperationNotSupported, + .PERM => return error.AccessDenied, + .ROFS => return error.ReadOnlyFileSystem, + else => |err| return unexpectedErrno(err), + } + } +} + +fn fchmodat2(dirfd: fd_t, path: []const u8, mode: mode_t, flags: u32) FChmodAtError!void { + const global = struct { + var has_fchmodat2: bool = true; + }; + const path_c = try toPosixPath(path); + const use_fchmodat2 = (builtin.os.isAtLeast(.linux, .{ .major = 6, .minor = 6, .patch = 0 }) orelse false) and + @atomicLoad(bool, &global.has_fchmodat2, .monotonic); + while (use_fchmodat2) { + // Later on this should be changed to `system.fchmodat2` + // when the musl/glibc add a wrapper. + const res = linux.fchmodat2(dirfd, &path_c, mode, flags); + switch (E.init(res)) { + .SUCCESS => return, + .INTR => continue, + .BADF => unreachable, + .FAULT => unreachable, + .INVAL => unreachable, + .ACCES => return error.AccessDenied, + .IO => return error.InputOutput, + .LOOP => return error.SymLinkLoop, + .NOENT => return error.FileNotFound, + .NOMEM => return error.SystemResources, + .NOTDIR => return error.FileNotFound, + .OPNOTSUPP => return error.OperationNotSupported, + .PERM => return error.AccessDenied, + .ROFS => return error.ReadOnlyFileSystem, + + .NOSYS => { + @atomicStore(bool, &global.has_fchmodat2, false, .monotonic); + break; + }, + else => |err| return unexpectedErrno(err), + } + } + + // Fallback to changing permissions using procfs: + // + // 1. Open `path` as a `PATH` descriptor. + // 2. Stat the fd and check if it isn't a symbolic link. + // 3. Generate the procfs reference to the fd via `/proc/self/fd/{fd}`. + // 4. Pass the procfs path to `chmod` with the `mode`. + var pathfd: fd_t = undefined; + while (true) { + const rc = system.openat(dirfd, &path_c, .{ .PATH = true, .NOFOLLOW = true, .CLOEXEC = true }, @as(mode_t, 0)); + switch (errno(rc)) { + .SUCCESS => { + pathfd = @intCast(rc); + break; + }, + .INTR => continue, + .FAULT => unreachable, + .INVAL => unreachable, + .ACCES => return error.AccessDenied, + .PERM => return error.AccessDenied, + .LOOP => return error.SymLinkLoop, + .MFILE => return error.ProcessFdQuotaExceeded, + .NAMETOOLONG => return error.NameTooLong, + .NFILE => return error.SystemFdQuotaExceeded, + .NOENT => return error.FileNotFound, + .NOMEM => return error.SystemResources, + else => |err| return unexpectedErrno(err), + } + } + defer close(pathfd); + + const stat = fstatatZ(pathfd, "", AT.EMPTY_PATH) catch |err| switch (err) { + error.NameTooLong => unreachable, + error.FileNotFound => unreachable, + error.InvalidUtf8 => unreachable, + else => |e| return e, + }; + if ((stat.mode & S.IFMT) == S.IFLNK) + return error.OperationNotSupported; + + var procfs_buf: ["/proc/self/fd/-2147483648\x00".len]u8 = undefined; + const proc_path = std.fmt.bufPrintZ(procfs_buf[0..], "/proc/self/fd/{d}", .{pathfd}) catch unreachable; + while (true) { + const res = system.chmod(proc_path, mode); + switch (errno(res)) { + // Getting NOENT here means that procfs isn't mounted. + .NOENT => return error.OperationNotSupported, + + .SUCCESS => return, + .INTR => continue, + .BADF => unreachable, + .FAULT => unreachable, + .INVAL => unreachable, + .ACCES => return error.AccessDenied, + .IO => return error.InputOutput, + .LOOP => return error.SymLinkLoop, + .NOMEM => return error.SystemResources, + .NOTDIR => return error.FileNotFound, + .PERM => return error.AccessDenied, + .ROFS => return error.ReadOnlyFileSystem, + else => |err| return unexpectedErrno(err), + } + } +} + +pub const FChownError = error{ + AccessDenied, + InputOutput, + SymLinkLoop, + FileNotFound, + SystemResources, + ReadOnlyFileSystem, +} || UnexpectedError; + +/// Changes the owner and group of the file referred to by the file descriptor. +/// The process must have the correct privileges in order to do this +/// successfully. The group may be changed by the owner of the directory to +/// any group of which the owner is a member. If the owner or group is +/// specified as `null`, the ID is not changed. +pub fn fchown(fd: fd_t, owner: ?uid_t, group: ?gid_t) FChownError!void { + switch (native_os) { + .windows, .wasi => @compileError("Unsupported OS"), + else => {}, + } + + while (true) { + const res = system.fchown(fd, owner orelse ~@as(uid_t, 0), group orelse ~@as(gid_t, 0)); + + switch (errno(res)) { + .SUCCESS => return, + .INTR => continue, + .BADF => unreachable, // Can be reached if the fd refers to a directory opened without `OpenDirOptions{ .iterate = true }` + + .FAULT => unreachable, + .INVAL => unreachable, + .ACCES => return error.AccessDenied, + .IO => return error.InputOutput, + .LOOP => return error.SymLinkLoop, + .NOENT => return error.FileNotFound, + .NOMEM => return error.SystemResources, + .NOTDIR => return error.FileNotFound, + .PERM => return error.AccessDenied, + .ROFS => return error.ReadOnlyFileSystem, + else => |err| return unexpectedErrno(err), + } + } +} + +pub const RebootError = error{ + PermissionDenied, +} || UnexpectedError; + +pub const RebootCommand = switch (native_os) { + .linux => union(linux.LINUX_REBOOT.CMD) { + RESTART: void, + HALT: void, + CAD_ON: void, + CAD_OFF: void, + POWER_OFF: void, + RESTART2: [*:0]const u8, + SW_SUSPEND: void, + KEXEC: void, + }, + else => @compileError("Unsupported OS"), +}; + +pub fn reboot(cmd: RebootCommand) RebootError!void { + switch (native_os) { + .linux => { + switch (linux.E.init(linux.reboot( + .MAGIC1, + .MAGIC2, + cmd, + switch (cmd) { + .RESTART2 => |s| s, + else => null, + }, + ))) { + .SUCCESS => {}, + .PERM => return error.PermissionDenied, + else => |err| return std.os.unexpectedErrno(err), + } + switch (cmd) { + .CAD_OFF => {}, + .CAD_ON => {}, + .SW_SUSPEND => {}, + + .HALT => unreachable, + .KEXEC => unreachable, + .POWER_OFF => unreachable, + .RESTART => unreachable, + .RESTART2 => unreachable, + } + }, + else => @compileError("Unsupported OS"), + } +} + +pub const GetRandomError = OpenError; + +/// Obtain a series of random bytes. These bytes can be used to seed user-space +/// random number generators or for cryptographic purposes. +/// When linking against libc, this calls the +/// appropriate OS-specific library call. Otherwise it uses the zig standard +/// library implementation. +pub fn getrandom(buffer: []u8) GetRandomError!void { + if (native_os == .windows) { + return windows.RtlGenRandom(buffer); + } + if (native_os == .linux or native_os == .freebsd) { + var buf = buffer; + const use_c = native_os != .linux or + std.c.versionCheck(std.SemanticVersion{ .major = 2, .minor = 25, .patch = 0 }); + + while (buf.len != 0) { + const num_read: usize, const err = if (use_c) res: { + const rc = std.c.getrandom(buf.ptr, buf.len, 0); + break :res .{ @bitCast(rc), errno(rc) }; + } else res: { + const rc = linux.getrandom(buf.ptr, buf.len, 0); + break :res .{ rc, linux.E.init(rc) }; + }; + + switch (err) { + .SUCCESS => buf = buf[num_read..], + .INVAL => unreachable, + .FAULT => unreachable, + .INTR => continue, + .NOSYS => return getRandomBytesDevURandom(buf), + else => return unexpectedErrno(err), + } + } + return; + } + if (native_os == .emscripten) { + const err = errno(std.c.getentropy(buffer.ptr, buffer.len)); + switch (err) { + .SUCCESS => return, + else => return unexpectedErrno(err), + } + } + switch (native_os) { + .netbsd, .openbsd, .macos, .ios, .tvos, .watchos => { + system.arc4random_buf(buffer.ptr, buffer.len); + return; + }, + .wasi => switch (wasi.random_get(buffer.ptr, buffer.len)) { + .SUCCESS => return, + else => |err| return unexpectedErrno(err), + }, + else => return getRandomBytesDevURandom(buffer), + } +} + +fn getRandomBytesDevURandom(buf: []u8) !void { + const fd = try openZ("/dev/urandom", .{ .ACCMODE = .RDONLY, .CLOEXEC = true }, 0); + defer close(fd); + + const st = try fstat(fd); + if (!S.ISCHR(st.mode)) { + return error.NoDevice; + } + + const file: fs.File = .{ .handle = fd }; + const stream = file.reader(); + stream.readNoEof(buf) catch return error.Unexpected; +} + +/// Causes abnormal process termination. +/// If linking against libc, this calls the abort() libc function. Otherwise +/// it raises SIGABRT followed by SIGKILL and finally lo +/// Invokes the current signal handler for SIGABRT, if any. +pub fn abort() noreturn { + @setCold(true); + // MSVCRT abort() sometimes opens a popup window which is undesirable, so + // even when linking libc on Windows we use our own abort implementation. + // See https://github.com/ziglang/zig/issues/2071 for more details. + if (native_os == .windows) { + if (builtin.mode == .Debug) { + @breakpoint(); + } + windows.kernel32.ExitProcess(3); + } + if (!builtin.link_libc and native_os == .linux) { + // The Linux man page says that the libc abort() function + // "first unblocks the SIGABRT signal", but this is a footgun + // for user-defined signal handlers that want to restore some state in + // some program sections and crash in others. + // So, the user-installed SIGABRT handler is run, if present. + raise(SIG.ABRT) catch {}; + + // Disable all signal handlers. + sigprocmask(SIG.BLOCK, &linux.all_mask, null); + + // Only one thread may proceed to the rest of abort(). + if (!builtin.single_threaded) { + const global = struct { + var abort_entered: bool = false; + }; + while (@cmpxchgWeak(bool, &global.abort_entered, false, true, .seq_cst, .seq_cst)) |_| {} + } + + // Install default handler so that the tkill below will terminate. + const sigact = Sigaction{ + .handler = .{ .handler = SIG.DFL }, + .mask = empty_sigset, + .flags = 0, + }; + sigaction(SIG.ABRT, &sigact, null) catch |err| switch (err) { + error.OperationNotSupported => unreachable, + }; + + _ = linux.tkill(linux.gettid(), SIG.ABRT); + + const sigabrtmask: linux.sigset_t = [_]u32{0} ** 31 ++ [_]u32{1 << (SIG.ABRT - 1)}; + sigprocmask(SIG.UNBLOCK, &sigabrtmask, null); + + // Beyond this point should be unreachable. + @as(*allowzero volatile u8, @ptrFromInt(0)).* = 0; + raise(SIG.KILL) catch {}; + exit(127); // Pid 1 might not be signalled in some containers. + } + switch (native_os) { + .uefi, .wasi, .emscripten, .cuda, .amdhsa => @trap(), + else => system.abort(), + } +} + +pub const RaiseError = UnexpectedError; + +pub fn raise(sig: u8) RaiseError!void { + if (builtin.link_libc) { + switch (errno(system.raise(sig))) { + .SUCCESS => return, + else => |err| return unexpectedErrno(err), + } + } + + if (native_os == .linux) { + var set: sigset_t = undefined; + // block application signals + sigprocmask(SIG.BLOCK, &linux.app_mask, &set); + + const tid = linux.gettid(); + const rc = linux.tkill(tid, sig); + + // restore signal mask + sigprocmask(SIG.SETMASK, &set, null); + + switch (errno(rc)) { + .SUCCESS => return, + else => |err| return unexpectedErrno(err), + } + } + + @compileError("std.os.raise unimplemented for this target"); +} + +pub const KillError = error{ ProcessNotFound, PermissionDenied } || UnexpectedError; + +pub fn kill(pid: pid_t, sig: u8) KillError!void { + switch (errno(system.kill(pid, sig))) { + .SUCCESS => return, + .INVAL => unreachable, // invalid signal + .PERM => return error.PermissionDenied, + .SRCH => return error.ProcessNotFound, + else => |err| return unexpectedErrno(err), + } +} + +/// Exits all threads of the program with the specified status code. +pub fn exit(status: u8) noreturn { + if (builtin.link_libc) { + std.c.exit(status); + } + if (native_os == .windows) { + windows.kernel32.ExitProcess(status); + } + if (native_os == .wasi) { + wasi.proc_exit(status); + } + if (native_os == .linux and !builtin.single_threaded) { + linux.exit_group(status); + } + if (native_os == .uefi) { + const uefi = std.os.uefi; + // exit() is only available if exitBootServices() has not been called yet. + // This call to exit should not fail, so we don't care about its return value. + if (uefi.system_table.boot_services) |bs| { + _ = bs.exit(uefi.handle, @enumFromInt(status), 0, null); + } + // If we can't exit, reboot the system instead. + uefi.system_table.runtime_services.resetSystem(.ResetCold, @enumFromInt(status), 0, null); + } + system.exit(status); +} + +pub const ReadError = error{ + InputOutput, + SystemResources, + IsDir, + OperationAborted, + BrokenPipe, + ConnectionResetByPeer, + ConnectionTimedOut, + NotOpenForReading, + SocketNotConnected, + + /// This error occurs when no global event loop is configured, + /// and reading from the file descriptor would block. + WouldBlock, + + /// In WASI, this error occurs when the file descriptor does + /// not hold the required rights to read from it. + AccessDenied, +} || UnexpectedError; + +/// Returns the number of bytes that were read, which can be less than +/// buf.len. If 0 bytes were read, that means EOF. +/// If `fd` is opened in non blocking mode, the function will return error.WouldBlock +/// when EAGAIN is received. +/// +/// Linux has a limit on how many bytes may be transferred in one `read` call, which is `0x7ffff000` +/// on both 64-bit and 32-bit systems. This is due to using a signed C int as the return value, as +/// well as stuffing the errno codes into the last `4096` values. This is noted on the `read` man page. +/// The limit on Darwin is `0x7fffffff`, trying to read more than that returns EINVAL. +/// The corresponding POSIX limit is `maxInt(isize)`. +pub fn read(fd: fd_t, buf: []u8) ReadError!usize { + if (buf.len == 0) return 0; + if (native_os == .windows) { + return windows.ReadFile(fd, buf, null); + } + if (native_os == .wasi and !builtin.link_libc) { + const iovs = [1]iovec{iovec{ + .iov_base = buf.ptr, + .iov_len = buf.len, + }}; + + var nread: usize = undefined; + switch (wasi.fd_read(fd, &iovs, iovs.len, &nread)) { + .SUCCESS => return nread, + .INTR => unreachable, + .INVAL => unreachable, + .FAULT => unreachable, + .AGAIN => unreachable, + .BADF => return error.NotOpenForReading, // Can be a race condition. + .IO => return error.InputOutput, + .ISDIR => return error.IsDir, + .NOBUFS => return error.SystemResources, + .NOMEM => return error.SystemResources, + .NOTCONN => return error.SocketNotConnected, + .CONNRESET => return error.ConnectionResetByPeer, + .TIMEDOUT => return error.ConnectionTimedOut, + .NOTCAPABLE => return error.AccessDenied, + else => |err| return unexpectedErrno(err), + } + } + + // Prevents EINVAL. + const max_count = switch (native_os) { + .linux => 0x7ffff000, + .macos, .ios, .watchos, .tvos => maxInt(i32), + else => maxInt(isize), + }; + while (true) { + const rc = system.read(fd, buf.ptr, @min(buf.len, max_count)); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .INTR => continue, + .INVAL => unreachable, + .FAULT => unreachable, + .AGAIN => return error.WouldBlock, + .BADF => return error.NotOpenForReading, // Can be a race condition. + .IO => return error.InputOutput, + .ISDIR => return error.IsDir, + .NOBUFS => return error.SystemResources, + .NOMEM => return error.SystemResources, + .NOTCONN => return error.SocketNotConnected, + .CONNRESET => return error.ConnectionResetByPeer, + .TIMEDOUT => return error.ConnectionTimedOut, + else => |err| return unexpectedErrno(err), + } + } +} + +/// Number of bytes read is returned. Upon reading end-of-file, zero is returned. +/// +/// For POSIX systems, if `fd` is opened in non blocking mode, the function will +/// return error.WouldBlock when EAGAIN is received. +/// On Windows, if the application has a global event loop enabled, I/O Completion Ports are +/// used to perform the I/O. `error.WouldBlock` is not possible on Windows. +/// +/// This operation is non-atomic on the following systems: +/// * Windows +/// On these systems, the read races with concurrent writes to the same file descriptor. +/// +/// This function assumes that all vectors, including zero-length vectors, have +/// a pointer within the address space of the application. +pub fn readv(fd: fd_t, iov: []const iovec) ReadError!usize { + if (native_os == .windows) { + // TODO improve this to use ReadFileScatter + if (iov.len == 0) return 0; + const first = iov[0]; + return read(fd, first.iov_base[0..first.iov_len]); + } + if (native_os == .wasi and !builtin.link_libc) { + var nread: usize = undefined; + switch (wasi.fd_read(fd, iov.ptr, iov.len, &nread)) { + .SUCCESS => return nread, + .INTR => unreachable, + .INVAL => unreachable, + .FAULT => unreachable, + .AGAIN => unreachable, // currently not support in WASI + .BADF => return error.NotOpenForReading, // can be a race condition + .IO => return error.InputOutput, + .ISDIR => return error.IsDir, + .NOBUFS => return error.SystemResources, + .NOMEM => return error.SystemResources, + .NOTCONN => return error.SocketNotConnected, + .CONNRESET => return error.ConnectionResetByPeer, + .TIMEDOUT => return error.ConnectionTimedOut, + .NOTCAPABLE => return error.AccessDenied, + else => |err| return unexpectedErrno(err), + } + } + + while (true) { + const rc = system.readv(fd, iov.ptr, @min(iov.len, IOV_MAX)); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .INTR => continue, + .INVAL => unreachable, + .FAULT => unreachable, + .AGAIN => return error.WouldBlock, + .BADF => return error.NotOpenForReading, // can be a race condition + .IO => return error.InputOutput, + .ISDIR => return error.IsDir, + .NOBUFS => return error.SystemResources, + .NOMEM => return error.SystemResources, + .NOTCONN => return error.SocketNotConnected, + .CONNRESET => return error.ConnectionResetByPeer, + .TIMEDOUT => return error.ConnectionTimedOut, + else => |err| return unexpectedErrno(err), + } + } +} + +pub const PReadError = ReadError || error{Unseekable}; + +/// Number of bytes read is returned. Upon reading end-of-file, zero is returned. +/// +/// Retries when interrupted by a signal. +/// +/// For POSIX systems, if `fd` is opened in non blocking mode, the function will +/// return error.WouldBlock when EAGAIN is received. +/// On Windows, if the application has a global event loop enabled, I/O Completion Ports are +/// used to perform the I/O. `error.WouldBlock` is not possible on Windows. +/// +/// Linux has a limit on how many bytes may be transferred in one `pread` call, which is `0x7ffff000` +/// on both 64-bit and 32-bit systems. This is due to using a signed C int as the return value, as +/// well as stuffing the errno codes into the last `4096` values. This is noted on the `read` man page. +/// The limit on Darwin is `0x7fffffff`, trying to read more than that returns EINVAL. +/// The corresponding POSIX limit is `maxInt(isize)`. +pub fn pread(fd: fd_t, buf: []u8, offset: u64) PReadError!usize { + if (buf.len == 0) return 0; + if (native_os == .windows) { + return windows.ReadFile(fd, buf, offset); + } + if (native_os == .wasi and !builtin.link_libc) { + const iovs = [1]iovec{iovec{ + .iov_base = buf.ptr, + .iov_len = buf.len, + }}; + + var nread: usize = undefined; + switch (wasi.fd_pread(fd, &iovs, iovs.len, offset, &nread)) { + .SUCCESS => return nread, + .INTR => unreachable, + .INVAL => unreachable, + .FAULT => unreachable, + .AGAIN => unreachable, + .BADF => return error.NotOpenForReading, // Can be a race condition. + .IO => return error.InputOutput, + .ISDIR => return error.IsDir, + .NOBUFS => return error.SystemResources, + .NOMEM => return error.SystemResources, + .NOTCONN => return error.SocketNotConnected, + .CONNRESET => return error.ConnectionResetByPeer, + .TIMEDOUT => return error.ConnectionTimedOut, + .NXIO => return error.Unseekable, + .SPIPE => return error.Unseekable, + .OVERFLOW => return error.Unseekable, + .NOTCAPABLE => return error.AccessDenied, + else => |err| return unexpectedErrno(err), + } + } + + // Prevent EINVAL. + const max_count = switch (native_os) { + .linux => 0x7ffff000, + .macos, .ios, .watchos, .tvos => maxInt(i32), + else => maxInt(isize), + }; + + const pread_sym = if (lfs64_abi) system.pread64 else system.pread; + while (true) { + const rc = pread_sym(fd, buf.ptr, @min(buf.len, max_count), @bitCast(offset)); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .INTR => continue, + .INVAL => unreachable, + .FAULT => unreachable, + .AGAIN => return error.WouldBlock, + .BADF => return error.NotOpenForReading, // Can be a race condition. + .IO => return error.InputOutput, + .ISDIR => return error.IsDir, + .NOBUFS => return error.SystemResources, + .NOMEM => return error.SystemResources, + .NOTCONN => return error.SocketNotConnected, + .CONNRESET => return error.ConnectionResetByPeer, + .TIMEDOUT => return error.ConnectionTimedOut, + .NXIO => return error.Unseekable, + .SPIPE => return error.Unseekable, + .OVERFLOW => return error.Unseekable, + else => |err| return unexpectedErrno(err), + } + } +} + +pub const TruncateError = error{ + FileTooBig, + InputOutput, + FileBusy, + + /// In WASI, this error occurs when the file descriptor does + /// not hold the required rights to call `ftruncate` on it. + AccessDenied, +} || UnexpectedError; + +pub fn ftruncate(fd: fd_t, length: u64) TruncateError!void { + if (native_os == .windows) { + var io_status_block: windows.IO_STATUS_BLOCK = undefined; + var eof_info = windows.FILE_END_OF_FILE_INFORMATION{ + .EndOfFile = @bitCast(length), + }; + + const rc = windows.ntdll.NtSetInformationFile( + fd, + &io_status_block, + &eof_info, + @sizeOf(windows.FILE_END_OF_FILE_INFORMATION), + .FileEndOfFileInformation, + ); + + switch (rc) { + .SUCCESS => return, + .INVALID_HANDLE => unreachable, // Handle not open for writing + .ACCESS_DENIED => return error.AccessDenied, + else => return windows.unexpectedStatus(rc), + } + } + if (native_os == .wasi and !builtin.link_libc) { + switch (wasi.fd_filestat_set_size(fd, length)) { + .SUCCESS => return, + .INTR => unreachable, + .FBIG => return error.FileTooBig, + .IO => return error.InputOutput, + .PERM => return error.AccessDenied, + .TXTBSY => return error.FileBusy, + .BADF => unreachable, // Handle not open for writing + .INVAL => unreachable, // Handle not open for writing + .NOTCAPABLE => return error.AccessDenied, + else => |err| return unexpectedErrno(err), + } + } + + const ftruncate_sym = if (lfs64_abi) system.ftruncate64 else system.ftruncate; + while (true) { + switch (errno(ftruncate_sym(fd, @bitCast(length)))) { + .SUCCESS => return, + .INTR => continue, + .FBIG => return error.FileTooBig, + .IO => return error.InputOutput, + .PERM => return error.AccessDenied, + .TXTBSY => return error.FileBusy, + .BADF => unreachable, // Handle not open for writing + .INVAL => unreachable, // Handle not open for writing + else => |err| return unexpectedErrno(err), + } + } +} + +/// Number of bytes read is returned. Upon reading end-of-file, zero is returned. +/// +/// Retries when interrupted by a signal. +/// +/// For POSIX systems, if `fd` is opened in non blocking mode, the function will +/// return error.WouldBlock when EAGAIN is received. +/// On Windows, if the application has a global event loop enabled, I/O Completion Ports are +/// used to perform the I/O. `error.WouldBlock` is not possible on Windows. +/// +/// This operation is non-atomic on the following systems: +/// * Darwin +/// * Windows +/// On these systems, the read races with concurrent writes to the same file descriptor. +pub fn preadv(fd: fd_t, iov: []const iovec, offset: u64) PReadError!usize { + const have_pread_but_not_preadv = switch (native_os) { + .windows, .macos, .ios, .watchos, .tvos, .haiku => true, + else => false, + }; + if (have_pread_but_not_preadv) { + // We could loop here; but proper usage of `preadv` must handle partial reads anyway. + // So we simply read into the first vector only. + if (iov.len == 0) return 0; + const first = iov[0]; + return pread(fd, first.iov_base[0..first.iov_len], offset); + } + if (native_os == .wasi and !builtin.link_libc) { + var nread: usize = undefined; + switch (wasi.fd_pread(fd, iov.ptr, iov.len, offset, &nread)) { + .SUCCESS => return nread, + .INTR => unreachable, + .INVAL => unreachable, + .FAULT => unreachable, + .AGAIN => unreachable, + .BADF => return error.NotOpenForReading, // can be a race condition + .IO => return error.InputOutput, + .ISDIR => return error.IsDir, + .NOBUFS => return error.SystemResources, + .NOMEM => return error.SystemResources, + .NOTCONN => return error.SocketNotConnected, + .CONNRESET => return error.ConnectionResetByPeer, + .TIMEDOUT => return error.ConnectionTimedOut, + .NXIO => return error.Unseekable, + .SPIPE => return error.Unseekable, + .OVERFLOW => return error.Unseekable, + .NOTCAPABLE => return error.AccessDenied, + else => |err| return unexpectedErrno(err), + } + } + + const preadv_sym = if (lfs64_abi) system.preadv64 else system.preadv; + while (true) { + const rc = preadv_sym(fd, iov.ptr, @min(iov.len, IOV_MAX), @bitCast(offset)); + switch (errno(rc)) { + .SUCCESS => return @bitCast(rc), + .INTR => continue, + .INVAL => unreachable, + .FAULT => unreachable, + .AGAIN => return error.WouldBlock, + .BADF => return error.NotOpenForReading, // can be a race condition + .IO => return error.InputOutput, + .ISDIR => return error.IsDir, + .NOBUFS => return error.SystemResources, + .NOMEM => return error.SystemResources, + .NOTCONN => return error.SocketNotConnected, + .CONNRESET => return error.ConnectionResetByPeer, + .TIMEDOUT => return error.ConnectionTimedOut, + .NXIO => return error.Unseekable, + .SPIPE => return error.Unseekable, + .OVERFLOW => return error.Unseekable, + else => |err| return unexpectedErrno(err), + } + } +} + +pub const WriteError = error{ + DiskQuota, + FileTooBig, + InputOutput, + NoSpaceLeft, + DeviceBusy, + InvalidArgument, + + /// In WASI, this error may occur when the file descriptor does + /// not hold the required rights to write to it. + AccessDenied, + BrokenPipe, + SystemResources, + OperationAborted, + NotOpenForWriting, + + /// The process cannot access the file because another process has locked + /// a portion of the file. Windows-only. + LockViolation, + + /// This error occurs when no global event loop is configured, + /// and reading from the file descriptor would block. + WouldBlock, + + /// Connection reset by peer. + ConnectionResetByPeer, +} || UnexpectedError; + +/// Write to a file descriptor. +/// Retries when interrupted by a signal. +/// Returns the number of bytes written. If nonzero bytes were supplied, this will be nonzero. +/// +/// Note that a successful write() may transfer fewer than count bytes. Such partial writes can +/// occur for various reasons; for example, because there was insufficient space on the disk +/// device to write all of the requested bytes, or because a blocked write() to a socket, pipe, or +/// similar was interrupted by a signal handler after it had transferred some, but before it had +/// transferred all of the requested bytes. In the event of a partial write, the caller can make +/// another write() call to transfer the remaining bytes. The subsequent call will either +/// transfer further bytes or may result in an error (e.g., if the disk is now full). +/// +/// For POSIX systems, if `fd` is opened in non blocking mode, the function will +/// return error.WouldBlock when EAGAIN is received. +/// On Windows, if the application has a global event loop enabled, I/O Completion Ports are +/// used to perform the I/O. `error.WouldBlock` is not possible on Windows. +/// +/// Linux has a limit on how many bytes may be transferred in one `write` call, which is `0x7ffff000` +/// on both 64-bit and 32-bit systems. This is due to using a signed C int as the return value, as +/// well as stuffing the errno codes into the last `4096` values. This is noted on the `write` man page. +/// The limit on Darwin is `0x7fffffff`, trying to read more than that returns EINVAL. +/// The corresponding POSIX limit is `maxInt(isize)`. +pub fn write(fd: fd_t, bytes: []const u8) WriteError!usize { + if (bytes.len == 0) return 0; + if (native_os == .windows) { + return windows.WriteFile(fd, bytes, null); + } + + if (native_os == .wasi and !builtin.link_libc) { + const ciovs = [_]iovec_const{iovec_const{ + .iov_base = bytes.ptr, + .iov_len = bytes.len, + }}; + var nwritten: usize = undefined; + switch (wasi.fd_write(fd, &ciovs, ciovs.len, &nwritten)) { + .SUCCESS => return nwritten, + .INTR => unreachable, + .INVAL => unreachable, + .FAULT => unreachable, + .AGAIN => unreachable, + .BADF => return error.NotOpenForWriting, // can be a race condition. + .DESTADDRREQ => unreachable, // `connect` was never called. + .DQUOT => return error.DiskQuota, + .FBIG => return error.FileTooBig, + .IO => return error.InputOutput, + .NOSPC => return error.NoSpaceLeft, + .PERM => return error.AccessDenied, + .PIPE => return error.BrokenPipe, + .NOTCAPABLE => return error.AccessDenied, + else => |err| return unexpectedErrno(err), + } + } + + const max_count = switch (native_os) { + .linux => 0x7ffff000, + .macos, .ios, .watchos, .tvos => maxInt(i32), + else => maxInt(isize), + }; + while (true) { + const rc = system.write(fd, bytes.ptr, @min(bytes.len, max_count)); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .INTR => continue, + .INVAL => return error.InvalidArgument, + .FAULT => unreachable, + .AGAIN => return error.WouldBlock, + .BADF => return error.NotOpenForWriting, // can be a race condition. + .DESTADDRREQ => unreachable, // `connect` was never called. + .DQUOT => return error.DiskQuota, + .FBIG => return error.FileTooBig, + .IO => return error.InputOutput, + .NOSPC => return error.NoSpaceLeft, + .PERM => return error.AccessDenied, + .PIPE => return error.BrokenPipe, + .CONNRESET => return error.ConnectionResetByPeer, + .BUSY => return error.DeviceBusy, + else => |err| return unexpectedErrno(err), + } + } +} + +/// Write multiple buffers to a file descriptor. +/// Retries when interrupted by a signal. +/// Returns the number of bytes written. If nonzero bytes were supplied, this will be nonzero. +/// +/// Note that a successful write() may transfer fewer bytes than supplied. Such partial writes can +/// occur for various reasons; for example, because there was insufficient space on the disk +/// device to write all of the requested bytes, or because a blocked write() to a socket, pipe, or +/// similar was interrupted by a signal handler after it had transferred some, but before it had +/// transferred all of the requested bytes. In the event of a partial write, the caller can make +/// another write() call to transfer the remaining bytes. The subsequent call will either +/// transfer further bytes or may result in an error (e.g., if the disk is now full). +/// +/// For POSIX systems, if `fd` is opened in non blocking mode, the function will +/// return error.WouldBlock when EAGAIN is received. +/// On Windows, if the application has a global event loop enabled, I/O Completion Ports are +/// used to perform the I/O. `error.WouldBlock` is not possible on Windows. +/// +/// If `iov.len` is larger than `IOV_MAX`, a partial write will occur. +/// +/// This function assumes that all vectors, including zero-length vectors, have +/// a pointer within the address space of the application. +pub fn writev(fd: fd_t, iov: []const iovec_const) WriteError!usize { + if (native_os == .windows) { + // TODO improve this to use WriteFileScatter + if (iov.len == 0) return 0; + const first = iov[0]; + return write(fd, first.iov_base[0..first.iov_len]); + } + if (native_os == .wasi and !builtin.link_libc) { + var nwritten: usize = undefined; + switch (wasi.fd_write(fd, iov.ptr, iov.len, &nwritten)) { + .SUCCESS => return nwritten, + .INTR => unreachable, + .INVAL => unreachable, + .FAULT => unreachable, + .AGAIN => unreachable, + .BADF => return error.NotOpenForWriting, // can be a race condition. + .DESTADDRREQ => unreachable, // `connect` was never called. + .DQUOT => return error.DiskQuota, + .FBIG => return error.FileTooBig, + .IO => return error.InputOutput, + .NOSPC => return error.NoSpaceLeft, + .PERM => return error.AccessDenied, + .PIPE => return error.BrokenPipe, + .NOTCAPABLE => return error.AccessDenied, + else => |err| return unexpectedErrno(err), + } + } + + while (true) { + const rc = system.writev(fd, iov.ptr, @min(iov.len, IOV_MAX)); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .INTR => continue, + .INVAL => return error.InvalidArgument, + .FAULT => unreachable, + .AGAIN => return error.WouldBlock, + .BADF => return error.NotOpenForWriting, // Can be a race condition. + .DESTADDRREQ => unreachable, // `connect` was never called. + .DQUOT => return error.DiskQuota, + .FBIG => return error.FileTooBig, + .IO => return error.InputOutput, + .NOSPC => return error.NoSpaceLeft, + .PERM => return error.AccessDenied, + .PIPE => return error.BrokenPipe, + .CONNRESET => return error.ConnectionResetByPeer, + .BUSY => return error.DeviceBusy, + else => |err| return unexpectedErrno(err), + } + } +} + +pub const PWriteError = WriteError || error{Unseekable}; + +/// Write to a file descriptor, with a position offset. +/// Retries when interrupted by a signal. +/// Returns the number of bytes written. If nonzero bytes were supplied, this will be nonzero. +/// +/// Note that a successful write() may transfer fewer bytes than supplied. Such partial writes can +/// occur for various reasons; for example, because there was insufficient space on the disk +/// device to write all of the requested bytes, or because a blocked write() to a socket, pipe, or +/// similar was interrupted by a signal handler after it had transferred some, but before it had +/// transferred all of the requested bytes. In the event of a partial write, the caller can make +/// another write() call to transfer the remaining bytes. The subsequent call will either +/// transfer further bytes or may result in an error (e.g., if the disk is now full). +/// +/// For POSIX systems, if `fd` is opened in non blocking mode, the function will +/// return error.WouldBlock when EAGAIN is received. +/// On Windows, if the application has a global event loop enabled, I/O Completion Ports are +/// used to perform the I/O. `error.WouldBlock` is not possible on Windows. +/// +/// Linux has a limit on how many bytes may be transferred in one `pwrite` call, which is `0x7ffff000` +/// on both 64-bit and 32-bit systems. This is due to using a signed C int as the return value, as +/// well as stuffing the errno codes into the last `4096` values. This is noted on the `write` man page. +/// The limit on Darwin is `0x7fffffff`, trying to write more than that returns EINVAL. +/// The corresponding POSIX limit is `maxInt(isize)`. +pub fn pwrite(fd: fd_t, bytes: []const u8, offset: u64) PWriteError!usize { + if (bytes.len == 0) return 0; + if (native_os == .windows) { + return windows.WriteFile(fd, bytes, offset); + } + if (native_os == .wasi and !builtin.link_libc) { + const ciovs = [1]iovec_const{iovec_const{ + .iov_base = bytes.ptr, + .iov_len = bytes.len, + }}; + + var nwritten: usize = undefined; + switch (wasi.fd_pwrite(fd, &ciovs, ciovs.len, offset, &nwritten)) { + .SUCCESS => return nwritten, + .INTR => unreachable, + .INVAL => unreachable, + .FAULT => unreachable, + .AGAIN => unreachable, + .BADF => return error.NotOpenForWriting, // can be a race condition. + .DESTADDRREQ => unreachable, // `connect` was never called. + .DQUOT => return error.DiskQuota, + .FBIG => return error.FileTooBig, + .IO => return error.InputOutput, + .NOSPC => return error.NoSpaceLeft, + .PERM => return error.AccessDenied, + .PIPE => return error.BrokenPipe, + .NXIO => return error.Unseekable, + .SPIPE => return error.Unseekable, + .OVERFLOW => return error.Unseekable, + .NOTCAPABLE => return error.AccessDenied, + else => |err| return unexpectedErrno(err), + } + } + + // Prevent EINVAL. + const max_count = switch (native_os) { + .linux => 0x7ffff000, + .macos, .ios, .watchos, .tvos => maxInt(i32), + else => maxInt(isize), + }; + + const pwrite_sym = if (lfs64_abi) system.pwrite64 else system.pwrite; + while (true) { + const rc = pwrite_sym(fd, bytes.ptr, @min(bytes.len, max_count), @bitCast(offset)); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .INTR => continue, + .INVAL => return error.InvalidArgument, + .FAULT => unreachable, + .AGAIN => return error.WouldBlock, + .BADF => return error.NotOpenForWriting, // Can be a race condition. + .DESTADDRREQ => unreachable, // `connect` was never called. + .DQUOT => return error.DiskQuota, + .FBIG => return error.FileTooBig, + .IO => return error.InputOutput, + .NOSPC => return error.NoSpaceLeft, + .PERM => return error.AccessDenied, + .PIPE => return error.BrokenPipe, + .NXIO => return error.Unseekable, + .SPIPE => return error.Unseekable, + .OVERFLOW => return error.Unseekable, + .BUSY => return error.DeviceBusy, + else => |err| return unexpectedErrno(err), + } + } +} + +/// Write multiple buffers to a file descriptor, with a position offset. +/// Retries when interrupted by a signal. +/// Returns the number of bytes written. If nonzero bytes were supplied, this will be nonzero. +/// +/// Note that a successful write() may transfer fewer than count bytes. Such partial writes can +/// occur for various reasons; for example, because there was insufficient space on the disk +/// device to write all of the requested bytes, or because a blocked write() to a socket, pipe, or +/// similar was interrupted by a signal handler after it had transferred some, but before it had +/// transferred all of the requested bytes. In the event of a partial write, the caller can make +/// another write() call to transfer the remaining bytes. The subsequent call will either +/// transfer further bytes or may result in an error (e.g., if the disk is now full). +/// +/// If `fd` is opened in non blocking mode, the function will +/// return error.WouldBlock when EAGAIN is received. +/// +/// The following systems do not have this syscall, and will return partial writes if more than one +/// vector is provided: +/// * Darwin +/// * Windows +/// +/// If `iov.len` is larger than `IOV_MAX`, a partial write will occur. +pub fn pwritev(fd: fd_t, iov: []const iovec_const, offset: u64) PWriteError!usize { + const have_pwrite_but_not_pwritev = switch (native_os) { + .windows, .macos, .ios, .watchos, .tvos, .haiku => true, + else => false, + }; + + if (have_pwrite_but_not_pwritev) { + // We could loop here; but proper usage of `pwritev` must handle partial writes anyway. + // So we simply write the first vector only. + if (iov.len == 0) return 0; + const first = iov[0]; + return pwrite(fd, first.iov_base[0..first.iov_len], offset); + } + if (native_os == .wasi and !builtin.link_libc) { + var nwritten: usize = undefined; + switch (wasi.fd_pwrite(fd, iov.ptr, iov.len, offset, &nwritten)) { + .SUCCESS => return nwritten, + .INTR => unreachable, + .INVAL => unreachable, + .FAULT => unreachable, + .AGAIN => unreachable, + .BADF => return error.NotOpenForWriting, // Can be a race condition. + .DESTADDRREQ => unreachable, // `connect` was never called. + .DQUOT => return error.DiskQuota, + .FBIG => return error.FileTooBig, + .IO => return error.InputOutput, + .NOSPC => return error.NoSpaceLeft, + .PERM => return error.AccessDenied, + .PIPE => return error.BrokenPipe, + .NXIO => return error.Unseekable, + .SPIPE => return error.Unseekable, + .OVERFLOW => return error.Unseekable, + .NOTCAPABLE => return error.AccessDenied, + else => |err| return unexpectedErrno(err), + } + } + + const pwritev_sym = if (lfs64_abi) system.pwritev64 else system.pwritev; + while (true) { + const rc = pwritev_sym(fd, iov.ptr, @min(iov.len, IOV_MAX), @bitCast(offset)); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .INTR => continue, + .INVAL => return error.InvalidArgument, + .FAULT => unreachable, + .AGAIN => return error.WouldBlock, + .BADF => return error.NotOpenForWriting, // Can be a race condition. + .DESTADDRREQ => unreachable, // `connect` was never called. + .DQUOT => return error.DiskQuota, + .FBIG => return error.FileTooBig, + .IO => return error.InputOutput, + .NOSPC => return error.NoSpaceLeft, + .PERM => return error.AccessDenied, + .PIPE => return error.BrokenPipe, + .NXIO => return error.Unseekable, + .SPIPE => return error.Unseekable, + .OVERFLOW => return error.Unseekable, + .BUSY => return error.DeviceBusy, + else => |err| return unexpectedErrno(err), + } + } +} + +pub const OpenError = error{ + /// In WASI, this error may occur when the file descriptor does + /// not hold the required rights to open a new resource relative to it. + AccessDenied, + SymLinkLoop, + ProcessFdQuotaExceeded, + SystemFdQuotaExceeded, + NoDevice, + FileNotFound, + + /// The path exceeded `max_path_bytes` bytes. + NameTooLong, + + /// Insufficient kernel memory was available, or + /// the named file is a FIFO and per-user hard limit on + /// memory allocation for pipes has been reached. + SystemResources, + + /// The file is too large to be opened. This error is unreachable + /// for 64-bit targets, as well as when opening directories. + FileTooBig, + + /// The path refers to directory but the `DIRECTORY` flag was not provided. + IsDir, + + /// A new path cannot be created because the device has no room for the new file. + /// This error is only reachable when the `CREAT` flag is provided. + NoSpaceLeft, + + /// A component used as a directory in the path was not, in fact, a directory, or + /// `DIRECTORY` was specified and the path was not a directory. + NotDir, + + /// The path already exists and the `CREAT` and `EXCL` flags were provided. + PathAlreadyExists, + DeviceBusy, + + /// The underlying filesystem does not support file locks + FileLocksNotSupported, + + /// Path contains characters that are disallowed by the underlying filesystem. + BadPathName, + + /// WASI-only; file paths must be valid UTF-8. + InvalidUtf8, + + /// Windows-only; file paths provided by the user must be valid WTF-8. + /// https://simonsapin.github.io/wtf-8/ + InvalidWtf8, + + /// On Windows, `\\server` or `\\server\share` was not found. + NetworkNotFound, + + /// One of these three things: + /// * pathname refers to an executable image which is currently being + /// executed and write access was requested. + /// * pathname refers to a file that is currently in use as a swap + /// file, and the O_TRUNC flag was specified. + /// * pathname refers to a file that is currently being read by the + /// kernel (e.g., for module/firmware loading), and write access was + /// requested. + FileBusy, + + WouldBlock, +} || UnexpectedError; + +/// Open and possibly create a file. Keeps trying if it gets interrupted. +/// On Windows, `file_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// On WASI, `file_path` should be encoded as valid UTF-8. +/// On other platforms, `file_path` is an opaque sequence of bytes with no particular encoding. +/// See also `openZ`. +pub fn open(file_path: []const u8, flags: O, perm: mode_t) OpenError!fd_t { + if (native_os == .windows) { + @compileError("Windows does not support POSIX; use Windows-specific API or cross-platform std.fs API"); + } else if (native_os == .wasi and !builtin.link_libc) { + return openat(AT.FDCWD, file_path, flags, perm); + } + const file_path_c = try toPosixPath(file_path); + return openZ(&file_path_c, flags, perm); +} + +/// Open and possibly create a file. Keeps trying if it gets interrupted. +/// On Windows, `file_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// On WASI, `file_path` should be encoded as valid UTF-8. +/// On other platforms, `file_path` is an opaque sequence of bytes with no particular encoding. +/// See also `open`. +pub fn openZ(file_path: [*:0]const u8, flags: O, perm: mode_t) OpenError!fd_t { + if (native_os == .windows) { + @compileError("Windows does not support POSIX; use Windows-specific API or cross-platform std.fs API"); + } else if (native_os == .wasi and !builtin.link_libc) { + return open(mem.sliceTo(file_path, 0), flags, perm); + } + + const open_sym = if (lfs64_abi) system.open64 else system.open; + while (true) { + const rc = open_sym(file_path, flags, perm); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .INTR => continue, + + .FAULT => unreachable, + .INVAL => unreachable, + .ACCES => return error.AccessDenied, + .FBIG => return error.FileTooBig, + .OVERFLOW => return error.FileTooBig, + .ISDIR => return error.IsDir, + .LOOP => return error.SymLinkLoop, + .MFILE => return error.ProcessFdQuotaExceeded, + .NAMETOOLONG => return error.NameTooLong, + .NFILE => return error.SystemFdQuotaExceeded, + .NODEV => return error.NoDevice, + .NOENT => return error.FileNotFound, + .NOMEM => return error.SystemResources, + .NOSPC => return error.NoSpaceLeft, + .NOTDIR => return error.NotDir, + .PERM => return error.AccessDenied, + .EXIST => return error.PathAlreadyExists, + .BUSY => return error.DeviceBusy, + else => |err| return unexpectedErrno(err), + } + } +} + +/// Open and possibly create a file. Keeps trying if it gets interrupted. +/// `file_path` is relative to the open directory handle `dir_fd`. +/// On Windows, `file_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// On WASI, `file_path` should be encoded as valid UTF-8. +/// On other platforms, `file_path` is an opaque sequence of bytes with no particular encoding. +/// See also `openatZ`. +pub fn openat(dir_fd: fd_t, file_path: []const u8, flags: O, mode: mode_t) OpenError!fd_t { + if (native_os == .windows) { + @compileError("Windows does not support POSIX; use Windows-specific API or cross-platform std.fs API"); + } else if (native_os == .wasi and !builtin.link_libc) { + // `mode` is ignored on WASI, which does not support unix-style file permissions + const opts = try openOptionsFromFlagsWasi(flags); + const fd = try openatWasi( + dir_fd, + file_path, + opts.lookup_flags, + opts.oflags, + opts.fs_flags, + opts.fs_rights_base, + opts.fs_rights_inheriting, + ); + errdefer close(fd); + + if (flags.write) { + const info = try std.os.fstat_wasi(fd); + if (info.filetype == .DIRECTORY) + return error.IsDir; + } + + return fd; + } + const file_path_c = try toPosixPath(file_path); + return openatZ(dir_fd, &file_path_c, flags, mode); +} + +/// Open and possibly create a file in WASI. +pub fn openatWasi( + dir_fd: fd_t, + file_path: []const u8, + lookup_flags: wasi.lookupflags_t, + oflags: wasi.oflags_t, + fdflags: wasi.fdflags_t, + base: wasi.rights_t, + inheriting: wasi.rights_t, +) OpenError!fd_t { + while (true) { + var fd: fd_t = undefined; + switch (wasi.path_open(dir_fd, lookup_flags, file_path.ptr, file_path.len, oflags, base, inheriting, fdflags, &fd)) { + .SUCCESS => return fd, + .INTR => continue, + + .FAULT => unreachable, + .INVAL => unreachable, + .BADF => unreachable, + .ACCES => return error.AccessDenied, + .FBIG => return error.FileTooBig, + .OVERFLOW => return error.FileTooBig, + .ISDIR => return error.IsDir, + .LOOP => return error.SymLinkLoop, + .MFILE => return error.ProcessFdQuotaExceeded, + .NAMETOOLONG => return error.NameTooLong, + .NFILE => return error.SystemFdQuotaExceeded, + .NODEV => return error.NoDevice, + .NOENT => return error.FileNotFound, + .NOMEM => return error.SystemResources, + .NOSPC => return error.NoSpaceLeft, + .NOTDIR => return error.NotDir, + .PERM => return error.AccessDenied, + .EXIST => return error.PathAlreadyExists, + .BUSY => return error.DeviceBusy, + .NOTCAPABLE => return error.AccessDenied, + .ILSEQ => return error.InvalidUtf8, + else => |err| return unexpectedErrno(err), + } + } +} + +/// A struct to contain all lookup/rights flags accepted by `wasi.path_open` +const WasiOpenOptions = struct { + oflags: wasi.oflags_t, + lookup_flags: wasi.lookupflags_t, + fs_rights_base: wasi.rights_t, + fs_rights_inheriting: wasi.rights_t, + fs_flags: wasi.fdflags_t, +}; + +/// Compute rights + flags corresponding to the provided POSIX access mode. +fn openOptionsFromFlagsWasi(oflag: O) OpenError!WasiOpenOptions { + const w = std.os.wasi; + + // Next, calculate the read/write rights to request, depending on the + // provided POSIX access mode + var rights: w.rights_t = .{}; + if (oflag.read) { + rights.FD_READ = true; + rights.FD_READDIR = true; + } + if (oflag.write) { + rights.FD_DATASYNC = true; + rights.FD_WRITE = true; + rights.FD_ALLOCATE = true; + rights.FD_FILESTAT_SET_SIZE = true; + } + + // https://github.com/ziglang/zig/issues/18882 + const flag_bits: u32 = @bitCast(oflag); + const oflags_int: u16 = @as(u12, @truncate(flag_bits >> 12)); + const fs_flags_int: u16 = @as(u12, @truncate(flag_bits)); + + return .{ + // https://github.com/ziglang/zig/issues/18882 + .oflags = @bitCast(oflags_int), + .lookup_flags = .{ + .SYMLINK_FOLLOW = !oflag.NOFOLLOW, + }, + .fs_rights_base = rights, + .fs_rights_inheriting = rights, + // https://github.com/ziglang/zig/issues/18882 + .fs_flags = @bitCast(fs_flags_int), + }; +} + +/// Open and possibly create a file. Keeps trying if it gets interrupted. +/// `file_path` is relative to the open directory handle `dir_fd`. +/// On Windows, `file_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// On WASI, `file_path` should be encoded as valid UTF-8. +/// On other platforms, `file_path` is an opaque sequence of bytes with no particular encoding. +/// See also `openat`. +pub fn openatZ(dir_fd: fd_t, file_path: [*:0]const u8, flags: O, mode: mode_t) OpenError!fd_t { + if (native_os == .windows) { + @compileError("Windows does not support POSIX; use Windows-specific API or cross-platform std.fs API"); + } else if (native_os == .wasi and !builtin.link_libc) { + return openat(dir_fd, mem.sliceTo(file_path, 0), flags, mode); + } + + const openat_sym = if (lfs64_abi) system.openat64 else system.openat; + while (true) { + const rc = openat_sym(dir_fd, file_path, flags, mode); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .INTR => continue, + + .FAULT => unreachable, + .INVAL => unreachable, + .BADF => unreachable, + .ACCES => return error.AccessDenied, + .FBIG => return error.FileTooBig, + .OVERFLOW => return error.FileTooBig, + .ISDIR => return error.IsDir, + .LOOP => return error.SymLinkLoop, + .MFILE => return error.ProcessFdQuotaExceeded, + .NAMETOOLONG => return error.NameTooLong, + .NFILE => return error.SystemFdQuotaExceeded, + .NODEV => return error.NoDevice, + .NOENT => return error.FileNotFound, + .NOMEM => return error.SystemResources, + .NOSPC => return error.NoSpaceLeft, + .NOTDIR => return error.NotDir, + .PERM => return error.AccessDenied, + .EXIST => return error.PathAlreadyExists, + .BUSY => return error.DeviceBusy, + .OPNOTSUPP => return error.FileLocksNotSupported, + .AGAIN => return error.WouldBlock, + .TXTBSY => return error.FileBusy, + else => |err| return unexpectedErrno(err), + } + } +} + +pub fn dup(old_fd: fd_t) !fd_t { + const rc = system.dup(old_fd); + return switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .MFILE => error.ProcessFdQuotaExceeded, + .BADF => unreachable, // invalid file descriptor + else => |err| return unexpectedErrno(err), + }; +} + +pub fn dup2(old_fd: fd_t, new_fd: fd_t) !void { + while (true) { + switch (errno(system.dup2(old_fd, new_fd))) { + .SUCCESS => return, + .BUSY, .INTR => continue, + .MFILE => return error.ProcessFdQuotaExceeded, + .INVAL => unreachable, // invalid parameters passed to dup2 + .BADF => unreachable, // invalid file descriptor + else => |err| return unexpectedErrno(err), + } + } +} + +pub const ExecveError = error{ + SystemResources, + AccessDenied, + InvalidExe, + FileSystem, + IsDir, + FileNotFound, + NotDir, + FileBusy, + ProcessFdQuotaExceeded, + SystemFdQuotaExceeded, + NameTooLong, +} || UnexpectedError; + +/// This function ignores PATH environment variable. See `execvpeZ` for that. +pub fn execveZ( + path: [*:0]const u8, + child_argv: [*:null]const ?[*:0]const u8, + envp: [*:null]const ?[*:0]const u8, +) ExecveError { + switch (errno(system.execve(path, child_argv, envp))) { + .SUCCESS => unreachable, + .FAULT => unreachable, + .@"2BIG" => return error.SystemResources, + .MFILE => return error.ProcessFdQuotaExceeded, + .NAMETOOLONG => return error.NameTooLong, + .NFILE => return error.SystemFdQuotaExceeded, + .NOMEM => return error.SystemResources, + .ACCES => return error.AccessDenied, + .PERM => return error.AccessDenied, + .INVAL => return error.InvalidExe, + .NOEXEC => return error.InvalidExe, + .IO => return error.FileSystem, + .LOOP => return error.FileSystem, + .ISDIR => return error.IsDir, + .NOENT => return error.FileNotFound, + .NOTDIR => return error.NotDir, + .TXTBSY => return error.FileBusy, + else => |err| switch (native_os) { + .macos, .ios, .tvos, .watchos => switch (err) { + .BADEXEC => return error.InvalidExe, + .BADARCH => return error.InvalidExe, + else => return unexpectedErrno(err), + }, + .linux => switch (err) { + .LIBBAD => return error.InvalidExe, + else => return unexpectedErrno(err), + }, + else => return unexpectedErrno(err), + }, + } +} + +pub const Arg0Expand = enum { + expand, + no_expand, +}; + +/// Like `execvpeZ` except if `arg0_expand` is `.expand`, then `argv` is mutable, +/// and `argv[0]` is expanded to be the same absolute path that is passed to the execve syscall. +/// If this function returns with an error, `argv[0]` will be restored to the value it was when it was passed in. +pub fn execvpeZ_expandArg0( + comptime arg0_expand: Arg0Expand, + file: [*:0]const u8, + child_argv: switch (arg0_expand) { + .expand => [*:null]?[*:0]const u8, + .no_expand => [*:null]const ?[*:0]const u8, + }, + envp: [*:null]const ?[*:0]const u8, +) ExecveError { + const file_slice = mem.sliceTo(file, 0); + if (mem.indexOfScalar(u8, file_slice, '/') != null) return execveZ(file, child_argv, envp); + + const PATH = getenvZ("PATH") orelse "/usr/local/bin:/bin/:/usr/bin"; + // Use of PATH_MAX here is valid as the path_buf will be passed + // directly to the operating system in execveZ. + var path_buf: [PATH_MAX]u8 = undefined; + var it = mem.tokenizeScalar(u8, PATH, ':'); + var seen_eacces = false; + var err: ExecveError = error.FileNotFound; + + // In case of expanding arg0 we must put it back if we return with an error. + const prev_arg0 = child_argv[0]; + defer switch (arg0_expand) { + .expand => child_argv[0] = prev_arg0, + .no_expand => {}, + }; + + while (it.next()) |search_path| { + const path_len = search_path.len + file_slice.len + 1; + if (path_buf.len < path_len + 1) return error.NameTooLong; + @memcpy(path_buf[0..search_path.len], search_path); + path_buf[search_path.len] = '/'; + @memcpy(path_buf[search_path.len + 1 ..][0..file_slice.len], file_slice); + path_buf[path_len] = 0; + const full_path = path_buf[0..path_len :0].ptr; + switch (arg0_expand) { + .expand => child_argv[0] = full_path, + .no_expand => {}, + } + err = execveZ(full_path, child_argv, envp); + switch (err) { + error.AccessDenied => seen_eacces = true, + error.FileNotFound, error.NotDir => {}, + else => |e| return e, + } + } + if (seen_eacces) return error.AccessDenied; + return err; +} + +/// This function also uses the PATH environment variable to get the full path to the executable. +/// If `file` is an absolute path, this is the same as `execveZ`. +pub fn execvpeZ( + file: [*:0]const u8, + argv_ptr: [*:null]const ?[*:0]const u8, + envp: [*:null]const ?[*:0]const u8, +) ExecveError { + return execvpeZ_expandArg0(.no_expand, file, argv_ptr, envp); +} + +/// Get an environment variable. +/// See also `getenvZ`. +pub fn getenv(key: []const u8) ?[:0]const u8 { + if (native_os == .windows) { + @compileError("std.os.getenv is unavailable for Windows because environment strings are in WTF-16 format. See std.process.getEnvVarOwned for a cross-platform API or std.process.getenvW for a Windows-specific API."); + } + if (builtin.link_libc) { + var ptr = std.c.environ; + while (ptr[0]) |line| : (ptr += 1) { + var line_i: usize = 0; + while (line[line_i] != 0 and line[line_i] != '=') : (line_i += 1) {} + const this_key = line[0..line_i]; + + if (!mem.eql(u8, this_key, key)) continue; + + return mem.sliceTo(line + line_i + 1, 0); + } + return null; + } + if (native_os == .wasi) { + @compileError("std.os.getenv is unavailable for WASI. See std.process.getEnvMap or std.process.getEnvVarOwned for a cross-platform API."); + } + // The simplified start logic doesn't populate environ. + if (std.start.simplified_logic) return null; + // TODO see https://github.com/ziglang/zig/issues/4524 + for (std.os.environ) |ptr| { + var line_i: usize = 0; + while (ptr[line_i] != 0 and ptr[line_i] != '=') : (line_i += 1) {} + const this_key = ptr[0..line_i]; + if (!mem.eql(u8, key, this_key)) continue; + + return mem.sliceTo(ptr + line_i + 1, 0); + } + return null; +} + +/// Get an environment variable with a null-terminated name. +/// See also `getenv`. +pub fn getenvZ(key: [*:0]const u8) ?[:0]const u8 { + if (builtin.link_libc) { + const value = system.getenv(key) orelse return null; + return mem.sliceTo(value, 0); + } + if (native_os == .windows) { + @compileError("std.os.getenvZ is unavailable for Windows because environment string is in WTF-16 format. See std.process.getEnvVarOwned for cross-platform API or std.process.getenvW for Windows-specific API."); + } + return getenv(mem.sliceTo(key, 0)); +} + +pub const GetCwdError = error{ + NameTooLong, + CurrentWorkingDirectoryUnlinked, +} || UnexpectedError; + +/// The result is a slice of out_buffer, indexed from 0. +pub fn getcwd(out_buffer: []u8) GetCwdError![]u8 { + if (native_os == .windows) { + return windows.GetCurrentDirectory(out_buffer); + } else if (native_os == .wasi and !builtin.link_libc) { + const path = "."; + if (out_buffer.len < path.len) return error.NameTooLong; + const result = out_buffer[0..path.len]; + @memcpy(result, path); + return result; + } + + const err: E = if (builtin.link_libc) err: { + const c_err = if (std.c.getcwd(out_buffer.ptr, out_buffer.len)) |_| 0 else std.c._errno().*; + break :err @enumFromInt(c_err); + } else err: { + break :err errno(system.getcwd(out_buffer.ptr, out_buffer.len)); + }; + switch (err) { + .SUCCESS => return mem.sliceTo(out_buffer, 0), + .FAULT => unreachable, + .INVAL => unreachable, + .NOENT => return error.CurrentWorkingDirectoryUnlinked, + .RANGE => return error.NameTooLong, + else => return unexpectedErrno(err), + } +} + +pub const SymLinkError = error{ + /// In WASI, this error may occur when the file descriptor does + /// not hold the required rights to create a new symbolic link relative to it. + AccessDenied, + DiskQuota, + PathAlreadyExists, + FileSystem, + SymLinkLoop, + FileNotFound, + SystemResources, + NoSpaceLeft, + ReadOnlyFileSystem, + NotDir, + NameTooLong, + + /// WASI-only; file paths must be valid UTF-8. + InvalidUtf8, + + /// Windows-only; file paths provided by the user must be valid WTF-8. + /// https://simonsapin.github.io/wtf-8/ + InvalidWtf8, + + BadPathName, +} || UnexpectedError; + +/// Creates a symbolic link named `sym_link_path` which contains the string `target_path`. +/// A symbolic link (also known as a soft link) may point to an existing file or to a nonexistent +/// one; the latter case is known as a dangling link. +/// On Windows, both paths should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// On WASI, both paths should be encoded as valid UTF-8. +/// On other platforms, both paths are an opaque sequence of bytes with no particular encoding. +/// If `sym_link_path` exists, it will not be overwritten. +/// See also `symlinkZ. +pub fn symlink(target_path: []const u8, sym_link_path: []const u8) SymLinkError!void { + if (native_os == .windows) { + @compileError("symlink is not supported on Windows; use std.os.windows.CreateSymbolicLink instead"); + } else if (native_os == .wasi and !builtin.link_libc) { + return symlinkat(target_path, wasi.AT.FDCWD, sym_link_path); + } + const target_path_c = try toPosixPath(target_path); + const sym_link_path_c = try toPosixPath(sym_link_path); + return symlinkZ(&target_path_c, &sym_link_path_c); +} + +/// This is the same as `symlink` except the parameters are null-terminated pointers. +/// See also `symlink`. +pub fn symlinkZ(target_path: [*:0]const u8, sym_link_path: [*:0]const u8) SymLinkError!void { + if (native_os == .windows) { + @compileError("symlink is not supported on Windows; use std.os.windows.CreateSymbolicLink instead"); + } else if (native_os == .wasi and !builtin.link_libc) { + return symlinkatZ(target_path, fs.cwd().fd, sym_link_path); + } + switch (errno(system.symlink(target_path, sym_link_path))) { + .SUCCESS => return, + .FAULT => unreachable, + .INVAL => unreachable, + .ACCES => return error.AccessDenied, + .PERM => return error.AccessDenied, + .DQUOT => return error.DiskQuota, + .EXIST => return error.PathAlreadyExists, + .IO => return error.FileSystem, + .LOOP => return error.SymLinkLoop, + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOTDIR => return error.NotDir, + .NOMEM => return error.SystemResources, + .NOSPC => return error.NoSpaceLeft, + .ROFS => return error.ReadOnlyFileSystem, + .ILSEQ => |err| if (native_os == .wasi) + return error.InvalidUtf8 + else + return unexpectedErrno(err), + else => |err| return unexpectedErrno(err), + } +} + +/// Similar to `symlink`, however, creates a symbolic link named `sym_link_path` which contains the string +/// `target_path` **relative** to `newdirfd` directory handle. +/// A symbolic link (also known as a soft link) may point to an existing file or to a nonexistent +/// one; the latter case is known as a dangling link. +/// On Windows, both paths should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// On WASI, both paths should be encoded as valid UTF-8. +/// On other platforms, both paths are an opaque sequence of bytes with no particular encoding. +/// If `sym_link_path` exists, it will not be overwritten. +/// See also `symlinkatWasi`, `symlinkatZ` and `symlinkatW`. +pub fn symlinkat(target_path: []const u8, newdirfd: fd_t, sym_link_path: []const u8) SymLinkError!void { + if (native_os == .windows) { + @compileError("symlinkat is not supported on Windows; use std.os.windows.CreateSymbolicLink instead"); + } else if (native_os == .wasi and !builtin.link_libc) { + return symlinkatWasi(target_path, newdirfd, sym_link_path); + } + const target_path_c = try toPosixPath(target_path); + const sym_link_path_c = try toPosixPath(sym_link_path); + return symlinkatZ(&target_path_c, newdirfd, &sym_link_path_c); +} + +/// WASI-only. The same as `symlinkat` but targeting WASI. +/// See also `symlinkat`. +pub fn symlinkatWasi(target_path: []const u8, newdirfd: fd_t, sym_link_path: []const u8) SymLinkError!void { + switch (wasi.path_symlink(target_path.ptr, target_path.len, newdirfd, sym_link_path.ptr, sym_link_path.len)) { + .SUCCESS => {}, + .FAULT => unreachable, + .INVAL => unreachable, + .BADF => unreachable, + .ACCES => return error.AccessDenied, + .PERM => return error.AccessDenied, + .DQUOT => return error.DiskQuota, + .EXIST => return error.PathAlreadyExists, + .IO => return error.FileSystem, + .LOOP => return error.SymLinkLoop, + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOTDIR => return error.NotDir, + .NOMEM => return error.SystemResources, + .NOSPC => return error.NoSpaceLeft, + .ROFS => return error.ReadOnlyFileSystem, + .NOTCAPABLE => return error.AccessDenied, + .ILSEQ => return error.InvalidUtf8, + else => |err| return unexpectedErrno(err), + } +} + +/// The same as `symlinkat` except the parameters are null-terminated pointers. +/// See also `symlinkat`. +pub fn symlinkatZ(target_path: [*:0]const u8, newdirfd: fd_t, sym_link_path: [*:0]const u8) SymLinkError!void { + if (native_os == .windows) { + @compileError("symlinkat is not supported on Windows; use std.os.windows.CreateSymbolicLink instead"); + } else if (native_os == .wasi and !builtin.link_libc) { + return symlinkat(mem.sliceTo(target_path, 0), newdirfd, mem.sliceTo(sym_link_path, 0)); + } + switch (errno(system.symlinkat(target_path, newdirfd, sym_link_path))) { + .SUCCESS => return, + .FAULT => unreachable, + .INVAL => unreachable, + .ACCES => return error.AccessDenied, + .PERM => return error.AccessDenied, + .DQUOT => return error.DiskQuota, + .EXIST => return error.PathAlreadyExists, + .IO => return error.FileSystem, + .LOOP => return error.SymLinkLoop, + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOTDIR => return error.NotDir, + .NOMEM => return error.SystemResources, + .NOSPC => return error.NoSpaceLeft, + .ROFS => return error.ReadOnlyFileSystem, + .ILSEQ => |err| if (native_os == .wasi) + return error.InvalidUtf8 + else + return unexpectedErrno(err), + else => |err| return unexpectedErrno(err), + } +} + +pub const LinkError = UnexpectedError || error{ + AccessDenied, + DiskQuota, + PathAlreadyExists, + FileSystem, + SymLinkLoop, + LinkQuotaExceeded, + NameTooLong, + FileNotFound, + SystemResources, + NoSpaceLeft, + ReadOnlyFileSystem, + NotSameFileSystem, + + /// WASI-only; file paths must be valid UTF-8. + InvalidUtf8, +}; + +/// On WASI, both paths should be encoded as valid UTF-8. +/// On other platforms, both paths are an opaque sequence of bytes with no particular encoding. +pub fn linkZ(oldpath: [*:0]const u8, newpath: [*:0]const u8, flags: i32) LinkError!void { + if (native_os == .wasi and !builtin.link_libc) { + return link(mem.sliceTo(oldpath, 0), mem.sliceTo(newpath, 0), flags); + } + switch (errno(system.link(oldpath, newpath, flags))) { + .SUCCESS => return, + .ACCES => return error.AccessDenied, + .DQUOT => return error.DiskQuota, + .EXIST => return error.PathAlreadyExists, + .FAULT => unreachable, + .IO => return error.FileSystem, + .LOOP => return error.SymLinkLoop, + .MLINK => return error.LinkQuotaExceeded, + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOMEM => return error.SystemResources, + .NOSPC => return error.NoSpaceLeft, + .PERM => return error.AccessDenied, + .ROFS => return error.ReadOnlyFileSystem, + .XDEV => return error.NotSameFileSystem, + .INVAL => unreachable, + .ILSEQ => |err| if (native_os == .wasi) + return error.InvalidUtf8 + else + return unexpectedErrno(err), + else => |err| return unexpectedErrno(err), + } +} + +/// On WASI, both paths should be encoded as valid UTF-8. +/// On other platforms, both paths are an opaque sequence of bytes with no particular encoding. +pub fn link(oldpath: []const u8, newpath: []const u8, flags: i32) LinkError!void { + if (native_os == .wasi and !builtin.link_libc) { + return linkat(wasi.AT.FDCWD, oldpath, wasi.AT.FDCWD, newpath, flags) catch |err| switch (err) { + error.NotDir => unreachable, // link() does not support directories + else => |e| return e, + }; + } + const old = try toPosixPath(oldpath); + const new = try toPosixPath(newpath); + return try linkZ(&old, &new, flags); +} + +pub const LinkatError = LinkError || error{NotDir}; + +/// On WASI, both paths should be encoded as valid UTF-8. +/// On other platforms, both paths are an opaque sequence of bytes with no particular encoding. +pub fn linkatZ( + olddir: fd_t, + oldpath: [*:0]const u8, + newdir: fd_t, + newpath: [*:0]const u8, + flags: i32, +) LinkatError!void { + if (native_os == .wasi and !builtin.link_libc) { + return linkat(olddir, mem.sliceTo(oldpath, 0), newdir, mem.sliceTo(newpath, 0), flags); + } + switch (errno(system.linkat(olddir, oldpath, newdir, newpath, flags))) { + .SUCCESS => return, + .ACCES => return error.AccessDenied, + .DQUOT => return error.DiskQuota, + .EXIST => return error.PathAlreadyExists, + .FAULT => unreachable, + .IO => return error.FileSystem, + .LOOP => return error.SymLinkLoop, + .MLINK => return error.LinkQuotaExceeded, + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOMEM => return error.SystemResources, + .NOSPC => return error.NoSpaceLeft, + .NOTDIR => return error.NotDir, + .PERM => return error.AccessDenied, + .ROFS => return error.ReadOnlyFileSystem, + .XDEV => return error.NotSameFileSystem, + .INVAL => unreachable, + .ILSEQ => |err| if (native_os == .wasi) + return error.InvalidUtf8 + else + return unexpectedErrno(err), + else => |err| return unexpectedErrno(err), + } +} + +/// On WASI, both paths should be encoded as valid UTF-8. +/// On other platforms, both paths are an opaque sequence of bytes with no particular encoding. +pub fn linkat( + olddir: fd_t, + oldpath: []const u8, + newdir: fd_t, + newpath: []const u8, + flags: i32, +) LinkatError!void { + if (native_os == .wasi and !builtin.link_libc) { + const old: RelativePathWasi = .{ .dir_fd = olddir, .relative_path = oldpath }; + const new: RelativePathWasi = .{ .dir_fd = newdir, .relative_path = newpath }; + const old_flags: wasi.lookupflags_t = .{ + .SYMLINK_FOLLOW = (flags & AT.SYMLINK_FOLLOW) != 0, + }; + switch (wasi.path_link( + old.dir_fd, + old_flags, + old.relative_path.ptr, + old.relative_path.len, + new.dir_fd, + new.relative_path.ptr, + new.relative_path.len, + )) { + .SUCCESS => return, + .ACCES => return error.AccessDenied, + .DQUOT => return error.DiskQuota, + .EXIST => return error.PathAlreadyExists, + .FAULT => unreachable, + .IO => return error.FileSystem, + .LOOP => return error.SymLinkLoop, + .MLINK => return error.LinkQuotaExceeded, + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOMEM => return error.SystemResources, + .NOSPC => return error.NoSpaceLeft, + .NOTDIR => return error.NotDir, + .PERM => return error.AccessDenied, + .ROFS => return error.ReadOnlyFileSystem, + .XDEV => return error.NotSameFileSystem, + .INVAL => unreachable, + .ILSEQ => return error.InvalidUtf8, + else => |err| return unexpectedErrno(err), + } + } + const old = try toPosixPath(oldpath); + const new = try toPosixPath(newpath); + return try linkatZ(olddir, &old, newdir, &new, flags); +} + +pub const UnlinkError = error{ + FileNotFound, + + /// In WASI, this error may occur when the file descriptor does + /// not hold the required rights to unlink a resource by path relative to it. + AccessDenied, + FileBusy, + FileSystem, + IsDir, + SymLinkLoop, + NameTooLong, + NotDir, + SystemResources, + ReadOnlyFileSystem, + + /// WASI-only; file paths must be valid UTF-8. + InvalidUtf8, + + /// Windows-only; file paths provided by the user must be valid WTF-8. + /// https://simonsapin.github.io/wtf-8/ + InvalidWtf8, + + /// On Windows, file paths cannot contain these characters: + /// '/', '*', '?', '"', '<', '>', '|' + BadPathName, + + /// On Windows, `\\server` or `\\server\share` was not found. + NetworkNotFound, +} || UnexpectedError; + +/// Delete a name and possibly the file it refers to. +/// On Windows, `file_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// On WASI, `file_path` should be encoded as valid UTF-8. +/// On other platforms, `file_path` is an opaque sequence of bytes with no particular encoding. +/// See also `unlinkZ`. +pub fn unlink(file_path: []const u8) UnlinkError!void { + if (native_os == .wasi and !builtin.link_libc) { + return unlinkat(wasi.AT.FDCWD, file_path, 0) catch |err| switch (err) { + error.DirNotEmpty => unreachable, // only occurs when targeting directories + else => |e| return e, + }; + } else if (native_os == .windows) { + const file_path_w = try windows.sliceToPrefixedFileW(null, file_path); + return unlinkW(file_path_w.span()); + } else { + const file_path_c = try toPosixPath(file_path); + return unlinkZ(&file_path_c); + } +} + +/// Same as `unlink` except the parameter is null terminated. +pub fn unlinkZ(file_path: [*:0]const u8) UnlinkError!void { + if (native_os == .windows) { + const file_path_w = try windows.cStrToPrefixedFileW(null, file_path); + return unlinkW(file_path_w.span()); + } else if (native_os == .wasi and !builtin.link_libc) { + return unlink(mem.sliceTo(file_path, 0)); + } + switch (errno(system.unlink(file_path))) { + .SUCCESS => return, + .ACCES => return error.AccessDenied, + .PERM => return error.AccessDenied, + .BUSY => return error.FileBusy, + .FAULT => unreachable, + .INVAL => unreachable, + .IO => return error.FileSystem, + .ISDIR => return error.IsDir, + .LOOP => return error.SymLinkLoop, + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOTDIR => return error.NotDir, + .NOMEM => return error.SystemResources, + .ROFS => return error.ReadOnlyFileSystem, + .ILSEQ => |err| if (native_os == .wasi) + return error.InvalidUtf8 + else + return unexpectedErrno(err), + else => |err| return unexpectedErrno(err), + } +} + +/// Windows-only. Same as `unlink` except the parameter is null-terminated, WTF16 LE encoded. +pub fn unlinkW(file_path_w: []const u16) UnlinkError!void { + windows.DeleteFile(file_path_w, .{ .dir = fs.cwd().fd }) catch |err| switch (err) { + error.DirNotEmpty => unreachable, // we're not passing .remove_dir = true + else => |e| return e, + }; +} + +pub const UnlinkatError = UnlinkError || error{ + /// When passing `AT.REMOVEDIR`, this error occurs when the named directory is not empty. + DirNotEmpty, +}; + +/// Delete a file name and possibly the file it refers to, based on an open directory handle. +/// On Windows, `file_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// On WASI, `file_path` should be encoded as valid UTF-8. +/// On other platforms, `file_path` is an opaque sequence of bytes with no particular encoding. +/// Asserts that the path parameter has no null bytes. +pub fn unlinkat(dirfd: fd_t, file_path: []const u8, flags: u32) UnlinkatError!void { + if (native_os == .windows) { + const file_path_w = try windows.sliceToPrefixedFileW(dirfd, file_path); + return unlinkatW(dirfd, file_path_w.span(), flags); + } else if (native_os == .wasi and !builtin.link_libc) { + return unlinkatWasi(dirfd, file_path, flags); + } else { + const file_path_c = try toPosixPath(file_path); + return unlinkatZ(dirfd, &file_path_c, flags); + } +} + +/// WASI-only. Same as `unlinkat` but targeting WASI. +/// See also `unlinkat`. +pub fn unlinkatWasi(dirfd: fd_t, file_path: []const u8, flags: u32) UnlinkatError!void { + const remove_dir = (flags & AT.REMOVEDIR) != 0; + const res = if (remove_dir) + wasi.path_remove_directory(dirfd, file_path.ptr, file_path.len) + else + wasi.path_unlink_file(dirfd, file_path.ptr, file_path.len); + switch (res) { + .SUCCESS => return, + .ACCES => return error.AccessDenied, + .PERM => return error.AccessDenied, + .BUSY => return error.FileBusy, + .FAULT => unreachable, + .IO => return error.FileSystem, + .ISDIR => return error.IsDir, + .LOOP => return error.SymLinkLoop, + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOTDIR => return error.NotDir, + .NOMEM => return error.SystemResources, + .ROFS => return error.ReadOnlyFileSystem, + .NOTEMPTY => return error.DirNotEmpty, + .NOTCAPABLE => return error.AccessDenied, + .ILSEQ => return error.InvalidUtf8, + + .INVAL => unreachable, // invalid flags, or pathname has . as last component + .BADF => unreachable, // always a race condition + + else => |err| return unexpectedErrno(err), + } +} + +/// Same as `unlinkat` but `file_path` is a null-terminated string. +pub fn unlinkatZ(dirfd: fd_t, file_path_c: [*:0]const u8, flags: u32) UnlinkatError!void { + if (native_os == .windows) { + const file_path_w = try windows.cStrToPrefixedFileW(dirfd, file_path_c); + return unlinkatW(dirfd, file_path_w.span(), flags); + } else if (native_os == .wasi and !builtin.link_libc) { + return unlinkat(dirfd, mem.sliceTo(file_path_c, 0), flags); + } + switch (errno(system.unlinkat(dirfd, file_path_c, flags))) { + .SUCCESS => return, + .ACCES => return error.AccessDenied, + .PERM => return error.AccessDenied, + .BUSY => return error.FileBusy, + .FAULT => unreachable, + .IO => return error.FileSystem, + .ISDIR => return error.IsDir, + .LOOP => return error.SymLinkLoop, + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOTDIR => return error.NotDir, + .NOMEM => return error.SystemResources, + .ROFS => return error.ReadOnlyFileSystem, + .EXIST => return error.DirNotEmpty, + .NOTEMPTY => return error.DirNotEmpty, + .ILSEQ => |err| if (native_os == .wasi) + return error.InvalidUtf8 + else + return unexpectedErrno(err), + + .INVAL => unreachable, // invalid flags, or pathname has . as last component + .BADF => unreachable, // always a race condition + + else => |err| return unexpectedErrno(err), + } +} + +/// Same as `unlinkat` but `sub_path_w` is WTF16LE, NT prefixed. Windows only. +pub fn unlinkatW(dirfd: fd_t, sub_path_w: []const u16, flags: u32) UnlinkatError!void { + const remove_dir = (flags & AT.REMOVEDIR) != 0; + return windows.DeleteFile(sub_path_w, .{ .dir = dirfd, .remove_dir = remove_dir }); +} + +pub const RenameError = error{ + /// In WASI, this error may occur when the file descriptor does + /// not hold the required rights to rename a resource by path relative to it. + /// + /// On Windows, this error may be returned instead of PathAlreadyExists when + /// renaming a directory over an existing directory. + AccessDenied, + FileBusy, + DiskQuota, + IsDir, + SymLinkLoop, + LinkQuotaExceeded, + NameTooLong, + FileNotFound, + NotDir, + SystemResources, + NoSpaceLeft, + PathAlreadyExists, + ReadOnlyFileSystem, + RenameAcrossMountPoints, + /// WASI-only; file paths must be valid UTF-8. + InvalidUtf8, + /// Windows-only; file paths provided by the user must be valid WTF-8. + /// https://simonsapin.github.io/wtf-8/ + InvalidWtf8, + BadPathName, + NoDevice, + SharingViolation, + PipeBusy, + /// On Windows, `\\server` or `\\server\share` was not found. + NetworkNotFound, + /// On Windows, antivirus software is enabled by default. It can be + /// disabled, but Windows Update sometimes ignores the user's preference + /// and re-enables it. When enabled, antivirus software on Windows + /// intercepts file system operations and makes them significantly slower + /// in addition to possibly failing with this error code. + AntivirusInterference, +} || UnexpectedError; + +/// Change the name or location of a file. +/// On Windows, both paths should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// On WASI, both paths should be encoded as valid UTF-8. +/// On other platforms, both paths are an opaque sequence of bytes with no particular encoding. +pub fn rename(old_path: []const u8, new_path: []const u8) RenameError!void { + if (native_os == .wasi and !builtin.link_libc) { + return renameat(wasi.AT.FDCWD, old_path, wasi.AT.FDCWD, new_path); + } else if (native_os == .windows) { + const old_path_w = try windows.sliceToPrefixedFileW(null, old_path); + const new_path_w = try windows.sliceToPrefixedFileW(null, new_path); + return renameW(old_path_w.span().ptr, new_path_w.span().ptr); + } else { + const old_path_c = try toPosixPath(old_path); + const new_path_c = try toPosixPath(new_path); + return renameZ(&old_path_c, &new_path_c); + } +} + +/// Same as `rename` except the parameters are null-terminated. +pub fn renameZ(old_path: [*:0]const u8, new_path: [*:0]const u8) RenameError!void { + if (native_os == .windows) { + const old_path_w = try windows.cStrToPrefixedFileW(null, old_path); + const new_path_w = try windows.cStrToPrefixedFileW(null, new_path); + return renameW(old_path_w.span().ptr, new_path_w.span().ptr); + } else if (native_os == .wasi and !builtin.link_libc) { + return rename(mem.sliceTo(old_path, 0), mem.sliceTo(new_path, 0)); + } + switch (errno(system.rename(old_path, new_path))) { + .SUCCESS => return, + .ACCES => return error.AccessDenied, + .PERM => return error.AccessDenied, + .BUSY => return error.FileBusy, + .DQUOT => return error.DiskQuota, + .FAULT => unreachable, + .INVAL => unreachable, + .ISDIR => return error.IsDir, + .LOOP => return error.SymLinkLoop, + .MLINK => return error.LinkQuotaExceeded, + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOTDIR => return error.NotDir, + .NOMEM => return error.SystemResources, + .NOSPC => return error.NoSpaceLeft, + .EXIST => return error.PathAlreadyExists, + .NOTEMPTY => return error.PathAlreadyExists, + .ROFS => return error.ReadOnlyFileSystem, + .XDEV => return error.RenameAcrossMountPoints, + .ILSEQ => |err| if (native_os == .wasi) + return error.InvalidUtf8 + else + return unexpectedErrno(err), + else => |err| return unexpectedErrno(err), + } +} + +/// Same as `rename` except the parameters are null-terminated and WTF16LE encoded. +/// Assumes target is Windows. +pub fn renameW(old_path: [*:0]const u16, new_path: [*:0]const u16) RenameError!void { + const flags = windows.MOVEFILE_REPLACE_EXISTING | windows.MOVEFILE_WRITE_THROUGH; + return windows.MoveFileExW(old_path, new_path, flags); +} + +/// Change the name or location of a file based on an open directory handle. +/// On Windows, both paths should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// On WASI, both paths should be encoded as valid UTF-8. +/// On other platforms, both paths are an opaque sequence of bytes with no particular encoding. +pub fn renameat( + old_dir_fd: fd_t, + old_path: []const u8, + new_dir_fd: fd_t, + new_path: []const u8, +) RenameError!void { + if (native_os == .windows) { + const old_path_w = try windows.sliceToPrefixedFileW(old_dir_fd, old_path); + const new_path_w = try windows.sliceToPrefixedFileW(new_dir_fd, new_path); + return renameatW(old_dir_fd, old_path_w.span(), new_dir_fd, new_path_w.span(), windows.TRUE); + } else if (native_os == .wasi and !builtin.link_libc) { + const old: RelativePathWasi = .{ .dir_fd = old_dir_fd, .relative_path = old_path }; + const new: RelativePathWasi = .{ .dir_fd = new_dir_fd, .relative_path = new_path }; + return renameatWasi(old, new); + } else { + const old_path_c = try toPosixPath(old_path); + const new_path_c = try toPosixPath(new_path); + return renameatZ(old_dir_fd, &old_path_c, new_dir_fd, &new_path_c); + } +} + +/// WASI-only. Same as `renameat` expect targeting WASI. +/// See also `renameat`. +fn renameatWasi(old: RelativePathWasi, new: RelativePathWasi) RenameError!void { + switch (wasi.path_rename(old.dir_fd, old.relative_path.ptr, old.relative_path.len, new.dir_fd, new.relative_path.ptr, new.relative_path.len)) { + .SUCCESS => return, + .ACCES => return error.AccessDenied, + .PERM => return error.AccessDenied, + .BUSY => return error.FileBusy, + .DQUOT => return error.DiskQuota, + .FAULT => unreachable, + .INVAL => unreachable, + .ISDIR => return error.IsDir, + .LOOP => return error.SymLinkLoop, + .MLINK => return error.LinkQuotaExceeded, + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOTDIR => return error.NotDir, + .NOMEM => return error.SystemResources, + .NOSPC => return error.NoSpaceLeft, + .EXIST => return error.PathAlreadyExists, + .NOTEMPTY => return error.PathAlreadyExists, + .ROFS => return error.ReadOnlyFileSystem, + .XDEV => return error.RenameAcrossMountPoints, + .NOTCAPABLE => return error.AccessDenied, + .ILSEQ => return error.InvalidUtf8, + else => |err| return unexpectedErrno(err), + } +} + +/// An fd-relative file path +/// +/// This is currently only used for WASI-specific functionality, but the concept +/// is the same as the dirfd/pathname pairs in the `*at(...)` POSIX functions. +const RelativePathWasi = struct { + /// Handle to directory + dir_fd: fd_t, + /// Path to resource within `dir_fd`. + relative_path: []const u8, +}; + +/// Same as `renameat` except the parameters are null-terminated. +pub fn renameatZ( + old_dir_fd: fd_t, + old_path: [*:0]const u8, + new_dir_fd: fd_t, + new_path: [*:0]const u8, +) RenameError!void { + if (native_os == .windows) { + const old_path_w = try windows.cStrToPrefixedFileW(old_dir_fd, old_path); + const new_path_w = try windows.cStrToPrefixedFileW(new_dir_fd, new_path); + return renameatW(old_dir_fd, old_path_w.span(), new_dir_fd, new_path_w.span(), windows.TRUE); + } else if (native_os == .wasi and !builtin.link_libc) { + return renameat(old_dir_fd, mem.sliceTo(old_path, 0), new_dir_fd, mem.sliceTo(new_path, 0)); + } + + switch (errno(system.renameat(old_dir_fd, old_path, new_dir_fd, new_path))) { + .SUCCESS => return, + .ACCES => return error.AccessDenied, + .PERM => return error.AccessDenied, + .BUSY => return error.FileBusy, + .DQUOT => return error.DiskQuota, + .FAULT => unreachable, + .INVAL => unreachable, + .ISDIR => return error.IsDir, + .LOOP => return error.SymLinkLoop, + .MLINK => return error.LinkQuotaExceeded, + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOTDIR => return error.NotDir, + .NOMEM => return error.SystemResources, + .NOSPC => return error.NoSpaceLeft, + .EXIST => return error.PathAlreadyExists, + .NOTEMPTY => return error.PathAlreadyExists, + .ROFS => return error.ReadOnlyFileSystem, + .XDEV => return error.RenameAcrossMountPoints, + .ILSEQ => |err| if (native_os == .wasi) + return error.InvalidUtf8 + else + return unexpectedErrno(err), + else => |err| return unexpectedErrno(err), + } +} + +/// Same as `renameat` but Windows-only and the path parameters are +/// [WTF-16](https://simonsapin.github.io/wtf-8/#potentially-ill-formed-utf-16) encoded. +pub fn renameatW( + old_dir_fd: fd_t, + old_path_w: []const u16, + new_dir_fd: fd_t, + new_path_w: []const u16, + ReplaceIfExists: windows.BOOLEAN, +) RenameError!void { + const src_fd = windows.OpenFile(old_path_w, .{ + .dir = old_dir_fd, + .access_mask = windows.SYNCHRONIZE | windows.GENERIC_WRITE | windows.DELETE, + .creation = windows.FILE_OPEN, + .filter = .any, // This function is supposed to rename both files and directories. + .follow_symlinks = false, + }) catch |err| switch (err) { + error.WouldBlock => unreachable, // Not possible without `.share_access_nonblocking = true`. + else => |e| return e, + }; + defer windows.CloseHandle(src_fd); + + var need_fallback = true; + var rc: windows.NTSTATUS = undefined; + // FILE_RENAME_INFORMATION_EX and FILE_RENAME_POSIX_SEMANTICS require >= win10_rs1, + // but FILE_RENAME_IGNORE_READONLY_ATTRIBUTE requires >= win10_rs5. We check >= rs5 here + // so that we only use POSIX_SEMANTICS when we know IGNORE_READONLY_ATTRIBUTE will also be + // supported in order to avoid either (1) using a redundant call that we can know in advance will return + // STATUS_NOT_SUPPORTED or (2) only setting IGNORE_READONLY_ATTRIBUTE when >= rs5 + // and therefore having different behavior when the Windows version is >= rs1 but < rs5. + if (builtin.target.os.isAtLeast(.windows, .win10_rs5) orelse false) { + const struct_buf_len = @sizeOf(windows.FILE_RENAME_INFORMATION_EX) + (max_path_bytes - 1); + var rename_info_buf: [struct_buf_len]u8 align(@alignOf(windows.FILE_RENAME_INFORMATION_EX)) = undefined; + const struct_len = @sizeOf(windows.FILE_RENAME_INFORMATION_EX) - 1 + new_path_w.len * 2; + if (struct_len > struct_buf_len) return error.NameTooLong; + + const rename_info: *windows.FILE_RENAME_INFORMATION_EX = @ptrCast(&rename_info_buf); + var io_status_block: windows.IO_STATUS_BLOCK = undefined; + + var flags: windows.ULONG = windows.FILE_RENAME_POSIX_SEMANTICS | windows.FILE_RENAME_IGNORE_READONLY_ATTRIBUTE; + if (ReplaceIfExists == windows.TRUE) flags |= windows.FILE_RENAME_REPLACE_IF_EXISTS; + rename_info.* = .{ + .Flags = flags, + .RootDirectory = if (fs.path.isAbsoluteWindowsWTF16(new_path_w)) null else new_dir_fd, + .FileNameLength = @intCast(new_path_w.len * 2), // already checked error.NameTooLong + .FileName = undefined, + }; + @memcpy((&rename_info.FileName).ptr, new_path_w); + rc = windows.ntdll.NtSetInformationFile( + src_fd, + &io_status_block, + rename_info, + @intCast(struct_len), // already checked for error.NameTooLong + .FileRenameInformationEx, + ); + switch (rc) { + .SUCCESS => return, + // INVALID_PARAMETER here means that the filesystem does not support FileRenameInformationEx + .INVALID_PARAMETER => {}, + .DIRECTORY_NOT_EMPTY => return error.PathAlreadyExists, + .FILE_IS_A_DIRECTORY => return error.IsDir, + .NOT_A_DIRECTORY => return error.NotDir, + // For all other statuses, fall down to the switch below to handle them. + else => need_fallback = false, + } + } + + if (need_fallback) { + const struct_buf_len = @sizeOf(windows.FILE_RENAME_INFORMATION) + (max_path_bytes - 1); + var rename_info_buf: [struct_buf_len]u8 align(@alignOf(windows.FILE_RENAME_INFORMATION)) = undefined; + const struct_len = @sizeOf(windows.FILE_RENAME_INFORMATION) - 1 + new_path_w.len * 2; + if (struct_len > struct_buf_len) return error.NameTooLong; + + const rename_info: *windows.FILE_RENAME_INFORMATION = @ptrCast(&rename_info_buf); + var io_status_block: windows.IO_STATUS_BLOCK = undefined; + + rename_info.* = .{ + .Flags = ReplaceIfExists, + .RootDirectory = if (fs.path.isAbsoluteWindowsWTF16(new_path_w)) null else new_dir_fd, + .FileNameLength = @intCast(new_path_w.len * 2), // already checked error.NameTooLong + .FileName = undefined, + }; + @memcpy((&rename_info.FileName).ptr, new_path_w); + + rc = + windows.ntdll.NtSetInformationFile( + src_fd, + &io_status_block, + rename_info, + @intCast(struct_len), // already checked for error.NameTooLong + .FileRenameInformation, + ); + } + + switch (rc) { + .SUCCESS => {}, + .INVALID_HANDLE => unreachable, + .INVALID_PARAMETER => unreachable, + .OBJECT_PATH_SYNTAX_BAD => unreachable, + .ACCESS_DENIED => return error.AccessDenied, + .OBJECT_NAME_NOT_FOUND => return error.FileNotFound, + .OBJECT_PATH_NOT_FOUND => return error.FileNotFound, + .NOT_SAME_DEVICE => return error.RenameAcrossMountPoints, + .OBJECT_NAME_COLLISION => return error.PathAlreadyExists, + else => return windows.unexpectedStatus(rc), + } +} + +/// On Windows, `sub_dir_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// On WASI, `sub_dir_path` should be encoded as valid UTF-8. +/// On other platforms, `sub_dir_path` is an opaque sequence of bytes with no particular encoding. +pub fn mkdirat(dir_fd: fd_t, sub_dir_path: []const u8, mode: u32) MakeDirError!void { + if (native_os == .windows) { + const sub_dir_path_w = try windows.sliceToPrefixedFileW(dir_fd, sub_dir_path); + return mkdiratW(dir_fd, sub_dir_path_w.span(), mode); + } else if (native_os == .wasi and !builtin.link_libc) { + return mkdiratWasi(dir_fd, sub_dir_path, mode); + } else { + const sub_dir_path_c = try toPosixPath(sub_dir_path); + return mkdiratZ(dir_fd, &sub_dir_path_c, mode); + } +} + +pub fn mkdiratWasi(dir_fd: fd_t, sub_dir_path: []const u8, mode: u32) MakeDirError!void { + _ = mode; + switch (wasi.path_create_directory(dir_fd, sub_dir_path.ptr, sub_dir_path.len)) { + .SUCCESS => return, + .ACCES => return error.AccessDenied, + .BADF => unreachable, + .PERM => return error.AccessDenied, + .DQUOT => return error.DiskQuota, + .EXIST => return error.PathAlreadyExists, + .FAULT => unreachable, + .LOOP => return error.SymLinkLoop, + .MLINK => return error.LinkQuotaExceeded, + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOMEM => return error.SystemResources, + .NOSPC => return error.NoSpaceLeft, + .NOTDIR => return error.NotDir, + .ROFS => return error.ReadOnlyFileSystem, + .NOTCAPABLE => return error.AccessDenied, + .ILSEQ => return error.InvalidUtf8, + else => |err| return unexpectedErrno(err), + } +} + +/// Same as `mkdirat` except the parameters are null-terminated. +pub fn mkdiratZ(dir_fd: fd_t, sub_dir_path: [*:0]const u8, mode: u32) MakeDirError!void { + if (native_os == .windows) { + const sub_dir_path_w = try windows.cStrToPrefixedFileW(dir_fd, sub_dir_path); + return mkdiratW(dir_fd, sub_dir_path_w.span(), mode); + } else if (native_os == .wasi and !builtin.link_libc) { + return mkdirat(dir_fd, mem.sliceTo(sub_dir_path, 0), mode); + } + switch (errno(system.mkdirat(dir_fd, sub_dir_path, mode))) { + .SUCCESS => return, + .ACCES => return error.AccessDenied, + .BADF => unreachable, + .PERM => return error.AccessDenied, + .DQUOT => return error.DiskQuota, + .EXIST => return error.PathAlreadyExists, + .FAULT => unreachable, + .LOOP => return error.SymLinkLoop, + .MLINK => return error.LinkQuotaExceeded, + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOMEM => return error.SystemResources, + .NOSPC => return error.NoSpaceLeft, + .NOTDIR => return error.NotDir, + .ROFS => return error.ReadOnlyFileSystem, + // dragonfly: when dir_fd is unlinked from filesystem + .NOTCONN => return error.FileNotFound, + .ILSEQ => |err| if (native_os == .wasi) + return error.InvalidUtf8 + else + return unexpectedErrno(err), + else => |err| return unexpectedErrno(err), + } +} + +/// Windows-only. Same as `mkdirat` except the parameter WTF16 LE encoded. +pub fn mkdiratW(dir_fd: fd_t, sub_path_w: []const u16, mode: u32) MakeDirError!void { + _ = mode; + const sub_dir_handle = windows.OpenFile(sub_path_w, .{ + .dir = dir_fd, + .access_mask = windows.GENERIC_READ | windows.SYNCHRONIZE, + .creation = windows.FILE_CREATE, + .filter = .dir_only, + }) catch |err| switch (err) { + error.IsDir => return error.Unexpected, + error.PipeBusy => return error.Unexpected, + error.WouldBlock => return error.Unexpected, + error.AntivirusInterference => return error.Unexpected, + else => |e| return e, + }; + windows.CloseHandle(sub_dir_handle); +} + +pub const MakeDirError = error{ + /// In WASI, this error may occur when the file descriptor does + /// not hold the required rights to create a new directory relative to it. + AccessDenied, + DiskQuota, + PathAlreadyExists, + SymLinkLoop, + LinkQuotaExceeded, + NameTooLong, + FileNotFound, + SystemResources, + NoSpaceLeft, + NotDir, + ReadOnlyFileSystem, + /// WASI-only; file paths must be valid UTF-8. + InvalidUtf8, + /// Windows-only; file paths provided by the user must be valid WTF-8. + /// https://simonsapin.github.io/wtf-8/ + InvalidWtf8, + BadPathName, + NoDevice, + /// On Windows, `\\server` or `\\server\share` was not found. + NetworkNotFound, +} || UnexpectedError; + +/// Create a directory. +/// `mode` is ignored on Windows and WASI. +/// On Windows, `dir_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// On WASI, `dir_path` should be encoded as valid UTF-8. +/// On other platforms, `dir_path` is an opaque sequence of bytes with no particular encoding. +pub fn mkdir(dir_path: []const u8, mode: u32) MakeDirError!void { + if (native_os == .wasi and !builtin.link_libc) { + return mkdirat(wasi.AT.FDCWD, dir_path, mode); + } else if (native_os == .windows) { + const dir_path_w = try windows.sliceToPrefixedFileW(null, dir_path); + return mkdirW(dir_path_w.span(), mode); + } else { + const dir_path_c = try toPosixPath(dir_path); + return mkdirZ(&dir_path_c, mode); + } +} + +/// Same as `mkdir` but the parameter is null-terminated. +/// On Windows, `dir_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// On WASI, `dir_path` should be encoded as valid UTF-8. +/// On other platforms, `dir_path` is an opaque sequence of bytes with no particular encoding. +pub fn mkdirZ(dir_path: [*:0]const u8, mode: u32) MakeDirError!void { + if (native_os == .windows) { + const dir_path_w = try windows.cStrToPrefixedFileW(null, dir_path); + return mkdirW(dir_path_w.span(), mode); + } else if (native_os == .wasi and !builtin.link_libc) { + return mkdir(mem.sliceTo(dir_path, 0), mode); + } + switch (errno(system.mkdir(dir_path, mode))) { + .SUCCESS => return, + .ACCES => return error.AccessDenied, + .PERM => return error.AccessDenied, + .DQUOT => return error.DiskQuota, + .EXIST => return error.PathAlreadyExists, + .FAULT => unreachable, + .LOOP => return error.SymLinkLoop, + .MLINK => return error.LinkQuotaExceeded, + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOMEM => return error.SystemResources, + .NOSPC => return error.NoSpaceLeft, + .NOTDIR => return error.NotDir, + .ROFS => return error.ReadOnlyFileSystem, + .ILSEQ => |err| if (native_os == .wasi) + return error.InvalidUtf8 + else + return unexpectedErrno(err), + else => |err| return unexpectedErrno(err), + } +} + +/// Windows-only. Same as `mkdir` but the parameters is WTF16LE encoded. +pub fn mkdirW(dir_path_w: []const u16, mode: u32) MakeDirError!void { + _ = mode; + const sub_dir_handle = windows.OpenFile(dir_path_w, .{ + .dir = fs.cwd().fd, + .access_mask = windows.GENERIC_READ | windows.SYNCHRONIZE, + .creation = windows.FILE_CREATE, + .filter = .dir_only, + }) catch |err| switch (err) { + error.IsDir => return error.Unexpected, + error.PipeBusy => return error.Unexpected, + error.WouldBlock => return error.Unexpected, + error.AntivirusInterference => return error.Unexpected, + else => |e| return e, + }; + windows.CloseHandle(sub_dir_handle); +} + +pub const DeleteDirError = error{ + AccessDenied, + FileBusy, + SymLinkLoop, + NameTooLong, + FileNotFound, + SystemResources, + NotDir, + DirNotEmpty, + ReadOnlyFileSystem, + /// WASI-only; file paths must be valid UTF-8. + InvalidUtf8, + /// Windows-only; file paths provided by the user must be valid WTF-8. + /// https://simonsapin.github.io/wtf-8/ + InvalidWtf8, + BadPathName, + /// On Windows, `\\server` or `\\server\share` was not found. + NetworkNotFound, +} || UnexpectedError; + +/// Deletes an empty directory. +/// On Windows, `dir_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// On WASI, `dir_path` should be encoded as valid UTF-8. +/// On other platforms, `dir_path` is an opaque sequence of bytes with no particular encoding. +pub fn rmdir(dir_path: []const u8) DeleteDirError!void { + if (native_os == .wasi and !builtin.link_libc) { + return unlinkat(wasi.AT.FDCWD, dir_path, AT.REMOVEDIR) catch |err| switch (err) { + error.FileSystem => unreachable, // only occurs when targeting files + error.IsDir => unreachable, // only occurs when targeting files + else => |e| return e, + }; + } else if (native_os == .windows) { + const dir_path_w = try windows.sliceToPrefixedFileW(null, dir_path); + return rmdirW(dir_path_w.span()); + } else { + const dir_path_c = try toPosixPath(dir_path); + return rmdirZ(&dir_path_c); + } +} + +/// Same as `rmdir` except the parameter is null-terminated. +/// On Windows, `dir_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// On WASI, `dir_path` should be encoded as valid UTF-8. +/// On other platforms, `dir_path` is an opaque sequence of bytes with no particular encoding. +pub fn rmdirZ(dir_path: [*:0]const u8) DeleteDirError!void { + if (native_os == .windows) { + const dir_path_w = try windows.cStrToPrefixedFileW(null, dir_path); + return rmdirW(dir_path_w.span()); + } else if (native_os == .wasi and !builtin.link_libc) { + return rmdir(mem.sliceTo(dir_path, 0)); + } + switch (errno(system.rmdir(dir_path))) { + .SUCCESS => return, + .ACCES => return error.AccessDenied, + .PERM => return error.AccessDenied, + .BUSY => return error.FileBusy, + .FAULT => unreachable, + .INVAL => return error.BadPathName, + .LOOP => return error.SymLinkLoop, + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOMEM => return error.SystemResources, + .NOTDIR => return error.NotDir, + .EXIST => return error.DirNotEmpty, + .NOTEMPTY => return error.DirNotEmpty, + .ROFS => return error.ReadOnlyFileSystem, + .ILSEQ => |err| if (native_os == .wasi) + return error.InvalidUtf8 + else + return unexpectedErrno(err), + else => |err| return unexpectedErrno(err), + } +} + +/// Windows-only. Same as `rmdir` except the parameter is WTF-16 LE encoded. +pub fn rmdirW(dir_path_w: []const u16) DeleteDirError!void { + return windows.DeleteFile(dir_path_w, .{ .dir = fs.cwd().fd, .remove_dir = true }) catch |err| switch (err) { + error.IsDir => unreachable, + else => |e| return e, + }; +} + +pub const ChangeCurDirError = error{ + AccessDenied, + FileSystem, + SymLinkLoop, + NameTooLong, + FileNotFound, + SystemResources, + NotDir, + BadPathName, + /// WASI-only; file paths must be valid UTF-8. + InvalidUtf8, + /// Windows-only; file paths provided by the user must be valid WTF-8. + /// https://simonsapin.github.io/wtf-8/ + InvalidWtf8, +} || UnexpectedError; + +/// Changes the current working directory of the calling process. +/// On Windows, `dir_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// On WASI, `dir_path` should be encoded as valid UTF-8. +/// On other platforms, `dir_path` is an opaque sequence of bytes with no particular encoding. +pub fn chdir(dir_path: []const u8) ChangeCurDirError!void { + if (native_os == .wasi and !builtin.link_libc) { + @compileError("WASI does not support os.chdir"); + } else if (native_os == .windows) { + var wtf16_dir_path: [windows.PATH_MAX_WIDE]u16 = undefined; + const len = try std.unicode.wtf8ToWtf16Le(wtf16_dir_path[0..], dir_path); + if (len > wtf16_dir_path.len) return error.NameTooLong; + return chdirW(wtf16_dir_path[0..len]); + } else { + const dir_path_c = try toPosixPath(dir_path); + return chdirZ(&dir_path_c); + } +} + +/// Same as `chdir` except the parameter is null-terminated. +/// On Windows, `dir_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// On WASI, `dir_path` should be encoded as valid UTF-8. +/// On other platforms, `dir_path` is an opaque sequence of bytes with no particular encoding. +pub fn chdirZ(dir_path: [*:0]const u8) ChangeCurDirError!void { + if (native_os == .windows) { + var wtf16_dir_path: [windows.PATH_MAX_WIDE]u16 = undefined; + const len = try std.unicode.wtf8ToWtf16Le(wtf16_dir_path[0..], mem.span(dir_path)); + if (len > wtf16_dir_path.len) return error.NameTooLong; + return chdirW(wtf16_dir_path[0..len]); + } else if (native_os == .wasi and !builtin.link_libc) { + return chdir(mem.span(dir_path)); + } + switch (errno(system.chdir(dir_path))) { + .SUCCESS => return, + .ACCES => return error.AccessDenied, + .FAULT => unreachable, + .IO => return error.FileSystem, + .LOOP => return error.SymLinkLoop, + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOMEM => return error.SystemResources, + .NOTDIR => return error.NotDir, + .ILSEQ => |err| if (native_os == .wasi) + return error.InvalidUtf8 + else + return unexpectedErrno(err), + else => |err| return unexpectedErrno(err), + } +} + +/// Windows-only. Same as `chdir` except the parameter is WTF16 LE encoded. +pub fn chdirW(dir_path: []const u16) ChangeCurDirError!void { + windows.SetCurrentDirectory(dir_path) catch |err| switch (err) { + error.NoDevice => return error.FileSystem, + else => |e| return e, + }; +} + +pub const FchdirError = error{ + AccessDenied, + NotDir, + FileSystem, +} || UnexpectedError; + +pub fn fchdir(dirfd: fd_t) FchdirError!void { + if (dirfd == AT.FDCWD) return; + while (true) { + switch (errno(system.fchdir(dirfd))) { + .SUCCESS => return, + .ACCES => return error.AccessDenied, + .BADF => unreachable, + .NOTDIR => return error.NotDir, + .INTR => continue, + .IO => return error.FileSystem, + else => |err| return unexpectedErrno(err), + } + } +} + +pub const ReadLinkError = error{ + /// In WASI, this error may occur when the file descriptor does + /// not hold the required rights to read value of a symbolic link relative to it. + AccessDenied, + FileSystem, + SymLinkLoop, + NameTooLong, + FileNotFound, + SystemResources, + NotLink, + NotDir, + /// WASI-only; file paths must be valid UTF-8. + InvalidUtf8, + /// Windows-only; file paths provided by the user must be valid WTF-8. + /// https://simonsapin.github.io/wtf-8/ + InvalidWtf8, + BadPathName, + /// Windows-only. This error may occur if the opened reparse point is + /// of unsupported type. + UnsupportedReparsePointType, + /// On Windows, `\\server` or `\\server\share` was not found. + NetworkNotFound, +} || UnexpectedError; + +/// Read value of a symbolic link. +/// On Windows, `file_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// On WASI, `file_path` should be encoded as valid UTF-8. +/// On other platforms, `file_path` is an opaque sequence of bytes with no particular encoding. +/// The return value is a slice of `out_buffer` from index 0. +/// On Windows, the result is encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// On WASI, the result is encoded as UTF-8. +/// On other platforms, the result is an opaque sequence of bytes with no particular encoding. +pub fn readlink(file_path: []const u8, out_buffer: []u8) ReadLinkError![]u8 { + if (native_os == .wasi and !builtin.link_libc) { + return readlinkat(wasi.AT.FDCWD, file_path, out_buffer); + } else if (native_os == .windows) { + const file_path_w = try windows.sliceToPrefixedFileW(null, file_path); + return readlinkW(file_path_w.span(), out_buffer); + } else { + const file_path_c = try toPosixPath(file_path); + return readlinkZ(&file_path_c, out_buffer); + } +} + +/// Windows-only. Same as `readlink` except `file_path` is WTF16 LE encoded. +/// The result is encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// See also `readlinkZ`. +pub fn readlinkW(file_path: []const u16, out_buffer: []u8) ReadLinkError![]u8 { + return windows.ReadLink(fs.cwd().fd, file_path, out_buffer); +} + +/// Same as `readlink` except `file_path` is null-terminated. +pub fn readlinkZ(file_path: [*:0]const u8, out_buffer: []u8) ReadLinkError![]u8 { + if (native_os == .windows) { + const file_path_w = try windows.cStrToPrefixedFileW(null, file_path); + return readlinkW(file_path_w.span(), out_buffer); + } else if (native_os == .wasi and !builtin.link_libc) { + return readlink(mem.sliceTo(file_path, 0), out_buffer); + } + const rc = system.readlink(file_path, out_buffer.ptr, out_buffer.len); + switch (errno(rc)) { + .SUCCESS => return out_buffer[0..@bitCast(rc)], + .ACCES => return error.AccessDenied, + .FAULT => unreachable, + .INVAL => return error.NotLink, + .IO => return error.FileSystem, + .LOOP => return error.SymLinkLoop, + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOMEM => return error.SystemResources, + .NOTDIR => return error.NotDir, + .ILSEQ => |err| if (native_os == .wasi) + return error.InvalidUtf8 + else + return unexpectedErrno(err), + else => |err| return unexpectedErrno(err), + } +} + +/// Similar to `readlink` except reads value of a symbolink link **relative** to `dirfd` directory handle. +/// On Windows, `file_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// On WASI, `file_path` should be encoded as valid UTF-8. +/// On other platforms, `file_path` is an opaque sequence of bytes with no particular encoding. +/// The return value is a slice of `out_buffer` from index 0. +/// On Windows, the result is encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// On WASI, the result is encoded as UTF-8. +/// On other platforms, the result is an opaque sequence of bytes with no particular encoding. +/// See also `readlinkatWasi`, `realinkatZ` and `realinkatW`. +pub fn readlinkat(dirfd: fd_t, file_path: []const u8, out_buffer: []u8) ReadLinkError![]u8 { + if (native_os == .wasi and !builtin.link_libc) { + return readlinkatWasi(dirfd, file_path, out_buffer); + } + if (native_os == .windows) { + const file_path_w = try windows.sliceToPrefixedFileW(dirfd, file_path); + return readlinkatW(dirfd, file_path_w.span(), out_buffer); + } + const file_path_c = try toPosixPath(file_path); + return readlinkatZ(dirfd, &file_path_c, out_buffer); +} + +/// WASI-only. Same as `readlinkat` but targets WASI. +/// See also `readlinkat`. +pub fn readlinkatWasi(dirfd: fd_t, file_path: []const u8, out_buffer: []u8) ReadLinkError![]u8 { + var bufused: usize = undefined; + switch (wasi.path_readlink(dirfd, file_path.ptr, file_path.len, out_buffer.ptr, out_buffer.len, &bufused)) { + .SUCCESS => return out_buffer[0..bufused], + .ACCES => return error.AccessDenied, + .FAULT => unreachable, + .INVAL => return error.NotLink, + .IO => return error.FileSystem, + .LOOP => return error.SymLinkLoop, + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOMEM => return error.SystemResources, + .NOTDIR => return error.NotDir, + .NOTCAPABLE => return error.AccessDenied, + .ILSEQ => return error.InvalidUtf8, + else => |err| return unexpectedErrno(err), + } +} + +/// Windows-only. Same as `readlinkat` except `file_path` is null-terminated, WTF16 LE encoded. +/// The result is encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// See also `readlinkat`. +pub fn readlinkatW(dirfd: fd_t, file_path: []const u16, out_buffer: []u8) ReadLinkError![]u8 { + return windows.ReadLink(dirfd, file_path, out_buffer); +} + +/// Same as `readlinkat` except `file_path` is null-terminated. +/// See also `readlinkat`. +pub fn readlinkatZ(dirfd: fd_t, file_path: [*:0]const u8, out_buffer: []u8) ReadLinkError![]u8 { + if (native_os == .windows) { + const file_path_w = try windows.cStrToPrefixedFileW(dirfd, file_path); + return readlinkatW(dirfd, file_path_w.span(), out_buffer); + } else if (native_os == .wasi and !builtin.link_libc) { + return readlinkat(dirfd, mem.sliceTo(file_path, 0), out_buffer); + } + const rc = system.readlinkat(dirfd, file_path, out_buffer.ptr, out_buffer.len); + switch (errno(rc)) { + .SUCCESS => return out_buffer[0..@bitCast(rc)], + .ACCES => return error.AccessDenied, + .FAULT => unreachable, + .INVAL => return error.NotLink, + .IO => return error.FileSystem, + .LOOP => return error.SymLinkLoop, + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOMEM => return error.SystemResources, + .NOTDIR => return error.NotDir, + .ILSEQ => |err| if (native_os == .wasi) + return error.InvalidUtf8 + else + return unexpectedErrno(err), + else => |err| return unexpectedErrno(err), + } +} + +pub const SetEidError = error{ + InvalidUserId, + PermissionDenied, +} || UnexpectedError; + +pub const SetIdError = error{ResourceLimitReached} || SetEidError; + +pub fn setuid(uid: uid_t) SetIdError!void { + switch (errno(system.setuid(uid))) { + .SUCCESS => return, + .AGAIN => return error.ResourceLimitReached, + .INVAL => return error.InvalidUserId, + .PERM => return error.PermissionDenied, + else => |err| return unexpectedErrno(err), + } +} + +pub fn seteuid(uid: uid_t) SetEidError!void { + switch (errno(system.seteuid(uid))) { + .SUCCESS => return, + .INVAL => return error.InvalidUserId, + .PERM => return error.PermissionDenied, + else => |err| return unexpectedErrno(err), + } +} + +pub fn setreuid(ruid: uid_t, euid: uid_t) SetIdError!void { + switch (errno(system.setreuid(ruid, euid))) { + .SUCCESS => return, + .AGAIN => return error.ResourceLimitReached, + .INVAL => return error.InvalidUserId, + .PERM => return error.PermissionDenied, + else => |err| return unexpectedErrno(err), + } +} + +pub fn setgid(gid: gid_t) SetIdError!void { + switch (errno(system.setgid(gid))) { + .SUCCESS => return, + .AGAIN => return error.ResourceLimitReached, + .INVAL => return error.InvalidUserId, + .PERM => return error.PermissionDenied, + else => |err| return unexpectedErrno(err), + } +} + +pub fn setegid(uid: uid_t) SetEidError!void { + switch (errno(system.setegid(uid))) { + .SUCCESS => return, + .INVAL => return error.InvalidUserId, + .PERM => return error.PermissionDenied, + else => |err| return unexpectedErrno(err), + } +} + +pub fn setregid(rgid: gid_t, egid: gid_t) SetIdError!void { + switch (errno(system.setregid(rgid, egid))) { + .SUCCESS => return, + .AGAIN => return error.ResourceLimitReached, + .INVAL => return error.InvalidUserId, + .PERM => return error.PermissionDenied, + else => |err| return unexpectedErrno(err), + } +} + +/// Test whether a file descriptor refers to a terminal. +pub fn isatty(handle: fd_t) bool { + if (native_os == .windows) { + if (fs.File.isCygwinPty(.{ .handle = handle })) + return true; + + var out: windows.DWORD = undefined; + return windows.kernel32.GetConsoleMode(handle, &out) != 0; + } + if (builtin.link_libc) { + return system.isatty(handle) != 0; + } + if (native_os == .wasi) { + var statbuf: wasi.fdstat_t = undefined; + const err = wasi.fd_fdstat_get(handle, &statbuf); + if (err != .SUCCESS) + return false; + + // A tty is a character device that we can't seek or tell on. + if (statbuf.fs_filetype != .CHARACTER_DEVICE) + return false; + if (statbuf.fs_rights_base.FD_SEEK or statbuf.fs_rights_base.FD_TELL) + return false; + + return true; + } + if (native_os == .linux) { + while (true) { + var wsz: linux.winsize = undefined; + const fd: usize = @bitCast(@as(isize, handle)); + const rc = linux.syscall3(.ioctl, fd, linux.T.IOCGWINSZ, @intFromPtr(&wsz)); + switch (linux.E.init(rc)) { + .SUCCESS => return true, + .INTR => continue, + else => return false, + } + } + } + return system.isatty(handle) != 0; +} + +pub const SocketError = error{ + /// Permission to create a socket of the specified type and/or + /// pro‐tocol is denied. + PermissionDenied, + + /// The implementation does not support the specified address family. + AddressFamilyNotSupported, + + /// Unknown protocol, or protocol family not available. + ProtocolFamilyNotAvailable, + + /// The per-process limit on the number of open file descriptors has been reached. + ProcessFdQuotaExceeded, + + /// The system-wide limit on the total number of open files has been reached. + SystemFdQuotaExceeded, + + /// Insufficient memory is available. The socket cannot be created until sufficient + /// resources are freed. + SystemResources, + + /// The protocol type or the specified protocol is not supported within this domain. + ProtocolNotSupported, + + /// The socket type is not supported by the protocol. + SocketTypeNotSupported, +} || UnexpectedError; + +pub fn socket(domain: u32, socket_type: u32, protocol: u32) SocketError!socket_t { + if (native_os == .windows) { + // NOTE: windows translates the SOCK.NONBLOCK/SOCK.CLOEXEC flags into + // windows-analagous operations + const filtered_sock_type = socket_type & ~@as(u32, SOCK.NONBLOCK | SOCK.CLOEXEC); + const flags: u32 = if ((socket_type & SOCK.CLOEXEC) != 0) + windows.ws2_32.WSA_FLAG_NO_HANDLE_INHERIT + else + 0; + const rc = try windows.WSASocketW( + @bitCast(domain), + @bitCast(filtered_sock_type), + @bitCast(protocol), + null, + 0, + flags, + ); + errdefer windows.closesocket(rc) catch unreachable; + if ((socket_type & SOCK.NONBLOCK) != 0) { + var mode: c_ulong = 1; // nonblocking + if (windows.ws2_32.SOCKET_ERROR == windows.ws2_32.ioctlsocket(rc, windows.ws2_32.FIONBIO, &mode)) { + switch (windows.ws2_32.WSAGetLastError()) { + // have not identified any error codes that should be handled yet + else => unreachable, + } + } + } + return rc; + } + + const have_sock_flags = !builtin.target.isDarwin(); + const filtered_sock_type = if (!have_sock_flags) + socket_type & ~@as(u32, SOCK.NONBLOCK | SOCK.CLOEXEC) + else + socket_type; + const rc = system.socket(domain, filtered_sock_type, protocol); + switch (errno(rc)) { + .SUCCESS => { + const fd: fd_t = @intCast(rc); + errdefer close(fd); + if (!have_sock_flags) { + try setSockFlags(fd, socket_type); + } + return fd; + }, + .ACCES => return error.PermissionDenied, + .AFNOSUPPORT => return error.AddressFamilyNotSupported, + .INVAL => return error.ProtocolFamilyNotAvailable, + .MFILE => return error.ProcessFdQuotaExceeded, + .NFILE => return error.SystemFdQuotaExceeded, + .NOBUFS => return error.SystemResources, + .NOMEM => return error.SystemResources, + .PROTONOSUPPORT => return error.ProtocolNotSupported, + .PROTOTYPE => return error.SocketTypeNotSupported, + else => |err| return unexpectedErrno(err), + } +} + +pub const ShutdownError = error{ + ConnectionAborted, + + /// Connection was reset by peer, application should close socket as it is no longer usable. + ConnectionResetByPeer, + BlockingOperationInProgress, + + /// The network subsystem has failed. + NetworkSubsystemFailed, + + /// The socket is not connected (connection-oriented sockets only). + SocketNotConnected, + SystemResources, +} || UnexpectedError; + +pub const ShutdownHow = enum { recv, send, both }; + +/// Shutdown socket send/receive operations +pub fn shutdown(sock: socket_t, how: ShutdownHow) ShutdownError!void { + if (native_os == .windows) { + const result = windows.ws2_32.shutdown(sock, switch (how) { + .recv => windows.ws2_32.SD_RECEIVE, + .send => windows.ws2_32.SD_SEND, + .both => windows.ws2_32.SD_BOTH, + }); + if (0 != result) switch (windows.ws2_32.WSAGetLastError()) { + .WSAECONNABORTED => return error.ConnectionAborted, + .WSAECONNRESET => return error.ConnectionResetByPeer, + .WSAEINPROGRESS => return error.BlockingOperationInProgress, + .WSAEINVAL => unreachable, + .WSAENETDOWN => return error.NetworkSubsystemFailed, + .WSAENOTCONN => return error.SocketNotConnected, + .WSAENOTSOCK => unreachable, + .WSANOTINITIALISED => unreachable, + else => |err| return windows.unexpectedWSAError(err), + }; + } else { + const rc = system.shutdown(sock, switch (how) { + .recv => SHUT.RD, + .send => SHUT.WR, + .both => SHUT.RDWR, + }); + switch (errno(rc)) { + .SUCCESS => return, + .BADF => unreachable, + .INVAL => unreachable, + .NOTCONN => return error.SocketNotConnected, + .NOTSOCK => unreachable, + .NOBUFS => return error.SystemResources, + else => |err| return unexpectedErrno(err), + } + } +} + +pub const BindError = error{ + /// The address is protected, and the user is not the superuser. + /// For UNIX domain sockets: Search permission is denied on a component + /// of the path prefix. + AccessDenied, + + /// The given address is already in use, or in the case of Internet domain sockets, + /// The port number was specified as zero in the socket + /// address structure, but, upon attempting to bind to an ephemeral port, it was + /// determined that all port numbers in the ephemeral port range are currently in + /// use. See the discussion of /proc/sys/net/ipv4/ip_local_port_range ip(7). + AddressInUse, + + /// A nonexistent interface was requested or the requested address was not local. + AddressNotAvailable, + + /// The address is not valid for the address family of socket. + AddressFamilyNotSupported, + + /// Too many symbolic links were encountered in resolving addr. + SymLinkLoop, + + /// addr is too long. + NameTooLong, + + /// A component in the directory prefix of the socket pathname does not exist. + FileNotFound, + + /// Insufficient kernel memory was available. + SystemResources, + + /// A component of the path prefix is not a directory. + NotDir, + + /// The socket inode would reside on a read-only filesystem. + ReadOnlyFileSystem, + + /// The network subsystem has failed. + NetworkSubsystemFailed, + + FileDescriptorNotASocket, + + AlreadyBound, +} || UnexpectedError; + +/// addr is `*const T` where T is one of the sockaddr +pub fn bind(sock: socket_t, addr: *const sockaddr, len: socklen_t) BindError!void { + if (native_os == .windows) { + const rc = windows.bind(sock, addr, len); + if (rc == windows.ws2_32.SOCKET_ERROR) { + switch (windows.ws2_32.WSAGetLastError()) { + .WSANOTINITIALISED => unreachable, // not initialized WSA + .WSAEACCES => return error.AccessDenied, + .WSAEADDRINUSE => return error.AddressInUse, + .WSAEADDRNOTAVAIL => return error.AddressNotAvailable, + .WSAENOTSOCK => return error.FileDescriptorNotASocket, + .WSAEFAULT => unreachable, // invalid pointers + .WSAEINVAL => return error.AlreadyBound, + .WSAENOBUFS => return error.SystemResources, + .WSAENETDOWN => return error.NetworkSubsystemFailed, + else => |err| return windows.unexpectedWSAError(err), + } + unreachable; + } + return; + } else { + const rc = system.bind(sock, addr, len); + switch (errno(rc)) { + .SUCCESS => return, + .ACCES, .PERM => return error.AccessDenied, + .ADDRINUSE => return error.AddressInUse, + .BADF => unreachable, // always a race condition if this error is returned + .INVAL => unreachable, // invalid parameters + .NOTSOCK => unreachable, // invalid `sockfd` + .AFNOSUPPORT => return error.AddressFamilyNotSupported, + .ADDRNOTAVAIL => return error.AddressNotAvailable, + .FAULT => unreachable, // invalid `addr` pointer + .LOOP => return error.SymLinkLoop, + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOMEM => return error.SystemResources, + .NOTDIR => return error.NotDir, + .ROFS => return error.ReadOnlyFileSystem, + else => |err| return unexpectedErrno(err), + } + } + unreachable; +} + +pub const ListenError = error{ + /// Another socket is already listening on the same port. + /// For Internet domain sockets, the socket referred to by sockfd had not previously + /// been bound to an address and, upon attempting to bind it to an ephemeral port, it + /// was determined that all port numbers in the ephemeral port range are currently in + /// use. See the discussion of /proc/sys/net/ipv4/ip_local_port_range in ip(7). + AddressInUse, + + /// The file descriptor sockfd does not refer to a socket. + FileDescriptorNotASocket, + + /// The socket is not of a type that supports the listen() operation. + OperationNotSupported, + + /// The network subsystem has failed. + NetworkSubsystemFailed, + + /// Ran out of system resources + /// On Windows it can either run out of socket descriptors or buffer space + SystemResources, + + /// Already connected + AlreadyConnected, + + /// Socket has not been bound yet + SocketNotBound, +} || UnexpectedError; + +pub fn listen(sock: socket_t, backlog: u31) ListenError!void { + if (native_os == .windows) { + const rc = windows.listen(sock, backlog); + if (rc == windows.ws2_32.SOCKET_ERROR) { + switch (windows.ws2_32.WSAGetLastError()) { + .WSANOTINITIALISED => unreachable, // not initialized WSA + .WSAENETDOWN => return error.NetworkSubsystemFailed, + .WSAEADDRINUSE => return error.AddressInUse, + .WSAEISCONN => return error.AlreadyConnected, + .WSAEINVAL => return error.SocketNotBound, + .WSAEMFILE, .WSAENOBUFS => return error.SystemResources, + .WSAENOTSOCK => return error.FileDescriptorNotASocket, + .WSAEOPNOTSUPP => return error.OperationNotSupported, + .WSAEINPROGRESS => unreachable, + else => |err| return windows.unexpectedWSAError(err), + } + } + return; + } else { + const rc = system.listen(sock, backlog); + switch (errno(rc)) { + .SUCCESS => return, + .ADDRINUSE => return error.AddressInUse, + .BADF => unreachable, + .NOTSOCK => return error.FileDescriptorNotASocket, + .OPNOTSUPP => return error.OperationNotSupported, + else => |err| return unexpectedErrno(err), + } + } +} + +pub const AcceptError = error{ + ConnectionAborted, + + /// The file descriptor sockfd does not refer to a socket. + FileDescriptorNotASocket, + + /// The per-process limit on the number of open file descriptors has been reached. + ProcessFdQuotaExceeded, + + /// The system-wide limit on the total number of open files has been reached. + SystemFdQuotaExceeded, + + /// Not enough free memory. This often means that the memory allocation is limited + /// by the socket buffer limits, not by the system memory. + SystemResources, + + /// Socket is not listening for new connections. + SocketNotListening, + + ProtocolFailure, + + /// Firewall rules forbid connection. + BlockedByFirewall, + + /// This error occurs when no global event loop is configured, + /// and accepting from the socket would block. + WouldBlock, + + /// An incoming connection was indicated, but was subsequently terminated by the + /// remote peer prior to accepting the call. + ConnectionResetByPeer, + + /// The network subsystem has failed. + NetworkSubsystemFailed, + + /// The referenced socket is not a type that supports connection-oriented service. + OperationNotSupported, +} || UnexpectedError; + +/// Accept a connection on a socket. +/// If `sockfd` is opened in non blocking mode, the function will +/// return error.WouldBlock when EAGAIN is received. +pub fn accept( + /// This argument is a socket that has been created with `socket`, bound to a local address + /// with `bind`, and is listening for connections after a `listen`. + sock: socket_t, + /// This argument is a pointer to a sockaddr structure. This structure is filled in with the + /// address of the peer socket, as known to the communications layer. The exact format of the + /// address returned addr is determined by the socket's address family (see `socket` and the + /// respective protocol man pages). + addr: ?*sockaddr, + /// This argument is a value-result argument: the caller must initialize it to contain the + /// size (in bytes) of the structure pointed to by addr; on return it will contain the actual size + /// of the peer address. + /// + /// The returned address is truncated if the buffer provided is too small; in this case, `addr_size` + /// will return a value greater than was supplied to the call. + addr_size: ?*socklen_t, + /// The following values can be bitwise ORed in flags to obtain different behavior: + /// * `SOCK.NONBLOCK` - Set the `NONBLOCK` file status flag on the open file description (see `open`) + /// referred to by the new file descriptor. Using this flag saves extra calls to `fcntl` to achieve + /// the same result. + /// * `SOCK.CLOEXEC` - Set the close-on-exec (`FD_CLOEXEC`) flag on the new file descriptor. See the + /// description of the `CLOEXEC` flag in `open` for reasons why this may be useful. + flags: u32, +) AcceptError!socket_t { + const have_accept4 = !(builtin.target.isDarwin() or native_os == .windows); + assert(0 == (flags & ~@as(u32, SOCK.NONBLOCK | SOCK.CLOEXEC))); // Unsupported flag(s) + + const accepted_sock: socket_t = while (true) { + const rc = if (have_accept4) + system.accept4(sock, addr, addr_size, flags) + else if (native_os == .windows) + windows.accept(sock, addr, addr_size) + else + system.accept(sock, addr, addr_size); + + if (native_os == .windows) { + if (rc == windows.ws2_32.INVALID_SOCKET) { + switch (windows.ws2_32.WSAGetLastError()) { + .WSANOTINITIALISED => unreachable, // not initialized WSA + .WSAECONNRESET => return error.ConnectionResetByPeer, + .WSAEFAULT => unreachable, + .WSAEINVAL => return error.SocketNotListening, + .WSAEMFILE => return error.ProcessFdQuotaExceeded, + .WSAENETDOWN => return error.NetworkSubsystemFailed, + .WSAENOBUFS => return error.FileDescriptorNotASocket, + .WSAEOPNOTSUPP => return error.OperationNotSupported, + .WSAEWOULDBLOCK => return error.WouldBlock, + else => |err| return windows.unexpectedWSAError(err), + } + } else { + break rc; + } + } else { + switch (errno(rc)) { + .SUCCESS => break @intCast(rc), + .INTR => continue, + .AGAIN => return error.WouldBlock, + .BADF => unreachable, // always a race condition + .CONNABORTED => return error.ConnectionAborted, + .FAULT => unreachable, + .INVAL => return error.SocketNotListening, + .NOTSOCK => unreachable, + .MFILE => return error.ProcessFdQuotaExceeded, + .NFILE => return error.SystemFdQuotaExceeded, + .NOBUFS => return error.SystemResources, + .NOMEM => return error.SystemResources, + .OPNOTSUPP => unreachable, + .PROTO => return error.ProtocolFailure, + .PERM => return error.BlockedByFirewall, + else => |err| return unexpectedErrno(err), + } + } + }; + + errdefer switch (native_os) { + .windows => windows.closesocket(accepted_sock) catch unreachable, + else => close(accepted_sock), + }; + if (!have_accept4) { + try setSockFlags(accepted_sock, flags); + } + return accepted_sock; +} + +fn setSockFlags(sock: socket_t, flags: u32) !void { + if ((flags & SOCK.CLOEXEC) != 0) { + if (native_os == .windows) { + // TODO: Find out if this is supported for sockets + } else { + var fd_flags = fcntl(sock, F.GETFD, 0) catch |err| switch (err) { + error.FileBusy => unreachable, + error.Locked => unreachable, + error.PermissionDenied => unreachable, + error.DeadLock => unreachable, + error.LockedRegionLimitExceeded => unreachable, + else => |e| return e, + }; + fd_flags |= FD_CLOEXEC; + _ = fcntl(sock, F.SETFD, fd_flags) catch |err| switch (err) { + error.FileBusy => unreachable, + error.Locked => unreachable, + error.PermissionDenied => unreachable, + error.DeadLock => unreachable, + error.LockedRegionLimitExceeded => unreachable, + else => |e| return e, + }; + } + } + if ((flags & SOCK.NONBLOCK) != 0) { + if (native_os == .windows) { + var mode: c_ulong = 1; + if (windows.ws2_32.ioctlsocket(sock, windows.ws2_32.FIONBIO, &mode) == windows.ws2_32.SOCKET_ERROR) { + switch (windows.ws2_32.WSAGetLastError()) { + .WSANOTINITIALISED => unreachable, + .WSAENETDOWN => return error.NetworkSubsystemFailed, + .WSAENOTSOCK => return error.FileDescriptorNotASocket, + // TODO: handle more errors + else => |err| return windows.unexpectedWSAError(err), + } + } + } else { + var fl_flags = fcntl(sock, F.GETFL, 0) catch |err| switch (err) { + error.FileBusy => unreachable, + error.Locked => unreachable, + error.PermissionDenied => unreachable, + error.DeadLock => unreachable, + error.LockedRegionLimitExceeded => unreachable, + else => |e| return e, + }; + fl_flags |= 1 << @bitOffsetOf(O, "NONBLOCK"); + _ = fcntl(sock, F.SETFL, fl_flags) catch |err| switch (err) { + error.FileBusy => unreachable, + error.Locked => unreachable, + error.PermissionDenied => unreachable, + error.DeadLock => unreachable, + error.LockedRegionLimitExceeded => unreachable, + else => |e| return e, + }; + } + } +} + +pub const EpollCreateError = error{ + /// The per-user limit on the number of epoll instances imposed by + /// /proc/sys/fs/epoll/max_user_instances was encountered. See epoll(7) for further + /// details. + /// Or, The per-process limit on the number of open file descriptors has been reached. + ProcessFdQuotaExceeded, + + /// The system-wide limit on the total number of open files has been reached. + SystemFdQuotaExceeded, + + /// There was insufficient memory to create the kernel object. + SystemResources, +} || UnexpectedError; + +pub fn epoll_create1(flags: u32) EpollCreateError!i32 { + const rc = system.epoll_create1(flags); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + else => |err| return unexpectedErrno(err), + + .INVAL => unreachable, + .MFILE => return error.ProcessFdQuotaExceeded, + .NFILE => return error.SystemFdQuotaExceeded, + .NOMEM => return error.SystemResources, + } +} + +pub const EpollCtlError = error{ + /// op was EPOLL_CTL_ADD, and the supplied file descriptor fd is already registered + /// with this epoll instance. + FileDescriptorAlreadyPresentInSet, + + /// fd refers to an epoll instance and this EPOLL_CTL_ADD operation would result in a + /// circular loop of epoll instances monitoring one another. + OperationCausesCircularLoop, + + /// op was EPOLL_CTL_MOD or EPOLL_CTL_DEL, and fd is not registered with this epoll + /// instance. + FileDescriptorNotRegistered, + + /// There was insufficient memory to handle the requested op control operation. + SystemResources, + + /// The limit imposed by /proc/sys/fs/epoll/max_user_watches was encountered while + /// trying to register (EPOLL_CTL_ADD) a new file descriptor on an epoll instance. + /// See epoll(7) for further details. + UserResourceLimitReached, + + /// The target file fd does not support epoll. This error can occur if fd refers to, + /// for example, a regular file or a directory. + FileDescriptorIncompatibleWithEpoll, +} || UnexpectedError; + +pub fn epoll_ctl(epfd: i32, op: u32, fd: i32, event: ?*linux.epoll_event) EpollCtlError!void { + const rc = system.epoll_ctl(epfd, op, fd, event); + switch (errno(rc)) { + .SUCCESS => return, + else => |err| return unexpectedErrno(err), + + .BADF => unreachable, // always a race condition if this happens + .EXIST => return error.FileDescriptorAlreadyPresentInSet, + .INVAL => unreachable, + .LOOP => return error.OperationCausesCircularLoop, + .NOENT => return error.FileDescriptorNotRegistered, + .NOMEM => return error.SystemResources, + .NOSPC => return error.UserResourceLimitReached, + .PERM => return error.FileDescriptorIncompatibleWithEpoll, + } +} + +/// Waits for an I/O event on an epoll file descriptor. +/// Returns the number of file descriptors ready for the requested I/O, +/// or zero if no file descriptor became ready during the requested timeout milliseconds. +pub fn epoll_wait(epfd: i32, events: []linux.epoll_event, timeout: i32) usize { + while (true) { + // TODO get rid of the @intCast + const rc = system.epoll_wait(epfd, events.ptr, @intCast(events.len), timeout); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .INTR => continue, + .BADF => unreachable, + .FAULT => unreachable, + .INVAL => unreachable, + else => unreachable, + } + } +} + +pub const EventFdError = error{ + SystemResources, + ProcessFdQuotaExceeded, + SystemFdQuotaExceeded, +} || UnexpectedError; + +pub fn eventfd(initval: u32, flags: u32) EventFdError!i32 { + const rc = system.eventfd(initval, flags); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + else => |err| return unexpectedErrno(err), + + .INVAL => unreachable, // invalid parameters + .MFILE => return error.ProcessFdQuotaExceeded, + .NFILE => return error.SystemFdQuotaExceeded, + .NODEV => return error.SystemResources, + .NOMEM => return error.SystemResources, + } +} + +pub const GetSockNameError = error{ + /// Insufficient resources were available in the system to perform the operation. + SystemResources, + + /// The network subsystem has failed. + NetworkSubsystemFailed, + + /// Socket hasn't been bound yet + SocketNotBound, + + FileDescriptorNotASocket, +} || UnexpectedError; + +pub fn getsockname(sock: socket_t, addr: *sockaddr, addrlen: *socklen_t) GetSockNameError!void { + if (native_os == .windows) { + const rc = windows.getsockname(sock, addr, addrlen); + if (rc == windows.ws2_32.SOCKET_ERROR) { + switch (windows.ws2_32.WSAGetLastError()) { + .WSANOTINITIALISED => unreachable, + .WSAENETDOWN => return error.NetworkSubsystemFailed, + .WSAEFAULT => unreachable, // addr or addrlen have invalid pointers or addrlen points to an incorrect value + .WSAENOTSOCK => return error.FileDescriptorNotASocket, + .WSAEINVAL => return error.SocketNotBound, + else => |err| return windows.unexpectedWSAError(err), + } + } + return; + } else { + const rc = system.getsockname(sock, addr, addrlen); + switch (errno(rc)) { + .SUCCESS => return, + else => |err| return unexpectedErrno(err), + + .BADF => unreachable, // always a race condition + .FAULT => unreachable, + .INVAL => unreachable, // invalid parameters + .NOTSOCK => return error.FileDescriptorNotASocket, + .NOBUFS => return error.SystemResources, + } + } +} + +pub fn getpeername(sock: socket_t, addr: *sockaddr, addrlen: *socklen_t) GetSockNameError!void { + if (native_os == .windows) { + const rc = windows.getpeername(sock, addr, addrlen); + if (rc == windows.ws2_32.SOCKET_ERROR) { + switch (windows.ws2_32.WSAGetLastError()) { + .WSANOTINITIALISED => unreachable, + .WSAENETDOWN => return error.NetworkSubsystemFailed, + .WSAEFAULT => unreachable, // addr or addrlen have invalid pointers or addrlen points to an incorrect value + .WSAENOTSOCK => return error.FileDescriptorNotASocket, + .WSAEINVAL => return error.SocketNotBound, + else => |err| return windows.unexpectedWSAError(err), + } + } + return; + } else { + const rc = system.getpeername(sock, addr, addrlen); + switch (errno(rc)) { + .SUCCESS => return, + else => |err| return unexpectedErrno(err), + + .BADF => unreachable, // always a race condition + .FAULT => unreachable, + .INVAL => unreachable, // invalid parameters + .NOTSOCK => return error.FileDescriptorNotASocket, + .NOBUFS => return error.SystemResources, + } + } +} + +pub const ConnectError = error{ + /// For UNIX domain sockets, which are identified by pathname: Write permission is denied on the socket + /// file, or search permission is denied for one of the directories in the path prefix. + /// or + /// The user tried to connect to a broadcast address without having the socket broadcast flag enabled or + /// the connection request failed because of a local firewall rule. + PermissionDenied, + + /// Local address is already in use. + AddressInUse, + + /// (Internet domain sockets) The socket referred to by sockfd had not previously been bound to an + /// address and, upon attempting to bind it to an ephemeral port, it was determined that all port numbers + /// in the ephemeral port range are currently in use. See the discussion of + /// /proc/sys/net/ipv4/ip_local_port_range in ip(7). + AddressNotAvailable, + + /// The passed address didn't have the correct address family in its sa_family field. + AddressFamilyNotSupported, + + /// Insufficient entries in the routing cache. + SystemResources, + + /// A connect() on a stream socket found no one listening on the remote address. + ConnectionRefused, + + /// Network is unreachable. + NetworkUnreachable, + + /// Timeout while attempting connection. The server may be too busy to accept new connections. Note + /// that for IP sockets the timeout may be very long when syncookies are enabled on the server. + ConnectionTimedOut, + + /// This error occurs when no global event loop is configured, + /// and connecting to the socket would block. + WouldBlock, + + /// The given path for the unix socket does not exist. + FileNotFound, + + /// Connection was reset by peer before connect could complete. + ConnectionResetByPeer, + + /// Socket is non-blocking and already has a pending connection in progress. + ConnectionPending, +} || UnexpectedError; + +/// Initiate a connection on a socket. +/// If `sockfd` is opened in non blocking mode, the function will +/// return error.WouldBlock when EAGAIN or EINPROGRESS is received. +pub fn connect(sock: socket_t, sock_addr: *const sockaddr, len: socklen_t) ConnectError!void { + if (native_os == .windows) { + const rc = windows.ws2_32.connect(sock, sock_addr, @intCast(len)); + if (rc == 0) return; + switch (windows.ws2_32.WSAGetLastError()) { + .WSAEADDRINUSE => return error.AddressInUse, + .WSAEADDRNOTAVAIL => return error.AddressNotAvailable, + .WSAECONNREFUSED => return error.ConnectionRefused, + .WSAECONNRESET => return error.ConnectionResetByPeer, + .WSAETIMEDOUT => return error.ConnectionTimedOut, + .WSAEHOSTUNREACH, // TODO: should we return NetworkUnreachable in this case as well? + .WSAENETUNREACH, + => return error.NetworkUnreachable, + .WSAEFAULT => unreachable, + .WSAEINVAL => unreachable, + .WSAEISCONN => unreachable, + .WSAENOTSOCK => unreachable, + .WSAEWOULDBLOCK => return error.WouldBlock, + .WSAEACCES => unreachable, + .WSAENOBUFS => return error.SystemResources, + .WSAEAFNOSUPPORT => return error.AddressFamilyNotSupported, + else => |err| return windows.unexpectedWSAError(err), + } + return; + } + + while (true) { + switch (errno(system.connect(sock, sock_addr, len))) { + .SUCCESS => return, + .ACCES => return error.PermissionDenied, + .PERM => return error.PermissionDenied, + .ADDRINUSE => return error.AddressInUse, + .ADDRNOTAVAIL => return error.AddressNotAvailable, + .AFNOSUPPORT => return error.AddressFamilyNotSupported, + .AGAIN, .INPROGRESS => return error.WouldBlock, + .ALREADY => return error.ConnectionPending, + .BADF => unreachable, // sockfd is not a valid open file descriptor. + .CONNREFUSED => return error.ConnectionRefused, + .CONNRESET => return error.ConnectionResetByPeer, + .FAULT => unreachable, // The socket structure address is outside the user's address space. + .INTR => continue, + .ISCONN => unreachable, // The socket is already connected. + .HOSTUNREACH => return error.NetworkUnreachable, + .NETUNREACH => return error.NetworkUnreachable, + .NOTSOCK => unreachable, // The file descriptor sockfd does not refer to a socket. + .PROTOTYPE => unreachable, // The socket type does not support the requested communications protocol. + .TIMEDOUT => return error.ConnectionTimedOut, + .NOENT => return error.FileNotFound, // Returned when socket is AF.UNIX and the given path does not exist. + .CONNABORTED => unreachable, // Tried to reuse socket that previously received error.ConnectionRefused. + else => |err| return unexpectedErrno(err), + } + } +} + +pub fn getsockoptError(sockfd: fd_t) ConnectError!void { + var err_code: i32 = undefined; + var size: u32 = @sizeOf(u32); + const rc = system.getsockopt(sockfd, SOL.SOCKET, SO.ERROR, @ptrCast(&err_code), &size); + assert(size == 4); + switch (errno(rc)) { + .SUCCESS => switch (@as(E, @enumFromInt(err_code))) { + .SUCCESS => return, + .ACCES => return error.PermissionDenied, + .PERM => return error.PermissionDenied, + .ADDRINUSE => return error.AddressInUse, + .ADDRNOTAVAIL => return error.AddressNotAvailable, + .AFNOSUPPORT => return error.AddressFamilyNotSupported, + .AGAIN => return error.SystemResources, + .ALREADY => return error.ConnectionPending, + .BADF => unreachable, // sockfd is not a valid open file descriptor. + .CONNREFUSED => return error.ConnectionRefused, + .FAULT => unreachable, // The socket structure address is outside the user's address space. + .ISCONN => unreachable, // The socket is already connected. + .HOSTUNREACH => return error.NetworkUnreachable, + .NETUNREACH => return error.NetworkUnreachable, + .NOTSOCK => unreachable, // The file descriptor sockfd does not refer to a socket. + .PROTOTYPE => unreachable, // The socket type does not support the requested communications protocol. + .TIMEDOUT => return error.ConnectionTimedOut, + .CONNRESET => return error.ConnectionResetByPeer, + else => |err| return unexpectedErrno(err), + }, + .BADF => unreachable, // The argument sockfd is not a valid file descriptor. + .FAULT => unreachable, // The address pointed to by optval or optlen is not in a valid part of the process address space. + .INVAL => unreachable, + .NOPROTOOPT => unreachable, // The option is unknown at the level indicated. + .NOTSOCK => unreachable, // The file descriptor sockfd does not refer to a socket. + else => |err| return unexpectedErrno(err), + } +} + +pub const WaitPidResult = struct { + pid: pid_t, + status: u32, +}; + +/// Use this version of the `waitpid` wrapper if you spawned your child process using explicit +/// `fork` and `execve` method. +pub fn waitpid(pid: pid_t, flags: u32) WaitPidResult { + var status: if (builtin.link_libc) c_int else u32 = undefined; + while (true) { + const rc = system.waitpid(pid, &status, @intCast(flags)); + switch (errno(rc)) { + .SUCCESS => return .{ + .pid = @intCast(rc), + .status = @bitCast(status), + }, + .INTR => continue, + .CHILD => unreachable, // The process specified does not exist. It would be a race condition to handle this error. + .INVAL => unreachable, // Invalid flags. + else => unreachable, + } + } +} + +pub fn wait4(pid: pid_t, flags: u32, ru: ?*rusage) WaitPidResult { + var status: if (builtin.link_libc) c_int else u32 = undefined; + while (true) { + const rc = system.wait4(pid, &status, @intCast(flags), ru); + switch (errno(rc)) { + .SUCCESS => return .{ + .pid = @intCast(rc), + .status = @bitCast(status), + }, + .INTR => continue, + .CHILD => unreachable, // The process specified does not exist. It would be a race condition to handle this error. + .INVAL => unreachable, // Invalid flags. + else => unreachable, + } + } +} + +pub const FStatError = error{ + SystemResources, + + /// In WASI, this error may occur when the file descriptor does + /// not hold the required rights to get its filestat information. + AccessDenied, +} || UnexpectedError; + +/// Return information about a file descriptor. +pub fn fstat(fd: fd_t) FStatError!Stat { + if (native_os == .wasi and !builtin.link_libc) { + return Stat.fromFilestat(try std.os.fstat_wasi(fd)); + } + if (native_os == .windows) { + @compileError("fstat is not yet implemented on Windows"); + } + + const fstat_sym = if (lfs64_abi) system.fstat64 else system.fstat; + var stat = mem.zeroes(Stat); + switch (errno(fstat_sym(fd, &stat))) { + .SUCCESS => return stat, + .INVAL => unreachable, + .BADF => unreachable, // Always a race condition. + .NOMEM => return error.SystemResources, + .ACCES => return error.AccessDenied, + else => |err| return unexpectedErrno(err), + } +} + +pub const FStatAtError = FStatError || error{ + NameTooLong, + FileNotFound, + SymLinkLoop, + /// WASI-only; file paths must be valid UTF-8. + InvalidUtf8, +}; + +/// Similar to `fstat`, but returns stat of a resource pointed to by `pathname` +/// which is relative to `dirfd` handle. +/// On WASI, `pathname` should be encoded as valid UTF-8. +/// On other platforms, `pathname` is an opaque sequence of bytes with no particular encoding. +/// See also `fstatatZ` and `std.os.fstatat_wasi`. +pub fn fstatat(dirfd: fd_t, pathname: []const u8, flags: u32) FStatAtError!Stat { + if (native_os == .wasi and !builtin.link_libc) { + const filestat = try std.os.fstatat_wasi(dirfd, pathname, .{ + .SYMLINK_FOLLOW = (flags & AT.SYMLINK_NOFOLLOW) == 0, + }); + return Stat.fromFilestat(filestat); + } else if (native_os == .windows) { + @compileError("fstatat is not yet implemented on Windows"); + } else { + const pathname_c = try toPosixPath(pathname); + return fstatatZ(dirfd, &pathname_c, flags); + } +} + +/// Same as `fstatat` but `pathname` is null-terminated. +/// See also `fstatat`. +pub fn fstatatZ(dirfd: fd_t, pathname: [*:0]const u8, flags: u32) FStatAtError!Stat { + if (native_os == .wasi and !builtin.link_libc) { + const filestat = try std.os.fstatat_wasi(dirfd, mem.sliceTo(pathname, 0), .{ + .SYMLINK_FOLLOW = (flags & AT.SYMLINK_NOFOLLOW) == 0, + }); + return Stat.fromFilestat(filestat); + } + + const fstatat_sym = if (lfs64_abi) system.fstatat64 else system.fstatat; + var stat = mem.zeroes(Stat); + switch (errno(fstatat_sym(dirfd, pathname, &stat, flags))) { + .SUCCESS => return stat, + .INVAL => unreachable, + .BADF => unreachable, // Always a race condition. + .NOMEM => return error.SystemResources, + .ACCES => return error.AccessDenied, + .PERM => return error.AccessDenied, + .FAULT => unreachable, + .NAMETOOLONG => return error.NameTooLong, + .LOOP => return error.SymLinkLoop, + .NOENT => return error.FileNotFound, + .NOTDIR => return error.FileNotFound, + .ILSEQ => |err| if (native_os == .wasi) + return error.InvalidUtf8 + else + return unexpectedErrno(err), + else => |err| return unexpectedErrno(err), + } +} + +pub const KQueueError = error{ + /// The per-process limit on the number of open file descriptors has been reached. + ProcessFdQuotaExceeded, + + /// The system-wide limit on the total number of open files has been reached. + SystemFdQuotaExceeded, +} || UnexpectedError; + +pub fn kqueue() KQueueError!i32 { + const rc = system.kqueue(); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .MFILE => return error.ProcessFdQuotaExceeded, + .NFILE => return error.SystemFdQuotaExceeded, + else => |err| return unexpectedErrno(err), + } +} + +pub const KEventError = error{ + /// The process does not have permission to register a filter. + AccessDenied, + + /// The event could not be found to be modified or deleted. + EventNotFound, + + /// No memory was available to register the event. + SystemResources, + + /// The specified process to attach to does not exist. + ProcessNotFound, + + /// changelist or eventlist had too many items on it. + /// TODO remove this possibility + Overflow, +}; + +pub fn kevent( + kq: i32, + changelist: []const Kevent, + eventlist: []Kevent, + timeout: ?*const timespec, +) KEventError!usize { + while (true) { + const rc = system.kevent( + kq, + changelist.ptr, + cast(c_int, changelist.len) orelse return error.Overflow, + eventlist.ptr, + cast(c_int, eventlist.len) orelse return error.Overflow, + timeout, + ); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .ACCES => return error.AccessDenied, + .FAULT => unreachable, + .BADF => unreachable, // Always a race condition. + .INTR => continue, + .INVAL => unreachable, + .NOENT => return error.EventNotFound, + .NOMEM => return error.SystemResources, + .SRCH => return error.ProcessNotFound, + else => unreachable, + } + } +} + +pub const INotifyInitError = error{ + ProcessFdQuotaExceeded, + SystemFdQuotaExceeded, + SystemResources, +} || UnexpectedError; + +/// initialize an inotify instance +pub fn inotify_init1(flags: u32) INotifyInitError!i32 { + const rc = system.inotify_init1(flags); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .INVAL => unreachable, + .MFILE => return error.ProcessFdQuotaExceeded, + .NFILE => return error.SystemFdQuotaExceeded, + .NOMEM => return error.SystemResources, + else => |err| return unexpectedErrno(err), + } +} + +pub const INotifyAddWatchError = error{ + AccessDenied, + NameTooLong, + FileNotFound, + SystemResources, + UserResourceLimitReached, + NotDir, + WatchAlreadyExists, +} || UnexpectedError; + +/// add a watch to an initialized inotify instance +pub fn inotify_add_watch(inotify_fd: i32, pathname: []const u8, mask: u32) INotifyAddWatchError!i32 { + const pathname_c = try toPosixPath(pathname); + return inotify_add_watchZ(inotify_fd, &pathname_c, mask); +} + +/// Same as `inotify_add_watch` except pathname is null-terminated. +pub fn inotify_add_watchZ(inotify_fd: i32, pathname: [*:0]const u8, mask: u32) INotifyAddWatchError!i32 { + const rc = system.inotify_add_watch(inotify_fd, pathname, mask); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .ACCES => return error.AccessDenied, + .BADF => unreachable, + .FAULT => unreachable, + .INVAL => unreachable, + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOMEM => return error.SystemResources, + .NOSPC => return error.UserResourceLimitReached, + .NOTDIR => return error.NotDir, + .EXIST => return error.WatchAlreadyExists, + else => |err| return unexpectedErrno(err), + } +} + +/// remove an existing watch from an inotify instance +pub fn inotify_rm_watch(inotify_fd: i32, wd: i32) void { + switch (errno(system.inotify_rm_watch(inotify_fd, wd))) { + .SUCCESS => return, + .BADF => unreachable, + .INVAL => unreachable, + else => unreachable, + } +} + +pub const FanotifyInitError = error{ + ProcessFdQuotaExceeded, + SystemFdQuotaExceeded, + SystemResources, + OperationNotSupported, + PermissionDenied, +} || UnexpectedError; + +pub fn fanotify_init(flags: u32, event_f_flags: u32) FanotifyInitError!i32 { + const rc = system.fanotify_init(flags, event_f_flags); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .INVAL => unreachable, + .MFILE => return error.ProcessFdQuotaExceeded, + .NFILE => return error.SystemFdQuotaExceeded, + .NOMEM => return error.SystemResources, + .NOSYS => return error.OperationNotSupported, + .PERM => return error.PermissionDenied, + else => |err| return unexpectedErrno(err), + } +} + +pub const FanotifyMarkError = error{ + MarkAlreadyExists, + IsDir, + NotAssociatedWithFileSystem, + FileNotFound, + SystemResources, + UserMarkQuotaExceeded, + NotImplemented, + NotDir, + OperationNotSupported, + PermissionDenied, + NotSameFileSystem, + NameTooLong, +} || UnexpectedError; + +pub fn fanotify_mark(fanotify_fd: i32, flags: u32, mask: u64, dirfd: i32, pathname: ?[]const u8) FanotifyMarkError!void { + if (pathname) |path| { + const path_c = try toPosixPath(path); + return fanotify_markZ(fanotify_fd, flags, mask, dirfd, &path_c); + } + + return fanotify_markZ(fanotify_fd, flags, mask, dirfd, null); +} + +pub fn fanotify_markZ(fanotify_fd: i32, flags: u32, mask: u64, dirfd: i32, pathname: ?[*:0]const u8) FanotifyMarkError!void { + const rc = system.fanotify_mark(fanotify_fd, flags, mask, dirfd, pathname); + switch (errno(rc)) { + .SUCCESS => return, + .BADF => unreachable, + .EXIST => return error.MarkAlreadyExists, + .INVAL => unreachable, + .ISDIR => return error.IsDir, + .NODEV => return error.NotAssociatedWithFileSystem, + .NOENT => return error.FileNotFound, + .NOMEM => return error.SystemResources, + .NOSPC => return error.UserMarkQuotaExceeded, + .NOSYS => return error.NotImplemented, + .NOTDIR => return error.NotDir, + .OPNOTSUPP => return error.OperationNotSupported, + .PERM => return error.PermissionDenied, + .XDEV => return error.NotSameFileSystem, + else => |err| return unexpectedErrno(err), + } +} + +pub const MProtectError = error{ + /// The memory cannot be given the specified access. This can happen, for example, if you + /// mmap(2) a file to which you have read-only access, then ask mprotect() to mark it + /// PROT_WRITE. + AccessDenied, + + /// Changing the protection of a memory region would result in the total number of map‐ + /// pings with distinct attributes (e.g., read versus read/write protection) exceeding the + /// allowed maximum. (For example, making the protection of a range PROT_READ in the mid‐ + /// dle of a region currently protected as PROT_READ|PROT_WRITE would result in three map‐ + /// pings: two read/write mappings at each end and a read-only mapping in the middle.) + OutOfMemory, +} || UnexpectedError; + +/// `memory.len` must be page-aligned. +pub fn mprotect(memory: []align(mem.page_size) u8, protection: u32) MProtectError!void { + assert(mem.isAligned(memory.len, mem.page_size)); + if (native_os == .windows) { + const win_prot: windows.DWORD = switch (@as(u3, @truncate(protection))) { + 0b000 => windows.PAGE_NOACCESS, + 0b001 => windows.PAGE_READONLY, + 0b010 => unreachable, // +w -r not allowed + 0b011 => windows.PAGE_READWRITE, + 0b100 => windows.PAGE_EXECUTE, + 0b101 => windows.PAGE_EXECUTE_READ, + 0b110 => unreachable, // +w -r not allowed + 0b111 => windows.PAGE_EXECUTE_READWRITE, + }; + var old: windows.DWORD = undefined; + windows.VirtualProtect(memory.ptr, memory.len, win_prot, &old) catch |err| switch (err) { + error.InvalidAddress => return error.AccessDenied, + error.Unexpected => return error.Unexpected, + }; + } else { + switch (errno(system.mprotect(memory.ptr, memory.len, protection))) { + .SUCCESS => return, + .INVAL => unreachable, + .ACCES => return error.AccessDenied, + .NOMEM => return error.OutOfMemory, + else => |err| return unexpectedErrno(err), + } + } +} + +pub const ForkError = error{SystemResources} || UnexpectedError; + +pub fn fork() ForkError!pid_t { + const rc = system.fork(); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .AGAIN => return error.SystemResources, + .NOMEM => return error.SystemResources, + else => |err| return unexpectedErrno(err), + } +} + +pub const MMapError = error{ + /// The underlying filesystem of the specified file does not support memory mapping. + MemoryMappingNotSupported, + + /// A file descriptor refers to a non-regular file. Or a file mapping was requested, + /// but the file descriptor is not open for reading. Or `MAP.SHARED` was requested + /// and `PROT_WRITE` is set, but the file descriptor is not open in `RDWR` mode. + /// Or `PROT_WRITE` is set, but the file is append-only. + AccessDenied, + + /// The `prot` argument asks for `PROT_EXEC` but the mapped area belongs to a file on + /// a filesystem that was mounted no-exec. + PermissionDenied, + LockedMemoryLimitExceeded, + ProcessFdQuotaExceeded, + SystemFdQuotaExceeded, + OutOfMemory, +} || UnexpectedError; + +/// Map files or devices into memory. +/// `length` does not need to be aligned. +/// Use of a mapped region can result in these signals: +/// * SIGSEGV - Attempted write into a region mapped as read-only. +/// * SIGBUS - Attempted access to a portion of the buffer that does not correspond to the file +pub fn mmap( + ptr: ?[*]align(mem.page_size) u8, + length: usize, + prot: u32, + flags: system.MAP, + fd: fd_t, + offset: u64, +) MMapError![]align(mem.page_size) u8 { + const mmap_sym = if (lfs64_abi) system.mmap64 else system.mmap; + const rc = mmap_sym(ptr, length, prot, @bitCast(flags), fd, @bitCast(offset)); + const err: E = if (builtin.link_libc) blk: { + if (rc != std.c.MAP_FAILED) return @as([*]align(mem.page_size) u8, @ptrCast(@alignCast(rc)))[0..length]; + break :blk @enumFromInt(system._errno().*); + } else blk: { + const err = errno(rc); + if (err == .SUCCESS) return @as([*]align(mem.page_size) u8, @ptrFromInt(rc))[0..length]; + break :blk err; + }; + switch (err) { + .SUCCESS => unreachable, + .TXTBSY => return error.AccessDenied, + .ACCES => return error.AccessDenied, + .PERM => return error.PermissionDenied, + .AGAIN => return error.LockedMemoryLimitExceeded, + .BADF => unreachable, // Always a race condition. + .OVERFLOW => unreachable, // The number of pages used for length + offset would overflow. + .NODEV => return error.MemoryMappingNotSupported, + .INVAL => unreachable, // Invalid parameters to mmap() + .MFILE => return error.ProcessFdQuotaExceeded, + .NFILE => return error.SystemFdQuotaExceeded, + .NOMEM => return error.OutOfMemory, + else => return unexpectedErrno(err), + } +} + +/// Deletes the mappings for the specified address range, causing +/// further references to addresses within the range to generate invalid memory references. +/// Note that while POSIX allows unmapping a region in the middle of an existing mapping, +/// Zig's munmap function does not, for two reasons: +/// * It violates the Zig principle that resource deallocation must succeed. +/// * The Windows function, VirtualFree, has this restriction. +pub fn munmap(memory: []align(mem.page_size) const u8) void { + switch (errno(system.munmap(memory.ptr, memory.len))) { + .SUCCESS => return, + .INVAL => unreachable, // Invalid parameters. + .NOMEM => unreachable, // Attempted to unmap a region in the middle of an existing mapping. + else => unreachable, + } +} + +pub const MSyncError = error{ + UnmappedMemory, +} || UnexpectedError; + +pub fn msync(memory: []align(mem.page_size) u8, flags: i32) MSyncError!void { + switch (errno(system.msync(memory.ptr, memory.len, flags))) { + .SUCCESS => return, + .NOMEM => return error.UnmappedMemory, // Unsuccessful, provided pointer does not point mapped memory + .INVAL => unreachable, // Invalid parameters. + else => unreachable, + } +} + +pub const AccessError = error{ + PermissionDenied, + FileNotFound, + NameTooLong, + InputOutput, + SystemResources, + BadPathName, + FileBusy, + SymLinkLoop, + ReadOnlyFileSystem, + /// WASI-only; file paths must be valid UTF-8. + InvalidUtf8, + /// Windows-only; file paths provided by the user must be valid WTF-8. + /// https://simonsapin.github.io/wtf-8/ + InvalidWtf8, +} || UnexpectedError; + +/// check user's permissions for a file +/// +/// * On Windows, asserts `path` is valid [WTF-8](https://simonsapin.github.io/wtf-8/). +/// * On WASI, invalid UTF-8 passed to `path` causes `error.InvalidUtf8`. +/// * On other platforms, `path` is an opaque sequence of bytes with no particular encoding. +/// +/// On Windows, `mode` is ignored. This is a POSIX API that is only partially supported by +/// Windows. See `fs` for the cross-platform file system API. +pub fn access(path: []const u8, mode: u32) AccessError!void { + if (native_os == .windows) { + const path_w = windows.sliceToPrefixedFileW(null, path) catch |err| switch (err) { + error.AccessDenied => return error.PermissionDenied, + else => |e| return e, + }; + _ = try windows.GetFileAttributesW(path_w.span().ptr); + return; + } else if (native_os == .wasi and !builtin.link_libc) { + return faccessat(wasi.AT.FDCWD, path, mode, 0); + } + const path_c = try toPosixPath(path); + return accessZ(&path_c, mode); +} + +/// Same as `access` except `path` is null-terminated. +pub fn accessZ(path: [*:0]const u8, mode: u32) AccessError!void { + if (native_os == .windows) { + const path_w = windows.cStrToPrefixedFileW(null, path) catch |err| switch (err) { + error.AccessDenied => return error.PermissionDenied, + else => |e| return e, + }; + _ = try windows.GetFileAttributesW(path_w.span().ptr); + return; + } else if (native_os == .wasi and !builtin.link_libc) { + return access(mem.sliceTo(path, 0), mode); + } + switch (errno(system.access(path, mode))) { + .SUCCESS => return, + .ACCES => return error.PermissionDenied, + .ROFS => return error.ReadOnlyFileSystem, + .LOOP => return error.SymLinkLoop, + .TXTBSY => return error.FileBusy, + .NOTDIR => return error.FileNotFound, + .NOENT => return error.FileNotFound, + .NAMETOOLONG => return error.NameTooLong, + .INVAL => unreachable, + .FAULT => unreachable, + .IO => return error.InputOutput, + .NOMEM => return error.SystemResources, + .ILSEQ => |err| if (native_os == .wasi) + return error.InvalidUtf8 + else + return unexpectedErrno(err), + else => |err| return unexpectedErrno(err), + } +} + +/// Check user's permissions for a file, based on an open directory handle. +/// +/// * On Windows, asserts `path` is valid [WTF-8](https://simonsapin.github.io/wtf-8/). +/// * On WASI, invalid UTF-8 passed to `path` causes `error.InvalidUtf8`. +/// * On other platforms, `path` is an opaque sequence of bytes with no particular encoding. +/// +/// On Windows, `mode` is ignored. This is a POSIX API that is only partially supported by +/// Windows. See `fs` for the cross-platform file system API. +pub fn faccessat(dirfd: fd_t, path: []const u8, mode: u32, flags: u32) AccessError!void { + if (native_os == .windows) { + const path_w = try windows.sliceToPrefixedFileW(dirfd, path); + return faccessatW(dirfd, path_w.span().ptr); + } else if (native_os == .wasi and !builtin.link_libc) { + const resolved: RelativePathWasi = .{ .dir_fd = dirfd, .relative_path = path }; + + const st = blk: { + break :blk std.os.fstatat_wasi(dirfd, path, .{ + .SYMLINK_FOLLOW = (flags & AT.SYMLINK_NOFOLLOW) == 0, + }); + } catch |err| switch (err) { + error.AccessDenied => return error.PermissionDenied, + else => |e| return e, + }; + + if (mode != F_OK) { + var directory: wasi.fdstat_t = undefined; + if (wasi.fd_fdstat_get(resolved.dir_fd, &directory) != .SUCCESS) { + return error.PermissionDenied; + } + + var rights: wasi.rights_t = .{}; + if (mode & R_OK != 0) { + if (st.filetype == .DIRECTORY) { + rights.FD_READDIR = true; + } else { + rights.FD_READ = true; + } + } + if (mode & W_OK != 0) { + rights.FD_WRITE = true; + } + // No validation for X_OK + + // https://github.com/ziglang/zig/issues/18882 + const rights_int: u64 = @bitCast(rights); + const inheriting_int: u64 = @bitCast(directory.fs_rights_inheriting); + if ((rights_int & inheriting_int) != rights_int) { + return error.PermissionDenied; + } + } + return; + } + const path_c = try toPosixPath(path); + return faccessatZ(dirfd, &path_c, mode, flags); +} + +/// Same as `faccessat` except the path parameter is null-terminated. +pub fn faccessatZ(dirfd: fd_t, path: [*:0]const u8, mode: u32, flags: u32) AccessError!void { + if (native_os == .windows) { + const path_w = try windows.cStrToPrefixedFileW(dirfd, path); + return faccessatW(dirfd, path_w.span().ptr); + } else if (native_os == .wasi and !builtin.link_libc) { + return faccessat(dirfd, mem.sliceTo(path, 0), mode, flags); + } + switch (errno(system.faccessat(dirfd, path, mode, flags))) { + .SUCCESS => return, + .ACCES => return error.PermissionDenied, + .ROFS => return error.ReadOnlyFileSystem, + .LOOP => return error.SymLinkLoop, + .TXTBSY => return error.FileBusy, + .NOTDIR => return error.FileNotFound, + .NOENT => return error.FileNotFound, + .NAMETOOLONG => return error.NameTooLong, + .INVAL => unreachable, + .FAULT => unreachable, + .IO => return error.InputOutput, + .NOMEM => return error.SystemResources, + .ILSEQ => |err| if (native_os == .wasi) + return error.InvalidUtf8 + else + return unexpectedErrno(err), + else => |err| return unexpectedErrno(err), + } +} + +/// Same as `faccessat` except asserts the target is Windows and the path parameter +/// is NtDll-prefixed, null-terminated, WTF-16 encoded. +pub fn faccessatW(dirfd: fd_t, sub_path_w: [*:0]const u16) AccessError!void { + if (sub_path_w[0] == '.' and sub_path_w[1] == 0) { + return; + } + if (sub_path_w[0] == '.' and sub_path_w[1] == '.' and sub_path_w[2] == 0) { + return; + } + + const path_len_bytes = cast(u16, mem.sliceTo(sub_path_w, 0).len * 2) orelse return error.NameTooLong; + var nt_name = windows.UNICODE_STRING{ + .Length = path_len_bytes, + .MaximumLength = path_len_bytes, + .Buffer = @constCast(sub_path_w), + }; + var attr = windows.OBJECT_ATTRIBUTES{ + .Length = @sizeOf(windows.OBJECT_ATTRIBUTES), + .RootDirectory = if (fs.path.isAbsoluteWindowsW(sub_path_w)) null else dirfd, + .Attributes = 0, // Note we do not use OBJ_CASE_INSENSITIVE here. + .ObjectName = &nt_name, + .SecurityDescriptor = null, + .SecurityQualityOfService = null, + }; + var basic_info: windows.FILE_BASIC_INFORMATION = undefined; + switch (windows.ntdll.NtQueryAttributesFile(&attr, &basic_info)) { + .SUCCESS => return, + .OBJECT_NAME_NOT_FOUND => return error.FileNotFound, + .OBJECT_PATH_NOT_FOUND => return error.FileNotFound, + .OBJECT_NAME_INVALID => unreachable, + .INVALID_PARAMETER => unreachable, + .ACCESS_DENIED => return error.PermissionDenied, + .OBJECT_PATH_SYNTAX_BAD => unreachable, + else => |rc| return windows.unexpectedStatus(rc), + } +} + +pub const PipeError = error{ + SystemFdQuotaExceeded, + ProcessFdQuotaExceeded, +} || UnexpectedError; + +/// Creates a unidirectional data channel that can be used for interprocess communication. +pub fn pipe() PipeError![2]fd_t { + var fds: [2]fd_t = undefined; + switch (errno(system.pipe(&fds))) { + .SUCCESS => return fds, + .INVAL => unreachable, // Invalid parameters to pipe() + .FAULT => unreachable, // Invalid fds pointer + .NFILE => return error.SystemFdQuotaExceeded, + .MFILE => return error.ProcessFdQuotaExceeded, + else => |err| return unexpectedErrno(err), + } +} + +pub fn pipe2(flags: O) PipeError![2]fd_t { + // https://github.com/ziglang/zig/issues/19352 + if (@hasDecl(system, "pipe2")) { + var fds: [2]fd_t = undefined; + switch (errno(system.pipe2(&fds, flags))) { + .SUCCESS => return fds, + .INVAL => unreachable, // Invalid flags + .FAULT => unreachable, // Invalid fds pointer + .NFILE => return error.SystemFdQuotaExceeded, + .MFILE => return error.ProcessFdQuotaExceeded, + else => |err| return unexpectedErrno(err), + } + } + + const fds: [2]fd_t = try pipe(); + errdefer { + close(fds[0]); + close(fds[1]); + } + + // https://github.com/ziglang/zig/issues/18882 + if (@as(u32, @bitCast(flags)) == 0) + return fds; + + // CLOEXEC is special, it's a file descriptor flag and must be set using + // F.SETFD. + if (flags.CLOEXEC) { + for (fds) |fd| { + switch (errno(system.fcntl(fd, F.SETFD, @as(u32, FD_CLOEXEC)))) { + .SUCCESS => {}, + .INVAL => unreachable, // Invalid flags + .BADF => unreachable, // Always a race condition + else => |err| return unexpectedErrno(err), + } + } + } + + const new_flags: u32 = f: { + var new_flags = flags; + new_flags.CLOEXEC = false; + break :f @bitCast(new_flags); + }; + // Set every other flag affecting the file status using F.SETFL. + if (new_flags != 0) { + for (fds) |fd| { + switch (errno(system.fcntl(fd, F.SETFL, new_flags))) { + .SUCCESS => {}, + .INVAL => unreachable, // Invalid flags + .BADF => unreachable, // Always a race condition + else => |err| return unexpectedErrno(err), + } + } + } + + return fds; +} + +pub const SysCtlError = error{ + PermissionDenied, + SystemResources, + NameTooLong, + UnknownName, +} || UnexpectedError; + +pub fn sysctl( + name: []const c_int, + oldp: ?*anyopaque, + oldlenp: ?*usize, + newp: ?*anyopaque, + newlen: usize, +) SysCtlError!void { + if (native_os == .wasi) { + @panic("unsupported"); // TODO should be compile error, not panic + } + if (native_os == .haiku) { + @panic("unsupported"); // TODO should be compile error, not panic + } + + const name_len = cast(c_uint, name.len) orelse return error.NameTooLong; + switch (errno(system.sysctl(name.ptr, name_len, oldp, oldlenp, newp, newlen))) { + .SUCCESS => return, + .FAULT => unreachable, + .PERM => return error.PermissionDenied, + .NOMEM => return error.SystemResources, + .NOENT => return error.UnknownName, + else => |err| return unexpectedErrno(err), + } +} + +pub fn sysctlbynameZ( + name: [*:0]const u8, + oldp: ?*anyopaque, + oldlenp: ?*usize, + newp: ?*anyopaque, + newlen: usize, +) SysCtlError!void { + if (native_os == .wasi) { + @panic("unsupported"); // TODO should be compile error, not panic + } + if (native_os == .haiku) { + @panic("unsupported"); // TODO should be compile error, not panic + } + + switch (errno(system.sysctlbyname(name, oldp, oldlenp, newp, newlen))) { + .SUCCESS => return, + .FAULT => unreachable, + .PERM => return error.PermissionDenied, + .NOMEM => return error.SystemResources, + .NOENT => return error.UnknownName, + else => |err| return unexpectedErrno(err), + } +} + +pub fn gettimeofday(tv: ?*timeval, tz: ?*timezone) void { + switch (errno(system.gettimeofday(tv, tz))) { + .SUCCESS => return, + .INVAL => unreachable, + else => unreachable, + } +} + +pub const SeekError = error{ + Unseekable, + + /// In WASI, this error may occur when the file descriptor does + /// not hold the required rights to seek on it. + AccessDenied, +} || UnexpectedError; + +/// Repositions read/write file offset relative to the beginning. +pub fn lseek_SET(fd: fd_t, offset: u64) SeekError!void { + if (native_os == .linux and !builtin.link_libc and @sizeOf(usize) == 4) { + var result: u64 = undefined; + switch (errno(system.llseek(fd, offset, &result, SEEK.SET))) { + .SUCCESS => return, + .BADF => unreachable, // always a race condition + .INVAL => return error.Unseekable, + .OVERFLOW => return error.Unseekable, + .SPIPE => return error.Unseekable, + .NXIO => return error.Unseekable, + else => |err| return unexpectedErrno(err), + } + } + if (native_os == .windows) { + return windows.SetFilePointerEx_BEGIN(fd, offset); + } + if (native_os == .wasi and !builtin.link_libc) { + var new_offset: wasi.filesize_t = undefined; + switch (wasi.fd_seek(fd, @bitCast(offset), .SET, &new_offset)) { + .SUCCESS => return, + .BADF => unreachable, // always a race condition + .INVAL => return error.Unseekable, + .OVERFLOW => return error.Unseekable, + .SPIPE => return error.Unseekable, + .NXIO => return error.Unseekable, + .NOTCAPABLE => return error.AccessDenied, + else => |err| return unexpectedErrno(err), + } + } + + const lseek_sym = if (lfs64_abi) system.lseek64 else system.lseek; + switch (errno(lseek_sym(fd, @bitCast(offset), SEEK.SET))) { + .SUCCESS => return, + .BADF => unreachable, // always a race condition + .INVAL => return error.Unseekable, + .OVERFLOW => return error.Unseekable, + .SPIPE => return error.Unseekable, + .NXIO => return error.Unseekable, + else => |err| return unexpectedErrno(err), + } +} + +/// Repositions read/write file offset relative to the current offset. +pub fn lseek_CUR(fd: fd_t, offset: i64) SeekError!void { + if (native_os == .linux and !builtin.link_libc and @sizeOf(usize) == 4) { + var result: u64 = undefined; + switch (errno(system.llseek(fd, @bitCast(offset), &result, SEEK.CUR))) { + .SUCCESS => return, + .BADF => unreachable, // always a race condition + .INVAL => return error.Unseekable, + .OVERFLOW => return error.Unseekable, + .SPIPE => return error.Unseekable, + .NXIO => return error.Unseekable, + else => |err| return unexpectedErrno(err), + } + } + if (native_os == .windows) { + return windows.SetFilePointerEx_CURRENT(fd, offset); + } + if (native_os == .wasi and !builtin.link_libc) { + var new_offset: wasi.filesize_t = undefined; + switch (wasi.fd_seek(fd, offset, .CUR, &new_offset)) { + .SUCCESS => return, + .BADF => unreachable, // always a race condition + .INVAL => return error.Unseekable, + .OVERFLOW => return error.Unseekable, + .SPIPE => return error.Unseekable, + .NXIO => return error.Unseekable, + .NOTCAPABLE => return error.AccessDenied, + else => |err| return unexpectedErrno(err), + } + } + const lseek_sym = if (lfs64_abi) system.lseek64 else system.lseek; + switch (errno(lseek_sym(fd, @bitCast(offset), SEEK.CUR))) { + .SUCCESS => return, + .BADF => unreachable, // always a race condition + .INVAL => return error.Unseekable, + .OVERFLOW => return error.Unseekable, + .SPIPE => return error.Unseekable, + .NXIO => return error.Unseekable, + else => |err| return unexpectedErrno(err), + } +} + +/// Repositions read/write file offset relative to the end. +pub fn lseek_END(fd: fd_t, offset: i64) SeekError!void { + if (native_os == .linux and !builtin.link_libc and @sizeOf(usize) == 4) { + var result: u64 = undefined; + switch (errno(system.llseek(fd, @bitCast(offset), &result, SEEK.END))) { + .SUCCESS => return, + .BADF => unreachable, // always a race condition + .INVAL => return error.Unseekable, + .OVERFLOW => return error.Unseekable, + .SPIPE => return error.Unseekable, + .NXIO => return error.Unseekable, + else => |err| return unexpectedErrno(err), + } + } + if (native_os == .windows) { + return windows.SetFilePointerEx_END(fd, offset); + } + if (native_os == .wasi and !builtin.link_libc) { + var new_offset: wasi.filesize_t = undefined; + switch (wasi.fd_seek(fd, offset, .END, &new_offset)) { + .SUCCESS => return, + .BADF => unreachable, // always a race condition + .INVAL => return error.Unseekable, + .OVERFLOW => return error.Unseekable, + .SPIPE => return error.Unseekable, + .NXIO => return error.Unseekable, + .NOTCAPABLE => return error.AccessDenied, + else => |err| return unexpectedErrno(err), + } + } + const lseek_sym = if (lfs64_abi) system.lseek64 else system.lseek; + switch (errno(lseek_sym(fd, @bitCast(offset), SEEK.END))) { + .SUCCESS => return, + .BADF => unreachable, // always a race condition + .INVAL => return error.Unseekable, + .OVERFLOW => return error.Unseekable, + .SPIPE => return error.Unseekable, + .NXIO => return error.Unseekable, + else => |err| return unexpectedErrno(err), + } +} + +/// Returns the read/write file offset relative to the beginning. +pub fn lseek_CUR_get(fd: fd_t) SeekError!u64 { + if (native_os == .linux and !builtin.link_libc and @sizeOf(usize) == 4) { + var result: u64 = undefined; + switch (errno(system.llseek(fd, 0, &result, SEEK.CUR))) { + .SUCCESS => return result, + .BADF => unreachable, // always a race condition + .INVAL => return error.Unseekable, + .OVERFLOW => return error.Unseekable, + .SPIPE => return error.Unseekable, + .NXIO => return error.Unseekable, + else => |err| return unexpectedErrno(err), + } + } + if (native_os == .windows) { + return windows.SetFilePointerEx_CURRENT_get(fd); + } + if (native_os == .wasi and !builtin.link_libc) { + var new_offset: wasi.filesize_t = undefined; + switch (wasi.fd_seek(fd, 0, .CUR, &new_offset)) { + .SUCCESS => return new_offset, + .BADF => unreachable, // always a race condition + .INVAL => return error.Unseekable, + .OVERFLOW => return error.Unseekable, + .SPIPE => return error.Unseekable, + .NXIO => return error.Unseekable, + .NOTCAPABLE => return error.AccessDenied, + else => |err| return unexpectedErrno(err), + } + } + const lseek_sym = if (lfs64_abi) system.lseek64 else system.lseek; + const rc = lseek_sym(fd, 0, SEEK.CUR); + switch (errno(rc)) { + .SUCCESS => return @bitCast(rc), + .BADF => unreachable, // always a race condition + .INVAL => return error.Unseekable, + .OVERFLOW => return error.Unseekable, + .SPIPE => return error.Unseekable, + .NXIO => return error.Unseekable, + else => |err| return unexpectedErrno(err), + } +} + +pub const FcntlError = error{ + PermissionDenied, + FileBusy, + ProcessFdQuotaExceeded, + Locked, + DeadLock, + LockedRegionLimitExceeded, +} || UnexpectedError; + +pub fn fcntl(fd: fd_t, cmd: i32, arg: usize) FcntlError!usize { + while (true) { + const rc = system.fcntl(fd, cmd, arg); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .INTR => continue, + .AGAIN, .ACCES => return error.Locked, + .BADF => unreachable, + .BUSY => return error.FileBusy, + .INVAL => unreachable, // invalid parameters + .PERM => return error.PermissionDenied, + .MFILE => return error.ProcessFdQuotaExceeded, + .NOTDIR => unreachable, // invalid parameter + .DEADLK => return error.DeadLock, + .NOLCK => return error.LockedRegionLimitExceeded, + else => |err| return unexpectedErrno(err), + } + } +} + +pub const FlockError = error{ + WouldBlock, + + /// The kernel ran out of memory for allocating file locks + SystemResources, + + /// The underlying filesystem does not support file locks + FileLocksNotSupported, +} || UnexpectedError; + +/// Depending on the operating system `flock` may or may not interact with +/// `fcntl` locks made by other processes. +pub fn flock(fd: fd_t, operation: i32) FlockError!void { + while (true) { + const rc = system.flock(fd, operation); + switch (errno(rc)) { + .SUCCESS => return, + .BADF => unreachable, + .INTR => continue, + .INVAL => unreachable, // invalid parameters + .NOLCK => return error.SystemResources, + .AGAIN => return error.WouldBlock, // TODO: integrate with async instead of just returning an error + .OPNOTSUPP => return error.FileLocksNotSupported, + else => |err| return unexpectedErrno(err), + } + } +} + +pub const RealPathError = error{ + FileNotFound, + AccessDenied, + NameTooLong, + NotSupported, + NotDir, + SymLinkLoop, + InputOutput, + FileTooBig, + IsDir, + ProcessFdQuotaExceeded, + SystemFdQuotaExceeded, + NoDevice, + SystemResources, + NoSpaceLeft, + FileSystem, + BadPathName, + DeviceBusy, + + SharingViolation, + PipeBusy, + + /// Windows-only; file paths provided by the user must be valid WTF-8. + /// https://simonsapin.github.io/wtf-8/ + InvalidWtf8, + + /// On Windows, `\\server` or `\\server\share` was not found. + NetworkNotFound, + + PathAlreadyExists, + + /// On Windows, antivirus software is enabled by default. It can be + /// disabled, but Windows Update sometimes ignores the user's preference + /// and re-enables it. When enabled, antivirus software on Windows + /// intercepts file system operations and makes them significantly slower + /// in addition to possibly failing with this error code. + AntivirusInterference, + + /// On Windows, the volume does not contain a recognized file system. File + /// system drivers might not be loaded, or the volume may be corrupt. + UnrecognizedVolume, +} || UnexpectedError; + +/// Return the canonicalized absolute pathname. +/// +/// Expands all symbolic links and resolves references to `.`, `..`, and +/// extra `/` characters in `pathname`. +/// +/// On Windows, `pathname` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// +/// On other platforms, `pathname` is an opaque sequence of bytes with no particular encoding. +/// +/// The return value is a slice of `out_buffer`, but not necessarily from the beginning. +/// +/// See also `realpathZ` and `realpathW`. +/// +/// * On Windows, the result is encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// * On other platforms, the result is an opaque sequence of bytes with no particular encoding. +/// +/// Calling this function is usually a bug. +pub fn realpath(pathname: []const u8, out_buffer: *[max_path_bytes]u8) RealPathError![]u8 { + if (native_os == .windows) { + const pathname_w = try windows.sliceToPrefixedFileW(null, pathname); + return realpathW(pathname_w.span(), out_buffer); + } else if (native_os == .wasi and !builtin.link_libc) { + @compileError("WASI does not support os.realpath"); + } + const pathname_c = try toPosixPath(pathname); + return realpathZ(&pathname_c, out_buffer); +} + +/// Same as `realpath` except `pathname` is null-terminated. +/// +/// Calling this function is usually a bug. +pub fn realpathZ(pathname: [*:0]const u8, out_buffer: *[max_path_bytes]u8) RealPathError![]u8 { + if (native_os == .windows) { + const pathname_w = try windows.cStrToPrefixedFileW(null, pathname); + return realpathW(pathname_w.span(), out_buffer); + } else if (native_os == .wasi and !builtin.link_libc) { + return realpath(mem.sliceTo(pathname, 0), out_buffer); + } + if (!builtin.link_libc) { + const flags: O = switch (native_os) { + .linux => .{ + .NONBLOCK = true, + .CLOEXEC = true, + .PATH = true, + }, + else => .{ + .NONBLOCK = true, + .CLOEXEC = true, + }, + }; + const fd = openZ(pathname, flags, 0) catch |err| switch (err) { + error.FileLocksNotSupported => unreachable, + error.WouldBlock => unreachable, + error.FileBusy => unreachable, // not asking for write permissions + error.InvalidUtf8 => unreachable, // WASI-only + else => |e| return e, + }; + defer close(fd); + + return std.os.getFdPath(fd, out_buffer); + } + const result_path = std.c.realpath(pathname, out_buffer) orelse switch (@as(E, @enumFromInt(std.c._errno().*))) { + .SUCCESS => unreachable, + .INVAL => unreachable, + .BADF => unreachable, + .FAULT => unreachable, + .ACCES => return error.AccessDenied, + .NOENT => return error.FileNotFound, + .OPNOTSUPP => return error.NotSupported, + .NOTDIR => return error.NotDir, + .NAMETOOLONG => return error.NameTooLong, + .LOOP => return error.SymLinkLoop, + .IO => return error.InputOutput, + else => |err| return unexpectedErrno(err), + }; + return mem.sliceTo(result_path, 0); +} + +/// Same as `realpath` except `pathname` is WTF16LE-encoded. +/// +/// The result is encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). +/// +/// Calling this function is usually a bug. +pub fn realpathW(pathname: []const u16, out_buffer: *[max_path_bytes]u8) RealPathError![]u8 { + const w = windows; + + const dir = fs.cwd().fd; + const access_mask = w.GENERIC_READ | w.SYNCHRONIZE; + const share_access = w.FILE_SHARE_READ; + const creation = w.FILE_OPEN; + const h_file = blk: { + const res = w.OpenFile(pathname, .{ + .dir = dir, + .access_mask = access_mask, + .share_access = share_access, + .creation = creation, + .filter = .any, + }) catch |err| switch (err) { + error.WouldBlock => unreachable, + else => |e| return e, + }; + break :blk res; + }; + defer w.CloseHandle(h_file); + + return std.os.getFdPath(h_file, out_buffer); +} + +/// Spurious wakeups are possible and no precision of timing is guaranteed. +pub fn nanosleep(seconds: u64, nanoseconds: u64) void { + var req = timespec{ + .tv_sec = cast(isize, seconds) orelse maxInt(isize), + .tv_nsec = cast(isize, nanoseconds) orelse maxInt(isize), + }; + var rem: timespec = undefined; + while (true) { + switch (errno(system.nanosleep(&req, &rem))) { + .FAULT => unreachable, + .INVAL => { + // Sometimes Darwin returns EINVAL for no reason. + // We treat it as a spurious wakeup. + return; + }, + .INTR => { + req = rem; + continue; + }, + // This prong handles success as well as unexpected errors. + else => return, + } + } +} + +pub fn dl_iterate_phdr( + context: anytype, + comptime Error: type, + comptime callback: fn (info: *dl_phdr_info, size: usize, context: @TypeOf(context)) Error!void, +) Error!void { + const Context = @TypeOf(context); + const elf = std.elf; + const dl = @import("dynamic_library.zig"); + + switch (builtin.object_format) { + .elf, .c => {}, + else => @compileError("dl_iterate_phdr is not available for this target"), + } + + if (builtin.link_libc) { + switch (system.dl_iterate_phdr(struct { + fn callbackC(info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int { + const context_ptr: *const Context = @ptrCast(@alignCast(data)); + callback(info, size, context_ptr.*) catch |err| return @intFromError(err); + return 0; + } + }.callbackC, @ptrCast(@constCast(&context)))) { + 0 => return, + else => |err| return @as(Error, @errorCast(@errorFromInt(@as(std.meta.Int(.unsigned, @bitSizeOf(anyerror)), @intCast(err))))), + } + } + + const elf_base = std.process.getBaseAddress(); + const ehdr: *elf.Ehdr = @ptrFromInt(elf_base); + // Make sure the base address points to an ELF image. + assert(mem.eql(u8, ehdr.e_ident[0..4], elf.MAGIC)); + const n_phdr = ehdr.e_phnum; + const phdrs = (@as([*]elf.Phdr, @ptrFromInt(elf_base + ehdr.e_phoff)))[0..n_phdr]; + + var it = dl.linkmap_iterator(phdrs) catch unreachable; + + // The executable has no dynamic link segment, create a single entry for + // the whole ELF image. + if (it.end()) { + // Find the base address for the ELF image, if this is a PIE the value + // is non-zero. + const base_address = for (phdrs) |*phdr| { + if (phdr.p_type == elf.PT_PHDR) { + break @intFromPtr(phdrs.ptr) - phdr.p_vaddr; + // We could try computing the difference between _DYNAMIC and + // the p_vaddr of the PT_DYNAMIC section, but using the phdr is + // good enough (Is it?). + } + } else unreachable; + + var info = dl_phdr_info{ + .dlpi_addr = base_address, + .dlpi_name = "/proc/self/exe", + .dlpi_phdr = phdrs.ptr, + .dlpi_phnum = ehdr.e_phnum, + }; + + return callback(&info, @sizeOf(dl_phdr_info), context); + } + + // Last return value from the callback function. + while (it.next()) |entry| { + var dlpi_phdr: [*]elf.Phdr = undefined; + var dlpi_phnum: u16 = undefined; + + if (entry.l_addr != 0) { + const elf_header: *elf.Ehdr = @ptrFromInt(entry.l_addr); + dlpi_phdr = @ptrFromInt(entry.l_addr + elf_header.e_phoff); + dlpi_phnum = elf_header.e_phnum; + } else { + // This is the running ELF image + dlpi_phdr = @ptrFromInt(elf_base + ehdr.e_phoff); + dlpi_phnum = ehdr.e_phnum; + } + + var info = dl_phdr_info{ + .dlpi_addr = entry.l_addr, + .dlpi_name = entry.l_name, + .dlpi_phdr = dlpi_phdr, + .dlpi_phnum = dlpi_phnum, + }; + + try callback(&info, @sizeOf(dl_phdr_info), context); + } +} + +pub const ClockGetTimeError = error{UnsupportedClock} || UnexpectedError; + +/// TODO: change this to return the timespec as a return value +/// TODO: look into making clk_id an enum +pub fn clock_gettime(clk_id: i32, tp: *timespec) ClockGetTimeError!void { + if (native_os == .wasi and !builtin.link_libc) { + var ts: timestamp_t = undefined; + switch (system.clock_time_get(@bitCast(clk_id), 1, &ts)) { + .SUCCESS => { + tp.* = .{ + .tv_sec = @intCast(ts / std.time.ns_per_s), + .tv_nsec = @intCast(ts % std.time.ns_per_s), + }; + }, + .INVAL => return error.UnsupportedClock, + else => |err| return unexpectedErrno(err), + } + return; + } + if (native_os == .windows) { + if (clk_id == CLOCK.REALTIME) { + var ft: windows.FILETIME = undefined; + windows.kernel32.GetSystemTimeAsFileTime(&ft); + // FileTime has a granularity of 100 nanoseconds and uses the NTFS/Windows epoch. + const ft64 = (@as(u64, ft.dwHighDateTime) << 32) | ft.dwLowDateTime; + const ft_per_s = std.time.ns_per_s / 100; + tp.* = .{ + .tv_sec = @as(i64, @intCast(ft64 / ft_per_s)) + std.time.epoch.windows, + .tv_nsec = @as(c_long, @intCast(ft64 % ft_per_s)) * 100, + }; + return; + } else { + // TODO POSIX implementation of CLOCK.MONOTONIC on Windows. + return error.UnsupportedClock; + } + } + + switch (errno(system.clock_gettime(clk_id, tp))) { + .SUCCESS => return, + .FAULT => unreachable, + .INVAL => return error.UnsupportedClock, + else => |err| return unexpectedErrno(err), + } +} + +pub fn clock_getres(clk_id: i32, res: *timespec) ClockGetTimeError!void { + if (native_os == .wasi and !builtin.link_libc) { + var ts: timestamp_t = undefined; + switch (system.clock_res_get(@bitCast(clk_id), &ts)) { + .SUCCESS => res.* = .{ + .tv_sec = @intCast(ts / std.time.ns_per_s), + .tv_nsec = @intCast(ts % std.time.ns_per_s), + }, + .INVAL => return error.UnsupportedClock, + else => |err| return unexpectedErrno(err), + } + return; + } + + switch (errno(system.clock_getres(clk_id, res))) { + .SUCCESS => return, + .FAULT => unreachable, + .INVAL => return error.UnsupportedClock, + else => |err| return unexpectedErrno(err), + } +} + +pub const SchedGetAffinityError = error{PermissionDenied} || UnexpectedError; + +pub fn sched_getaffinity(pid: pid_t) SchedGetAffinityError!cpu_set_t { + var set: cpu_set_t = undefined; + switch (errno(system.sched_getaffinity(pid, @sizeOf(cpu_set_t), &set))) { + .SUCCESS => return set, + .FAULT => unreachable, + .INVAL => unreachable, + .SRCH => unreachable, + .PERM => return error.PermissionDenied, + else => |err| return unexpectedErrno(err), + } +} + +pub const SigaltstackError = error{ + /// The supplied stack size was less than MINSIGSTKSZ. + SizeTooSmall, + + /// Attempted to change the signal stack while it was active. + PermissionDenied, +} || UnexpectedError; + +pub fn sigaltstack(ss: ?*stack_t, old_ss: ?*stack_t) SigaltstackError!void { + switch (errno(system.sigaltstack(ss, old_ss))) { + .SUCCESS => return, + .FAULT => unreachable, + .INVAL => unreachable, + .NOMEM => return error.SizeTooSmall, + .PERM => return error.PermissionDenied, + else => |err| return unexpectedErrno(err), + } +} + +/// Examine and change a signal action. +pub fn sigaction(sig: u6, noalias act: ?*const Sigaction, noalias oact: ?*Sigaction) error{OperationNotSupported}!void { + switch (errno(system.sigaction(sig, act, oact))) { + .SUCCESS => return, + .INVAL, .NOSYS => return error.OperationNotSupported, + else => unreachable, + } +} + +/// Sets the thread signal mask. +pub fn sigprocmask(flags: u32, noalias set: ?*const sigset_t, noalias oldset: ?*sigset_t) void { + switch (errno(system.sigprocmask(@bitCast(flags), set, oldset))) { + .SUCCESS => return, + .FAULT => unreachable, + .INVAL => unreachable, + else => unreachable, + } +} + +pub const FutimensError = error{ + /// times is NULL, or both tv_nsec values are UTIME_NOW, and either: + /// * the effective user ID of the caller does not match the owner + /// of the file, the caller does not have write access to the + /// file, and the caller is not privileged (Linux: does not have + /// either the CAP_FOWNER or the CAP_DAC_OVERRIDE capability); + /// or, + /// * the file is marked immutable (see chattr(1)). + AccessDenied, + + /// The caller attempted to change one or both timestamps to a value + /// other than the current time, or to change one of the timestamps + /// to the current time while leaving the other timestamp unchanged, + /// (i.e., times is not NULL, neither tv_nsec field is UTIME_NOW, + /// and neither tv_nsec field is UTIME_OMIT) and either: + /// * the caller's effective user ID does not match the owner of + /// file, and the caller is not privileged (Linux: does not have + /// the CAP_FOWNER capability); or, + /// * the file is marked append-only or immutable (see chattr(1)). + PermissionDenied, + + ReadOnlyFileSystem, +} || UnexpectedError; + +pub fn futimens(fd: fd_t, times: *const [2]timespec) FutimensError!void { + if (native_os == .wasi and !builtin.link_libc) { + // TODO WASI encodes `wasi.fstflags` to signify magic values + // similar to UTIME_NOW and UTIME_OMIT. Currently, we ignore + // this here, but we should really handle it somehow. + const atim = times[0].toTimestamp(); + const mtim = times[1].toTimestamp(); + switch (wasi.fd_filestat_set_times(fd, atim, mtim, .{ + .ATIM = true, + .MTIM = true, + })) { + .SUCCESS => return, + .ACCES => return error.AccessDenied, + .PERM => return error.PermissionDenied, + .BADF => unreachable, // always a race condition + .FAULT => unreachable, + .INVAL => unreachable, + .ROFS => return error.ReadOnlyFileSystem, + else => |err| return unexpectedErrno(err), + } + } + + switch (errno(system.futimens(fd, times))) { + .SUCCESS => return, + .ACCES => return error.AccessDenied, + .PERM => return error.PermissionDenied, + .BADF => unreachable, // always a race condition + .FAULT => unreachable, + .INVAL => unreachable, + .ROFS => return error.ReadOnlyFileSystem, + else => |err| return unexpectedErrno(err), + } +} + +pub const GetHostNameError = error{PermissionDenied} || UnexpectedError; + +pub fn gethostname(name_buffer: *[HOST_NAME_MAX]u8) GetHostNameError![]u8 { + if (builtin.link_libc) { + switch (errno(system.gethostname(name_buffer, name_buffer.len))) { + .SUCCESS => return mem.sliceTo(name_buffer, 0), + .FAULT => unreachable, + .NAMETOOLONG => unreachable, // HOST_NAME_MAX prevents this + .PERM => return error.PermissionDenied, + else => |err| return unexpectedErrno(err), + } + } + if (native_os == .linux) { + const uts = uname(); + const hostname = mem.sliceTo(&uts.nodename, 0); + const result = name_buffer[0..hostname.len]; + @memcpy(result, hostname); + return result; + } + + @compileError("TODO implement gethostname for this OS"); +} + +pub fn uname() utsname { + var uts: utsname = undefined; + switch (errno(system.uname(&uts))) { + .SUCCESS => return uts, + .FAULT => unreachable, + else => unreachable, + } +} + +pub fn res_mkquery( + op: u4, + dname: []const u8, + class: u8, + ty: u8, + data: []const u8, + newrr: ?[*]const u8, + buf: []u8, +) usize { + _ = data; + _ = newrr; + // This implementation is ported from musl libc. + // A more idiomatic "ziggy" implementation would be welcome. + var name = dname; + if (mem.endsWith(u8, name, ".")) name.len -= 1; + assert(name.len <= 253); + const n = 17 + name.len + @intFromBool(name.len != 0); + + // Construct query template - ID will be filled later + var q: [280]u8 = undefined; + @memset(q[0..n], 0); + q[2] = @as(u8, op) * 8 + 1; + q[5] = 1; + @memcpy(q[13..][0..name.len], name); + var i: usize = 13; + var j: usize = undefined; + while (q[i] != 0) : (i = j + 1) { + j = i; + while (q[j] != 0 and q[j] != '.') : (j += 1) {} + // TODO determine the circumstances for this and whether or + // not this should be an error. + if (j - i - 1 > 62) unreachable; + q[i - 1] = @intCast(j - i); + } + q[i + 1] = ty; + q[i + 3] = class; + + // Make a reasonably unpredictable id + var ts: timespec = undefined; + clock_gettime(CLOCK.REALTIME, &ts) catch {}; + const UInt = std.meta.Int(.unsigned, @bitSizeOf(@TypeOf(ts.tv_nsec))); + const unsec: UInt = @bitCast(ts.tv_nsec); + const id: u32 = @truncate(unsec + unsec / 65536); + q[0] = @truncate(id / 256); + q[1] = @truncate(id); + + @memcpy(buf[0..n], q[0..n]); + return n; +} + +pub const SendError = error{ + /// (For UNIX domain sockets, which are identified by pathname) Write permission is denied + /// on the destination socket file, or search permission is denied for one of the + /// directories the path prefix. (See path_resolution(7).) + /// (For UDP sockets) An attempt was made to send to a network/broadcast address as though + /// it was a unicast address. + AccessDenied, + + /// The socket is marked nonblocking and the requested operation would block, and + /// there is no global event loop configured. + /// It's also possible to get this error under the following condition: + /// (Internet domain datagram sockets) The socket referred to by sockfd had not previously + /// been bound to an address and, upon attempting to bind it to an ephemeral port, it was + /// determined that all port numbers in the ephemeral port range are currently in use. See + /// the discussion of /proc/sys/net/ipv4/ip_local_port_range in ip(7). + WouldBlock, + + /// Another Fast Open is already in progress. + FastOpenAlreadyInProgress, + + /// Connection reset by peer. + ConnectionResetByPeer, + + /// The socket type requires that message be sent atomically, and the size of the message + /// to be sent made this impossible. The message is not transmitted. + MessageTooBig, + + /// The output queue for a network interface was full. This generally indicates that the + /// interface has stopped sending, but may be caused by transient congestion. (Normally, + /// this does not occur in Linux. Packets are just silently dropped when a device queue + /// overflows.) + /// This is also caused when there is not enough kernel memory available. + SystemResources, + + /// The local end has been shut down on a connection oriented socket. In this case, the + /// process will also receive a SIGPIPE unless MSG.NOSIGNAL is set. + BrokenPipe, + + FileDescriptorNotASocket, + + /// Network is unreachable. + NetworkUnreachable, + + /// The local network interface used to reach the destination is down. + NetworkSubsystemFailed, +} || UnexpectedError; + +pub const SendMsgError = SendError || error{ + /// The passed address didn't have the correct address family in its sa_family field. + AddressFamilyNotSupported, + + /// Returned when socket is AF.UNIX and the given path has a symlink loop. + SymLinkLoop, + + /// Returned when socket is AF.UNIX and the given path length exceeds `max_path_bytes` bytes. + NameTooLong, + + /// Returned when socket is AF.UNIX and the given path does not point to an existing file. + FileNotFound, + NotDir, + + /// The socket is not connected (connection-oriented sockets only). + SocketNotConnected, + AddressNotAvailable, +}; + +pub fn sendmsg( + /// The file descriptor of the sending socket. + sockfd: socket_t, + /// Message header and iovecs + msg: *const msghdr_const, + flags: u32, +) SendMsgError!usize { + while (true) { + const rc = system.sendmsg(sockfd, msg, flags); + if (native_os == .windows) { + if (rc == windows.ws2_32.SOCKET_ERROR) { + switch (windows.ws2_32.WSAGetLastError()) { + .WSAEACCES => return error.AccessDenied, + .WSAEADDRNOTAVAIL => return error.AddressNotAvailable, + .WSAECONNRESET => return error.ConnectionResetByPeer, + .WSAEMSGSIZE => return error.MessageTooBig, + .WSAENOBUFS => return error.SystemResources, + .WSAENOTSOCK => return error.FileDescriptorNotASocket, + .WSAEAFNOSUPPORT => return error.AddressFamilyNotSupported, + .WSAEDESTADDRREQ => unreachable, // A destination address is required. + .WSAEFAULT => unreachable, // The lpBuffers, lpTo, lpOverlapped, lpNumberOfBytesSent, or lpCompletionRoutine parameters are not part of the user address space, or the lpTo parameter is too small. + .WSAEHOSTUNREACH => return error.NetworkUnreachable, + // TODO: WSAEINPROGRESS, WSAEINTR + .WSAEINVAL => unreachable, + .WSAENETDOWN => return error.NetworkSubsystemFailed, + .WSAENETRESET => return error.ConnectionResetByPeer, + .WSAENETUNREACH => return error.NetworkUnreachable, + .WSAENOTCONN => return error.SocketNotConnected, + .WSAESHUTDOWN => unreachable, // The socket has been shut down; it is not possible to WSASendTo on a socket after shutdown has been invoked with how set to SD_SEND or SD_BOTH. + .WSAEWOULDBLOCK => return error.WouldBlock, + .WSANOTINITIALISED => unreachable, // A successful WSAStartup call must occur before using this function. + else => |err| return windows.unexpectedWSAError(err), + } + } else { + return @intCast(rc); + } + } else { + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + + .ACCES => return error.AccessDenied, + .AGAIN => return error.WouldBlock, + .ALREADY => return error.FastOpenAlreadyInProgress, + .BADF => unreachable, // always a race condition + .CONNRESET => return error.ConnectionResetByPeer, + .DESTADDRREQ => unreachable, // The socket is not connection-mode, and no peer address is set. + .FAULT => unreachable, // An invalid user space address was specified for an argument. + .INTR => continue, + .INVAL => unreachable, // Invalid argument passed. + .ISCONN => unreachable, // connection-mode socket was connected already but a recipient was specified + .MSGSIZE => return error.MessageTooBig, + .NOBUFS => return error.SystemResources, + .NOMEM => return error.SystemResources, + .NOTSOCK => unreachable, // The file descriptor sockfd does not refer to a socket. + .OPNOTSUPP => unreachable, // Some bit in the flags argument is inappropriate for the socket type. + .PIPE => return error.BrokenPipe, + .AFNOSUPPORT => return error.AddressFamilyNotSupported, + .LOOP => return error.SymLinkLoop, + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOTDIR => return error.NotDir, + .HOSTUNREACH => return error.NetworkUnreachable, + .NETUNREACH => return error.NetworkUnreachable, + .NOTCONN => return error.SocketNotConnected, + .NETDOWN => return error.NetworkSubsystemFailed, + else => |err| return unexpectedErrno(err), + } + } + } +} + +pub const SendToError = SendMsgError || error{ + /// The destination address is not reachable by the bound address. + UnreachableAddress, +}; + +/// Transmit a message to another socket. +/// +/// The `sendto` call may be used only when the socket is in a connected state (so that the intended +/// recipient is known). The following call +/// +/// send(sockfd, buf, len, flags); +/// +/// is equivalent to +/// +/// sendto(sockfd, buf, len, flags, NULL, 0); +/// +/// If sendto() is used on a connection-mode (`SOCK.STREAM`, `SOCK.SEQPACKET`) socket, the arguments +/// `dest_addr` and `addrlen` are asserted to be `null` and `0` respectively, and asserted +/// that the socket was actually connected. +/// Otherwise, the address of the target is given by `dest_addr` with `addrlen` specifying its size. +/// +/// If the message is too long to pass atomically through the underlying protocol, +/// `SendError.MessageTooBig` is returned, and the message is not transmitted. +/// +/// There is no indication of failure to deliver. +/// +/// When the message does not fit into the send buffer of the socket, `sendto` normally blocks, +/// unless the socket has been placed in nonblocking I/O mode. In nonblocking mode it would fail +/// with `SendError.WouldBlock`. The `select` call may be used to determine when it is +/// possible to send more data. +pub fn sendto( + /// The file descriptor of the sending socket. + sockfd: socket_t, + /// Message to send. + buf: []const u8, + flags: u32, + dest_addr: ?*const sockaddr, + addrlen: socklen_t, +) SendToError!usize { + if (native_os == .windows) { + switch (windows.sendto(sockfd, buf.ptr, buf.len, flags, dest_addr, addrlen)) { + windows.ws2_32.SOCKET_ERROR => switch (windows.ws2_32.WSAGetLastError()) { + .WSAEACCES => return error.AccessDenied, + .WSAEADDRNOTAVAIL => return error.AddressNotAvailable, + .WSAECONNRESET => return error.ConnectionResetByPeer, + .WSAEMSGSIZE => return error.MessageTooBig, + .WSAENOBUFS => return error.SystemResources, + .WSAENOTSOCK => return error.FileDescriptorNotASocket, + .WSAEAFNOSUPPORT => return error.AddressFamilyNotSupported, + .WSAEDESTADDRREQ => unreachable, // A destination address is required. + .WSAEFAULT => unreachable, // The lpBuffers, lpTo, lpOverlapped, lpNumberOfBytesSent, or lpCompletionRoutine parameters are not part of the user address space, or the lpTo parameter is too small. + .WSAEHOSTUNREACH => return error.NetworkUnreachable, + // TODO: WSAEINPROGRESS, WSAEINTR + .WSAEINVAL => unreachable, + .WSAENETDOWN => return error.NetworkSubsystemFailed, + .WSAENETRESET => return error.ConnectionResetByPeer, + .WSAENETUNREACH => return error.NetworkUnreachable, + .WSAENOTCONN => return error.SocketNotConnected, + .WSAESHUTDOWN => unreachable, // The socket has been shut down; it is not possible to WSASendTo on a socket after shutdown has been invoked with how set to SD_SEND or SD_BOTH. + .WSAEWOULDBLOCK => return error.WouldBlock, + .WSANOTINITIALISED => unreachable, // A successful WSAStartup call must occur before using this function. + else => |err| return windows.unexpectedWSAError(err), + }, + else => |rc| return @intCast(rc), + } + } + while (true) { + const rc = system.sendto(sockfd, buf.ptr, buf.len, flags, dest_addr, addrlen); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + + .ACCES => return error.AccessDenied, + .AGAIN => return error.WouldBlock, + .ALREADY => return error.FastOpenAlreadyInProgress, + .BADF => unreachable, // always a race condition + .CONNRESET => return error.ConnectionResetByPeer, + .DESTADDRREQ => unreachable, // The socket is not connection-mode, and no peer address is set. + .FAULT => unreachable, // An invalid user space address was specified for an argument. + .INTR => continue, + .INVAL => return error.UnreachableAddress, + .ISCONN => unreachable, // connection-mode socket was connected already but a recipient was specified + .MSGSIZE => return error.MessageTooBig, + .NOBUFS => return error.SystemResources, + .NOMEM => return error.SystemResources, + .NOTSOCK => unreachable, // The file descriptor sockfd does not refer to a socket. + .OPNOTSUPP => unreachable, // Some bit in the flags argument is inappropriate for the socket type. + .PIPE => return error.BrokenPipe, + .AFNOSUPPORT => return error.AddressFamilyNotSupported, + .LOOP => return error.SymLinkLoop, + .NAMETOOLONG => return error.NameTooLong, + .NOENT => return error.FileNotFound, + .NOTDIR => return error.NotDir, + .HOSTUNREACH => return error.NetworkUnreachable, + .NETUNREACH => return error.NetworkUnreachable, + .NOTCONN => return error.SocketNotConnected, + .NETDOWN => return error.NetworkSubsystemFailed, + else => |err| return unexpectedErrno(err), + } + } +} + +/// Transmit a message to another socket. +/// +/// The `send` call may be used only when the socket is in a connected state (so that the intended +/// recipient is known). The only difference between `send` and `write` is the presence of +/// flags. With a zero flags argument, `send` is equivalent to `write`. Also, the following +/// call +/// +/// send(sockfd, buf, len, flags); +/// +/// is equivalent to +/// +/// sendto(sockfd, buf, len, flags, NULL, 0); +/// +/// There is no indication of failure to deliver. +/// +/// When the message does not fit into the send buffer of the socket, `send` normally blocks, +/// unless the socket has been placed in nonblocking I/O mode. In nonblocking mode it would fail +/// with `SendError.WouldBlock`. The `select` call may be used to determine when it is +/// possible to send more data. +pub fn send( + /// The file descriptor of the sending socket. + sockfd: socket_t, + buf: []const u8, + flags: u32, +) SendError!usize { + return sendto(sockfd, buf, flags, null, 0) catch |err| switch (err) { + error.AddressFamilyNotSupported => unreachable, + error.SymLinkLoop => unreachable, + error.NameTooLong => unreachable, + error.FileNotFound => unreachable, + error.NotDir => unreachable, + error.NetworkUnreachable => unreachable, + error.AddressNotAvailable => unreachable, + error.SocketNotConnected => unreachable, + error.UnreachableAddress => unreachable, + else => |e| return e, + }; +} + +pub const SendFileError = PReadError || WriteError || SendError; + +/// Transfer data between file descriptors, with optional headers and trailers. +/// +/// Returns the number of bytes written, which can be zero. +/// +/// The `sendfile` call copies `in_len` bytes from one file descriptor to another. When possible, +/// this is done within the operating system kernel, which can provide better performance +/// characteristics than transferring data from kernel to user space and back, such as with +/// `read` and `write` calls. When `in_len` is `0`, it means to copy until the end of the input file has been +/// reached. Note, however, that partial writes are still possible in this case. +/// +/// `in_fd` must be a file descriptor opened for reading, and `out_fd` must be a file descriptor +/// opened for writing. They may be any kind of file descriptor; however, if `in_fd` is not a regular +/// file system file, it may cause this function to fall back to calling `read` and `write`, in which case +/// atomicity guarantees no longer apply. +/// +/// Copying begins reading at `in_offset`. The input file descriptor seek position is ignored and not updated. +/// If the output file descriptor has a seek position, it is updated as bytes are written. When +/// `in_offset` is past the end of the input file, it successfully reads 0 bytes. +/// +/// `flags` has different meanings per operating system; refer to the respective man pages. +/// +/// These systems support atomically sending everything, including headers and trailers: +/// * macOS +/// * FreeBSD +/// +/// These systems support in-kernel data copying, but headers and trailers are not sent atomically: +/// * Linux +/// +/// Other systems fall back to calling `read` / `write`. +/// +/// Linux has a limit on how many bytes may be transferred in one `sendfile` call, which is `0x7ffff000` +/// on both 64-bit and 32-bit systems. This is due to using a signed C int as the return value, as +/// well as stuffing the errno codes into the last `4096` values. This is noted on the `sendfile` man page. +/// The limit on Darwin is `0x7fffffff`, trying to write more than that returns EINVAL. +/// The corresponding POSIX limit on this is `maxInt(isize)`. +pub fn sendfile( + out_fd: fd_t, + in_fd: fd_t, + in_offset: u64, + in_len: u64, + headers: []const iovec_const, + trailers: []const iovec_const, + flags: u32, +) SendFileError!usize { + var header_done = false; + var total_written: usize = 0; + + // Prevents EOVERFLOW. + const size_t = std.meta.Int(.unsigned, @typeInfo(usize).Int.bits - 1); + const max_count = switch (native_os) { + .linux => 0x7ffff000, + .macos, .ios, .watchos, .tvos => maxInt(i32), + else => maxInt(size_t), + }; + + switch (native_os) { + .linux => sf: { + // sendfile() first appeared in Linux 2.2, glibc 2.1. + const call_sf = comptime if (builtin.link_libc) + std.c.versionCheck(.{ .major = 2, .minor = 1, .patch = 0 }) + else + builtin.os.version_range.linux.range.max.order(.{ .major = 2, .minor = 2, .patch = 0 }) != .lt; + if (!call_sf) break :sf; + + if (headers.len != 0) { + const amt = try writev(out_fd, headers); + total_written += amt; + if (amt < count_iovec_bytes(headers)) return total_written; + header_done = true; + } + + // Here we match BSD behavior, making a zero count value send as many bytes as possible. + const adjusted_count = if (in_len == 0) max_count else @min(in_len, max_count); + + const sendfile_sym = if (lfs64_abi) system.sendfile64 else system.sendfile; + while (true) { + var offset: off_t = @bitCast(in_offset); + const rc = sendfile_sym(out_fd, in_fd, &offset, adjusted_count); + switch (errno(rc)) { + .SUCCESS => { + const amt: usize = @bitCast(rc); + total_written += amt; + if (in_len == 0 and amt == 0) { + // We have detected EOF from `in_fd`. + break; + } else if (amt < in_len) { + return total_written; + } else { + break; + } + }, + + .BADF => unreachable, // Always a race condition. + .FAULT => unreachable, // Segmentation fault. + .OVERFLOW => unreachable, // We avoid passing too large of a `count`. + .NOTCONN => return error.BrokenPipe, // `out_fd` is an unconnected socket + + .INVAL, .NOSYS => { + // EINVAL could be any of the following situations: + // * Descriptor is not valid or locked + // * an mmap(2)-like operation is not available for in_fd + // * count is negative + // * out_fd has the APPEND flag set + // Because of the "mmap(2)-like operation" possibility, we fall back to doing read/write + // manually, the same as ENOSYS. + break :sf; + }, + .AGAIN => return error.WouldBlock, + .IO => return error.InputOutput, + .PIPE => return error.BrokenPipe, + .NOMEM => return error.SystemResources, + .NXIO => return error.Unseekable, + .SPIPE => return error.Unseekable, + else => |err| { + unexpectedErrno(err) catch {}; + break :sf; + }, + } + } + + if (trailers.len != 0) { + total_written += try writev(out_fd, trailers); + } + + return total_written; + }, + .freebsd => sf: { + var hdtr_data: std.c.sf_hdtr = undefined; + var hdtr: ?*std.c.sf_hdtr = null; + if (headers.len != 0 or trailers.len != 0) { + // Here we carefully avoid `@intCast` by returning partial writes when + // too many io vectors are provided. + const hdr_cnt = cast(u31, headers.len) orelse maxInt(u31); + if (headers.len > hdr_cnt) return writev(out_fd, headers); + + const trl_cnt = cast(u31, trailers.len) orelse maxInt(u31); + + hdtr_data = std.c.sf_hdtr{ + .headers = headers.ptr, + .hdr_cnt = hdr_cnt, + .trailers = trailers.ptr, + .trl_cnt = trl_cnt, + }; + hdtr = &hdtr_data; + } + + while (true) { + var sbytes: off_t = undefined; + const err = errno(system.sendfile(in_fd, out_fd, @bitCast(in_offset), @min(in_len, max_count), hdtr, &sbytes, flags)); + const amt: usize = @bitCast(sbytes); + switch (err) { + .SUCCESS => return amt, + + .BADF => unreachable, // Always a race condition. + .FAULT => unreachable, // Segmentation fault. + .NOTCONN => return error.BrokenPipe, // `out_fd` is an unconnected socket + + .INVAL, .OPNOTSUPP, .NOTSOCK, .NOSYS => { + // EINVAL could be any of the following situations: + // * The fd argument is not a regular file. + // * The s argument is not a SOCK.STREAM type socket. + // * The offset argument is negative. + // Because of some of these possibilities, we fall back to doing read/write + // manually, the same as ENOSYS. + break :sf; + }, + + .INTR => if (amt != 0) return amt else continue, + + .AGAIN => if (amt != 0) { + return amt; + } else { + return error.WouldBlock; + }, + + .BUSY => if (amt != 0) { + return amt; + } else { + return error.WouldBlock; + }, + + .IO => return error.InputOutput, + .NOBUFS => return error.SystemResources, + .PIPE => return error.BrokenPipe, + + else => { + unexpectedErrno(err) catch {}; + if (amt != 0) { + return amt; + } else { + break :sf; + } + }, + } + } + }, + .macos, .ios, .tvos, .watchos => sf: { + var hdtr_data: std.c.sf_hdtr = undefined; + var hdtr: ?*std.c.sf_hdtr = null; + if (headers.len != 0 or trailers.len != 0) { + // Here we carefully avoid `@intCast` by returning partial writes when + // too many io vectors are provided. + const hdr_cnt = cast(u31, headers.len) orelse maxInt(u31); + if (headers.len > hdr_cnt) return writev(out_fd, headers); + + const trl_cnt = cast(u31, trailers.len) orelse maxInt(u31); + + hdtr_data = std.c.sf_hdtr{ + .headers = headers.ptr, + .hdr_cnt = hdr_cnt, + .trailers = trailers.ptr, + .trl_cnt = trl_cnt, + }; + hdtr = &hdtr_data; + } + + while (true) { + var sbytes: off_t = @min(in_len, max_count); + const err = errno(system.sendfile(in_fd, out_fd, @bitCast(in_offset), &sbytes, hdtr, flags)); + const amt: usize = @bitCast(sbytes); + switch (err) { + .SUCCESS => return amt, + + .BADF => unreachable, // Always a race condition. + .FAULT => unreachable, // Segmentation fault. + .INVAL => unreachable, + .NOTCONN => return error.BrokenPipe, // `out_fd` is an unconnected socket + + .OPNOTSUPP, .NOTSOCK, .NOSYS => break :sf, + + .INTR => if (amt != 0) return amt else continue, + + .AGAIN => if (amt != 0) { + return amt; + } else { + return error.WouldBlock; + }, + + .IO => return error.InputOutput, + .PIPE => return error.BrokenPipe, + + else => { + unexpectedErrno(err) catch {}; + if (amt != 0) { + return amt; + } else { + break :sf; + } + }, + } + } + }, + else => {}, // fall back to read/write + } + + if (headers.len != 0 and !header_done) { + const amt = try writev(out_fd, headers); + total_written += amt; + if (amt < count_iovec_bytes(headers)) return total_written; + } + + rw: { + var buf: [8 * 4096]u8 = undefined; + // Here we match BSD behavior, making a zero count value send as many bytes as possible. + const adjusted_count = if (in_len == 0) buf.len else @min(buf.len, in_len); + const amt_read = try pread(in_fd, buf[0..adjusted_count], in_offset); + if (amt_read == 0) { + if (in_len == 0) { + // We have detected EOF from `in_fd`. + break :rw; + } else { + return total_written; + } + } + const amt_written = try write(out_fd, buf[0..amt_read]); + total_written += amt_written; + if (amt_written < in_len or in_len == 0) return total_written; + } + + if (trailers.len != 0) { + total_written += try writev(out_fd, trailers); + } + + return total_written; +} + +fn count_iovec_bytes(iovs: []const iovec_const) usize { + var count: usize = 0; + for (iovs) |iov| { + count += iov.iov_len; + } + return count; +} + +pub const CopyFileRangeError = error{ + FileTooBig, + InputOutput, + /// `fd_in` is not open for reading; or `fd_out` is not open for writing; + /// or the `APPEND` flag is set for `fd_out`. + FilesOpenedWithWrongFlags, + IsDir, + OutOfMemory, + NoSpaceLeft, + Unseekable, + PermissionDenied, + SwapFile, + CorruptedData, +} || PReadError || PWriteError || UnexpectedError; + +/// Transfer data between file descriptors at specified offsets. +/// +/// Returns the number of bytes written, which can less than requested. +/// +/// The `copy_file_range` call copies `len` bytes from one file descriptor to another. When possible, +/// this is done within the operating system kernel, which can provide better performance +/// characteristics than transferring data from kernel to user space and back, such as with +/// `pread` and `pwrite` calls. +/// +/// `fd_in` must be a file descriptor opened for reading, and `fd_out` must be a file descriptor +/// opened for writing. They may be any kind of file descriptor; however, if `fd_in` is not a regular +/// file system file, it may cause this function to fall back to calling `pread` and `pwrite`, in which case +/// atomicity guarantees no longer apply. +/// +/// If `fd_in` and `fd_out` are the same, source and target ranges must not overlap. +/// The file descriptor seek positions are ignored and not updated. +/// When `off_in` is past the end of the input file, it successfully reads 0 bytes. +/// +/// `flags` has different meanings per operating system; refer to the respective man pages. +/// +/// These systems support in-kernel data copying: +/// * Linux 4.5 (cross-filesystem 5.3) +/// * FreeBSD 13.0 +/// +/// Other systems fall back to calling `pread` / `pwrite`. +/// +/// Maximum offsets on Linux and FreeBSD are `maxInt(i64)`. +pub fn copy_file_range(fd_in: fd_t, off_in: u64, fd_out: fd_t, off_out: u64, len: usize, flags: u32) CopyFileRangeError!usize { + const global = struct { + var has_copy_file_range = true; + }; + + if ((comptime builtin.os.isAtLeast(.freebsd, .{ .major = 13, .minor = 0, .patch = 0 }) orelse false) or + ((comptime builtin.os.isAtLeast(.linux, .{ .major = 4, .minor = 5, .patch = 0 }) orelse false and + std.c.versionCheck(.{ .major = 2, .minor = 27, .patch = 0 })) and + @atomicLoad(bool, &global.has_copy_file_range, .monotonic))) + { + var off_in_copy: i64 = @bitCast(off_in); + var off_out_copy: i64 = @bitCast(off_out); + + while (true) { + const rc = system.copy_file_range(fd_in, &off_in_copy, fd_out, &off_out_copy, len, flags); + if (native_os == .freebsd) { + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .BADF => return error.FilesOpenedWithWrongFlags, + .FBIG => return error.FileTooBig, + .IO => return error.InputOutput, + .ISDIR => return error.IsDir, + .NOSPC => return error.NoSpaceLeft, + .INVAL => break, // these may not be regular files, try fallback + .INTEGRITY => return error.CorruptedData, + .INTR => continue, + else => |err| return unexpectedErrno(err), + } + } else { // assume linux + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .BADF => return error.FilesOpenedWithWrongFlags, + .FBIG => return error.FileTooBig, + .IO => return error.InputOutput, + .ISDIR => return error.IsDir, + .NOSPC => return error.NoSpaceLeft, + .INVAL => break, // these may not be regular files, try fallback + .NOMEM => return error.OutOfMemory, + .OVERFLOW => return error.Unseekable, + .PERM => return error.PermissionDenied, + .TXTBSY => return error.SwapFile, + .XDEV => break, // support for cross-filesystem copy added in Linux 5.3, use fallback + .NOSYS => { + @atomicStore(bool, &global.has_copy_file_range, false, .monotonic); + break; + }, + else => |err| return unexpectedErrno(err), + } + } + } + } + + var buf: [8 * 4096]u8 = undefined; + const amt_read = try pread(fd_in, buf[0..@min(buf.len, len)], off_in); + if (amt_read == 0) return 0; + return pwrite(fd_out, buf[0..amt_read], off_out); +} + +pub const PollError = error{ + /// The network subsystem has failed. + NetworkSubsystemFailed, + + /// The kernel had no space to allocate file descriptor tables. + SystemResources, +} || UnexpectedError; + +pub fn poll(fds: []pollfd, timeout: i32) PollError!usize { + while (true) { + const fds_count = cast(nfds_t, fds.len) orelse return error.SystemResources; + const rc = system.poll(fds.ptr, fds_count, timeout); + if (native_os == .windows) { + if (rc == windows.ws2_32.SOCKET_ERROR) { + switch (windows.ws2_32.WSAGetLastError()) { + .WSANOTINITIALISED => unreachable, + .WSAENETDOWN => return error.NetworkSubsystemFailed, + .WSAENOBUFS => return error.SystemResources, + // TODO: handle more errors + else => |err| return windows.unexpectedWSAError(err), + } + } else { + return @intCast(rc); + } + } else { + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .FAULT => unreachable, + .INTR => continue, + .INVAL => unreachable, + .NOMEM => return error.SystemResources, + else => |err| return unexpectedErrno(err), + } + } + unreachable; + } +} + +pub const PPollError = error{ + /// The operation was interrupted by a delivery of a signal before it could complete. + SignalInterrupt, + + /// The kernel had no space to allocate file descriptor tables. + SystemResources, +} || UnexpectedError; + +pub fn ppoll(fds: []pollfd, timeout: ?*const timespec, mask: ?*const sigset_t) PPollError!usize { + var ts: timespec = undefined; + var ts_ptr: ?*timespec = null; + if (timeout) |timeout_ns| { + ts_ptr = &ts; + ts = timeout_ns.*; + } + const fds_count = cast(nfds_t, fds.len) orelse return error.SystemResources; + const rc = system.ppoll(fds.ptr, fds_count, ts_ptr, mask); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .FAULT => unreachable, + .INTR => return error.SignalInterrupt, + .INVAL => unreachable, + .NOMEM => return error.SystemResources, + else => |err| return unexpectedErrno(err), + } +} + +pub const RecvFromError = error{ + /// The socket is marked nonblocking and the requested operation would block, and + /// there is no global event loop configured. + WouldBlock, + + /// A remote host refused to allow the network connection, typically because it is not + /// running the requested service. + ConnectionRefused, + + /// Could not allocate kernel memory. + SystemResources, + + ConnectionResetByPeer, + ConnectionTimedOut, + + /// The socket has not been bound. + SocketNotBound, + + /// The UDP message was too big for the buffer and part of it has been discarded + MessageTooBig, + + /// The network subsystem has failed. + NetworkSubsystemFailed, + + /// The socket is not connected (connection-oriented sockets only). + SocketNotConnected, +} || UnexpectedError; + +pub fn recv(sock: socket_t, buf: []u8, flags: u32) RecvFromError!usize { + return recvfrom(sock, buf, flags, null, null); +} + +/// If `sockfd` is opened in non blocking mode, the function will +/// return error.WouldBlock when EAGAIN is received. +pub fn recvfrom( + sockfd: socket_t, + buf: []u8, + flags: u32, + src_addr: ?*sockaddr, + addrlen: ?*socklen_t, +) RecvFromError!usize { + while (true) { + const rc = system.recvfrom(sockfd, buf.ptr, buf.len, flags, src_addr, addrlen); + if (native_os == .windows) { + if (rc == windows.ws2_32.SOCKET_ERROR) { + switch (windows.ws2_32.WSAGetLastError()) { + .WSANOTINITIALISED => unreachable, + .WSAECONNRESET => return error.ConnectionResetByPeer, + .WSAEINVAL => return error.SocketNotBound, + .WSAEMSGSIZE => return error.MessageTooBig, + .WSAENETDOWN => return error.NetworkSubsystemFailed, + .WSAENOTCONN => return error.SocketNotConnected, + .WSAEWOULDBLOCK => return error.WouldBlock, + .WSAETIMEDOUT => return error.ConnectionTimedOut, + // TODO: handle more errors + else => |err| return windows.unexpectedWSAError(err), + } + } else { + return @intCast(rc); + } + } else { + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .BADF => unreachable, // always a race condition + .FAULT => unreachable, + .INVAL => unreachable, + .NOTCONN => return error.SocketNotConnected, + .NOTSOCK => unreachable, + .INTR => continue, + .AGAIN => return error.WouldBlock, + .NOMEM => return error.SystemResources, + .CONNREFUSED => return error.ConnectionRefused, + .CONNRESET => return error.ConnectionResetByPeer, + .TIMEDOUT => return error.ConnectionTimedOut, + else => |err| return unexpectedErrno(err), + } + } + } +} + +pub const DnExpandError = error{InvalidDnsPacket}; + +pub fn dn_expand( + msg: []const u8, + comp_dn: []const u8, + exp_dn: []u8, +) DnExpandError!usize { + // This implementation is ported from musl libc. + // A more idiomatic "ziggy" implementation would be welcome. + var p = comp_dn.ptr; + var len: usize = maxInt(usize); + const end = msg.ptr + msg.len; + if (p == end or exp_dn.len == 0) return error.InvalidDnsPacket; + var dest = exp_dn.ptr; + const dend = dest + @min(exp_dn.len, 254); + // detect reference loop using an iteration counter + var i: usize = 0; + while (i < msg.len) : (i += 2) { + // loop invariants: p<end, dest<dend + if ((p[0] & 0xc0) != 0) { + if (p + 1 == end) return error.InvalidDnsPacket; + const j = @as(usize, p[0] & 0x3f) << 8 | p[1]; + if (len == maxInt(usize)) len = @intFromPtr(p) + 2 - @intFromPtr(comp_dn.ptr); + if (j >= msg.len) return error.InvalidDnsPacket; + p = msg.ptr + j; + } else if (p[0] != 0) { + if (dest != exp_dn.ptr) { + dest[0] = '.'; + dest += 1; + } + var j = p[0]; + p += 1; + if (j >= @intFromPtr(end) - @intFromPtr(p) or j >= @intFromPtr(dend) - @intFromPtr(dest)) { + return error.InvalidDnsPacket; + } + while (j != 0) { + j -= 1; + dest[0] = p[0]; + dest += 1; + p += 1; + } + } else { + dest[0] = 0; + if (len == maxInt(usize)) len = @intFromPtr(p) + 1 - @intFromPtr(comp_dn.ptr); + return len; + } + } + return error.InvalidDnsPacket; +} + +pub const SetSockOptError = error{ + /// The socket is already connected, and a specified option cannot be set while the socket is connected. + AlreadyConnected, + + /// The option is not supported by the protocol. + InvalidProtocolOption, + + /// The send and receive timeout values are too big to fit into the timeout fields in the socket structure. + TimeoutTooBig, + + /// Insufficient resources are available in the system to complete the call. + SystemResources, + + // Setting the socket option requires more elevated permissions. + PermissionDenied, + + NetworkSubsystemFailed, + FileDescriptorNotASocket, + SocketNotBound, + NoDevice, +} || UnexpectedError; + +/// Set a socket's options. +pub fn setsockopt(fd: socket_t, level: u32, optname: u32, opt: []const u8) SetSockOptError!void { + if (native_os == .windows) { + const rc = windows.ws2_32.setsockopt(fd, @intCast(level), @intCast(optname), opt.ptr, @intCast(opt.len)); + if (rc == windows.ws2_32.SOCKET_ERROR) { + switch (windows.ws2_32.WSAGetLastError()) { + .WSANOTINITIALISED => unreachable, + .WSAENETDOWN => return error.NetworkSubsystemFailed, + .WSAEFAULT => unreachable, + .WSAENOTSOCK => return error.FileDescriptorNotASocket, + .WSAEINVAL => return error.SocketNotBound, + else => |err| return windows.unexpectedWSAError(err), + } + } + return; + } else { + switch (errno(system.setsockopt(fd, level, optname, opt.ptr, @intCast(opt.len)))) { + .SUCCESS => {}, + .BADF => unreachable, // always a race condition + .NOTSOCK => unreachable, // always a race condition + .INVAL => unreachable, + .FAULT => unreachable, + .DOM => return error.TimeoutTooBig, + .ISCONN => return error.AlreadyConnected, + .NOPROTOOPT => return error.InvalidProtocolOption, + .NOMEM => return error.SystemResources, + .NOBUFS => return error.SystemResources, + .PERM => return error.PermissionDenied, + .NODEV => return error.NoDevice, + else => |err| return unexpectedErrno(err), + } + } +} + +pub const MemFdCreateError = error{ + SystemFdQuotaExceeded, + ProcessFdQuotaExceeded, + OutOfMemory, + /// Either the name provided exceeded `NAME_MAX`, or invalid flags were passed. + NameTooLong, + + /// memfd_create is available in Linux 3.17 and later. This error is returned + /// for older kernel versions. + SystemOutdated, +} || UnexpectedError; + +pub fn memfd_createZ(name: [*:0]const u8, flags: u32) MemFdCreateError!fd_t { + switch (native_os) { + .linux => { + // memfd_create is available only in glibc versions starting with 2.27. + const use_c = std.c.versionCheck(.{ .major = 2, .minor = 27, .patch = 0 }); + const sys = if (use_c) std.c else linux; + const rc = sys.memfd_create(name, flags); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .FAULT => unreachable, // name has invalid memory + .INVAL => return error.NameTooLong, // or, program has a bug and flags are faulty + .NFILE => return error.SystemFdQuotaExceeded, + .MFILE => return error.ProcessFdQuotaExceeded, + .NOMEM => return error.OutOfMemory, + .NOSYS => return error.SystemOutdated, + else => |err| return unexpectedErrno(err), + } + }, + .freebsd => { + if (comptime builtin.os.version_range.semver.max.order(.{ .major = 13, .minor = 0, .patch = 0 }) == .lt) + @compileError("memfd_create is unavailable on FreeBSD < 13.0"); + const rc = system.memfd_create(name, flags); + switch (errno(rc)) { + .SUCCESS => return rc, + .BADF => unreachable, // name argument NULL + .INVAL => unreachable, // name too long or invalid/unsupported flags. + .MFILE => return error.ProcessFdQuotaExceeded, + .NFILE => return error.SystemFdQuotaExceeded, + .NOSYS => return error.SystemOutdated, + else => |err| return unexpectedErrno(err), + } + }, + else => @compileError("target OS does not support memfd_create()"), + } +} + +pub fn memfd_create(name: []const u8, flags: u32) MemFdCreateError!fd_t { + var buffer: [NAME_MAX - "memfd:".len - 1:0]u8 = undefined; + if (name.len > buffer.len) return error.NameTooLong; + @memcpy(buffer[0..name.len], name); + buffer[name.len] = 0; + return memfd_createZ(&buffer, flags); +} + +pub fn getrusage(who: i32) rusage { + var result: rusage = undefined; + const rc = system.getrusage(who, &result); + switch (errno(rc)) { + .SUCCESS => return result, + .INVAL => unreachable, + .FAULT => unreachable, + else => unreachable, + } +} + +pub const TIOCError = error{NotATerminal}; + +pub const TermiosGetError = TIOCError || UnexpectedError; + +pub fn tcgetattr(handle: fd_t) TermiosGetError!termios { + while (true) { + var term: termios = undefined; + switch (errno(system.tcgetattr(handle, &term))) { + .SUCCESS => return term, + .INTR => continue, + .BADF => unreachable, + .NOTTY => return error.NotATerminal, + else => |err| return unexpectedErrno(err), + } + } +} + +pub const TermiosSetError = TermiosGetError || error{ProcessOrphaned}; + +pub fn tcsetattr(handle: fd_t, optional_action: TCSA, termios_p: termios) TermiosSetError!void { + while (true) { + switch (errno(system.tcsetattr(handle, optional_action, &termios_p))) { + .SUCCESS => return, + .BADF => unreachable, + .INTR => continue, + .INVAL => unreachable, + .NOTTY => return error.NotATerminal, + .IO => return error.ProcessOrphaned, + else => |err| return unexpectedErrno(err), + } + } +} + +pub const TermioGetPgrpError = TIOCError || UnexpectedError; + +/// Returns the process group ID for the TTY associated with the given handle. +pub fn tcgetpgrp(handle: fd_t) TermioGetPgrpError!pid_t { + while (true) { + var pgrp: pid_t = undefined; + switch (errno(system.tcgetpgrp(handle, &pgrp))) { + .SUCCESS => return pgrp, + .BADF => unreachable, + .INVAL => unreachable, + .INTR => continue, + .NOTTY => return error.NotATerminal, + else => |err| return unexpectedErrno(err), + } + } +} + +pub const TermioSetPgrpError = TermioGetPgrpError || error{NotAPgrpMember}; + +/// Sets the controlling process group ID for given TTY. +/// handle must be valid fd_t to a TTY associated with calling process. +/// pgrp must be a valid process group, and the calling process must be a member +/// of that group. +pub fn tcsetpgrp(handle: fd_t, pgrp: pid_t) TermioSetPgrpError!void { + while (true) { + switch (errno(system.tcsetpgrp(handle, &pgrp))) { + .SUCCESS => return, + .BADF => unreachable, + .INVAL => unreachable, + .INTR => continue, + .NOTTY => return error.NotATerminal, + .PERM => return TermioSetPgrpError.NotAPgrpMember, + else => |err| return unexpectedErrno(err), + } + } +} + +pub fn signalfd(fd: fd_t, mask: *const sigset_t, flags: u32) !fd_t { + const rc = system.signalfd(fd, mask, flags); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .BADF, .INVAL => unreachable, + .NFILE => return error.SystemFdQuotaExceeded, + .NOMEM => return error.SystemResources, + .MFILE => return error.ProcessResources, + .NODEV => return error.InodeMountFail, + .NOSYS => return error.SystemOutdated, + else => |err| return unexpectedErrno(err), + } +} + +pub const SyncError = error{ + InputOutput, + NoSpaceLeft, + DiskQuota, + AccessDenied, +} || UnexpectedError; + +/// Write all pending file contents and metadata modifications to all filesystems. +pub fn sync() void { + system.sync(); +} + +/// Write all pending file contents and metadata modifications to the filesystem which contains the specified file. +pub fn syncfs(fd: fd_t) SyncError!void { + const rc = system.syncfs(fd); + switch (errno(rc)) { + .SUCCESS => return, + .BADF, .INVAL, .ROFS => unreachable, + .IO => return error.InputOutput, + .NOSPC => return error.NoSpaceLeft, + .DQUOT => return error.DiskQuota, + else => |err| return unexpectedErrno(err), + } +} + +/// Write all pending file contents and metadata modifications for the specified file descriptor to the underlying filesystem. +pub fn fsync(fd: fd_t) SyncError!void { + if (native_os == .windows) { + if (windows.kernel32.FlushFileBuffers(fd) != 0) + return; + switch (windows.kernel32.GetLastError()) { + .SUCCESS => return, + .INVALID_HANDLE => unreachable, + .ACCESS_DENIED => return error.AccessDenied, // a sync was performed but the system couldn't update the access time + .UNEXP_NET_ERR => return error.InputOutput, + else => return error.InputOutput, + } + } + const rc = system.fsync(fd); + switch (errno(rc)) { + .SUCCESS => return, + .BADF, .INVAL, .ROFS => unreachable, + .IO => return error.InputOutput, + .NOSPC => return error.NoSpaceLeft, + .DQUOT => return error.DiskQuota, + else => |err| return unexpectedErrno(err), + } +} + +/// Write all pending file contents for the specified file descriptor to the underlying filesystem, but not necessarily the metadata. +pub fn fdatasync(fd: fd_t) SyncError!void { + if (native_os == .windows) { + return fsync(fd) catch |err| switch (err) { + SyncError.AccessDenied => return, // fdatasync doesn't promise that the access time was synced + else => return err, + }; + } + const rc = system.fdatasync(fd); + switch (errno(rc)) { + .SUCCESS => return, + .BADF, .INVAL, .ROFS => unreachable, + .IO => return error.InputOutput, + .NOSPC => return error.NoSpaceLeft, + .DQUOT => return error.DiskQuota, + else => |err| return unexpectedErrno(err), + } +} + +pub const PrctlError = error{ + /// Can only occur with PR_SET_SECCOMP/SECCOMP_MODE_FILTER or + /// PR_SET_MM/PR_SET_MM_EXE_FILE + AccessDenied, + /// Can only occur with PR_SET_MM/PR_SET_MM_EXE_FILE + InvalidFileDescriptor, + InvalidAddress, + /// Can only occur with PR_SET_SPECULATION_CTRL, PR_MPX_ENABLE_MANAGEMENT, + /// or PR_MPX_DISABLE_MANAGEMENT + UnsupportedFeature, + /// Can only occur with PR_SET_FP_MODE + OperationNotSupported, + PermissionDenied, +} || UnexpectedError; + +pub fn prctl(option: PR, args: anytype) PrctlError!u31 { + if (@typeInfo(@TypeOf(args)) != .Struct) + @compileError("Expected tuple or struct argument, found " ++ @typeName(@TypeOf(args))); + if (args.len > 4) + @compileError("prctl takes a maximum of 4 optional arguments"); + + var buf: [4]usize = undefined; + { + comptime var i = 0; + inline while (i < args.len) : (i += 1) buf[i] = args[i]; + } + + const rc = system.prctl(@intFromEnum(option), buf[0], buf[1], buf[2], buf[3]); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .ACCES => return error.AccessDenied, + .BADF => return error.InvalidFileDescriptor, + .FAULT => return error.InvalidAddress, + .INVAL => unreachable, + .NODEV, .NXIO => return error.UnsupportedFeature, + .OPNOTSUPP => return error.OperationNotSupported, + .PERM, .BUSY => return error.PermissionDenied, + .RANGE => unreachable, + else => |err| return unexpectedErrno(err), + } +} + +pub const GetrlimitError = UnexpectedError; + +pub fn getrlimit(resource: rlimit_resource) GetrlimitError!rlimit { + const getrlimit_sym = if (lfs64_abi) system.getrlimit64 else system.getrlimit; + + var limits: rlimit = undefined; + switch (errno(getrlimit_sym(resource, &limits))) { + .SUCCESS => return limits, + .FAULT => unreachable, // bogus pointer + .INVAL => unreachable, + else => |err| return unexpectedErrno(err), + } +} + +pub const SetrlimitError = error{ PermissionDenied, LimitTooBig } || UnexpectedError; + +pub fn setrlimit(resource: rlimit_resource, limits: rlimit) SetrlimitError!void { + const setrlimit_sym = if (lfs64_abi) system.setrlimit64 else system.setrlimit; + + switch (errno(setrlimit_sym(resource, &limits))) { + .SUCCESS => return, + .FAULT => unreachable, // bogus pointer + .INVAL => return error.LimitTooBig, // this could also mean "invalid resource", but that would be unreachable + .PERM => return error.PermissionDenied, + else => |err| return unexpectedErrno(err), + } +} + +pub const MincoreError = error{ + /// A kernel resource was temporarily unavailable. + SystemResources, + /// vec points to an invalid address. + InvalidAddress, + /// addr is not page-aligned. + InvalidSyscall, + /// One of the following: + /// * length is greater than user space TASK_SIZE - addr + /// * addr + length contains unmapped memory + OutOfMemory, + /// The mincore syscall is not available on this version and configuration + /// of this UNIX-like kernel. + MincoreUnavailable, +} || UnexpectedError; + +/// Determine whether pages are resident in memory. +pub fn mincore(ptr: [*]align(mem.page_size) u8, length: usize, vec: [*]u8) MincoreError!void { + return switch (errno(system.mincore(ptr, length, vec))) { + .SUCCESS => {}, + .AGAIN => error.SystemResources, + .FAULT => error.InvalidAddress, + .INVAL => error.InvalidSyscall, + .NOMEM => error.OutOfMemory, + .NOSYS => error.MincoreUnavailable, + else => |err| unexpectedErrno(err), + }; +} + +pub const MadviseError = error{ + /// advice is MADV.REMOVE, but the specified address range is not a shared writable mapping. + AccessDenied, + /// advice is MADV.HWPOISON, but the caller does not have the CAP_SYS_ADMIN capability. + PermissionDenied, + /// A kernel resource was temporarily unavailable. + SystemResources, + /// One of the following: + /// * addr is not page-aligned or length is negative + /// * advice is not valid + /// * advice is MADV.DONTNEED or MADV.REMOVE and the specified address range + /// includes locked, Huge TLB pages, or VM_PFNMAP pages. + /// * advice is MADV.MERGEABLE or MADV.UNMERGEABLE, but the kernel was not + /// configured with CONFIG_KSM. + /// * advice is MADV.FREE or MADV.WIPEONFORK but the specified address range + /// includes file, Huge TLB, MAP.SHARED, or VM_PFNMAP ranges. + InvalidSyscall, + /// (for MADV.WILLNEED) Paging in this area would exceed the process's + /// maximum resident set size. + WouldExceedMaximumResidentSetSize, + /// One of the following: + /// * (for MADV.WILLNEED) Not enough memory: paging in failed. + /// * Addresses in the specified range are not currently mapped, or + /// are outside the address space of the process. + OutOfMemory, + /// The madvise syscall is not available on this version and configuration + /// of the Linux kernel. + MadviseUnavailable, + /// The operating system returned an undocumented error code. + Unexpected, +}; + +/// Give advice about use of memory. +/// This syscall is optional and is sometimes configured to be disabled. +pub fn madvise(ptr: [*]align(mem.page_size) u8, length: usize, advice: u32) MadviseError!void { + switch (errno(system.madvise(ptr, length, advice))) { + .SUCCESS => return, + .ACCES => return error.AccessDenied, + .AGAIN => return error.SystemResources, + .BADF => unreachable, // The map exists, but the area maps something that isn't a file. + .INVAL => return error.InvalidSyscall, + .IO => return error.WouldExceedMaximumResidentSetSize, + .NOMEM => return error.OutOfMemory, + .NOSYS => return error.MadviseUnavailable, + else => |err| return unexpectedErrno(err), + } +} + +pub const PerfEventOpenError = error{ + /// Returned if the perf_event_attr size value is too small (smaller + /// than PERF_ATTR_SIZE_VER0), too big (larger than the page size), + /// or larger than the kernel supports and the extra bytes are not + /// zero. When E2BIG is returned, the perf_event_attr size field is + /// overwritten by the kernel to be the size of the structure it was + /// expecting. + TooBig, + /// Returned when the requested event requires CAP_SYS_ADMIN permis‐ + /// sions (or a more permissive perf_event paranoid setting). Some + /// common cases where an unprivileged process may encounter this + /// error: attaching to a process owned by a different user; moni‐ + /// toring all processes on a given CPU (i.e., specifying the pid + /// argument as -1); and not setting exclude_kernel when the para‐ + /// noid setting requires it. + /// Also: + /// Returned on many (but not all) architectures when an unsupported + /// exclude_hv, exclude_idle, exclude_user, or exclude_kernel set‐ + /// ting is specified. + /// It can also happen, as with EACCES, when the requested event re‐ + /// quires CAP_SYS_ADMIN permissions (or a more permissive + /// perf_event paranoid setting). This includes setting a break‐ + /// point on a kernel address, and (since Linux 3.13) setting a ker‐ + /// nel function-trace tracepoint. + PermissionDenied, + /// Returned if another event already has exclusive access to the + /// PMU. + DeviceBusy, + /// Each opened event uses one file descriptor. If a large number + /// of events are opened, the per-process limit on the number of + /// open file descriptors will be reached, and no more events can be + /// created. + ProcessResources, + EventRequiresUnsupportedCpuFeature, + /// Returned if you try to add more breakpoint + /// events than supported by the hardware. + TooManyBreakpoints, + /// Returned if PERF_SAMPLE_STACK_USER is set in sample_type and it + /// is not supported by hardware. + SampleStackNotSupported, + /// Returned if an event requiring a specific hardware feature is + /// requested but there is no hardware support. This includes re‐ + /// questing low-skid events if not supported, branch tracing if it + /// is not available, sampling if no PMU interrupt is available, and + /// branch stacks for software events. + EventNotSupported, + /// Returned if PERF_SAMPLE_CALLCHAIN is requested and sam‐ + /// ple_max_stack is larger than the maximum specified in + /// /proc/sys/kernel/perf_event_max_stack. + SampleMaxStackOverflow, + /// Returned if attempting to attach to a process that does not exist. + ProcessNotFound, +} || UnexpectedError; + +pub fn perf_event_open( + attr: *linux.perf_event_attr, + pid: pid_t, + cpu: i32, + group_fd: fd_t, + flags: usize, +) PerfEventOpenError!fd_t { + const rc = linux.perf_event_open(attr, pid, cpu, group_fd, flags); + switch (errno(rc)) { + .SUCCESS => return @intCast(rc), + .@"2BIG" => return error.TooBig, + .ACCES => return error.PermissionDenied, + .BADF => unreachable, // group_fd file descriptor is not valid. + .BUSY => return error.DeviceBusy, + .FAULT => unreachable, // Segmentation fault. + .INVAL => unreachable, // Bad attr settings. + .INTR => unreachable, // Mixed perf and ftrace handling for a uprobe. + .MFILE => return error.ProcessResources, + .NODEV => return error.EventRequiresUnsupportedCpuFeature, + .NOENT => unreachable, // Invalid type setting. + .NOSPC => return error.TooManyBreakpoints, + .NOSYS => return error.SampleStackNotSupported, + .OPNOTSUPP => return error.EventNotSupported, + .OVERFLOW => return error.SampleMaxStackOverflow, + .PERM => return error.PermissionDenied, + .SRCH => return error.ProcessNotFound, + else => |err| return unexpectedErrno(err), + } +} + +pub const TimerFdCreateError = error{ + AccessDenied, + ProcessFdQuotaExceeded, + SystemFdQuotaExceeded, + NoDevice, + SystemResources, +} || UnexpectedError; + +pub const TimerFdGetError = error{InvalidHandle} || UnexpectedError; +pub const TimerFdSetError = TimerFdGetError || error{Canceled}; + +pub fn timerfd_create(clokid: i32, flags: linux.TFD) TimerFdCreateError!fd_t { + const rc = linux.timerfd_create(clokid, flags); + return switch (errno(rc)) { + .SUCCESS => @intCast(rc), + .INVAL => unreachable, + .MFILE => return error.ProcessFdQuotaExceeded, + .NFILE => return error.SystemFdQuotaExceeded, + .NODEV => return error.NoDevice, + .NOMEM => return error.SystemResources, + .PERM => return error.AccessDenied, + else => |err| return unexpectedErrno(err), + }; +} + +pub fn timerfd_settime( + fd: i32, + flags: linux.TFD.TIMER, + new_value: *const linux.itimerspec, + old_value: ?*linux.itimerspec, +) TimerFdSetError!void { + const rc = linux.timerfd_settime(fd, flags, new_value, old_value); + return switch (errno(rc)) { + .SUCCESS => {}, + .BADF => error.InvalidHandle, + .FAULT => unreachable, + .INVAL => unreachable, + .CANCELED => error.Canceled, + else => |err| return unexpectedErrno(err), + }; +} + +pub fn timerfd_gettime(fd: i32) TimerFdGetError!linux.itimerspec { + var curr_value: linux.itimerspec = undefined; + const rc = linux.timerfd_gettime(fd, &curr_value); + return switch (errno(rc)) { + .SUCCESS => return curr_value, + .BADF => error.InvalidHandle, + .FAULT => unreachable, + .INVAL => unreachable, + else => |err| return unexpectedErrno(err), + }; +} + +pub const PtraceError = error{ + DeviceBusy, + InputOutput, + ProcessNotFound, + PermissionDenied, +} || UnexpectedError; + +pub fn ptrace(request: u32, pid: pid_t, addr: usize, signal: usize) PtraceError!void { + if (native_os == .windows or native_os == .wasi) + @compileError("Unsupported OS"); + + return switch (native_os) { + .linux => switch (errno(linux.ptrace(request, pid, addr, signal, 0))) { + .SUCCESS => {}, + .SRCH => error.ProcessNotFound, + .FAULT => unreachable, + .INVAL => unreachable, + .IO => return error.InputOutput, + .PERM => error.PermissionDenied, + .BUSY => error.DeviceBusy, + else => |err| return unexpectedErrno(err), + }, + + .macos, .ios, .tvos, .watchos => switch (errno(std.c.ptrace( + @intCast(request), + pid, + @ptrFromInt(addr), + @intCast(signal), + ))) { + .SUCCESS => {}, + .SRCH => error.ProcessNotFound, + .INVAL => unreachable, + .PERM => error.PermissionDenied, + .BUSY => error.DeviceBusy, + else => |err| return unexpectedErrno(err), + }, + + else => switch (errno(system.ptrace(request, pid, addr, signal))) { + .SUCCESS => {}, + .SRCH => error.ProcessNotFound, + .INVAL => unreachable, + .PERM => error.PermissionDenied, + .BUSY => error.DeviceBusy, + else => |err| return unexpectedErrno(err), + }, + }; +} + +pub const IoCtl_SIOCGIFINDEX_Error = error{ + FileSystem, + InterfaceNotFound, +} || UnexpectedError; + +pub fn ioctl_SIOCGIFINDEX(fd: fd_t, ifr: *ifreq) IoCtl_SIOCGIFINDEX_Error!void { + while (true) { + switch (errno(system.ioctl(fd, SIOCGIFINDEX, @intFromPtr(ifr)))) { + .SUCCESS => return, + .INVAL => unreachable, // Bad parameters. + .NOTTY => unreachable, + .NXIO => unreachable, + .BADF => unreachable, // Always a race condition. + .FAULT => unreachable, // Bad pointer parameter. + .INTR => continue, + .IO => return error.FileSystem, + .NODEV => return error.InterfaceNotFound, + else => |err| return unexpectedErrno(err), + } + } +} + +const lfs64_abi = native_os == .linux and builtin.link_libc and builtin.abi.isGnu(); + +/// Whether or not `error.Unexpected` will print its value and a stack trace. +/// +/// If this happens the fix is to add the error code to the corresponding +/// switch expression, possibly introduce a new error in the error set, and +/// send a patch to Zig. +pub const unexpected_error_tracing = builtin.zig_backend == .stage2_llvm and builtin.mode == .Debug; + +pub const UnexpectedError = error{ + /// The Operating System returned an undocumented error code. + /// + /// This error is in theory not possible, but it would be better + /// to handle this error than to invoke undefined behavior. + /// + /// When this error code is observed, it usually means the Zig Standard + /// Library needs a small patch to add the error code to the error set for + /// the respective function. + Unexpected, +}; + +/// Call this when you made a syscall or something that sets errno +/// and you get an unexpected error. +pub fn unexpectedErrno(err: E) UnexpectedError { + if (unexpected_error_tracing) { + std.debug.print("unexpected errno: {d}\n", .{@intFromEnum(err)}); + std.debug.dumpCurrentStackTrace(null); + } + return error.Unexpected; +} + +/// Used to convert a slice to a null terminated slice on the stack. +pub fn toPosixPath(file_path: []const u8) error{NameTooLong}![PATH_MAX - 1:0]u8 { + if (std.debug.runtime_safety) assert(mem.indexOfScalar(u8, file_path, 0) == null); + var path_with_null: [PATH_MAX - 1:0]u8 = undefined; + // >= rather than > to make room for the null byte + if (file_path.len >= PATH_MAX) return error.NameTooLong; + @memcpy(path_with_null[0..file_path.len], file_path); + path_with_null[file_path.len] = 0; + return path_with_null; +} diff --git a/lib/std/os/test.zig b/lib/std/posix/test.zig index d9f05d94ef..1020bef4b7 100644 --- a/lib/std/os/test.zig +++ b/lib/std/posix/test.zig @@ -1,5 +1,5 @@ const std = @import("../std.zig"); -const os = std.os; +const posix = std.posix; const testing = std.testing; const expect = testing.expect; const expectEqual = testing.expectEqual; @@ -10,6 +10,7 @@ const mem = std.mem; const elf = std.elf; const File = std.fs.File; const Thread = std.Thread; +const linux = std.os.linux; const a = std.testing.allocator; @@ -31,26 +32,26 @@ test "chdir smoke test" { // Get current working directory path var old_cwd_buf: [fs.MAX_PATH_BYTES]u8 = undefined; - const old_cwd = try os.getcwd(old_cwd_buf[0..]); + const old_cwd = try posix.getcwd(old_cwd_buf[0..]); { // Firstly, changing to itself should have no effect - try os.chdir(old_cwd); + try posix.chdir(old_cwd); var new_cwd_buf: [fs.MAX_PATH_BYTES]u8 = undefined; - const new_cwd = try os.getcwd(new_cwd_buf[0..]); + const new_cwd = try posix.getcwd(new_cwd_buf[0..]); try expect(mem.eql(u8, old_cwd, new_cwd)); } // Next, change current working directory to one level above if (native_os != .wasi) { // WASI does not support navigating outside of Preopens const parent = fs.path.dirname(old_cwd) orelse unreachable; // old_cwd should be absolute - try os.chdir(parent); + try posix.chdir(parent); // Restore cwd because process may have other tests that do not tolerate chdir. - defer os.chdir(old_cwd) catch unreachable; + defer posix.chdir(old_cwd) catch unreachable; var new_cwd_buf: [fs.MAX_PATH_BYTES]u8 = undefined; - const new_cwd = try os.getcwd(new_cwd_buf[0..]); + const new_cwd = try posix.getcwd(new_cwd_buf[0..]); try expect(mem.eql(u8, parent, new_cwd)); } @@ -65,10 +66,10 @@ test "chdir smoke test" { var tmp_dir = try fs.cwd().makeOpenPath("zig-test-tmp", .{}); // Change current working directory to tmp directory - try os.chdir("zig-test-tmp"); + try posix.chdir("zig-test-tmp"); var new_cwd_buf: [fs.MAX_PATH_BYTES]u8 = undefined; - const new_cwd = try os.getcwd(new_cwd_buf[0..]); + const new_cwd = try posix.getcwd(new_cwd_buf[0..]); // On Windows, fs.path.resolve returns an uppercase drive letter, but the drive letter returned by getcwd may be lowercase var resolved_cwd_buf: [fs.MAX_PATH_BYTES]u8 = undefined; @@ -80,7 +81,7 @@ test "chdir smoke test" { // Restore cwd because process may have other tests that do not tolerate chdir. tmp_dir.close(); - os.chdir(old_cwd) catch unreachable; + posix.chdir(old_cwd) catch unreachable; try fs.cwd().deleteDir("zig-test-tmp"); } } @@ -105,39 +106,39 @@ test "open smoke test" { }; var file_path: []u8 = undefined; - var fd: os.fd_t = undefined; - const mode: os.mode_t = if (native_os == .windows) 0 else 0o666; + var fd: posix.fd_t = undefined; + const mode: posix.mode_t = if (native_os == .windows) 0 else 0o666; // Create some file using `open`. file_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "some_file" }); - fd = try os.open(file_path, .{ .ACCMODE = .RDWR, .CREAT = true, .EXCL = true }, mode); - os.close(fd); + fd = try posix.open(file_path, .{ .ACCMODE = .RDWR, .CREAT = true, .EXCL = true }, mode); + posix.close(fd); // Try this again with the same flags. This op should fail with error.PathAlreadyExists. file_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "some_file" }); - try expectError(error.PathAlreadyExists, os.open(file_path, .{ .ACCMODE = .RDWR, .CREAT = true, .EXCL = true }, mode)); + try expectError(error.PathAlreadyExists, posix.open(file_path, .{ .ACCMODE = .RDWR, .CREAT = true, .EXCL = true }, mode)); // Try opening without `EXCL` flag. file_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "some_file" }); - fd = try os.open(file_path, .{ .ACCMODE = .RDWR, .CREAT = true }, mode); - os.close(fd); + fd = try posix.open(file_path, .{ .ACCMODE = .RDWR, .CREAT = true }, mode); + posix.close(fd); // Try opening as a directory which should fail. file_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "some_file" }); - try expectError(error.NotDir, os.open(file_path, .{ .ACCMODE = .RDWR, .DIRECTORY = true }, mode)); + try expectError(error.NotDir, posix.open(file_path, .{ .ACCMODE = .RDWR, .DIRECTORY = true }, mode)); // Create some directory file_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "some_dir" }); - try os.mkdir(file_path, mode); + try posix.mkdir(file_path, mode); // Open dir using `open` file_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "some_dir" }); - fd = try os.open(file_path, .{ .ACCMODE = .RDONLY, .DIRECTORY = true }, mode); - os.close(fd); + fd = try posix.open(file_path, .{ .ACCMODE = .RDONLY, .DIRECTORY = true }, mode); + posix.close(fd); // Try opening as file which should fail. file_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "some_dir" }); - try expectError(error.IsDir, os.open(file_path, .{ .ACCMODE = .RDWR }, mode)); + try expectError(error.IsDir, posix.open(file_path, .{ .ACCMODE = .RDWR }, mode)); } test "openat smoke test" { @@ -149,49 +150,49 @@ test "openat smoke test" { var tmp = tmpDir(.{}); defer tmp.cleanup(); - var fd: os.fd_t = undefined; - const mode: os.mode_t = if (native_os == .windows) 0 else 0o666; + var fd: posix.fd_t = undefined; + const mode: posix.mode_t = if (native_os == .windows) 0 else 0o666; // Create some file using `openat`. - fd = try os.openat(tmp.dir.fd, "some_file", os.CommonOpenFlags.lower(.{ + fd = try posix.openat(tmp.dir.fd, "some_file", CommonOpenFlags.lower(.{ .ACCMODE = .RDWR, .CREAT = true, .EXCL = true, }), mode); - os.close(fd); + posix.close(fd); // Try this again with the same flags. This op should fail with error.PathAlreadyExists. - try expectError(error.PathAlreadyExists, os.openat(tmp.dir.fd, "some_file", os.CommonOpenFlags.lower(.{ + try expectError(error.PathAlreadyExists, posix.openat(tmp.dir.fd, "some_file", CommonOpenFlags.lower(.{ .ACCMODE = .RDWR, .CREAT = true, .EXCL = true, }), mode)); // Try opening without `EXCL` flag. - fd = try os.openat(tmp.dir.fd, "some_file", os.CommonOpenFlags.lower(.{ + fd = try posix.openat(tmp.dir.fd, "some_file", CommonOpenFlags.lower(.{ .ACCMODE = .RDWR, .CREAT = true, }), mode); - os.close(fd); + posix.close(fd); // Try opening as a directory which should fail. - try expectError(error.NotDir, os.openat(tmp.dir.fd, "some_file", os.CommonOpenFlags.lower(.{ + try expectError(error.NotDir, posix.openat(tmp.dir.fd, "some_file", CommonOpenFlags.lower(.{ .ACCMODE = .RDWR, .DIRECTORY = true, }), mode)); // Create some directory - try os.mkdirat(tmp.dir.fd, "some_dir", mode); + try posix.mkdirat(tmp.dir.fd, "some_dir", mode); // Open dir using `open` - fd = try os.openat(tmp.dir.fd, "some_dir", os.CommonOpenFlags.lower(.{ + fd = try posix.openat(tmp.dir.fd, "some_dir", CommonOpenFlags.lower(.{ .ACCMODE = .RDONLY, .DIRECTORY = true, }), mode); - os.close(fd); + posix.close(fd); // Try opening as file which should fail. - try expectError(error.IsDir, os.openat(tmp.dir.fd, "some_dir", os.CommonOpenFlags.lower(.{ + try expectError(error.IsDir, posix.openat(tmp.dir.fd, "some_dir", CommonOpenFlags.lower(.{ .ACCMODE = .RDWR, }), mode)); } @@ -211,7 +212,7 @@ test "symlink with relative paths" { try cwd.writeFile("file.txt", "nonsense"); if (native_os == .windows) { - os.windows.CreateSymbolicLink( + std.os.windows.CreateSymbolicLink( cwd.fd, &[_]u16{ 's', 'y', 'm', 'l', 'i', 'n', 'k', 'e', 'd' }, &[_:0]u16{ 'f', 'i', 'l', 'e', '.', 't', 'x', 't' }, @@ -226,11 +227,11 @@ test "symlink with relative paths" { else => return err, }; } else { - try os.symlink("file.txt", "symlinked"); + try posix.symlink("file.txt", "symlinked"); } var buffer: [fs.MAX_PATH_BYTES]u8 = undefined; - const given = try os.readlink("symlinked", buffer[0..]); + const given = try posix.readlink("symlinked", buffer[0..]); try expect(mem.eql(u8, "file.txt", given)); try cwd.deleteFile("file.txt"); @@ -247,7 +248,7 @@ test "readlink on Windows" { fn testReadlink(target_path: []const u8, symlink_path: []const u8) !void { var buffer: [fs.MAX_PATH_BYTES]u8 = undefined; - const given = try os.readlink(symlink_path, buffer[0..]); + const given = try posix.readlink(symlink_path, buffer[0..]); try expect(mem.eql(u8, target_path, given)); } @@ -268,7 +269,7 @@ test "link with relative paths" { cwd.deleteFile("new.txt") catch {}; try cwd.writeFile("example.txt", "example"); - try os.link("example.txt", "new.txt", 0); + try posix.link("example.txt", "new.txt", 0); const efd = try cwd.openFile("example.txt", .{}); defer efd.close(); @@ -277,17 +278,17 @@ test "link with relative paths" { defer nfd.close(); { - const estat = try os.fstat(efd.handle); - const nstat = try os.fstat(nfd.handle); + const estat = try posix.fstat(efd.handle); + const nstat = try posix.fstat(nfd.handle); try testing.expectEqual(estat.ino, nstat.ino); try testing.expectEqual(@as(@TypeOf(nstat.nlink), 2), nstat.nlink); } - try os.unlink("new.txt"); + try posix.unlink("new.txt"); { - const estat = try os.fstat(efd.handle); + const estat = try posix.fstat(efd.handle); try testing.expectEqual(@as(@TypeOf(estat.nlink), 1), estat.nlink); } @@ -312,7 +313,7 @@ test "linkat with different directories" { tmp.dir.deleteFile("new.txt") catch {}; try cwd.writeFile("example.txt", "example"); - try os.linkat(cwd.fd, "example.txt", tmp.dir.fd, "new.txt", 0); + try posix.linkat(cwd.fd, "example.txt", tmp.dir.fd, "new.txt", 0); const efd = try cwd.openFile("example.txt", .{}); defer efd.close(); @@ -321,17 +322,17 @@ test "linkat with different directories" { { defer nfd.close(); - const estat = try os.fstat(efd.handle); - const nstat = try os.fstat(nfd.handle); + const estat = try posix.fstat(efd.handle); + const nstat = try posix.fstat(nfd.handle); try testing.expectEqual(estat.ino, nstat.ino); try testing.expectEqual(@as(@TypeOf(nstat.nlink), 2), nstat.nlink); } - try os.unlinkat(tmp.dir.fd, "new.txt", 0); + try posix.unlinkat(tmp.dir.fd, "new.txt", 0); { - const estat = try os.fstat(efd.handle); + const estat = try posix.fstat(efd.handle); try testing.expectEqual(@as(@TypeOf(estat.nlink), 1), estat.nlink); } @@ -351,12 +352,12 @@ test "fstatat" { // fetch file's info on the opened fd directly const file = try tmp.dir.openFile("file.txt", .{}); - const stat = try os.fstat(file.handle); + const stat = try posix.fstat(file.handle); defer file.close(); // now repeat but using `fstatat` instead - const flags = if (native_os == .wasi) 0x0 else os.AT.SYMLINK_NOFOLLOW; - const statat = try os.fstatat(tmp.dir.fd, "file.txt", flags); + const flags = if (native_os == .wasi) 0x0 else posix.AT.SYMLINK_NOFOLLOW; + const statat = try posix.fstatat(tmp.dir.fd, "file.txt", flags); try expectEqual(stat, statat); } @@ -369,7 +370,7 @@ test "readlinkat" { // create a symbolic link if (native_os == .windows) { - os.windows.CreateSymbolicLink( + std.os.windows.CreateSymbolicLink( tmp.dir.fd, &[_]u16{ 'l', 'i', 'n', 'k' }, &[_:0]u16{ 'f', 'i', 'l', 'e', '.', 't', 'x', 't' }, @@ -380,12 +381,12 @@ test "readlinkat" { else => return err, }; } else { - try os.symlinkat("file.txt", tmp.dir.fd, "link"); + try posix.symlinkat("file.txt", tmp.dir.fd, "link"); } // read the link var buffer: [fs.MAX_PATH_BYTES]u8 = undefined; - const read_link = try os.readlinkat(tmp.dir.fd, "link", buffer[0..]); + const read_link = try posix.readlinkat(tmp.dir.fd, "link", buffer[0..]); try expect(mem.eql(u8, "file.txt", read_link)); } @@ -456,8 +457,8 @@ fn testTls() !void { test "getrandom" { var buf_a: [50]u8 = undefined; var buf_b: [50]u8 = undefined; - try os.getrandom(&buf_a); - try os.getrandom(&buf_b); + try posix.getrandom(&buf_a); + try posix.getrandom(&buf_b); // If this test fails the chance is significantly higher that there is a bug than // that two sets of 50 bytes were equal. try expect(!mem.eql(u8, &buf_a, &buf_b)); @@ -466,23 +467,23 @@ test "getrandom" { test "getcwd" { // at least call it so it gets compiled var buf: [std.fs.MAX_PATH_BYTES]u8 = undefined; - _ = os.getcwd(&buf) catch undefined; + _ = posix.getcwd(&buf) catch undefined; } test "sigaltstack" { if (native_os == .windows or native_os == .wasi) return error.SkipZigTest; - var st: os.stack_t = undefined; - try os.sigaltstack(null, &st); + var st: posix.stack_t = undefined; + try posix.sigaltstack(null, &st); // Setting a stack size less than MINSIGSTKSZ returns ENOMEM st.flags = 0; st.size = 1; - try testing.expectError(error.SizeTooSmall, os.sigaltstack(&st, null)); + try testing.expectError(error.SizeTooSmall, posix.sigaltstack(&st, null)); } // If the type is not available use void to avoid erroring out when `iter_fn` is // analyzed -const dl_phdr_info = if (@hasDecl(os.system, "dl_phdr_info")) os.dl_phdr_info else anyopaque; +const dl_phdr_info = if (@hasDecl(posix.system, "dl_phdr_info")) posix.dl_phdr_info else anyopaque; const IterFnError = error{ MissingPtLoadSegment, @@ -527,7 +528,7 @@ test "dl_iterate_phdr" { if (builtin.object_format != .elf) return error.SkipZigTest; var counter: usize = 0; - try os.dl_iterate_phdr(&counter, IterFnError, iter_fn); + try posix.dl_iterate_phdr(&counter, IterFnError, iter_fn); try expect(counter != 0); } @@ -535,8 +536,8 @@ test "gethostname" { if (native_os == .windows or native_os == .wasi) return error.SkipZigTest; - var buf: [os.HOST_NAME_MAX]u8 = undefined; - const hostname = try os.gethostname(&buf); + var buf: [posix.HOST_NAME_MAX]u8 = undefined; + const hostname = try posix.gethostname(&buf); try expect(hostname.len != 0); } @@ -544,13 +545,13 @@ test "pipe" { if (native_os == .windows or native_os == .wasi) return error.SkipZigTest; - const fds = try os.pipe(); - try expect((try os.write(fds[1], "hello")) == 5); + const fds = try posix.pipe(); + try expect((try posix.write(fds[1], "hello")) == 5); var buf: [16]u8 = undefined; - try expect((try os.read(fds[0], buf[0..])) == 5); + try expect((try posix.read(fds[0], buf[0..])) == 5); try testing.expectEqualSlices(u8, buf[0..5], "hello"); - os.close(fds[1]); - os.close(fds[0]); + posix.close(fds[1]); + posix.close(fds[0]); } test "argsAlloc" { @@ -569,17 +570,17 @@ test "memfd_create" { else => return error.SkipZigTest, } - const fd = os.memfd_create("test", 0) catch |err| switch (err) { + const fd = posix.memfd_create("test", 0) catch |err| switch (err) { // Related: https://github.com/ziglang/zig/issues/4019 error.SystemOutdated => return error.SkipZigTest, else => |e| return e, }; - defer os.close(fd); - try expect((try os.write(fd, "test")) == 4); - try os.lseek_SET(fd, 0); + defer posix.close(fd); + try expect((try posix.write(fd, "test")) == 4); + try posix.lseek_SET(fd, 0); var buf: [10]u8 = undefined; - const bytes_read = try os.read(fd, &buf); + const bytes_read = try posix.read(fd, &buf); try expect(bytes_read == 4); try expect(mem.eql(u8, buf[0..4], "test")); } @@ -593,15 +594,15 @@ test "mmap" { // Simple mmap() call with non page-aligned size { - const data = try os.mmap( + const data = try posix.mmap( null, 1234, - os.PROT.READ | os.PROT.WRITE, + posix.PROT.READ | posix.PROT.WRITE, .{ .TYPE = .PRIVATE, .ANONYMOUS = true }, -1, 0, ); - defer os.munmap(data); + defer posix.munmap(data); try testing.expectEqual(@as(usize, 1234), data.len); @@ -635,15 +636,15 @@ test "mmap" { const file = try tmp.dir.openFile(test_out_file, .{}); defer file.close(); - const data = try os.mmap( + const data = try posix.mmap( null, alloc_size, - os.PROT.READ, + posix.PROT.READ, .{ .TYPE = .PRIVATE }, file.handle, 0, ); - defer os.munmap(data); + defer posix.munmap(data); var mem_stream = io.fixedBufferStream(data); const stream = mem_stream.reader(); @@ -659,15 +660,15 @@ test "mmap" { const file = try tmp.dir.openFile(test_out_file, .{}); defer file.close(); - const data = try os.mmap( + const data = try posix.mmap( null, alloc_size / 2, - os.PROT.READ, + posix.PROT.READ, .{ .TYPE = .PRIVATE }, file.handle, alloc_size / 2, ); - defer os.munmap(data); + defer posix.munmap(data); var mem_stream = io.fixedBufferStream(data); const stream = mem_stream.reader(); @@ -683,14 +684,14 @@ test "mmap" { test "getenv" { if (native_os == .wasi and !builtin.link_libc) { - // std.os.getenv is not supported on WASI due to the need of allocation + // std.posix.getenv is not supported on WASI due to the need of allocation return error.SkipZigTest; } if (native_os == .windows) { - try expect(os.getenvW(&[_:0]u16{ 'B', 'O', 'G', 'U', 'S', 0x11, 0x22, 0x33, 0x44, 0x55 }) == null); + try expect(std.process.getenvW(&[_:0]u16{ 'B', 'O', 'G', 'U', 'S', 0x11, 0x22, 0x33, 0x44, 0x55 }) == null); } else { - try expect(os.getenvZ("BOGUSDOESNOTEXISTENVVAR") == null); + try expect(posix.getenvZ("BOGUSDOESNOTEXISTENVVAR") == null); } } @@ -711,18 +712,18 @@ test "fcntl" { // Note: The test assumes createFile opens the file with CLOEXEC { - const flags = try os.fcntl(file.handle, os.F.GETFD, 0); - try expect((flags & os.FD_CLOEXEC) != 0); + const flags = try posix.fcntl(file.handle, posix.F.GETFD, 0); + try expect((flags & posix.FD_CLOEXEC) != 0); } { - _ = try os.fcntl(file.handle, os.F.SETFD, 0); - const flags = try os.fcntl(file.handle, os.F.GETFD, 0); - try expect((flags & os.FD_CLOEXEC) == 0); + _ = try posix.fcntl(file.handle, posix.F.SETFD, 0); + const flags = try posix.fcntl(file.handle, posix.F.GETFD, 0); + try expect((flags & posix.FD_CLOEXEC) == 0); } { - _ = try os.fcntl(file.handle, os.F.SETFD, os.FD_CLOEXEC); - const flags = try os.fcntl(file.handle, os.F.GETFD, 0); - try expect((flags & os.FD_CLOEXEC) != 0); + _ = try posix.fcntl(file.handle, posix.F.SETFD, posix.FD_CLOEXEC); + const flags = try posix.fcntl(file.handle, posix.F.GETFD, 0); + try expect((flags & posix.FD_CLOEXEC) != 0); } } @@ -731,7 +732,7 @@ test "signalfd" { .linux, .solaris, .illumos => {}, else => return error.SkipZigTest, } - _ = &os.signalfd; + _ = &posix.signalfd; } test "sync" { @@ -748,8 +749,8 @@ test "sync" { tmp.dir.deleteFile(test_out_file) catch {}; } - os.sync(); - try os.syncfs(file.handle); + posix.sync(); + try posix.syncfs(file.handle); } test "fsync" { @@ -768,23 +769,23 @@ test "fsync" { tmp.dir.deleteFile(test_out_file) catch {}; } - try os.fsync(file.handle); - try os.fdatasync(file.handle); + try posix.fsync(file.handle); + try posix.fdatasync(file.handle); } test "getrlimit and setrlimit" { - if (!@hasDecl(os.system, "rlimit")) { + if (!@hasDecl(posix.system, "rlimit")) { return error.SkipZigTest; } - inline for (std.meta.fields(os.rlimit_resource)) |field| { - const resource = @as(os.rlimit_resource, @enumFromInt(field.value)); - const limit = try os.getrlimit(resource); + inline for (std.meta.fields(posix.rlimit_resource)) |field| { + const resource = @as(posix.rlimit_resource, @enumFromInt(field.value)); + const limit = try posix.getrlimit(resource); // XNU kernel does not support RLIMIT_STACK if a custom stack is active, // which looks to always be the case. EINVAL is returned. // See https://github.com/apple-oss-distributions/xnu/blob/5e3eaea39dcf651e66cb99ba7d70e32cc4a99587/bsd/kern/kern_resource.c#L1173 - if (builtin.os.tag.isDarwin() and resource == .STACK) { + if (native_os.isDarwin() and resource == .STACK) { continue; } @@ -794,11 +795,11 @@ test "getrlimit and setrlimit" { // This happens for example if RLIMIT_MEMLOCK is bigger than ~2GiB. // In that case the following the limit would be RLIM_INFINITY and the following setrlimit fails with EPERM. if (comptime builtin.cpu.arch.isMIPS() and builtin.link_libc) { - if (limit.cur != os.linux.RLIM.INFINITY) { - try os.setrlimit(resource, limit); + if (limit.cur != linux.RLIM.INFINITY) { + try posix.setrlimit(resource, limit); } } else { - try os.setrlimit(resource, limit); + try posix.setrlimit(resource, limit); } } } @@ -807,15 +808,15 @@ test "shutdown socket" { if (native_os == .wasi) return error.SkipZigTest; if (native_os == .windows) { - _ = try os.windows.WSAStartup(2, 2); + _ = try std.os.windows.WSAStartup(2, 2); } defer { if (native_os == .windows) { - os.windows.WSACleanup() catch unreachable; + std.os.windows.WSACleanup() catch unreachable; } } - const sock = try os.socket(os.AF.INET, os.SOCK.STREAM, 0); - os.shutdown(sock, .both) catch |err| switch (err) { + const sock = try posix.socket(posix.AF.INET, posix.SOCK.STREAM, 0); + posix.shutdown(sock, .both) catch |err| switch (err) { error.SocketNotConnected => {}, else => |e| return e, }; @@ -838,63 +839,63 @@ test "sigaction" { const S = struct { var handler_called_count: u32 = 0; - fn handler(sig: i32, info: *const os.siginfo_t, ctx_ptr: ?*const anyopaque) callconv(.C) void { + fn handler(sig: i32, info: *const posix.siginfo_t, ctx_ptr: ?*const anyopaque) callconv(.C) void { _ = ctx_ptr; // Check that we received the correct signal. switch (native_os) { .netbsd => { - if (sig == os.SIG.USR1 and sig == info.info.signo) + if (sig == posix.SIG.USR1 and sig == info.info.signo) handler_called_count += 1; }, else => { - if (sig == os.SIG.USR1 and sig == info.signo) + if (sig == posix.SIG.USR1 and sig == info.signo) handler_called_count += 1; }, } } }; - var sa = os.Sigaction{ + var sa: posix.Sigaction = .{ .handler = .{ .sigaction = &S.handler }, - .mask = os.empty_sigset, - .flags = os.SA.SIGINFO | os.SA.RESETHAND, + .mask = posix.empty_sigset, + .flags = posix.SA.SIGINFO | posix.SA.RESETHAND, }; - var old_sa: os.Sigaction = undefined; + var old_sa: posix.Sigaction = undefined; // Install the new signal handler. - try os.sigaction(os.SIG.USR1, &sa, null); + try posix.sigaction(posix.SIG.USR1, &sa, null); // Check that we can read it back correctly. - try os.sigaction(os.SIG.USR1, null, &old_sa); + try posix.sigaction(posix.SIG.USR1, null, &old_sa); try testing.expectEqual(&S.handler, old_sa.handler.sigaction.?); - try testing.expect((old_sa.flags & os.SA.SIGINFO) != 0); + try testing.expect((old_sa.flags & posix.SA.SIGINFO) != 0); // Invoke the handler. - try os.raise(os.SIG.USR1); + try posix.raise(posix.SIG.USR1); try testing.expect(S.handler_called_count == 1); // Check if passing RESETHAND correctly reset the handler to SIG_DFL - try os.sigaction(os.SIG.USR1, null, &old_sa); - try testing.expectEqual(os.SIG.DFL, old_sa.handler.handler); + try posix.sigaction(posix.SIG.USR1, null, &old_sa); + try testing.expectEqual(posix.SIG.DFL, old_sa.handler.handler); // Reinstall the signal w/o RESETHAND and re-raise - sa.flags = os.SA.SIGINFO; - try os.sigaction(os.SIG.USR1, &sa, null); - try os.raise(os.SIG.USR1); + sa.flags = posix.SA.SIGINFO; + try posix.sigaction(posix.SIG.USR1, &sa, null); + try posix.raise(posix.SIG.USR1); try testing.expect(S.handler_called_count == 2); // Now set the signal to ignored - sa.handler = .{ .handler = os.SIG.IGN }; + sa.handler = .{ .handler = posix.SIG.IGN }; sa.flags = 0; - try os.sigaction(os.SIG.USR1, &sa, null); + try posix.sigaction(posix.SIG.USR1, &sa, null); // Re-raise to ensure handler is actually ignored - try os.raise(os.SIG.USR1); + try posix.raise(posix.SIG.USR1); try testing.expect(S.handler_called_count == 2); // Ensure that ignored state is returned when querying - try os.sigaction(os.SIG.USR1, null, &old_sa); - try testing.expectEqual(os.SIG.IGN, old_sa.handler.handler.?); + try posix.sigaction(posix.SIG.USR1, null, &old_sa); + try testing.expectEqual(posix.SIG.IGN, old_sa.handler.handler.?); } test "dup & dup2" { @@ -910,13 +911,13 @@ test "dup & dup2" { var file = try tmp.dir.createFile("os_dup_test", .{}); defer file.close(); - var duped = std.fs.File{ .handle = try os.dup(file.handle) }; + var duped = std.fs.File{ .handle = try posix.dup(file.handle) }; defer duped.close(); try duped.writeAll("dup"); // Tests aren't run in parallel so using the next fd shouldn't be an issue. const new_fd = duped.handle + 1; - try os.dup2(file.handle, new_fd); + try posix.dup2(file.handle, new_fd); var dup2ed = std.fs.File{ .handle = new_fd }; defer dup2ed.close(); try dup2ed.writeAll("dup2"); @@ -938,9 +939,9 @@ test "writev longer than IOV_MAX" { var file = try tmp.dir.createFile("pwritev", .{}); defer file.close(); - const iovecs = [_]os.iovec_const{.{ .iov_base = "a", .iov_len = 1 }} ** (os.IOV_MAX + 1); + const iovecs = [_]posix.iovec_const{.{ .iov_base = "a", .iov_len = 1 }} ** (posix.IOV_MAX + 1); const amt = try file.writev(&iovecs); - try testing.expectEqual(@as(usize, os.IOV_MAX), amt); + try testing.expectEqual(@as(usize, posix.IOV_MAX), amt); } test "POSIX file locking with fcntl" { @@ -964,46 +965,46 @@ test "POSIX file locking with fcntl" { const fd = file.handle; // Place an exclusive lock on the first byte, and a shared lock on the second byte: - var struct_flock = std.mem.zeroInit(os.Flock, .{ .type = os.F.WRLCK }); - _ = try os.fcntl(fd, os.F.SETLK, @intFromPtr(&struct_flock)); + var struct_flock = std.mem.zeroInit(posix.Flock, .{ .type = posix.F.WRLCK }); + _ = try posix.fcntl(fd, posix.F.SETLK, @intFromPtr(&struct_flock)); struct_flock.start = 1; - struct_flock.type = os.F.RDLCK; - _ = try os.fcntl(fd, os.F.SETLK, @intFromPtr(&struct_flock)); + struct_flock.type = posix.F.RDLCK; + _ = try posix.fcntl(fd, posix.F.SETLK, @intFromPtr(&struct_flock)); // Check the locks in a child process: - const pid = try os.fork(); + const pid = try posix.fork(); if (pid == 0) { // child expects be denied the exclusive lock: struct_flock.start = 0; - struct_flock.type = os.F.WRLCK; - try expectError(error.Locked, os.fcntl(fd, os.F.SETLK, @intFromPtr(&struct_flock))); + struct_flock.type = posix.F.WRLCK; + try expectError(error.Locked, posix.fcntl(fd, posix.F.SETLK, @intFromPtr(&struct_flock))); // child expects to get the shared lock: struct_flock.start = 1; - struct_flock.type = os.F.RDLCK; - _ = try os.fcntl(fd, os.F.SETLK, @intFromPtr(&struct_flock)); + struct_flock.type = posix.F.RDLCK; + _ = try posix.fcntl(fd, posix.F.SETLK, @intFromPtr(&struct_flock)); // child waits for the exclusive lock in order to test deadlock: struct_flock.start = 0; - struct_flock.type = os.F.WRLCK; - _ = try os.fcntl(fd, os.F.SETLKW, @intFromPtr(&struct_flock)); + struct_flock.type = posix.F.WRLCK; + _ = try posix.fcntl(fd, posix.F.SETLKW, @intFromPtr(&struct_flock)); // child exits without continuing: - os.exit(0); + posix.exit(0); } else { // parent waits for child to get shared lock: std.time.sleep(1 * std.time.ns_per_ms); // parent expects deadlock when attempting to upgrade the shared lock to exclusive: struct_flock.start = 1; - struct_flock.type = os.F.WRLCK; - try expectError(error.DeadLock, os.fcntl(fd, os.F.SETLKW, @intFromPtr(&struct_flock))); + struct_flock.type = posix.F.WRLCK; + try expectError(error.DeadLock, posix.fcntl(fd, posix.F.SETLKW, @intFromPtr(&struct_flock))); // parent releases exclusive lock: struct_flock.start = 0; - struct_flock.type = os.F.UNLCK; - _ = try os.fcntl(fd, os.F.SETLK, @intFromPtr(&struct_flock)); + struct_flock.type = posix.F.UNLCK; + _ = try posix.fcntl(fd, posix.F.SETLK, @intFromPtr(&struct_flock)); // parent releases shared lock: struct_flock.start = 1; - struct_flock.type = os.F.UNLCK; - _ = try os.fcntl(fd, os.F.SETLK, @intFromPtr(&struct_flock)); + struct_flock.type = posix.F.UNLCK; + _ = try posix.fcntl(fd, posix.F.SETLK, @intFromPtr(&struct_flock)); // parent waits for child: - const result = os.waitpid(pid, 0); + const result = posix.waitpid(pid, 0); try expect(result.status == 0 * 256); } } @@ -1026,43 +1027,43 @@ test "rename smoke test" { }; var file_path: []u8 = undefined; - var fd: os.fd_t = undefined; - const mode: os.mode_t = if (native_os == .windows) 0 else 0o666; + var fd: posix.fd_t = undefined; + const mode: posix.mode_t = if (native_os == .windows) 0 else 0o666; // Create some file using `open`. file_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "some_file" }); - fd = try os.open(file_path, .{ .ACCMODE = .RDWR, .CREAT = true, .EXCL = true }, mode); - os.close(fd); + fd = try posix.open(file_path, .{ .ACCMODE = .RDWR, .CREAT = true, .EXCL = true }, mode); + posix.close(fd); // Rename the file var new_file_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "some_other_file" }); - try os.rename(file_path, new_file_path); + try posix.rename(file_path, new_file_path); // Try opening renamed file file_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "some_other_file" }); - fd = try os.open(file_path, .{ .ACCMODE = .RDWR }, mode); - os.close(fd); + fd = try posix.open(file_path, .{ .ACCMODE = .RDWR }, mode); + posix.close(fd); // Try opening original file - should fail with error.FileNotFound file_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "some_file" }); - try expectError(error.FileNotFound, os.open(file_path, .{ .ACCMODE = .RDWR }, mode)); + try expectError(error.FileNotFound, posix.open(file_path, .{ .ACCMODE = .RDWR }, mode)); // Create some directory file_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "some_dir" }); - try os.mkdir(file_path, mode); + try posix.mkdir(file_path, mode); // Rename the directory new_file_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "some_other_dir" }); - try os.rename(file_path, new_file_path); + try posix.rename(file_path, new_file_path); // Try opening renamed directory file_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "some_other_dir" }); - fd = try os.open(file_path, .{ .ACCMODE = .RDONLY, .DIRECTORY = true }, mode); - os.close(fd); + fd = try posix.open(file_path, .{ .ACCMODE = .RDONLY, .DIRECTORY = true }, mode); + posix.close(fd); // Try opening original directory - should fail with error.FileNotFound file_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "some_dir" }); - try expectError(error.FileNotFound, os.open(file_path, .{ .ACCMODE = .RDONLY, .DIRECTORY = true }, mode)); + try expectError(error.FileNotFound, posix.open(file_path, .{ .ACCMODE = .RDONLY, .DIRECTORY = true }, mode)); } test "access smoke test" { @@ -1083,50 +1084,49 @@ test "access smoke test" { }; var file_path: []u8 = undefined; - var fd: os.fd_t = undefined; - const mode: os.mode_t = if (native_os == .windows) 0 else 0o666; + var fd: posix.fd_t = undefined; + const mode: posix.mode_t = if (native_os == .windows) 0 else 0o666; // Create some file using `open`. file_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "some_file" }); - fd = try os.open(file_path, .{ .ACCMODE = .RDWR, .CREAT = true, .EXCL = true }, mode); - os.close(fd); + fd = try posix.open(file_path, .{ .ACCMODE = .RDWR, .CREAT = true, .EXCL = true }, mode); + posix.close(fd); // Try to access() the file file_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "some_file" }); - if (builtin.os.tag == .windows) { - try os.access(file_path, os.F_OK); + if (native_os == .windows) { + try posix.access(file_path, posix.F_OK); } else { - try os.access(file_path, os.F_OK | os.W_OK | os.R_OK); + try posix.access(file_path, posix.F_OK | posix.W_OK | posix.R_OK); } // Try to access() a non-existent file - should fail with error.FileNotFound file_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "some_other_file" }); - try expectError(error.FileNotFound, os.access(file_path, os.F_OK)); + try expectError(error.FileNotFound, posix.access(file_path, posix.F_OK)); // Create some directory file_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "some_dir" }); - try os.mkdir(file_path, mode); + try posix.mkdir(file_path, mode); // Try to access() the directory file_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "some_dir" }); - try os.access(file_path, os.F_OK); + try posix.access(file_path, posix.F_OK); } test "timerfd" { if (native_os != .linux) return error.SkipZigTest; - const linux = os.linux; - const tfd = try os.timerfd_create(linux.CLOCK.MONOTONIC, .{ .CLOEXEC = true }); - defer os.close(tfd); + const tfd = try posix.timerfd_create(linux.CLOCK.MONOTONIC, .{ .CLOEXEC = true }); + defer posix.close(tfd); - // Fire event 10_000_000ns = 10ms after the os.timerfd_settime call. + // Fire event 10_000_000ns = 10ms after the posix.timerfd_settime call. var sit: linux.itimerspec = .{ .it_interval = .{ .tv_sec = 0, .tv_nsec = 0 }, .it_value = .{ .tv_sec = 0, .tv_nsec = 10 * (1000 * 1000) } }; - try os.timerfd_settime(tfd, .{}, &sit, null); + try posix.timerfd_settime(tfd, .{}, &sit, null); - var fds: [1]os.pollfd = .{.{ .fd = tfd, .events = os.linux.POLL.IN, .revents = 0 }}; - try expectEqual(@as(usize, 1), try os.poll(&fds, -1)); // -1 => infinite waiting + var fds: [1]posix.pollfd = .{.{ .fd = tfd, .events = linux.POLL.IN, .revents = 0 }}; + try expectEqual(@as(usize, 1), try posix.poll(&fds, -1)); // -1 => infinite waiting - const git = try os.timerfd_gettime(tfd); + const git = try posix.timerfd_gettime(tfd); const expect_disarmed_timer: linux.itimerspec = .{ .it_interval = .{ .tv_sec = 0, .tv_nsec = 0 }, .it_value = .{ .tv_sec = 0, .tv_nsec = 0 } }; try expectEqual(expect_disarmed_timer, git); } @@ -1138,7 +1138,7 @@ test "isatty" { var file = try tmp.dir.createFile("foo", .{}); defer file.close(); - try expectEqual(os.isatty(file.handle), false); + try expectEqual(posix.isatty(file.handle), false); } test "read with empty buffer" { @@ -1163,7 +1163,7 @@ test "read with empty buffer" { const bytes = try allocator.alloc(u8, 0); - _ = try os.read(file.handle, bytes); + _ = try posix.read(file.handle, bytes); } test "pread with empty buffer" { @@ -1188,7 +1188,7 @@ test "pread with empty buffer" { const bytes = try allocator.alloc(u8, 0); - _ = try os.pread(file.handle, bytes, 0); + _ = try posix.pread(file.handle, bytes, 0); } test "write with empty buffer" { @@ -1213,7 +1213,7 @@ test "write with empty buffer" { const bytes = try allocator.alloc(u8, 0); - _ = try os.write(file.handle, bytes); + _ = try posix.write(file.handle, bytes); } test "pwrite with empty buffer" { @@ -1238,11 +1238,11 @@ test "pwrite with empty buffer" { const bytes = try allocator.alloc(u8, 0); - _ = try os.pwrite(file.handle, bytes, 0); + _ = try posix.pwrite(file.handle, bytes, 0); } -fn expectMode(dir: os.fd_t, file: []const u8, mode: os.mode_t) !void { - const st = try os.fstatat(dir, file, os.AT.SYMLINK_NOFOLLOW); +fn expectMode(dir: posix.fd_t, file: []const u8, mode: posix.mode_t) !void { + const st = try posix.fstatat(dir, file, posix.AT.SYMLINK_NOFOLLOW); try expectEqual(mode, st.mode & 0b111_111_111); } @@ -1252,31 +1252,31 @@ test "fchmodat smoke test" { var tmp = tmpDir(.{}); defer tmp.cleanup(); - try expectError(error.FileNotFound, os.fchmodat(tmp.dir.fd, "regfile", 0o666, 0)); - const fd = try os.openat( + try expectError(error.FileNotFound, posix.fchmodat(tmp.dir.fd, "regfile", 0o666, 0)); + const fd = try posix.openat( tmp.dir.fd, "regfile", .{ .ACCMODE = .WRONLY, .CREAT = true, .EXCL = true, .TRUNC = true }, 0o644, ); - os.close(fd); - try os.symlinkat("regfile", tmp.dir.fd, "symlink"); + posix.close(fd); + try posix.symlinkat("regfile", tmp.dir.fd, "symlink"); const sym_mode = blk: { - const st = try os.fstatat(tmp.dir.fd, "symlink", os.AT.SYMLINK_NOFOLLOW); + const st = try posix.fstatat(tmp.dir.fd, "symlink", posix.AT.SYMLINK_NOFOLLOW); break :blk st.mode & 0b111_111_111; }; - try os.fchmodat(tmp.dir.fd, "regfile", 0o640, 0); + try posix.fchmodat(tmp.dir.fd, "regfile", 0o640, 0); try expectMode(tmp.dir.fd, "regfile", 0o640); - try os.fchmodat(tmp.dir.fd, "regfile", 0o600, os.AT.SYMLINK_NOFOLLOW); + try posix.fchmodat(tmp.dir.fd, "regfile", 0o600, posix.AT.SYMLINK_NOFOLLOW); try expectMode(tmp.dir.fd, "regfile", 0o600); - try os.fchmodat(tmp.dir.fd, "symlink", 0o640, 0); + try posix.fchmodat(tmp.dir.fd, "symlink", 0o640, 0); try expectMode(tmp.dir.fd, "regfile", 0o640); try expectMode(tmp.dir.fd, "symlink", sym_mode); var test_link = true; - os.fchmodat(tmp.dir.fd, "symlink", 0o600, os.AT.SYMLINK_NOFOLLOW) catch |err| switch (err) { + posix.fchmodat(tmp.dir.fd, "symlink", 0o600, posix.AT.SYMLINK_NOFOLLOW) catch |err| switch (err) { error.OperationNotSupported => test_link = false, else => |e| return e, }; @@ -1284,3 +1284,34 @@ test "fchmodat smoke test" { try expectMode(tmp.dir.fd, "symlink", 0o600); try expectMode(tmp.dir.fd, "regfile", 0o640); } + +const CommonOpenFlags = packed struct { + ACCMODE: posix.ACCMODE = .RDONLY, + CREAT: bool = false, + EXCL: bool = false, + LARGEFILE: bool = false, + DIRECTORY: bool = false, + CLOEXEC: bool = false, + NONBLOCK: bool = false, + + pub fn lower(cof: CommonOpenFlags) posix.O { + if (native_os == .wasi) return .{ + .read = cof.ACCMODE != .WRONLY, + .write = cof.ACCMODE != .RDONLY, + .CREAT = cof.CREAT, + .EXCL = cof.EXCL, + .DIRECTORY = cof.DIRECTORY, + .NONBLOCK = cof.NONBLOCK, + }; + var result: posix.O = .{ + .ACCMODE = cof.ACCMODE, + .CREAT = cof.CREAT, + .EXCL = cof.EXCL, + .DIRECTORY = cof.DIRECTORY, + .NONBLOCK = cof.NONBLOCK, + .CLOEXEC = cof.CLOEXEC, + }; + if (@hasField(posix.O, "LARGEFILE")) result.LARGEFILE = cof.LARGEFILE; + return result; + } +}; diff --git a/lib/std/process.zig b/lib/std/process.zig index 5360a96521..b72c1963f5 100644 --- a/lib/std/process.zig +++ b/lib/std/process.zig @@ -1,6 +1,5 @@ const std = @import("std.zig"); const builtin = @import("builtin"); -const os = std.os; const fs = std.fs; const mem = std.mem; const math = std.math; @@ -8,20 +7,27 @@ const Allocator = mem.Allocator; const assert = std.debug.assert; const testing = std.testing; const child_process = @import("child_process.zig"); +const native_os = builtin.os.tag; +const posix = std.posix; +const windows = std.os.windows; pub const Child = child_process.ChildProcess; -pub const abort = os.abort; -pub const exit = os.exit; -pub const changeCurDir = os.chdir; -pub const changeCurDirC = os.chdirC; +pub const abort = posix.abort; +pub const exit = posix.exit; +pub const changeCurDir = posix.chdir; +pub const changeCurDirC = posix.chdirC; + +pub const GetCwdError = posix.GetCwdError; /// The result is a slice of `out_buffer`, from index `0`. /// On Windows, the result is encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). /// On other platforms, the result is an opaque sequence of bytes with no particular encoding. pub fn getCwd(out_buffer: []u8) ![]u8 { - return os.getcwd(out_buffer); + return posix.getcwd(out_buffer); } +pub const GetCwdAllocError = Allocator.Error || posix.GetCwdError; + /// Caller must free the returned memory. /// On Windows, the result is encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). /// On other platforms, the result is an opaque sequence of bytes with no particular encoding. @@ -34,7 +40,7 @@ pub fn getCwdAlloc(allocator: Allocator) ![]u8 { var current_buf: []u8 = &stack_buf; while (true) { - if (os.getcwd(current_buf)) |slice| { + if (posix.getcwd(current_buf)) |slice| { return allocator.dupe(u8, slice); } else |err| switch (err) { error.NameTooLong => { @@ -51,7 +57,7 @@ pub fn getCwdAlloc(allocator: Allocator) ![]u8 { } test getCwdAlloc { - if (builtin.os.tag == .wasi) return error.SkipZigTest; + if (native_os == .wasi) return error.SkipZigTest; const cwd = try getCwdAlloc(testing.allocator); testing.allocator.free(cwd); @@ -72,13 +78,13 @@ pub const EnvMap = struct { pub const EnvNameHashContext = struct { fn upcase(c: u21) u21 { if (c <= std.math.maxInt(u16)) - return std.os.windows.ntdll.RtlUpcaseUnicodeChar(@as(u16, @intCast(c))); + return windows.ntdll.RtlUpcaseUnicodeChar(@as(u16, @intCast(c))); return c; } pub fn hash(self: @This(), s: []const u8) u64 { _ = self; - if (builtin.os.tag == .windows) { + if (native_os == .windows) { var h = std.hash.Wyhash.init(0); var it = std.unicode.Wtf8View.initUnchecked(s).iterator(); while (it.nextCodepoint()) |cp| { @@ -96,7 +102,7 @@ pub const EnvMap = struct { pub fn eql(self: @This(), a: []const u8, b: []const u8) bool { _ = self; - if (builtin.os.tag == .windows) { + if (native_os == .windows) { var it_a = std.unicode.Wtf8View.initUnchecked(a).iterator(); var it_b = std.unicode.Wtf8View.initUnchecked(b).iterator(); while (true) { @@ -228,7 +234,7 @@ test "EnvMap" { try testing.expectEqual(@as(EnvMap.Size, 2), env.count()); // case insensitivity on Windows only - if (builtin.os.tag == .windows) { + if (native_os == .windows) { try testing.expectEqualStrings("1", env.get("something_New_aNd_LONGER").?); } else { try testing.expect(null == env.get("something_New_aNd_LONGER")); @@ -248,7 +254,7 @@ test "EnvMap" { try testing.expectEqual(@as(EnvMap.Size, 1), env.count()); - if (builtin.os.tag == .windows) { + if (native_os == .windows) { // test Unicode case-insensitivity on Windows try env.put("КИРиллИЦА", "something else"); try testing.expectEqualStrings("something else", env.get("кириллица").?); @@ -279,8 +285,8 @@ pub fn getEnvMap(allocator: Allocator) GetEnvMapError!EnvMap { var result = EnvMap.init(allocator); errdefer result.deinit(); - if (builtin.os.tag == .windows) { - const ptr = os.windows.peb().ProcessParameters.Environment; + if (native_os == .windows) { + const ptr = windows.peb().ProcessParameters.Environment; var i: usize = 0; while (ptr[i] != 0) { @@ -310,13 +316,13 @@ pub fn getEnvMap(allocator: Allocator) GetEnvMapError!EnvMap { try result.putMove(key, value); } return result; - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { + } else if (native_os == .wasi and !builtin.link_libc) { var environ_count: usize = undefined; var environ_buf_size: usize = undefined; - const environ_sizes_get_ret = os.wasi.environ_sizes_get(&environ_count, &environ_buf_size); + const environ_sizes_get_ret = std.os.wasi.environ_sizes_get(&environ_count, &environ_buf_size); if (environ_sizes_get_ret != .SUCCESS) { - return os.unexpectedErrno(environ_sizes_get_ret); + return posix.unexpectedErrno(environ_sizes_get_ret); } if (environ_count == 0) { @@ -328,9 +334,9 @@ pub fn getEnvMap(allocator: Allocator) GetEnvMapError!EnvMap { const environ_buf = try allocator.alloc(u8, environ_buf_size); defer allocator.free(environ_buf); - const environ_get_ret = os.wasi.environ_get(environ.ptr, environ_buf.ptr); + const environ_get_ret = std.os.wasi.environ_get(environ.ptr, environ_buf.ptr); if (environ_get_ret != .SUCCESS) { - return os.unexpectedErrno(environ_get_ret); + return posix.unexpectedErrno(environ_get_ret); } for (environ) |env| { @@ -356,7 +362,7 @@ pub fn getEnvMap(allocator: Allocator) GetEnvMapError!EnvMap { } return result; } else { - for (os.environ) |line| { + for (std.os.environ) |line| { var line_i: usize = 0; while (line[line_i] != 0 and line[line_i] != '=') : (line_i += 1) {} const key = line[0..line_i]; @@ -391,37 +397,37 @@ pub const GetEnvVarOwnedError = error{ /// On Windows, the value is encoded as [WTF-8](https://simonsapin.github.io/wtf-8/). /// On other platforms, the value is an opaque sequence of bytes with no particular encoding. pub fn getEnvVarOwned(allocator: Allocator, key: []const u8) GetEnvVarOwnedError![]u8 { - if (builtin.os.tag == .windows) { + if (native_os == .windows) { const result_w = blk: { var stack_alloc = std.heap.stackFallback(256 * @sizeOf(u16), allocator); const stack_allocator = stack_alloc.get(); const key_w = try std.unicode.wtf8ToWtf16LeAllocZ(stack_allocator, key); defer stack_allocator.free(key_w); - break :blk std.os.getenvW(key_w) orelse return error.EnvironmentVariableNotFound; + break :blk getenvW(key_w) orelse return error.EnvironmentVariableNotFound; }; // wtf16LeToWtf8Alloc can only fail with OutOfMemory return std.unicode.wtf16LeToWtf8Alloc(allocator, result_w); - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { + } else if (native_os == .wasi and !builtin.link_libc) { var envmap = getEnvMap(allocator) catch return error.OutOfMemory; defer envmap.deinit(); const val = envmap.get(key) orelse return error.EnvironmentVariableNotFound; return allocator.dupe(u8, val); } else { - const result = os.getenv(key) orelse return error.EnvironmentVariableNotFound; + const result = posix.getenv(key) orelse return error.EnvironmentVariableNotFound; return allocator.dupe(u8, result); } } /// On Windows, `key` must be valid UTF-8. pub fn hasEnvVarConstant(comptime key: []const u8) bool { - if (builtin.os.tag == .windows) { + if (native_os == .windows) { const key_w = comptime std.unicode.utf8ToUtf16LeStringLiteral(key); - return std.os.getenvW(key_w) != null; - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { + return getenvW(key_w) != null; + } else if (native_os == .wasi and !builtin.link_libc) { @compileError("hasEnvVarConstant is not supported for WASI without libc"); } else { - return os.getenv(key) != null; + return posix.getenv(key) != null; } } @@ -436,19 +442,63 @@ pub const HasEnvVarError = error{ /// On Windows, if `key` is not valid [WTF-8](https://simonsapin.github.io/wtf-8/), /// then `error.InvalidWtf8` is returned. pub fn hasEnvVar(allocator: Allocator, key: []const u8) HasEnvVarError!bool { - if (builtin.os.tag == .windows) { + if (native_os == .windows) { var stack_alloc = std.heap.stackFallback(256 * @sizeOf(u16), allocator); const stack_allocator = stack_alloc.get(); const key_w = try std.unicode.wtf8ToWtf16LeAllocZ(stack_allocator, key); defer stack_allocator.free(key_w); - return std.os.getenvW(key_w) != null; - } else if (builtin.os.tag == .wasi and !builtin.link_libc) { + return getenvW(key_w) != null; + } else if (native_os == .wasi and !builtin.link_libc) { var envmap = getEnvMap(allocator) catch return error.OutOfMemory; defer envmap.deinit(); return envmap.getPtr(key) != null; } else { - return os.getenv(key) != null; + return posix.getenv(key) != null; + } +} + +/// Windows-only. Get an environment variable with a null-terminated, WTF-16 encoded name. +/// +/// This function performs a Unicode-aware case-insensitive lookup using RtlEqualUnicodeString. +/// +/// See also: +/// * `std.posix.getenv` +/// * `getEnvMap` +/// * `getEnvVarOwned` +/// * `hasEnvVarConstant` +/// * `hasEnvVar` +pub fn getenvW(key: [*:0]const u16) ?[:0]const u16 { + if (native_os != .windows) { + @compileError("Windows-only"); + } + const key_slice = mem.sliceTo(key, 0); + const ptr = windows.peb().ProcessParameters.Environment; + var i: usize = 0; + while (ptr[i] != 0) { + const key_start = i; + + // There are some special environment variables that start with =, + // so we need a special case to not treat = as a key/value separator + // if it's the first character. + // https://devblogs.microsoft.com/oldnewthing/20100506-00/?p=14133 + if (ptr[key_start] == '=') i += 1; + + while (ptr[i] != 0 and ptr[i] != '=') : (i += 1) {} + const this_key = ptr[key_start..i]; + + if (ptr[i] == '=') i += 1; + + const value_start = i; + while (ptr[i] != 0) : (i += 1) {} + const this_value = ptr[value_start..i :0]; + + if (windows.eqlIgnoreCaseWTF16(key_slice, this_key)) { + return this_value; + } + + i += 1; // skip over null byte } + return null; } test getEnvVarOwned { @@ -459,7 +509,7 @@ test getEnvVarOwned { } test hasEnvVarConstant { - if (builtin.os.tag == .wasi and !builtin.link_libc) return error.SkipZigTest; + if (native_os == .wasi and !builtin.link_libc) return error.SkipZigTest; try testing.expect(!hasEnvVarConstant("BADENV")); } @@ -478,14 +528,14 @@ pub const ArgIteratorPosix = struct { pub fn init() ArgIteratorPosix { return ArgIteratorPosix{ .index = 0, - .count = os.argv.len, + .count = std.os.argv.len, }; } pub fn next(self: *ArgIteratorPosix) ?[:0]const u8 { if (self.index == self.count) return null; - const s = os.argv[self.index]; + const s = std.os.argv[self.index]; self.index += 1; return mem.sliceTo(s, 0); } @@ -503,7 +553,7 @@ pub const ArgIteratorWasi = struct { index: usize, args: [][:0]u8, - pub const InitError = error{OutOfMemory} || os.UnexpectedError; + pub const InitError = error{OutOfMemory} || posix.UnexpectedError; /// You must call deinit to free the internal buffer of the /// iterator after you are done. @@ -517,13 +567,12 @@ pub const ArgIteratorWasi = struct { } fn internalInit(allocator: Allocator) InitError![][:0]u8 { - const w = os.wasi; var count: usize = undefined; var buf_size: usize = undefined; - switch (w.args_sizes_get(&count, &buf_size)) { + switch (std.os.wasi.args_sizes_get(&count, &buf_size)) { .SUCCESS => {}, - else => |err| return os.unexpectedErrno(err), + else => |err| return posix.unexpectedErrno(err), } if (count == 0) { @@ -535,9 +584,9 @@ pub const ArgIteratorWasi = struct { const argv_buf = try allocator.alloc(u8, buf_size); - switch (w.args_get(argv.ptr, argv_buf.ptr)) { + switch (std.os.wasi.args_get(argv.ptr, argv_buf.ptr)) { .SUCCESS => {}, - else => |err| return os.unexpectedErrno(err), + else => |err| return posix.unexpectedErrno(err), } var result_args = try allocator.alloc([:0]u8, count); @@ -1007,7 +1056,7 @@ pub fn ArgIteratorGeneral(comptime options: ArgIteratorGeneralOptions) type { /// Cross-platform command line argument iterator. pub const ArgIterator = struct { - const InnerType = switch (builtin.os.tag) { + const InnerType = switch (native_os) { .windows => ArgIteratorWindows, .wasi => if (builtin.link_libc) ArgIteratorPosix else ArgIteratorWasi, else => ArgIteratorPosix, @@ -1018,10 +1067,10 @@ pub const ArgIterator = struct { /// Initialize the args iterator. Consider using initWithAllocator() instead /// for cross-platform compatibility. pub fn init() ArgIterator { - if (builtin.os.tag == .wasi) { + if (native_os == .wasi) { @compileError("In WASI, use initWithAllocator instead."); } - if (builtin.os.tag == .windows) { + if (native_os == .windows) { @compileError("In Windows, use initWithAllocator instead."); } @@ -1032,11 +1081,11 @@ pub const ArgIterator = struct { /// You must deinitialize iterator's internal buffers by calling `deinit` when done. pub fn initWithAllocator(allocator: Allocator) InitError!ArgIterator { - if (builtin.os.tag == .wasi and !builtin.link_libc) { + if (native_os == .wasi and !builtin.link_libc) { return ArgIterator{ .inner = try InnerType.init(allocator) }; } - if (builtin.os.tag == .windows) { - const cmd_line_w = os.windows.kernel32.GetCommandLineW(); + if (native_os == .windows) { + const cmd_line_w = windows.kernel32.GetCommandLineW(); return ArgIterator{ .inner = try InnerType.init(allocator, cmd_line_w) }; } @@ -1061,11 +1110,11 @@ pub const ArgIterator = struct { /// was created with `initWithAllocator` function. pub fn deinit(self: *ArgIterator) void { // Unless we're targeting WASI or Windows, this is a no-op. - if (builtin.os.tag == .wasi and !builtin.link_libc) { + if (native_os == .wasi and !builtin.link_libc) { self.inner.deinit(); } - if (builtin.os.tag == .windows) { + if (native_os == .windows) { self.inner.deinit(); } } @@ -1334,13 +1383,13 @@ fn testResponseFileCmdLine(input_cmd_line: []const u8, expected_args: []const [] } pub const UserInfo = struct { - uid: os.uid_t, - gid: os.gid_t, + uid: posix.uid_t, + gid: posix.gid_t, }; /// POSIX function which gets a uid from username. pub fn getUserInfo(name: []const u8) !UserInfo { - return switch (builtin.os.tag) { + return switch (native_os) { .linux, .macos, .watchos, @@ -1376,8 +1425,8 @@ pub fn posixGetUserInfo(name: []const u8) !UserInfo { var buf: [std.mem.page_size]u8 = undefined; var name_index: usize = 0; var state = State.Start; - var uid: os.uid_t = 0; - var gid: os.gid_t = 0; + var uid: posix.uid_t = 0; + var gid: posix.gid_t = 0; while (true) { const amt_read = try reader.read(buf[0..]); @@ -1462,36 +1511,36 @@ pub fn posixGetUserInfo(name: []const u8) !UserInfo { } pub fn getBaseAddress() usize { - switch (builtin.os.tag) { + switch (native_os) { .linux => { - const base = os.system.getauxval(std.elf.AT_BASE); + const base = std.os.linux.getauxval(std.elf.AT_BASE); if (base != 0) { return base; } - const phdr = os.system.getauxval(std.elf.AT_PHDR); + const phdr = std.os.linux.getauxval(std.elf.AT_PHDR); return phdr - @sizeOf(std.elf.Ehdr); }, .macos, .freebsd, .netbsd => { return @intFromPtr(&std.c._mh_execute_header); }, - .windows => return @intFromPtr(os.windows.kernel32.GetModuleHandleW(null)), + .windows => return @intFromPtr(windows.kernel32.GetModuleHandleW(null)), else => @compileError("Unsupported OS"), } } /// Tells whether calling the `execv` or `execve` functions will be a compile error. -pub const can_execv = switch (builtin.os.tag) { +pub const can_execv = switch (native_os) { .windows, .haiku, .wasi => false, else => true, }; /// Tells whether spawning child processes is supported (e.g. via ChildProcess) -pub const can_spawn = switch (builtin.os.tag) { +pub const can_spawn = switch (native_os) { .wasi, .watchos, .tvos => false, else => true, }; -pub const ExecvError = std.os.ExecveError || error{OutOfMemory}; +pub const ExecvError = std.posix.ExecveError || error{OutOfMemory}; /// Replaces the current process image with the executed process. /// This function must allocate memory to add a null terminating bytes on path and each arg. @@ -1500,7 +1549,7 @@ pub const ExecvError = std.os.ExecveError || error{OutOfMemory}; /// `argv[0]` is the executable path. /// This function also uses the PATH environment variable to get the full path to the executable. /// Due to the heap-allocation, it is illegal to call this function in a fork() child. -/// For that use case, use the `std.os` functions directly. +/// For that use case, use the `std.posix` functions directly. pub fn execv(allocator: Allocator, argv: []const []const u8) ExecvError { return execve(allocator, argv, null); } @@ -1512,7 +1561,7 @@ pub fn execv(allocator: Allocator, argv: []const []const u8) ExecvError { /// `argv[0]` is the executable path. /// This function also uses the PATH environment variable to get the full path to the executable. /// Due to the heap-allocation, it is illegal to call this function in a fork() child. -/// For that use case, use the `std.os` functions directly. +/// For that use case, use the `std.posix` functions directly. pub fn execve( allocator: Allocator, argv: []const []const u8, @@ -1536,14 +1585,14 @@ pub fn execve( } else if (builtin.output_mode == .Exe) { // Then we have Zig start code and this works. // TODO type-safety for null-termination of `os.environ`. - break :m @as([*:null]const ?[*:0]const u8, @ptrCast(os.environ.ptr)); + break :m @as([*:null]const ?[*:0]const u8, @ptrCast(std.os.environ.ptr)); } else { // TODO come up with a solution for this. @compileError("missing std lib enhancement: std.process.execv implementation has no way to collect the environment variables to forward to the child process"); } }; - return os.execvpeZ_expandArg0(.no_expand, argv_buf.ptr[0].?, argv_buf.ptr, envp); + return posix.execvpeZ_expandArg0(.no_expand, argv_buf.ptr[0].?, argv_buf.ptr, envp); } pub const TotalSystemMemoryError = error{ @@ -1555,14 +1604,14 @@ pub const TotalSystemMemoryError = error{ /// and Linux's /proc/meminfo reporting more memory when /// using QEMU user mode emulation. pub fn totalSystemMemory() TotalSystemMemoryError!u64 { - switch (builtin.os.tag) { + switch (native_os) { .linux => { return totalSystemMemoryLinux() catch return error.UnknownTotalSystemMemory; }, .freebsd => { var physmem: c_ulong = undefined; var len: usize = @sizeOf(c_ulong); - os.sysctlbynameZ("hw.physmem", &physmem, &len, null, 0) catch |err| switch (err) { + posix.sysctlbynameZ("hw.physmem", &physmem, &len, null, 0) catch |err| switch (err) { error.NameTooLong, error.UnknownName => unreachable, else => return error.UnknownTotalSystemMemory, }; @@ -1570,12 +1619,12 @@ pub fn totalSystemMemory() TotalSystemMemoryError!u64 { }, .openbsd => { const mib: [2]c_int = [_]c_int{ - std.os.CTL.HW, - std.os.HW.PHYSMEM64, + posix.CTL.HW, + posix.HW.PHYSMEM64, }; var physmem: i64 = undefined; var len: usize = @sizeOf(@TypeOf(physmem)); - std.os.sysctl(&mib, &physmem, &len, null, 0) catch |err| switch (err) { + posix.sysctl(&mib, &physmem, &len, null, 0) catch |err| switch (err) { error.NameTooLong => unreachable, // constant, known good value error.PermissionDenied => unreachable, // only when setting values, error.SystemResources => unreachable, // memory already on the stack @@ -1586,11 +1635,11 @@ pub fn totalSystemMemory() TotalSystemMemoryError!u64 { return @as(u64, @bitCast(physmem)); }, .windows => { - var sbi: std.os.windows.SYSTEM_BASIC_INFORMATION = undefined; - const rc = std.os.windows.ntdll.NtQuerySystemInformation( + var sbi: windows.SYSTEM_BASIC_INFORMATION = undefined; + const rc = windows.ntdll.NtQuerySystemInformation( .SystemBasicInformation, &sbi, - @sizeOf(std.os.windows.SYSTEM_BASIC_INFORMATION), + @sizeOf(windows.SYSTEM_BASIC_INFORMATION), null, ); if (rc != .SUCCESS) { diff --git a/lib/std/start.zig b/lib/std/start.zig index 49695a3a25..3a2b0714f7 100644 --- a/lib/std/start.zig +++ b/lib/std/start.zig @@ -407,7 +407,7 @@ fn posixCallMainAndExit() callconv(.C) noreturn { // FIXME: Make __aeabi_read_tp call the kernel helper kuser_get_tls // For the time being use a simple abort instead of a @panic call to // keep the binary bloat under control. - std.os.abort(); + std.posix.abort(); } } @@ -422,7 +422,7 @@ fn posixCallMainAndExit() callconv(.C) noreturn { expandStackSize(phdrs); } - std.os.exit(callMainWithArgs(argc, argv, envp)); + std.posix.exit(callMainWithArgs(argc, argv, envp)); } fn expandStackSize(phdrs: []elf.Phdr) void { @@ -432,13 +432,13 @@ fn expandStackSize(phdrs: []elf.Phdr) void { assert(phdr.p_memsz % std.mem.page_size == 0); // Silently fail if we are unable to get limits. - const limits = std.os.getrlimit(.STACK) catch break; + const limits = std.posix.getrlimit(.STACK) catch break; // Clamp to limits.max . const wanted_stack_size = @min(phdr.p_memsz, limits.max); if (wanted_stack_size > limits.cur) { - std.os.setrlimit(.STACK, .{ + std.posix.setrlimit(.STACK, .{ .cur = wanted_stack_size, .max = limits.max, }) catch { @@ -464,7 +464,7 @@ inline fn callMainWithArgs(argc: usize, argv: [*][*:0]u8, envp: [][*:0]u8) u8 { std.os.environ = envp; std.debug.maybeEnableSegfaultHandler(); - std.os.maybeIgnoreSigpipe(); + maybeIgnoreSigpipe(); return callMain(); } @@ -563,3 +563,38 @@ pub fn call_wWinMain() std.os.windows.INT { // second parameter hPrevInstance, MSDN: "This parameter is always NULL" return root.wWinMain(hInstance, null, lpCmdLine, nCmdShow); } + +fn maybeIgnoreSigpipe() void { + const have_sigpipe_support = switch (builtin.os.tag) { + .linux, + .plan9, + .solaris, + .netbsd, + .openbsd, + .haiku, + .macos, + .ios, + .watchos, + .tvos, + .dragonfly, + .freebsd, + => true, + + else => false, + }; + + if (have_sigpipe_support and !std.options.keep_sigpipe) { + const posix = std.posix; + const act: posix.Sigaction = .{ + // Set handler to a noop function instead of `SIG.IGN` to prevent + // leaking signal disposition to a child process. + .handler = .{ .handler = noopSigHandler }, + .mask = posix.empty_sigset, + .flags = 0, + }; + posix.sigaction(posix.SIG.PIPE, &act, null) catch |err| + std.debug.panic("failed to set noop SIGPIPE handler: {s}", .{@errorName(err)}); + } +} + +fn noopSigHandler(_: c_int) callconv(.C) void {} diff --git a/lib/std/std.zig b/lib/std/std.zig index 557b320c24..8aa12ff31a 100644 --- a/lib/std/std.zig +++ b/lib/std/std.zig @@ -85,12 +85,11 @@ pub const math = @import("math.zig"); pub const mem = @import("mem.zig"); pub const meta = @import("meta.zig"); pub const net = @import("net.zig"); -pub const posix = @import("os.zig"); -/// Non-portable Operating System-specific API. pub const os = @import("os.zig"); pub const once = @import("once.zig").once; pub const packed_int_array = @import("packed_int_array.zig"); pub const pdb = @import("pdb.zig"); +pub const posix = @import("posix.zig"); pub const process = @import("process.zig"); /// Deprecated: use `Random` instead. pub const rand = Random; @@ -170,3 +169,7 @@ comptime { test { testing.refAllDecls(@This()); } + +comptime { + debug.assert(@import("std") == @This()); // std lib tests require --zig-lib-dir +} diff --git a/lib/std/time.zig b/lib/std/time.zig index 425e028e01..3a4be673cc 100644 --- a/lib/std/time.zig +++ b/lib/std/time.zig @@ -2,8 +2,9 @@ const std = @import("std.zig"); const builtin = @import("builtin"); const assert = std.debug.assert; const testing = std.testing; -const os = std.os; const math = std.math; +const windows = std.os.windows; +const posix = std.posix; pub const epoch = @import("time/epoch.zig"); @@ -11,8 +12,8 @@ pub const epoch = @import("time/epoch.zig"); pub fn sleep(nanoseconds: u64) void { if (builtin.os.tag == .windows) { const big_ms_from_ns = nanoseconds / ns_per_ms; - const ms = math.cast(os.windows.DWORD, big_ms_from_ns) orelse math.maxInt(os.windows.DWORD); - os.windows.kernel32.Sleep(ms); + const ms = math.cast(windows.DWORD, big_ms_from_ns) orelse math.maxInt(windows.DWORD); + windows.kernel32.Sleep(ms); return; } @@ -40,7 +41,7 @@ pub fn sleep(nanoseconds: u64) void { } if (builtin.os.tag == .uefi) { - const boot_services = os.uefi.system_table.boot_services.?; + const boot_services = std.os.uefi.system_table.boot_services.?; const us_from_ns = nanoseconds / ns_per_us; const us = math.cast(usize, us_from_ns) orelse math.maxInt(usize); _ = boot_services.stall(us); @@ -49,7 +50,7 @@ pub fn sleep(nanoseconds: u64) void { const s = nanoseconds / ns_per_s; const ns = nanoseconds % ns_per_s; - std.os.nanosleep(s, ns); + posix.nanosleep(s, ns); } test "sleep" { @@ -60,7 +61,7 @@ test "sleep" { /// Precision of timing depends on the hardware and operating system. /// The return value is signed because it is possible to have a date that is /// before the epoch. -/// See `std.os.clock_gettime` for a POSIX timestamp. +/// See `posix.clock_gettime` for a POSIX timestamp. pub fn timestamp() i64 { return @divFloor(milliTimestamp(), ms_per_s); } @@ -69,7 +70,7 @@ pub fn timestamp() i64 { /// Precision of timing depends on the hardware and operating system. /// The return value is signed because it is possible to have a date that is /// before the epoch. -/// See `std.os.clock_gettime` for a POSIX timestamp. +/// See `posix.clock_gettime` for a POSIX timestamp. pub fn milliTimestamp() i64 { return @as(i64, @intCast(@divFloor(nanoTimestamp(), ns_per_ms))); } @@ -78,7 +79,7 @@ pub fn milliTimestamp() i64 { /// Precision of timing depends on the hardware and operating system. /// The return value is signed because it is possible to have a date that is /// before the epoch. -/// See `std.os.clock_gettime` for a POSIX timestamp. +/// See `posix.clock_gettime` for a POSIX timestamp. pub fn microTimestamp() i64 { return @as(i64, @intCast(@divFloor(nanoTimestamp(), ns_per_us))); } @@ -88,21 +89,21 @@ pub fn microTimestamp() i64 { /// On Windows this has a maximum granularity of 100 nanoseconds. /// The return value is signed because it is possible to have a date that is /// before the epoch. -/// See `std.os.clock_gettime` for a POSIX timestamp. +/// See `posix.clock_gettime` for a POSIX timestamp. pub fn nanoTimestamp() i128 { switch (builtin.os.tag) { .windows => { // FileTime has a granularity of 100 nanoseconds and uses the NTFS/Windows epoch, // which is 1601-01-01. const epoch_adj = epoch.windows * (ns_per_s / 100); - var ft: os.windows.FILETIME = undefined; - os.windows.kernel32.GetSystemTimeAsFileTime(&ft); + var ft: windows.FILETIME = undefined; + windows.kernel32.GetSystemTimeAsFileTime(&ft); const ft64 = (@as(u64, ft.dwHighDateTime) << 32) | ft.dwLowDateTime; return @as(i128, @as(i64, @bitCast(ft64)) + epoch_adj) * 100; }, .wasi => { - var ns: os.wasi.timestamp_t = undefined; - const err = os.wasi.clock_time_get(.REALTIME, 1, &ns); + var ns: std.os.wasi.timestamp_t = undefined; + const err = std.os.wasi.clock_time_get(.REALTIME, 1, &ns); assert(err == .SUCCESS); return ns; }, @@ -113,8 +114,8 @@ pub fn nanoTimestamp() i128 { return value.toEpoch(); }, else => { - var ts: os.timespec = undefined; - os.clock_gettime(os.CLOCK.REALTIME, &ts) catch |err| switch (err) { + var ts: posix.timespec = undefined; + posix.clock_gettime(posix.CLOCK.REALTIME, &ts) catch |err| switch (err) { error.UnsupportedClock, error.Unexpected => return 0, // "Precision of timing depends on hardware and OS". }; return (@as(i128, ts.tv_sec) * ns_per_s) + ts.tv_nsec; @@ -172,7 +173,7 @@ pub const s_per_week = s_per_day * 7; /// It also tries to be monotonic, but this is not a guarantee due to OS/hardware bugs. /// If you need monotonic readings for elapsed time, consider `Timer` instead. pub const Instant = struct { - timestamp: if (is_posix) os.timespec else u64, + timestamp: if (is_posix) posix.timespec else u64, // true if we should use clock_gettime() const is_posix = switch (builtin.os.tag) { @@ -188,11 +189,11 @@ pub const Instant = struct { const clock_id = switch (builtin.os.tag) { .windows => { // QPC on windows doesn't fail on >= XP/2000 and includes time suspended. - return Instant{ .timestamp = os.windows.QueryPerformanceCounter() }; + return Instant{ .timestamp = windows.QueryPerformanceCounter() }; }, .wasi => { - var ns: os.wasi.timestamp_t = undefined; - const rc = os.wasi.clock_time_get(.MONOTONIC, 1, &ns); + var ns: std.os.wasi.timestamp_t = undefined; + const rc = std.os.wasi.clock_time_get(.MONOTONIC, 1, &ns); if (rc != .SUCCESS) return error.Unsupported; return .{ .timestamp = ns }; }, @@ -204,21 +205,21 @@ pub const Instant = struct { }, // On darwin, use UPTIME_RAW instead of MONOTONIC as it ticks while // suspended. - .macos, .ios, .tvos, .watchos => os.CLOCK.UPTIME_RAW, + .macos, .ios, .tvos, .watchos => posix.CLOCK.UPTIME_RAW, // On freebsd derivatives, use MONOTONIC_FAST as currently there's // no precision tradeoff. - .freebsd, .dragonfly => os.CLOCK.MONOTONIC_FAST, + .freebsd, .dragonfly => posix.CLOCK.MONOTONIC_FAST, // On linux, use BOOTTIME instead of MONOTONIC as it ticks while // suspended. - .linux => os.CLOCK.BOOTTIME, + .linux => posix.CLOCK.BOOTTIME, // On other posix systems, MONOTONIC is generally the fastest and // ticks while suspended. - else => os.CLOCK.MONOTONIC, + else => posix.CLOCK.MONOTONIC, }; - var ts: os.timespec = undefined; - os.clock_gettime(clock_id, &ts) catch return error.Unsupported; - return Instant{ .timestamp = ts }; + var ts: posix.timespec = undefined; + posix.clock_gettime(clock_id, &ts) catch return error.Unsupported; + return .{ .timestamp = ts }; } /// Quickly compares two instances between each other. @@ -245,7 +246,7 @@ pub const Instant = struct { // https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/ntddk/ns-ntddk-kuser_shared_data // https://www.geoffchappell.com/studies/windows/km/ntoskrnl/inc/api/ntexapi_x/kuser_shared_data/index.htm const qpc = self.timestamp - earlier.timestamp; - const qpf = os.windows.QueryPerformanceFrequency(); + const qpf = windows.QueryPerformanceFrequency(); // 10Mhz (1 qpc tick every 100ns) is a common enough QPF value that we can optimize on it. // https://github.com/microsoft/STL/blob/785143a0c73f030238ef618890fd4d6ae2b3a3a0/stl/inc/chrono#L694-L701 diff --git a/lib/std/zig.zig b/lib/std/zig.zig index ce446e59b6..0b2b29eebf 100644 --- a/lib/std/zig.zig +++ b/lib/std/zig.zig @@ -1002,7 +1002,7 @@ pub const EnvVar = enum { } pub fn getPosix(comptime ev: EnvVar) ?[:0]const u8 { - return std.os.getenvZ(@tagName(ev)); + return std.posix.getenvZ(@tagName(ev)); } }; diff --git a/lib/std/zig/Server.zig b/lib/std/zig/Server.zig index d112adf45f..bf5fdba231 100644 --- a/lib/std/zig/Server.zig +++ b/lib/std/zig/Server.zig @@ -146,7 +146,7 @@ pub fn serveMessage( header: OutMessage.Header, bufs: []const []const u8, ) !void { - var iovecs: [10]std.os.iovec_const = undefined; + var iovecs: [10]std.posix.iovec_const = undefined; const header_le = bswap(header); iovecs[0] = .{ .iov_base = @as([*]const u8, @ptrCast(&header_le)), diff --git a/lib/std/zig/system.zig b/lib/std/zig/system.zig index 3599488dca..b7a5284be9 100644 --- a/lib/std/zig/system.zig +++ b/lib/std/zig/system.zig @@ -168,7 +168,7 @@ pub fn resolveTargetQuery(query: Target.Query) DetectError!Target { if (query.os_tag == null) { switch (builtin.target.os.tag) { .linux => { - const uts = std.os.uname(); + const uts = posix.uname(); const release = mem.sliceTo(&uts.release, 0); // The release field sometimes has a weird format, // `Version.parse` will attempt to find some meaningful interpretation. @@ -181,7 +181,7 @@ pub fn resolveTargetQuery(query: Target.Query) DetectError!Target { } }, .solaris, .illumos => { - const uts = std.os.uname(); + const uts = posix.uname(); const release = mem.sliceTo(&uts.release, 0); if (std.SemanticVersion.parse(release)) |ver| { os.version_range.semver.min = ver; @@ -206,7 +206,7 @@ pub fn resolveTargetQuery(query: Target.Query) DetectError!Target { var value: u32 = undefined; var len: usize = @sizeOf(@TypeOf(value)); - std.os.sysctlbynameZ(key, &value, &len, null, 0) catch |err| switch (err) { + posix.sysctlbynameZ(key, &value, &len, null, 0) catch |err| switch (err) { error.NameTooLong => unreachable, // constant, known good value error.PermissionDenied => unreachable, // only when setting values, error.SystemResources => unreachable, // memory already on the stack @@ -257,15 +257,15 @@ pub fn resolveTargetQuery(query: Target.Query) DetectError!Target { }, .openbsd => { const mib: [2]c_int = [_]c_int{ - std.os.CTL.KERN, - std.os.KERN.OSRELEASE, + posix.CTL.KERN, + posix.KERN.OSRELEASE, }; var buf: [64]u8 = undefined; // consider that sysctl result includes null-termination // reserve 1 byte to ensure we never overflow when appending ".0" var len: usize = buf.len - 1; - std.os.sysctl(&mib, &buf, &len, null, 0) catch |err| switch (err) { + posix.sysctl(&mib, &buf, &len, null, 0) catch |err| switch (err) { error.NameTooLong => unreachable, // constant, known good value error.PermissionDenied => unreachable, // only when setting values, error.SystemResources => unreachable, // memory already on the stack @@ -636,8 +636,8 @@ pub fn abiAndDynamicLinkerFromFile( // So far, no luck. Next we try to see if the information is // present in the symlink data for the dynamic linker path. - var link_buf: [std.os.PATH_MAX]u8 = undefined; - const link_name = std.os.readlink(dl_path, &link_buf) catch |err| switch (err) { + var link_buf: [posix.PATH_MAX]u8 = undefined; + const link_name = posix.readlink(dl_path, &link_buf) catch |err| switch (err) { error.NameTooLong => unreachable, error.InvalidUtf8 => unreachable, // WASI only error.InvalidWtf8 => unreachable, // Windows only @@ -670,7 +670,7 @@ pub fn abiAndDynamicLinkerFromFile( // Nothing worked so far. Finally we fall back to hard-coded search paths. // Some distros such as Debian keep their libc.so.6 in `/lib/$triple/`. - var path_buf: [std.os.PATH_MAX]u8 = undefined; + var path_buf: [posix.PATH_MAX]u8 = undefined; var index: usize = 0; const prefix = "/lib/"; const cpu_arch = @tagName(result.cpu.arch); @@ -1138,6 +1138,7 @@ const fs = std.fs; const assert = std.debug.assert; const Target = std.Target; const native_endian = builtin.cpu.arch.endian(); +const posix = std.posix; test { _ = NativePaths; diff --git a/lib/std/zig/system/NativePaths.zig b/lib/std/zig/system/NativePaths.zig index 1d3ce10d9b..9d9ab22812 100644 --- a/lib/std/zig/system/NativePaths.zig +++ b/lib/std/zig/system/NativePaths.zig @@ -137,21 +137,21 @@ pub fn detect(arena: Allocator, native_target: std.Target) !NativePaths { // variables to search for headers and libraries. // We use os.getenv here since this part won't be executed on // windows, to get rid of unnecessary error handling. - if (std.os.getenv("C_INCLUDE_PATH")) |c_include_path| { + if (std.posix.getenv("C_INCLUDE_PATH")) |c_include_path| { var it = mem.tokenizeScalar(u8, c_include_path, ':'); while (it.next()) |dir| { try self.addIncludeDir(dir); } } - if (std.os.getenv("CPLUS_INCLUDE_PATH")) |cplus_include_path| { + if (std.posix.getenv("CPLUS_INCLUDE_PATH")) |cplus_include_path| { var it = mem.tokenizeScalar(u8, cplus_include_path, ':'); while (it.next()) |dir| { try self.addIncludeDir(dir); } } - if (std.os.getenv("LIBRARY_PATH")) |library_path| { + if (std.posix.getenv("LIBRARY_PATH")) |library_path| { var it = mem.tokenizeScalar(u8, library_path, ':'); while (it.next()) |dir| { try self.addLibDir(dir); diff --git a/lib/std/zig/system/darwin/macos.zig b/lib/std/zig/system/darwin/macos.zig index c4feb7a35b..3b27c2f8cf 100644 --- a/lib/std/zig/system/darwin/macos.zig +++ b/lib/std/zig/system/darwin/macos.zig @@ -3,7 +3,6 @@ const builtin = @import("builtin"); const assert = std.debug.assert; const mem = std.mem; const testing = std.testing; -const os = std.os; const Target = std.Target; @@ -397,7 +396,7 @@ test "detect" { pub fn detectNativeCpuAndFeatures() ?Target.Cpu { var cpu_family: std.c.CPUFAMILY = undefined; var len: usize = @sizeOf(std.c.CPUFAMILY); - os.sysctlbynameZ("hw.cpufamily", &cpu_family, &len, null, 0) catch |err| switch (err) { + std.posix.sysctlbynameZ("hw.cpufamily", &cpu_family, &len, null, 0) catch |err| switch (err) { error.NameTooLong => unreachable, // constant, known good value error.PermissionDenied => unreachable, // only when setting values, error.SystemResources => unreachable, // memory already on the stack |
