Skip to content

Commit ba14a31

Browse files
author
Ron Petrusha
authored
Documented IPinnable, MemoryHandle (dotnet#736)
* Documented IPinnable, MemoryHandle * Fixed badly formatted XML. * Addressed review comments
1 parent ffecede commit ba14a31

File tree

2 files changed

+59
-18
lines changed

2 files changed

+59
-18
lines changed

xml/System.Buffers/IPinnable.xml

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,16 @@
1414
</AssemblyInfo>
1515
<Interfaces />
1616
<Docs>
17-
<summary>To be added.</summary>
18-
<remarks>To be added.</remarks>
17+
<summary>Provides a mechanism for pinning and unpinning objects to prevent the garbage collector from moving them.</summary>
18+
<remarks>
19+
<format type="text/markdown"><![CDATA[
20+
21+
## Remarks
22+
23+
The <xref:System.Buffers.MemoryManager%601> class implements the `IPinnable` interface.
24+
25+
]]></format>
26+
</remarks>
1927
</Docs>
2028
<Members>
2129
<Member MemberName="Pin">
@@ -40,10 +48,21 @@
4048
<Parameter Name="elementIndex" Type="System.Int32" />
4149
</Parameters>
4250
<Docs>
43-
<param name="elementIndex">To be added.</param>
44-
<summary>To be added.</summary>
45-
<returns>To be added.</returns>
46-
<remarks>To be added.</remarks>
51+
<param name="elementIndex">The offset to the element within the memory buffer to which the returned <see cref="T:System.Buffers.MemoryHandle" /> points.</param>
52+
<summary>Pins a block of memory.</summary>
53+
<returns>A handle to the block of memory.</returns>
54+
<remarks>
55+
<format type="text/markdown"><![CDATA[
56+
57+
## Remarks
58+
59+
A developer can access an object that implements the <xref:System.Buffers.IPinnable> interface without pinning it only through managed APIs. Pinning is required for access by unmanaged APIs.
60+
61+
Call this method to indicate that the <xref:System.Buffers.IPinnable> object cannot be moved by the garbage collector so that the address of the pinned object can be used.
62+
63+
64+
]]></format>
65+
</remarks>
4766
</Docs>
4867
</Member>
4968
<Member MemberName="Unpin">
@@ -66,8 +85,17 @@
6685
</ReturnValue>
6786
<Parameters />
6887
<Docs>
69-
<summary>To be added.</summary>
70-
<remarks>To be added.</remarks>
88+
<summary>Frees a block of pinned memory.</summary>
89+
<remarks>
90+
<format type="text/markdown"><![CDATA[
91+
92+
## Remarks
93+
94+
Call this method to indicate that the <xref:System.Buffers.IPinnable> object no longer needs to be pinned, and that the garbage collector can now move the object.
95+
96+
97+
]]></format>
98+
</remarks>
7199
</Docs>
72100
</Member>
73101
</Members>

xml/System.Buffers/MemoryHandle.xml

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,21 @@
2121
</Interface>
2222
</Interfaces>
2323
<Docs>
24-
<summary>To be added.</summary>
25-
<remarks>To be added.</remarks>
24+
<summary>Provides a memory handle for a block of memory.</summary>
25+
<remarks>
26+
<format type="text/markdown"><![CDATA[
27+
28+
## Remarks
29+
30+
A `MemoryHandle` instance represents a handle to a pinned block of memory. It is returned by the following methods:
31+
32+
- <xref:System.Buffers.IPinnable.Pin%2A?displayProperty=nameWithType>.
33+
- <xref:System.Memory%601.Pin%2A?displayProperty=nameWithType>
34+
- <xref:System.ReadOnlyMemory%601.Pin%2A?displayProperty=nameWithType>.
35+
- <xref:System.Buffers.MemoryManager%601.Pin%2A?displayProperty=<nameWithType>
36+
37+
]]></format>
38+
</remarks>
2639
</Docs>
2740
<Members>
2841
<Member MemberName=".ctor">
@@ -49,10 +62,10 @@
4962
<Parameter Name="pinnable" Type="System.Buffers.IPinnable" />
5063
</Parameters>
5164
<Docs>
52-
<param name="pointer">To be added.</param>
53-
<param name="handle">To be added.</param>
54-
<param name="pinnable">To be added.</param>
55-
<summary>To be added.</summary>
65+
<param name="pointer">A pointer to memory..</param>
66+
<param name="handle">A handle used to pin array buffers.</param>
67+
<param name="pinnable">A reference to a manually managed object, or <see langword="default" /> if there is no memory manager.</param>
68+
<summary>Creates a new memory handle for the block of memory.</summary>
5669
<remarks>To be added.</remarks>
5770
</Docs>
5871
</Member>
@@ -79,7 +92,7 @@
7992
</ReturnValue>
8093
<Parameters />
8194
<Docs>
82-
<summary>To be added.</summary>
95+
<summary>Frees the pinned handle and releases the <see cref="T:System.Buffers.IPinnable" /> instance.</summary>
8396
<remarks>To be added.</remarks>
8497
</Docs>
8598
</Member>
@@ -106,9 +119,9 @@
106119
<ReturnType>System.Void*</ReturnType>
107120
</ReturnValue>
108121
<Docs>
109-
<summary>To be added.</summary>
110-
<value>To be added.</value>
111-
<remarks>To be added.</remarks>
122+
<summary>Returns a pointer to the memory block.</summary>
123+
<value>A pointer to the memory block.</value>
124+
<remarks>The memory is assumed to be pinned so that its address won't change.</remarks>
112125
</Docs>
113126
</Member>
114127
</Members>

0 commit comments

Comments
 (0)