131 lines
3.2 KiB
C++
131 lines
3.2 KiB
C++
|
/*++
|
||
|
|
||
|
Copyright (c) 1991 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
fmt.cxx
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Contains the entry points for the Winnet Connection API supported by the
|
||
|
Multi-Provider Router.
|
||
|
Contains:
|
||
|
WNetFormatNetworkNameW
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Bruce Forstall (brucefo) 15-Mar-1996
|
||
|
|
||
|
Environment:
|
||
|
|
||
|
User Mode -Win32
|
||
|
|
||
|
Notes:
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
15-Mar-1996 brucefo
|
||
|
created from old MPRUI code
|
||
|
|
||
|
05-May-1999 jschwart
|
||
|
Make provider addition/removal dynamic
|
||
|
|
||
|
--*/
|
||
|
|
||
|
//
|
||
|
// INCLUDES
|
||
|
//
|
||
|
|
||
|
#include "precomp.hxx"
|
||
|
|
||
|
|
||
|
/*******************************************************************
|
||
|
|
||
|
NAME: WNetFormatNetworkNameW
|
||
|
|
||
|
SYNOPSIS: Private Shell API for getting the formatted network name
|
||
|
Unicode version
|
||
|
|
||
|
ENTRY: lpProvider - Name of network provider
|
||
|
lpRemoteName - Remote name to format
|
||
|
lpFormattedName - Buffer to receive name
|
||
|
lpnLength - size of lpFormattedName buffer
|
||
|
dwFlags - Formatting flags
|
||
|
dwAveCharePerLine - Avg. characters per line
|
||
|
|
||
|
NOTES: Since this is an unpublished API, we don't do as much
|
||
|
parameter validation as we would for a published API. Also,
|
||
|
since the shell calls this thousands of times to display
|
||
|
things in the Network Neighborhood, we optimize for speed
|
||
|
of the success case.
|
||
|
|
||
|
HISTORY:
|
||
|
Johnl 29-Dec-1992 Created
|
||
|
BruceFo 19-Mar-1996 Optimized for the shell
|
||
|
|
||
|
********************************************************************/
|
||
|
|
||
|
DWORD
|
||
|
WNetFormatNetworkNameW(
|
||
|
LPCWSTR lpProvider,
|
||
|
LPCWSTR lpRemoteName,
|
||
|
LPWSTR lpFormattedName,
|
||
|
LPDWORD lpnLength, // In characters!
|
||
|
DWORD dwFlags,
|
||
|
DWORD dwAveCharPerLine
|
||
|
)
|
||
|
{
|
||
|
DWORD status = WN_SUCCESS;
|
||
|
|
||
|
MprCheckProviders();
|
||
|
|
||
|
CProviderSharedLock PLock;
|
||
|
|
||
|
INIT_IF_NECESSARY(NETWORK_LEVEL,status);
|
||
|
|
||
|
__try
|
||
|
{
|
||
|
LPPROVIDER provider = MprFindProviderByName(lpProvider);
|
||
|
if (NULL == provider)
|
||
|
{
|
||
|
status = WN_BAD_PROVIDER;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (NULL == provider->FormatNetworkName)
|
||
|
{
|
||
|
status = WN_NOT_SUPPORTED;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
//**************************************
|
||
|
// Actual call to Provider.
|
||
|
//**************************************
|
||
|
status = provider->FormatNetworkName(
|
||
|
(LPWSTR) lpRemoteName, // cast away const
|
||
|
(LPWSTR) lpFormattedName, // cast away const
|
||
|
lpnLength,
|
||
|
dwFlags,
|
||
|
dwAveCharPerLine);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
__except(EXCEPTION_EXECUTE_HANDLER)
|
||
|
{
|
||
|
status = GetExceptionCode();
|
||
|
if (status != EXCEPTION_ACCESS_VIOLATION)
|
||
|
{
|
||
|
MPR_LOG(ERROR,"WNetFormatNetworkName: "
|
||
|
"Unexpected Exception 0x%lx\n",status);
|
||
|
}
|
||
|
status = WN_BAD_POINTER;
|
||
|
}
|
||
|
|
||
|
if (status != WN_SUCCESS)
|
||
|
{
|
||
|
SetLastError(status);
|
||
|
}
|
||
|
return status;
|
||
|
}
|