[in, string] e [out, string] Protótipo
O protótipo de função a seguir usa dois parâmetros: um parâmetro [in, string] e um parâmetro [out, string].
void Analyze(
[in, string] *pszInput,
[out, string, size_is(STRSIZE)] *pszOutput);
O primeiro parâmetro é apenas [in]. Essa cadeia de caracteres de entrada só é transmitida do cliente para o servidor. O servidor o usa como base para processamento adicional. A cadeia de caracteres não é modificada e não é exigida novamente pelo cliente, portanto, ela não precisa ser retornada ao cliente.
O segundo parâmetro, que representa a resposta do médico, é apenas [out]. Essa cadeia de caracteres de resposta só é transmitida do servidor para o cliente. O tamanho da alocação é fornecido para que os stubs do servidor possam alocar memória para ele. Como pszOutput é um ponteiro [ref], o cliente deve ter memória suficiente alocada para a cadeia de caracteres antes da chamada. A cadeia de caracteres de resposta é gravada nessa área de memória quando o procedimento remoto retorna.