Dear Developers,
I want to install an UpperFilter to SBP2PORT.SYS.
How do I install it ? What registry entries are required to accomplish it ?
Thanks and regards,
Venkateswaran Kasirajan,
Dear Developers,
I want to install an UpperFilter to SBP2PORT.SYS.
How do I install it ? What registry entries are required to accomplish it ?
Thanks and regards,
Venkateswaran Kasirajan,
Hi,
To install a filter driver on an already installed driver, follow these
steps :
Join to this Email, you will find the code of my INF file and the source
code of my installer:
NB.: - My filter driver’s name is ‘SlFilter.sys’, and the GUID of the
driver I want to filter
is {6BDD1FC1-810F-11D0-BEC7-08002BE2092F} (1394 Bus).
Hope this helps,
Regards.
Serge DE LUCA
============ INF FILE CODE ============
; ======================
; === Header section ===
; ======================
[Version]
Signature=“$CHICAGO$”
; ==================================
; === Win98 Installation section ===
; ==================================
[SlFilterW98]
AddReg = SlFilterW98.AddReg
[SlFilterW98.AddReg]
HKR,“UpperFilters”,0x00000000,“SlFilter.sys”
; ==================================
; === Win2K Installation section ===
; ==================================
[SlFilterW2K]
AddReg = SlFilterW2K.AddReg
AddService = SlFilter,SlFilterW2K.Service
[SlFilterW2K.AddReg]
HKR,“UpperFilters”,0x00010008,“SlFilter”
[SlFilterW2K.Service]
DisplayName = %SlFilter.ServiceDesc%
ServiceType = 1
StartType = 3
ErrorControl = 1
ServiceBinary = %12%\SlFilter.sys
; ====================================
; === Common Installation sections ===
; ====================================
[Strings]
SlFilter.ServiceDesc = 1394 BUS Filter Driver
============ INSTALLER SOURCE CODE ============
#include “stdafx.h”
#include “stdio.h”
#include “InitGUID.h”
#include “DevGUID.h”
#include “SetupAPI.h”
/*
////////////////////////////////////////////////////////////////////////////
////////////////////// IsWin98 */
BOOL
IsWin98 ( VOID )
{
BOOL lRespBl;
OSVERSIONINFO lOSVI;
lOSVI.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
lRespBl = GetVersionEx(&lOSVI) && (lOSVI.dwPlatformId ==
VER_PLATFORM_WIN32_WINDOWS) &&
((lOSVI.dwMajorVersion > 4) ||
((lOSVI.dwMajorVersion == 4) && (lOSVI.dwMinorVersion > 0)));
return lRespBl;
}
/*
////////////////////////////////////////////////////////////////////////////
//////////////////// StrToGUID */ BOOL
StrToGUID ( LPCTSTR aGUIDStrPt, GUID& aDstGUID )
{
CHAR lStrPt[37];
BOOL lRespBl;
ULONG lBase;
ULONG lIndex;
lRespBl = FALSE;
if (aGUIDStrPt && (strlen(aGUIDStrPt) == 38) &&
(aGUIDStrPt[0] == ‘{’) && (aGUIDStrPt[37] == ‘}’))
{
CopyMemory(lStrPt,aGUIDStrPt + 1,36);
if ((lStrPt[8] == ‘-’) && (lStrPt[13] == ‘-’) &&
(lStrPt[18] == ‘-’) && (lStrPt[23] == ‘-’))
{
lRespBl = TRUE;
lStrPt[8] =
lStrPt[13] =
lStrPt[18] =
lStrPt[23] =
lStrPt[36] = ‘\0’;
aDstGUID.Data1 =
strtoul(&lStrPt[0],NULL,16);
aDstGUID.Data2 =
(USHORT)strtoul(&lStrPt[9],NULL,16);
aDstGUID.Data3 =
(USHORT)strtoul(&lStrPt[14],NULL,16);
for(lIndex=0; lIndex < 8; lIndex++)
{
lBase = (lIndex < 2)?19:20;
lBase += (lIndex * 2);
lStrPt[0] = lStrPt[lBase + 0];
lStrPt[1] = lStrPt[lBase + 1];
lStrPt[2] = ‘\0’;
aDstGUID.Data4[lIndex] =
(UCHAR)strtoul(&lStrPt[0],NULL,16);
}
}
}
return lRespBl;
}
/*
////////////////////////////////////////////////////////////////////////////
////////// InstallFilterDriver */ BOOL
InstallFilterDriver ( LPCTSTR aInfFileNamePt, LPCTSTR
aInstallInfSectionNamePt, LPCTSTR aDriverToFilterGUIDPt )
{
HINF lInfFileHdl;
HKEY lRegKeyHdl;
GUID lClassGUID;
BOOL lRespBl;
/*
* Convert GUID string into GUID object
*/
lRespBl = StrToGUID(aDriverToFilterGUIDPt,lClassGUID);
if (lRespBl == TRUE)
{
/*
* Open the filter driver INF file
*/
lInfFileHdl =
SetupOpenInfFile(aInfFileNamePt,NULL,INF_STYLE_WIN4,0);
if (lInfFileHdl != INVALID_HANDLE_VALUE)
{
/*
* Install the filter driver services (only
for Win2K)
*/
if (IsWin98() ||
SetupInstallServicesFromInfSection(lInfFileHdl,aInstallInfSectionNamePt,0))
{
/*
* Open the DriverToFilter’s
registry key
*/
lRegKeyHdl =
SetupDiOpenClassRegKey(&aDriverToFilterGUID,KEY_ALL_ACCESS);
if (lRegKeyHdl !=
INVALID_HANDLE_VALUE)
{
/*
* Add the filter driver
into the DriverToFilter’s declaration stack
*/
lRespBl =
SetupInstallFromInfSection( NULL,
lInfFileHdl,
aInstallInfSectionNamePt,
SPINST_REGISTRY,
lRegKeyHdl,
NULL,
0,
NULL,
NULL,
NULL,
NULL);
if (lRespBl == FALSE)
printf(“###[%lu]###
Can’t register filter driver\n”,GetLastError());
RegCloseKey(lRegKeyHdl);
}
else
printf(“###[%lu]### Can’t
open Driver’s GUID key\n”,GetLastError());
}
else
printf(“###[%lu]### Can’t install
filter driver services\n”,GetLastError());
SetupCloseInfFile(lInfFileHdl);
}
else
printf(“###[%lu]### Can’t open INF file
‘%s’\n”,GetLastError(),aInfFileNamePt);
}
else
printf(“### Invalid GUID format\n”);
return lRespBl;
}
/*
////////////////////////////////////////////////////////////////////////////
///////////////////////// main */
INT
main ( INT aArgCount, PCHAR aArgValueArrayPt )
{
INT lRetVal;
lRetVal = -1;
if (aArgCount != 4)
{
if
(InstallFilterDriver(aArgValueArrayPt[1],aArgValueArrayPt[2],aArgValueArrayP
t[3]) == TRUE)
lRetVal = 0;
}
else
printf(“Usage: InstallFilter <inf_file_name>
<inf_install_section_name> <driver_to_filter_guid>\n”);
return lRetVal;
}
-----Original Message-----
From: Venkateswaran Kasirajan [mailto:xxxxx@shuttletech.co.in]
Sent: Wednesday, August 02, 2000 6:57 AM
To: NT Developers Interest List
Subject: [ntdev] UpperFilter to SBP2PORT.SYS
Dear Developers,
I want to install an UpperFilter to SBP2PORT.SYS.
How do I install it ? What registry entries are required to accomplish it ?
Thanks and regards,
Venkateswaran Kasirajan,</driver_to_filter_guid></inf_install_section_name></inf_file_name>