INDMemoryWindow Interface
Memory windows are used to grant a remote peer read and/or write access to a region of your registered memory.
The INDAdapter::CreateMemoryWindow method returns this interface.
Members
The INDMemoryWindow interface inherits from the IUnknown interface but does not define additional members.
Remarks
The memory window is not initialized until you call the INDEndpoint::Bind method to define the size of the window and bind the window to an endpoint.
A memory window can be bound only to a single endpoint. After being invalidated (unbound), the window can be bound to a different endpoint or to different registered memory. The adapter used to create the memory window and endpoint must be the same.
Multiple windows can be bound to the same registered memory. Memory windows can overlap and have different access rights; the windows are independent.
The Flags parameter of the Bind method determines the operations that the remote peer can perform on the window.
The INDEndpoint::Bind method returns a ND_MW_DESCRIPTOR structure that identifies the memory window. The descriptor should be sent as-provided to the remote endpoint in order for that endpoint to issue Read and/or Write requests against the window. The Network Direct providers must ensure that the data in a window descriptor is in network byte order.
There are two ways for a memory window to become unbound. The first is for the owner of the memory window to call the INDEndpoint::Invalidate method, and the second is for the remote peer to issue an INDEndpoint::SendAndInvalidate request using the corresponding memory window descriptor. In the latter case, the unbinding is reported to the owner through its inbound completion queue.
If both the owner and remote peer simultaneously issue an Invalidate request and SendAndInvalidate request, respectively, only one of the two operations will succeed; which of the two operations succeeds is timing dependent. The failure will cause the connection to become disconnected.
Memory windows can be bound and unbound repeatedly.
Implementation Notes
For InfiniBand devices, only Type 2 memory windows are supported—there is no support for Type 1 memory windows.
Requirements
Product |
Microsoft Message Passing Interface (MS-MPI) |
Header |
Ndspi.h |
See Also
Send comments about this topic to Microsoft
Build date: 7/2/2010