Windows网络与通信程序设计  第11章 有个例子 安装sys之后HANDLE PtOpenControlDevice()
{
// 打开到驱动程序所控制设备的句柄
HANDLE hFile = ::CreateFile(
_T("\\\\.\\PassThru"),
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL); printf("PtOpenControlDevice() : %d \n",hFile); return hFile;
}
返回 -1看了一些帖子,说是上面的名字_T("\\\\.\\PassThru")和inf文件中不一致,但是我看不出来,哪不对劲。
netsf.inf
[code=INIFile]
; -- NETSF.INF --
;
; Passthru driver INF file - this is the INF for the service (protocol)
; part.
;
; Copyright (c) 1993-2001, Microsoft Corporation
;
; ----------------------------------------------------------------------
; Notes:
; 0. The term "filter" is used in this INF to refer to an NDIS IM driver that
;    implements a 1:1 relationship between upper and lower bindings.
;
; 1. Items specifically required for a filter have been ed with
;    "!!--Filter Specific--!!" keyword
; 2. In general a filter DOES NOT require a notify object for proper installation.
;    A notify object is only required if one wants to have better control
;    over binding operations or if one wants to receive notifications
;    when other components get installed/removed/bound/unbound.
;    Since Windows 2000 systems do not have support for CopyINF directive,
;    a notify object is required to programmatically copy the miniport INF  
;    file to the system INF directory. Previous versions of this INF file
;    erroneously used to copy the INF files directly by using the CopyFiles 
;    directive.
;    On Windows XP, you can install a filter IM without a notify object.
;    by following the instructions in (4).
;
; 3. If you want to use this INF file with your own IM driver, please
;    make the following modifications:
;    File netsf.inf
;    --------------
;    a. In section [SourceDiskFiles] and [Passthru.Files.Sys]
;       change passthru.sys to the name of your own driver binary.
;    b. In section [Passthru.ndi.AddReg], change values of
;       BindForm and MiniportId to appropriate values.
;    File netsf_m.inf
;    ----------------
;    a. Replace MS_PassthruMP with InfId of your miniport.
;    b. In section [PassthruMP.AddService],
;       change ServiceBinary appropriately.
;    c. In section [PassthruMP.ndi.AddReg],
;       change "Passthru" in the line having "Service"
;       to reflect the appropriate name
;
;
; ----------------------------------------------------------------------[Version]
Signature  = "$Windows NT$"
Class      = NetService
ClassGUID  = {4D36E974-E325-11CE-BFC1-08002BE10318}
Provider   = %Msft%
DriverVer  = 06/24/1999,5.00.2071.1
[Manufacturer]
%Msft% = MSFT[ControlFlags];=========================================================================
;
;=========================================================================[MSFT]
%Passthru_Desc% = Passthru.ndi, ms_passthru[Passthru.ndi]
AddReg          = Passthru.ndi.AddReg, Passthru.AddReg
Characteristics = 0x4410 ;  NCF_FILTER | NCF_NDIS_PROTOCOL !--Filter Specific--!!
CopyFiles       = Passthru.Files.Sys
CopyInf         = netsf_m.inf[Passthru.ndi.Remove]
DelFiles = Passthru.Files.Sys[Passthru.ndi.Services]
AddService = Passthru,, Passthru.AddService[Passthru.AddService]
DisplayName    = %PassthruService_Desc%
ServiceType    = 1 ;SERVICE_KERNEL_DRIVER
StartType      = 3 ;SERVICE_DEMAND_START
ErrorControl   = 1 ;SERVICE_ERROR_NORMAL
ServiceBinary  = %12%\passthru.sys
LoadOrderGroup = PNP_TDI
AddReg         = Passthru.AddService.AddReg
[Passthru.AddService.AddReg]
; ----------------------------------------------------------------------
; Add any miniport-specific parameters here.  These are params that your
; filter device is going to use.
;
;HKR, Parameters, ParameterName,  0x10000, "MultiSz", "Parameter", "Value"
;HKR, Parameters, ParameterName2, 0x10001, 4
; ----------------------------------------------------------------------
; File copy
;
[SourceDisksNames]
1=%DiskDescription%,"",,[SourceDisksFiles]
passthru.sys=1[DestinationDirs]
DefaultDestDir = 12
Passthru.Files.Sys   = 12   ; %windir%\System32\drivers[Passthru.Files.Sys]
passthru.sys,,,2; ----------------------------------------------------------------------
; Filter Install
;[Passthru.ndi.AddReg]
HKR, Ndi, HelpText, , %Passthru_HELP%; ----------------------------------------------------------------------
; !!--Filter Specific--!!
;
; Note:
; 1. Other components may also have UpperRange/LowerRange but for filters
;    the value of both of them must be noupper/nolower
; 2. The value FilterClass is required.
; 3. The value Service is required
; 4. FilterDeviceInfId is the InfId of the filter device (miniport) that will
;    be installed for each filtered adapter.
;    In this case this is ms_passthrump (refer to netsf_m.inf)
;
HKR, Ndi,            FilterClass,         , failover
HKR, Ndi,            FilterDeviceInfId,   , ms_passthrump
HKR, Ndi,            Service,             , Passthru
HKR, Ndi\Interfaces, UpperRange,          , noupper
HKR, Ndi\Interfaces, LowerRange,          , nolower
HKR, Ndi\Interfaces, FilterMediaTypes,    , "ethernet, tokenring, fddi, wan"[Passthru.AddReg]
; The following key is Required
; The following key is Passthru specific
HKR, Parameters, Param1, 0, 4; ----------------------------------------------------------------------
[Strings]
Msft = "Microsoft"
DiskDescription = "Microsoft Passthru Driver Disk"Passthru_Desc = "Passthru Driver"
Passthru_HELP = "Passthru Driver"
PassthruService_Desc = "Passthru Service"[/code]
netsf_m.inf
[code=INIFile]
; -- NETSF_M.INF --
;
; Passsthru Miniport INF file
;
; Copyright (c) 1993-1999, Microsoft Corporation; ----------------------------------------------------------------------
; Notes:
; 0. The term "filter" is used here to refer to an NDIS IM driver that
;    implements a 1:1 relationship between upper and lower bindings.
; 1. Items specifically required for a filter have been ed with
;    "!!--Filter Specific--!!" keyword
; 2. A filter DOES NOT require a notify object for proper installation.
;    A notify object is only required if one wants to have better control
;    over binding operations or if one wants to receive notifications
;    when other components get installed/removed/bound/unbound.
;    This sample uses a notify object as an example only. If you do not
;    want to use a notify object, please comment out the lines that add
;    ClsId and ComponentDll registry keys.
; ----------------------------------------------------------------------[Version]
signature  = "$Windows NT$"
Class      = Net
ClassGUID  = {4d36e972-e325-11ce-bfc1-08002be10318}
Provider   = %Msft%
DriverVer  = 06/24/1999,5.00.2071.1[ControlFlags]
ExcludeFromSelect = ms_passthrump[DestinationDirs]
DefaultDestDir=12
; No files to copy [Manufacturer]
%Msft% = MSFT[MSFT]
%PassthruMP_Desc% = PassthruMP.ndi, ms_passthrump[PassthruMP.ndi]
Characteristics = 0x29 ;NCF_NOT_USER_REMOVABLE | NCF_VIRTUAL | NCF_HIDDEN
CopyFiles = [PassthruMP.ndi.Services]
AddService = Passthru,0x2, PassthruMP.AddService
[PassthruMP.AddService]
ServiceType    = 1 ;SERVICE_KERNEL_DRIVER
StartType      = 3 ;SERVICE_DEMAND_START
ErrorControl   = 1 ;SERVICE_ERROR_NORMAL
ServiceBinary  = %12%\passthru.sys
[PassthruMP.AddService.AddReg]
; ----------------------------------------------------------------------
; Add any miniport-specific parameters here.  These are params that your
; filter device is going to use.
;
;HKR, Parameters, ParameterName,  0x10000, "MultiSz", "Parameter", "Value"
;HKR, Parameters, ParameterName2, 0x10001, 4[Strings]
Msft = "Microsoft"
PassthruMP_Desc = "Passthru Miniport"[SourceDisksNames]
;None [SourceDisksFiles]
;None[/code]请大家看看,帮帮忙。