216 references to SAFEARRAY
System.Private.Windows.Core (31)
Windows\Win32\System\Com\SAFEARRAY.cs (2)
27
public static
SAFEARRAY
* CreateEmpty(VARENUM arrayType)
63
fixed (
SAFEARRAY
* pThis = &this)
Windows\Win32\System\Com\SafeArrayScope.cs (20)
10
/// Helper to scope lifetime of a <see cref="
SAFEARRAY
"/> created via
12
/// Destroys the <see cref="
SAFEARRAY
"/> (if any) when disposed. Note that this scope currently only works for a
13
/// one dimensional <see cref="
SAFEARRAY
"/>.
17
/// Use in a <see langword="using" /> statement to ensure the <see cref="
SAFEARRAY
"/> gets disposed.
20
/// If the <see cref="
SAFEARRAY
"/> you are intending to scope the lifetime of has type <see cref="VARENUM.VT_UNKNOWN"/>,
28
public
SAFEARRAY
* Value => (
SAFEARRAY
*)_value;
30
public SafeArrayScope(
SAFEARRAY
* value)
144
/// A copy will be made of anything that is put into the <see cref="
SAFEARRAY
"/>
145
/// and anything the <see cref="
SAFEARRAY
"/> gives out is a copy and has been add ref appropriately if applicable.
146
/// Be sure to dispose of items that are given to the <see cref="
SAFEARRAY
"/> if necessary. All
147
/// items given out by the <see cref="
SAFEARRAY
"/> should be disposed.
225
PInvokeCore.SafeArrayPutElement((
SAFEARRAY
*)_value, pIndices, value).ThrowOnFailure();
237
SAFEARRAY
* safeArray = (
SAFEARRAY
*)_value;
250
public static explicit operator VARIANT(in SafeArrayScope<T> scope) => new() { vt = VARENUM.VT_ARRAY | scope.Value->VarType, data = new() { parray = (
SAFEARRAY
*)scope._value } };
252
public static implicit operator
SAFEARRAY
*(in SafeArrayScope<T> scope) => (
SAFEARRAY
*)scope._value;
257
public static implicit operator
SAFEARRAY
**(in SafeArrayScope<T> scope) => (
SAFEARRAY
**)Unsafe.AsPointer(ref Unsafe.AsRef(in scope._value));
Windows\Win32\System\Variant\VARIANT.cs (9)
106
return ToArray(*(
SAFEARRAY
**)data, vt);
247
private static Array? ToArray(
SAFEARRAY
* psa, VARENUM vt)
439
private static void TransposeArray(
SAFEARRAY
* psa, Array array, VARENUM arrayType)
451
static void StackTransposeArray(
SAFEARRAY
* psa, Array array, VARENUM arrayType)
459
static void HeapTransposeArray(
SAFEARRAY
* psa, Array array, VARENUM arrayType)
467
static void InternalTransposeArray(
SAFEARRAY
* psa, Array array, VARENUM arrayType, Span<int> indices, Span<int> lower, Span<int> upper)
504
private static void SetArrayValue(
SAFEARRAY
* psa, Array array, Span<int> indices, Span<int> lowerBounds, VARENUM arrayType)
621
private static Array CreateArrayFromSafeArray(
SAFEARRAY
* psa, VARENUM vt)
738
return (uint)sizeof(
SAFEARRAY
*);
System.Windows.Forms (33)
System\Windows\Forms\Accessibility\AccessibleObject.cs (18)
790
internal virtual HRESULT GetTextSelection(
SAFEARRAY
** pRetVal) => HRESULT.E_NOTIMPL;
792
internal virtual HRESULT GetTextVisibleRanges(
SAFEARRAY
** pRetVal) => HRESULT.E_NOTIMPL;
936
HRESULT IAccessibleEx.Interface.GetRuntimeId(
SAFEARRAY
** pRetVal)
1039
HRESULT IRawElementProviderFragment.Interface.GetRuntimeId(
SAFEARRAY
** pRetVal)
1068
HRESULT IRawElementProviderFragment.Interface.GetEmbeddedFragmentRoots(
SAFEARRAY
** pRetVal)
1271
HRESULT ILegacyIAccessibleProvider.Interface.GetSelection(
SAFEARRAY
** pvarSelectedChildren)
1280
*pvarSelectedChildren =
SAFEARRAY
.CreateEmpty(VARENUM.VT_UNKNOWN);
1336
HRESULT ITextProvider.Interface.GetSelection(
SAFEARRAY
** pRetVal) => GetTextSelection(pRetVal);
1338
HRESULT ITextProvider.Interface.GetVisibleRanges(
SAFEARRAY
** pRetVal) => GetTextVisibleRanges(pRetVal);
1350
HRESULT ITextProvider2.Interface.GetSelection(
SAFEARRAY
** pRetVal) => GetTextSelection(pRetVal);
1352
HRESULT ITextProvider2.Interface.GetVisibleRanges(
SAFEARRAY
** pRetVal) => GetTextVisibleRanges(pRetVal);
1412
HRESULT ITableProvider.Interface.GetRowHeaders(
SAFEARRAY
** pRetVal)
1427
HRESULT ITableProvider.Interface.GetColumnHeaders(
SAFEARRAY
** pRetVal)
1453
HRESULT ITableItemProvider.Interface.GetRowHeaderItems(
SAFEARRAY
** pRetVal)
1468
HRESULT ITableItemProvider.Interface.GetColumnHeaderItems(
SAFEARRAY
** pRetVal)
3020
HRESULT IMultipleViewProvider.Interface.GetSupportedViews(
SAFEARRAY
** pRetVal)
3029
*pRetVal = result is null ?
SAFEARRAY
.CreateEmpty(VARENUM.VT_I4) : new SafeArrayScope<int>(result);
3123
HRESULT ISelectionProvider.Interface.GetSelection(
SAFEARRAY
** pRetVal)
System\Windows\Forms\Accessibility\LabelEditAccessibleObject.cs (2)
85
internal override HRESULT GetTextSelection(
SAFEARRAY
** pRetVal)
88
internal override HRESULT GetTextVisibleRanges(
SAFEARRAY
** pRetVal)
System\Windows\Forms\Accessibility\LabelEditUiaTextProvider.cs (2)
149
public override HRESULT GetSelection(
SAFEARRAY
** pRetVal)
204
public override HRESULT GetVisibleRanges(
SAFEARRAY
** pRetVal)
System\Windows\Forms\Controls\ComboBox\ComboBox.ComboBoxChildEditUiaProvider.cs (2)
109
internal override unsafe HRESULT GetTextSelection(
SAFEARRAY
** pRetVal) => _textProvider.GetSelection(pRetVal);
111
internal override unsafe HRESULT GetTextVisibleRanges(
SAFEARRAY
** pRetVal) => _textProvider.GetVisibleRanges(pRetVal);
System\Windows\Forms\Controls\ComboBox\ComboBox.ComboBoxUiaTextProvider.cs (3)
204
public override HRESULT GetSelection(
SAFEARRAY
** pRetVal)
265
public override HRESULT GetVisibleRanges(
SAFEARRAY
** pRetVal)
274
*pRetVal =
SAFEARRAY
.CreateEmpty(VARENUM.VT_UNKNOWN);
System\Windows\Forms\Controls\TextBox\TextBoxBase.TextBoxBaseAccessibleObject.cs (2)
100
internal override HRESULT GetTextSelection(
SAFEARRAY
** pRetVal)
103
internal override HRESULT GetTextVisibleRanges(
SAFEARRAY
** pRetVal)
System\Windows\Forms\Controls\TextBox\TextBoxBase.TextBoxBaseUiaTextProvider.cs (4)
25
public override HRESULT GetSelection(
SAFEARRAY
** pRetVal)
34
*pRetVal =
SAFEARRAY
.CreateEmpty(VARENUM.VT_UNKNOWN);
56
public override HRESULT GetVisibleRanges(
SAFEARRAY
** pRetVal)
65
*pRetVal =
SAFEARRAY
.CreateEmpty(VARENUM.VT_UNKNOWN);
System.Windows.Forms.Primitives (19)
Interop\UiaCore\Interop.StubFragmentRoot.cs (2)
55
HRESULT IRawElementProviderFragment.Interface.GetRuntimeId(
SAFEARRAY
** pRetVal)
77
HRESULT IRawElementProviderFragment.Interface.GetEmbeddedFragmentRoots(
SAFEARRAY
** pRetVal)
System\Windows\Forms\Automation\UiaTextProvider.cs (3)
19
public abstract HRESULT GetSelection(
SAFEARRAY
** pRetVal);
21
public abstract HRESULT GetVisibleRanges(
SAFEARRAY
** pRetVal);
85
return new(
SAFEARRAY
.CreateEmpty(VARENUM.VT_R8));
System\Windows\Forms\Automation\UiaTextRange.cs (5)
327
HRESULT ITextRangeProvider.Interface.GetBoundingRectangles(
SAFEARRAY
** pRetVal)
341
*pRetVal =
SAFEARRAY
.CreateEmpty(VARENUM.VT_R8);
374
*pRetVal =
SAFEARRAY
.CreateEmpty(VARENUM.VT_R8);
630
HRESULT ITextRangeProvider.Interface.GetChildren(
SAFEARRAY
** pRetVal)
637
*pRetVal =
SAFEARRAY
.CreateEmpty(VARENUM.VT_UNKNOWN);
Windows\Win32\System\Com\ComSafeArrayScope.cs (9)
9
/// Helper to scope lifetime of a <see cref="
SAFEARRAY
"/> created via
11
/// that holds COM pointers. Destroys the <see cref="
SAFEARRAY
"/> (if any) when disposed. Note that this scope
12
/// currently only works for a one dimensional <see cref="
SAFEARRAY
"/> of type <see cref="VARENUM.VT_UNKNOWN"/>
16
/// Use in a <see langword="using" /> statement to ensure the <see cref="
SAFEARRAY
"/> gets disposed.
23
public ComSafeArrayScope(
SAFEARRAY
* value)
46
/// The <see cref="
SAFEARRAY
"/> will ref count the COM pointer on get/put.
47
/// Be sure to release of COM pointers that are given to/from the <see cref="
SAFEARRAY
"/>.
70
public static implicit operator
SAFEARRAY
**(in ComSafeArrayScope<T> scope) => scope._value;
72
public static implicit operator
SAFEARRAY
*(in ComSafeArrayScope<T> scope) => scope._value;
System.Windows.Forms.Primitives.Tests (133)
Interop\Oleaut32\SAFEARRAYTests.cs (11)
25
Assert.Equal(24, Marshal.SizeOf<
SAFEARRAY
>());
26
Assert.Equal(24, sizeof(
SAFEARRAY
));
37
Assert.Equal(32, Marshal.SizeOf<
SAFEARRAY
>());
38
Assert.Equal(32, sizeof(
SAFEARRAY
));
60
SAFEARRAY
* psa = PInvokeCore.SafeArrayCreate((VARENUM)vt, 1, &saBound);
96
SAFEARRAY
* psa = PInvokeCore.SafeArrayCreateEx(VT_RECORD, 1, &saBound, recordInfo);
185
SAFEARRAY
* psa = PInvokeCore.SafeArrayCreate((VARENUM)vt, 2, saBounds);
221
SAFEARRAY
* psa = PInvokeCore.SafeArrayCreate(VT_I4, 1, &saBound);
268
SAFEARRAY
* psa = PInvokeCore.SafeArrayCreate(VT_I4, 1, &saBound);
322
SAFEARRAY
* psa = PInvokeCore.SafeArrayCreate(VT_I4, 2, saBounds);
376
SAFEARRAY
* psa = PInvokeCore.SafeArrayCreate(VT_I4, 2, saBounds);
Interop\Oleaut32\VARIANTTests.cs (110)
1997
SAFEARRAY
* psa = CreateSafeArray(VT_UI1, result);
2019
SAFEARRAY
* psa = CreateSafeArray(VT_UI1, result, 1);
2137
SAFEARRAY
* psa = CreateSafeArray(VT_I1, result);
2164
SAFEARRAY
* psa = CreateSafeArray(VT_I1, result, 1, 2);
2190
SAFEARRAY
* psa = CreateSafeArray(VT_I2, result);
2215
SAFEARRAY
* psa = CreateSafeArray(VT_I2, result, 1);
2252
SAFEARRAY
* psa = CreateSafeArray(VT_I2, result);
2279
SAFEARRAY
* psa = CreateSafeArray(VT_I2, result, 1, 2);
2305
SAFEARRAY
* psa = CreateSafeArray(VT_UI2, result);
2330
SAFEARRAY
* psa = CreateSafeArray(VT_UI2, result, 1);
2367
SAFEARRAY
* psa = CreateSafeArray(VT_UI2, result);
2394
SAFEARRAY
* psa = CreateSafeArray(VT_UI2, result, 1, 2);
2420
SAFEARRAY
* psa = CreateSafeArray(VT_I4, result);
2445
SAFEARRAY
* psa = CreateSafeArray(VT_I4, result, 1);
2482
SAFEARRAY
* psa = CreateSafeArray(VT_I4, result);
2509
SAFEARRAY
* psa = CreateSafeArray(VT_I4, result, 1, 2);
2535
SAFEARRAY
* psa = CreateSafeArray(VT_INT, result);
2560
SAFEARRAY
* psa = CreateSafeArray(VT_INT, result, 1);
2584
SAFEARRAY
* psa = CreateSafeArray(VT_INT, result);
2611
SAFEARRAY
* psa = CreateSafeArray(VT_INT, result, 1, 2);
2637
SAFEARRAY
* psa = CreateSafeArray(VT_UI4, result);
2662
SAFEARRAY
* psa = CreateSafeArray(VT_UI4, result, 1);
2699
SAFEARRAY
* psa = CreateSafeArray(VT_UI4, result);
2726
SAFEARRAY
* psa = CreateSafeArray(VT_UI4, result, 1, 2);
2752
SAFEARRAY
* psa = CreateSafeArray(VT_UINT, result);
2777
SAFEARRAY
* psa = CreateSafeArray(VT_UINT, result, 1);
2801
SAFEARRAY
* psa = CreateSafeArray(VT_UINT, result);
2828
SAFEARRAY
* psa = CreateSafeArray(VT_UINT, result, 1, 2);
2854
SAFEARRAY
* psa = CreateSafeArray(VT_INT, result);
2879
SAFEARRAY
* psa = CreateSafeArray(VT_INT, result, 1);
2916
SAFEARRAY
* psa = CreateSafeArray(VT_INT, result);
2943
SAFEARRAY
* psa = CreateSafeArray(VT_INT, result, 1, 2);
2969
SAFEARRAY
* psa = CreateSafeArray(VT_I4, result);
2994
SAFEARRAY
* psa = CreateSafeArray(VT_I4, result, 1);
3018
SAFEARRAY
* psa = CreateSafeArray(VT_I4, result);
3045
SAFEARRAY
* psa = CreateSafeArray(VT_I4, result, 1, 2);
3071
SAFEARRAY
* psa = CreateSafeArray(VT_UINT, result);
3096
SAFEARRAY
* psa = CreateSafeArray(VT_UINT, result, 1);
3133
SAFEARRAY
* psa = CreateSafeArray(VT_UINT, result);
3160
SAFEARRAY
* psa = CreateSafeArray(VT_UINT, result, 1, 2);
3186
SAFEARRAY
* psa = CreateSafeArray(VT_UI4, result);
3211
SAFEARRAY
* psa = CreateSafeArray(VT_UI4, result, 1);
3235
SAFEARRAY
* psa = CreateSafeArray(VT_UI4, result);
3262
SAFEARRAY
* psa = CreateSafeArray(VT_UI4, result, 1, 2);
3288
SAFEARRAY
* psa = CreateSafeArray(VT_I8, result);
3313
SAFEARRAY
* psa = CreateSafeArray(VT_I8, result, 1);
3350
SAFEARRAY
* psa = CreateSafeArray(VT_I8, result);
3377
SAFEARRAY
* psa = CreateSafeArray(VT_I8, result, 1, 2);
3403
SAFEARRAY
* psa = CreateSafeArray(VT_UI8, result);
3427
SAFEARRAY
* psa = CreateSafeArray(VT_UI8, result, 1);
3464
SAFEARRAY
* psa = CreateSafeArray(VT_UI8, result);
3491
SAFEARRAY
* psa = CreateSafeArray(VT_UI8, result, 1, 2);
3517
SAFEARRAY
* psa = CreateSafeArray(VT_R4, result);
3542
SAFEARRAY
* psa = CreateSafeArray(VT_R4, result, 1);
3579
SAFEARRAY
* psa = CreateSafeArray(VT_R4, result);
3606
SAFEARRAY
* psa = CreateSafeArray(VT_R4, result, 1, 2);
3632
SAFEARRAY
* psa = CreateSafeArray(VT_R8, result);
3657
SAFEARRAY
* psa = CreateSafeArray(VT_R8, result, 1);
3694
SAFEARRAY
* psa = CreateSafeArray(VT_R8, result);
3721
SAFEARRAY
* psa = CreateSafeArray(VT_R8, result, 1, 2);
3747
SAFEARRAY
* psa = CreateSafeArray(VT_ERROR, result);
3772
SAFEARRAY
* psa = CreateSafeArray(VT_ERROR, result, 1);
3809
SAFEARRAY
* psa = CreateSafeArray(VT_ERROR, result);
3836
SAFEARRAY
* psa = CreateSafeArray(VT_ERROR, result, 1, 2);
3869
SAFEARRAY
* psa = CreateSafeArray(VT_BOOL, boolResult);
3895
SAFEARRAY
* psa = CreateSafeArray(VT_BOOL, boolResult, 1);
3938
SAFEARRAY
* psa = CreateSafeArray(VT_BOOL, boolResult);
3966
SAFEARRAY
* psa = CreateSafeArray(VT_BOOL, boolResult, 1, 2);
4002
SAFEARRAY
* psa = CreateSafeArray(VT_DECIMAL, decimalResult);
4028
SAFEARRAY
* psa = CreateSafeArray(VT_DECIMAL, decimalResult, 1);
4077
SAFEARRAY
* psa = CreateSafeArray(VT_DECIMAL, decimalResult);
4105
SAFEARRAY
* psa = CreateSafeArray(VT_DECIMAL, decimalResult, 1, 2);
4131
SAFEARRAY
* psa = CreateSafeArray(VT_CY, result);
4156
SAFEARRAY
* psa = CreateSafeArray(VT_CY, result, 1);
4198
SAFEARRAY
* psa = CreateSafeArray(VT_CY, result);
4225
SAFEARRAY
* psa = CreateSafeArray(VT_CY, result, 1, 2);
4251
SAFEARRAY
* psa = CreateSafeArray(VT_DATE, result);
4276
SAFEARRAY
* psa = CreateSafeArray(VT_DATE, result, 1);
4325
SAFEARRAY
* psa = CreateSafeArray(VT_DATE, result);
4352
SAFEARRAY
* psa = CreateSafeArray(VT_DATE, result, 1, 2);
4381
SAFEARRAY
* psa = CreateSafeArray(VT_BSTR, result);
4408
SAFEARRAY
* psa = CreateSafeArray(VT_BSTR, result, 1);
4443
SAFEARRAY
* psa = CreateSafeArray(VT_BSTR, result);
4480
SAFEARRAY
* psa = CreateSafeArray(VT_BSTR, result, 1, 2);
4513
SAFEARRAY
* psa = CreateSafeArray(VT_UNKNOWN, result);
4550
SAFEARRAY
* psa = CreateSafeArray(VT_UNKNOWN, result, 1);
4597
SAFEARRAY
* psa = CreateSafeArray(VT_UNKNOWN, result);
4654
SAFEARRAY
* psa = CreateSafeArray(VT_UNKNOWN, result, 1, 2);
4695
SAFEARRAY
* psa = CreateSafeArray(VT_DISPATCH, result);
4732
SAFEARRAY
* psa = CreateSafeArray(VT_DISPATCH, result, 1);
4779
SAFEARRAY
* psa = CreateSafeArray(VT_DISPATCH, result);
4836
SAFEARRAY
* psa = CreateSafeArray(VT_DISPATCH, result, 1, 2);
4878
SAFEARRAY
* psa = CreateSafeArray(VT_DISPATCH, result);
4916
SAFEARRAY
* psa = CreateSafeArray(VT_DISPATCH, result, 1);
4964
SAFEARRAY
* psa = CreateSafeArray(VT_DISPATCH, result);
5022
SAFEARRAY
* psa = CreateSafeArray(VT_DISPATCH, result, 1, 2);
5084
SAFEARRAY
* psa = CreateSafeArray(VT_VARIANT, result);
5136
SAFEARRAY
* psa = CreateSafeArray(VT_VARIANT, result, 1);
5219
SAFEARRAY
* psa = CreateSafeArray(VT_VARIANT, result);
5312
SAFEARRAY
* psa = CreateSafeArray(VT_I1, Array.Empty<byte>());
5351
SAFEARRAY
* psa = CreateSafeArray((VARENUM)arrayVt, Array.Empty<byte>());
5369
SAFEARRAY
* psa = CreateSafeArray((VARENUM)vt, Array.Empty<byte>());
5399
SAFEARRAY
* psa = PInvokeCore.SafeArrayCreate(VT_I4, (uint)rank, saBounds);
5412
private static unsafe
SAFEARRAY
* CreateSafeArray<T>(VARENUM vt, T[] result, int lbound = 0) where T : unmanaged
5420
SAFEARRAY
* psa = PInvokeCore.SafeArrayCreate(vt, 1, &saBound);
5444
private unsafe
SAFEARRAY
* CreateSafeArray<T>(VARENUM vt, T[,] multiDimArray, int lbound1 = 0, int lbound2 = 0) where T : unmanaged
5459
SAFEARRAY
* psa = PInvokeCore.SafeArrayCreate(vt, 2, saBounds);
5632
SAFEARRAY
* psa = CreateRecordSafeArray(result, pRecordInfo);
5736
private static
SAFEARRAY
* CreateRecordSafeArray<T>(T[] result, IRecordInfo* recordInfo, int lbound = 0)
5744
SAFEARRAY
* psa = PInvokeCore.SafeArrayCreateEx(VT_RECORD, 1, &saBound, recordInfo);
System\Windows\Forms\Automation\UiaTextRangeTests.cs (6)
564
using SafeArrayScope<double> actual = new((
SAFEARRAY
*)null);
594
using SafeArrayScope<double> actual = new((
SAFEARRAY
*)null);
623
using SafeArrayScope<double> safeArrayScope = new((
SAFEARRAY
*)null);
664
using SafeArrayScope<double> actual = new((
SAFEARRAY
*)null);
747
using SafeArrayScope<double> actual = new((
SAFEARRAY
*)null);
829
using SafeArrayScope<double> actual = new((
SAFEARRAY
*)null);
Windows\Win32\System\Com\ComSafeArrayScopeTests.cs (2)
14
SAFEARRAY
* array =
SAFEARRAY
.CreateEmpty(VARENUM.VT_INT);
Windows\Win32\System\Com\SafeArrayScopeTests.cs (4)
75
SAFEARRAY
* array =
SAFEARRAY
.CreateEmpty(Variant.VARENUM.VT_UNKNOWN);
90
SAFEARRAY
* array =
SAFEARRAY
.CreateEmpty(Variant.VARENUM.VT_INT);