<PackageReference Include="System.Drawing.Common" Version="10.0.0-preview.3.25173.2" />

PWSTR

struct PWSTR : IEquatable<PWSTR>
using System; using System.CodeDom.Compiler; using System.Diagnostics; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Windows.Win32.Foundation { [DebuggerDisplay("{Value}")] [GeneratedCode("Microsoft.Windows.CsWin32", "0.3.151+58e949951d.RR")] internal readonly struct PWSTR : IEquatable<PWSTR> { internal unsafe readonly char* Value; internal unsafe int StringListLength { get { char* ptr = Value; if (ptr == null) return 0; for (; *ptr != 0 || ptr[1] != 0; ptr++) { } return checked((int)(ptr - Value)); } } public unsafe bool IsNull => Value == null; internal unsafe int Length => new PCWSTR(Value).Length; private string DebuggerDisplay => ToString(); [NullableContext(2)] public unsafe string ToStringAndCoTaskMemFree() { if (Value == null) return null; string result = new string(Value); Marshal.FreeCoTaskMem((IntPtr)Value); return result; } internal unsafe PWSTR(char* value) { Value = value; } internal unsafe PWSTR(IntPtr value) { this = new PWSTR((char*)(long)value); } public unsafe static implicit operator char*(PWSTR value) { return value.Value; } public unsafe static implicit operator PWSTR(char* value) { return new PWSTR(value); } public unsafe static bool operator ==(PWSTR left, PWSTR right) { return left.Value == right.Value; } public static bool operator !=(PWSTR left, PWSTR right) { return !(left == right); } public unsafe bool Equals(PWSTR other) { return Value == other.Value; } public override bool Equals(object obj) { if (obj is PWSTR) { PWSTR other = (PWSTR)obj; return Equals(other); } return false; } public unsafe override int GetHashCode() { return (int)Value; } public unsafe override string ToString() { return new PCWSTR(Value).ToString(); } public unsafe static implicit operator PCWSTR(PWSTR value) { return new PCWSTR(value.Value); } internal unsafe Span<char> AsSpan() { if (Value != null) return new Span<char>(Value, Length); return default(Span<char>); } } }