Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

152 lines
2.6 KiB

//+-------------------------------------------------------------------
//
// File: climain.cxx
//
// Contents: server test program to test OLE2 RPC
//
// Classes: None
//
// Functions:
//
// History: 23-Nov-92 Rickhi Created
//
//--------------------------------------------------------------------
#include <windows.h>
#include <ole2.h>
#include <stdio.h>
#include <rpctyp.h> // IRpcTypes interface
SCODE TestGuids(IRpcTypes *pRpc);
SCODE TestDwords(IRpcTypes *pRpc);
#define DebugOut(x) printf x
int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hinstPrev, LPSTR lpCmdLine, int nCmdShow)
{
DebugOut (("Test: Starting\n"));
// initialize with OLE2
SCODE sc = OleInitialize(NULL);
if (FAILED(sc))
{
DebugOut (("Test: OleInitialize = %x\n", sc));
return sc;
}
// create an instance
sc = CoGetClassObject(CLSID_RpcTypes,
CLSCTX_LOCAL_SERVER,
NULL,
IID_IClassFactory,
(void **)&pCF);
if (FAILED(sc))
{
DebugOut (("Test: CoGetClassObject=%x\n", sc));
return sc;
}
sc = pCF->CreateInstance(NULL, IID_IRpcTypes, (void **)&pRpc);
sc = pCF->Release();
if (FAILED(sc))
{
DebugOut(("Test: CreateInstance=%x\n", sc));
return sc;
}
sc = TestVoid(pRpc);
sc = TestGuids(pRpc);
sc = TestDwords(pRpc)
sc = TestWindows(pRpc);
sc = TestOleData(pRpc);
// finished with OLE2
OleUninitialize();
DebugOut (("Test: CoUninitialize called.\n"));
return sc;
}
SCODE TestGuids(IRpcTypes *pRpc)
{
REFCLSID rclsid;
CLSID clsid;
REFIID riid;
IID iid;
GUID guid;
// initialize the parameters
SCODE sc = pRpc->GuidsIn(rclsid, clsid, riid, iid, guid);
if (FAILED(sc))
{
DebugOut (("\n"));
}
sc = pRpc->GuidsOut(&clsid, &iid, &guid);
if (FAILED(sc))
{
DebugOut (("\n"));
}
// check the return values
return S_OK;
}
SCODE TestDwords(IRpcTypes *pRpc)
{
DWORD dw = 1;
ULONG ul = 2;
LONG lg = 3;
LARGE_INTEGER li;
ULARGE_INTEGER uli;
// methods to test DWORD / LARGE_INTEGER parameter passing
li.LowPart = 4;
li.HighPart = 5;
uli.LowPart = 6;
uli.HighPart = 7;
sc = pRpc->DwordIn(dw, ul, lg, li, uli);
if (FAILED(sc))
{
DebugOut (("\n"));
}
sc = pRpc->DwordIn(&dw, &ul, &lg, &li, &uli);
if (FAILED(sc))
{
DebugOut (("\n"));
}
// check the return values
return S_OK;
}