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

79 lines
2.1 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.
MODULE: client.c
PURPOSE: This program is a command line oriented
demonstration of the Simple service sample.
----------------------------------------------------------------------------*/
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strsafe.h>
VOID __cdecl main(int argc, char *argv[])
{
char outbuf[180]; // size of the szOut Buffer defined in SERVICE.C -> ServiceStart
DWORD bytesRead;
BOOL ret;
LPSTR lpszPipeName = "\\\\.\\pipe\\simple";
LPSTR lpszString = "World";
int ndx;
HRESULT hr;
// allow user to define pipe name
for ( ndx = 1; ndx < argc; ndx++ )
{
if ( (*argv[ndx] == '-') || (*argv[ndx] == '/') )
{
if ( !(_stricmp( "pipe", argv[ndx]+1 )) && ( (ndx + 1) < argc))
{
lpszPipeName = argv[++ndx];
}
else if ( !(_stricmp( "string", argv[ndx]+1 )) && ( (ndx + 1) < argc))
{
lpszString = argv[++ndx];
}
else
{
printf("usage: client [-pipe <pipename>] [-string <string>]\n");
exit(1);
}
}
else
{
printf("usage: client [-pipe <pipename>] [-string <string>]\n");
exit(1);
}
}
hr = StringCchLength(lpszString,100,&ndx);
if (FAILED(hr))
{
printf("Buffer is too large!\n");
return;
}
ret = CallNamedPipe(lpszPipeName,
lpszString, ndx,
outbuf,180 ,
&bytesRead, NMPWAIT_WAIT_FOREVER);
if (!ret)
{
printf("client: CallNamedPipe failed, GetLastError = %d\n", GetLastError());
exit(1);
}
printf("client: received: %s\n", outbuf);
}