\r
@param[in] This The EFI_MM_COMMUNICATION_PROTOCOL instance.\r
@param[in] CommBuffer A pointer to the buffer to convey into MMRAM.\r
- @param[in] CommSize The size of the data buffer being passed in.On exit, the size of data\r
+ @param[in] CommSize The size of the data buffer being passed in. On exit, the size of data\r
being returned. Zero if the handler does not wish to reply with any data.\r
+ This parameter is optional and may be NULL.\r
\r
@retval EFI_SUCCESS The message was successfully posted.\r
@retval EFI_INVALID_PARAMETER The CommBuffer was NULL.\r
+ @retval EFI_BAD_BUFFER_SIZE The buffer is too large for the MM implementation.\r
+ If this error is returned, the MessageLength field\r
+ in the CommBuffer header or the integer pointed by\r
+ CommSize, are updated to reflect the maximum payload\r
+ size the implementation can accommodate.\r
+ @retval EFI_ACCESS_DENIED The CommunicateBuffer parameter or CommSize parameter,\r
+ if not omitted, are in address range that cannot be\r
+ accessed by the MM environment.\r
+\r
**/\r
typedef\r
EFI_STATUS\r
(EFIAPI *EFI_MM_COMMUNICATE)(\r
IN CONST EFI_MM_COMMUNICATION_PROTOCOL *This,\r
IN OUT VOID *CommBuffer,\r
- IN OUT UINTN *CommSize\r
+ IN OUT UINTN *CommSize OPTIONAL\r
);\r
\r
///\r