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]请大家看看,帮帮忙。
{
// 打开到驱动程序所控制设备的句柄
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]请大家看看,帮帮忙。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货