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.
202 lines
5.7 KiB
202 lines
5.7 KiB
// This contains all the functions that are currently directly called inside the class managers from netman
|
|
// In order to move the class managers out later, these functions should stop being used.
|
|
|
|
#include "pch.h"
|
|
#pragma hdrstop
|
|
|
|
#define NO_CM_SEPERATE_NAMESPACES
|
|
|
|
#include "nmbase.h"
|
|
#include "cmdirect.h"
|
|
|
|
// Don't try moving these function to an inline in cmdirect.h. It won't work - it requires
|
|
// access to CDialupConnection in the root namespace, which is not defined unless
|
|
// NO_CM_SEPERATE_NAMESPACES is defined.
|
|
namespace CMDIRECT
|
|
{
|
|
namespace DIALUP
|
|
{
|
|
HRESULT CreateWanConnectionManagerEnumConnectionInstance(
|
|
NETCONMGR_ENUM_FLAGS Flags,
|
|
REFIID riid,
|
|
VOID** ppv)
|
|
{
|
|
return CWanConnectionManagerEnumConnection::CreateInstance(
|
|
Flags,
|
|
riid,
|
|
ppv);
|
|
|
|
}
|
|
|
|
HRESULT CreateInstanceFromDetails(
|
|
const RASENUMENTRYDETAILS* pEntryDetails,
|
|
REFIID riid,
|
|
VOID** ppv)
|
|
{
|
|
return CDialupConnection::CreateInstanceFromDetails (
|
|
pEntryDetails,
|
|
riid,
|
|
ppv);
|
|
|
|
}
|
|
}
|
|
|
|
namespace INBOUND
|
|
{
|
|
HRESULT CreateInstance (
|
|
IN BOOL fIsConfigConnection,
|
|
IN HRASSRVCONN hRasSrvConn,
|
|
IN PCWSTR pszwName,
|
|
IN PCWSTR pszwDeviceName,
|
|
IN DWORD dwType,
|
|
IN const GUID* pguidId,
|
|
IN REFIID riid,
|
|
OUT VOID** ppv)
|
|
{
|
|
return CInboundConnection::CreateInstance(fIsConfigConnection, hRasSrvConn, pszwName, pszwDeviceName, dwType, pguidId, riid, ppv);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
#include "nmbase.h"
|
|
#include "conman.h"
|
|
#include "cmutil.h"
|
|
#include "ncras.h"
|
|
#include "diag.h"
|
|
#include "cmdirect.h"
|
|
|
|
// These functions are exported from class managers
|
|
EXTERN_C
|
|
VOID
|
|
WINAPI
|
|
NetManDiagFromCommandArgs (IN const DIAG_OPTIONS * pOptions)
|
|
{
|
|
Assert (pOptions);
|
|
Assert (pOptions->pDiagCtx);
|
|
g_pDiagCtx = pOptions->pDiagCtx;
|
|
|
|
INetConnectionManager * pConMan;
|
|
|
|
CMDIRECT(LANCON, HrInitializeConMan)(&pConMan);
|
|
|
|
switch (pOptions->Command)
|
|
{
|
|
case CMD_SHOW_LAN_CONNECTIONS:
|
|
CMDIRECT(LANCON, CmdShowLanConnections)(pOptions, pConMan);
|
|
break;
|
|
|
|
case CMD_SHOW_ALL_DEVICES:
|
|
CMDIRECT(LANCON, CmdShowAllDevices)(pOptions, pConMan);
|
|
break;
|
|
|
|
case CMD_SHOW_LAN_DETAILS:
|
|
CMDIRECT(LANCON, CmdShowLanDetails)(pOptions, pConMan);
|
|
break;
|
|
|
|
case CMD_LAN_CHANGE_STATE:
|
|
CMDIRECT(LANCON, CmdLanChangeState)(pOptions, pConMan);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
CMDIRECT(LANCON, HrUninitializeConMan(pConMan));
|
|
|
|
g_pDiagCtx = NULL;
|
|
}
|
|
|
|
|
|
#include "raserror.h"
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Function: HrRasConnectionNameFromGuid
|
|
//
|
|
// Purpose: Exported API used by iphlpapi et. al. to get the connection
|
|
// of a RAS connection given its GUID.
|
|
//
|
|
// Arguments:
|
|
// guid [in] The guid id representing the connection.
|
|
// pszwName [out] Pointer to a buffer to store the name.
|
|
// pcchMax [inout] On input, the length, in characters, of the buffer
|
|
// including the null terminator. On output, the
|
|
// length of the string including the null terminator
|
|
// (if it was written) or the length of the buffer
|
|
// required.
|
|
//
|
|
// Returns: HRESULT_FROM_WIN32(ERROR_NOT_FOUND) if the entry was not found.
|
|
// HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER)
|
|
// S_OK
|
|
//
|
|
// Author: shaunco 23 Sep 1998
|
|
//
|
|
// Notes:
|
|
//
|
|
EXTERN_C
|
|
HRESULT
|
|
WINAPI
|
|
HrRasConnectionNameFromGuid (
|
|
IN REFGUID guid,
|
|
OUT PWSTR pszwName,
|
|
IN OUT DWORD* pcchMax)
|
|
{
|
|
Assert (pszwName);
|
|
Assert (pcchMax);
|
|
|
|
// Initialize the output parameter.
|
|
//
|
|
*pszwName = NULL;
|
|
|
|
// We now need to enumerate all entries in this phonebook and
|
|
// find our details record with the matching guidId.
|
|
//
|
|
RASENUMENTRYDETAILS* aRasEntryDetails;
|
|
DWORD cRasEntryDetails;
|
|
HRESULT hr;
|
|
|
|
hr = HrRasEnumAllEntriesWithDetails (
|
|
NULL,
|
|
&aRasEntryDetails,
|
|
&cRasEntryDetails);
|
|
|
|
if (SUCCEEDED(hr))
|
|
{
|
|
RASENUMENTRYDETAILS* pDetails;
|
|
|
|
// Assume we don't find the entry.
|
|
//
|
|
hr = HRESULT_FROM_WIN32 (ERROR_NOT_FOUND);
|
|
|
|
for (DWORD i = 0; i < cRasEntryDetails; i++)
|
|
{
|
|
pDetails = &aRasEntryDetails[i];
|
|
|
|
if (pDetails->guidId == guid)
|
|
{
|
|
// Only copy the string if the caller has enough room in
|
|
// the output buffer.
|
|
//
|
|
hr = HRESULT_FROM_WIN32 (ERROR_INSUFFICIENT_BUFFER);
|
|
DWORD cchRequired = wcslen(pDetails->szEntryName) + 1;
|
|
if (cchRequired <= *pcchMax)
|
|
{
|
|
lstrcpynW (pszwName, pDetails->szEntryName, *pcchMax);
|
|
hr = S_OK;
|
|
}
|
|
*pcchMax = cchRequired;
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
MemFree (aRasEntryDetails);
|
|
}
|
|
else if (HRESULT_FROM_WIN32(ERROR_CANNOT_OPEN_PHONEBOOK) == hr)
|
|
{
|
|
hr = HRESULT_FROM_WIN32(ERROR_NOT_FOUND);
|
|
}
|
|
TraceError ("HrRasConnectionNameFromGuid", hr);
|
|
return hr;
|
|
}
|