Share via


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

INDEndpoint::Bind

INDEndpoint::Invalidate

 

 

Send comments about this topic to Microsoft

Build date: 7/2/2010