120 lines
3.8 KiB
C
120 lines
3.8 KiB
C
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
|
|
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|
|
// PARTICULAR PURPOSE.
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
|
|
/****************************************************************************
|
|
Microsoft RPC
|
|
|
|
umarsh Example
|
|
|
|
FILE: umarshp.c
|
|
|
|
PURPOSE: Remote procedures that are linked with the server
|
|
side of RPC distributed application
|
|
|
|
FUNCTIONS: ModifyMyWString() - Display the string passed in, modify it, and return
|
|
ModifyMyString() -
|
|
Shutdown() - shuts down the server side
|
|
|
|
COMMENTS: Related to umarshs.c
|
|
|
|
****************************************************************************/
|
|
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include "umarshs.h" // header file generated by MIDL compiler
|
|
|
|
|
|
/****************************************************************************
|
|
|
|
Function: ModifyMyWString
|
|
|
|
Parameters: pStr : Pointer to pointer to UNICODE string
|
|
|
|
Returns: none
|
|
|
|
Purpose: Display the string passed in, modify it, and return
|
|
|
|
Comments: This sample is meant to demonstrate a typical use of the
|
|
represent_as attribute: The client and server have different
|
|
local views of the data, although the IDL file describes the
|
|
wire contract.
|
|
|
|
****************************************************************************/
|
|
void ModifyMyWString(IN RPC_BINDING_HANDLE hBinding,
|
|
WCHAR_STRING * pStr)
|
|
{
|
|
wprintf_s(L"\nModifyMyWString: received UNICODE string:\n%s\n\n", *pStr );
|
|
wcscpy_s(*pStr, wcslen(*pStr),L"This string comes back on the wire as UNICODE");
|
|
wprintf_s(L"ModifyMyWString: sending UNICODE string:\n%s\n\n", *pStr );
|
|
|
|
}
|
|
|
|
/****************************************************************************
|
|
|
|
Function: ModifyMyString
|
|
|
|
Parameters: pStr : Pointer to pointer to UNICODE string
|
|
|
|
Returns: none
|
|
|
|
Purpose: Display the string passed in, modify it, and return
|
|
|
|
Comments: This sample is meant to demonstrate a typical use of the
|
|
represent_as attribute: The client and server have different
|
|
local views of the data, although the IDL file describes the
|
|
wire contract.
|
|
|
|
****************************************************************************/
|
|
void ModifyMyString(IN RPC_BINDING_HANDLE hBinding,
|
|
WCHAR_STRING * pStr)
|
|
{
|
|
wprintf_s(L"\nModifyMyString: received UNICODE string:\n%s\n\n", *pStr );
|
|
wcscpy_s(*pStr,wcslen(*pStr), L"This UNICODE string comes back on the wire as ASCII");
|
|
wprintf_s(L"ModifyMyString: sending UNICODE string:\n%s\n\n", *pStr );
|
|
|
|
}
|
|
|
|
|
|
/****************************************************************************
|
|
|
|
Function: Shutdown
|
|
|
|
Parameters: none
|
|
|
|
Returns: none
|
|
|
|
Purpose: Make the server stop listening for client applications.
|
|
|
|
Comments: The two NULL parameters passed to RpcServerUnregisterIf are
|
|
a show of brute force: they tell the function to turn
|
|
off all registered interfaces. See the RPC API function
|
|
reference for more information about these functions.
|
|
|
|
****************************************************************************/
|
|
|
|
void Shutdown(IN RPC_BINDING_HANDLE hBinding)
|
|
{
|
|
RPC_STATUS status;
|
|
|
|
printf_s("Calling RpcMgmtStopServerListening\n");
|
|
status = RpcMgmtStopServerListening(NULL);
|
|
printf_s("RpcMgmtStopServerListening returned: 0x%x\n", status);
|
|
if (status) {
|
|
exit(status);
|
|
}
|
|
|
|
printf_s("Calling RpcServerUnregisterIf\n");
|
|
status = RpcServerUnregisterIf(NULL, NULL, FALSE);
|
|
printf_s("RpcServerUnregisterIf returned 0x%x\n", status);
|
|
if (status) {
|
|
exit(status);
|
|
}
|
|
}
|
|
|
|
/* end file umarshp.c */
|