I propose the following changes to Section 5.3.3.4 "Message input port proxy binding": Change the declaration of the SceMi::BindMessageInPort() method as follows: SceMiMessageInPortProxy * SceMi::BindMessageInPort( const char *transactorName, const char *portName, const SceMiMessageInPortBinding *binding = NULL, SceMiEC *ec = NULL); [The change is to add NULL as a default value of the third argument, binding]. [As part of the description of the binding argument, add the following:] If the binding argument is given as a NULL, the SCE-MI assumes that each of the Context, IsReady(), and Close() data members are have NULL values. [Add this NOTE for further clarification:] NOTE---This call inProxy = scemi->BindMessageInPort("Transactor", "Port"); is equivalent to this code SceMiMessageInPortBinding inBinding; inBinding.Context = NULL; inBinding.IsReady = NULL; inBinding.Close = NULL; inProxy = scemi->BindMessageInPort("Transactor", "Port", &inBinding); it occurred to me that the issue of a NULL binding argument also applies to the SceMiMessageInPort::ReplaceBinding() method. Hence, I propose the following additional changes to Section 5.3.6.2 "Replacing port binding": Change the declaration of the SceMiMessageInPortProxy::ReplaceBinding() method as follows: void SceMiMessageInPortProxy::ReplaceBinding( const SceMiMessageInPortBinding *binding = NULL, SceMiEC *ec = NULL); [The change is to add NULL as a default value of the first argument, binding]. [As part of the description of the binding argument, add the following:] If the binding argument is given as a NULL, the SCE-MI assumes that each of the Context, IsReady(), and Close() data members have NULL values. [Add this NOTE for further clarification:] NOTE---The ReplaceBinding() call below SceMiMessageInPortProxy *inProxy; // ... inProxy->ReplaceBinding(); is equivalent to this code SceMiMessageInPortProxy *inProxy; // ... SceMiMessageInPortBinding inBinding; inBinding.Context = NULL; inBinding.IsReady = NULL; inBinding.Close = NULL; inProxy->ReplaceBinding(&inBinding); Note, the stuff in [brackets] are not part of the proposal. History of issue: I just stumbled over something in the Routed demo on p. 83 of the standard. At the top of this page a bunch of SceMi::BindMessageInPort() calls are shown. These calls only provide the first two arguments. No value for the third argument, `binding', is provided. Yet, the definition of this function in Section 5.3.3.4 p. 41 does not show this argument as having a default value. Question is, is the example wrong or was there an intent to provide a default value for the `binding' argument, presumably NULL, that just did not make it into the document? I think a NULL default argument makes sense if it is defined to mean the IsReady() and Close() callbacks are NULL.