2025-11-28 00:35:46 +09:00

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 */