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.
 
 
 
 
 
 

125 lines
3.5 KiB

//+--------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1997.
//
// File: getcli.h
//
// Contents: Get clients for a test
//
// Functions: GetClients
//
// History: 02-Jun-97 MikeW Created
//
//---------------------------------------------------------------------------
#ifndef _GETCLI_H_
#define _GETCLI_H_
#pragma once
//+--------------------------------------------------------------------------
//
// Class: ClientData
//
// Synopsis: Encapsulate data about each client (or peer) the host is
// working with.
//
// History: 02-Jun-97 MikeW Created
//
// Notes: To allocate, call "p = new(x) ClientData" where x is the
// maximum number of clients. To deallocate call "delete p"
//
//---------------------------------------------------------------------------
struct ClientData
{
int client_count; // Number of clients
struct PerClientData // Info for each client
{
DWORD context; // context (local, remote, etc)
LPWSTR machine_name; // machine name for remote clients
}
client[ANYSIZE_ARRAY];
//
// a ClientData is a variable sized structure. Define some routines
// to make using them easier.
//
HRESULT SetMachineName(UINT client, LPCWSTR machine_name);
inline void * operator new(size_t /* UNREF bytes */, UINT client_count);
inline void operator delete(void *_this);
};
//+--------------------------------------------------------------------------
//
// Method: ClientData::operator new
//
// Synopsis: Allocate the variable sized ClientData structure
//
// Parameters: [client_count] -- The number of clients
//
// Returns: A pointer to the storage for the new object
//
// History: 02-Jun-97 MikeW Created
//
//---------------------------------------------------------------------------
inline void * ClientData::operator new(
size_t /* UNREF bytes */,
UINT client_count)
{
return new BYTE[sizeof(ClientData)
+ sizeof(PerClientData)
* (client_count - ANYSIZE_ARRAY)
+ (MAX_COMPUTERNAME_LENGTH + 1)
* client_count * sizeof(WCHAR)];
}
//+--------------------------------------------------------------------------
//
// Method: ClientData::operator delete
//
// Synopsis: De-allocate the variable sized ClientData structure
//
// Parameters: [_this] -- "this" pointer
//
// Returns: void
//
// History: 02-Jun-97 MikeW Created
//
//---------------------------------------------------------------------------
inline void ClientData::operator delete(void *_this)
{
delete [] (BYTE *) _this;
}
//
// Functions to discover clients
//
HRESULT GetClients(
ClientData **pp_client_data,
DWORD contexts,
int client_count,
const GUID &test_id = GUID_NULL,
LPWSTR test_description = NULL);
HRESULT GetRemoteClients(
ClientData *client_data,
const GUID &test_id,
LPWSTR test_description);
#endif // _GETCLI_H_