112 lines
1.9 KiB
C++
112 lines
1.9 KiB
C++
/*++
|
||
|
||
Copyright (c) 1992 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
Path.c
|
||
|
||
Abstract:
|
||
|
||
Contains image path functions:
|
||
|
||
ScIsValidImagePath
|
||
ScImagePathsMatch
|
||
|
||
Author:
|
||
|
||
John Rogers (JohnRo) 10-Apr-1992
|
||
|
||
Environment:
|
||
|
||
User Mode -Win32
|
||
|
||
Revision History:
|
||
|
||
10-Apr-1992 JohnRo
|
||
Created.
|
||
20-May-1992 JohnRo
|
||
Use CONST where possible.
|
||
|
||
--*/
|
||
|
||
#include <scpragma.h>
|
||
|
||
#include <nt.h>
|
||
#include <ntrtl.h>
|
||
#include <nturtl.h>
|
||
|
||
#include <windef.h>
|
||
#include <scdebug.h> // SC_ASSERT().
|
||
#include <sclib.h> // My prototypes.
|
||
#include <valid.h> // SERVICE_TYPE_INVALID().
|
||
#include <stdlib.h> // _wcsicmp().
|
||
#include <winsvc.h> // SERVICE_ equates.
|
||
|
||
|
||
|
||
BOOL
|
||
ScIsValidImagePath(
|
||
IN LPCWSTR ImagePathName,
|
||
IN DWORD ServiceType
|
||
)
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
This function validates a given image path name.
|
||
It makes sure the path name is consistent with the service type.
|
||
For instance, a file name of .SYS is used for SERVICE_DRIVER only.
|
||
|
||
Arguments:
|
||
|
||
ImagePathName - Supplies the image path name to be validated.
|
||
|
||
ServiceType - Tells which kind of service the path name must be
|
||
consistent with. ServiceType must be valid.
|
||
|
||
Return Value:
|
||
|
||
TRUE - The name is valid.
|
||
|
||
FALSE - The name is invalid.
|
||
|
||
--*/
|
||
{
|
||
if (ImagePathName == NULL) {
|
||
return (FALSE); // Not valid.
|
||
} else if ( (*ImagePathName) == L'\0' ) {
|
||
return (FALSE); // Not valid.
|
||
}
|
||
|
||
SC_ASSERT( !SERVICE_TYPE_INVALID( ServiceType ) );
|
||
|
||
return TRUE;
|
||
|
||
} // ScIsValidImagePath
|
||
|
||
|
||
BOOL
|
||
ScImagePathsMatch(
|
||
IN LPCWSTR OnePath,
|
||
IN LPCWSTR TheOtherPath
|
||
)
|
||
{
|
||
SC_ASSERT( OnePath != NULL );
|
||
SC_ASSERT( TheOtherPath != NULL );
|
||
|
||
SC_ASSERT( (*OnePath) != L'\0' );
|
||
SC_ASSERT( (*TheOtherPath) != L'\0' );
|
||
|
||
if ( _wcsicmp( OnePath, TheOtherPath ) == 0 ) {
|
||
|
||
return (TRUE); // They match.
|
||
|
||
} else {
|
||
|
||
return (FALSE); // They don't match.
|
||
|
||
}
|
||
|
||
} // ScImagePathsMatch
|