Subversion Repositories f9daq

Compare Revisions

Ignore whitespace Rev 177 → Rev 178

/drivers/wiener_pcivme/pcivme Package/Win8.1Release/pcivme Package.log
0,0 → 1,20
Build started 9.5.2014 10:19:28.
1>Project "C:\home\rok\wiener_pcivme_new\pcivme Package\pcivme Package.vcxproj" on node 2 (Build target(s)).
1>Inf2Cat:
C:\Program Files\Windows Kits\8.1\bin\x86\inf2cat.exe /os:6_3_x86 /driver:"C:\home\rok\wiener_pcivme_new\Win8.1Release\pcivme Package\\"
..........................
Signability test complete.
Errors:
None
Warnings:
None
Catalog generation complete.
C:\home\rok\wiener_pcivme_new\Win8.1Release\pcivme Package\pcivme.cat
1>Done Building Project "C:\home\rok\wiener_pcivme_new\pcivme Package\pcivme Package.vcxproj" (Build target(s)).
 
Build succeeded.
 
Time Elapsed 00:00:01.86
/drivers/wiener_pcivme/pcivme Package/Win8.1Release/pcivmePackage.Build.CppClean.log
0,0 → 1,10
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win8.1release\pcivme package\pcivme.cat
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8.1release\inf2cat-expand.4252.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8.1release\inf2cat-expand.4252.write.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8.1release\inf2cat-expand.5104.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8.1release\inf2cat-expand.5104.write.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8.1release\inf2cat-expand.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8.1release\inf2cat-expand.write.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8.1release\inf2cat.command.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8.1release\inf2cat.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8.1release\inf2cat.write.1.tlog
/drivers/wiener_pcivme/pcivme Package/pcivme Package.vcxproj.user
0,0 → 1,12
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|Win32'">
<SignMode>Off</SignMode>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|Win32'">
<TestCertificate>CN="WDKTestCert f9daq,130420202756907596" | 0151AB799219824083D69252DB1123D19497D981</TestCertificate>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'">
<TestCertificate>CN="WDKTestCert f9daq,130456734665934551" | 07A72C2F56048EA2BFE412C6E93F08D55191ABC8</TestCertificate>
</PropertyGroup>
</Project>
/drivers/wiener_pcivme/pcivme Package/Win8.1Debug/pcivme Package.log
0,0 → 1,20
Build started 14.4.2014 14:20:41.
1>Project "C:\home\rok\wiener_pcivme_new\pcivme Package\pcivme Package.vcxproj" on node 2 (Build target(s)).
1>Inf2Cat:
C:\Program Files\Windows Kits\8.1\bin\x86\inf2cat.exe /os:6_3_x86 /driver:"C:\home\rok\wiener_pcivme_new\Win8.1Debug\pcivme Package\\"
..........................
Signability test complete.
Errors:
None
Warnings:
None
Catalog generation complete.
C:\home\rok\wiener_pcivme_new\Win8.1Debug\pcivme Package\pcivme.cat
1>Done Building Project "C:\home\rok\wiener_pcivme_new\pcivme Package\pcivme Package.vcxproj" (Build target(s)).
 
Build succeeded.
 
Time Elapsed 00:00:00.80
/drivers/wiener_pcivme/pcivme Package/Win8.1Debug/pcivmePackage.Build.CppClean.log
0,0 → 1,14
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win8.1debug\pcivme package\pcivme.cat
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win8.1debug\pcivmepackage.cer
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8.1debug\inf2cat-expand.3084.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8.1debug\inf2cat-expand.3084.write.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8.1debug\inf2cat-expand.5916.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8.1debug\inf2cat-expand.5916.write.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8.1debug\inf2cat-expand.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8.1debug\inf2cat-expand.write.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8.1debug\inf2cat.command.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8.1debug\inf2cat.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8.1debug\inf2cat.write.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8.1debug\signtool.command.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8.1debug\signtool.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8.1debug\signtool.write.1.tlog
/drivers/wiener_pcivme/pcivme Package/Win7Release/pcivme Package.log
0,0 → 1,20
Build started 10.2.2014 10:11:50.
1>Project "C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\pcivme Package\pcivme Package.vcxproj" on node 2 (Rebuild target(s)).
1>Inf2Cat:
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\inf2cat.exe /os:7_x86 /driver:"C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win7Release\pcivme Package\\"
.........................
Signability test complete.
Errors:
None
Warnings:
None
Catalog generation complete.
C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win7Release\pcivme Package\pcivme.cat
1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\pcivme Package\pcivme Package.vcxproj" (Rebuild target(s)).
 
Build succeeded.
 
Time Elapsed 00:00:00.30
/drivers/wiener_pcivme/pcivme Package/Win7Release/pcivmePackage.Build.CppClean.log
0,0 → 1,10
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win7release\pcivme package\pcivme.cat
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win7release\inf2cat-expand.1444.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win7release\inf2cat-expand.1444.write.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win7release\inf2cat-expand.960.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win7release\inf2cat-expand.960.write.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win7release\inf2cat-expand.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win7release\inf2cat-expand.write.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win7release\inf2cat.command.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win7release\inf2cat.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win7release\inf2cat.write.1.tlog
/drivers/wiener_pcivme/pcivme Package/Win8Release/pcivme Package.log
0,0 → 1,20
Build started 10.2.2014 10:11:49.
1>Project "C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\pcivme Package\pcivme Package.vcxproj" on node 2 (Rebuild target(s)).
1>Inf2Cat:
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\inf2cat.exe /os:8_x86 /driver:"C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win8Release\pcivme Package\\"
.........................
Signability test complete.
Errors:
None
Warnings:
None
Catalog generation complete.
C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win8Release\pcivme Package\pcivme.cat
1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\pcivme Package\pcivme Package.vcxproj" (Rebuild target(s)).
 
Build succeeded.
 
Time Elapsed 00:00:00.46
/drivers/wiener_pcivme/pcivme Package/Win8Release/pcivmePackage.Build.CppClean.log
0,0 → 1,10
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win8release\pcivme package\pcivme.cat
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8release\inf2cat-expand.2972.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8release\inf2cat-expand.2972.write.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8release\inf2cat-expand.548.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8release\inf2cat-expand.548.write.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8release\inf2cat-expand.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8release\inf2cat-expand.write.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8release\inf2cat.command.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8release\inf2cat.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8release\inf2cat.write.1.tlog
/drivers/wiener_pcivme/pcivme Package/Win7Debug/pcivme Package.log
0,0 → 1,25
Build started 10.2.2014 10:11:50.
1>Project "C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\pcivme Package\pcivme Package.vcxproj" on node 2 (Rebuild target(s)).
1>Inf2Cat:
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\inf2cat.exe /os:7_x86 /driver:"C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win7Debug\pcivme Package\\"
.........................
Signability test complete.
Errors:
None
Warnings:
None
Catalog generation complete.
C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win7Debug\pcivme Package\pcivme.cat
DriverTestSign:
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\signtool.exe sign /ph /sha1 "582A29F728D647902CAA175FC6F560D6BB7011DD"
Done Adding Additional Store
Successfully signed: C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win7Debug\pcivme Package\pcivme.cat
1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\pcivme Package\pcivme Package.vcxproj" (Rebuild target(s)).
 
Build succeeded.
 
Time Elapsed 00:00:00.33
/drivers/wiener_pcivme/pcivme Package/Win7Debug/pcivmePackage.Build.CppClean.log
0,0 → 1,14
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win7debug\pcivme package\pcivme.cat
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win7debug\pcivmepackage.cer
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win7debug\inf2cat-expand.3180.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win7debug\inf2cat-expand.3180.write.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win7debug\inf2cat-expand.6020.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win7debug\inf2cat-expand.6020.write.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win7debug\inf2cat-expand.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win7debug\inf2cat-expand.write.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win7debug\inf2cat.command.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win7debug\inf2cat.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win7debug\inf2cat.write.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win7debug\signtool.command.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win7debug\signtool.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win7debug\signtool.write.1.tlog
/drivers/wiener_pcivme/pcivme Package/Win8Debug/pcivme Package.log
0,0 → 1,25
Build started 10.2.2014 10:11:49.
1>Project "C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\pcivme Package\pcivme Package.vcxproj" on node 2 (Rebuild target(s)).
1>Inf2Cat:
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\inf2cat.exe /os:8_x86 /driver:"C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win8Debug\pcivme Package\\"
.........................
Signability test complete.
Errors:
None
Warnings:
None
Catalog generation complete.
C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win8Debug\pcivme Package\pcivme.cat
DriverTestSign:
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\signtool.exe sign /ph /sha1 "582A29F728D647902CAA175FC6F560D6BB7011DD"
Done Adding Additional Store
Successfully signed: C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win8Debug\pcivme Package\pcivme.cat
1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\pcivme Package\pcivme Package.vcxproj" (Rebuild target(s)).
 
Build succeeded.
 
Time Elapsed 00:00:00.61
/drivers/wiener_pcivme/pcivme Package/Win8Debug/pcivmePackage.Build.CppClean.log
0,0 → 1,14
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win8debug\pcivme package\pcivme.cat
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win8debug\pcivmepackage.cer
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8debug\inf2cat-expand.1500.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8debug\inf2cat-expand.1500.write.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8debug\inf2cat-expand.5664.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8debug\inf2cat-expand.5664.write.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8debug\inf2cat-expand.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8debug\inf2cat-expand.write.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8debug\inf2cat.command.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8debug\inf2cat.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8debug\inf2cat.write.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8debug\signtool.command.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8debug\signtool.read.1.tlog
c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme package\win8debug\signtool.write.1.tlog
/drivers/wiener_pcivme/pcivme Package/pcivme Package.vcxproj.filters
0,0 → 1,9
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Driver Files">
<UniqueIdentifier>{8E41214B-6785-4CFE-B992-037D68949A14}</UniqueIdentifier>
<Extensions>inf;inv;inx;mof;mc;</Extensions>
</Filter>
</ItemGroup>
</Project>
/drivers/wiener_pcivme/pcivme Package/pcivme Package.vcxproj
0,0 → 1,334
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Win8.1 Debug|Win32">
<Configuration>Win8.1 Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Win8.1 Release|Win32">
<Configuration>Win8.1 Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Win8 Debug|Win32">
<Configuration>Win8 Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Win8 Release|Win32">
<Configuration>Win8 Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Win7 Debug|Win32">
<Configuration>Win7 Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Win7 Release|Win32">
<Configuration>Win7 Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Win8.1 Debug|x64">
<Configuration>Win8.1 Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Win8.1 Release|x64">
<Configuration>Win8.1 Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Win8 Debug|x64">
<Configuration>Win8 Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Win8 Release|x64">
<Configuration>Win8 Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Win7 Debug|x64">
<Configuration>Win7 Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Win7 Release|x64">
<Configuration>Win7 Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{48C072A6-A36E-4090-B208-F0084AC06272}</ProjectGuid>
<TemplateGuid>{4605da2c-74a5-4865-98e1-152ef136825f}</TemplateGuid>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
<Configuration>Win8.1 Debug</Configuration>
<Platform Condition="'$(Platform)' == ''">Win32</Platform>
<RootNamespace>pcivme_Package</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|Win32'" Label="Configuration">
<TargetVersion>WindowsV6.3</TargetVersion>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
<ConfigurationType>Utility</ConfigurationType>
<DriverType>Package</DriverType>
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|Win32'" Label="Configuration">
<TargetVersion>WindowsV6.3</TargetVersion>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
<ConfigurationType>Utility</ConfigurationType>
<DriverType>Package</DriverType>
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'" Label="Configuration">
<TargetVersion>Windows8</TargetVersion>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
<ConfigurationType>Utility</ConfigurationType>
<DriverType>Package</DriverType>
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'" Label="Configuration">
<TargetVersion>Windows8</TargetVersion>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
<ConfigurationType>Utility</ConfigurationType>
<DriverType>Package</DriverType>
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'" Label="Configuration">
<TargetVersion>Windows7</TargetVersion>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
<ConfigurationType>Utility</ConfigurationType>
<DriverType>Package</DriverType>
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'" Label="Configuration">
<TargetVersion>Windows7</TargetVersion>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
<ConfigurationType>Utility</ConfigurationType>
<DriverType>Package</DriverType>
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|x64'" Label="Configuration">
<TargetVersion>WindowsV6.3</TargetVersion>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
<ConfigurationType>Utility</ConfigurationType>
<DriverType>Package</DriverType>
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|x64'" Label="Configuration">
<TargetVersion>WindowsV6.3</TargetVersion>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
<ConfigurationType>Utility</ConfigurationType>
<DriverType>Package</DriverType>
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'" Label="Configuration">
<TargetVersion>Windows8</TargetVersion>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
<ConfigurationType>Utility</ConfigurationType>
<DriverType>Package</DriverType>
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'" Label="Configuration">
<TargetVersion>Windows8</TargetVersion>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
<ConfigurationType>Utility</ConfigurationType>
<DriverType>Package</DriverType>
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'" Label="Configuration">
<TargetVersion>Windows7</TargetVersion>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
<ConfigurationType>Utility</ConfigurationType>
<DriverType>Package</DriverType>
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'" Label="Configuration">
<TargetVersion>Windows7</TargetVersion>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
<ConfigurationType>Utility</ConfigurationType>
<DriverType>Package</DriverType>
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|Win32'">
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
<EnableDeployment>False</EnableDeployment>
<RemoveDriver>True</RemoveDriver>
<HardwareIdString />
<CommandLine />
<DeployFiles />
<EnableVerifier>False</EnableVerifier>
<AllDrivers>False</AllDrivers>
<VerifyProjectOutput>True</VerifyProjectOutput>
<VerifyDrivers />
<VerifyFlags>133563</VerifyFlags>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|Win32'">
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
<EnableDeployment>False</EnableDeployment>
<RemoveDriver>True</RemoveDriver>
<HardwareIdString />
<CommandLine />
<DeployFiles />
<EnableVerifier>False</EnableVerifier>
<AllDrivers>False</AllDrivers>
<VerifyProjectOutput>True</VerifyProjectOutput>
<VerifyDrivers />
<VerifyFlags>133563</VerifyFlags>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'">
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
<EnableDeployment>False</EnableDeployment>
<RemoveDriver>True</RemoveDriver>
<HardwareIdString />
<CommandLine />
<DeployFiles />
<EnableVerifier>False</EnableVerifier>
<AllDrivers>False</AllDrivers>
<VerifyProjectOutput>True</VerifyProjectOutput>
<VerifyDrivers />
<VerifyFlags>133563</VerifyFlags>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'">
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
<EnableDeployment>False</EnableDeployment>
<RemoveDriver>True</RemoveDriver>
<HardwareIdString />
<CommandLine />
<DeployFiles />
<EnableVerifier>False</EnableVerifier>
<AllDrivers>False</AllDrivers>
<VerifyProjectOutput>True</VerifyProjectOutput>
<VerifyDrivers />
<VerifyFlags>133563</VerifyFlags>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'">
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
<EnableDeployment>False</EnableDeployment>
<RemoveDriver>True</RemoveDriver>
<HardwareIdString />
<CommandLine />
<DeployFiles />
<EnableVerifier>False</EnableVerifier>
<AllDrivers>False</AllDrivers>
<VerifyProjectOutput>True</VerifyProjectOutput>
<VerifyDrivers />
<VerifyFlags>133563</VerifyFlags>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'">
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
<EnableDeployment>False</EnableDeployment>
<RemoveDriver>True</RemoveDriver>
<HardwareIdString />
<CommandLine />
<DeployFiles />
<EnableVerifier>False</EnableVerifier>
<AllDrivers>False</AllDrivers>
<VerifyProjectOutput>True</VerifyProjectOutput>
<VerifyDrivers />
<VerifyFlags>133563</VerifyFlags>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|x64'">
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
<EnableDeployment>False</EnableDeployment>
<RemoveDriver>True</RemoveDriver>
<HardwareIdString />
<CommandLine />
<DeployFiles />
<EnableVerifier>False</EnableVerifier>
<AllDrivers>False</AllDrivers>
<VerifyProjectOutput>True</VerifyProjectOutput>
<VerifyDrivers />
<VerifyFlags>133563</VerifyFlags>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|x64'">
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
<EnableDeployment>False</EnableDeployment>
<RemoveDriver>True</RemoveDriver>
<HardwareIdString />
<CommandLine />
<DeployFiles />
<EnableVerifier>False</EnableVerifier>
<AllDrivers>False</AllDrivers>
<VerifyProjectOutput>True</VerifyProjectOutput>
<VerifyDrivers />
<VerifyFlags>133563</VerifyFlags>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'">
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
<EnableDeployment>False</EnableDeployment>
<RemoveDriver>True</RemoveDriver>
<HardwareIdString />
<CommandLine />
<DeployFiles />
<EnableVerifier>False</EnableVerifier>
<AllDrivers>False</AllDrivers>
<VerifyProjectOutput>True</VerifyProjectOutput>
<VerifyDrivers />
<VerifyFlags>133563</VerifyFlags>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'">
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
<EnableDeployment>False</EnableDeployment>
<RemoveDriver>True</RemoveDriver>
<HardwareIdString />
<CommandLine />
<DeployFiles />
<EnableVerifier>False</EnableVerifier>
<AllDrivers>False</AllDrivers>
<VerifyProjectOutput>True</VerifyProjectOutput>
<VerifyDrivers />
<VerifyFlags>133563</VerifyFlags>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'">
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
<EnableDeployment>False</EnableDeployment>
<RemoveDriver>True</RemoveDriver>
<HardwareIdString />
<CommandLine />
<DeployFiles />
<EnableVerifier>False</EnableVerifier>
<AllDrivers>False</AllDrivers>
<VerifyProjectOutput>True</VerifyProjectOutput>
<VerifyDrivers />
<VerifyFlags>133563</VerifyFlags>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'">
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
<EnableDeployment>False</EnableDeployment>
<RemoveDriver>True</RemoveDriver>
<HardwareIdString />
<CommandLine />
<DeployFiles />
<EnableVerifier>False</EnableVerifier>
<AllDrivers>False</AllDrivers>
<VerifyProjectOutput>True</VerifyProjectOutput>
<VerifyDrivers />
<VerifyFlags>133563</VerifyFlags>
</PropertyGroup>
<ItemGroup>
<FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\pcivme\pcivme.vcxproj">
<Project>{2ac3560d-0575-4214-a7aa-04f7a8de84be}</Project>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
/drivers/wiener_pcivme/pcivme Package
Property changes:
Added: svn:global-ignores
## -0,0 +1,4 ##
+Win7Debug
+Win7Release
+Win8Debug
+Win8Release
Index: wiener_pcivme/pcivme/SOURCE/pcivme_drv.c
===================================================================
--- wiener_pcivme/pcivme/SOURCE/pcivme_drv.c (nonexistent)
+++ wiener_pcivme/pcivme/SOURCE/pcivme_drv.c (revision 178)
@@ -0,0 +1,1506 @@
+//-------------------------------------------------------------------------
+// WINNT driver for PCIVME interface from ARW Elektronik, Germany ---------
+// the main body of the driver
+//
+// (c) 1999-2004 ARW Elektronik
+//
+// this source code is published under GPL (Open Source). You can use, redistrubute and
+// modify it unless this header is not modified or deleted. No warranty is given that
+// this software will work like expected.
+// This product is not authorized for use as critical component in life support systems
+// wihout the express written approval of ARW Elektronik Germany.
+//
+// Please announce changes and hints to ARW Elektronik
+//
+// $Log: pcivme_drv.c,v $
+// Revision 1.3 2004/07/24 07:07:26 klaus
+// Update copyright to 2004
+//
+//
+// what who when
+// started AR 15.06.1999
+// first release 1.0 AR 17.10.1999
+// fixed error in PLX9050Bug AR 28.02.2000
+// PLX9050Bugfix bug fixed AR 03.03.2000
+// PCICC32 CAMAC Interface conflict solved AR 03.03.2000
+// Version 1.1 released AR 03.03.2000
+// register all used resources, the idle too AR 25.11.2001
+// changed resource allocation caused by WIN2000 AR 08.06.2002
+//
+
+//-------------------------------------------------------------------------
+// INCLUDES
+//
+#include <initguid.h>
+#include <wdmguid.h>
+#include <ntddk.h>
+#include <devioctl.h>
+#include <pcivme_drv.h>
+#include <pcivme_v.h>
+#include <pcivme_io.h>
+#include <pcivme_i.h>
+#include <pcivme.h>
+#include <pciif.h>
+#include <pcivme_fifo.h>
+//------------------------------------------------------------------------
+// DEFINES
+//
+#define arraysize(p) (sizeof(p)/sizeof((p)[0]))
+
+#ifndef DWORD
+#define DWORD ULONG
+#endif
+
+#ifndef WORD
+#define WORD USHORT
+#endif
+
+#define CTL_INDEX(x) ((x >> 2) & 0x7FF) // get user control code as index
+#define IRQ_LIST_LENGTH 128 // max count of irqs in FIFO for each file_obj
+
+#define RESOURCE_ENTRY_COUNT 6 // WIN2000 forces to claim all entries
+
+#define DOS_DEVICE_NAME L"\\DosDevices\\PCIVME:"
+
+//------------------------------------------------------------------------
+// GLOBALS
+//
+
+//------------------------------------------------------------------------
+// FUNCTIONS
+//
+
+//------------------------------------------------------------------------
+// exchange the pointer to Bus Error
+//
+PBOOLEAN ExchangePointer(PBOOLEAN *current, PBOOLEAN next)
+{
+ PBOOLEAN pb;
+
+ pb = *current;
+ *current = next;
+
+ return pb;
+}
+
+//------------------------------------------------------------------------
+// get the vmemm number out of the filename
+//
+NTSTATUS InterpreteFileName(PCHAR name, int *nVmemm)
+{
+ char *ptr = name;
+ char *n = "vmemm";
+ int h = -1; // high part
+ int l = -1; // low part
+
+ if (*ptr == '\\') ptr++; // jump over leading ...
+
+ while (*n) // compare the basename
+ if (*n == tolower(*ptr))
+ {
+ n++;
+ ptr++;
+ }
+ else
+ return STATUS_NO_SUCH_FILE;
+
+ h = *ptr - '0'; // get the number
+ ptr++;
+ l = *ptr - '0';
+
+ if (*ptr == 0) // still over the end ??
+ {
+ l = h;
+ h = 0;
+ }
+ else
+ ptr++;
+
+ if ((h < 0) || (l < 0) || (*ptr != 0)) // anything wrong ??
+ return STATUS_NO_SUCH_FILE;
+
+ *nVmemm = (h * 10) + l; // calculate number
+
+ if (*nVmemm >= PCIVME_MAX_VMEMM) // out of range ??
+ return STATUS_NO_SUCH_FILE;
+
+ return STATUS_SUCCESS;
+}
+
+//------------------------------------------------------------------------
+// the ultimate driver unload
+VOID PCIVMEUnload(PDRIVER_OBJECT driverObj)
+{
+ int i;
+ UNICODE_STRING symbol_name;
+ if (!driverObj->DeviceObject) {
+ KdPrint(("PCIVMEUnload() DeviceObject does not exist \n"));
+ return;
+ }
+ DEVICE_EXT *ext = (DEVICE_EXT*)(driverObj->DeviceObject->DeviceExtension);
+ int nPCIADAs = ext->nPCIADAs;
+ PCIADA *pciada;
+
+ KdPrint(("PCIVMEUnload() InitState %d \n", ext->nInitState ));
+
+
+ if (ext->nInitState!=100) return;
+
+ switch (ext->nInitState)
+ {
+ case 8:
+ case 7:
+ // stop interrupts and shut off
+ PCIVMEDeInitPCIADAs(driverObj->DeviceObject);
+ PCIVMEDisConnectInterrupt(driverObj->DeviceObject);
+
+ // remove interrupt lists
+ for (i = 0; i < nPCIADAs; i++)
+ {
+ pciada = &ext->pciada[i];
+
+ // removeQueueFromList(...)
+ while (IsListEmpty(&pciada->IrqListList) == FALSE)
+ {
+ PLIST_ENTRY pList;
+ FIFO_LIST *next;
+
+ KdPrint(("RemoveHeadList(0x%08x)\n", &pciada->IrqListList));
+ pList = RemoveHeadList(&pciada->IrqListList);
+ next = CONTAINING_RECORD(pList, FIFO_LIST, entry);
+
+ ExFreePool((PVOID)next);
+ }
+ }
+ case 6:
+ // InitializeIRPQueue has no counterpart
+ case 5:
+ // KeInitializeDpc has no counterpart
+ case 4:
+ // release io spaces
+ for (i = 0; i < nPCIADAs; i++)
+ {
+ pciada = &ext->pciada[i];
+
+ if (pciada->pvVirtLcr != NULL)
+ MmUnmapIoSpace(pciada->pvVirtLcr, LCR_SPACE);
+ if (pciada->pvVirtIfr != NULL)
+ MmUnmapIoSpace(pciada->pvVirtIfr, IFR_SPACE);
+ }
+ case 3:
+ // HalGetInterruptVector has no counterpart
+ case 2:
+ // HalTranslateBusAddress has no counterpart
+ case 1:
+ // PCIVMEFreeResources(driverObj->DeviceObject); // not used in pnp
+ default:
+ case 0:
+ RtlInitUnicodeString(&symbol_name, DOS_DEVICE_NAME);
+
+ // delete the symbolicLink in the registry
+ IoDeleteSymbolicLink( &symbol_name);
+
+ // delete the deviceObject
+
+ if (ext->LowerDeviceObject) IoDetachDevice(ext->LowerDeviceObject);
+ IoDeleteDevice(driverObj->DeviceObject);
+ }
+
+ KdPrint(("PCIVMEUnload() OK.\n"));
+}
+
+
+//------------------------------------------------------------------------
+// called at CreateFile()
+NTSTATUS PCIVMEOpen(PDEVICE_OBJECT deviceObj, PIRP Irp)
+{
+ NTSTATUS result = STATUS_SUCCESS;
+ ANSI_STRING name;
+ int nVmemm;
+ int i;
+ DEVICE_EXT *pDevExt = (DEVICE_EXT *)(deviceObj->DeviceExtension);
+ PCIADA *pciada;
+ FILE_OBJ *file_obj = (FILE_OBJ *)NULL;
+
+ name.Buffer = NULL;
+ name.MaximumLength = 80;
+
+ result = RtlUnicodeStringToAnsiString(&name, &(Irp->Tail.Overlay.OriginalFileObject->FileName), TRUE);
+ if (result != STATUS_SUCCESS) goto fin;
+
+ result = InterpreteFileName(name.Buffer, &nVmemm);
+ if (result != STATUS_SUCCESS) goto fin;
+
+ KdPrint(("PCIVMEOpen(%d)\n", nVmemm));
+ RtlFreeAnsiString(&name);
+
+ file_obj = (FILE_OBJ *)ExAllocatePoolWithTag(NonPagedPool, sizeof(FILE_OBJ),'nepo');
+ if (file_obj == (FILE_OBJ *)NULL)
+ {
+ result = STATUS_NO_MEMORY;
+ goto fin;
+ }
+
+ file_obj->uwAssociatedVMEMM = (USHORT) nVmemm;
+ file_obj->bAddressModifier = 0x39;
+ file_obj->bAccessType = BYTE_ACCESS;
+ file_obj->bIncrement = BYTE_ACCESS; // increments each byte
+ file_obj->dwAccessBase = 0; // normal setting for all but extended
+
+ file_obj->bQueueIrq = FALSE;
+ result = InitializeFIFO(IRQ_LIST_LENGTH, &file_obj->pIrqListHandle);
+ if (result != STATUS_SUCCESS) goto fin;
+
+ Irp->Tail.Overlay.OriginalFileObject->FsContext = (PVOID)file_obj;
+
+ result = PCIVMEScanVMEMM(deviceObj);
+ if (result != STATUS_SUCCESS) goto fin;
+
+ for (i = 0; i < pDevExt->nPCIADAs; i++)
+ {
+ pciada = &pDevExt->pciada[i];
+
+ if (pciada->wModuleNumber == nVmemm)
+ {
+ pDevExt->vmemm[nVmemm] = pciada; // create association
+ pciada->dwLinkCount++;
+ break;
+ }
+ }
+
+ if (i >= pDevExt->nPCIADAs)
+ {
+ result = STATUS_NO_SUCH_FILE;
+ goto fin;
+ }
+
+ fin:
+ Irp->IoStatus.Status = result;
+ Irp->IoStatus.Information = 0;
+ IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+ // be careful when releasing allocated memory !
+ if (result != STATUS_SUCCESS)
+ if (file_obj != (FILE_OBJ *)NULL)
+ if (file_obj->pIrqListHandle != (PVOID)NULL)
+ DestroyFIFO(file_obj->pIrqListHandle);
+
+ return result;
+}
+
+//------------------------------------------------------------------------
+// called at close()
+NTSTATUS PCIVMEClose(PDEVICE_OBJECT deviceObj, PIRP Irp)
+{
+ DEVICE_EXT *pDevExt = (DEVICE_EXT *)(deviceObj->DeviceExtension);
+ FILE_OBJ *file_obj = (FILE_OBJ *)NULL;
+ PCIADA *pciada;
+
+ file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext;
+
+ KdPrint(("PCIVMEClose(%d)\n", file_obj->uwAssociatedVMEMM));
+
+ if (file_obj != (FILE_OBJ *)NULL)
+ {
+ pciada = pDevExt->vmemm[file_obj->uwAssociatedVMEMM];
+ pciada->dwLinkCount--;
+
+ // remove the ListEntry(s) associated with this path
+ removeQueueFromList(file_obj, pciada);
+
+ // empty and remove the interrupt queue (if there is anything stored)
+ DestroyFIFO(file_obj->pIrqListHandle);
+
+ ExFreePool(file_obj);
+ Irp->Tail.Overlay.OriginalFileObject->FsContext = (FILE_OBJ *)NULL;
+ }
+
+ KdPrint(("PCIVMEClose OK\n"));
+
+ Irp->IoStatus.Status = STATUS_SUCCESS;
+ Irp->IoStatus.Information = 0;
+ IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+ return STATUS_SUCCESS;
+}
+
+//------------------------------------------------------------------------
+// called at
+NTSTATUS PCIVMEShutdown(PDEVICE_OBJECT deviceObj, PIRP irp )
+{
+ UNREFERENCED_PARAMETER(irp);
+
+ KdPrint(("PCIVMEShutdown()\n"));
+
+ // deinit interfaces and interrupts
+ PCIVMEDeInitPCIADAs(deviceObj);
+
+ KdPrint(("PCIVMEShutdown() OK\n"));
+
+ return STATUS_SUCCESS;
+}
+
+//------------------------------------------------------------------------
+// called at ioctl()
+NTSTATUS PCIVMEDeviceControl(PDEVICE_OBJECT deviceObj, PIRP Irp)
+{
+ PIO_STACK_LOCATION IrpStack;
+ int nIndex;
+
+ IrpStack = IoGetCurrentIrpStackLocation(Irp);
+ nIndex = CTL_INDEX(IrpStack->Parameters.DeviceIoControl.IoControlCode);
+
+ KdPrint(("PCIVMEDeviceControl(%d / 0x%08x)\n", nIndex, Irp->Tail.Overlay.OriginalFileObject));
+
+ if (nIndex > CTL_INDEX(PCIVME_LAST_CTL_CODE))
+ {
+ Irp->IoStatus.Status = STATUS_UNSUCCESSFUL;
+ Irp->IoStatus.Information = 0;
+ IoCompleteRequest(Irp,IO_NO_INCREMENT);
+
+ KdPrint(("PCIVMEDeviceControl() FAIL.\n"));
+
+ return STATUS_UNSUCCESSFUL;
+ }
+
+ return ioctl[nIndex](deviceObj, Irp, IrpStack);
+}
+
+
+//------------------------------------------------------------------------
+// called at read()
+NTSTATUS PCIVMERead(PDEVICE_OBJECT device_Obj, PIRP Irp)
+{
+ NTSTATUS Status = STATUS_SUCCESS;
+ PIO_STACK_LOCATION IrpStack = IoGetCurrentIrpStackLocation(Irp);
+ PVOID pOutputBuffer = ((void *)(MmGetSystemAddressForMdlSafe(Irp->MdlAddress, NormalPagePriority)));
+ LARGE_INTEGER *fileOffset = (LARGE_INTEGER *)&Irp->Tail.Overlay.OriginalFileObject->CurrentByteOffset;
+ FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext;
+ DEVICE_EXT *pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension);
+ PCIADA *pciada = pDevExt->vmemm[file_obj->uwAssociatedVMEMM];
+ register ULONG Address = IrpStack->Parameters.Read.ByteOffset.LowPart + file_obj->dwAccessBase;
+ ULONG storeLength = 0;
+ PBOOLEAN pbPrevBusError;
+
+ KdPrint(("PCIVMERead(%d)\n", file_obj->uwAssociatedVMEMM));
+
+ // do here in between what has to be done -----------------
+ if (Address & file_obj->dwAddressMask) // don't do unaligned transfers
+ Status = STATUS_DATATYPE_MISALIGNMENT;
+ else
+ {
+ register ULONG Length = IrpStack->Parameters.Read.Length;
+ register ULONG blockLength;
+ register ULONG pageAddress;
+ register ULONG toNextPage;
+ KIRQL oldIrql;
+
+ Length &= ~file_obj->dwAddressMask; // align to integer increments
+ storeLength = Length;
+
+ // lock other users out
+ KeAcquireSpinLock(&pciada->AccessLock, &oldIrql);
+
+ // check for modifier
+ if (pciada->bModifier != file_obj->bAddressModifier)
+ {
+ WRITE_REGISTER_UCHAR(pciada->pbModifier, file_obj->bAddressModifier);
+ pciada->bModifier = file_obj->bAddressModifier;
+ }
+
+ // do the read ---
+ file_obj->bBusError = FALSE;
+ pbPrevBusError = ExchangePointer(&pciada->pbBusError, &file_obj->bBusError);
+ while (Length)
+ {
+ pageAddress = Address & ~VME_ADR_MASK;
+ if (pageAddress != pciada->dwVMEPage)
+ {
+ WRITE_REGISTER_ULONG(pciada->pdwVMEAdr, pageAddress);
+ pciada->dwVMEPage = pageAddress;
+ }
+
+ toNextPage = (pageAddress + VME_ADR_MASK + 1) - Address;
+ blockLength = (toNextPage < Length) ? toNextPage : Length;
+
+ KdPrint(("Address 0x%08x, blockLength %d, Length %d\n",
+ Address, blockLength, Length));
+
+ file_obj->fRead(pOutputBuffer , blockLength, (PVOID)((PUCHAR)pciada->pvVME + (Address & VME_ADR_MASK)));
+
+ Length -= blockLength;
+ Address += blockLength;
+ pOutputBuffer = (PVOID)((PUCHAR)pOutputBuffer + blockLength);
+ }
+
+ // release the lock
+ KeReleaseSpinLock(&pciada->AccessLock, oldIrql);
+ ExchangePointer(&pciada->pbBusError, pbPrevBusError);
+ if (file_obj->bBusError) Status = STATUS_ACCESS_VIOLATION;
+
+ if (file_obj->bIncrement) // only when increment to next is on
+ *fileOffset =
+ RtlLargeIntegerAdd(*fileOffset, RtlConvertUlongToLargeInteger(storeLength));
+ }
+ // do here in between what has to be done end -------------
+
+ Irp->IoStatus.Status = Status;
+ Irp->IoStatus.Information = storeLength;
+ IoCompleteRequest(Irp,IO_NO_INCREMENT);
+
+ KdPrint(("PCIVMERead(), Status = 0x%08x\n", Status));
+
+ return Status;
+}
+
+
+//------------------------------------------------------------------------
+// called at write()
+NTSTATUS PCIVMEWrite(PDEVICE_OBJECT device_Obj, PIRP Irp)
+{
+ NTSTATUS Status = STATUS_SUCCESS;
+ PIO_STACK_LOCATION IrpStack = IoGetCurrentIrpStackLocation(Irp);
+ PVOID pInputBuffer = ((void *)(MmGetSystemAddressForMdlSafe(Irp->MdlAddress, NormalPagePriority)));
+ LARGE_INTEGER *fileOffset = (LARGE_INTEGER *)&Irp->Tail.Overlay.OriginalFileObject->CurrentByteOffset;
+ FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext;
+ DEVICE_EXT *pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension);
+ PCIADA *pciada = pDevExt->vmemm[file_obj->uwAssociatedVMEMM];
+ register ULONG Address = IrpStack->Parameters.Write.ByteOffset.LowPart + file_obj->dwAccessBase;
+ ULONG storeLength = 0;
+ PBOOLEAN pbPrevBusError;
+
+ KdPrint(("PCIVMEWrite(%d)\n", file_obj->uwAssociatedVMEMM));
+
+ // do here in between what has to be done -----------------
+ if (Address & file_obj->dwAddressMask) // don't do unaligned transfers
+ Status = STATUS_DATATYPE_MISALIGNMENT;
+ else
+ {
+ register ULONG Length = IrpStack->Parameters.Write.Length;
+ register ULONG blockLength;
+ register ULONG pageAddress;
+ register ULONG toNextPage;
+ KIRQL oldIrql;
+
+ Length &= ~file_obj->dwAddressMask; // align to integer increments
+ storeLength = Length;
+ // check for modifier
+ // lock other users out
+ KeAcquireSpinLock(&pciada->AccessLock, &oldIrql);
+
+ if (pciada->bModifier != file_obj->bAddressModifier)
+ {
+ WRITE_REGISTER_UCHAR(pciada->pbModifier, file_obj->bAddressModifier);
+ pciada->bModifier = file_obj->bAddressModifier;
+ }
+
+ // do the read ---
+ file_obj->bBusError = FALSE;
+ pbPrevBusError = ExchangePointer(&pciada->pbBusError, &file_obj->bBusError);
+ while (Length)
+ {
+ pageAddress = Address & ~VME_ADR_MASK;
+ if (pageAddress != pciada->dwVMEPage)
+ {
+ WRITE_REGISTER_ULONG(pciada->pdwVMEAdr, pageAddress);
+ pciada->dwVMEPage = pageAddress;
+ }
+
+ toNextPage = (pageAddress + VME_ADR_MASK + 1) - Address;
+ blockLength = (toNextPage < Length) ? toNextPage : Length;
+
+ KdPrint(("Address 0x%08x, blockLength %d, Length %d\n",
+ Address, blockLength, Length));
+
+ file_obj->fWrite((PVOID)((PUCHAR)pciada->pvVME + (Address & VME_ADR_MASK)) , blockLength, pInputBuffer);
+
+ Length -= blockLength;
+ Address += blockLength;
+ pInputBuffer = (PVOID)((PUCHAR)pInputBuffer + blockLength);
+ }
+
+ // release the lock
+ KeReleaseSpinLock(&pciada->AccessLock, oldIrql);
+ ExchangePointer(&pciada->pbBusError, pbPrevBusError);
+ if (file_obj->bBusError) Status = STATUS_ACCESS_VIOLATION;
+
+ if (file_obj->bIncrement) // only when increment to next is on
+ *fileOffset = RtlLargeIntegerAdd(*fileOffset, RtlConvertUlongToLargeInteger(storeLength));
+ }
+ // do here in between what has to be done end -------------
+
+ Irp->IoStatus.Status = Status;
+ Irp->IoStatus.Information = storeLength;
+ IoCompleteRequest(Irp,IO_NO_INCREMENT);
+
+ KdPrint(("PCIVMEWrite(), Status = 0x%08x\n", Status));
+
+ return Status;
+}
+
+#ifdef DO_CLEANUP
+//------------------------------------------------------------------------
+// called at cancel of a path
+NTSTATUS PCIVMECancel(PDEVICE_OBJECT device_Obj, PIRP Irp)
+{
+ FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext;
+ PIRP pIrpCancel;
+
+ KdPrint(("PCIVMECancel()\n"));
+
+ // remove all queued IRPs of this file_obj
+ do
+ {
+ pIrpCancel = RemoveIRPfromQueue(device_Obj, file_obj);
+
+ if (pIrpCancel == (PIRP)NULL)
+ {
+ IoReleaseCancelSpinLock(pIrpCancel->CancelIrql);
+ break;
+ }
+ else
+ {
+ IoAcquireCancelSpinLock(pIrpCancel->CancelIrql);
+
+ // mark irp as not pending
+ IoSetCancelRoutine(pIrpCancel, NULL);
+
+ IoReleaseCancelSpinLock(pIrpCancel->CancelIrql);
+
+ pIrpCancel->IoStatus.Status = STATUS_CANCELLED;
+ pIrpCancel->IoStatus.Information = 0;
+ }
+ } while (pIrpCancel != (PIRP)NULL);
+
+ IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+ KdPrint(("PCIVMECancel(OK)\n"));
+
+ return STATUS_SUCCESS;
+}
+#endif
+
+
+// http://read.pudn.com/downloads148/sourcecode/windows/vxd/640413/agp/agplib/init.c__.htm
+NTSTATUS
+QueryBusInterface(
+ IN PDEVICE_OBJECT DeviceObject,
+ OUT PBUS_INTERFACE_STANDARD BusInterface
+ )
+/*++
+
+Routine Description:
+
+ Sends a query-interface IRP to the specified device object
+ to obtain the BUS_INTERFACE_STANDARD interface.
+
+Arguments:
+
+ DeviceObject - Supplies the device object to send the BUS_INTERFACE_STANDARD to
+
+ BusInterface - Returns the bus interface
+
+Return Value:
+
+ STATUS_SUCCESS if successful
+ NTSTATUS if unsuccessful
+
+--*/
+
+{
+ PIRP Irp;
+ KEVENT Event;
+ PIO_STACK_LOCATION IrpSp;
+ IO_STATUS_BLOCK IoStatusBlock;
+ NTSTATUS Status;
+// ULONG ReturnLength;
+
+ KeInitializeEvent( &Event, NotificationEvent, FALSE );
+ Irp = IoBuildSynchronousFsdRequest( IRP_MJ_PNP,
+ DeviceObject,
+ NULL,
+ 0,
+ NULL,
+ &Event,
+ &IoStatusBlock );
+ if (Irp == NULL) {
+ return(STATUS_INSUFFICIENT_RESOURCES);
+ }
+
+ IrpSp = IoGetNextIrpStackLocation( Irp );
+ ASSERT(IrpSp != NULL);
+ Irp->IoStatus.Status = STATUS_NOT_SUPPORTED ;
+ IrpSp->MajorFunction = IRP_MJ_PNP;
+ IrpSp->MinorFunction = IRP_MN_QUERY_INTERFACE;
+ IrpSp->Parameters.QueryInterface.InterfaceType = (LPGUID)&GUID_BUS_INTERFACE_STANDARD;
+ IrpSp->Parameters.QueryInterface.Size = sizeof(BUS_INTERFACE_STANDARD);
+ IrpSp->Parameters.QueryInterface.Version = 1;
+ IrpSp->Parameters.QueryInterface.Interface = (PINTERFACE) BusInterface;
+ IrpSp->Parameters.QueryInterface.InterfaceSpecificData = NULL;
+
+ Status = IoCallDriver(DeviceObject, Irp);
+ if (Status == STATUS_PENDING) {
+ KeWaitForSingleObject( &Event, Executive, KernelMode, FALSE, NULL );
+ Status = Irp->IoStatus.Status;
+ }
+
+ return(Status);
+}
+
+//------------------------------------------------------------------------
+// search for pciada's
+//
+
+NTSTATUS SearchDevices(PDEVICE_OBJECT device_Obj)
+{
+ PCI_SLOT_NUMBER SlotNumber;
+ PCI_COMMON_CONFIG pci_config;
+ PBUS_INTERFACE_STANDARD busInterface;
+ PCIADA *pciada;
+
+ ULONG propertyAddress, length;
+ USHORT FunctionNumber, DeviceNumber;
+ int *found;
+ int i;
+ NTSTATUS status;
+ int BytesRead;
+ KdPrint(("SearchDevices()\n"));
+
+ // prepare structures ----------------------------------------
+ found = &((DEVICE_EXT*)(device_Obj->DeviceExtension))->nPCIADAs;
+ *found = 0;
+ for (i = 0; i < PCIVME_MAX_PCIADA; i++)
+ {
+ pciada = &((DEVICE_EXT*)(device_Obj->DeviceExtension))->pciada[i];
+
+ pciada->Bus = -1;
+ pciada->Slot.u.AsULONG = 0xFFFFFFFF;
+ }
+
+ // search for pciada's ---------------------------------------
+ SlotNumber.u.bits.Reserved = 0;
+ busInterface = (PBUS_INTERFACE_STANDARD)ExAllocatePool(NonPagedPool,
+ sizeof(BUS_INTERFACE_STANDARD));
+ if (busInterface == NULL)
+ {
+ return STATUS_INSUFFICIENT_RESOURCES;
+ }
+ ((DEVICE_EXT*)(device_Obj->DeviceExtension))->busInterface = busInterface;
+ status = QueryBusInterface(device_Obj, busInterface);
+ BytesRead = busInterface->GetBusData(busInterface->Context, PCI_WHICHSPACE_CONFIG, &pci_config, 0, PCI_COMMON_HDR_LENGTH);
+
+ pciada = &((DEVICE_EXT*)(device_Obj->DeviceExtension))->pciada[0];
+
+ //http://www.hollistech.com/Resources/Misc%20articles/getbusdata.htm
+ //IoGetDeviceProperty
+ //There are other differnt methods to send a request to lower layer. One method is
+ //by sending IRP_MN_READ_CONFIG to lower driver. You will recieve
+ //PCI_COMMON_CONFIG structure.
+ // http://msdn.microsoft.com/en-us/library/windows/hardware/ff536890(v=vs.85).aspx
+ // http://www.rdos.net/svn/tags/V9.2.5/watcom/bld/src/win32/miniwdm/dev/wdmdev.c
+
+ if ((pci_config.VendorID == PCIVME_VENDOR_ID) &&
+ (pci_config.DeviceID == PCIVME_DEVICE_ID) &&
+ (pci_config.u.type0.SubSystemID == PCIVME_SUBSYS_ID) &&
+ (pci_config.u.type0.SubVendorID == PCIVME_SUBVEN_ID) &&
+ (pci_config.u.type0.BaseAddresses[2]))
+ {
+ pciada = &((DEVICE_EXT*)(device_Obj->DeviceExtension))->pciada[*found];
+
+ memcpy(&pciada->PCIDevice, &pci_config, sizeof(pci_config));
+
+ IoGetDeviceProperty(device_Obj,
+ DevicePropertyBusNumber,
+ sizeof(ULONG),
+ (PVOID)&(pciada->Bus),
+ &length);
+
+ IoGetDeviceProperty(device_Obj,
+ DevicePropertyAddress,
+ sizeof(ULONG),
+ (PVOID)&propertyAddress,
+ &length);
+ //
+ // For PCI, the DevicePropertyAddress has device number
+ // in the high word and the function number in the low word.
+ //
+ FunctionNumber = (USHORT)((propertyAddress)& 0x0000FFFF);
+ DeviceNumber = (USHORT)(((propertyAddress) >> 16) & 0x0000FFFF);
+ pciada->Slot.u.AsULONG = DeviceNumber;
+ KdPrint(("PCIADA found @ Bus/Slot %d/%d.\n", pciada->Bus, pciada->Slot.u.AsULONG));
+
+ (*found)++;
+ if (*found >= PCIVME_MAX_PCIADA) return STATUS_SUCCESS;
+
+ }
+ KdPrint(("SearchDevices() found %d devices\n", (*found)));
+ return STATUS_SUCCESS;
+}
+
+//---------------------------------------------------------------
+// function to call for bug fix of PLX9050 build in bug
+//
+NTSTATUS PLX9050BugFix(PDEVICE_OBJECT device_Obj)
+{
+ // http://permalink.gmane.org/gmane.linux.kernel.pci/18419
+ DEVICE_EXT *DeviceExtension = (DEVICE_EXT*)device_Obj->DeviceExtension;
+ int i;
+ ULONG dwData;
+ PCIADA *pciada;
+ PBUS_INTERFACE_STANDARD busInterface;
+
+ KdPrint(("PLX9050BugFix()\n"));
+ busInterface = DeviceExtension->busInterface;
+ for (i = 0; i < DeviceExtension->nPCIADAs; i++)
+ {
+ pciada = &DeviceExtension->pciada[i];
+
+ if ((dwData = pciada->PCIDevice.u.type0.BaseAddresses[0]) & 0x80)
+ {
+ KdPrint(("Changing address 0:0x%p with 4:0x%p\n",
+ pciada->PCIDevice.u.type0.BaseAddresses[0],
+ pciada->PCIDevice.u.type0.BaseAddresses[4]));
+
+ pciada->PCIDevice.u.type0.BaseAddresses[0] = // exchange
+ pciada->PCIDevice.u.type0.BaseAddresses[4];
+ pciada->PCIDevice.u.type0.BaseAddresses[4] = dwData;
+
+ if (busInterface->SetBusData(busInterface->Context, PCI_WHICHSPACE_CONFIG, (PVOID)&pciada->PCIDevice.u.type0.BaseAddresses[0], 0x10, 4) != 4)
+ return STATUS_UNSUCCESSFUL;
+
+ if (busInterface->SetBusData(busInterface->Context, PCI_WHICHSPACE_CONFIG, (PVOID)&pciada->PCIDevice.u.type0.BaseAddresses[4], 0x20, 4) != 4)
+ return STATUS_UNSUCCESSFUL;
+
+ }
+
+ if ((dwData = pciada->PCIDevice.u.type0.BaseAddresses[1]) & 0x80)
+ {
+ KdPrint(("Changing address 1:0x%p with 5:0x%p\n",
+ pciada->PCIDevice.u.type0.BaseAddresses[1],
+ pciada->PCIDevice.u.type0.BaseAddresses[5]));
+
+ pciada->PCIDevice.u.type0.BaseAddresses[1] = // exchange
+ pciada->PCIDevice.u.type0.BaseAddresses[5];
+ pciada->PCIDevice.u.type0.BaseAddresses[5] = dwData;
+
+ if (busInterface->SetBusData(busInterface->Context, PCI_WHICHSPACE_CONFIG, (PVOID)&pciada->PCIDevice.u.type0.BaseAddresses[1], 0x14, 4) != 4)
+ return STATUS_UNSUCCESSFUL;
+
+ if (busInterface->SetBusData(busInterface->Context, PCI_WHICHSPACE_CONFIG, (PVOID)&pciada->PCIDevice.u.type0.BaseAddresses[5], 0x24, 4) != 4)
+ return STATUS_UNSUCCESSFUL;
+
+ }
+ }
+
+ return STATUS_SUCCESS;
+}
+
+static VOID ShowResources(IN PCM_PARTIAL_RESOURCE_LIST list)
+{ // ShowResources
+ PCM_PARTIAL_RESOURCE_DESCRIPTOR resource = list->PartialDescriptors;
+ ULONG nres = list->Count;
+ ULONG i;
+
+ for (i = 0; i < nres; ++i, ++resource)
+ { // for each resource
+ ULONG type = resource->Type;
+
+ static char* namelow[] = {
+ "CmResourceTypeNull",// 0 // ResType_All or ResType_None (0x0000)
+ "CmResourceTypePort",// 1 // ResType_IO (0x0002)
+ "CmResourceTypeInterrupt",// 2 // ResType_IRQ (0x0004)
+ "CmResourceTypeMemory",// 3 // ResType_Mem (0x0001)
+ "CmResourceTypeDma",// 4 // ResType_DMA (0x0003)
+ "CmResourceTypeDeviceSpecific",// 5 // ResType_ClassSpecific (0xFFFF)
+ "CmResourceTypeBusNumber",// 6 // ResType_BusNumber (0x0006)
+ "CmResourceTypeMemoryLarge" // 7 // ResType_MemLarge (0x0007)
+ };
+ static char* namehigh[] = {
+ //"CmResourceTypeNonArbitrated" ,// 128 // Not arbitrated if 0x80 bit set
+ "CmResourceTypeConfigData",// 128 // ResType_Reserved (0x8000)
+ "CmResourceTypeDevicePrivate",// 129 // ResType_DevicePrivate (0x8001)
+ "CmResourceTypePcCardConfig",// 130 // ResType_PcCardConfig (0x8002)
+ "CmResourceTypeMfCardConfig",// 131 // ResType_MfCardConfig (0x8003)
+ "CmResourceTypeConnection" // 132 // ResType_Connection (0x8004)
+ };
+
+ if (type<8) KdPrint((" [%d] type %s", type, type < arraysize(namelow) ? namelow[type] : "unknown"));
+ if (type>127) KdPrint((" [%d] type %s", type, type-128 < arraysize(namehigh) ? namehigh[type-128] : "unknown"));
+ switch (type)
+ { // select on resource type
+ case CmResourceTypePort:
+ KdPrint((" start ADDR=0x%p 0x%8X%8.8lX length %X\n",
+ resource->u.Port.Start, resource->u.Port.Start.HighPart, resource->u.Port.Start.LowPart,
+ resource->u.Port.Length));
+ break;
+ case CmResourceTypeMemory:
+ KdPrint((" %d start ADDR=0x%p \n", i, resource->u.Memory.Start ));
+ break;
+
+ case CmResourceTypeInterrupt:
+ KdPrint((" IRQL %d, vector %d, affinity %d\n",
+ resource->u.Interrupt.Level, resource->u.Interrupt.Vector,
+ resource->u.Interrupt.Affinity));
+ break;
+
+ case CmResourceTypeDma:
+ KdPrint((" channel %d, port %X\n",
+ resource->u.Dma.Channel, resource->u.Dma.Port));
+
+
+
+ } // select on resource type
+ } // for each resource
+} // ShowResources
+
+
+//------------------------------------------------------------------------
+// reserve resources for PCIADAs
+//
+NTSTATUS PCIVMEExtractResources(PCIADA *pciada, PIRP irp)
+{
+ //PCM_RESOURCE_LIST pResourceList;
+ ///PCM_FULL_RESOURCE_DESCRIPTOR pFullDescriptor;
+ PCM_PARTIAL_RESOURCE_LIST pPartialList = NULL;
+ PCM_PARTIAL_RESOURCE_LIST pListTranslated = NULL;
+ PCM_PARTIAL_RESOURCE_DESCRIPTOR pPartialDescriptor;
+ int i;
+ int bug = 0;
+
+ KdPrint(("PCIVMEExtractResources()\n"));
+
+ ///pResourceList = pList;
+ ///pFullDescriptor = pResourceList->List;
+ ///pPartialList = &pFullDescriptor->PartialResourceList;
+ PIO_STACK_LOCATION stack = IoGetCurrentIrpStackLocation(irp);
+ if (stack->Parameters.StartDevice.AllocatedResources)
+ pPartialList = &stack->Parameters.StartDevice.AllocatedResources->List[0].PartialResourceList;
+ KdPrint(("Allocated Resources:------------------\n"));
+ ShowResources(pPartialList);
+
+ int plcount = 0;
+ for (i=0; i<(int)pPartialList->Count; i++)
+ {
+ pPartialDescriptor = &pPartialList->PartialDescriptors[i];
+
+ switch (pPartialDescriptor->Type)
+ {
+ case CmResourceTypeInterrupt:
+ pciada->Irql = (KIRQL)pPartialDescriptor->u.Interrupt.Level;
+ pciada->Vector = pPartialDescriptor->u.Interrupt.Vector;
+ pciada->Affinity = pPartialDescriptor->u.Interrupt.Affinity;
+
+ KdPrint(("AllocatedResources Irq : Irql: %d, Vector: %d, Affinity: %d\n",
+ pciada->Irql, pciada->Vector, pciada->Affinity));
+ break;
+ case CmResourceTypeDma:
+ KdPrint(("AllocatedResources Dma : \n"));
+ break;
+ case CmResourceTypePort:
+
+ KdPrint(("AllocatedResources Port : 0x%p\n", pPartialDescriptor->u.Port.Start));
+ break;
+ case CmResourceTypeMemory:
+ // special handling of PLXBUG here because of WIN2000
+ // WIN2000 doesn't recognize late address changes
+ if (!bug)
+ {
+ if (plcount == 0)
+ {
+ pciada->pvPhysLcr = pPartialDescriptor->u.Memory.Start;
+
+ if (pciada->pvPhysLcr.LowPart & 0x80) {
+ bug = 1;
+ KdPrint(("AllocatedResources PLXBug\n"));
+ }
+ }
+ }
+ else
+ {
+ if (plcount == 3)
+ pciada->pvPhysLcr = pPartialDescriptor->u.Memory.Start;
+ }
+
+ if (plcount == 2){
+ pciada->pvPhysIfr = pPartialDescriptor->u.Memory.Start;
+ KdPrint(("PCIVMEExtractResources() IFR=0x%p \n", pciada->pvPhysIfr));
+ }
+ KdPrint(("[%d] AllocatedResources Memory : 0x%p\n", plcount, (PUCHAR)pPartialDescriptor->u.Memory.Start.LowPart));
+ break;
+ }
+ if (pPartialDescriptor->Type < 8) plcount++;
+ }
+
+ KdPrint(("PCIVMEExtractResources() LCR=0x%p IFR=0x%p \n", pciada->pvPhysLcr, pciada->pvPhysIfr));
+
+ if (stack->Parameters.StartDevice.AllocatedResourcesTranslated)
+ pListTranslated = &stack->Parameters.StartDevice.AllocatedResourcesTranslated->List[0].PartialResourceList;
+ KdPrint(("Translated Resources:------------------\n"));
+ ShowResources(pListTranslated);
+ plcount = 0;
+ bug = 0;
+ for (i = 0; i<(int)pPartialList->Count; i++)
+ {
+ pPartialDescriptor = &pListTranslated->PartialDescriptors[i];
+
+ switch (pPartialDescriptor->Type)
+ {
+ case CmResourceTypeInterrupt:
+ pciada->Irql = (KIRQL)pPartialDescriptor->u.Interrupt.Level;
+ pciada->Vector = pPartialDescriptor->u.Interrupt.Vector;
+ pciada->Affinity = pPartialDescriptor->u.Interrupt.Affinity;
+
+ KdPrint(("AllocatedResourcesTranslated Irq : Irql: %d, Vector: %d, Affinity: %d\n",
+ pciada->Irql, pciada->Vector, pciada->Affinity));
+ break;
+ case CmResourceTypeDma:
+ KdPrint(("AllocatedResourcesTranslated Dma : \n"));
+ break;
+ case CmResourceTypePort:
+
+ KdPrint(("AllocatedResourcesTranslated Port : 0x%p\n", pPartialDescriptor->u.Port.Start));
+ break;
+ case CmResourceTypeMemory:
+ // special handling of PLXBUG here because of WIN2000
+ // WIN2000 doesn't recognize late address changes
+ if (!bug)
+ {
+ if (plcount == 0)
+ {
+ pciada->pvPhysLcr = pPartialDescriptor->u.Memory.Start;
+ KdPrint(("0 PCIVMEExtractResources() LCR=0x%p \n", pciada->pvPhysLcr));
+ if (pciada->pvPhysLcr.LowPart & 0x80) {
+ bug = 1;
+ KdPrint(("AllocatedResourcesTranslated PLXBug\n"));
+ }
+ }
+ }
+ else
+ {
+ if (plcount == 3){
+ pciada->pvPhysLcr = pPartialDescriptor->u.Memory.Start;
+ KdPrint(("3 PCIVMEExtractResources() LCR=0x%p \n", pciada->pvPhysLcr));
+ }
+ }
+
+ if (plcount == 2){
+ pciada->pvPhysIfr = pPartialDescriptor->u.Memory.Start;
+ KdPrint(("2 PCIVMEExtractResources() IFR=0x%p \n", pciada->pvPhysIfr));
+ }
+
+ KdPrint(("[%d] AllocatedResourcesTranslated Memory : 0x%p\n", plcount, (PUCHAR)pPartialDescriptor->u.Memory.Start.LowPart));
+ break;
+ }
+ if (pPartialDescriptor->Type < 8) plcount++;
+ }
+
+
+
+ if (pciada->Irql == 0)
+ return STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT;
+
+ KdPrint(("PCIVMEExtractResources() Translated LCR=0x%p IFR=0x%p \n", pciada->pvPhysLcr, pciada->pvPhysIfr));
+
+ return STATUS_SUCCESS;
+}
+
+NTSTATUS PCIVMEReserveResources(PDEVICE_OBJECT device_Obj, PIRP irp)
+{
+ //PCM_RESOURCE_LIST pList = NULL;
+ NTSTATUS result = STATUS_SUCCESS;
+ int i;
+ DEVICE_EXT *pDevExt = (DEVICE_EXT*)(device_Obj->DeviceExtension);
+ int nPCIADAs = pDevExt->nPCIADAs;
+ PCIADA *pciada;
+ UNICODE_STRING DriverClassName;
+
+ KdPrint(("PCIVMEReserveResources()\n"));
+
+ // prepare resource claiming
+ //RtlInitUnicodeString(&DriverClassName, L"PCICC32");
+ RtlInitUnicodeString(&DriverClassName, L"PCIVME");
+ // cycle through all busses and slots assigned to PCIADAs
+ for (i = 0; i < nPCIADAs; i++)
+ {
+ pciada = &pDevExt->pciada[i];
+
+ //result = HalAssignSlotResources(NULL, &DriverClassName, device_Obj->DriverObject, device_Obj,
+ // PCIBus, pciada->Bus, pciada->Slot.u.AsULONG, &pList);
+ /*
+ result = IoReportDetectedDevice(device_Obj->DriverObject, PCIBus, pciada->Bus, pciada->Slot.u.AsULONG, pList, NULL, FALSE, &device_Obj);
+ if (result != STATUS_SUCCESS){
+ KdPrint(("PCIVMEReserveResources(0x%08x) HalAssignSlotResources ***ERROR*** faliure to get slot information\n", result));
+ break;
+ }
+ */
+ result = PCIVMEExtractResources(pciada, irp);
+
+ if (result != STATUS_SUCCESS){
+ KdPrint(("PCIVMEReserveResources(0x%08x) PCIVMEExtractResources\n", result));
+ break;
+ }
+ }
+
+ // its my part to free allocated resources
+ //if (pList != NULL) ExFreePoolWithTag(pList,'nepo');
+
+ KdPrint(("PCIVMEReserveResources(0x%08x)\n", result));
+
+ return result;
+};
+
+
+//------------------------------------------------------------------------
+// translate memory resources to neutral for PCIADAs
+//
+NTSTATUS PCIVMETranslateBusAddresses(PDEVICE_OBJECT device_Obj, PIRP irp)
+{
+ int i;
+ NTSTATUS result = STATUS_SUCCESS;
+ int nPCIADAs = ((DEVICE_EXT*)(device_Obj->DeviceExtension))->nPCIADAs;
+ ULONG memType0, memType2;
+ PCIADA *pciada;
+ PCM_PARTIAL_RESOURCE_LIST pPartialList = NULL;
+ PIO_STACK_LOCATION stack = IoGetCurrentIrpStackLocation(irp);
+ if (stack->Parameters.StartDevice.AllocatedResourcesTranslated)
+ pPartialList = &stack->Parameters.StartDevice.AllocatedResourcesTranslated->List[0].PartialResourceList;
+
+
+ for (i = 0; i < nPCIADAs; i++)
+ {
+ pciada = &((DEVICE_EXT*)(device_Obj->DeviceExtension))->pciada[i];
+
+ memType0 = memType2 = 0;
+ /*
+ if (!(HalTranslateBusAddress(PCIBus, pciada->Bus, pciada->pvPhysLcr, &memType0,
+ &pciada->pvPhysLcr)) ||
+ !(HalTranslateBusAddress(PCIBus, pciada->Bus, pciada->pvPhysIfr, &memType2,
+ &pciada->pvPhysIfr)))
+ {
+ result = STATUS_UNSUCCESSFUL;
+ break;
+ }
+ */
+ KdPrint(("PCIADA %d TranslateBusAddresseses() -- no translation is made\n", i));
+
+ if ((memType0) || (memType2))
+ {
+ result = STATUS_UNSUCCESSFUL;
+ break;
+ }
+ }
+
+ return result;
+}
+
+//------------------------------------------------------------------------
+// map address spaces to virtual addresses
+//
+NTSTATUS PCIVMEMapIOspace(PDEVICE_OBJECT device_Obj)
+{
+ int i;
+ DEVICE_EXT *pDevExt = (DEVICE_EXT*)device_Obj->DeviceExtension;
+ int nPCIADAs = pDevExt->nPCIADAs;
+ PCIADA *pciada;
+
+ KdPrint(("PCIVMEMapIOspace()\n"));
+
+ for (i = 0; i < nPCIADAs; i++)
+ {
+ pciada = &pDevExt->pciada[i];
+
+ if ((pciada->pvVirtLcr = MmMapIoSpace(pciada->pvPhysLcr, LCR_SPACE, FALSE)) == NULL)
+ return STATUS_UNSUCCESSFUL;
+ if ((pciada->pvVirtIfr = MmMapIoSpace(pciada->pvPhysIfr, IFR_SPACE, FALSE)) == NULL)
+ return STATUS_UNSUCCESSFUL;
+
+ KdPrint(("PCIADA %d: LCR 0x%08x IFR 0x%08x\n",
+ i, pciada->pvVirtLcr, pciada->pvVirtIfr));
+
+ pciada->pwIntCSR = (PUSHORT)((PUCHAR)pciada->pvVirtLcr + 0x4C);
+ pciada->pwCntrl = (PUSHORT)((PUCHAR)pciada->pvVirtLcr + 0x50);
+ }
+
+ return STATUS_SUCCESS;
+}
+
+
+//------------------------------------------------------------------------
+// initializes and registers a DPC routine for each pciada
+//
+NTSTATUS InitializeCustomDPCObjects(PDEVICE_OBJECT device_object)
+{
+ int i;
+ int nPCIADAs = ((DEVICE_EXT*)(device_object->DeviceExtension))->nPCIADAs;
+ PCIADA *pciada;
+
+ KdPrint(("InitializeCustomDPCObject()\n"));
+
+ for (i = 0; i < nPCIADAs; i++)
+ {
+ pciada = &((DEVICE_EXT*)(device_object->DeviceExtension))->pciada[i];
+ KeInitializeDpc(&pciada->kDPCobj, fMyDefferedRoutine, (PVOID)device_object);
+ }
+
+ return STATUS_SUCCESS;
+}
+
+//------------------------------------------------------------------------
+// initializes the queue for storing IRPs waiting for vectors
+//
+NTSTATUS InitializeIRPQueue(PDEVICE_OBJECT device_Obj)
+{
+ DEVICE_EXT *pDevExt = ((DEVICE_EXT*)(device_Obj->DeviceExtension));
+
+ KdPrint(("InitializeIRPQueue()\n"));
+
+ KeInitializeSpinLock(&pDevExt->IRPLock);
+ InitializeListHead(&pDevExt->IRPList);
+
+ return STATUS_SUCCESS;
+}
+
+//------------------------------------------------------------------------
+// init structures a.s.o.
+//
+VOID PCIVMESoftInit(PDEVICE_OBJECT device_Obj)
+{
+ int i;
+ PCIADA *pciada;
+
+ for (i = 0; i < PCIVME_MAX_PCIADA; i++)
+ {
+ pciada = &((DEVICE_EXT*)(device_Obj->DeviceExtension))->pciada[i];
+
+ pciada->pvPhysLcr.QuadPart = pciada->pvPhysIfr.QuadPart = 0;
+ pciada->pvVirtLcr = pciada->pvVirtIfr = NULL;
+
+ pciada->bConnected = FALSE; // connection still not verified
+ pciada->bWordMode = TRUE;
+ pciada->bSysControl = FALSE;
+ pciada->wModuleNumber = 0xFFFF;
+ pciada->wFPGAVersion = 0xFFFF;
+ pciada->wModuleType = 1; // always VMEMM
+
+ pciada->InterruptObject = NULL;
+ pciada->Irql = 0;
+ pciada->Vector = 0;
+ pciada->Affinity = 0;
+
+ pciada->dwLinkCount = 0;
+
+ KeInitializeSpinLock(&pciada->IrqListLock);
+ KeInitializeSpinLock(&pciada->AccessLock);
+
+ InitializeListHead(&pciada->IrqListList); // start of list of irq fifos
+
+ pciada->nInterruptHandlers = 0;
+ }
+
+ // no vmemm associated to any PCIADA
+ for (i = 0; i < PCIVME_MAX_VMEMM; i++)
+ ((DEVICE_EXT*)(device_Obj->DeviceExtension))->vmemm[i] = NULL;
+}
+
+NTSTATUS OnRequestComplete(PDEVICE_OBJECT fdo, PIRP Irp, PKEVENT pev)
+{
+ UNREFERENCED_PARAMETER(fdo);
+ UNREFERENCED_PARAMETER(Irp);
+ KeSetEvent(pev, 0, FALSE);
+ return STATUS_MORE_PROCESSING_REQUIRED;
+}
+
+NTSTATUS CompleteRequest(PIRP Irp, NTSTATUS status, ULONG_PTR Information)
+{
+ Irp->IoStatus.Status = status;
+ Irp->IoStatus.Information = Information;
+ IoCompleteRequest(Irp, IO_NO_INCREMENT);
+ return status;
+}
+NTSTATUS ForwardAndWait(PDEVICE_OBJECT fdo, PIRP Irp)
+{
+ KEVENT event;
+ KeInitializeEvent(&event, NotificationEvent, FALSE);
+ IoCopyCurrentIrpStackLocationToNext(Irp);
+ IoSetCompletionRoutine(Irp, (PIO_COMPLETION_ROUTINE) OnRequestComplete, (PVOID)&event, TRUE, TRUE, TRUE);
+ PDEVICE_EXT pdx = (PDEVICE_EXT ) fdo->DeviceExtension;
+ IoCallDriver(pdx->LowerDeviceObject, Irp);
+ KeWaitForSingleObject(&event, Executive, KernelMode, FALSE, NULL);
+ return Irp->IoStatus.Status;
+}
+
+NTSTATUS HandleStartDevice(PDEVICE_OBJECT fdo, PIRP Irp)
+{
+ PIO_STACK_LOCATION stack;
+ Irp->IoStatus.Status = STATUS_SUCCESS;
+ NTSTATUS status = ForwardAndWait(fdo, Irp);
+ if (!NT_SUCCESS(status))
+ return CompleteRequest(Irp, status, Irp->IoStatus.Information);
+
+ stack = IoGetCurrentIrpStackLocation(Irp);
+ status = PCIVMEStartDevice(fdo, Irp);
+ return CompleteRequest(Irp, status, Irp->IoStatus.Information);
+}
+
+
+NTSTATUS DefaultPnpHandler(PDEVICE_OBJECT fdo, PIRP Irp)
+{
+ IoSkipCurrentIrpStackLocation(Irp);
+ PDEVICE_EXT pdx = (PDEVICE_EXT )fdo->DeviceExtension;
+ return IoCallDriver(pdx->LowerDeviceObject, Irp);
+}
+
+NTSTATUS HandleStopDevice(PDEVICE_OBJECT fdo, PIRP Irp)
+{
+ IoSkipCurrentIrpStackLocation(Irp);
+ UNICODE_STRING symbol_name;
+ RtlInitUnicodeString(&symbol_name, DOS_DEVICE_NAME);
+ // delete the symbolicLink in the registry
+ IoDeleteSymbolicLink(&symbol_name);
+ DEVICE_EXT *ext = (DEVICE_EXT*)(fdo->DeviceExtension);
+ // delete the busInterface and deviceObject
+ if (ext->busInterface) {
+ (*ext->busInterface->InterfaceDereference)(ext->busInterface->Context);
+ ext->busInterface = NULL;
+ }
+ if (ext->LowerDeviceObject) IoDetachDevice(ext->LowerDeviceObject);
+ IoDeleteDevice(fdo);
+ KdPrint(("HandleStopDevice (OK)\n"));
+ return STATUS_SUCCESS;
+}
+
+
+NTSTATUS PCIVMEDispatchPnp(PDEVICE_OBJECT fdo, PIRP Irp)
+{
+ PIO_STACK_LOCATION stack = IoGetCurrentIrpStackLocation(Irp);
+ ULONG fcn = stack->MinorFunction;
+ static char* pnpname[] = {
+ "IRP_MN_START_DEVICE",
+ "IRP_MN_QUERY_REMOVE_DEVICE",
+ "IRP_MN_REMOVE_DEVICE",
+ "IRP_MN_CANCEL_REMOVE_DEVICE",
+ "IRP_MN_STOP_DEVICE",
+ "IRP_MN_QUERY_STOP_DEVICE",
+ "IRP_MN_CANCEL_STOP_DEVICE",
+ "IRP_MN_QUERY_DEVICE_RELATIONS",
+ "IRP_MN_QUERY_INTERFACE",
+ "IRP_MN_QUERY_CAPABILITIES",
+ "IRP_MN_QUERY_RESOURCES",
+ "IRP_MN_QUERY_RESOURCE_REQUIREMENTS",
+ "IRP_MN_QUERY_DEVICE_TEXT",
+ "IRP_MN_FILTER_RESOURCE_REQUIREMENTS",
+ "",
+ "IRP_MN_READ_CONFIG",
+ "IRP_MN_WRITE_CONFIG",
+ "IRP_MN_EJECT",
+ "IRP_MN_SET_LOCK",
+ "IRP_MN_QUERY_ID",
+ "IRP_MN_QUERY_PNP_DEVICE_STATE",
+ "IRP_MN_QUERY_BUS_INFORMATION",
+ "IRP_MN_DEVICE_USAGE_NOTIFICATION",
+ "IRP_MN_SURPRISE_REMOVAL",
+ "IRP_MN_QUERY_LEGACY_BUS_INFORMATION",
+ };
+
+ if (fcn < arraysize(pnpname))
+ KdPrint(("PCIVMEDispatchPnp - IRP_MJ_PNP (%s)\n", pnpname[fcn]));
+ else
+ KdPrint(( "PCIVMEDispatchPnp - IRP_MJ_PNP (%2.2X)\n", fcn));
+
+ static NTSTATUS(*fcntab[])(PDEVICE_OBJECT, PIRP) = {
+ HandleStartDevice, // IRP_MN_START_DEVICE
+ // DefaultPnpHandler, // IRP_MN_QUERY_REMOVE_DEVICE
+ HandleStopDevice // IRP_MN_REMOVE_DEVICE
+ };
+
+ if (fcn >= arraysize(fcntab))
+ return DefaultPnpHandler(fdo, Irp);
+ return (*fcntab[fcn])(fdo, Irp);
+}
+
+
+NTSTATUS PCIVMEStartDevice(PDEVICE_OBJECT device_object, PIRP irp){
+ NTSTATUS result = STATUS_SUCCESS;
+ int nPCIADAs; // count of PCIADAs
+ DEVICE_EXT *DeviceExtension = NULL;
+ DeviceExtension = (DEVICE_EXT*)device_object->DeviceExtension;
+ // init pciada structures ------------------------------------
+ PCIVMESoftInit(device_object);
+
+ // search for PCIADAs ----------------------------------------
+ result = SearchDevices(device_object);
+ nPCIADAs = DeviceExtension->nPCIADAs;
+
+ if ((result != STATUS_SUCCESS) || !(nPCIADAs))
+ {
+ KdPrint(("PCIVMEStartDevice Device not found\n"));
+ PCIVMEUnload(DeviceExtension->driverObj);
+ return STATUS_DEVICE_DOES_NOT_EXIST;
+ }
+
+ // request exclusive ownership of .. ---------------------------------
+ if ((result = PCIVMEReserveResources(device_object, irp)) != STATUS_SUCCESS)
+ {
+ KdPrint(("PCIVMEStartDevice Resource not reserved PCIVMEReserveResources \n"));
+ PCIVMEUnload(DeviceExtension->driverObj);
+ return result;
+ }
+ else
+ DeviceExtension->nInitState++;
+ // fix PLX9050 Bug -------------------------------------------
+ if ((result = PLX9050BugFix(device_object)) != STATUS_SUCCESS)
+ {
+ KdPrint(("PCIVMEStartDevice PLX9050BugFix\n"));
+ PCIVMEUnload(DeviceExtension->driverObj);
+ return result;
+ }
+
+ DeviceExtension->nInitState += 2;
+ /*
+ // translate BUS relative addresses ----------------------------------
+ if ((result = PCIVMETranslateBusAddresses(device_object,irp)) != STATUS_SUCCESS)
+ {
+ PCIVMEUnload(DeviceExtension->driverObj);
+ return STATUS_DEVICE_DOES_NOT_EXIST;
+ }
+ else
+ DeviceExtension->nInitState++;
+
+
+ // translate Interrupt Resources used --------------------------------
+ if ((result = PCIVMETranslateInterrupts(device_object)) != STATUS_SUCCESS)
+ {
+ PCIVMEUnload(DeviceExtension->driverObj);
+ return STATUS_DEVICE_DOES_NOT_EXIST;
+ }
+ else
+ DeviceExtension->nInitState++;
+ */
+
+ // map address spaces to virtual addresses ---------------------------
+ if ((result = PCIVMEMapIOspace(device_object)) != STATUS_SUCCESS)
+ {
+ PCIVMEUnload(DeviceExtension->driverObj);
+ return STATUS_DEVICE_DOES_NOT_EXIST;
+ }
+ else
+ DeviceExtension->nInitState++;
+
+ // initialze my custom DPC objects -----------------------------------
+ if ((result = InitializeCustomDPCObjects(device_object)) != STATUS_SUCCESS)
+ {
+ PCIVMEUnload(DeviceExtension->driverObj);
+ return result;
+ }
+ else
+ DeviceExtension->nInitState++;
+
+ // initialze the queue for IRPs waiting for vectors ------------------
+ if ((result = InitializeIRPQueue(device_object)) != STATUS_SUCCESS)
+ {
+ PCIVMEUnload(DeviceExtension->driverObj);
+ return result;
+ }
+ else
+ DeviceExtension->nInitState++;
+
+ // connect interrupts to service routines ----------------------------
+ if ((result = PCIVMEConnectInterrupt(device_object)) != STATUS_SUCCESS)
+ {
+ PCIVMEUnload(DeviceExtension->driverObj);
+ return STATUS_DEVICE_DOES_NOT_EXIST;
+ }
+ else
+ DeviceExtension->nInitState++;
+
+ // scan all connected VMEMM for info and later use -------------------
+ if ((result = PCIVMEScanVMEMM(device_object)) != STATUS_SUCCESS)
+ {
+ PCIVMEUnload(DeviceExtension->driverObj);
+ return STATUS_DEVICE_DOES_NOT_EXIST;
+ }
+
+ device_object->Flags &= ~DO_DEVICE_INITIALIZING;
+ return result;
+}
+
+NTSTATUS PCIVMEAddDevice(PDRIVER_OBJECT driverObj, PDEVICE_OBJECT pdo)
+ { // AddDevice
+
+ UNICODE_STRING device_name;
+ UNICODE_STRING symbol_name;
+ NTSTATUS result = STATUS_SUCCESS;
+ //int nPCIADAs; // count of PCIADAs
+ DEVICE_EXT *DeviceExtension = NULL;
+ PDEVICE_OBJECT device_object;
+ RtlInitUnicodeString(&device_name, L"\\Device\\PCIVME");
+ KdPrint(("PCIVME AddDevice() v%d.%d\n", (DRIVER_VERSION >> 16) & 0xff, DRIVER_VERSION & 0xff));
+ /* DeviceObject durch IO-Manager erzeugen */
+ result = IoCreateDevice( driverObj, // DriverObject received by the DriverEntry Call
+ sizeof(DEVICE_EXT), // required Memory for the DeviceExtension
+ &device_name, // Name of the device in the device-Directory
+ FILE_DEVICE_UNKNOWN, // Device-ID
+ 0, // Device-Characteristics normal 0
+ FALSE, // TRUE : one Thread can open the driver
+ &device_object); // DeviceObject returned from the IO-Manager
+
+ // defines how the data are handled between user / kernel Adress-Space
+ device_object->Flags |= DO_DIRECT_IO;
+
+#if 0
+ // register the shutdown notification entry
+ IoRegisterShutdownNotification(device_object);
+#endif
+
+ // anounce driver as symbolic device ---------------------------------
+ if (result == STATUS_SUCCESS)
+ {
+ /* now the symbolic Link is created. If there is no S.L. a program cannot connect to the driver */
+ RtlInitUnicodeString(&symbol_name, DOS_DEVICE_NAME);
+ result = IoCreateSymbolicLink(&symbol_name,&device_name);
+ if (result != STATUS_SUCCESS)
+ {
+
+ IoDeleteDevice(device_object);
+ return result;
+ }
+ }
+ else
+ return result;
+
+
+ DeviceExtension = (DEVICE_EXT*)device_object->DeviceExtension;
+
+ DeviceExtension->actualIrp = NULL;
+ DeviceExtension->driverObj = driverObj;
+ DeviceExtension->nInitState = 0;
+
+
+ DeviceExtension->LowerDeviceObject = IoAttachDeviceToDeviceStack(device_object, pdo);
+ KdPrint(("AddDevice() OK.\n"));
+
+ return result;
+}
+
+//------------------------------------------------------------------------
+// the ultimate starting point of a driver
+NTSTATUS DriverEntry(PDRIVER_OBJECT driverObj, PUNICODE_STRING regPath)
+{
+ UNREFERENCED_PARAMETER(regPath);
+
+ KdPrint(("PCIVME DriverEntry() v%d.%d\n", (DRIVER_VERSION >> 16) & 0xff, DRIVER_VERSION & 0xff));
+
+ driverObj->DriverUnload = PCIVMEUnload;
+ driverObj->DriverExtension->AddDevice = PCIVMEAddDevice;
+ driverObj->MajorFunction[IRP_MJ_CREATE] = PCIVMEOpen;
+ driverObj->MajorFunction[IRP_MJ_CLOSE] = PCIVMEClose;
+ driverObj->MajorFunction[IRP_MJ_READ] = PCIVMERead;
+ driverObj->MajorFunction[IRP_MJ_WRITE] = PCIVMEWrite;
+ driverObj->MajorFunction[IRP_MJ_DEVICE_CONTROL] = PCIVMEDeviceControl;
+#ifdef DO_CLEANUP
+ driverObj->MajorFunction[IRP_MJ_CLEANUP] = PCIVMECancel;
+#endif
+ driverObj->MajorFunction[IRP_MJ_SHUTDOWN] = PCIVMEShutdown;
+ driverObj->MajorFunction[IRP_MJ_PNP] = PCIVMEDispatchPnp;
+ return STATUS_SUCCESS;;
+}
\ No newline at end of file
Index: wiener_pcivme/pcivme/SOURCE/pcivme_drv.h
===================================================================
--- wiener_pcivme/pcivme/SOURCE/pcivme_drv.h (nonexistent)
+++ wiener_pcivme/pcivme/SOURCE/pcivme_drv.h (revision 178)
@@ -0,0 +1,236 @@
+#ifndef __PCIVME_DRV_H__
+#define __PCIVME_DRV_H__
+//-------------------------------------------------------------------------
+// WINNT driver for PCIVME interface from ARW Elektronik, Germany ---------
+// the main header file of the driver
+//
+// (c) 1999-2004 ARW Elektronik
+//
+// this source code is published under GPL (Open Source). You can use, redistrubute and
+// modify it unless this header is not modified or deleted. No warranty is given that
+// this software will work like expected.
+// This product is not authorized for use as critical component in life support systems
+// wihout the express written approval of ARW Elektronik Germany.
+//
+// Please announce changes and hints to ARW Elektronik
+//
+// $Log: pcivme_drv.h,v $
+// Revision 1.3 2004/07/24 07:07:26 klaus
+// Update copyright to 2004
+//
+// Revision 1.2 2003/11/15 19:12:50 klaus
+// Update copyright to 2003
+//
+// Revision 1.1.1.1 2003/11/14 23:16:33 klaus
+// First put into repository
+//
+// Revision 1.5 2002/10/27 18:41:21 klaus
+// changed driver version to 2.0 (not 'inf' version)
+//
+// Revision 1.4 2002/10/27 17:02:30 klaus
+// File addressing bug > 2 Gbtye circumvent
+//
+// Revision 1.3 2002/10/27 16:17:48 klaus
+// Typing bug fixed caused at log addition
+//
+// Revision 1.2 2002/10/27 16:11:02 klaus
+// Added CVS log into header
+//
+// what who when
+// started AR 15.06.1999
+// version 1.0 released AR 20.10.1ß99
+// version 1.2 released AR 25.11.2001
+// changed to VisualStudio 6.0 AR 30.09.2001
+// compiled with DDK 1/2001 AR 20.11.2001
+// removed alloc_text cause of WIN2000 problems AR 25.11.2001
+// version 1.3 released AR 25.11.2001
+// changed resource allocation caused by WIN2000 AR 08.06.2002
+//
+
+//-------------------------------------------------------------------------
+#define DRIVER_VERSION ((2 << 16) | 0) // the only place for version info
+#define DRIVER_VARIANT 0 // mark customisation here
+//-------------------------------------------------------------------------
+
+//-------------------------------------------------------------------------
+// precautions for debug compile
+#define PCIVME_DEBUG
+
+#ifndef PCIVME_DEBUG
+#ifdef KdPrint()
+#undef KdPrint()
+#define KdPrint(x)
+#endif
+#endif
+//-------------------------------------------------------------------------
+
+//-------------------------------------------------------------------------
+// INCLUDES
+//
+#define PCI_MAX_BUSES 4 // buses to search for pciada
+
+#define PCIVME_MAX_PCIADA 4 // maximum of PCIADA to search for
+#define PCIVME_MAX_VMEMM 16 // maximum number of VMEMMs
+
+//-------------------------------------------------------------------------
+// DEFINES
+//
+#define PCIVME_VENDOR_ID 0x10B5
+#define PCIVME_DEVICE_ID 0x9050
+#define PCIVME_SUBSYS_ID 0x1167
+#define PCIVME_SUBVEN_ID 0x9050
+
+#define LCR_SPACE 256 // space in bytes of LCR
+#define IFR_SPACE 8192 // space in bytes of IFR
+
+//-------------------------------------------------------------------------
+// TYPEDEFS
+//
+typedef struct _FILE_OBJ
+{
+ USHORT uwAssociatedVMEMM; // which VMEMM it belongs
+ UCHAR bAddressModifier; // this is the current modifier
+ UCHAR bAccessType; // this is the current access type (1,2,4)
+ UCHAR bIncrement; // set 0 if no increment of address
+ ULONG dwAddressMask; // mask for aligned transfers
+ ULONG dwAccessBase;
+ void (*fRead)(void *to, ULONG length, void *from); // resulting read
+ void (*fWrite)(void *to, ULONG length, void *from); // resulting write
+
+ BOOLEAN bQueueIrq; // queue interrupt vectors belonging to this
+ PVOID pIrqListHandle; // pointer to the irq FIFO
+
+ BOOLEAN bBusError; // marks current access as responsible
+} FILE_OBJ, *PFILE_OBJ;
+
+typedef struct
+{
+ int Bus; // bus number of pciada
+ PCI_SLOT_NUMBER Slot; // slot + function number encoded
+ PCI_COMMON_CONFIG PCIDevice; // content of pcr
+
+ PHYSICAL_ADDRESS pvPhysLcr; // local config register
+ PHYSICAL_ADDRESS pvPhysIfr; // interface registers
+ PVOID pvVirtLcr; // virtual LCR space
+ PVOID pvVirtIfr; // virtual IFR space
+
+ KIRQL Irql; // virtual Irq level
+ ULONG Vector; // mapped system vector
+ KAFFINITY Affinity; // which processor uses this irq
+
+ PKINTERRUPT InterruptObject; // points to the associated irq obj
+
+ PUSHORT pwCntrl; // LCR Cntrl Offset @ LCR + 0x50
+ PUSHORT pwIntCSR; // LCR IntCSR Offset @ LCR + 0x4C
+
+ ULONG dwLinkCount; // how often this interface is requested
+ BOOLEAN bConnected; // VMEMM is connected and powered
+ BOOLEAN bWordMode; // WordMode Jumper set
+ BOOLEAN bSysControl; // SystemController enabled
+ USHORT wModuleNumber; // Number (Jumper) of VMEMM
+ USHORT wFPGAVersion; // Revision of (VMEMM) FPGA
+ USHORT wModuleType; // Type of (VMEMM) module
+
+ PUSHORT pwCSR; // pointer to csr register
+ PUSHORT pwIRQStat; // pointer to irq status
+ PUCHAR pbVector; // pointer to vector read register
+ PULONG pdwVMEAdr; // pointer to VME adress register
+ PUCHAR pbModifier; // pointer to address modifier register
+ PVOID pvVME; // pointer into VME window
+
+ ULONG dwVMEPage; // current page to VME
+ UCHAR bModifier; // current Modifier
+
+ KSPIN_LOCK AccessLock; // a lock for Access to VMEMM registers
+ KSPIN_LOCK IrqListLock; // a lock to guard access to List
+ LIST_ENTRY IrqListList; // start of list of IRQ FIFOs
+
+ KDPC kDPCobj; // custom DPC object for irq tunneling
+
+ PBOOLEAN pbBusError; // points to the responsible party
+
+ int nInterruptHandlers; // counts the controlling interrupt handlers
+} PCIADA;
+
+typedef struct _DEVICE_EXT
+{
+ PDEVICE_OBJECT DeviceObject; // points to myself
+ PDEVICE_OBJECT LowerDeviceObject;
+ PDRIVER_OBJECT driverObj; // points to my driver */
+ PIRP actualIrp; // points to ..
+
+ KSPIN_LOCK IRPLock; // a lock to guard access to List
+ LIST_ENTRY IRPList; // List of queued IRPs
+
+ int nPCIADAs; // how many PCIADAs are found
+
+ PCIADA pciada[PCIVME_MAX_PCIADA]; // for each PCIADA a descriptor
+
+ PCIADA *vmemm[PCIVME_MAX_VMEMM]; // points to PCIADA to which it belongs
+
+ int nInitState; // tracks the state of initialisation
+ PBUS_INTERFACE_STANDARD busInterface;
+} DEVICE_EXT, *PDEVICE_EXT;
+
+typedef struct
+{
+ LIST_ENTRY entry; // doubly linked list
+ PFILE_OBJ pFile_obj; // the owner
+ PVOID pIrqListHandle; // the irq FIFO of this owner
+} FIFO_LIST;
+
+// Prototypes to support following pragmas
+NTSTATUS DriverEntry(PDRIVER_OBJECT driverObj, PUNICODE_STRING regPath);
+NTSTATUS HandleStartDevice(PDEVICE_OBJECT fdo, PIRP Irp);
+NTSTATUS HandleStopDevice(PDEVICE_OBJECT fdo, PIRP Irp);
+NTSTATUS DefaultPnpHandler(PDEVICE_OBJECT fdo, PIRP Irp);
+NTSTATUS PCIVMEStartDevice(PDEVICE_OBJECT device_object, PIRP irp);
+NTSTATUS PCIVMEAddDevice( PDRIVER_OBJECT driverObj, PDEVICE_OBJECT pdo);
+NTSTATUS PCIVMEDispatchPnp(PDEVICE_OBJECT deviceObj, PIRP irp);
+NTSTATUS PCIVMEOpen(PDEVICE_OBJECT deviceObj, PIRP irp);
+NTSTATUS PCIVMEClose(PDEVICE_OBJECT deviceObj, PIRP irp);
+VOID PCIVMEUnload(PDRIVER_OBJECT driverObj);
+NTSTATUS QueryBusInterface(IN PDEVICE_OBJECT DeviceObject, OUT PBUS_INTERFACE_STANDARD BusInterface);
+NTSTATUS SearchDevices(PDEVICE_OBJECT device_Obj);
+NTSTATUS PLX9050BugFix(PDEVICE_OBJECT device_Obj);
+NTSTATUS PCIVMEExtractResources(PCIADA *pciada, PIRP irp);
+NTSTATUS PCIVMEReserveResources(PDEVICE_OBJECT device_Obj, PIRP irp);
+NTSTATUS PCIVMEFreeResources(PDEVICE_OBJECT device_Obj);
+NTSTATUS PCIVMETranslateBusAddresses(PDEVICE_OBJECT device_Obj, PIRP irp);
+NTSTATUS PCIVMETranslateInterrupt(PDEVICE_OBJECT device_Obj);
+NTSTATUS PCIVMEMapIOspace(PDEVICE_OBJECT device_object);
+VOID PCIVMESoftInit(PDEVICE_OBJECT device_Obj);
+PBOOLEAN ExchangePointer(PBOOLEAN *current, PBOOLEAN next);
+
+/* release all this procedures after init of the driver */
+#if 0 // WIN2000 change versus WINNT?
+#ifdef ALLOC_PRAGMA
+#pragma alloc_text (init, DriverEntry)
+#pragma alloc_text (page, PCIVMEStartDevice)
+#pragma alloc_text (page, PCIVMEAddDevice)
+#pragma alloc_text (page, QueryBusInterface)
+#pragma alloc_text (page, SearchDevices)
+#pragma alloc_text (page, PLX9050BugFix)
+#pragma alloc_text (page, PCIVMEExtractResources)
+#pragma alloc_text (page, PCIVMEReserveResources)
+#pragma alloc_text (page, PCIVMETranslateBusAddresses)
+#pragma alloc_text (page, PCIVMETranslateInterrupt)
+#pragma alloc_text (page, PCIVMEMapIOspace)
+#pragma alloc_text (page, PCIVMESoftInit)
+#endif
+
+/* put all this procedures in the paged memory-pool, all called at passiv Level */
+#ifdef ALLOC_PRAGMA
+#pragma alloc_text (page, HandleStartDevice)
+#pragma alloc_text (page, HandleStopDevice)
+#pragma alloc_text (page, PCIVMEOpen)
+#pragma alloc_text (page, PCIVMEClose)
+#pragma alloc_text (page, PCIVMEUnload)
+#pragma alloc_text (page, PCIVMEFreeResources)
+#pragma alloc_text (page, PCIVMEDispatchPnp)
+#pragma alloc_text (page, DefaultPnpHandler)
+#endif
+#endif // WIN2000 change versus WINNT?
+
+#endif // __PCIVME_DRV_H__
+
Index: wiener_pcivme/pcivme/SOURCE/pcivme_i.c
===================================================================
--- wiener_pcivme/pcivme/SOURCE/pcivme_i.c (nonexistent)
+++ wiener_pcivme/pcivme/SOURCE/pcivme_i.c (revision 178)
@@ -0,0 +1,302 @@
+//-------------------------------------------------------------------------
+// WINNT driver for PCIVME interface from ARW Elektronik, Germany ---------
+// all around irq handling
+//
+// (c) 1999-2004 ARW Elektronik
+//
+// this source code is published under GPL (Open Source). You can use, redistrubute and
+// modify it unless this header is not modified or deleted. No warranty is given that
+// this software will work like expected.
+// This product is not authorized for use as critical component in life support systems
+// wihout the express written approval of ARW Elektronik Germany.
+//
+// Please announce changes and hints to ARW Elektronik
+//
+// $Log: pcivme_i.c,v $
+// Revision 1.3 2004/07/24 07:07:26 klaus
+// Update copyright to 2004
+//
+// Revision 1.2 2003/11/15 19:12:50 klaus
+// Update copyright to 2003
+//
+// Revision 1.1.1.1 2003/11/14 23:16:33 klaus
+// First put into repository
+//
+// Revision 1.3 2002/10/27 16:17:48 klaus
+// Typing bug fixed caused at log addition
+//
+// Revision 1.2 2002/10/27 16:11:02 klaus
+// Added CVS log into header
+//
+// what who when
+// started AR 01.08.1999
+// first release 1.0 AR 17.10.1999
+// IoConnectInterrupt, share vector now true AR 04.03.2000
+// changed resource allocation caused by WIN2000 AR 08.06.2002
+//
+
+//-------------------------------------------------------------------------
+// COMMENTS
+//
+// Each path (file_obj) maintains its own FIFO to hold incoming vector from
+// hardware acknowledged interrupts. These FIFOs are always accessible for read
+// while the path is open. In case a path enables its interrupts the link to
+// its FIFO is included in a list of "interrupt enabled" FIFOs. The opposite
+// happens when a path disables its interrupts.
+// There are up to MAX_PCIADA lists of "interrupt enabled" FIFOs, each list is
+// associated to a PCIADA (pciada).
+// Each time a pciada receives a interrupt request the software first checks
+// for a bus error interrupt. This kind of requests are directly associated with
+// a user initiated access and put forward to the accessor. (Excluding spurious
+// interrupts). If the request is no bus error request the vector is pushed
+// into all FIFOs queued for this PCIADA.
+// After this a DPC call is fired to wake up queued IRPs waiting for a vector.
+// The DPC call iterates through the list of FIFOs and looks if a queued IRP
+// exists for this path. If so the vector is pulled off the FIFO and the IRP
+// is released.
+// If a IRP arrives to request a vector the driver checks if there is a vector
+// stored in the path associated FIFO. If so the IRP returns immediately with
+// the pulled vector from the FIFO. If not the IRP is queued in a PCIADA
+// associated queue of pending IRPs.
+// When the interrupts for a path are disabled all pending vectors in the FIFO
+// associated with this path are still available. But if the FIFO is empty
+// request to get the next vector will block.
+
+//-------------------------------------------------------------------------
+// INCLUDES
+//
+#include <ntddk.h>
+#include <pcivme_drv.h>
+#include <pcivme_i.h>
+#include <pcivme.h>
+#include <pciif.h>
+#include <pcivme_fifo.h>
+
+//------------------------------------------------------------------------
+// DEFINES
+//
+#ifndef DWORD
+#define DWORD ULONG
+#endif
+
+#ifndef WORD
+#define WORD USHORT
+#endif
+
+//------------------------------------------------------------------------
+// GLOBALS
+//
+
+//------------------------------------------------------------------------
+// FUNCTIONS
+//
+
+//------------------------------------------------------------------------
+// determine which interrupt and evaluates vector
+//
+static UCHAR evaluate_vector(PCIADA *pciada)
+{
+ USHORT wIntCSR = READ_REGISTER_USHORT(pciada->pwIntCSR);
+ USHORT offset;
+ USHORT wCntrl = READ_REGISTER_USHORT(pciada->pwCntrl);
+
+ if (wCntrl & 0x100) // pciada switched on ?
+ {
+ if ((wIntCSR & 0x68) == 0x68)
+ {
+ // it's the pci interrupt # 2
+
+ // get current Cntrl - and clear interrupt
+ wCntrl &= ~0x0100; // disable
+ WRITE_REGISTER_USHORT(pciada->pwCntrl, wCntrl);
+ wCntrl |= 0x0100; // enable again
+ WRITE_REGISTER_USHORT(pciada->pwCntrl, wCntrl);
+ return 1;
+ }
+
+ if ((wIntCSR & 0x45) == 0x45)
+ {
+ // it's the interrupt # 1
+ offset = READ_REGISTER_USHORT(pciada->pwIRQStat);
+
+ if (offset & 1)
+ return 0xff & READ_REGISTER_UCHAR((PUCHAR)pciada->pbVector + offset);
+ }
+ }
+
+ return 0;
+}
+
+//------------------------------------------------------------------------
+// enable and disable of interrupts
+//
+void globalInterruptEnable(PCIADA *pciada)
+{
+ WRITE_REGISTER_USHORT(pciada->pwIntCSR, ENABLE_PCIADA_IRQS);
+}
+
+void globalInterruptDisable(PCIADA *pciada)
+{
+ WRITE_REGISTER_USHORT(pciada->pwIntCSR, DISABLE_PCIADA_IRQS);
+}
+
+//------------------------------------------------------------------------
+// insert the vector in a queue of interrupts (and rescue waiting IRPs)
+//
+static void InsertInIrqQueues(PCIADA *pciada, UCHAR vector)
+{
+ FIFO_LIST *next;
+ KIRQL oldIrqlList;
+ register PLIST_ENTRY pList = &pciada->IrqListList;
+
+ KdPrint(("InsertInIrqQueues\n"));
+
+ // iterate all fifos and insert the vector in each fifo
+ KeAcquireSpinLock(&pciada->IrqListLock, &oldIrqlList);
+
+ while (pList->Flink != &pciada->IrqListList)
+ {
+ pList = pList->Flink;
+ next = CONTAINING_RECORD(pList, FIFO_LIST, entry);
+
+ KdPrint(("Vector %d pushed\n", vector));
+
+ // push the vector into the fifo
+ PushElement(next->pIrqListHandle, vector);
+ }
+
+ KeReleaseSpinLock(&pciada->IrqListLock, oldIrqlList);
+
+ // more handling in the deffered procedure call
+ KeInsertQueueDpc(&pciada->kDPCobj, (PVOID)pciada, (PVOID)&vector);
+}
+
+//------------------------------------------------------------------------
+// main interrupt handler function
+//
+BOOLEAN irq_service(PKINTERRUPT Interrupt, PVOID ServiceContext)
+{
+ PCIADA *pciada = (PCIADA *)ServiceContext;
+ UCHAR vector;
+ UNREFERENCED_PARAMETER(Interrupt);
+ vector = evaluate_vector(pciada);
+ if (!(vector)) return FALSE;
+
+ KdPrint(("irq_service: %d\n", vector & 0xff));
+
+ if ((pciada->pbBusError) && ((vector == 7) || (vector == 1)))
+ *pciada->pbBusError = TRUE;
+ else
+ InsertInIrqQueues(pciada, vector); // insert at top of the queues
+
+ return TRUE;
+}
+
+//------------------------------------------------------------------------
+// translate interrupt resources for PCIADAs to neutral ones
+//
+/*
+NTSTATUS PCIVMETranslateInterrupts(PDEVICE_OBJECT device_Obj)
+{
+ int i;
+ NTSTATUS result = STATUS_SUCCESS;
+ DEVICE_EXT *pDevExt = (DEVICE_EXT*)device_Obj->DeviceExtension;
+ int nPCIADAs = pDevExt->nPCIADAs;
+ PCIADA *pciada = (PCIADA *) NULL;
+
+ KdPrint(("TranslateInterrupt()\n"));
+ if (nPCIADAs) return STATUS_SUCCESS;
+
+ for (i = 0; i < nPCIADAs; i++)
+ {
+ pciada = &pDevExt->pciada[i];
+
+ KdPrint(("In - Bus:%d, IrqLine:%d\n", pciada->Bus, pciada->Irql));
+
+ if (pciada->Irql)
+ {
+ pciada->Vector = HalGetInterruptVector(PCIBus, pciada->Bus,
+ pciada->Irql,
+ pciada->Vector,
+ &pciada->Irql, &pciada->Affinity);
+ }
+ else
+ result = STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT;
+ }
+
+ KdPrint(("Out - Irql:%d, Vector: %d, Affinity:%d\n", pciada->Irql, pciada->Vector, pciada->Affinity));
+
+ return result;
+}
+*/
+
+//------------------------------------------------------------------------
+// connect service routines to all PCIADA interrupts
+//
+NTSTATUS PCIVMEConnectInterrupt(PDEVICE_OBJECT device_Obj)
+{
+ int i;
+ NTSTATUS result = STATUS_SUCCESS;
+ DEVICE_EXT *pDevExt = (DEVICE_EXT*)device_Obj->DeviceExtension;
+ int nPCIADAs = pDevExt->nPCIADAs;
+ PCIADA *pciada;
+
+ KdPrint(("ConnectInterrupt()\n"));
+
+ // connect the interrupts to service routines
+ for (i = 0; i < nPCIADAs; i++)
+ {
+ pciada = &pDevExt->pciada[i];
+
+ pciada->InterruptObject = NULL;
+
+ if (pciada->Vector)
+ result = IoConnectInterrupt(&pciada->InterruptObject,
+ irq_service,
+ (PVOID)pciada,
+ NULL,
+ pciada->Vector,
+ pciada->Irql,
+ pciada->Irql,
+ LevelSensitive,
+ TRUE,
+ pciada->Affinity,
+ FALSE);
+
+ KdPrint(("pIrqObj:0x%08x, VirtVect:%d, Irql:%d, hIrql:%d, Aff:0x%08x, Status:0x%08x\n",
+ pciada->InterruptObject,
+ pciada->Vector, pciada->Irql, pciada->Irql, pciada->Affinity, result));
+
+ if (result != STATUS_SUCCESS) break;
+ }
+
+ return result;
+}
+
+//------------------------------------------------------------------------
+// dis-connect service routines to all PCIADA interrupts
+//
+NTSTATUS PCIVMEDisConnectInterrupt(PDEVICE_OBJECT device_Obj)
+{
+ int i;
+ DEVICE_EXT *pDevExt = (DEVICE_EXT*)device_Obj->DeviceExtension;
+ int nPCIADAs = pDevExt->nPCIADAs;
+ PCIADA *pciada;
+
+ KdPrint(("DisConnectInterrupt()\n"));
+
+ // dis connect the interrupts to service routines
+ for (i = 0; i < nPCIADAs; i++)
+ {
+ pciada = &pDevExt->pciada[i];
+
+ KdPrint(("IrqObj:0x%08x\n", pciada->InterruptObject));
+
+ if (pciada->InterruptObject)
+ IoDisconnectInterrupt(pciada->InterruptObject);
+ }
+
+ return STATUS_SUCCESS;
+}
+
+
Index: wiener_pcivme/pcivme/SOURCE/pciif.h
===================================================================
--- wiener_pcivme/pcivme/SOURCE/pciif.h (nonexistent)
+++ wiener_pcivme/pcivme/SOURCE/pciif.h (revision 178)
@@ -0,0 +1,88 @@
+#ifndef __PCIIF_H__
+//-----------------------------------------------------------------------
+// Address definitions of PCI-VME interface designed by A.Rausch
+//
+// (c) 1999-2004 ARW Elektronik
+//
+// this source code is published under GPL (Open Source). You can use, redistrubute and
+// modify it unless this header is not modified or deleted. No warranty is given that
+// this software will work like expected.
+// This product is not authorized for use as critical component in life support systems
+// wihout the express written approval of ARW Elektronik Germany.
+//
+// Please announce changes and hints to ARW Elektronik
+//
+// $Log: pciif.h,v $
+// Revision 1.3 2004/07/24 07:07:26 klaus
+// Update copyright to 2004
+//
+// Revision 1.2 2003/11/15 19:12:26 klaus
+// Update copyright to 2003
+//
+// Revision 1.1.1.1 2003/11/14 23:16:33 klaus
+// First put into repository
+//
+// Revision 1.3 2002/10/27 16:17:48 klaus
+// Typing bug fixed caused at log addition
+//
+// Revision 1.2 2002/10/27 16:11:02 klaus
+// Added CVS log into header
+//
+// what who when
+// first parts AR 24.11.1997
+// converted to new address layout AR 18.05.1998
+// next address layout conversion AR 27.06.1998
+// no pointer usage at definitions AR 20.02.1999
+// first release AR 20.02.1999
+// corrected global and local reset AR 18.04.1999
+//
+
+#include <vic.h>
+
+/*-----------------------------------------------------------------------*/
+/* all addresses relative to PCI-Window */
+
+/*------------- addresses of vmemm local devices ------------------------*/
+#define CSR (DWORD)0x0000 /* control status register */
+#define VICRES (DWORD)0x0004 /* VIC reset register / interrupt status */
+#define ADRHL (DWORD)0x0008 /* AdrH and AdrL as long */
+#define VICBASE (DWORD)0x0400 /* base of VIC68A */
+#define VECBASE (DWORD)0x0800 /* base of vector registers */
+#define VMEBASE (DWORD)0x1000 /* base of 4k VME-BUS window */
+
+/*---------- parts of addresses derived from above ----------------------*/
+#define IVEC1 (DWORD)(VECBASE + 3) /* IACK 1 vector */
+#define IVEC2 (DWORD)(VECBASE + 5) /* IACK 2 vector */
+#define IVEC3 (DWORD)(VECBASE + 7) /* IACK 3 vector */
+#define IVEC4 (DWORD)(VECBASE + 9) /* IACK 4 vector */
+#define IVEC5 (DWORD)(VECBASE + b) /* IACK 5 vector */
+#define IVEC6 (DWORD)(VECBASE + d) /* IACK 6 vector */
+#define IVEC7 (DWORD)(VECBASE + f) /* IACK 7 vector */
+
+#define ADRL (DWORD)ADRHL /* word access addr. VME-addr */
+#define ADRH (DWORD)(ADRHL + 2)
+
+/*--------- address mask ------------------------------------------------*/
+#define VME_ADR_MASK (DWORD)0x00000FFF /* masks lower part of address */
+
+/*--------- some masks in CSR -------------------------------------------*/
+#define FLAG_RMC (WORD)0x0001 /* set = next cycle is RMC */
+#define FLAG_BLT (WORD)0x0002 /* don't use it. must be 0 */
+#define FLAG_WORD (WORD)0x0004 /* it is a word wide interface */
+#define FLAG_SYSCTL (WORD)0x0008 /* the system contrl. is enabled */
+#define MASK_MODNR (WORD)0x00F0 /* the mask to get the module No */
+#define MASK_FPGA (WORD)0x0F00 /* the mask to get the FPGA rev. */
+#define MASK_MODTYPE (WORD)0xF000 /* the mask to get type of module*/
+
+/*---------- action commands in VICRES -----------------------------------*/
+#define GLOBAL_RESET (WORD)0x000A /* write this to reset the intrfc */
+#define LOCAL_RESET (WORD)0x0005 /* generate a local reset */
+
+/*---------- release und inhibit into 0x50 of PLX ------------------------*/
+#define RELEASE_VMEMM (WORD)0x4180 /* write this to release access ..*/
+#define INHIBIT_VMEMM (WORD)0x4080 /* write this to inhibit access ..*/
+#define ENABLE_PCIADA_IRQS (WORD)0x0049 /* enable PCIADA IRQs */
+#define DISABLE_PCIADA_IRQS (WORD)0x0009 /* disable PCIADA IRQs */
+
+#define __PCIIF_H__
+#endif
Index: wiener_pcivme/pcivme/SOURCE/pcivme_i.h
===================================================================
--- wiener_pcivme/pcivme/SOURCE/pcivme_i.h (nonexistent)
+++ wiener_pcivme/pcivme/SOURCE/pcivme_i.h (revision 178)
@@ -0,0 +1,70 @@
+#ifndef __PCIVME_I_H__
+#define __PCIVME_I_H__
+
+//-------------------------------------------------------------------------
+// WINNT driver for PCIVME interface from ARW Elektronik, Germany ---------
+// the header file to pcivme_i.c - all around interrupt handling
+//
+// (c) 1999-2004 ARW Elektronik
+//
+// this source code is published under GPL (Open Source). You can use, redistrubute and
+// modify it unless this header is not modified or deleted. No warranty is given that
+// this software will work like expected.
+// This product is not authorized for use as critical component in life support systems
+// wihout the express written approval of ARW Elektronik Germany.
+//
+// Please announce changes and hints to ARW Elektronik
+//
+// $Log: pcivme_i.h,v $
+// Revision 1.3 2004/07/24 07:07:26 klaus
+// Update copyright to 2004
+//
+// Revision 1.2 2003/11/15 19:12:51 klaus
+// Update copyright to 2003
+//
+// Revision 1.1.1.1 2003/11/14 23:16:33 klaus
+// First put into repository
+//
+// Revision 1.3 2002/10/27 16:17:48 klaus
+// Typing bug fixed caused at log addition
+//
+// Revision 1.2 2002/10/27 16:11:02 klaus
+// Added CVS log into header
+//
+// what who when
+// started AR 15.06.99
+// changed resource allocation caused by WIN2000 AR 08.06.2002
+//
+
+//-------------------------------------------------------------------------
+// INCLUDES
+//
+#include <ntddk.h>
+#include <pcivme_drv.h>
+
+//------------------------------------------------------------------------
+// DEFINES
+//
+
+//------------------------------------------------------------------------
+// PROTOTYPES
+//
+void globalInterruptEnable(PCIADA *pciada);
+void globalInterruptDisable(PCIADA *pciada);
+NTSTATUS PCIVMETranslateInterrupts(PDEVICE_OBJECT device_Obj);
+NTSTATUS PCIVMEConnectInterrupt(PDEVICE_OBJECT device_Obj);
+NTSTATUS PCIVMEDisConnectInterrupt(PDEVICE_OBJECT device_Obj);
+
+
+/* release all this procedures after init of the driver */
+#ifdef ALLOC_PRAGMA
+#pragma alloc_text (init, PCIVMEConnectInterrupt)
+#pragma alloc_text (init, PCIVMETranslateInterrupts)
+#endif
+
+/* put all this procedures in the paged memory-pool, all called at passiv Level */
+#ifdef ALLOC_PRAGMA
+#pragma alloc_text (page, PCIVMEDisConnectInterrupt)
+#endif
+
+#endif //__PCIVME_I_H__
Index: wiener_pcivme/pcivme/SOURCE/sources
===================================================================
--- wiener_pcivme/pcivme/SOURCE/sources (nonexistent)
+++ wiener_pcivme/pcivme/SOURCE/sources (revision 178)
@@ -0,0 +1,12 @@
+TARGETNAME=pcivme
+
+#VisualStudio 5
+#TARGETPATH=d:\Programme\DevStudio\MyProjects\pcivme
+#VisualStudio 6
+TARGETPATH=d:\Programme\VisualStudio\MyProjects\pcivme
+
+TARGETTYPE=DRIVER
+TARGETLIBS=
+
+INCLUDES=$(BASEDIR)\inc
+SOURCES=pcivme_drv.c pcivme_v.c pcivme_io.c pcivme_i.c pcivme_fifo.c
Index: wiener_pcivme/pcivme/SOURCE/pcivme.ncb
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/pcivme/SOURCE/pcivme.ncb
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/pcivme/SOURCE/pcivme.opt
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/pcivme/SOURCE/pcivme.opt
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/pcivme/SOURCE/pcivme_v.c
===================================================================
--- wiener_pcivme/pcivme/SOURCE/pcivme_v.c (nonexistent)
+++ wiener_pcivme/pcivme/SOURCE/pcivme_v.c (revision 178)
@@ -0,0 +1,203 @@
+//-------------------------------------------------------------------------
+// WINNT driver for PCIVME interface from ARW Elektronik, Germany ---------
+// all around recognition and basic services of VMEMM
+//
+// (c) 1999-2004 ARW Elektronik
+//
+// this source code is published under GPL (Open Source). You can use, redistrubute and
+// modify it unless this header is not modified or deleted. No warranty is given that
+// this software will work like expected.
+// This product is not authorized for use as critical component in life support systems
+// wihout the express written approval of ARW Elektronik Germany.
+//
+// Please announce changes and hints to ARW Elektronik
+//
+// $Log: pcivme_v.c,v $
+// Revision 1.3 2004/07/24 07:07:26 klaus
+// Update copyright to 2004
+//
+// Revision 1.2 2003/11/15 19:12:51 klaus
+// Update copyright to 2003
+//
+// Revision 1.1.1.1 2003/11/14 23:16:33 klaus
+// First put into repository
+//
+// Revision 1.3 2002/10/27 16:17:48 klaus
+// Typing bug fixed caused at log addition
+//
+// Revision 1.2 2002/10/27 16:11:02 klaus
+// Added CVS log into header
+//
+// what who when
+// started AR 02.07.1999
+// first release 1.0 AR 17.10.1999
+// changed resource allocation caused by WIN2000 AR 08.06.2002
+//
+
+//-------------------------------------------------------------------------
+// INCLUDES
+//
+#include <ntddk.h>
+#include <pcivme_drv.h>
+#include <pcivme_v.h>
+#include <pciif.h> // all around the pci interface
+
+#ifndef WORD // don't touch include files of WIN95 driver
+#define WORD USHORT
+#endif
+
+#ifndef DWORD
+#define DWORD ULONG
+#endif
+
+//------------------------------------------------------------------------
+// PROTOTYPES
+//
+
+//------------------------------------------------------------------------
+// GLOBALS
+//
+
+//------------------------------------------------------------------------
+// FUNCTIONS
+//
+
+//------------------------------------------------------------------------
+// test connection to VMEMM devices without disturbing anything
+//
+NTSTATUS TestConnection(PCIADA *pciada)
+{
+ USHORT *pwADRH = (USHORT *)((ULONG)(pciada->pvVirtIfr) + (ULONG)ADRH);
+ USHORT *pwADRL = (USHORT *)((ULONG)(pciada->pvVirtIfr) + (ULONG)ADRL);
+ int i;
+ USHORT wRet;
+ USHORT wADRHContent;
+ USHORT wADRLContent;
+
+
+ KdPrint(("TestConnection()\n"));
+
+ wADRHContent = READ_REGISTER_USHORT(pwADRH); // save previous content
+ wADRLContent = READ_REGISTER_USHORT(pwADRL);
+
+ for (i = 0; i < 10000; i++)
+ {
+ WRITE_REGISTER_USHORT(pwADRH, 0x5555);
+ WRITE_REGISTER_USHORT(pwADRL, 0xAAAA);
+ wRet = READ_REGISTER_USHORT(pwADRH);
+ if (wRet != 0x5555) return STATUS_UNSUCCESSFUL;
+
+ WRITE_REGISTER_USHORT(pwADRH, 0xAAAA);
+ WRITE_REGISTER_USHORT(pwADRL, 0x5555);
+ wRet = READ_REGISTER_USHORT(pwADRH);
+ if (wRet != 0xAAAA) return STATUS_UNSUCCESSFUL;
+
+ WRITE_REGISTER_USHORT(pwADRH, 0x0000);
+ WRITE_REGISTER_USHORT(pwADRL, 0xFFFF);
+ wRet = READ_REGISTER_USHORT(pwADRH);
+ if (wRet != 0x0000) return STATUS_UNSUCCESSFUL;
+
+ WRITE_REGISTER_USHORT(pwADRH, 0xFFFF);
+ WRITE_REGISTER_USHORT(pwADRL, 0x0000);
+ wRet = READ_REGISTER_USHORT(pwADRH);
+ if (wRet != 0xFFFF) return STATUS_UNSUCCESSFUL;
+ }
+
+ WRITE_REGISTER_USHORT(pwADRH, wADRHContent); // restore previous content
+ WRITE_REGISTER_USHORT(pwADRL, wADRLContent);
+
+ KdPrint(("TestConnection() OK.\n"));
+
+ return STATUS_SUCCESS;
+}
+
+//------------------------------------------------------------------------
+// scan VMEMM devices without disturbing anything
+//
+NTSTATUS PCIVMEScanVMEMM(PDEVICE_OBJECT deviceObj)
+{
+ int i;
+ int nPCIADAs = ((DEVICE_EXT*)(deviceObj->DeviceExtension))->nPCIADAs;
+ PCIADA *pciada;
+ USHORT wCntrl;
+ USHORT wIntCSR;
+ USHORT wVMEMMStatus;
+
+ KdPrint(("PCIVMEScanVMEMM()\n"));
+
+ for (i = 0; i < nPCIADAs; i++)
+ {
+ pciada = &((DEVICE_EXT*)(deviceObj->DeviceExtension))->pciada[i];
+
+ wCntrl = READ_REGISTER_USHORT(pciada->pwCntrl); // save it for later use
+ wIntCSR = READ_REGISTER_USHORT(pciada->pwIntCSR);
+
+ WRITE_REGISTER_USHORT(pciada->pwIntCSR, DISABLE_PCIADA_IRQS);
+ WRITE_REGISTER_USHORT(pciada->pwCntrl, RELEASE_VMEMM); // open it for test
+
+ if (wCntrl & 0x0800)
+ {
+ if (TestConnection(pciada) == STATUS_SUCCESS)
+ {
+ wVMEMMStatus = READ_REGISTER_USHORT(pciada->pvVirtIfr);
+
+ pciada->bConnected = TRUE;
+
+ // interpret the content
+ pciada->bWordMode = (wVMEMMStatus & FLAG_WORD) ? TRUE : FALSE;
+ pciada->bSysControl = (wVMEMMStatus & FLAG_SYSCTL) ? TRUE : FALSE;
+ pciada->wModuleNumber = (wVMEMMStatus & MASK_MODNR) >> 4;
+ pciada->wFPGAVersion = (wVMEMMStatus & MASK_FPGA) >> 8;
+ pciada->wModuleType = (wVMEMMStatus & MASK_MODTYPE) >> 12;
+
+ // calculate some heavy used addresses
+ pciada->pwCSR = (PUSHORT)((ULONG)(pciada->pvVirtIfr) + CSR);
+ pciada->pbModifier = (PUCHAR) ((ULONG)(pciada->pvVirtIfr) + VICBASE + AMSR);
+ pciada->pdwVMEAdr = (PULONG) ((ULONG)(pciada->pvVirtIfr) + ADRHL);
+ pciada->pwIRQStat = (PUSHORT)((ULONG)(pciada->pvVirtIfr) + VICRES);
+ pciada->pbVector = (PUCHAR) ((ULONG)(pciada->pvVirtIfr) + VECBASE);
+ pciada->pvVME = (PVOID) ((ULONG)(pciada->pvVirtIfr) + VMEBASE);
+
+ KdPrint(("PCIADA %d <-> VMEMM %d\n", i, pciada->wModuleNumber));
+ }
+ else
+ pciada->wModuleNumber = 0xFFFF; // not recognized, take it out
+ }
+ else
+ pciada->wModuleNumber = 0xFFFF; // not recognized, take it out
+
+ if (pciada->wModuleNumber != 0xFFFF)
+ WRITE_REGISTER_USHORT(pciada->pwCntrl, wCntrl); // restore state
+ else
+ WRITE_REGISTER_USHORT(pciada->pwCntrl, INHIBIT_VMEMM);
+
+ WRITE_REGISTER_USHORT(pciada->pwIntCSR, wIntCSR); // restore interrupt masks
+ }
+
+ return STATUS_SUCCESS;
+}
+
+
+//------------------------------------------------------------------------
+// deinit all PCIADAs in a passive state
+//
+NTSTATUS PCIVMEDeInitPCIADAs(PDEVICE_OBJECT deviceObj)
+{
+ int i;
+ DEVICE_EXT *pDevExt = (DEVICE_EXT*)deviceObj->DeviceExtension;
+ int nPCIADAs = pDevExt->nPCIADAs;
+ PCIADA *pciada;
+
+ KdPrint(("PCIVMEDeInitPCIADAs()\n"));
+
+ // dis connect the interrupts to service routines
+ for (i = 0; i < nPCIADAs; i++)
+ {
+ pciada = &pDevExt->pciada[i];
+
+ WRITE_REGISTER_USHORT(pciada->pwIntCSR, DISABLE_PCIADA_IRQS);
+ WRITE_REGISTER_USHORT(pciada->pwCntrl, INHIBIT_VMEMM);
+ }
+
+ return STATUS_SUCCESS;
+}
Index: wiener_pcivme/pcivme/SOURCE/pcivme_io.c
===================================================================
--- wiener_pcivme/pcivme/SOURCE/pcivme_io.c (nonexistent)
+++ wiener_pcivme/pcivme/SOURCE/pcivme_io.c (revision 178)
@@ -0,0 +1,1461 @@
+//-------------------------------------------------------------------------
+// WINNT driver for PCIVME interface from ARW Elektronik, Germany ---------
+// the ioctl functions
+//
+// (c) 1999-2004 ARW Elektronik
+//
+// this source code is published under GPL (Open Source). You can use, redistrubute and
+// modify it unless this header is not modified or deleted. No warranty is given that
+// this software will work like expected.
+// This product is not authorized for use as critical component in life support systems
+// wihout the express written approval of ARW Elektronik Germany.
+//
+// Please announce changes and hints to ARW Elektronik
+//
+// $Log: pcivme_io.c,v $
+// Revision 1.3 2004/07/24 07:07:26 klaus
+// Update copyright to 2004
+//
+// Revision 1.2 2003/11/15 19:12:51 klaus
+// Update copyright to 2003
+//
+// Revision 1.1.1.1 2003/11/14 23:16:33 klaus
+// First put into repository
+//
+// Revision 1.6 2002/10/27 18:30:57 klaus
+// simpel typing correction
+//
+// Revision 1.5 2002/10/27 18:29:56 klaus
+// honor backward compatibilty with non-extended modifier addressing
+//
+// Revision 1.4 2002/10/27 17:02:30 klaus
+// File addressing bug > 2 Gbtye circumvent
+//
+// Revision 1.3 2002/10/27 16:17:48 klaus
+// Typing bug fixed caused at log addition
+//
+// Revision 1.2 2002/10/27 16:11:02 klaus
+// Added CVS log into header
+//
+// what who when
+// started AR 03.07.1999
+// first release 1.0 AR 17.10.1999
+// changed resource allocation caused by WIN2000 AR 08.06.2002
+//
+
+//-------------------------------------------------------------------------
+// INCLUDES
+//
+#include <ntddk.h>
+#include <devioctl.h>
+#include <pcivme_drv.h>
+#include <pcivme.h>
+#include <pcivme_v.h>
+#include <pcivme_io.h>
+#include <pciif.h>
+#include <pcivme_i.h>
+#include <pcivme_fifo.h>
+
+//------------------------------------------------------------------------
+// DEFINES
+//
+
+// buffers usage must match the corresponding ioctl code!
+#define SET_BUFFERS_METHOD_OUT_DIRECT \
+{\
+ InputLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;\
+ OutputLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;\
+ pInputBuffer = ((void *)(Irp->AssociatedIrp.SystemBuffer));\
+ pOutputBuffer = ((void *)(MmGetSystemAddressForMdl(Irp->MdlAddress)));\
+}
+
+#define SET_BUFFERS_METHOD_IN_DIRECT \
+{\
+ InputLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;\
+ OutputLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;\
+ pInputBuffer = ((void *)(MmGetSystemAddressForMdl(Irp->MdlAddress)));\
+ pOutputBuffer = ((void *)(Irp->AssociatedIrp.SystemBuffer));\
+}
+
+#define SET_BUFFERS_METHOD_BUFFERED \
+{\
+ InputLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;\
+ OutputLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;\
+ pInputBuffer = pOutputBuffer = ((void *)(Irp->AssociatedIrp.SystemBuffer));\
+}
+
+#define COMPLETE_REQUEST \
+{\
+ if (Status != STATUS_PENDING)\
+ {\
+ Irp->IoStatus.Status = Status; \
+ Irp->IoStatus.Information = irp_info; \
+ IoCompleteRequest(Irp,IO_NO_INCREMENT); \
+ }\
+}
+
+// compatibilty issues to WIN95 driver calls
+#ifndef WORD
+#define WORD USHORT
+#endif
+
+#ifndef DWORD
+#define DWORD ULONG
+#endif
+
+#ifndef BYTE
+#define BYTE UCHAR
+#endif
+
+#ifndef BOOL
+#define BOOL BOOLEAN
+#endif
+
+#define MODIFIER_MASK 0x3F // mask for address modifier
+
+//-------------------------------------------------------------------------
+// GLOBALS
+//
+const PCIVME_INIT_ELEMENT init_element[] =
+ {{LCR, WORD_ACCESS, 0x4c, DISABLE_PCIADA_IRQS}, // disable interrupts
+ {LCR, WORD_ACCESS, 0x50, RELEASE_VMEMM}, // enable interface
+
+ {VIC, BYTE_ACCESS, (WORD)0x03, 0xf8+1}, // VIICR
+
+ {VIC, BYTE_ACCESS, (WORD)0x07, 0x78+1}, // VICR1
+ {VIC, BYTE_ACCESS, (WORD)0x0b, 0x78+2},
+ {VIC, BYTE_ACCESS, (WORD)0x0f, 0x78+3},
+ {VIC, BYTE_ACCESS, (WORD)0x13, 0x78+4},
+ {VIC, BYTE_ACCESS, (WORD)0x17, 0x78+5},
+ {VIC, BYTE_ACCESS, (WORD)0x1b, 0x78+6},
+ {VIC, BYTE_ACCESS, (WORD)0x1f, 0x78+7}, // VICR7
+
+ {VIC, BYTE_ACCESS, (WORD)0x23, 0xf8+0}, // DSICR
+
+ {VIC, BYTE_ACCESS, (WORD)0x27, 0xf8+1}, // LICR1
+ {VIC, BYTE_ACCESS, (WORD)0x2b, 0xf8+2},
+ {VIC, BYTE_ACCESS, (WORD)0x2f, 0xf8+3},
+ {VIC, BYTE_ACCESS, (WORD)0x33, 0xf8+4},
+ {VIC, BYTE_ACCESS, (WORD)0x37, 0xf8+5},
+ {VIC, BYTE_ACCESS, (WORD)0x3b, 0x38+6},
+ {VIC, BYTE_ACCESS, (WORD)0x3f, 0x38+7}, // LICR7
+
+ {VIC, BYTE_ACCESS, (WORD)0x43, 0xf8+2}, // ICGS
+ {VIC, BYTE_ACCESS, (WORD)0x47, 0xf8+3}, // ICMS
+
+ {VIC, BYTE_ACCESS, (WORD)0x4b, 0xf8+6}, // EGICR
+
+ {VIC, BYTE_ACCESS, (WORD)0x4f, 0x08}, // ICGS-IVBR (!)
+ {VIC, BYTE_ACCESS, (WORD)0x53, 0x0c}, // ICMS-IVBR (!)
+
+ {VIC, BYTE_ACCESS, (WORD)0x57, 0x00}, // LIVBR (!)
+
+ {VIC, BYTE_ACCESS, (WORD)0x5b, 0x10}, // EGIVBR (!)
+
+ {VIC, BYTE_ACCESS, (WORD)0x5f, 0x00}, // ICSR
+
+ {VIC, BYTE_ACCESS, (WORD)0x63, 0x00}, // ICR0
+ {VIC, BYTE_ACCESS, (WORD)0x67, 0x00},
+ {VIC, BYTE_ACCESS, (WORD)0x6b, 0x00},
+ {VIC, BYTE_ACCESS, (WORD)0x6f, 0x00},
+ {VIC, BYTE_ACCESS, (WORD)0x73, 0x00}, // ICR4
+
+ {VIC, BYTE_ACCESS, (WORD)0x83, 0xfe}, // VIRSR
+
+ {VIC, BYTE_ACCESS, (WORD)0x87, 0x0f}, // VIVR1
+ {VIC, BYTE_ACCESS, (WORD)0x8b, 0x0f},
+ {VIC, BYTE_ACCESS, (WORD)0x8f, 0x0f},
+ {VIC, BYTE_ACCESS, (WORD)0x93, 0x0f},
+ {VIC, BYTE_ACCESS, (WORD)0x97, 0x0f},
+ {VIC, BYTE_ACCESS, (WORD)0x9b, 0x0f},
+ {VIC, BYTE_ACCESS, (WORD)0x9f, 0x0f}, // VIVR7
+
+ {VIC, BYTE_ACCESS, (WORD)0xa3, 0x3c}, // TTR
+
+ {VIC, BYTE_ACCESS, (WORD)0xb3, 0x40}, // ARCR
+ {VIC, BYTE_ACCESS, (WORD)0xb7, 0x29}, // AMSR
+ {VIC, BYTE_ACCESS, (WORD)0xd3, 0x00}, // RCR
+
+ {IFR, LONG_ACCESS, (WORD)ADRHL, 0xF0F0F0F0}, // ADR-H, ADR-L
+ {IFR, WORD_ACCESS, (WORD)CSR , 0x0000}, // Contr-Reg
+
+ {VIC, BYTE_ACCESS, (WORD)0x7f, 0x80}, // ICR7
+
+ {LCR, WORD_ACCESS, 0x4c, DISABLE_PCIADA_IRQS},// disable interrupts
+
+ {STOP, WORD_ACCESS, 0, 0}};
+
+const PCIVME_INIT_ELEMENT deinit_element_pre[] =
+ {{VIC, BYTE_ACCESS, (WORD)0x7f, 0x00}, // ICR7 - sysfail
+ {LCR, WORD_ACCESS, 0x4c, DISABLE_PCIADA_IRQS},// disable interrupts
+ {STOP, WORD_ACCESS, 0, 0}};
+
+const PCIVME_INIT_ELEMENT deinit_element_post[] =
+ {{LCR, WORD_ACCESS, 0x50, INHIBIT_VMEMM}, // disable interface
+ {STOP, WORD_ACCESS, 0, 0}};
+
+
+//--------------------------------------------------------------------------
+// LOCAL FUNCTIONS
+//
+
+//--------------------------------------------------------------------------
+// fast read or write functions - portable -
+static void readByte(void *to, ULONG dwLength, void *from)
+{
+ READ_REGISTER_BUFFER_UCHAR((PUCHAR)from, (PUCHAR)to, dwLength);
+}
+
+static void readWord(void *to, ULONG dwLength, void *from)
+{
+ dwLength >>= 1;
+ READ_REGISTER_BUFFER_USHORT((PUSHORT)from, (PUSHORT)to, dwLength);
+}
+
+static void readLong(void *to, ULONG dwLength, void *from)
+{
+ dwLength >>= 2;
+ READ_REGISTER_BUFFER_ULONG((PULONG)from, (PULONG)to, dwLength);
+}
+
+static void writeByte(void *to, ULONG dwLength, void *from)
+{
+ WRITE_REGISTER_BUFFER_UCHAR((PUCHAR)to, (PUCHAR)from, dwLength);
+}
+
+static void writeWord(void *to, ULONG dwLength, void *from)
+{
+ dwLength >>= 1;
+ WRITE_REGISTER_BUFFER_USHORT((PUSHORT)to, (PUSHORT)from, dwLength);
+}
+
+static void writeLong(void *to, ULONG dwLength, void *from)
+{
+ dwLength >>= 2;
+ WRITE_REGISTER_BUFFER_ULONG((PULONG)to, (PULONG)from, dwLength);
+}
+
+//------------------------------------------------------------------------
+// insert the irq queue into the linked list of queues
+static NTSTATUS insertQueueInList(PFILE_OBJ pFile_obj, PCIADA *pciada)
+{
+ NTSTATUS Status = STATUS_SUCCESS;
+ FIFO_LIST *next;
+ KIRQL OldIrql;
+
+ KdPrint(("insertQueueInList()\n"));
+
+ if (pFile_obj->bQueueIrq) // still enabled and in list
+ return Status;
+
+ // allocate memory to hold the list and its container
+ next = (FIFO_LIST *)ExAllocatePool(NonPagedPool, sizeof(FIFO_LIST));
+ if(next == (FIFO_LIST *)NULL)
+ return STATUS_INSUFFICIENT_RESOURCES;
+ else
+ {
+ // fill contents in entry
+ next->pFile_obj = pFile_obj;
+ next->pIrqListHandle = pFile_obj->pIrqListHandle;
+
+ // insert the entry in the list
+ KeAcquireSpinLock(&pciada->IrqListLock, &OldIrql);
+ KdPrint(("InsertHeadList(0x%08x, 0x%08x)\n", &pciada->IrqListList, &next->entry));
+ InsertHeadList(&pciada->IrqListList, &next->entry);
+ KeReleaseSpinLock(&pciada->IrqListLock, OldIrql);
+
+ // show and mark it
+ pFile_obj->bQueueIrq = TRUE;
+ }
+
+ return Status;
+}
+
+//------------------------------------------------------------------------
+// remove the irq queue from the linked list of queues
+NTSTATUS removeQueueFromList(PFILE_OBJ pFile_obj, PCIADA *pciada)
+{
+ NTSTATUS Status = STATUS_SUCCESS;
+ FIFO_LIST *next;
+ PLIST_ENTRY pList;
+ KIRQL OldIrql;
+
+ KdPrint(("removeQueueFromList(0x%08x, 0x%08x)\n", pFile_obj, pciada));
+
+ pList = &pciada->IrqListList;
+
+ if ((pFile_obj == (FILE_OBJ *)NULL) || (pciada == (PCIADA *)NULL)) return Status;
+
+ // search for coincidence of pFile_obj in the list
+ KeAcquireSpinLock(&pciada->IrqListLock, &OldIrql);
+ while (pList->Flink != &pciada->IrqListList)
+ {
+ pList = pList->Flink;
+ next = CONTAINING_RECORD(pList, FIFO_LIST, entry);
+ if (next->pFile_obj == pFile_obj) // found
+ {
+ KdPrint(("RemoveEntryList(0%08x)\n", pList));
+ RemoveEntryList(pList);
+ ExFreePool((PVOID)next);
+ break;
+ }
+ }
+ KeReleaseSpinLock(&pciada->IrqListLock, OldIrql);
+
+ // in every case switch it off (again)
+ pFile_obj->bQueueIrq = FALSE;
+
+ KdPrint(("removeQueueFromList OK\n"));
+ return Status;
+}
+
+//--------------------------------------------------------------------------
+// parsing of user supplied input for validy
+static BOOLEAN check_command(const PCIVME_INIT_ELEMENT *psInitElement)
+{
+ USHORT range;
+ USHORT access_size;
+
+ switch (psInitElement->range)
+ {
+ case LCR: range = 0x54; break;
+ case IFR: range = 0x0c; break;
+ case VIC: range = 0xe4;
+ if ((psInitElement->offset & 3) != 3)
+ return FALSE;
+ break;
+ default: range = 0; break;
+ }
+
+ switch (psInitElement->type)
+ {
+ case LONG_ACCESS: if (psInitElement->offset & 3)
+ return FALSE;
+ access_size = sizeof(ULONG);
+ break;
+ case WORD_ACCESS: if (psInitElement->offset & 1)
+ return FALSE;
+ access_size = sizeof( USHORT);
+ break;
+ case BYTE_ACCESS: access_size = sizeof( UCHAR); break;
+ default : access_size = 0xFFFF; break;
+ }
+
+ if ((psInitElement->offset + access_size) > range)
+ return FALSE; // ignore it
+
+ return TRUE;
+}
+
+//------------------------------------------------------------------------
+// iterate through all commands
+static VOID CmdMachine(const PCIVME_INIT_ELEMENT *psInitElement,
+ PVOID pvLcr, PVOID pvIfr)
+{
+ PVOID adr;
+
+ // standard initialisierungen
+ while (psInitElement->range != STOP)
+ {
+ /*
+ KdPrint(("CmdMachine: %d %d 0x%02x 0x%02x\n",
+ psInitElement->range, psInitElement->type,
+ psInitElement->offset, psInitElement->value));
+ */
+
+ if (check_command(psInitElement))
+ {
+ switch (psInitElement->range)
+ {
+ case LCR: adr = pvLcr; break;
+ case VIC: adr = (PVOID)((ULONG)pvIfr + (USHORT)VICBASE); break;
+ case IFR:
+ default: adr = pvIfr; break;
+ }
+
+ switch (psInitElement->type)
+ {
+ case LONG_ACCESS:
+ WRITE_REGISTER_ULONG((ULONG *)((UCHAR *)adr + psInitElement->offset),
+ psInitElement->value);
+ break;
+ case WORD_ACCESS:
+ WRITE_REGISTER_USHORT((USHORT *)((UCHAR *)adr + psInitElement->offset),
+ (USHORT)psInitElement->value);
+ break;
+ case BYTE_ACCESS:
+ default:
+ WRITE_REGISTER_UCHAR((UCHAR *)((UCHAR *)adr + psInitElement->offset),
+ (UCHAR)psInitElement->value);
+ break;
+ }
+ }
+ psInitElement++;
+ }
+}
+
+//------------------------------------------------------------------------
+// init the interface with build in and user supplied constants
+static BOOLEAN InitInterface(const PCIVME_INIT_COMMAND *psInitCmd,
+ PVOID pvLcr, PVOID pvIfr)
+{
+ PCIVME_INIT_ELEMENT *psVie;
+
+ if ((psInitCmd == (PCIVME_INIT_COMMAND *)BOGUSADDRESS) ||
+ (psInitCmd == (PCIVME_INIT_COMMAND *)NULL) ||
+ (pvLcr == (PVOID)BOGUSADDRESS) ||
+ (pvLcr == (PVOID)NULL) ||
+ (pvIfr == (PVOID)BOGUSADDRESS) ||
+ (pvIfr == (PVOID)NULL))
+ return FALSE;
+
+ psVie = (PCIVME_INIT_ELEMENT *)psInitCmd->sVie;
+ CmdMachine(init_element , pvLcr, pvIfr); // standard initialisierungen
+ CmdMachine(psVie, pvLcr, pvIfr); // benutzer initialisierungen
+
+ return TRUE;
+}
+
+// deinit the interface with user supplied and build in constants
+static BOOLEAN DeInitInterface(const PCIVME_INIT_COMMAND *psDeInitCmd,
+ PVOID pvLcr, PVOID pvIfr)
+{
+ PCIVME_INIT_ELEMENT *psVie;
+
+ if ((psDeInitCmd == (PCIVME_INIT_COMMAND *)BOGUSADDRESS) ||
+ (psDeInitCmd == (PCIVME_INIT_COMMAND *)NULL) ||
+ (pvLcr == (PVOID)BOGUSADDRESS) ||
+ (pvLcr == (PVOID)NULL) ||
+ (pvIfr == (PVOID)BOGUSADDRESS) ||
+ (pvIfr == (PVOID)NULL))
+ return FALSE;
+
+ psVie = (PCIVME_INIT_ELEMENT *)psDeInitCmd->sVie;
+ CmdMachine(deinit_element_pre, pvLcr, pvIfr); // standard de-initialisierungen
+ CmdMachine(psVie, pvLcr, pvIfr); // benutzer de-initialisierungen
+ CmdMachine(deinit_element_post , pvLcr, pvIfr); // disable interface
+
+ return TRUE;
+}
+
+//------------------------------------------------------------------------
+// a inserter into a user managed queue of IRPs
+//
+void InsertIRPtoQueue(PDEVICE_OBJECT device_Obj, PIRP Irp)
+{
+ DEVICE_EXT *pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension);
+ KIRQL oldIrql;
+
+ KdPrint(("InsertIRPtoQueue(0x%08x)\n", Irp));
+
+ KeAcquireSpinLock(&pDevExt->IRPLock, &oldIrql);
+ InsertHeadList(&pDevExt->IRPList, &Irp->Tail.Overlay.ListEntry);
+ KeReleaseSpinLock(&pDevExt->IRPLock, oldIrql);
+}
+
+//------------------------------------------------------------------------
+// a remover out of a user managed queue of IRPs
+//
+PIRP RemoveIRPfromQueue(PDEVICE_OBJECT device_Obj, FILE_OBJ *pFile_obj)
+{
+ DEVICE_EXT *pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension);
+ KIRQL oldIrql;
+ register PLIST_ENTRY pList = &pDevExt->IRPList;
+ PIRP Irp;
+ PIRP pIrp = (PIRP)NULL;
+ FILE_OBJ *file_obj;
+
+ KdPrint(("RemoveIRPfromQueue()\n"));
+
+ KeAcquireSpinLock(&pDevExt->IRPLock, &oldIrql);
+
+ while (pList->Flink != &pDevExt->IRPList) // until the end is reached
+ {
+ pList = pList->Flink;
+ Irp = CONTAINING_RECORD(pList, IRP, Tail.Overlay.ListEntry);
+ file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext;
+
+ KdPrint(("pList 0x%08x, pList->Flink 0x%08x, Irp 0x%08x, file_obj 0x%08x\n", pList, pList->Flink, Irp, file_obj));
+
+ if ((file_obj == pFile_obj) && (pFile_obj != (FILE_OBJ *)NULL))
+ {
+ RemoveEntryList(pList);
+ pIrp = Irp;
+ break;
+ }
+ }
+
+ KeReleaseSpinLock(&pDevExt->IRPLock, oldIrql);
+
+ KdPrint(("return RemoveIRPfromQueue(0x%08x)\n", pIrp));
+
+ return pIrp;
+}
+
+//------------------------------------------------------------------------
+// a remover out of a user managed queue of IRPs
+//
+PIRP RemoveIRPfromQueueByIrp(PDEVICE_OBJECT device_Obj, PIRP pIrpIn)
+{
+ DEVICE_EXT *pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension);
+ KIRQL oldIrql;
+ register PLIST_ENTRY pList = &pDevExt->IRPList;
+ PIRP Irp;
+ PIRP pIrp = (PIRP)NULL;
+
+ KdPrint(("RemoveIRPfromQueueByIrp()\n"));
+
+ KeAcquireSpinLock(&pDevExt->IRPLock, &oldIrql);
+
+ while (pList->Flink != &pDevExt->IRPList) // until the end is reached
+ {
+ pList = pList->Flink;
+ Irp = CONTAINING_RECORD(pList, IRP, Tail.Overlay.ListEntry);
+
+ KdPrint(("pList 0x%08x, pList->Flink 0x%08x, Irp 0x%08x\n", pList, pList->Flink, Irp));
+
+ if (pIrpIn == Irp)
+ {
+ RemoveEntryList(pList);
+ pIrp = Irp;
+ break;
+ }
+ }
+
+ KeReleaseSpinLock(&pDevExt->IRPLock, oldIrql);
+
+ KdPrint(("return RemoveIRPfromQueueByIrp(0x%08x)\n", pIrp));
+
+ return pIrp;
+}
+
+//------------------------------------------------------------------------
+// the default cancel routine for an queued Irp
+//
+void CancelRequest(PDEVICE_OBJECT device_Obj, PIRP Irp)
+{
+ PIRP pIrpCancel = RemoveIRPfromQueueByIrp(device_Obj, Irp);
+
+ if (pIrpCancel == (PIRP)NULL)
+ {
+ IoReleaseCancelSpinLock(Irp->CancelIrql);
+ KdPrint(("Nothing to do: CancelRequest(0x%08x)\n", Irp));
+ return;
+ }
+ else
+ {
+ IoReleaseCancelSpinLock(Irp->CancelIrql);
+
+ KdPrint(("Done: CancelRequest(0x%08x)\n", Irp));
+
+ Irp->IoStatus.Status = STATUS_CANCELLED;
+ Irp->IoStatus.Information = 0;
+
+ IoCompleteRequest(Irp, IO_NO_INCREMENT);
+ }
+}
+
+
+//------------------------------------------------------------------------
+// the custom deffered routine to finish blocking io on read_vector
+void fMyDefferedRoutine(PKDPC Dpc, PVOID pvDevice_object,
+ PVOID pvPciada, PVOID pvVector)
+{
+ NTSTATUS Status = STATUS_SUCCESS;
+ ULONG irp_info = sizeof(PCIVME_VECTOR_RESPONSE);
+ PIRP Irp = (PIRP)NULL;
+ PDEVICE_OBJECT device_Obj = (PDEVICE_OBJECT)pvDevice_object;
+ PCIADA *pciada = (PCIADA *)pvPciada;
+ FIFO_LIST *next;
+ KIRQL oldIrqlCancel;
+ KIRQL oldIrqlList;
+ register PLIST_ENTRY pList = &pciada->IrqListList;
+ UNREFERENCED_PARAMETER(pvVector);
+ UNREFERENCED_PARAMETER(Dpc);
+ KdPrint(("fMyDefferedRoutine()\n"));
+
+ // beware off damage due to intercept with cancel of thread
+ IoAcquireCancelSpinLock(&oldIrqlCancel);
+ KeAcquireSpinLock(&pciada->IrqListLock, &oldIrqlList);
+
+ while (pList->Flink != &pciada->IrqListList) // until the end is reached
+ {
+ pList = pList->Flink;
+ KeReleaseSpinLock(&pciada->IrqListLock, oldIrqlList); // shorten block
+
+ next = CONTAINING_RECORD(pList, FIFO_LIST, entry);
+
+ // get my associated packet
+ Irp = RemoveIRPfromQueue(device_Obj, next->pFile_obj);
+
+ if (Irp != (PIRP)NULL)
+ {
+ PCIVME_VECTOR_REQUEST *pVectorRequest = (PCIVME_VECTOR_REQUEST *)(Irp->AssociatedIrp.SystemBuffer);
+ PCIVME_VECTOR_RESPONSE *pVectorResponse = (PCIVME_VECTOR_RESPONSE *)pVectorRequest;
+ USHORT wRequestCount = pVectorRequest->wRequestCount;
+ UCHAR *pbVector = &pVectorResponse->bStatusID;
+ FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext;
+ UCHAR bNumberOfElements = (UCHAR) NumberOfElements(file_obj->pIrqListHandle);
+
+ // pull the vectors off the fifo
+ pVectorResponse->wCount = 0;
+ while ((bNumberOfElements) && (wRequestCount--))
+ {
+ bNumberOfElements = (UCHAR) PullElement(file_obj->pIrqListHandle,
+ (void *)pbVector);
+ pbVector++;
+ pVectorResponse->wCount++;
+ }
+ pVectorResponse->wPendingCount = bNumberOfElements;
+ pVectorResponse->bOverflow = CheckAndClearOverflow(file_obj->pIrqListHandle);
+ irp_info = sizeof(PCIVME_VECTOR_RESPONSE) +
+ sizeof(UCHAR) * (pVectorResponse->wCount - 1);
+
+ // release the cancel routine from this Irp
+ IoSetCancelRoutine(Irp, NULL);
+
+ COMPLETE_REQUEST;
+ }
+
+ KeAcquireSpinLock(&pciada->IrqListLock, &oldIrqlList);
+ }
+
+ // release the spin locks
+ KeReleaseSpinLock(&pciada->IrqListLock, oldIrqlList);
+ IoReleaseCancelSpinLock(oldIrqlCancel);
+}
+
+//------------------------------------------------------------------------
+// all functions called from ioctl jump table
+//
+
+//------------------------------------------------------------------------
+// initialize all hardware associated to a given wModuleNumber
+static NTSTATUS ioctl_init_hardware(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack)
+{
+ NTSTATUS Status = STATUS_SUCCESS;
+ ULONG irp_info = 0;
+ PVOID pInputBuffer,pOutputBuffer;
+ ULONG InputLength, OutputLength;
+ DEVICE_EXT *pDevExt;
+ PCIVME_INIT_COMMAND *pInitCommand;
+ PCIADA *pciada;
+ FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext;
+
+ pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension);
+
+ SET_BUFFERS_METHOD_BUFFERED;
+
+ // do what must be here in between --- start ---
+ pInitCommand = (PCIVME_INIT_COMMAND *)pInputBuffer;
+
+ KdPrint(("ioctl_init_hardware(%d)\n", file_obj->uwAssociatedVMEMM));
+
+ pciada = pDevExt->vmemm[file_obj->uwAssociatedVMEMM];
+
+ if (pciada != NULL)
+ {
+ KIRQL oldIrql;
+
+ if (pciada->dwLinkCount == 1)
+ {
+ // lock other users out
+ KeAcquireSpinLock(&pciada->AccessLock, &oldIrql);
+
+ if (InitInterface(pInitCommand, pciada->pvVirtLcr, pciada->pvVirtIfr))
+ {
+ // fill cache for page and modifier
+ pciada->dwVMEPage = READ_REGISTER_ULONG(pciada->pdwVMEAdr) & ~VME_ADR_MASK;
+ pciada->bModifier = READ_REGISTER_UCHAR(pciada->pbModifier) & MODIFIER_MASK;
+ }
+ else
+ Status = STATUS_UNSUCCESSFUL;
+
+ // release the lock
+ KeReleaseSpinLock(&pciada->AccessLock, oldIrql);
+ }
+ else
+ Status = STATUS_UNSUCCESSFUL;
+ }
+ else
+ Status = STATUS_UNSUCCESSFUL;
+
+ // do what must be here in between --- end ---
+
+ COMPLETE_REQUEST;
+
+ KdPrint(("ioctl_init_hardware(), Status = 0x%08x\n", Status));
+
+ return Status;
+}
+
+//------------------------------------------------------------------------
+// De-initialise all hardware associated to a given wModuleNumber
+static NTSTATUS ioctl_deinit_hardware(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack)
+{
+ NTSTATUS Status = STATUS_SUCCESS;
+ ULONG irp_info = 0;
+ PVOID pInputBuffer,pOutputBuffer;
+ ULONG InputLength, OutputLength;
+ DEVICE_EXT *pDevExt;
+ PCIVME_INIT_COMMAND *pInitCommand;
+ PCIADA *pciada;
+ FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext;
+ KdPrint(("ioctl_deinit_hardware()\n"));
+
+ pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension);
+
+ SET_BUFFERS_METHOD_BUFFERED;
+
+ // do what must be hier in between --- start ---
+ pInitCommand = (PCIVME_INIT_COMMAND *)pInputBuffer;
+
+ KdPrint(("ioctl_deinit_hardware(%d)\n", file_obj->uwAssociatedVMEMM));
+
+ pciada = pDevExt->vmemm[file_obj->uwAssociatedVMEMM];
+
+ if (pciada != NULL)
+ {
+ KIRQL oldIrql;
+
+ if (pciada->dwLinkCount == 1)
+ {
+ // lock other users out
+ KeAcquireSpinLock(&pciada->AccessLock, &oldIrql);
+
+ if (DeInitInterface(pInitCommand, pciada->pvVirtLcr, pciada->pvVirtIfr))
+ globalInterruptDisable(pciada);
+ else
+ Status = STATUS_UNSUCCESSFUL;
+
+ // everyone likes to have PCIVME
+ KeReleaseSpinLock(&pciada->AccessLock, oldIrql);
+ }
+ else
+ Status = STATUS_UNSUCCESSFUL;
+ }
+ else
+ Status = STATUS_UNSUCCESSFUL;
+ // do what must be hier in between --- end ---
+
+ COMPLETE_REQUEST;
+
+ KdPrint(("ioctl_deinit_hardware(), Status = 0x%08x\n", Status));
+
+ return Status;
+}
+
+//------------------------------------------------------------------------
+// a dummy entry because of compatibiltiy (near) WIN95 driver
+static NTSTATUS ioctl_dummy(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack)
+{
+ NTSTATUS Status = STATUS_SUCCESS;
+ ULONG irp_info = 0;
+ PVOID pInputBuffer,pOutputBuffer;
+ ULONG InputLength, OutputLength;
+ PCIVME_INIT_COMMAND *pInitCommand;
+ FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext;
+
+ SET_BUFFERS_METHOD_BUFFERED;
+ UNREFERENCED_PARAMETER(device_Obj);
+#ifndef _DEBUG
+ UNREFERENCED_PARAMETER(file_obj);
+#endif
+ pInitCommand = (PCIVME_INIT_COMMAND *)pInputBuffer;
+
+ KdPrint(("ioctl_dummy(%d)\n", file_obj->uwAssociatedVMEMM));
+
+ // do what must be here in between -----------
+
+ // do what must be here in between --- end ---
+
+ COMPLETE_REQUEST;
+
+ KdPrint(("ioctl_dummy(), Status = 0x%08x\n", Status));
+
+ return Status;
+}
+
+//------------------------------------------------------------------------
+// requests fixed unchangeable information - not compatible to WIN95 driver
+static NTSTATUS ioctl_get_static_status(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack)
+{
+ NTSTATUS Status = STATUS_SUCCESS;
+ ULONG irp_info = sizeof(PCIVME_STATIC_STATUS);
+ PVOID pInputBuffer,pOutputBuffer;
+ ULONG InputLength, OutputLength;
+ PCIADA *pciada;
+ DEVICE_EXT *pDevExt;
+ PCIVME_STATIC_STATUS *pStaticStatus;
+ FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext;
+
+ pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension);
+
+ SET_BUFFERS_METHOD_BUFFERED;
+
+ KdPrint(("ioctl_get_static_status(%d)\n", file_obj->uwAssociatedVMEMM));
+
+ // do what must be here in between -----------
+ if (OutputLength >= sizeof(PCIVME_STATIC_STATUS))
+ {
+ pStaticStatus = (PCIVME_STATIC_STATUS *)pOutputBuffer;
+
+ pciada = pDevExt->vmemm[file_obj->uwAssociatedVMEMM];
+
+ pStaticStatus->dwInterface = file_obj->uwAssociatedVMEMM;
+
+ pStaticStatus->wNumMemWindows = 3;
+ pStaticStatus->wNumIOPorts = 2;
+ pStaticStatus->wNumIRQs = 1;
+ pStaticStatus->wNumDMAs = 0;
+
+ pStaticStatus->dwLinkCount = pciada->dwLinkCount;
+
+ pStaticStatus->wModuleType = pciada->wModuleType;
+ pStaticStatus->wFPGAVersion = pciada->wFPGAVersion;
+ pStaticStatus->wModuleNumber = pciada->wModuleNumber;
+ pStaticStatus->wWordMode = pciada->bWordMode;
+
+ pStaticStatus->wSysControl = pciada->bSysControl;
+ pStaticStatus->wConnected = pciada->bConnected;
+
+ pStaticStatus->pvLcr = pciada->pvPhysLcr;
+ pStaticStatus->pvIfr = pciada->pvPhysIfr;
+
+ pStaticStatus->dwDriverVersion = DRIVER_VERSION;
+ pStaticStatus->dwDriverVariant = DRIVER_VARIANT;
+ }
+ else
+ Status = STATUS_BUFFER_TOO_SMALL;
+ // do what must be here in between --- end ---
+
+ COMPLETE_REQUEST;
+
+ KdPrint(("ioctl_get_static_status(), Status = 0x%08x\n", Status));
+
+ return Status;
+}
+
+//------------------------------------------------------------------------
+// requests changeable status
+static NTSTATUS ioctl_get_dynamic_status(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack)
+{
+ NTSTATUS Status = STATUS_SUCCESS;
+ ULONG irp_info = sizeof(PCIVME_DYNAMIC_STATUS);
+ PVOID pInputBuffer,pOutputBuffer;
+ ULONG InputLength, OutputLength;
+ PCIADA *pciada;
+ DEVICE_EXT *pDevExt;
+ PCIVME_DYNAMIC_STATUS *pDynamicStatus;
+ FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext;
+
+ SET_BUFFERS_METHOD_BUFFERED;
+
+ KdPrint(("ioctl_get_dynamic_status(%d)\n", file_obj->uwAssociatedVMEMM));
+
+ // do what must be here in between -----------
+ pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension);
+
+ SET_BUFFERS_METHOD_BUFFERED;
+
+ KdPrint(("ioctl_get_static_status(%d)\n", file_obj->uwAssociatedVMEMM));
+
+ // do what must be here in between -----------
+ if (OutputLength >= sizeof(PCIVME_DYNAMIC_STATUS))
+ {
+ USHORT temp;
+
+ pDynamicStatus = (PCIVME_DYNAMIC_STATUS *)pOutputBuffer;
+
+ pciada = pDevExt->vmemm[file_obj->uwAssociatedVMEMM];
+
+ pDynamicStatus->dwInterface = file_obj->uwAssociatedVMEMM;
+
+ temp = READ_REGISTER_USHORT(pciada->pwCntrl);
+ pDynamicStatus->wVMEMM_enable = ((temp & 0x0180) == 0x0180) ? 1 : 0;
+ pDynamicStatus->wVMEMM_connected = ((temp & 0x0c00) == 0x0800) ? 1 : 0;
+ temp = READ_REGISTER_USHORT(pciada->pwIntCSR);
+ pDynamicStatus->wPCIADAIrq = (temp & 0x0004) ? 1 : 0;
+ pDynamicStatus->wVMEMMIrq = (temp & 0x0020) ? 1 : 0;
+ }
+ else
+ Status = STATUS_BUFFER_TOO_SMALL;
+
+ // do what must be here in between --- end ---
+
+ COMPLETE_REQUEST;
+
+ KdPrint(("ioctl_get_dynamic_status(), Status = 0x%08x\n", Status));
+
+ return Status;
+}
+
+//------------------------------------------------------------------------
+// get the next vector out of the vector queue
+static NTSTATUS ioctl_read_vector(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack)
+{
+ NTSTATUS Status = STATUS_SUCCESS;
+ ULONG irp_info = sizeof(PCIVME_VECTOR_RESPONSE);
+ PVOID pInputBuffer,pOutputBuffer;
+ ULONG InputLength, OutputLength;
+ PCIVME_VECTOR_RESPONSE *pVectorResponse;
+ PCIVME_VECTOR_REQUEST *pVectorRequest;
+ FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext;
+ KIRQL oldIrql;
+ BOOLEAN bPoll;
+ USHORT wRequestCount;
+
+ SET_BUFFERS_METHOD_BUFFERED;
+
+ KdPrint(("ioctl_read_vector(%d)\n", file_obj->uwAssociatedVMEMM));
+
+ pVectorRequest = (PCIVME_VECTOR_REQUEST *)pInputBuffer;
+ pVectorResponse = (PCIVME_VECTOR_RESPONSE *)pOutputBuffer;
+
+ // check the available room for vectors and correct if too less
+ if (OutputLength <
+ (sizeof(PCIVME_VECTOR_RESPONSE) +
+ (pVectorRequest->wRequestCount - 1) * sizeof(UCHAR)))
+ pVectorRequest->wRequestCount =
+ (USHORT)OutputLength - sizeof(PCIVME_VECTOR_RESPONSE) + sizeof(UCHAR);
+
+ // empty the inputbuffer as early as possible
+ wRequestCount = pVectorRequest->wRequestCount;
+ bPoll = pVectorRequest->bPoll;
+
+ // do what must be here in between -----------
+ if (OutputLength >= sizeof(PCIVME_VECTOR_RESPONSE)) // at least room for one
+ {
+ UCHAR bNumberOfElements;
+ UCHAR *pbVector = &pVectorResponse->bStatusID;
+
+ pVectorResponse->dwInterface = file_obj->uwAssociatedVMEMM;
+
+ bNumberOfElements = (UCHAR) NumberOfElements(file_obj->pIrqListHandle);
+
+ if ((bNumberOfElements) || (bPoll))
+ {
+ KdPrint(("Direct return (%d)\n", bNumberOfElements));
+
+ pVectorResponse->wCount = 0;
+ while ((bNumberOfElements) && (wRequestCount--))
+ {
+ bNumberOfElements = (UCHAR) PullElement(file_obj->pIrqListHandle,
+ (void *)pbVector);
+ pbVector++;
+ pVectorResponse->wCount++;
+ }
+ pVectorResponse->wPendingCount = bNumberOfElements;
+ pVectorResponse->bOverflow = CheckAndClearOverflow(file_obj->pIrqListHandle);
+ irp_info = sizeof(PCIVME_VECTOR_RESPONSE) +
+ sizeof(UCHAR) * (pVectorResponse->wCount - 1);
+ }
+ else // go in wait queue for an irq
+ {
+ IoAcquireCancelSpinLock(&oldIrql);
+
+ if (Irp->Cancel) // cancel while doing
+ {
+ KdPrint(("Canceld return (%d)\n", bNumberOfElements));
+ Status = STATUS_CANCELLED;
+ }
+ else
+ {
+ KdPrint(("Blocking return (%d)\n", bNumberOfElements));
+
+ InsertIRPtoQueue(device_Obj, Irp);
+
+ Status = STATUS_PENDING;
+
+ // mark irp as pending and return
+ IoMarkIrpPending(Irp);
+ IoSetCancelRoutine(Irp, CancelRequest);
+ } // if (Irp->Cancel) ...
+
+ IoReleaseCancelSpinLock(oldIrql);
+ }
+ }
+ else
+ Status = STATUS_BUFFER_TOO_SMALL;
+
+ // do what must be here in between --- end ---
+
+ COMPLETE_REQUEST;
+
+ KdPrint(("ioctl_read_vector(), Status = 0x%08x\n", Status));
+
+ return Status;
+}
+
+//------------------------------------------------------------------------
+// control or read the VIC68A on the VMEMM
+static NTSTATUS ioctl_access_VIC68A(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack)
+{
+ NTSTATUS Status = STATUS_SUCCESS;
+ ULONG irp_info = sizeof(PCIVME_VIC68A_ACTION);
+ PVOID pInputBuffer,pOutputBuffer;
+ ULONG InputLength, OutputLength;
+ PCIADA *pciada;
+ DEVICE_EXT *pDevExt;
+ PCIVME_VIC68A_ACTION *pVIC68A_action_in;
+ PCIVME_VIC68A_ACTION *pVIC68A_action_out;
+ FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext;
+
+ pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension);
+
+ SET_BUFFERS_METHOD_BUFFERED;
+
+ KdPrint(("ioctl_access_VIC68A(%d)\n", file_obj->uwAssociatedVMEMM));
+
+ // do what must be here in between -----------
+ pVIC68A_action_in = (PCIVME_VIC68A_ACTION *)pInputBuffer;
+ pVIC68A_action_out = (PCIVME_VIC68A_ACTION *)pOutputBuffer;
+
+ if ((pVIC68A_action_in->wRegisterAddress <= (USHORT)SRR) &&
+ ((pVIC68A_action_in->wRegisterAddress & 0x03) == 3) &&
+ (OutputLength >= sizeof(PCIVME_VIC68A_ACTION)))
+ {
+ PUCHAR pbAddress;
+ UCHAR bByte=0;
+ KIRQL oldIrql;
+
+ pciada = pDevExt->vmemm[file_obj->uwAssociatedVMEMM];
+
+ pVIC68A_action_out = pVIC68A_action_in; // copy it
+
+ pbAddress = (PUCHAR)((ULONG)(pciada->pvVirtIfr) + VICBASE + pVIC68A_action_in->wRegisterAddress);
+
+ // lock other users out
+ KeAcquireSpinLock(&pciada->AccessLock, &oldIrql);
+
+ switch(pVIC68A_action_in->wAccessMode)
+ {
+ case VIC68A_WRITE: WRITE_REGISTER_UCHAR(pbAddress, pVIC68A_action_in->bContent);
+ bByte = READ_REGISTER_UCHAR(pbAddress);
+ break;
+ case VIC68A_WRITE_ONLY:
+ WRITE_REGISTER_UCHAR(pbAddress, pVIC68A_action_in->bContent);
+ break;
+ case VIC68A_OR: bByte = READ_REGISTER_UCHAR(pbAddress);
+ bByte |= pVIC68A_action_in->bContent;
+ WRITE_REGISTER_UCHAR(pbAddress, bByte);
+ bByte = READ_REGISTER_UCHAR(pbAddress);
+ break;
+ case VIC68A_AND: bByte = READ_REGISTER_UCHAR(pbAddress);
+ bByte &= pVIC68A_action_in->bContent;
+ WRITE_REGISTER_UCHAR(pbAddress, bByte);
+ bByte = READ_REGISTER_UCHAR(pbAddress);
+ break;
+ default: Status = STATUS_ILLEGAL_INSTRUCTION;
+ case VIC68A_READ: bByte = READ_REGISTER_UCHAR(pbAddress);
+ break;
+ }
+ // free lock
+ KeReleaseSpinLock(&pciada->AccessLock, oldIrql);
+
+ pVIC68A_action_out->bContent = bByte;
+ }
+ else
+ Status = STATUS_ILLEGAL_INSTRUCTION;
+ // do what must be here in between --- end ---
+
+ COMPLETE_REQUEST;
+
+ KdPrint(("ioctl_access_VIC68A(), Status = 0x%08x\n", Status));
+
+ return Status;
+}
+
+
+//------------------------------------------------------------------------
+// if the interrupt is disabled for a blocking path, cancel the block
+static void ReleaseBlockingIrp(PDEVICE_OBJECT device_Obj, PCIADA *pciada, PFILE_OBJ pFile_obj)
+{
+ NTSTATUS Status = STATUS_CANCELLED;
+ PIRP Irp;
+ KIRQL oldIrqlCancel;
+ KIRQL oldIrqlList;
+
+ // beware off damage due to intercept with cancel of thread
+ IoAcquireCancelSpinLock(&oldIrqlCancel);
+ KeAcquireSpinLock(&pciada->IrqListLock, &oldIrqlList);
+
+ // get my associated packet
+ Irp = RemoveIRPfromQueue(device_Obj, pFile_obj);
+
+ if (Irp != (PIRP)NULL)
+ {
+ PCIVME_VECTOR_REQUEST *pVectorRequest = (PCIVME_VECTOR_REQUEST *)(Irp->AssociatedIrp.SystemBuffer);
+ PCIVME_VECTOR_RESPONSE *pVectorResponse = (PCIVME_VECTOR_RESPONSE *)pVectorRequest;
+ ULONG irp_info = sizeof(PCIVME_VECTOR_RESPONSE);
+
+ // pull the vectors off the fifo
+ pVectorResponse->wCount = 0;
+ pVectorResponse->wPendingCount = 0;
+ pVectorResponse->bOverflow = FALSE;
+ irp_info = sizeof(PCIVME_VECTOR_RESPONSE);
+
+ // release the cancel routine from this Irp
+ IoSetCancelRoutine(Irp, NULL);
+
+ COMPLETE_REQUEST;
+ }
+
+ // release the spin locks
+ KeReleaseSpinLock(&pciada->IrqListLock, oldIrqlList);
+ IoReleaseCancelSpinLock(oldIrqlCancel);
+}
+
+
+//------------------------------------------------------------------------
+// switch the filling of the interrupt vector queue on or off, check the queue
+static NTSTATUS ioctl_control_interrupts(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack)
+{
+ NTSTATUS Status = STATUS_SUCCESS;
+ ULONG irp_info = sizeof(PCIVME_IRQ_CONTROL);
+ PVOID pInputBuffer,pOutputBuffer;
+ ULONG InputLength, OutputLength;
+ PCIADA *pciada;
+ DEVICE_EXT *pDevExt;
+ PCIVME_IRQ_CONTROL *pIrqControlIn;
+ PCIVME_IRQ_CONTROL *pIrqControlOut;
+ PFILE_OBJ pFile_obj = (PFILE_OBJ)Irp->Tail.Overlay.OriginalFileObject->FsContext;
+
+ pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension);
+
+ SET_BUFFERS_METHOD_BUFFERED;
+
+ KdPrint(("ioctl_control_interrupts(%d)\n", pFile_obj->uwAssociatedVMEMM));
+
+ pIrqControlIn = (PCIVME_IRQ_CONTROL *)pInputBuffer;
+ pIrqControlOut = (PCIVME_IRQ_CONTROL *)pOutputBuffer;
+
+ pciada = pDevExt->vmemm[pFile_obj->uwAssociatedVMEMM];
+
+ // do what must be here in between -----------
+ if (pIrqControlIn->wEnable)
+ {
+ Status = insertQueueInList(pFile_obj, pciada);
+ if (!pciada->nInterruptHandlers)
+ {
+ KdPrint(("Interrupts enabled.\n"));
+
+ globalInterruptEnable(pciada);
+ pciada->nInterruptHandlers++;
+ }
+ }
+ else
+ {
+ if (pciada->nInterruptHandlers <= 1)
+ {
+ KdPrint(("Interrupts disabled.\n"));
+
+ globalInterruptDisable(pciada);
+ pciada->nInterruptHandlers = 0;
+ }
+
+ Status = removeQueueFromList(pFile_obj, pciada);
+ ReleaseBlockingIrp(device_Obj, pciada, pFile_obj);
+ }
+
+ // give back if the user grants space
+ if (OutputLength >= sizeof(PCIVME_IRQ_CONTROL))
+ {
+ pIrqControlOut->dwInterface = pFile_obj->uwAssociatedVMEMM;
+ pIrqControlOut->wEnable = pFile_obj->bQueueIrq;
+ }
+
+ // do what must be here in between --- end ---
+
+ COMPLETE_REQUEST;
+
+ KdPrint(("ioctl_control_interrupts(), Status = 0x%08x\n", Status));
+
+ return Status;
+}
+
+//------------------------------------------------------------------------
+// generate a uninterruptible read-modify-write cycle
+static NTSTATUS ioctl_TAS(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack)
+{
+ NTSTATUS Status = STATUS_SUCCESS;
+ ULONG irp_info = sizeof(PCIVME_TAS_STRUCT);
+ PVOID pInputBuffer,pOutputBuffer;
+ ULONG InputLength, OutputLength;
+ PCIADA *pciada;
+ DEVICE_EXT *pDevExt;
+ FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext;
+ KIRQL oldIrql;
+ UCHAR tempContent;
+ PBOOLEAN pbPrevBusError;
+ PVOID pvPartialAdr;
+
+ pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension);
+
+ SET_BUFFERS_METHOD_BUFFERED;
+
+ KdPrint(("ioctl_TAS(%d)\n", file_obj->uwAssociatedVMEMM));
+
+ // do what must be here in between -----------
+ if (OutputLength >= sizeof(PCIVME_TAS_STRUCT))
+ {
+ PCIVME_TAS_STRUCT *pTAS_struct_in;
+ PCIVME_TAS_STRUCT *pTAS_struct_out;
+ USHORT csr; // storage for old csr content
+ ULONG pageAddress; // intermediate for the page register content
+ UCHAR bAddressModifier;
+
+ pTAS_struct_in = (PCIVME_TAS_STRUCT *)pInputBuffer;
+ pTAS_struct_out = (PCIVME_TAS_STRUCT *)pOutputBuffer;
+
+ pTAS_struct_out = pTAS_struct_in;
+ pTAS_struct_out->dwInterface = file_obj->uwAssociatedVMEMM;
+ pciada = pDevExt->vmemm[file_obj->uwAssociatedVMEMM];
+
+ // take the file_obj associated modifier if greater than ...
+ bAddressModifier = (pTAS_struct_in->wModifier > 63) ?
+ file_obj->bAddressModifier : (UCHAR)pTAS_struct_in->wModifier;
+
+ // lock other users out
+ KeAcquireSpinLock(&pciada->AccessLock, &oldIrql);
+
+ // check for modifier (and set if needed)
+ if (pciada->bModifier != bAddressModifier)
+ {
+ WRITE_REGISTER_UCHAR(pciada->pbModifier, bAddressModifier);
+ pciada->bModifier = bAddressModifier;
+ }
+
+ // check for page address (and set if needed)
+ pageAddress = pTAS_struct_in->dwAddress & ~VME_ADR_MASK;
+ if (pageAddress != pciada->dwVMEPage)
+ {
+ WRITE_REGISTER_ULONG(pciada->pdwVMEAdr, pageAddress);
+ pciada->dwVMEPage = pageAddress;
+ }
+
+ // save VMEMM csr register and prepare for read modify write
+ csr = READ_REGISTER_USHORT(pciada->pwCSR);
+ WRITE_REGISTER_USHORT(pciada->pwCSR, (USHORT)(csr | FLAG_RMC));
+
+ // prepare the TAS
+ tempContent = pTAS_struct_in->bContent; // in and out point to same buffer
+ pvPartialAdr = (PVOID)((PUCHAR)pciada->pvVME + (pTAS_struct_in->dwAddress & VME_ADR_MASK));
+
+ // get prepared for bus errors
+ file_obj->bBusError = FALSE;
+ pbPrevBusError = ExchangePointer(&pciada->pbBusError, &file_obj->bBusError);
+
+ // do the TAS
+ readByte(&pTAS_struct_out->bContent , 1, pvPartialAdr);
+ writeByte(pvPartialAdr , 1, &tempContent);
+ readByte(&tempContent , 1, pvPartialAdr); // to overcome write on ..
+
+ // restore csr
+ WRITE_REGISTER_USHORT(pciada->pwCSR, csr);
+
+ // release the lock
+ KeReleaseSpinLock(&pciada->AccessLock, oldIrql);
+ ExchangePointer(&pciada->pbBusError, pbPrevBusError);
+ if (file_obj->bBusError) Status = STATUS_ACCESS_VIOLATION;
+ }
+ else
+ Status = STATUS_BUFFER_TOO_SMALL;
+
+ // do what must be here in between --- end ---
+
+ COMPLETE_REQUEST;
+
+ KdPrint(("ioctl_TAS(), Status = 0x%08x\n", Status));
+
+ return Status;
+}
+
+//------------------------------------------------------------------------
+// make a VME reset
+static NTSTATUS ioctl_reset(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack)
+{
+ NTSTATUS Status = STATUS_SUCCESS;
+ ULONG irp_info = sizeof(PCIVME_RESET_RESULT);
+ PVOID pInputBuffer,pOutputBuffer;
+ ULONG InputLength, OutputLength;
+ DEVICE_EXT *pDevExt;
+ FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext;
+
+ pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension);
+
+ SET_BUFFERS_METHOD_BUFFERED;
+
+ KdPrint(("ioctl_reset(%d)\n", file_obj->uwAssociatedVMEMM));
+
+ // do what must be here in between -----------
+ if (OutputLength >= sizeof(PCIVME_RESET_RESULT))
+ {
+ PCIVME_RESET_RESULT *pResetResult = (PCIVME_RESET_RESULT *)pOutputBuffer;
+ PCIVME_RESET_COMMAND *pResetCommand = (PCIVME_RESET_COMMAND *)pInputBuffer;
+ PCIADA *pciada = pDevExt->vmemm[file_obj->uwAssociatedVMEMM];
+ USHORT wIRQStatus;
+ USHORT wControl;
+ UCHAR *pbReset;
+ KIRQL oldIrql;
+
+ // set default result return size and contents
+ pResetResult->dwInterface = file_obj->uwAssociatedVMEMM;
+
+ if (pciada->dwLinkCount == 1)
+ {
+ // lock other users out
+ KeAcquireSpinLock(&pciada->AccessLock, &oldIrql);
+
+ // am I connected and switched on??
+ if ((READ_REGISTER_USHORT(pciada->pwCntrl) & 0x0980) == 0x0980)
+ {
+ // do command
+ switch (pResetCommand->wCommand)
+ {
+ case POLL_RESET_CMD:
+ break;
+ case VME_RESET_CMD:
+ WRITE_REGISTER_UCHAR(pciada->pbModifier, 0);
+ pbReset = (UCHAR *)((UCHAR *)pciada->pvVirtIfr +
+ (ULONG)VICBASE + (ULONG)SRR);
+ WRITE_REGISTER_UCHAR(pbReset, 0xf0); // make VME reset
+ break;
+ case LOCAL_RESET_CMD:
+ WRITE_REGISTER_UCHAR(pciada->pbModifier, 0);
+ WRITE_REGISTER_USHORT(pciada->pwIRQStat, LOCAL_RESET);
+ break;
+ case GLOBAL_RESET_CMD:
+ WRITE_REGISTER_UCHAR(pciada->pbModifier, 0);
+ WRITE_REGISTER_USHORT(pciada->pwIRQStat, GLOBAL_RESET);
+ break;
+
+ default: Status = STATUS_ILLEGAL_INSTRUCTION;
+ }
+
+ // save IRQ status of PCIADA and switch off PCIADA interrupts
+ wIRQStatus = READ_REGISTER_USHORT(pciada->pwIntCSR);
+ WRITE_REGISTER_USHORT(pciada->pwIntCSR, (USHORT)(wIRQStatus & ~0x0040));
+
+ // always poll reset status - access will sometimes generate PCIADA #2 interrupt
+ pResetResult->wResult = READ_REGISTER_UCHAR(pciada->pbModifier);
+
+ // reset any pending PCIADA interrupt #2
+ wControl = READ_REGISTER_USHORT(pciada->pwCntrl);
+ WRITE_REGISTER_USHORT(pciada->pwCntrl, (USHORT)(wControl & ~0x0100));
+ WRITE_REGISTER_USHORT(pciada->pwCntrl, wControl);
+
+ // restore IRQStatus
+ WRITE_REGISTER_USHORT(pciada->pwIntCSR, wIRQStatus);
+
+ }
+ else
+ Status = STATUS_ALREADY_DISCONNECTED;
+
+ // get other users free entry
+ KeReleaseSpinLock(&pciada->AccessLock, oldIrql);
+ }
+ else
+ Status = STATUS_UNSUCCESSFUL;
+ }
+ else
+ Status = STATUS_BUFFER_TOO_SMALL;
+ // do what must be here in between --- end ---
+
+ COMPLETE_REQUEST;
+
+ KdPrint(("ioctl_reset(), Status = 0x%08x\n", Status));
+
+ return Status;
+}
+
+//------------------------------------------------------------------------
+// set parameter for this path for future access to VME
+static NTSTATUS ioctl_access_para(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack)
+{
+ NTSTATUS Status = STATUS_SUCCESS;
+ ULONG irp_info = 0;
+ PVOID pInputBuffer,pOutputBuffer;
+ ULONG InputLength, OutputLength;
+ PCIVME_ACCESS_COMMAND *pAccessPara;
+ FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext;
+ DEVICE_EXT *pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension);
+ PCIADA *pciada = pDevExt->vmemm[file_obj->uwAssociatedVMEMM];
+
+ SET_BUFFERS_METHOD_BUFFERED;
+
+ KdPrint(("ioctl_access_para(%d)\n", file_obj->uwAssociatedVMEMM));
+
+ pAccessPara = (PCIVME_ACCESS_COMMAND *)pInputBuffer;
+
+ // do here in between what has to be done -----------------
+ file_obj->bAddressModifier = pAccessPara->bAddressModifier & MODIFIER_MASK;
+ file_obj->bAccessType = pAccessPara->bAccessType;
+ file_obj->bIncrement = pAccessPara->bIncrement;
+ file_obj->dwAddressMask = pAccessPara->bAccessType - 1;
+
+ // honor backward compatibility
+ if (file_obj->bAddressModifier & 0x30)
+ file_obj->dwAccessBase = 0;
+ else
+ file_obj->dwAccessBase = pAccessPara->dwAccessBase;
+
+ // access_type increment
+ // 1 0,1,2,3,4
+ // 2 0,2,4
+ // 4 0,4
+
+ if (pAccessPara->bIncrement % pAccessPara->bAccessType)
+ Status = STATUS_DATATYPE_MISALIGNMENT;
+
+ switch (pAccessPara->bAccessType)
+ {
+ case BYTE_ACCESS: file_obj->fRead = readByte;
+ file_obj->fWrite = writeByte;
+ break;
+ case WORD_ACCESS: file_obj->fRead = readWord;
+ file_obj->fWrite = writeWord;
+ break;
+ case LONG_ACCESS: if (pciada->bWordMode)
+ {
+ file_obj->fRead = readWord;
+ file_obj->fWrite = writeWord;
+ }
+ else
+ {
+ file_obj->fRead = readLong;
+ file_obj->fWrite = writeLong;
+ }
+ break;
+ default: Status = STATUS_UNSUCCESSFUL; break;
+ }
+ // do here in between what has to be done end -------------
+
+ COMPLETE_REQUEST;
+
+ KdPrint(("ioctl_access_para(), Status = 0x%08x\n", Status));
+
+ return Status;
+}
+
+//------------------------------------------------------------------------
+// the ultimate jumptable for ioctl
+//
+NTSTATUS (*ioctl[])(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack) =
+{
+ ioctl_init_hardware, // 0
+ ioctl_deinit_hardware, // 1
+ ioctl_dummy, // 2
+ ioctl_dummy, // 3
+ ioctl_get_static_status, // 4
+ ioctl_get_dynamic_status, // 5
+ ioctl_read_vector, // 6
+ ioctl_access_VIC68A, // 7
+ ioctl_dummy, // 8
+ ioctl_control_interrupts, // 9
+ ioctl_TAS, // 10
+ ioctl_dummy, // 11
+ ioctl_reset, // 12
+ ioctl_access_para // 13
+};
+
Index: wiener_pcivme/pcivme/SOURCE/pcivme_v.h
===================================================================
--- wiener_pcivme/pcivme/SOURCE/pcivme_v.h (nonexistent)
+++ wiener_pcivme/pcivme/SOURCE/pcivme_v.h (revision 178)
@@ -0,0 +1,48 @@
+#ifndef __PCIVME_V_H__
+#define __PCIVME_V_H__
+//-------------------------------------------------------------------------
+// WINNT driver for PCIVME interface from ARW Elektronik, Germany ---------
+// header file belonging to pcivme_v.c
+//
+// (c) 1999-2004 ARW Elektronik
+//
+// this source code is published under GPL (Open Source). You can use, redistrubute and
+// modify it unless this header is not modified or deleted. No warranty is given that
+// this software will work like expected.
+// This product is not authorized for use as critical component in life support systems
+// wihout the express written approval of ARW Elektronik Germany.
+//
+// Please announce changes and hints to ARW Elektronik
+//
+// $Log: pcivme_v.h,v $
+// Revision 1.3 2004/07/24 07:07:26 klaus
+// Update copyright to 2004
+//
+// Revision 1.2 2003/11/15 19:12:51 klaus
+// Update copyright to 2003
+//
+// Revision 1.1.1.1 2003/11/14 23:16:33 klaus
+// First put into repository
+//
+// Revision 1.3 2002/10/27 16:17:48 klaus
+// Typing bug fixed caused at log addition
+//
+// Revision 1.2 2002/10/27 16:11:03 klaus
+// Added CVS log into header
+//
+// what who when
+// started AR 02.07.99
+// changed resource allocation caused by WIN2000 AR 08.06.2002
+//
+
+//-------------------------------------------------------------------------
+// DEFINES
+//
+
+//-------------------------------------------------------------------------
+// PROTOTYPES
+//
+NTSTATUS PCIVMEScanVMEMM(PDEVICE_OBJECT deviceObj);
+NTSTATUS PCIVMEDeInitPCIADAs(PDEVICE_OBJECT deviceObj);
+
+#endif // __PCIVME_V_H__
Index: wiener_pcivme/pcivme/SOURCE/pcivme_io.h
===================================================================
--- wiener_pcivme/pcivme/SOURCE/pcivme_io.h (nonexistent)
+++ wiener_pcivme/pcivme/SOURCE/pcivme_io.h (revision 178)
@@ -0,0 +1,53 @@
+#ifndef __PCIVME_IO_H__
+#define __PCIVME_IO_H__
+//-------------------------------------------------------------------------
+// WINNT driver for PCIVME interface from ARW Elektronik, Germany ---------
+// the ioctl functions header file
+//
+// (c) 1999-2004 ARW Elektronik
+//
+// this source code is published under GPL (Open Source). You can use, redistrubute and
+// modify it unless this header is not modified or deleted. No warranty is given that
+// this software will work like expected.
+// This product is not authorized for use as critical component in life support systems
+// wihout the express written approval of ARW Elektronik Germany.
+//
+// Please announce changes and hints to ARW Elektronik
+// ntddk.h must included first!
+//
+// $Log: pcivme_io.h,v $
+// Revision 1.3 2004/07/24 07:07:26 klaus
+// Update copyright to 2004
+//
+// Revision 1.2 2003/11/15 19:12:51 klaus
+// Update copyright to 2003
+//
+// Revision 1.1.1.1 2003/11/14 23:16:33 klaus
+// First put into repository
+//
+// Revision 1.3 2002/10/27 16:17:48 klaus
+// Typing bug fixed caused at log addition
+//
+// Revision 1.2 2002/10/27 16:11:02 klaus
+// Added CVS log into header
+//
+// what who when
+// started AR 03.07.99
+// changed resource allocation caused by WIN2000 AR 08.06.2002
+//
+
+
+//------------------------------------------------------------------------
+// FUNCTIONS + EXTERNALS
+//
+NTSTATUS (*ioctl[])(PDEVICE_OBJECT device_Obj, PIRP irp, PIO_STACK_LOCATION IrpStack);
+void fMyDefferedRoutine(PKDPC Dpc, PVOID pvDevice_object, PVOID pvPciada, PVOID Nothing);
+void CancelRequest(PDEVICE_OBJECT device_Obj, PIRP Irp);
+NTSTATUS removeQueueFromList(PFILE_OBJ pFile_obj, PCIADA *pciada);
+
+void InsertIRPtoQueue(PDEVICE_OBJECT device_Obj, PIRP Irp);
+PIRP RemoveIRPfromQueue(PDEVICE_OBJECT device_Obj, FILE_OBJ *pFile_obj);
+PIRP RemoveIRPfromQueueByIrp(PDEVICE_OBJECT device_Obj, PIRP pIrpIn);
+
+
+#endif // __PCIVME_IO_H__
Index: wiener_pcivme/pcivme/SOURCE/pcivme.plg
===================================================================
--- wiener_pcivme/pcivme/SOURCE/pcivme.plg (nonexistent)
+++ wiener_pcivme/pcivme/SOURCE/pcivme.plg (revision 178)
@@ -0,0 +1,52 @@
+<html>
+<body>
+<pre>
+<h1>Erstellungsprotokoll</h1>
+<h3>
+--------------------Konfiguration: pcivme - Win32 Release--------------------
+</h3>
+<h3>Befehlszeilen</h3>
+Erstellen der temporären Datei "E:\DOKUME~1\klaus\LOKALE~1\Temp\RSP73.tmp" mit Inhalten
+[
+/nologo /Gz /ML /W3 /Gi /O2 /I "D:\DDK\inc" /I "." /D "NDEBUG" /D DBG=0 /D "_X86_" /D _WIN32_WINNT=0x500 /FR"Release/" /Fp"Release/pcivme.pch" /YX /Fo"Release/" /Fd"Release/" /FD /Gs -GF /c
+"E:\Work\projects\pcivme\pcivme_drv.c"
+"E:\Work\projects\pcivme\pcivme_fifo.c"
+"E:\Work\projects\pcivme\pcivme_i.c"
+"E:\Work\projects\pcivme\pcivme_io.c"
+"E:\Work\projects\pcivme\pcivme_v.c"
+]
+Creating command line "cl.exe @E:\DOKUME~1\klaus\LOKALE~1\Temp\RSP73.tmp"
+Erstellen der temporären Datei "E:\DOKUME~1\klaus\LOKALE~1\Temp\RSP74.tmp" mit Inhalten
+[
+int64.lib ntoskrnl.lib hal.lib /nologo /base:"0x10000" /entry:"DriverEntry" /incremental:no /pdb:"Release/pcivme.pdb" /machine:I386 /nodefaultlib /out:"Release\pcivme.SYS" /libpath:"D:\DDK\lib\i386\free" -driver -subsystem:NATIVE,4.00
+.\Release\pcivme_drv.obj
+.\Release\pcivme_fifo.obj
+.\Release\pcivme_i.obj
+.\Release\pcivme_io.obj
+.\Release\pcivme_v.obj
+]
+Erstellen der Befehlzeile "link.exe @E:\DOKUME~1\klaus\LOKALE~1\Temp\RSP74.tmp"
+Erstellen der temporären Datei "E:\DOKUME~1\klaus\LOKALE~1\Temp\RSP75.bat" mit Inhalten
+[
+@echo off
+copy .\Release\pcivme.SYS E:\WINNT\System32\Drivers\*.*
+]
+Erstellen der Befehlzeile "E:\DOKUME~1\klaus\LOKALE~1\Temp\RSP75.bat"
+Kompilierung läuft...
+pcivme_drv.c
+pcivme_fifo.c
+pcivme_i.c
+pcivme_io.c
+pcivme_v.c
+Linker-Vorgang läuft...
+<h3>Ausgabefenster</h3>
+Copying Driver to System32\Drivers
+ 1 Datei(en) kopiert.
+
+
+
+<h3>Ergebnisse</h3>
+pcivme.SYS - 0 Fehler, 0 Warnung(en)
+</pre>
+</body>
+</html>
Index: wiener_pcivme/pcivme/SOURCE/Vic.h
===================================================================
--- wiener_pcivme/pcivme/SOURCE/Vic.h (nonexistent)
+++ wiener_pcivme/pcivme/SOURCE/Vic.h (revision 178)
@@ -0,0 +1,116 @@
+#ifndef __VIC_H__
+#define __VIC_H__
+
+//------------------------------------------------------------------------------------------
+// vic.h - some constants about the VIC68A chip from cypress semiconductor
+//
+// (c) 1999-2004 ARW Elektronik
+//
+// this source code is published under GPL (Open Source). You can use, redistrubute and
+// modify it unless this header is not modified or deleted. No warranty is given that
+// this software will work like expected.
+// This product is not authorized for use as critical component in life support systems
+// wihout the express written approval of ARW Elektronik Germany.
+//
+// Please announce changes and hints to ARW Elektronik
+//
+//
+// $Log: Vic.h,v $
+// Revision 1.3 2004/07/24 07:07:26 klaus
+// Update copyright to 2004
+//
+// Revision 1.2 2003/11/15 19:12:51 klaus
+// Update copyright to 2003
+//
+// Revision 1.1.1.1 2003/11/14 23:16:33 klaus
+// First put into repository
+//
+// Revision 1.3 2002/10/27 16:17:48 klaus
+// Typing bug fixed caused at log addition
+//
+// Revision 1.2 2002/10/27 16:11:03 klaus
+// Added CVS log into header
+//
+// what who when
+// finished first release to use with the PCIVME interface of ARW AR 24.11.1997
+// SRR corrected from SSR AR 18.04.1999
+//
+
+/* all address offsets relative to vic base */
+
+#define VICR1 (WORD)0x07 /* VMEbus Interrupt Control Register #.. */
+#define VICR2 (WORD)0x0b
+#define VICR3 (WORD)0x0f
+#define VICR4 (WORD)0x13
+#define VICR5 (WORD)0x17
+#define VICR6 (WORD)0x1b
+#define VICR7 (WORD)0x1f
+
+#define LICR1 (WORD)0x27 /* Local interrupt control register .. */
+#define LICR2 (WORD)0x2b
+#define LICR3 (WORD)0x2f
+#define LICR4 (WORD)0x33
+#define LICR5 (WORD)0x37
+#define LICR6 (WORD)0x3b
+#define LICR7 (WORD)0x3f
+#define LIVBR (WORD)0x57 /* Local interrupt vector base register */
+
+#define ICGSICR (WORD)0x43 /* ICGS interrupt control register */
+#define ICGSVBR (WORD)0x4f /* ICGS vector base register */
+
+#define ICMSICR (WORD)0x47 /* ICMS interrupt control register */
+#define ICMSVBR (WORD)0x53 /* ICMS vector base register */
+
+#define EGICR (WORD)0x4b /* Error group interrupt control register */
+#define EGIVBR (WORD)0x5b /* Error group interrupt vector base rg */
+
+#define ICSR (WORD)0x5f /* Interprozessor communication switch rg */
+#define ICR0 (WORD)0x63
+#define ICR1 (WORD)0x67
+#define ICR2 (WORD)0x6b
+#define ICR3 (WORD)0x6f
+#define ICR4 (WORD)0x73
+#define ICR5 (WORD)0x77
+#define ICR6 (WORD)0x7b
+#define ICR7 (WORD)0x7f
+
+#define VIICR (WORD)0x03 /* VMEbus Interrupter Interrupt Control */
+#define VIRSR (WORD)0x83 /* VMEbus interrupt request status reg */
+#define VIVR1 (WORD)0x87 /* VMEbus interrupt vector register .. */
+#define VIVR2 (WORD)0x8b
+#define VIVR3 (WORD)0x8f
+#define VIVR4 (WORD)0x93
+#define VIVR5 (WORD)0x97
+#define VIVR6 (WORD)0x9b
+#define VIVR7 (WORD)0x9f
+
+#define TTR (WORD)0xa3 /* transfer timeout register */
+#define LTR (WORD)0xa7 /* local timing register */
+#define ICR (WORD)0xaf /* interface configuration register */
+
+#define ARCR (WORD)0xb3 /* arbiter/requester configuration register*/
+#define AMSR (WORD)0xb7 /* address modifier source register */
+#define BESR (WORD)0xbb /* bus error source register */
+
+#define DSICR (WORD)0x23 /* DMA status interrupt control register */
+#define DSR (WORD)0xbf /* DMA status register */
+
+#define SSCR00 (WORD)0xc3 /* slave select 0 control register 0 */
+#define SSCR01 (WORD)0xc7 /* slave select 0 control register 1 */
+#define SSCR10 (WORD)0xcb /* slave select 1 control register 0 */
+#define SSCR11 (WORD)0xcf /* slave select 1 control register 1 */
+
+#define RCR (WORD)0xd3 /* release control register */
+
+#define BTDR (WORD)0xab /* block transfer definition register */
+#define BTCR (WORD)0xd7 /* block transfer control register */
+#define BTLR0 (WORD)0xdb /* block transfer length register 0 */
+#define BTLR1 (WORD)0xdf /* block transfer length register 1 */
+
+#define SRR (WORD)0xe3 /* system reset register */
+
+#endif
+
+//-------------------------------------------------------------------------------------------
+//-------------------------------------------------------------------------------------------
+//-------------------------------------------------------------------------------------------
Index: wiener_pcivme/pcivme/SOURCE/pcivme_fifo.c
===================================================================
--- wiener_pcivme/pcivme/SOURCE/pcivme_fifo.c (nonexistent)
+++ wiener_pcivme/pcivme/SOURCE/pcivme_fifo.c (revision 178)
@@ -0,0 +1,188 @@
+//-------------------------------------------------------------------------
+// WINNT driver for PCIVME interface from ARW Elektronik, Germany ---------
+// functions for a fast fifo (first in first out) implementation
+//
+// (c) 1999-2004 ARW Elektronik
+//
+// this source code is published under GPL (Open Source). You can use, redistrubute and
+// modify it unless this header is not modified or deleted. No warranty is given that
+// this software will work like expected.
+// This product is not authorized for use as critical component in life support systems
+// wihout the express written approval of ARW Elektronik Germany.
+//
+// Please announce changes and hints to ARW Elektronik
+//
+// $Log: pcivme_fifo.c,v $
+// Revision 1.3 2004/07/24 07:07:26 klaus
+// Update copyright to 2004
+//
+// Revision 1.2 2003/11/15 19:12:50 klaus
+// Update copyright to 2003
+//
+// Revision 1.1.1.1 2003/11/14 23:16:33 klaus
+// First put into repository
+//
+// Revision 1.3 2002/10/27 16:17:48 klaus
+// Typing bug fixed caused at log addition
+//
+// Revision 1.2 2002/10/27 16:11:02 klaus
+// Added CVS log into header
+//
+// what who when
+// started AR 06.10.1999
+// first release 1.0 AR 17.10.1999
+//
+
+//-------------------------------------------------------------------------
+// INCLUDES
+//
+#include <ntddk.h>
+#include <pcivme_fifo.h>
+
+//------------------------------------------------------------------------
+// DEFINES
+//
+
+//------------------------------------------------------------------------
+// TYPEDEFS
+//
+typedef struct
+{
+ USHORT wLevel; // actual Number of Elements
+ UCHAR *pbBegin; // points to begin of the buffer
+ UCHAR *pbEnd; // points to the (end of the buffer + 1)
+ UCHAR *pbWrite; // next write here
+ UCHAR *pbRead; // next read (if any) here
+ KSPIN_LOCK Lock; // to guard access to the fifo
+ BOOLEAN bOverflow; // indicates a overflow to that FIFO
+} FIFO_MANAGER;
+
+
+//------------------------------------------------------------------------
+// FUNCTIONS
+//
+
+// the global functions to manage the fifo
+// first: init the fifo and allocate nonpaged memory
+NTSTATUS InitializeFIFO(USHORT CountOfElements, PVOID *pHandle)
+{
+ ULONG allocSize;
+ register FIFO_MANAGER *fifo_manager;
+
+ *pHandle = NULL;
+ allocSize = sizeof(FIFO_MANAGER) + sizeof(UCHAR) * CountOfElements + 16; // cause alignment
+
+ *pHandle = ExAllocatePool(NonPagedPool, allocSize);
+ if(*pHandle == NULL) return STATUS_NO_MEMORY;
+
+ RtlZeroMemory(*pHandle, allocSize);
+
+ fifo_manager = (FIFO_MANAGER *)*pHandle;
+
+ // init the fifo_manager
+ KeInitializeSpinLock(&fifo_manager->Lock);
+ fifo_manager->wLevel = 0;
+ fifo_manager->bOverflow = FALSE;
+ fifo_manager->pbBegin = (UCHAR *)(((ULONG)(fifo_manager + 1) + 8) & ~7); //align
+ fifo_manager->pbEnd = (UCHAR *)((ULONG)fifo_manager->pbBegin + sizeof(UCHAR) * CountOfElements);
+ fifo_manager->pbWrite =
+ fifo_manager->pbRead = fifo_manager->pbBegin;
+
+ // KdPrint(("fifo_manager: 0x%08x, begin: 0x%08x, end: 0x%08x\n",
+ // fifo_manager, fifo_manager->pbBegin, fifo_manager->pbEnd));
+
+ return STATUS_SUCCESS;
+}
+
+// second: push elements to the FIFO
+int PushElement(PVOID Handle, UCHAR bElement)
+{
+ register FIFO_MANAGER *fifo_manager = (FIFO_MANAGER *)Handle;
+ KIRQL oldIrql;
+
+ KeAcquireSpinLock(&fifo_manager->Lock, &oldIrql);
+ if ((fifo_manager->wLevel) && (fifo_manager->pbWrite == fifo_manager->pbRead))
+ {
+ KeReleaseSpinLock(&fifo_manager->Lock, oldIrql);
+ return fifo_manager->wLevel;
+ }
+
+ *(fifo_manager->pbWrite)++ = bElement;
+
+ // wrap around
+ if (fifo_manager->pbWrite >= fifo_manager->pbEnd)
+ fifo_manager->pbWrite = fifo_manager->pbBegin;
+
+ // check for overflow - indicate - and reset pointer to same before
+ if (fifo_manager->pbWrite == fifo_manager->pbRead)
+ {
+ fifo_manager->bOverflow = TRUE;
+ fifo_manager->pbWrite--;
+ if (fifo_manager->pbWrite < fifo_manager->pbBegin)
+ fifo_manager->pbWrite = fifo_manager->pbEnd - 1;
+ }
+ else
+ (fifo_manager->wLevel)++;
+
+ KeReleaseSpinLock(&fifo_manager->Lock, oldIrql);
+
+ return fifo_manager->wLevel;
+}
+
+// third: pull elements from the FIFO
+int PullElement(PVOID Handle, UCHAR *pbElement)
+{
+ register FIFO_MANAGER *fifo_manager = (FIFO_MANAGER *)Handle;
+ KIRQL oldIrql;
+
+ if (!(fifo_manager->wLevel)) return 0;
+
+ KeAcquireSpinLock(&fifo_manager->Lock, &oldIrql);
+
+ if (fifo_manager->wLevel)
+ {
+ *pbElement = *(fifo_manager->pbRead)++;
+ (fifo_manager->wLevel)--;
+ }
+ else
+ *pbElement = 0; // the caller tries to get more than available?
+
+ // wrap around
+ if (fifo_manager->pbRead >= fifo_manager->pbEnd)
+ fifo_manager->pbRead = fifo_manager->pbBegin;
+
+ KeReleaseSpinLock(&fifo_manager->Lock, oldIrql);
+
+ return fifo_manager->wLevel;
+}
+
+// test how many elements are in the FIFO
+int NumberOfElements(PVOID Handle)
+{
+ register FIFO_MANAGER *fifo_manager = (FIFO_MANAGER *)Handle;
+
+ return fifo_manager->wLevel;
+}
+
+// check and clear the overflow flag
+BOOLEAN CheckAndClearOverflow(PVOID Handle)
+{
+ register FIFO_MANAGER *fifo_manager = (FIFO_MANAGER *)Handle;
+ KIRQL oldIrql;
+ BOOLEAN helper;
+
+ KeAcquireSpinLock(&fifo_manager->Lock, &oldIrql);
+ helper = fifo_manager->bOverflow;
+ fifo_manager->bOverflow = FALSE;
+ KeReleaseSpinLock(&fifo_manager->Lock, oldIrql);
+
+ return helper;
+}
+
+// close the FIFO and free the allocated memory
+void DestroyFIFO(PVOID Handle)
+{
+ if (Handle != NULL) ExFreePool(Handle);
+}
+
+
Index: wiener_pcivme/pcivme/SOURCE/pcivme.h
===================================================================
--- wiener_pcivme/pcivme/SOURCE/pcivme.h (nonexistent)
+++ wiener_pcivme/pcivme/SOURCE/pcivme.h (revision 178)
@@ -0,0 +1,289 @@
+#ifndef __PCIVME_H__
+#define __PCIVME_H__
+//-------------------------------------------------------------------------
+// WINNT driver for PCIVME interface from ARW Elektronik, Germany ---------
+// IO definitions and common data structures between application and driver
+//
+// (c) 1999-2004 ARW Elektronik
+//
+// this source code is published under GPL (Open Source). You can use, redistrubute and
+// modify it unless this header is not modified or deleted. No warranty is given that
+// this software will work like expected.
+// This product is not authorized for use as critical component in life support systems
+// wihout the express written approval of ARW Elektronik Germany.
+//
+// Please announce changes and hints to ARW Elektronik
+//
+// $Log: pcivme.h,v $
+// Revision 1.3 2004/07/24 07:07:26 klaus
+// Update copyright to 2004
+//
+// Revision 1.2 2003/11/15 19:12:50 klaus
+// Update copyright to 2003
+//
+// Revision 1.1.1.1 2003/11/14 23:16:33 klaus
+// First put into repository
+//
+// Revision 1.4 2002/10/27 17:02:30 klaus
+// File addressing bug > 2 Gbtye circumvent
+//
+// Revision 1.3 2002/10/27 16:17:48 klaus
+// Typing bug fixed caused at log addition
+//
+// Revision 1.2 2002/10/27 16:11:02 klaus
+// Added CVS log into header
+//
+// what who when
+// started AR 15.06.99
+//
+
+//-------------------------------------------------------------------------
+// INCLUDES
+//
+// #include <devioctl.h> must be declared before inclusion when used for driver
+// #include <winioctl.h> must be declared before inclusion when used for applications
+
+//-------------------------------------------------------------------------
+// DEFINES
+//
+
+// to get a compatible view to WIN95 driver
+#define USER_CONTROL_CODE(x) (0x800 + x)
+
+// initialise a dedicated VMEMM hardware
+#define PCIVME_INIT_HARDWARE CTL_CODE(\
+ FILE_DEVICE_UNKNOWN,\
+ USER_CONTROL_CODE(0),\
+ METHOD_BUFFERED,\
+ FILE_ANY_ACCESS)
+
+// de-initialise a dedicated VMEMM hardware
+#define PCIVME_DEINIT_HARDWARE CTL_CODE(\
+ FILE_DEVICE_UNKNOWN,\
+ USER_CONTROL_CODE(1),\
+ METHOD_BUFFERED,\
+ FILE_ANY_ACCESS)
+
+// get a static status info from a dedicted VMEMM+PCIADA hardware
+#define PCIVME_GET_STATIC_STATUS CTL_CODE(\
+ FILE_DEVICE_UNKNOWN,\
+ USER_CONTROL_CODE(4),\
+ METHOD_BUFFERED,\
+ FILE_ANY_ACCESS)
+
+// get dynamically changing status from PCIADA+VMEMM
+#define PCIVME_GET_DYNAMIC_STATUS CTL_CODE(\
+ FILE_DEVICE_UNKNOWN,\
+ USER_CONTROL_CODE(5),\
+ METHOD_BUFFERED,\
+ FILE_ANY_ACCESS)
+
+// read a vector in case of interrupt from VMEMM or PCIADA
+#define PCIVME_READ_VECTOR CTL_CODE(\
+ FILE_DEVICE_UNKNOWN,\
+ USER_CONTROL_CODE(6),\
+ METHOD_BUFFERED,\
+ FILE_ANY_ACCESS)
+
+// access VIC68A registers direct
+#define PCIVME_ACCESS_VIC68A CTL_CODE(\
+ FILE_DEVICE_UNKNOWN,\
+ USER_CONTROL_CODE(7),\
+ METHOD_BUFFERED,\
+ FILE_ANY_ACCESS)
+
+// enable or disable interrupts from user space
+#define PCIVME_CONTROL_INTERRUPTS CTL_CODE(\
+ FILE_DEVICE_UNKNOWN,\
+ USER_CONTROL_CODE(9),\
+ METHOD_BUFFERED,\
+ FILE_ANY_ACCESS)
+
+// generate a (undivisible) test-and-set instruction
+#define PCIVME_TAS CTL_CODE(\
+ FILE_DEVICE_UNKNOWN,\
+ USER_CONTROL_CODE(10),\
+ METHOD_BUFFERED,\
+ FILE_ANY_ACCESS)
+
+// generate a reset on VME BUS for a dedicated VMEMM interface
+#define PCIVME_RESET CTL_CODE(\
+ FILE_DEVICE_UNKNOWN,\
+ USER_CONTROL_CODE(12),\
+ METHOD_BUFFERED,\
+ FILE_ANY_ACCESS)
+
+// set the access parameter for this file (vmemm)
+#define PCIVME_SET_ACCESS_PARA CTL_CODE(\
+ FILE_DEVICE_UNKNOWN,\
+ USER_CONTROL_CODE(13),\
+ METHOD_BUFFERED,\
+ FILE_ANY_ACCESS)
+
+// my last usefull control code - change each time you add a ctl_code
+#define PCIVME_LAST_CTL_CODE PCIVME_SET_ACCESS_PARA
+
+// to make standard entries for not compatible WIN95 call codes
+#define PCIVME_INCOMPATIBLE CTL_CODE(\
+ FILE_DEVICE_UNKNOWN,\
+ USER_CONTROL_CODE(255),\
+ METHOD_BUFFERED,\
+ FILE_ANY_ACCESS)
+
+// to get a compatible view to WIN95 driver
+#define VPCIVMED_INIT_HARDWARE PCIVME_INIT_HARDWARE
+#define VPCIVMED_DEINIT_HARDWARE PCIVME_DEINIT_HARDWARE
+#define VPCIVMED_ATTACH_WINDOW PCIVME_INCOMPATIBLE // no compatibility!
+#define VPCIVMED_DETACH_WINDOW PCIVME_INCOMPATIBLE // no compatibility!
+#define VPCIVMED_GET_STATIC_STATUS PCIVME_GET_STATIC_STATUS
+#define VPCIVMED_GET_DYNAMIC_STATUS PCIVME_GET_DYNAMIC_STATUS
+#define VPCIVMED_READ_VECTOR PCIVME_READ_VECTOR
+#define VPCIVMED_ACCESS_VIC68A PCIVME_ACCESS_VIC68A
+#define VPCIVMED_CONTROL_INTERRUPTS PCIVME_CONTROL_INTERRUPTS
+#define VPCIVMED_TAS PCIVME_TAS
+#define VPCIVMED_GET_PCIADA_STATUS PCIVME_GET_PCIADA_STATUS
+#define VPCIVMED_RESET PCIVME_RESET
+
+// switches for PCIVME_(DE)INIT_HARDWARE ------------------------
+#define LCR (UCHAR)0 // destination is LCR register
+#define IFR (UCHAR)1 // destination is VME-Interface register
+#define VIC (UCHAR)2 // destination is VIC68A register
+#define STOP (UCHAR)255 // this command stops the init machine
+
+#define BYTE_ACCESS (UCHAR)1 // write byte wise
+#define WORD_ACCESS (UCHAR)2 // word
+#define LONG_ACCESS (UCHAR)4 // long
+
+// switches for PCIVME_ACCESS_VIC68A --------------------------
+#define VIC68A_READ 0 // read only access
+#define VIC68A_WRITE 1 // write and read back access
+#define VIC68A_OR 2 // read, bitwise 'or' content and read back access
+#define VIC68A_AND 3 // read, bitwise 'and' content and read back access
+#define VIC68A_WRITE_ONLY 4 // do not read back after write
+
+// switches for the PCIVME_RESET ------------------------------
+#define VME_RESET_CMD 0 // raise a VME reset only
+#define LOCAL_RESET_CMD 1 // raise a local reset only
+#define GLOBAL_RESET_CMD 2 // raise a global reset
+#define POLL_RESET_CMD 3 // ask if reset is finished
+
+#define BOGUSADDRESS 0xFFFFFFFF // compatibilty to WIN95
+
+#ifndef PHYSICAL_ADDRESS
+#define PHYSICAL_ADDRESS LARGE_INTEGER
+#endif
+
+//-------------------------------------------------------------------------
+// TYPEDEFS
+//
+typedef struct // one command element to initialize interface or deinitialize
+{
+ UCHAR range; // 0 = lcr, 1 = vme-interface, -1 = stop, default = vme-if
+ UCHAR type; // 1 = byte access, 2 = word access, 4 = dword access, default byte
+ USHORT offset; // offset into interface address range for initialisation
+ ULONG value; // value to initialize
+} PCIVME_INIT_ELEMENT;
+
+typedef struct
+{
+ ULONG dwInterface; // here dummy 'cause of compatibility to WIN95
+ PCIVME_INIT_ELEMENT sVie[8]; // at least one zero element must be the last
+} PCIVME_INIT_COMMAND;
+
+typedef struct
+{
+ ULONG dwInterface; // here dummy 'cause of compatibility to WIN95
+ UCHAR bAddressModifier; // set the current modifier
+ UCHAR bAccessType; // set the current access type (1,2,4)
+ UCHAR bIncrement; // set the current byte increment count
+ ULONG dwAccessBase; // base address of seek operation (extended modifiers only, else must = 0)
+} PCIVME_ACCESS_COMMAND;
+
+
+typedef struct
+{
+ ULONG dwInterface; // here dummy 'cause of compatibility to WIN95
+ USHORT wRegisterAddress; // address offset of vic68a register
+ USHORT wAccessMode; // read, write, or, and
+ UCHAR bContent; // content to write, and, or
+} PCIVME_VIC68A_ACTION;
+
+// includes static information about driver parameters ------
+typedef struct
+{
+ ULONG dwInterface; // here dummy 'cause of compatibility to WIN95
+ ULONG dwLinkCount; // how often this interface is requested
+
+ USHORT wNumMemWindows; // aus der aktuellen konfiguration
+ USHORT wNumIOPorts;
+ USHORT wNumIRQs;
+ USHORT wNumDMAs;
+
+ USHORT wModuleType; // von der angeschlossenen hardware gelesen
+ USHORT wFPGAVersion;
+ USHORT wModuleNumber;
+ USHORT wWordMode;
+
+ USHORT wSysControl; // if the associated VMEMM has slot 1 function
+ USHORT wConnected; // is the VMEMM connected (obsolete sometimes)
+
+ PHYSICAL_ADDRESS pvLcr; // physikalische adresse des lcr
+ PHYSICAL_ADDRESS pvIfr; // physikalische adresse des interfaces ohne vme
+
+ ULONG dwDriverVersion; // highWord.lowWord
+ ULONG dwDriverVariant; // show customized variants here
+} PCIVME_STATIC_STATUS;
+
+typedef struct
+{
+ ULONG dwInterface; // here dummy 'cause of compatibility to WIN95
+
+ USHORT wVMEMM_connected; // status: VMEMM is connected and powered
+ USHORT wVMEMM_enable; // status: VMEMM access is enabled
+ USHORT wPCIADAIrq; // status: PCIADA timeout IRQ pending
+ USHORT wVMEMMIrq; // status: VMEMM IRQ pending
+} PCIVME_DYNAMIC_STATUS;
+
+typedef struct
+{
+ ULONG dwInterface; // here dummy 'cause of compatibility to WIN95
+ ULONG dwAddress; // tas to address
+ USHORT wModifier; // VME address modifier for this window
+ UCHAR bContent; // byte content to store and get back
+} PCIVME_TAS_STRUCT;
+
+typedef struct
+{
+ ULONG dwInterface; // here dummy 'cause of compatibility to WIN95
+ USHORT wCommand; // the appropriate reset command
+} PCIVME_RESET_COMMAND;
+
+typedef struct
+{
+ ULONG dwInterface; // here dummy 'cause of compatibility to WIN95
+ USHORT wResult;
+} PCIVME_RESET_RESULT; // polling result: in progress if (wResult != 0)
+
+typedef struct
+{
+ ULONG dwInterface; // here dummy 'cause of compatibility to WIN95..
+ USHORT wEnable; // a 1 enables the queue filling, a 0 disables
+} PCIVME_IRQ_CONTROL;
+
+typedef struct // to request vectors from a interface
+{
+ ULONG dwInterface; // here dummy 'cause of compatibility to WIN95..
+ USHORT wRequestCount; // maximum number of vectors to requests
+ BOOLEAN bPoll; // no blocking allowed - poll always
+} PCIVME_VECTOR_REQUEST;
+
+typedef struct // the response to the above request
+{
+ ULONG dwInterface; // here dummy 'cause of compatibility to WIN95..
+ USHORT wPendingCount; // represents the number of vectors pending
+ USHORT wCount; // actual delivered count of vectors
+ BOOLEAN bOverflow; // there was a irq overflow @ this channel
+ UCHAR bStatusID; // base of following vector array
+} PCIVME_VECTOR_RESPONSE;
+
+#endif // __PCIVME_H__
Index: wiener_pcivme/pcivme/SOURCE/pcivme_fifo.h
===================================================================
--- wiener_pcivme/pcivme/SOURCE/pcivme_fifo.h (nonexistent)
+++ wiener_pcivme/pcivme/SOURCE/pcivme_fifo.h (revision 178)
@@ -0,0 +1,46 @@
+#ifndef __PCIVME_FIFO_H__
+#define __PCIVME_FIFO_H__
+
+//-------------------------------------------------------------------------
+// WINNT driver for PCIVME interface from ARW Elektronik, Germany ---------
+// header for functions for a fast fifo (first in first out) implementation
+//
+// (c) 1999-2004 ARW Elektronik
+//
+// this source code is published under GPL (Open Source). You can use, redistrubute and
+// modify it unless this header is not modified or deleted. No warranty is given that
+// this software will work like expected.
+// This product is not authorized for use as critical component in life support systems
+// wihout the express written approval of ARW Elektronik Germany.
+//
+// Please announce changes and hints to ARW Elektronik
+//
+// $Log: pcivme_fifo.h,v $
+// Revision 1.3 2004/07/24 07:07:26 klaus
+// Update copyright to 2004
+//
+// Revision 1.2 2003/11/15 19:12:50 klaus
+// Update copyright to 2003
+//
+// Revision 1.1.1.1 2003/11/14 23:16:33 klaus
+// First put into repository
+//
+// Revision 1.3 2002/10/27 16:17:48 klaus
+// Typing bug fixed caused at log addition
+//
+// Revision 1.2 2002/10/27 16:11:02 klaus
+// Added CVS log into header
+//
+// what who when
+// started AR 06.10.99
+//
+
+
+NTSTATUS InitializeFIFO(USHORT CountOfElements, PVOID *pHandle);
+int PushElement(PVOID Handle, UCHAR bElement);
+int PullElement(PVOID Handle, UCHAR *pbElement);
+int NumberOfElements(PVOID Handle);
+BOOLEAN CheckAndClearOverflow(PVOID Handle);
+void DestroyFIFO(PVOID Handle);
+
+#endif // __PCIVME_FIFO_H__
Index: wiener_pcivme/pcivme/SOURCE/Vme.h
===================================================================
--- wiener_pcivme/pcivme/SOURCE/Vme.h (nonexistent)
+++ wiener_pcivme/pcivme/SOURCE/Vme.h (revision 178)
@@ -0,0 +1,57 @@
+#ifndef __VME_H__
+#define __VME_H__
+
+//------------------------------------------------------------------------------------------
+// vme.h - some constants about VME address modifiers in a more readable kind
+//
+// (c) 1999-2004 ARW Elektronik
+//
+// this source code is published under GPL (Open Source). You can use, redistrubute and
+// modify it unless this header is not modified or deleted. No warranty is given that
+// this software will work like expected.
+// This product is not authorized for use as critical component in life support systems
+// wihout the express written approval of ARW Elektronik Germany.
+//
+// Please announce changes and hints to ARW Elektronik
+//
+//
+// $Log: Vme.h,v $
+// Revision 1.3 2004/07/24 07:07:26 klaus
+// Update copyright to 2004
+//
+// Revision 1.2 2003/11/15 19:12:51 klaus
+// Update copyright to 2003
+//
+// Revision 1.1.1.1 2003/11/14 23:16:33 klaus
+// First put into repository
+//
+// Revision 1.3 2002/10/27 16:17:48 klaus
+// Typing bug fixed caused at log addition
+//
+// Revision 1.2 2002/10/27 16:11:03 klaus
+// Added CVS log into header
+//
+// what who when
+// finished first release to use with the PCIVME interface of ARW AR 22.03.1999
+//
+
+typedef WORD ADDRESS_MODIFIER;
+
+#define Std_Sup_Data (ADDRESS_MODIFIER)0x3d
+#define Std_Sup_Prog (ADDRESS_MODIFIER)0x3e
+#define Std_NoPriv_Data (ADDRESS_MODIFIER)0x39
+#define Std_NoPriv_Prog (ADDRESS_MODIFIER)0x3a
+
+#define Short_Sup (ADDRESS_MODIFIER)0x2d
+#define Short_NoPriv (ADDRESS_MODIFIER)0x29
+
+#define Ext_Sup_Data (ADDRESS_MODIFIER)0x0d
+#define Ext_Sup_Prog (ADDRESS_MODIFIER)0x0e
+#define Ext_NoPriv_Data (ADDRESS_MODIFIER)0x09
+#define Ext_NoPriv_Prog (ADDRESS_MODIFIER)0x0a
+
+#endif
+
+//-------------------------------------------------------------------------------------------
+//-------------------------------------------------------------------------------------------
+//-------------------------------------------------------------------------------------------
Index: wiener_pcivme/pcivme/SOURCE/guid.h
===================================================================
--- wiener_pcivme/pcivme/SOURCE/guid.h (nonexistent)
+++ wiener_pcivme/pcivme/SOURCE/guid.h (revision 178)
@@ -0,0 +1,6 @@
+INTERFACENAME = { /* c4ad1dfa-3e35-4659-bf2b-c83cda6833e1 */
+ 0xc4ad1dfa,
+ 0x3e35,
+ 0x4659,
+ {0xbf, 0x2b, 0xc8, 0x3c, 0xda, 0x68, 0x33, 0xe1}
+ };
Index: wiener_pcivme/pcivme/pcivme.vcxproj.filters
===================================================================
--- wiener_pcivme/pcivme/pcivme.vcxproj.filters (nonexistent)
+++ wiener_pcivme/pcivme/pcivme.vcxproj.filters (revision 178)
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+ </Filter>
+ <Filter Include="Driver Files">
+ <UniqueIdentifier>{8E41214B-6785-4CFE-B992-037D68949A14}</UniqueIdentifier>
+ <Extensions>inf;inv;inx;mof;mc;</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <Inf Include="pcivme.inf">
+ <Filter>Driver Files</Filter>
+ </Inf>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="SOURCE\pcivme_drv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="SOURCE\pcivme_fifo.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="SOURCE\pcivme_i.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="SOURCE\pcivme_io.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="SOURCE\pcivme_v.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="SOURCE\guid.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="SOURCE\pciif.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="SOURCE\pcivme.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="SOURCE\pcivme_drv.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="SOURCE\pcivme_fifo.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="SOURCE\pcivme_i.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="SOURCE\pcivme_io.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="SOURCE\pcivme_v.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="SOURCE\Vic.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="SOURCE\Vme.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project>
\ No newline at end of file
Index: wiener_pcivme/pcivme/pcivme.vcxproj.user
===================================================================
--- wiener_pcivme/pcivme/pcivme.vcxproj.user (nonexistent)
+++ wiener_pcivme/pcivme/pcivme.vcxproj.user (revision 178)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|Win32'">
+ <SignMode>Off</SignMode>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'">
+ <TestCertificate>CN="WDKTestCert f9daq,130456733316664517" | 8644AA4DA938EFB0FDDA92D462A26EAF43663C98</TestCertificate>
+ <SignMode>TestSign</SignMode>
+ </PropertyGroup>
+</Project>
\ No newline at end of file
Index: wiener_pcivme/pcivme/pcivme.vcxproj
===================================================================
--- wiener_pcivme/pcivme/pcivme.vcxproj (nonexistent)
+++ wiener_pcivme/pcivme/pcivme.vcxproj (revision 178)
@@ -0,0 +1,312 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Win8.1 Debug|Win32">
+ <Configuration>Win8.1 Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win8.1 Release|Win32">
+ <Configuration>Win8.1 Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win8 Debug|Win32">
+ <Configuration>Win8 Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win8 Release|Win32">
+ <Configuration>Win8 Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win7 Debug|Win32">
+ <Configuration>Win7 Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win7 Release|Win32">
+ <Configuration>Win7 Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win8.1 Debug|x64">
+ <Configuration>Win8.1 Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win8.1 Release|x64">
+ <Configuration>Win8.1 Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win8 Debug|x64">
+ <Configuration>Win8 Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win8 Release|x64">
+ <Configuration>Win8 Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win7 Debug|x64">
+ <Configuration>Win7 Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win7 Release|x64">
+ <Configuration>Win7 Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{2AC3560D-0575-4214-A7AA-04F7A8DE84BE}</ProjectGuid>
+ <TemplateGuid>{1bc93793-694f-48fe-9372-81e2b05556fd}</TemplateGuid>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
+ <Configuration>Win8.1 Debug</Configuration>
+ <Platform Condition="'$(Platform)' == ''">Win32</Platform>
+ <RootNamespace>pcivme</RootNamespace>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|Win32'" Label="Configuration">
+ <TargetVersion>WindowsV6.3</TargetVersion>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+ <ConfigurationType>Driver</ConfigurationType>
+ <DriverType>KMDF</DriverType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|Win32'" Label="Configuration">
+ <TargetVersion>WindowsV6.3</TargetVersion>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+ <ConfigurationType>Driver</ConfigurationType>
+ <DriverType>KMDF</DriverType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'" Label="Configuration">
+ <TargetVersion>Windows8</TargetVersion>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+ <ConfigurationType>Driver</ConfigurationType>
+ <DriverType>KMDF</DriverType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'" Label="Configuration">
+ <TargetVersion>Windows8</TargetVersion>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+ <ConfigurationType>Driver</ConfigurationType>
+ <DriverType>KMDF</DriverType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'" Label="Configuration">
+ <TargetVersion>Windows7</TargetVersion>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+ <ConfigurationType>Driver</ConfigurationType>
+ <DriverType>KMDF</DriverType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'" Label="Configuration">
+ <TargetVersion>Windows7</TargetVersion>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+ <ConfigurationType>Driver</ConfigurationType>
+ <DriverType>KMDF</DriverType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|x64'" Label="Configuration">
+ <TargetVersion>WindowsV6.3</TargetVersion>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+ <ConfigurationType>Driver</ConfigurationType>
+ <DriverType>KMDF</DriverType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|x64'" Label="Configuration">
+ <TargetVersion>WindowsV6.3</TargetVersion>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+ <ConfigurationType>Driver</ConfigurationType>
+ <DriverType>KMDF</DriverType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'" Label="Configuration">
+ <TargetVersion>Windows8</TargetVersion>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+ <ConfigurationType>Driver</ConfigurationType>
+ <DriverType>KMDF</DriverType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'" Label="Configuration">
+ <TargetVersion>Windows8</TargetVersion>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+ <ConfigurationType>Driver</ConfigurationType>
+ <DriverType>KMDF</DriverType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'" Label="Configuration">
+ <TargetVersion>Windows7</TargetVersion>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+ <ConfigurationType>Driver</ConfigurationType>
+ <DriverType>KMDF</DriverType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'" Label="Configuration">
+ <TargetVersion>Windows7</TargetVersion>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
+ <ConfigurationType>Driver</ConfigurationType>
+ <DriverType>KMDF</DriverType>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|Win32'">
+ <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+ <IncludePath>$(ProjectDir);$(IncludePath);$(ProjectDir)\SOURCE</IncludePath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|Win32'">
+ <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+ <IncludePath>$(ProjectDir);$(IncludePath);$(ProjectDir)\SOURCE</IncludePath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'">
+ <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+ <IncludePath>$(ProjectDir);$(IncludePath);$(ProjectDir)\SOURCE</IncludePath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'">
+ <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+ <IncludePath>$(ProjectDir);$(IncludePath);$(ProjectDir)\SOURCE</IncludePath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'">
+ <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+ <IncludePath>$(ProjectDir);$(IncludePath);$(ProjectDir)\SOURCE</IncludePath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'">
+ <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+ <IncludePath>$(ProjectDir);$(IncludePath);$(ProjectDir)\SOURCE</IncludePath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|x64'">
+ <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|x64'">
+ <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'">
+ <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'">
+ <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'">
+ <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+ <IncludePath>$(ProjectDir);$(IncludePath);$(ProjectDir)\SOURCE</IncludePath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'">
+ <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+ <IncludePath>$(ProjectDir);$(IncludePath);$(ProjectDir)\SOURCE</IncludePath>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|Win32'">
+ <ClCompile>
+ <WppEnabled>false</WppEnabled>
+ <WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData>
+ <WppKernelMode>true</WppKernelMode>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|Win32'">
+ <ClCompile>
+ <WppEnabled>false</WppEnabled>
+ <WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData>
+ <WppKernelMode>true</WppKernelMode>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'">
+ <ClCompile>
+ <WppEnabled>false</WppEnabled>
+ <WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData>
+ <WppKernelMode>true</WppKernelMode>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'">
+ <ClCompile>
+ <WppEnabled>false</WppEnabled>
+ <WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData>
+ <WppKernelMode>true</WppKernelMode>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'">
+ <ClCompile>
+ <WppEnabled>false</WppEnabled>
+ <WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData>
+ <WppKernelMode>true</WppKernelMode>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'">
+ <ClCompile>
+ <WppEnabled>false</WppEnabled>
+ <WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData>
+ <WppKernelMode>true</WppKernelMode>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|x64'">
+ <ClCompile>
+ <WppEnabled>true</WppEnabled>
+ <WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData>
+ <WppKernelMode>true</WppKernelMode>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|x64'">
+ <ClCompile>
+ <WppEnabled>true</WppEnabled>
+ <WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData>
+ <WppKernelMode>true</WppKernelMode>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'">
+ <ClCompile>
+ <WppEnabled>true</WppEnabled>
+ <WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData>
+ <WppKernelMode>true</WppKernelMode>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'">
+ <ClCompile>
+ <WppEnabled>true</WppEnabled>
+ <WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData>
+ <WppKernelMode>true</WppKernelMode>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'">
+ <ClCompile>
+ <WppEnabled>false</WppEnabled>
+ <WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData>
+ <WppKernelMode>true</WppKernelMode>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'">
+ <ClCompile>
+ <WppEnabled>false</WppEnabled>
+ <WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData>
+ <WppKernelMode>true</WppKernelMode>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <Inf Include="pcivme.inf" />
+ </ItemGroup>
+ <ItemGroup>
+ <FilesToPackage Include="$(TargetPath)" />
+ <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="SOURCE\guid.h" />
+ <ClInclude Include="SOURCE\pciif.h" />
+ <ClInclude Include="SOURCE\pcivme.h" />
+ <ClInclude Include="SOURCE\pcivme_drv.h" />
+ <ClInclude Include="SOURCE\pcivme_fifo.h" />
+ <ClInclude Include="SOURCE\pcivme_i.h" />
+ <ClInclude Include="SOURCE\pcivme_io.h" />
+ <ClInclude Include="SOURCE\pcivme_v.h" />
+ <ClInclude Include="SOURCE\Vic.h" />
+ <ClInclude Include="SOURCE\Vme.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="SOURCE\pcivme_drv.c" />
+ <ClCompile Include="SOURCE\pcivme_fifo.c" />
+ <ClCompile Include="SOURCE\pcivme_i.c" />
+ <ClCompile Include="SOURCE\pcivme_io.c" />
+ <ClCompile Include="SOURCE\pcivme_v.c" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
\ No newline at end of file
Index: wiener_pcivme/pcivme/Win8.1Release/pcivme.log
===================================================================
--- wiener_pcivme/pcivme/Win8.1Release/pcivme.log (nonexistent)
+++ wiener_pcivme/pcivme/Win8.1Release/pcivme.log (revision 178)
@@ -0,0 +1,20 @@
+Build started 15.4.2014 9:30:23.
+ 1>Project "C:\home\rok\wiener_pcivme_new\pcivme\pcivme.vcxproj" on node 2 (Build target(s)).
+ 1>StampInf:
+ C:\Program Files\Windows Kits\8.1\bin\x86\stampinf.exe -d "*" -a "x86" -v "*" -k "1.11" -u "1.11.0" -f Win8.1Release\pcivme.inf
+ Stamping Win8.1Release\pcivme.inf [Version] section with DriverVer=04/15/2014,9.30.23.303
+ ClCompile:
+ C:\Program Files\Microsoft Visual Studio 12.0\VC\bin\CL.exe /c /IWin8.1Release\ /Zi /nologo /W4 /WX /Ox /Os /Oy- /D _X86_=1 /D i386=1 /D STD_CALL /D _WIN32_WINNT=0x0603 /D WINVER=0x0603 /D WINNT=1 /D NTDDI_VERSION=0x06030000 /D KMDF_VERSION_MAJOR=1 /D KMDF_VERSION_MINOR=11 /GF /Gm- /Zp8 /GS /Gy /fp:precise /Zc:wchar_t- /Zc:forScope- /GR- /Fo"Win8.1Release\\" /Fd"Win8.1Release\vc120.pdb" /Gz /wd4603 /wd4627 /wd4986 /wd4987 /wd4996 /FI"C:\Program Files\Windows Kits\8.1\Include\Shared\warning.h" /analyze- /errorReport:prompt /kernel -cbstring /d1nodatetime /d1import_no_registry /d2AllowCompatibleILVersions /d2Zi+ SOURCE\pcivme_drv.c
+ pcivme_drv.c
+ Link:
+ C:\Program Files\Microsoft Visual Studio 12.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"C:\home\rok\wiener_pcivme_new\Win8.1Release\pcivme.sys" /VERSION:"6.3" /INCREMENTAL:NO /NOLOGO /WX /SECTION:"INIT,d" "C:\Program Files\Windows Kits\8.1\lib\winV6.3\KM\x86\BufferOverflowFastFailK.lib" "C:\Program Files\Windows Kits\8.1\lib\winV6.3\KM\x86\ntoskrnl.lib" "C:\Program Files\Windows Kits\8.1\lib\winV6.3\KM\x86\hal.lib" "C:\Program Files\Windows Kits\8.1\lib\winV6.3\KM\x86\wmilib.lib" "C:\Program Files\Windows Kits\8.1\lib\wdf\kmdf\x86\1.11\WdfLdr.lib" "C:\Program Files\Windows Kits\8.1\lib\wdf\kmdf\x86\1.11\WdfDriverEntry.lib" /NODEFAULTLIB /MANIFEST:NO /DEBUG /PDB:"C:\home\rok\wiener_pcivme_new\Win8.1Release\pcivme.pdb" /SUBSYSTEM:NATIVE,"6.03" /Driver /OPT:REF /OPT:ICF /ENTRY:"FxDriverEntry@8" /RELEASE /IMPLIB:"C:\home\rok\wiener_pcivme_new\Win8.1Release\pcivme.lib" /MERGE:"_TEXT=.text;_PAGE=PAGE" /MACHINE:X86 /PROFILE /SAFESEH /kernel /IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221 /osversion:6.3 /pdbcompress /debugtype:pdata Win8.1Release\pcivme_drv.obj
+ Win8.1Release\pcivme_fifo.obj
+ Win8.1Release\pcivme_i.obj
+ Win8.1Release\pcivme_io.obj
+ Win8.1Release\pcivme_v.obj
+ pcivme.vcxproj -> C:\home\rok\wiener_pcivme_new\Win8.1Release\pcivme.sys
+ 1>Done Building Project "C:\home\rok\wiener_pcivme_new\pcivme\pcivme.vcxproj" (Build target(s)).
+
+Build succeeded.
+
+Time Elapsed 00:00:00.82
Index: wiener_pcivme/pcivme/Win8.1Release/pcivme.Build.CppClean.log
===================================================================
--- wiener_pcivme/pcivme/Win8.1Release/pcivme.Build.CppClean.log (nonexistent)
+++ wiener_pcivme/pcivme/Win8.1Release/pcivme.Build.CppClean.log (revision 178)
@@ -0,0 +1,19 @@
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1release\pcivme.inf
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1release\vc120.pdb
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1release\pcivme_v.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1release\pcivme_io.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1release\pcivme_i.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1release\pcivme_fifo.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1release\pcivme_drv.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win8.1release\pcivme.sys
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win8.1release\pcivme.pdb
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win8.1release\pcivme.inf
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1release\stampinf.command.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1release\stampinf.read.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1release\stampinf.write.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1release\pcivme.tlog\cl.command.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1release\pcivme.tlog\cl.read.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1release\pcivme.tlog\cl.write.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1release\pcivme.tlog\link.command.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1release\pcivme.tlog\link.read.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1release\pcivme.tlog\link.write.1.tlog
Index: wiener_pcivme/pcivme/Win8.1Debug/pcivme.log
===================================================================
--- wiener_pcivme/pcivme/Win8.1Debug/pcivme.log (nonexistent)
+++ wiener_pcivme/pcivme/Win8.1Debug/pcivme.log (revision 178)
@@ -0,0 +1,20 @@
+Build started 14.4.2014 14:20:40.
+ 1>Project "C:\home\rok\wiener_pcivme_new\pcivme\pcivme.vcxproj" on node 2 (Build target(s)).
+ 1>StampInf:
+ C:\Program Files\Windows Kits\8.1\bin\x86\stampinf.exe -d "*" -a "x86" -v "*" -k "1.11" -u "1.11.0" -f Win8.1Debug\pcivme.inf
+ Stamping Win8.1Debug\pcivme.inf [Version] section with DriverVer=04/14/2014,14.20.40.814
+ ClCompile:
+ C:\Program Files\Microsoft Visual Studio 12.0\VC\bin\CL.exe /c /IWin8.1Debug\ /Zi /nologo /W4 /WX /Od /Oi /Oy- /D _X86_=1 /D i386=1 /D STD_CALL /D DEPRECATE_DDK_FUNCTIONS=1 /D MSC_NOOPT /D _WIN32_WINNT=0x0603 /D WINVER=0x0603 /D WINNT=1 /D NTDDI_VERSION=0x06030000 /D DBG=1 /D KMDF_VERSION_MAJOR=1 /D KMDF_VERSION_MINOR=11 /GF /Gm- /Zp8 /GS /Gy /fp:precise /Zc:wchar_t- /Zc:forScope- /GR- /Fo"Win8.1Debug\\" /Fd"Win8.1Debug\vc120.pdb" /Gz /wd4748 /wd4603 /wd4627 /wd4986 /wd4987 /wd4996 /FI"C:\Program Files\Windows Kits\8.1\Include\Shared\warning.h" /analyze- /errorReport:prompt /kernel -cbstring /d1import_no_registry /d2AllowCompatibleILVersions /d2Zi+ SOURCE\pcivme_drv.c
+ pcivme_drv.c
+ Link:
+ C:\Program Files\Microsoft Visual Studio 12.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"C:\home\rok\wiener_pcivme_new\Win8.1Debug\pcivme.sys" /VERSION:"6.3" /INCREMENTAL:NO /NOLOGO /WX /SECTION:"INIT,d" "C:\Program Files\Windows Kits\8.1\lib\winV6.3\KM\x86\BufferOverflowFastFailK.lib" "C:\Program Files\Windows Kits\8.1\lib\winV6.3\KM\x86\ntoskrnl.lib" "C:\Program Files\Windows Kits\8.1\lib\winV6.3\KM\x86\hal.lib" "C:\Program Files\Windows Kits\8.1\lib\winV6.3\KM\x86\wmilib.lib" "C:\Program Files\Windows Kits\8.1\lib\wdf\kmdf\x86\1.11\WdfLdr.lib" "C:\Program Files\Windows Kits\8.1\lib\wdf\kmdf\x86\1.11\WdfDriverEntry.lib" /NODEFAULTLIB /MANIFEST:NO /DEBUG /PDB:"C:\home\rok\wiener_pcivme_new\Win8.1Debug\pcivme.pdb" /SUBSYSTEM:NATIVE,"6.03" /Driver /OPT:REF /OPT:ICF /ENTRY:"FxDriverEntry@8" /RELEASE /IMPLIB:"C:\home\rok\wiener_pcivme_new\Win8.1Debug\pcivme.lib" /MERGE:"_TEXT=.text;_PAGE=PAGE" /MACHINE:X86 /PROFILE /kernel /IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221 /osversion:6.3 /pdbcompress /debugtype:pdata Win8.1Debug\pcivme_drv.obj
+ Win8.1Debug\pcivme_fifo.obj
+ Win8.1Debug\pcivme_i.obj
+ Win8.1Debug\pcivme_io.obj
+ Win8.1Debug\pcivme_v.obj
+ pcivme.vcxproj -> C:\home\rok\wiener_pcivme_new\Win8.1Debug\pcivme.sys
+ 1>Done Building Project "C:\home\rok\wiener_pcivme_new\pcivme\pcivme.vcxproj" (Build target(s)).
+
+Build succeeded.
+
+Time Elapsed 00:00:00.87
Index: wiener_pcivme/pcivme/Win8.1Debug/pcivme.Build.CppClean.log
===================================================================
--- wiener_pcivme/pcivme/Win8.1Debug/pcivme.Build.CppClean.log (nonexistent)
+++ wiener_pcivme/pcivme/Win8.1Debug/pcivme.Build.CppClean.log (revision 178)
@@ -0,0 +1,23 @@
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win8.1debug\pcivme.sys
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1debug\pcivme.inf
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1debug\vc120.pdb
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1debug\pcivme_v.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1debug\pcivme_io.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1debug\pcivme_i.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1debug\pcivme_fifo.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1debug\pcivme_drv.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win8.1debug\pcivme.pdb
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win8.1debug\pcivme.cer
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win8.1debug\pcivme.inf
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1debug\signtool.command.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1debug\signtool.read.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1debug\signtool.write.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1debug\stampinf.command.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1debug\stampinf.read.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1debug\stampinf.write.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1debug\pcivme.tlog\cl.command.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1debug\pcivme.tlog\cl.read.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1debug\pcivme.tlog\cl.write.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1debug\pcivme.tlog\link.command.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1debug\pcivme.tlog\link.read.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8.1debug\pcivme.tlog\link.write.1.tlog
Index: wiener_pcivme/pcivme/pcivme.inf
===================================================================
--- wiener_pcivme/pcivme/pcivme.inf (nonexistent)
+++ wiener_pcivme/pcivme/pcivme.inf (revision 178)
@@ -0,0 +1,99 @@
+;
+; pcivme.inf
+;
+
+[Version]
+Signature="$WINDOWS NT$"
+Provider = %ManufacturerName%
+Class = PCIVME
+;Class = %PCIVME_class_name%
+ClassGUID = {c4ad1dfa-3e35-4659-bf2b-c83cda6833e1}
+DriverVer = 02/10/2014, 4.0.0.0
+
+CatalogFile=pcivme.cat
+;DriverVer= ; TODO: set DriverVer in stampinf property pages
+
+[DestinationDirs]
+DefaultDestDir = 12
+
+; ================= Class section =====================
+
+[ClassInstall32]
+Addreg=SampleClassReg
+
+[SampleClassReg]
+HKR,,,0,%ClassName%
+HKR,,Icon,,-5
+
+[SourceDisksNames]
+1 = %DiskName%,,,""
+
+[SourceDisksFiles]
+pcivme.sys = 1,,
+
+
+;*****************************************
+; Install Section
+;*****************************************
+
+[Manufacturer]
+%ManufacturerName%=Standard,NT$ARCH$
+
+[Standard.NT$ARCH$]
+%pcivme.DeviceDesc%=pcivme_Device, Root\pcivme
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050&REV_01
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050&REV_02
+
+[pcivme_Device.NT]
+CopyFiles=Drivers_Dir
+
+[Drivers_Dir]
+pcivme.sys
+
+;-------------- Service installation
+[pcivme_Device.NT.Services]
+AddService = pcivme,%SPSVCINST_ASSOCSERVICE%, pcivme_Service_Inst
+
+; -------------- pcivme driver install sections
+[pcivme_Service_Inst]
+DisplayName = %pcivme.SVCDESC%
+ServiceType = 1 ; SERVICE_KERNEL_DRIVER
+StartType = 3 ; SERVICE_DEMAND_START
+ErrorControl = 0 ; SERVICE_ERROR_IGNORE
+ServiceBinary = %12%\pcivme.sys
+LoadOrderGroup = Extended Base
+
+;
+;--- pcivme_Device Coinstaller installation ------
+;
+
+[DestinationDirs]
+pcivme_Device_CoInstaller_CopyFiles = 11
+
+[pcivme_Device.NT.CoInstallers]
+AddReg=pcivme_Device_CoInstaller_AddReg
+CopyFiles=pcivme_Device_CoInstaller_CopyFiles
+
+[pcivme_Device_CoInstaller_AddReg]
+HKR,,CoInstallers32,0x00010000, "WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll,WdfCoInstaller"
+
+[pcivme_Device_CoInstaller_CopyFiles]
+WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll
+
+[SourceDisksFiles]
+WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll=1 ; make sure the number matches with SourceDisksNames
+
+[pcivme_Device.NT.Wdf]
+KmdfService = pcivme, pcivme_wdfsect
+[pcivme_wdfsect]
+KmdfLibraryVersion = $KMDFVERSION$
+
+[Strings]
+SPSVCINST_ASSOCSERVICE= 0x00000002
+ManufacturerName="ARW Elektronik, Germany" ; TODO: add ManufacturerName
+ClassName="ARW BUS Interfaces" ; TODO: edit ClassName
+DiskName = "pcivme Installation Disk"
+pcivme.DeviceDesc = "pcivme Device"
+pcivme.SVCDESC = "pcivme Service"
Index: wiener_pcivme/pcivme/Win7Release/pcivme.log
===================================================================
--- wiener_pcivme/pcivme/Win7Release/pcivme.log (nonexistent)
+++ wiener_pcivme/pcivme/Win7Release/pcivme.log (revision 178)
@@ -0,0 +1,25 @@
+Build started 10.2.2014 10:11:46.
+ 1>Project "C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\pcivme\pcivme.vcxproj" on node 2 (Rebuild target(s)).
+ 1>StampInf:
+ C:\Program Files (x86)\Windows Kits\8.1\bin\x86\stampinf.exe -d "*" -a "x86" -v "*" -k "1.11" -u "1.11.0" -f Win7Release\pcivme.inf
+ Stamping Win7Release\pcivme.inf [Version] section with DriverVer=02/10/2014,10.11.46.519
+ ClCompile:
+ C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\CL.exe /c /IWin7Release\ /Zi /nologo /W4 /WX /Ox /Os /Oy- /D _X86_=1 /D i386=1 /D STD_CALL /D _WIN32_WINNT=0x0601 /D WINVER=0x0601 /D WINNT=1 /D NTDDI_VERSION=0x06010000 /D KMDF_VERSION_MAJOR=1 /D KMDF_VERSION_MINOR=11 /GF /Gm- /Zp8 /GS /Gy /fp:precise /Zc:wchar_t- /Zc:forScope- /GR- /Fo"Win7Release\\" /Fd"Win7Release\vc120.pdb" /Gz /wd4603 /wd4627 /wd4986 /wd4987 /wd4996 /FI"C:\Program Files (x86)\Windows Kits\8.1\Include\Shared\warning.h" /analyze- /errorReport:prompt /kernel -cbstring /d1nodatetime /d1import_no_registry /d2AllowCompatibleILVersions /d2Zi+ SOURCE\pcivme_drv.c SOURCE\pcivme_fifo.c SOURCE\pcivme_i.c SOURCE\pcivme_io.c SOURCE\pcivme_v.c
+ pcivme_drv.c
+ pcivme_fifo.c
+ pcivme_i.c
+ pcivme_io.c
+ pcivme_v.c
+ Generating Code...
+ Link:
+ C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win7Release\pcivme.sys" /VERSION:"6.3" /INCREMENTAL:NO /NOLOGO /WX /SECTION:"INIT,d" "C:\Program Files (x86)\Windows Kits\8.1\lib\win7\KM\x86\memcmp.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win7\KM\x86\BufferOverflowK.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win7\KM\x86\ntoskrnl.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win7\KM\x86\hal.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win7\KM\x86\wmilib.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\wdf\kmdf\x86\1.11\WdfLdr.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\wdf\kmdf\x86\1.11\WdfDriverEntry.lib" /NODEFAULTLIB /MANIFEST:NO /DEBUG /PDB:"C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win7Release\pcivme.pdb" /SUBSYSTEM:NATIVE,"6.01" /Driver /OPT:REF /OPT:ICF /ENTRY:"FxDriverEntry@8" /RELEASE /IMPLIB:"C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win7Release\pcivme.lib" /MERGE:"_TEXT=.text;_PAGE=PAGE" /MACHINE:X86 /PROFILE /SAFESEH /kernel /IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221 /osversion:6.3 /pdbcompress /debugtype:pdata Win7Release\pcivme_drv.obj
+ Win7Release\pcivme_fifo.obj
+ Win7Release\pcivme_i.obj
+ Win7Release\pcivme_io.obj
+ Win7Release\pcivme_v.obj
+ pcivme.vcxproj -> C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win7Release\pcivme.sys
+ 1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\pcivme\pcivme.vcxproj" (Rebuild target(s)).
+
+Build succeeded.
+
+Time Elapsed 00:00:00.78
Index: wiener_pcivme/pcivme/Win7Release/pcivme.Build.CppClean.log
===================================================================
--- wiener_pcivme/pcivme/Win7Release/pcivme.Build.CppClean.log (nonexistent)
+++ wiener_pcivme/pcivme/Win7Release/pcivme.Build.CppClean.log (revision 178)
@@ -0,0 +1,19 @@
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7release\pcivme.inf
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7release\vc120.pdb
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7release\pcivme_v.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7release\pcivme_io.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7release\pcivme_i.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7release\pcivme_fifo.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7release\pcivme_drv.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win7release\pcivme.sys
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win7release\pcivme.pdb
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win7release\pcivme.inf
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7release\stampinf.command.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7release\stampinf.read.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7release\stampinf.write.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7release\pcivme.tlog\cl.command.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7release\pcivme.tlog\cl.read.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7release\pcivme.tlog\cl.write.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7release\pcivme.tlog\link.command.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7release\pcivme.tlog\link.read.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7release\pcivme.tlog\link.write.1.tlog
Index: wiener_pcivme/pcivme/Win8Release/pcivme.log
===================================================================
--- wiener_pcivme/pcivme/Win8Release/pcivme.log (nonexistent)
+++ wiener_pcivme/pcivme/Win8Release/pcivme.log (revision 178)
@@ -0,0 +1,25 @@
+Build started 10.2.2014 10:11:44.
+ 1>Project "C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\pcivme\pcivme.vcxproj" on node 2 (Rebuild target(s)).
+ 1>StampInf:
+ C:\Program Files (x86)\Windows Kits\8.1\bin\x86\stampinf.exe -d "*" -a "x86" -v "*" -k "1.11" -u "1.11.0" -f Win8Release\pcivme.inf
+ Stamping Win8Release\pcivme.inf [Version] section with DriverVer=02/10/2014,10.11.44.387
+ ClCompile:
+ C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\CL.exe /c /IWin8Release\ /Zi /nologo /W4 /WX /Ox /Os /Oy- /D _X86_=1 /D i386=1 /D STD_CALL /D _WIN32_WINNT=0x0602 /D WINVER=0x0602 /D WINNT=1 /D NTDDI_VERSION=0x06020000 /D KMDF_VERSION_MAJOR=1 /D KMDF_VERSION_MINOR=11 /GF /Gm- /Zp8 /GS /Gy /fp:precise /Zc:wchar_t- /Zc:forScope- /GR- /Fo"Win8Release\\" /Fd"Win8Release\vc120.pdb" /Gz /wd4603 /wd4627 /wd4986 /wd4987 /wd4996 /FI"C:\Program Files (x86)\Windows Kits\8.1\Include\Shared\warning.h" /analyze- /errorReport:prompt /kernel -cbstring /d1nodatetime /d1import_no_registry /d2AllowCompatibleILVersions /d2Zi+ SOURCE\pcivme_drv.c SOURCE\pcivme_fifo.c SOURCE\pcivme_i.c SOURCE\pcivme_io.c SOURCE\pcivme_v.c
+ pcivme_drv.c
+ pcivme_fifo.c
+ pcivme_i.c
+ pcivme_io.c
+ pcivme_v.c
+ Generating Code...
+ Link:
+ C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win8Release\pcivme.sys" /VERSION:"6.3" /INCREMENTAL:NO /NOLOGO /WX /SECTION:"INIT,d" "C:\Program Files (x86)\Windows Kits\8.1\lib\win8\KM\x86\BufferOverflowFastFailK.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win8\KM\x86\ntoskrnl.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win8\KM\x86\hal.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win8\KM\x86\wmilib.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\wdf\kmdf\x86\1.11\WdfLdr.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\wdf\kmdf\x86\1.11\WdfDriverEntry.lib" /NODEFAULTLIB /MANIFEST:NO /DEBUG /PDB:"C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win8Release\pcivme.pdb" /SUBSYSTEM:NATIVE,"6.02" /Driver /OPT:REF /OPT:ICF /ENTRY:"FxDriverEntry@8" /RELEASE /IMPLIB:"C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win8Release\pcivme.lib" /MERGE:"_TEXT=.text;_PAGE=PAGE" /MACHINE:X86 /PROFILE /SAFESEH /kernel /IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221 /osversion:6.3 /pdbcompress /debugtype:pdata Win8Release\pcivme_drv.obj
+ Win8Release\pcivme_fifo.obj
+ Win8Release\pcivme_i.obj
+ Win8Release\pcivme_io.obj
+ Win8Release\pcivme_v.obj
+ pcivme.vcxproj -> C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win8Release\pcivme.sys
+ 1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\pcivme\pcivme.vcxproj" (Rebuild target(s)).
+
+Build succeeded.
+
+Time Elapsed 00:00:00.95
Index: wiener_pcivme/pcivme/Win8Release/pcivme.Build.CppClean.log
===================================================================
--- wiener_pcivme/pcivme/Win8Release/pcivme.Build.CppClean.log (nonexistent)
+++ wiener_pcivme/pcivme/Win8Release/pcivme.Build.CppClean.log (revision 178)
@@ -0,0 +1,19 @@
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8release\pcivme.inf
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8release\vc120.pdb
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8release\pcivme_v.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8release\pcivme_io.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8release\pcivme_i.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8release\pcivme_fifo.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8release\pcivme_drv.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win8release\pcivme.sys
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win8release\pcivme.pdb
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win8release\pcivme.inf
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8release\stampinf.command.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8release\stampinf.read.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8release\stampinf.write.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8release\pcivme.tlog\cl.command.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8release\pcivme.tlog\cl.read.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8release\pcivme.tlog\cl.write.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8release\pcivme.tlog\link.command.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8release\pcivme.tlog\link.read.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8release\pcivme.tlog\link.write.1.tlog
Index: wiener_pcivme/pcivme/Win7Debug/pcivme.log
===================================================================
--- wiener_pcivme/pcivme/Win7Debug/pcivme.log (nonexistent)
+++ wiener_pcivme/pcivme/Win7Debug/pcivme.log (revision 178)
@@ -0,0 +1,30 @@
+Build started 10.2.2014 10:11:47.
+ 1>Project "C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\pcivme\pcivme.vcxproj" on node 2 (Rebuild target(s)).
+ 1>StampInf:
+ C:\Program Files (x86)\Windows Kits\8.1\bin\x86\stampinf.exe -d "*" -a "x86" -v "*" -k "1.11" -u "1.11.0" -f Win7Debug\pcivme.inf
+ Stamping Win7Debug\pcivme.inf [Version] section with DriverVer=02/10/2014,10.11.47.332
+ ClCompile:
+ C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\CL.exe /c /IWin7Debug\ /Zi /nologo /W4 /WX /Od /Oi /Oy- /D _X86_=1 /D i386=1 /D STD_CALL /D DEPRECATE_DDK_FUNCTIONS=1 /D MSC_NOOPT /D _WIN32_WINNT=0x0601 /D WINVER=0x0601 /D WINNT=1 /D NTDDI_VERSION=0x06010000 /D DBG=1 /D KMDF_VERSION_MAJOR=1 /D KMDF_VERSION_MINOR=11 /GF /Gm- /Zp8 /GS /Gy /fp:precise /Zc:wchar_t- /Zc:forScope- /GR- /Fo"Win7Debug\\" /Fd"Win7Debug\vc120.pdb" /Gz /wd4748 /wd4603 /wd4627 /wd4986 /wd4987 /wd4996 /FI"C:\Program Files (x86)\Windows Kits\8.1\Include\Shared\warning.h" /analyze- /errorReport:prompt /kernel -cbstring /d1import_no_registry /d2AllowCompatibleILVersions /d2Zi+ SOURCE\pcivme_drv.c SOURCE\pcivme_fifo.c SOURCE\pcivme_i.c SOURCE\pcivme_io.c SOURCE\pcivme_v.c
+ pcivme_drv.c
+ pcivme_fifo.c
+ pcivme_i.c
+ pcivme_io.c
+ pcivme_v.c
+ Generating Code...
+ Link:
+ C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win7Debug\pcivme.sys" /VERSION:"6.3" /INCREMENTAL:NO /NOLOGO /WX /SECTION:"INIT,d" "C:\Program Files (x86)\Windows Kits\8.1\lib\win7\KM\x86\memcmp.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win7\KM\x86\BufferOverflowK.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win7\KM\x86\ntoskrnl.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win7\KM\x86\hal.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win7\KM\x86\wmilib.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\wdf\kmdf\x86\1.11\WdfLdr.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\wdf\kmdf\x86\1.11\WdfDriverEntry.lib" /NODEFAULTLIB /MANIFEST:NO /DEBUG /PDB:"C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win7Debug\pcivme.pdb" /SUBSYSTEM:NATIVE,"6.01" /Driver /OPT:REF /OPT:ICF /ENTRY:"FxDriverEntry@8" /RELEASE /IMPLIB:"C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win7Debug\pcivme.lib" /MERGE:"_TEXT=.text;_PAGE=PAGE" /MACHINE:X86 /PROFILE /kernel /IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221 /osversion:6.3 /pdbcompress /debugtype:pdata Win7Debug\pcivme_drv.obj
+ Win7Debug\pcivme_fifo.obj
+ Win7Debug\pcivme_i.obj
+ Win7Debug\pcivme_io.obj
+ Win7Debug\pcivme_v.obj
+ pcivme.vcxproj -> C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win7Debug\pcivme.sys
+ DriverTestSign:
+ C:\Program Files (x86)\Windows Kits\8.1\bin\x86\signtool.exe sign /ph /sha1 "582A29F728D647902CAA175FC6F560D6BB7011DD"
+ Done Adding Additional Store
+ Successfully signed: C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win7Debug\pcivme.sys
+
+ 1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\pcivme\pcivme.vcxproj" (Rebuild target(s)).
+
+Build succeeded.
+
+Time Elapsed 00:00:01.10
Index: wiener_pcivme/pcivme/Win7Debug/pcivme.Build.CppClean.log
===================================================================
--- wiener_pcivme/pcivme/Win7Debug/pcivme.Build.CppClean.log (nonexistent)
+++ wiener_pcivme/pcivme/Win7Debug/pcivme.Build.CppClean.log (revision 178)
@@ -0,0 +1,23 @@
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win7debug\pcivme.sys
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7debug\pcivme.inf
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7debug\vc120.pdb
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7debug\pcivme_v.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7debug\pcivme_io.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7debug\pcivme_i.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7debug\pcivme_fifo.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7debug\pcivme_drv.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win7debug\pcivme.pdb
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win7debug\pcivme.cer
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win7debug\pcivme.inf
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7debug\signtool.command.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7debug\signtool.read.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7debug\signtool.write.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7debug\stampinf.command.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7debug\stampinf.read.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7debug\stampinf.write.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7debug\pcivme.tlog\cl.command.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7debug\pcivme.tlog\cl.read.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7debug\pcivme.tlog\cl.write.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7debug\pcivme.tlog\link.command.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7debug\pcivme.tlog\link.read.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win7debug\pcivme.tlog\link.write.1.tlog
Index: wiener_pcivme/pcivme/Win8Debug/pcivme.log
===================================================================
--- wiener_pcivme/pcivme/Win8Debug/pcivme.log (nonexistent)
+++ wiener_pcivme/pcivme/Win8Debug/pcivme.log (revision 178)
@@ -0,0 +1,30 @@
+Build started 10.2.2014 10:11:45.
+ 1>Project "C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\pcivme\pcivme.vcxproj" on node 2 (Rebuild target(s)).
+ 1>StampInf:
+ C:\Program Files (x86)\Windows Kits\8.1\bin\x86\stampinf.exe -d "*" -a "x86" -v "*" -k "1.11" -u "1.11.0" -f Win8Debug\pcivme.inf
+ Stamping Win8Debug\pcivme.inf [Version] section with DriverVer=02/10/2014,10.11.45.408
+ ClCompile:
+ C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\CL.exe /c /IWin8Debug\ /Zi /nologo /W4 /WX /Od /Oi /Oy- /D _X86_=1 /D i386=1 /D STD_CALL /D DEPRECATE_DDK_FUNCTIONS=1 /D MSC_NOOPT /D _WIN32_WINNT=0x0602 /D WINVER=0x0602 /D WINNT=1 /D NTDDI_VERSION=0x06020000 /D DBG=1 /D KMDF_VERSION_MAJOR=1 /D KMDF_VERSION_MINOR=11 /GF /Gm- /Zp8 /GS /Gy /fp:precise /Zc:wchar_t- /Zc:forScope- /GR- /Fo"Win8Debug\\" /Fd"Win8Debug\vc120.pdb" /Gz /wd4748 /wd4603 /wd4627 /wd4986 /wd4987 /wd4996 /FI"C:\Program Files (x86)\Windows Kits\8.1\Include\Shared\warning.h" /analyze- /errorReport:prompt /kernel -cbstring /d1import_no_registry /d2AllowCompatibleILVersions /d2Zi+ SOURCE\pcivme_drv.c SOURCE\pcivme_fifo.c SOURCE\pcivme_i.c SOURCE\pcivme_io.c SOURCE\pcivme_v.c
+ pcivme_drv.c
+ pcivme_fifo.c
+ pcivme_i.c
+ pcivme_io.c
+ pcivme_v.c
+ Generating Code...
+ Link:
+ C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win8Debug\pcivme.sys" /VERSION:"6.3" /INCREMENTAL:NO /NOLOGO /WX /SECTION:"INIT,d" "C:\Program Files (x86)\Windows Kits\8.1\lib\win8\KM\x86\BufferOverflowFastFailK.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win8\KM\x86\ntoskrnl.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win8\KM\x86\hal.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win8\KM\x86\wmilib.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\wdf\kmdf\x86\1.11\WdfLdr.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\wdf\kmdf\x86\1.11\WdfDriverEntry.lib" /NODEFAULTLIB /MANIFEST:NO /DEBUG /PDB:"C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win8Debug\pcivme.pdb" /SUBSYSTEM:NATIVE,"6.02" /Driver /OPT:REF /OPT:ICF /ENTRY:"FxDriverEntry@8" /RELEASE /IMPLIB:"C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win8Debug\pcivme.lib" /MERGE:"_TEXT=.text;_PAGE=PAGE" /MACHINE:X86 /PROFILE /kernel /IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221 /osversion:6.3 /pdbcompress /debugtype:pdata Win8Debug\pcivme_drv.obj
+ Win8Debug\pcivme_fifo.obj
+ Win8Debug\pcivme_i.obj
+ Win8Debug\pcivme_io.obj
+ Win8Debug\pcivme_v.obj
+ pcivme.vcxproj -> C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win8Debug\pcivme.sys
+ DriverTestSign:
+ C:\Program Files (x86)\Windows Kits\8.1\bin\x86\signtool.exe sign /ph /sha1 "582A29F728D647902CAA175FC6F560D6BB7011DD"
+ Done Adding Additional Store
+ Successfully signed: C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\Win8Debug\pcivme.sys
+
+ 1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciVme\WIN2000-XP\wiener_pcivme\pcivme\pcivme.vcxproj" (Rebuild target(s)).
+
+Build succeeded.
+
+Time Elapsed 00:00:01.05
Index: wiener_pcivme/pcivme/Win8Debug/pcivme.Build.CppClean.log
===================================================================
--- wiener_pcivme/pcivme/Win8Debug/pcivme.Build.CppClean.log (nonexistent)
+++ wiener_pcivme/pcivme/Win8Debug/pcivme.Build.CppClean.log (revision 178)
@@ -0,0 +1,23 @@
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win8debug\pcivme.sys
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8debug\pcivme.inf
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8debug\vc120.pdb
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8debug\pcivme_v.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8debug\pcivme_io.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8debug\pcivme_i.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8debug\pcivme_fifo.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8debug\pcivme_drv.obj
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win8debug\pcivme.pdb
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win8debug\pcivme.cer
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\win8debug\pcivme.inf
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8debug\signtool.command.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8debug\signtool.read.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8debug\signtool.write.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8debug\stampinf.command.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8debug\stampinf.read.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8debug\stampinf.write.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8debug\pcivme.tlog\cl.command.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8debug\pcivme.tlog\cl.read.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8debug\pcivme.tlog\cl.write.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8debug\pcivme.tlog\link.command.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8debug\pcivme.tlog\link.read.1.tlog
+c:\users\f9daq\rok\wienerpciada\pcivme\win2000-xp\driver\pcivme\pcivme\win8debug\pcivme.tlog\link.write.1.tlog
Index: wiener_pcivme/pcivme
===================================================================
--- wiener_pcivme/pcivme (nonexistent)
+++ wiener_pcivme/pcivme (revision 178)
/wiener_pcivme/pcivme
Property changes:
Added: svn:global-ignores
## -0,0 +1,4 ##
+Win7Debug
+Win7Release
+Win8Debug
+Win8Release
Index: wiener_pcivme/Win8.1Release/pcivme Package/pcivme.cat
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win8.1Release/pcivme Package/pcivme.cat
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win8.1Release/pcivme Package/pcivme.sys
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win8.1Release/pcivme Package/pcivme.sys
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win8.1Release/pcivme Package/pcivme.inf
===================================================================
--- wiener_pcivme/Win8.1Release/pcivme Package/pcivme.inf (nonexistent)
+++ wiener_pcivme/Win8.1Release/pcivme Package/pcivme.inf (revision 178)
@@ -0,0 +1,99 @@
+;
+; pcivme.inf
+;
+
+[Version]
+Signature="$WINDOWS NT$"
+Provider = %ManufacturerName%
+Class = PCIVME
+;Class = %PCIVME_class_name%
+ClassGUID = {c4ad1dfa-3e35-4659-bf2b-c83cda6833e1}
+DriverVer=04/15/2014,9.30.23.303
+
+CatalogFile=pcivme.cat
+;DriverVer= ; TODO: set DriverVer in stampinf property pages
+
+[DestinationDirs]
+DefaultDestDir = 12
+
+; ================= Class section =====================
+
+[ClassInstall32]
+Addreg=SampleClassReg
+
+[SampleClassReg]
+HKR,,,0,%ClassName%
+HKR,,Icon,,-5
+
+[SourceDisksNames]
+1 = %DiskName%,,,""
+
+[SourceDisksFiles]
+pcivme.sys = 1,,
+
+
+;*****************************************
+; Install Section
+;*****************************************
+
+[Manufacturer]
+%ManufacturerName%=Standard,NTx86
+
+[Standard.NTx86]
+%pcivme.DeviceDesc%=pcivme_Device, Root\pcivme
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050&REV_01
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050&REV_02
+
+[pcivme_Device.NT]
+CopyFiles=Drivers_Dir
+
+[Drivers_Dir]
+pcivme.sys
+
+;-------------- Service installation
+[pcivme_Device.NT.Services]
+AddService = pcivme,%SPSVCINST_ASSOCSERVICE%, pcivme_Service_Inst
+
+; -------------- pcivme driver install sections
+[pcivme_Service_Inst]
+DisplayName = %pcivme.SVCDESC%
+ServiceType = 1 ; SERVICE_KERNEL_DRIVER
+StartType = 3 ; SERVICE_DEMAND_START
+ErrorControl = 0 ; SERVICE_ERROR_IGNORE
+ServiceBinary = %12%\pcivme.sys
+LoadOrderGroup = Extended Base
+
+;
+;--- pcivme_Device Coinstaller installation ------
+;
+
+[DestinationDirs]
+pcivme_Device_CoInstaller_CopyFiles = 11
+
+[pcivme_Device.NT.CoInstallers]
+AddReg=pcivme_Device_CoInstaller_AddReg
+CopyFiles=pcivme_Device_CoInstaller_CopyFiles
+
+[pcivme_Device_CoInstaller_AddReg]
+HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller"
+
+[pcivme_Device_CoInstaller_CopyFiles]
+WdfCoInstaller01011.dll
+
+[SourceDisksFiles]
+WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames
+
+[pcivme_Device.NT.Wdf]
+KmdfService = pcivme, pcivme_wdfsect
+[pcivme_wdfsect]
+KmdfLibraryVersion = 1.11
+
+[Strings]
+SPSVCINST_ASSOCSERVICE= 0x00000002
+ManufacturerName="ARW Elektronik, Germany" ; TODO: add ManufacturerName
+ClassName="ARW BUS Interfaces" ; TODO: edit ClassName
+DiskName = "pcivme Installation Disk"
+pcivme.DeviceDesc = "pcivme Device"
+pcivme.SVCDESC = "pcivme Service"
Index: wiener_pcivme/Win8.1Release/pcivme Package/WdfCoinstaller01011.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win8.1Release/pcivme Package/WdfCoinstaller01011.dll
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win8.1Release
===================================================================
--- wiener_pcivme/Win8.1Release (nonexistent)
+++ wiener_pcivme/Win8.1Release (revision 178)
/wiener_pcivme/Win8.1Release
Property changes:
Added: svn:ignore
## -0,0 +1,3 ##
+pcivme.inf
+pcivme.pdb
+pcivme.sys
Index: wiener_pcivme/Win8.1Debug/pcivme Package/pcivme.sys
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win8.1Debug/pcivme Package/pcivme.sys
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win8.1Debug/pcivme Package/pcivme.cat
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win8.1Debug/pcivme Package/pcivme.cat
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win8.1Debug/pcivme Package/pcivme.inf
===================================================================
--- wiener_pcivme/Win8.1Debug/pcivme Package/pcivme.inf (nonexistent)
+++ wiener_pcivme/Win8.1Debug/pcivme Package/pcivme.inf (revision 178)
@@ -0,0 +1,98 @@
+;
+; pcivme.inf
+;
+
+[Version]
+Signature="$WINDOWS NT$"
+Provider = %ManufacturerName%
+Class = PCIVME
+;Class = %PCIVME_class_name%
+ClassGUID = {c4ad1dfa-3e35-4659-bf2b-c83cda6833e1}
+DriverVer=04/14/2014,14.20.40.814
+
+CatalogFile=pcivme.cat
+;DriverVer= ; TODO: set DriverVer in stampinf property pages
+
+[DestinationDirs]
+DefaultDestDir = 12
+
+; ================= Class section =====================
+
+[ClassInstall32]
+Addreg=SampleClassReg
+
+[SampleClassReg]
+HKR,,,0,%ClassName%
+HKR,,Icon,,-5
+
+[SourceDisksNames]
+1 = %DiskName%,,,""
+
+[SourceDisksFiles]
+pcivme.sys = 1,,
+
+;*****************************************
+; Install Section
+;*****************************************
+
+[Manufacturer]
+%ManufacturerName%=Standard,NTx86
+
+[Standard.NTx86]
+%pcivme.DeviceDesc%=pcivme_Device, Root\pcivme
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050&REV_01
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050&REV_02
+
+[pcivme_Device.NT]
+CopyFiles=Drivers_Dir
+
+[Drivers_Dir]
+pcivme.sys
+
+;-------------- Service installation
+[pcivme_Device.NT.Services]
+AddService = pcivme,%SPSVCINST_ASSOCSERVICE%, pcivme_Service_Inst
+
+; -------------- pcivme driver install sections
+[pcivme_Service_Inst]
+DisplayName = %pcivme.SVCDESC%
+ServiceType = 1 ; SERVICE_KERNEL_DRIVER
+StartType = 3 ; SERVICE_DEMAND_START
+ErrorControl = 0 ; SERVICE_ERROR_IGNORE
+ServiceBinary = %12%\pcivme.sys
+LoadOrderGroup = Extended Base
+
+;
+;--- pcivme_Device Coinstaller installation ------
+;
+
+[DestinationDirs]
+pcivme_Device_CoInstaller_CopyFiles = 11
+
+[pcivme_Device.NT.CoInstallers]
+AddReg=pcivme_Device_CoInstaller_AddReg
+CopyFiles=pcivme_Device_CoInstaller_CopyFiles
+
+[pcivme_Device_CoInstaller_AddReg]
+HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller"
+
+[pcivme_Device_CoInstaller_CopyFiles]
+WdfCoInstaller01011.dll
+
+[SourceDisksFiles]
+WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames
+
+[pcivme_Device.NT.Wdf]
+KmdfService = pcivme, pcivme_wdfsect
+[pcivme_wdfsect]
+KmdfLibraryVersion = 1.11
+
+[Strings]
+SPSVCINST_ASSOCSERVICE= 0x00000002
+ManufacturerName="ARW Elektronik, Germany" ; TODO: add ManufacturerName
+ClassName="ARW BUS Interfaces" ; TODO: edit ClassName
+DiskName = "pcivme Installation Disk"
+pcivme.DeviceDesc = "pcivme Device"
+pcivme.SVCDESC = "pcivme Service"
Index: wiener_pcivme/Win8.1Debug/pcivme Package/WdfCoinstaller01011.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win8.1Debug/pcivme Package/WdfCoinstaller01011.dll
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win8.1Debug/pcivmePackage.cer
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win8.1Debug/pcivmePackage.cer
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win8.1Debug/pcivme.cer
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win8.1Debug/pcivme.cer
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win8.1Debug
===================================================================
--- wiener_pcivme/Win8.1Debug (nonexistent)
+++ wiener_pcivme/Win8.1Debug (revision 178)
/wiener_pcivme/Win8.1Debug
Property changes:
Added: svn:ignore
## -0,0 +1,3 ##
+pcivme.inf
+pcivme.pdb
+pcivme.sys
Index: wiener_pcivme/Win7Release/pcivme Package/pcivme.sys
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win7Release/pcivme Package/pcivme.sys
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win7Release/pcivme Package/pcivme.cat
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win7Release/pcivme Package/pcivme.cat
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win7Release/pcivme Package/WdfCoinstaller01011.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win7Release/pcivme Package/WdfCoinstaller01011.dll
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win7Release/pcivme Package/pcivme.inf
===================================================================
--- wiener_pcivme/Win7Release/pcivme Package/pcivme.inf (nonexistent)
+++ wiener_pcivme/Win7Release/pcivme Package/pcivme.inf (revision 178)
@@ -0,0 +1,97 @@
+;
+; pcivme.inf
+;
+
+[Version]
+Signature="$WINDOWS NT$"
+Provider = %ManufacturerName%
+Class = %PCIVME_class_name%
+ClassGUID = {c4ad1dfa-3e35-4659-bf2b-c83cda6833e1}
+DriverVer=02/10/2014,10.11.46.519
+
+CatalogFile=pcivme.cat
+;DriverVer= ; TODO: set DriverVer in stampinf property pages
+
+[DestinationDirs]
+DefaultDestDir = 12
+
+; ================= Class section =====================
+
+[ClassInstall32]
+Addreg=SampleClassReg
+
+[SampleClassReg]
+HKR,,,0,%ClassName%
+HKR,,Icon,,-5
+
+[SourceDisksNames]
+1 = %DiskName%,,,""
+
+[SourceDisksFiles]
+pcivme.sys = 1,,
+
+;*****************************************
+; Install Section
+;*****************************************
+
+[Manufacturer]
+%ManufacturerName%=Standard,NTx86
+
+[Standard.NTx86]
+;%pcivme.DeviceDesc%=pcivme_Device, Root\pcivme ; TODO: edit hw-id
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050&REV_01
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050&REV_02
+
+[pcivme_Device.NT]
+CopyFiles=Drivers_Dir
+
+[Drivers_Dir]
+pcivme.sys
+
+;-------------- Service installation
+[pcivme_Device.NT.Services]
+AddService = pcivme,%SPSVCINST_ASSOCSERVICE%, pcivme_Service_Inst
+
+; -------------- pcivme driver install sections
+[pcivme_Service_Inst]
+DisplayName = %pcivme.SVCDESC%
+ServiceType = 1 ; SERVICE_KERNEL_DRIVER
+StartType = 3 ; SERVICE_DEMAND_START
+ErrorControl = 0 ; SERVICE_ERROR_IGNORE
+ServiceBinary = %12%\pcivme.sys
+LoadOrderGroup = Extended Base
+
+;
+;--- pcivme_Device Coinstaller installation ------
+;
+
+[DestinationDirs]
+pcivme_Device_CoInstaller_CopyFiles = 11
+
+[pcivme_Device.NT.CoInstallers]
+AddReg=pcivme_Device_CoInstaller_AddReg
+CopyFiles=pcivme_Device_CoInstaller_CopyFiles
+
+[pcivme_Device_CoInstaller_AddReg]
+HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller"
+
+[pcivme_Device_CoInstaller_CopyFiles]
+WdfCoInstaller01011.dll
+
+[SourceDisksFiles]
+WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames
+
+[pcivme_Device.NT.Wdf]
+KmdfService = pcivme, pcivme_wdfsect
+[pcivme_wdfsect]
+KmdfLibraryVersion = 1.11
+
+[Strings]
+SPSVCINST_ASSOCSERVICE= 0x00000002
+ManufacturerName="ARW Elektronik, Germany" ; TODO: add ManufacturerName
+ClassName="ARW BUS Interfaces" ; TODO: edit ClassName
+DiskName = "pcivme Installation Disk"
+pcivme.DeviceDesc = "pcivme Device"
+pcivme.SVCDESC = "pcivme Service"
Index: wiener_pcivme/Win7Release/pcivme.sys
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win7Release/pcivme.sys
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win7Release/pcivme.pdb
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win7Release/pcivme.pdb
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win7Release/pcivme.inf
===================================================================
--- wiener_pcivme/Win7Release/pcivme.inf (nonexistent)
+++ wiener_pcivme/Win7Release/pcivme.inf (revision 178)
@@ -0,0 +1,97 @@
+;
+; pcivme.inf
+;
+
+[Version]
+Signature="$WINDOWS NT$"
+Provider = %ManufacturerName%
+Class = %PCIVME_class_name%
+ClassGUID = {c4ad1dfa-3e35-4659-bf2b-c83cda6833e1}
+DriverVer=02/10/2014,10.11.46.519
+
+CatalogFile=pcivme.cat
+;DriverVer= ; TODO: set DriverVer in stampinf property pages
+
+[DestinationDirs]
+DefaultDestDir = 12
+
+; ================= Class section =====================
+
+[ClassInstall32]
+Addreg=SampleClassReg
+
+[SampleClassReg]
+HKR,,,0,%ClassName%
+HKR,,Icon,,-5
+
+[SourceDisksNames]
+1 = %DiskName%,,,""
+
+[SourceDisksFiles]
+pcivme.sys = 1,,
+
+;*****************************************
+; Install Section
+;*****************************************
+
+[Manufacturer]
+%ManufacturerName%=Standard,NTx86
+
+[Standard.NTx86]
+;%pcivme.DeviceDesc%=pcivme_Device, Root\pcivme ; TODO: edit hw-id
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050&REV_01
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050&REV_02
+
+[pcivme_Device.NT]
+CopyFiles=Drivers_Dir
+
+[Drivers_Dir]
+pcivme.sys
+
+;-------------- Service installation
+[pcivme_Device.NT.Services]
+AddService = pcivme,%SPSVCINST_ASSOCSERVICE%, pcivme_Service_Inst
+
+; -------------- pcivme driver install sections
+[pcivme_Service_Inst]
+DisplayName = %pcivme.SVCDESC%
+ServiceType = 1 ; SERVICE_KERNEL_DRIVER
+StartType = 3 ; SERVICE_DEMAND_START
+ErrorControl = 0 ; SERVICE_ERROR_IGNORE
+ServiceBinary = %12%\pcivme.sys
+LoadOrderGroup = Extended Base
+
+;
+;--- pcivme_Device Coinstaller installation ------
+;
+
+[DestinationDirs]
+pcivme_Device_CoInstaller_CopyFiles = 11
+
+[pcivme_Device.NT.CoInstallers]
+AddReg=pcivme_Device_CoInstaller_AddReg
+CopyFiles=pcivme_Device_CoInstaller_CopyFiles
+
+[pcivme_Device_CoInstaller_AddReg]
+HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller"
+
+[pcivme_Device_CoInstaller_CopyFiles]
+WdfCoInstaller01011.dll
+
+[SourceDisksFiles]
+WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames
+
+[pcivme_Device.NT.Wdf]
+KmdfService = pcivme, pcivme_wdfsect
+[pcivme_wdfsect]
+KmdfLibraryVersion = 1.11
+
+[Strings]
+SPSVCINST_ASSOCSERVICE= 0x00000002
+ManufacturerName="ARW Elektronik, Germany" ; TODO: add ManufacturerName
+ClassName="ARW BUS Interfaces" ; TODO: edit ClassName
+DiskName = "pcivme Installation Disk"
+pcivme.DeviceDesc = "pcivme Device"
+pcivme.SVCDESC = "pcivme Service"
Index: wiener_pcivme/Win8Release/pcivme Package/pcivme.sys
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win8Release/pcivme Package/pcivme.sys
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win8Release/pcivme Package/pcivme.cat
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win8Release/pcivme Package/pcivme.cat
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win8Release/pcivme Package/WdfCoinstaller01011.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win8Release/pcivme Package/WdfCoinstaller01011.dll
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win8Release/pcivme Package/pcivme.inf
===================================================================
--- wiener_pcivme/Win8Release/pcivme Package/pcivme.inf (nonexistent)
+++ wiener_pcivme/Win8Release/pcivme Package/pcivme.inf (revision 178)
@@ -0,0 +1,97 @@
+;
+; pcivme.inf
+;
+
+[Version]
+Signature="$WINDOWS NT$"
+Provider = %ManufacturerName%
+Class = %PCIVME_class_name%
+ClassGUID = {c4ad1dfa-3e35-4659-bf2b-c83cda6833e1}
+DriverVer=02/10/2014,10.11.44.387
+
+CatalogFile=pcivme.cat
+;DriverVer= ; TODO: set DriverVer in stampinf property pages
+
+[DestinationDirs]
+DefaultDestDir = 12
+
+; ================= Class section =====================
+
+[ClassInstall32]
+Addreg=SampleClassReg
+
+[SampleClassReg]
+HKR,,,0,%ClassName%
+HKR,,Icon,,-5
+
+[SourceDisksNames]
+1 = %DiskName%,,,""
+
+[SourceDisksFiles]
+pcivme.sys = 1,,
+
+;*****************************************
+; Install Section
+;*****************************************
+
+[Manufacturer]
+%ManufacturerName%=Standard,NTx86
+
+[Standard.NTx86]
+;%pcivme.DeviceDesc%=pcivme_Device, Root\pcivme ; TODO: edit hw-id
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050&REV_01
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050&REV_02
+
+[pcivme_Device.NT]
+CopyFiles=Drivers_Dir
+
+[Drivers_Dir]
+pcivme.sys
+
+;-------------- Service installation
+[pcivme_Device.NT.Services]
+AddService = pcivme,%SPSVCINST_ASSOCSERVICE%, pcivme_Service_Inst
+
+; -------------- pcivme driver install sections
+[pcivme_Service_Inst]
+DisplayName = %pcivme.SVCDESC%
+ServiceType = 1 ; SERVICE_KERNEL_DRIVER
+StartType = 3 ; SERVICE_DEMAND_START
+ErrorControl = 0 ; SERVICE_ERROR_IGNORE
+ServiceBinary = %12%\pcivme.sys
+LoadOrderGroup = Extended Base
+
+;
+;--- pcivme_Device Coinstaller installation ------
+;
+
+[DestinationDirs]
+pcivme_Device_CoInstaller_CopyFiles = 11
+
+[pcivme_Device.NT.CoInstallers]
+AddReg=pcivme_Device_CoInstaller_AddReg
+CopyFiles=pcivme_Device_CoInstaller_CopyFiles
+
+[pcivme_Device_CoInstaller_AddReg]
+HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller"
+
+[pcivme_Device_CoInstaller_CopyFiles]
+WdfCoInstaller01011.dll
+
+[SourceDisksFiles]
+WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames
+
+[pcivme_Device.NT.Wdf]
+KmdfService = pcivme, pcivme_wdfsect
+[pcivme_wdfsect]
+KmdfLibraryVersion = 1.11
+
+[Strings]
+SPSVCINST_ASSOCSERVICE= 0x00000002
+ManufacturerName="ARW Elektronik, Germany" ; TODO: add ManufacturerName
+ClassName="ARW BUS Interfaces" ; TODO: edit ClassName
+DiskName = "pcivme Installation Disk"
+pcivme.DeviceDesc = "pcivme Device"
+pcivme.SVCDESC = "pcivme Service"
Index: wiener_pcivme/Win8Release/pcivme.sys
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win8Release/pcivme.sys
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win8Release/pcivme.pdb
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win8Release/pcivme.pdb
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win8Release/pcivme.inf
===================================================================
--- wiener_pcivme/Win8Release/pcivme.inf (nonexistent)
+++ wiener_pcivme/Win8Release/pcivme.inf (revision 178)
@@ -0,0 +1,97 @@
+;
+; pcivme.inf
+;
+
+[Version]
+Signature="$WINDOWS NT$"
+Provider = %ManufacturerName%
+Class = %PCIVME_class_name%
+ClassGUID = {c4ad1dfa-3e35-4659-bf2b-c83cda6833e1}
+DriverVer=02/10/2014,10.11.44.387
+
+CatalogFile=pcivme.cat
+;DriverVer= ; TODO: set DriverVer in stampinf property pages
+
+[DestinationDirs]
+DefaultDestDir = 12
+
+; ================= Class section =====================
+
+[ClassInstall32]
+Addreg=SampleClassReg
+
+[SampleClassReg]
+HKR,,,0,%ClassName%
+HKR,,Icon,,-5
+
+[SourceDisksNames]
+1 = %DiskName%,,,""
+
+[SourceDisksFiles]
+pcivme.sys = 1,,
+
+;*****************************************
+; Install Section
+;*****************************************
+
+[Manufacturer]
+%ManufacturerName%=Standard,NTx86
+
+[Standard.NTx86]
+;%pcivme.DeviceDesc%=pcivme_Device, Root\pcivme ; TODO: edit hw-id
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050&REV_01
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050&REV_02
+
+[pcivme_Device.NT]
+CopyFiles=Drivers_Dir
+
+[Drivers_Dir]
+pcivme.sys
+
+;-------------- Service installation
+[pcivme_Device.NT.Services]
+AddService = pcivme,%SPSVCINST_ASSOCSERVICE%, pcivme_Service_Inst
+
+; -------------- pcivme driver install sections
+[pcivme_Service_Inst]
+DisplayName = %pcivme.SVCDESC%
+ServiceType = 1 ; SERVICE_KERNEL_DRIVER
+StartType = 3 ; SERVICE_DEMAND_START
+ErrorControl = 0 ; SERVICE_ERROR_IGNORE
+ServiceBinary = %12%\pcivme.sys
+LoadOrderGroup = Extended Base
+
+;
+;--- pcivme_Device Coinstaller installation ------
+;
+
+[DestinationDirs]
+pcivme_Device_CoInstaller_CopyFiles = 11
+
+[pcivme_Device.NT.CoInstallers]
+AddReg=pcivme_Device_CoInstaller_AddReg
+CopyFiles=pcivme_Device_CoInstaller_CopyFiles
+
+[pcivme_Device_CoInstaller_AddReg]
+HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller"
+
+[pcivme_Device_CoInstaller_CopyFiles]
+WdfCoInstaller01011.dll
+
+[SourceDisksFiles]
+WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames
+
+[pcivme_Device.NT.Wdf]
+KmdfService = pcivme, pcivme_wdfsect
+[pcivme_wdfsect]
+KmdfLibraryVersion = 1.11
+
+[Strings]
+SPSVCINST_ASSOCSERVICE= 0x00000002
+ManufacturerName="ARW Elektronik, Germany" ; TODO: add ManufacturerName
+ClassName="ARW BUS Interfaces" ; TODO: edit ClassName
+DiskName = "pcivme Installation Disk"
+pcivme.DeviceDesc = "pcivme Device"
+pcivme.SVCDESC = "pcivme Service"
Index: wiener_pcivme/Win7Debug/pcivme Package/pcivme.sys
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win7Debug/pcivme Package/pcivme.sys
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win7Debug/pcivme Package/pcivme.cat
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win7Debug/pcivme Package/pcivme.cat
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win7Debug/pcivme Package/WdfCoinstaller01011.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win7Debug/pcivme Package/WdfCoinstaller01011.dll
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win7Debug/pcivme Package/pcivme.inf
===================================================================
--- wiener_pcivme/Win7Debug/pcivme Package/pcivme.inf (nonexistent)
+++ wiener_pcivme/Win7Debug/pcivme Package/pcivme.inf (revision 178)
@@ -0,0 +1,97 @@
+;
+; pcivme.inf
+;
+
+[Version]
+Signature="$WINDOWS NT$"
+Provider = %ManufacturerName%
+Class = %PCIVME_class_name%
+ClassGUID = {c4ad1dfa-3e35-4659-bf2b-c83cda6833e1}
+DriverVer=02/10/2014,10.11.47.332
+
+CatalogFile=pcivme.cat
+;DriverVer= ; TODO: set DriverVer in stampinf property pages
+
+[DestinationDirs]
+DefaultDestDir = 12
+
+; ================= Class section =====================
+
+[ClassInstall32]
+Addreg=SampleClassReg
+
+[SampleClassReg]
+HKR,,,0,%ClassName%
+HKR,,Icon,,-5
+
+[SourceDisksNames]
+1 = %DiskName%,,,""
+
+[SourceDisksFiles]
+pcivme.sys = 1,,
+
+;*****************************************
+; Install Section
+;*****************************************
+
+[Manufacturer]
+%ManufacturerName%=Standard,NTx86
+
+[Standard.NTx86]
+;%pcivme.DeviceDesc%=pcivme_Device, Root\pcivme ; TODO: edit hw-id
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050&REV_01
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050&REV_02
+
+[pcivme_Device.NT]
+CopyFiles=Drivers_Dir
+
+[Drivers_Dir]
+pcivme.sys
+
+;-------------- Service installation
+[pcivme_Device.NT.Services]
+AddService = pcivme,%SPSVCINST_ASSOCSERVICE%, pcivme_Service_Inst
+
+; -------------- pcivme driver install sections
+[pcivme_Service_Inst]
+DisplayName = %pcivme.SVCDESC%
+ServiceType = 1 ; SERVICE_KERNEL_DRIVER
+StartType = 3 ; SERVICE_DEMAND_START
+ErrorControl = 0 ; SERVICE_ERROR_IGNORE
+ServiceBinary = %12%\pcivme.sys
+LoadOrderGroup = Extended Base
+
+;
+;--- pcivme_Device Coinstaller installation ------
+;
+
+[DestinationDirs]
+pcivme_Device_CoInstaller_CopyFiles = 11
+
+[pcivme_Device.NT.CoInstallers]
+AddReg=pcivme_Device_CoInstaller_AddReg
+CopyFiles=pcivme_Device_CoInstaller_CopyFiles
+
+[pcivme_Device_CoInstaller_AddReg]
+HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller"
+
+[pcivme_Device_CoInstaller_CopyFiles]
+WdfCoInstaller01011.dll
+
+[SourceDisksFiles]
+WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames
+
+[pcivme_Device.NT.Wdf]
+KmdfService = pcivme, pcivme_wdfsect
+[pcivme_wdfsect]
+KmdfLibraryVersion = 1.11
+
+[Strings]
+SPSVCINST_ASSOCSERVICE= 0x00000002
+ManufacturerName="ARW Elektronik, Germany" ; TODO: add ManufacturerName
+ClassName="ARW BUS Interfaces" ; TODO: edit ClassName
+DiskName = "pcivme Installation Disk"
+pcivme.DeviceDesc = "pcivme Device"
+pcivme.SVCDESC = "pcivme Service"
Index: wiener_pcivme/Win7Debug/pcivme.sys
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win7Debug/pcivme.sys
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win7Debug/pcivmePackage.cer
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win7Debug/pcivmePackage.cer
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win7Debug/pcivme.pdb
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win7Debug/pcivme.pdb
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win7Debug/pcivme.cer
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win7Debug/pcivme.cer
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win7Debug/pcivme.inf
===================================================================
--- wiener_pcivme/Win7Debug/pcivme.inf (nonexistent)
+++ wiener_pcivme/Win7Debug/pcivme.inf (revision 178)
@@ -0,0 +1,97 @@
+;
+; pcivme.inf
+;
+
+[Version]
+Signature="$WINDOWS NT$"
+Provider = %ManufacturerName%
+Class = %PCIVME_class_name%
+ClassGUID = {c4ad1dfa-3e35-4659-bf2b-c83cda6833e1}
+DriverVer=02/10/2014,10.11.47.332
+
+CatalogFile=pcivme.cat
+;DriverVer= ; TODO: set DriverVer in stampinf property pages
+
+[DestinationDirs]
+DefaultDestDir = 12
+
+; ================= Class section =====================
+
+[ClassInstall32]
+Addreg=SampleClassReg
+
+[SampleClassReg]
+HKR,,,0,%ClassName%
+HKR,,Icon,,-5
+
+[SourceDisksNames]
+1 = %DiskName%,,,""
+
+[SourceDisksFiles]
+pcivme.sys = 1,,
+
+;*****************************************
+; Install Section
+;*****************************************
+
+[Manufacturer]
+%ManufacturerName%=Standard,NTx86
+
+[Standard.NTx86]
+;%pcivme.DeviceDesc%=pcivme_Device, Root\pcivme ; TODO: edit hw-id
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050&REV_01
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050&REV_02
+
+[pcivme_Device.NT]
+CopyFiles=Drivers_Dir
+
+[Drivers_Dir]
+pcivme.sys
+
+;-------------- Service installation
+[pcivme_Device.NT.Services]
+AddService = pcivme,%SPSVCINST_ASSOCSERVICE%, pcivme_Service_Inst
+
+; -------------- pcivme driver install sections
+[pcivme_Service_Inst]
+DisplayName = %pcivme.SVCDESC%
+ServiceType = 1 ; SERVICE_KERNEL_DRIVER
+StartType = 3 ; SERVICE_DEMAND_START
+ErrorControl = 0 ; SERVICE_ERROR_IGNORE
+ServiceBinary = %12%\pcivme.sys
+LoadOrderGroup = Extended Base
+
+;
+;--- pcivme_Device Coinstaller installation ------
+;
+
+[DestinationDirs]
+pcivme_Device_CoInstaller_CopyFiles = 11
+
+[pcivme_Device.NT.CoInstallers]
+AddReg=pcivme_Device_CoInstaller_AddReg
+CopyFiles=pcivme_Device_CoInstaller_CopyFiles
+
+[pcivme_Device_CoInstaller_AddReg]
+HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller"
+
+[pcivme_Device_CoInstaller_CopyFiles]
+WdfCoInstaller01011.dll
+
+[SourceDisksFiles]
+WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames
+
+[pcivme_Device.NT.Wdf]
+KmdfService = pcivme, pcivme_wdfsect
+[pcivme_wdfsect]
+KmdfLibraryVersion = 1.11
+
+[Strings]
+SPSVCINST_ASSOCSERVICE= 0x00000002
+ManufacturerName="ARW Elektronik, Germany" ; TODO: add ManufacturerName
+ClassName="ARW BUS Interfaces" ; TODO: edit ClassName
+DiskName = "pcivme Installation Disk"
+pcivme.DeviceDesc = "pcivme Device"
+pcivme.SVCDESC = "pcivme Service"
Index: wiener_pcivme/Win8Debug/pcivme Package/pcivme.sys
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win8Debug/pcivme Package/pcivme.sys
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win8Debug/pcivme Package/pcivme.cat
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win8Debug/pcivme Package/pcivme.cat
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win8Debug/pcivme Package/WdfCoinstaller01011.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win8Debug/pcivme Package/WdfCoinstaller01011.dll
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win8Debug/pcivme Package/pcivme.inf
===================================================================
--- wiener_pcivme/Win8Debug/pcivme Package/pcivme.inf (nonexistent)
+++ wiener_pcivme/Win8Debug/pcivme Package/pcivme.inf (revision 178)
@@ -0,0 +1,97 @@
+;
+; pcivme.inf
+;
+
+[Version]
+Signature="$WINDOWS NT$"
+Provider = %ManufacturerName%
+Class = %PCIVME_class_name%
+ClassGUID = {c4ad1dfa-3e35-4659-bf2b-c83cda6833e1}
+DriverVer=02/10/2014,10.11.45.408
+
+CatalogFile=pcivme.cat
+;DriverVer= ; TODO: set DriverVer in stampinf property pages
+
+[DestinationDirs]
+DefaultDestDir = 12
+
+; ================= Class section =====================
+
+[ClassInstall32]
+Addreg=SampleClassReg
+
+[SampleClassReg]
+HKR,,,0,%ClassName%
+HKR,,Icon,,-5
+
+[SourceDisksNames]
+1 = %DiskName%,,,""
+
+[SourceDisksFiles]
+pcivme.sys = 1,,
+
+;*****************************************
+; Install Section
+;*****************************************
+
+[Manufacturer]
+%ManufacturerName%=Standard,NTx86
+
+[Standard.NTx86]
+;%pcivme.DeviceDesc%=pcivme_Device, Root\pcivme ; TODO: edit hw-id
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050&REV_01
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050&REV_02
+
+[pcivme_Device.NT]
+CopyFiles=Drivers_Dir
+
+[Drivers_Dir]
+pcivme.sys
+
+;-------------- Service installation
+[pcivme_Device.NT.Services]
+AddService = pcivme,%SPSVCINST_ASSOCSERVICE%, pcivme_Service_Inst
+
+; -------------- pcivme driver install sections
+[pcivme_Service_Inst]
+DisplayName = %pcivme.SVCDESC%
+ServiceType = 1 ; SERVICE_KERNEL_DRIVER
+StartType = 3 ; SERVICE_DEMAND_START
+ErrorControl = 0 ; SERVICE_ERROR_IGNORE
+ServiceBinary = %12%\pcivme.sys
+LoadOrderGroup = Extended Base
+
+;
+;--- pcivme_Device Coinstaller installation ------
+;
+
+[DestinationDirs]
+pcivme_Device_CoInstaller_CopyFiles = 11
+
+[pcivme_Device.NT.CoInstallers]
+AddReg=pcivme_Device_CoInstaller_AddReg
+CopyFiles=pcivme_Device_CoInstaller_CopyFiles
+
+[pcivme_Device_CoInstaller_AddReg]
+HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller"
+
+[pcivme_Device_CoInstaller_CopyFiles]
+WdfCoInstaller01011.dll
+
+[SourceDisksFiles]
+WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames
+
+[pcivme_Device.NT.Wdf]
+KmdfService = pcivme, pcivme_wdfsect
+[pcivme_wdfsect]
+KmdfLibraryVersion = 1.11
+
+[Strings]
+SPSVCINST_ASSOCSERVICE= 0x00000002
+ManufacturerName="ARW Elektronik, Germany" ; TODO: add ManufacturerName
+ClassName="ARW BUS Interfaces" ; TODO: edit ClassName
+DiskName = "pcivme Installation Disk"
+pcivme.DeviceDesc = "pcivme Device"
+pcivme.SVCDESC = "pcivme Service"
Index: wiener_pcivme/Win8Debug/pcivme.sys
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win8Debug/pcivme.sys
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win8Debug/pcivmePackage.cer
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win8Debug/pcivmePackage.cer
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win8Debug/pcivme.pdb
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win8Debug/pcivme.pdb
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win8Debug/pcivme.cer
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/wiener_pcivme/Win8Debug/pcivme.cer
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: wiener_pcivme/Win8Debug/pcivme.inf
===================================================================
--- wiener_pcivme/Win8Debug/pcivme.inf (nonexistent)
+++ wiener_pcivme/Win8Debug/pcivme.inf (revision 178)
@@ -0,0 +1,97 @@
+;
+; pcivme.inf
+;
+
+[Version]
+Signature="$WINDOWS NT$"
+Provider = %ManufacturerName%
+Class = %PCIVME_class_name%
+ClassGUID = {c4ad1dfa-3e35-4659-bf2b-c83cda6833e1}
+DriverVer=02/10/2014,10.11.45.408
+
+CatalogFile=pcivme.cat
+;DriverVer= ; TODO: set DriverVer in stampinf property pages
+
+[DestinationDirs]
+DefaultDestDir = 12
+
+; ================= Class section =====================
+
+[ClassInstall32]
+Addreg=SampleClassReg
+
+[SampleClassReg]
+HKR,,,0,%ClassName%
+HKR,,Icon,,-5
+
+[SourceDisksNames]
+1 = %DiskName%,,,""
+
+[SourceDisksFiles]
+pcivme.sys = 1,,
+
+;*****************************************
+; Install Section
+;*****************************************
+
+[Manufacturer]
+%ManufacturerName%=Standard,NTx86
+
+[Standard.NTx86]
+;%pcivme.DeviceDesc%=pcivme_Device, Root\pcivme ; TODO: edit hw-id
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050&REV_01
+%pcivme.DeviceDesc%=pcivme_Device, PCI\VEN_10B5&DEV_9050&SUBSYS_11679050&REV_02
+
+[pcivme_Device.NT]
+CopyFiles=Drivers_Dir
+
+[Drivers_Dir]
+pcivme.sys
+
+;-------------- Service installation
+[pcivme_Device.NT.Services]
+AddService = pcivme,%SPSVCINST_ASSOCSERVICE%, pcivme_Service_Inst
+
+; -------------- pcivme driver install sections
+[pcivme_Service_Inst]
+DisplayName = %pcivme.SVCDESC%
+ServiceType = 1 ; SERVICE_KERNEL_DRIVER
+StartType = 3 ; SERVICE_DEMAND_START
+ErrorControl = 0 ; SERVICE_ERROR_IGNORE
+ServiceBinary = %12%\pcivme.sys
+LoadOrderGroup = Extended Base
+
+;
+;--- pcivme_Device Coinstaller installation ------
+;
+
+[DestinationDirs]
+pcivme_Device_CoInstaller_CopyFiles = 11
+
+[pcivme_Device.NT.CoInstallers]
+AddReg=pcivme_Device_CoInstaller_AddReg
+CopyFiles=pcivme_Device_CoInstaller_CopyFiles
+
+[pcivme_Device_CoInstaller_AddReg]
+HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller"
+
+[pcivme_Device_CoInstaller_CopyFiles]
+WdfCoInstaller01011.dll
+
+[SourceDisksFiles]
+WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames
+
+[pcivme_Device.NT.Wdf]
+KmdfService = pcivme, pcivme_wdfsect
+[pcivme_wdfsect]
+KmdfLibraryVersion = 1.11
+
+[Strings]
+SPSVCINST_ASSOCSERVICE= 0x00000002
+ManufacturerName="ARW Elektronik, Germany" ; TODO: add ManufacturerName
+ClassName="ARW BUS Interfaces" ; TODO: edit ClassName
+DiskName = "pcivme Installation Disk"
+pcivme.DeviceDesc = "pcivme Device"
+pcivme.SVCDESC = "pcivme Service"
Index: wiener_pcivme/pcivme.sln
===================================================================
--- wiener_pcivme/pcivme.sln (nonexistent)
+++ wiener_pcivme/pcivme.sln (revision 178)
@@ -0,0 +1,105 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.30110.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pcivme", "pcivme\pcivme.vcxproj", "{2AC3560D-0575-4214-A7AA-04F7A8DE84BE}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pcivme Package", "pcivme Package\pcivme Package.vcxproj", "{48C072A6-A36E-4090-B208-F0084AC06272}"
+ ProjectSection(ProjectDependencies) = postProject
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE} = {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Win7 Debug|Win32 = Win7 Debug|Win32
+ Win7 Debug|x64 = Win7 Debug|x64
+ Win7 Release|Win32 = Win7 Release|Win32
+ Win7 Release|x64 = Win7 Release|x64
+ Win8 Debug|Win32 = Win8 Debug|Win32
+ Win8 Debug|x64 = Win8 Debug|x64
+ Win8 Release|Win32 = Win8 Release|Win32
+ Win8 Release|x64 = Win8 Release|x64
+ Win8.1 Debug|Win32 = Win8.1 Debug|Win32
+ Win8.1 Debug|x64 = Win8.1 Debug|x64
+ Win8.1 Release|Win32 = Win8.1 Release|Win32
+ Win8.1 Release|x64 = Win8.1 Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win7 Debug|Win32.ActiveCfg = Win7 Debug|Win32
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win7 Debug|Win32.Build.0 = Win7 Debug|Win32
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win7 Debug|Win32.Deploy.0 = Win7 Debug|Win32
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win7 Debug|x64.ActiveCfg = Win7 Debug|x64
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win7 Debug|x64.Build.0 = Win7 Debug|x64
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win7 Debug|x64.Deploy.0 = Win7 Debug|x64
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win7 Release|Win32.ActiveCfg = Win7 Release|Win32
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win7 Release|Win32.Build.0 = Win7 Release|Win32
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win7 Release|Win32.Deploy.0 = Win7 Release|Win32
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win7 Release|x64.ActiveCfg = Win7 Release|x64
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win7 Release|x64.Build.0 = Win7 Release|x64
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win7 Release|x64.Deploy.0 = Win7 Release|x64
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win8 Debug|Win32.ActiveCfg = Win8 Debug|Win32
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win8 Debug|Win32.Build.0 = Win8 Debug|Win32
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win8 Debug|Win32.Deploy.0 = Win8 Debug|Win32
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win8 Debug|x64.ActiveCfg = Win8 Debug|x64
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win8 Debug|x64.Build.0 = Win8 Debug|x64
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win8 Debug|x64.Deploy.0 = Win8 Debug|x64
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win8 Release|Win32.ActiveCfg = Win8 Release|Win32
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win8 Release|Win32.Build.0 = Win8 Release|Win32
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win8 Release|Win32.Deploy.0 = Win8 Release|Win32
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win8 Release|x64.ActiveCfg = Win8 Release|x64
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win8 Release|x64.Build.0 = Win8 Release|x64
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win8 Release|x64.Deploy.0 = Win8 Release|x64
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win8.1 Debug|Win32.ActiveCfg = Win8.1 Debug|Win32
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win8.1 Debug|Win32.Build.0 = Win8.1 Debug|Win32
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win8.1 Debug|Win32.Deploy.0 = Win8.1 Debug|Win32
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win8.1 Debug|x64.ActiveCfg = Win8.1 Debug|x64
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win8.1 Debug|x64.Build.0 = Win8.1 Debug|x64
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win8.1 Debug|x64.Deploy.0 = Win8.1 Debug|x64
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win8.1 Release|Win32.ActiveCfg = Win8.1 Release|Win32
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win8.1 Release|Win32.Build.0 = Win8.1 Release|Win32
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win8.1 Release|Win32.Deploy.0 = Win8.1 Release|Win32
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win8.1 Release|x64.ActiveCfg = Win8.1 Release|x64
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win8.1 Release|x64.Build.0 = Win8.1 Release|x64
+ {2AC3560D-0575-4214-A7AA-04F7A8DE84BE}.Win8.1 Release|x64.Deploy.0 = Win8.1 Release|x64
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win7 Debug|Win32.ActiveCfg = Win7 Debug|Win32
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win7 Debug|Win32.Build.0 = Win7 Debug|Win32
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win7 Debug|Win32.Deploy.0 = Win7 Debug|Win32
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win7 Debug|x64.ActiveCfg = Win7 Debug|x64
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win7 Debug|x64.Build.0 = Win7 Debug|x64
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win7 Debug|x64.Deploy.0 = Win7 Debug|x64
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win7 Release|Win32.ActiveCfg = Win7 Release|Win32
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win7 Release|Win32.Build.0 = Win7 Release|Win32
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win7 Release|Win32.Deploy.0 = Win7 Release|Win32
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win7 Release|x64.ActiveCfg = Win7 Release|x64
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win7 Release|x64.Build.0 = Win7 Release|x64
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win7 Release|x64.Deploy.0 = Win7 Release|x64
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win8 Debug|Win32.ActiveCfg = Win8 Debug|Win32
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win8 Debug|Win32.Build.0 = Win8 Debug|Win32
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win8 Debug|Win32.Deploy.0 = Win8 Debug|Win32
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win8 Debug|x64.ActiveCfg = Win8 Debug|x64
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win8 Debug|x64.Build.0 = Win8 Debug|x64
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win8 Debug|x64.Deploy.0 = Win8 Debug|x64
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win8 Release|Win32.ActiveCfg = Win8 Release|Win32
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win8 Release|Win32.Build.0 = Win8 Release|Win32
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win8 Release|Win32.Deploy.0 = Win8 Release|Win32
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win8 Release|x64.ActiveCfg = Win8 Release|x64
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win8 Release|x64.Build.0 = Win8 Release|x64
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win8 Release|x64.Deploy.0 = Win8 Release|x64
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win8.1 Debug|Win32.ActiveCfg = Win8.1 Debug|Win32
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win8.1 Debug|Win32.Build.0 = Win8.1 Debug|Win32
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win8.1 Debug|Win32.Deploy.0 = Win8.1 Debug|Win32
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win8.1 Debug|x64.ActiveCfg = Win8.1 Debug|x64
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win8.1 Debug|x64.Build.0 = Win8.1 Debug|x64
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win8.1 Debug|x64.Deploy.0 = Win8.1 Debug|x64
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win8.1 Release|Win32.ActiveCfg = Win8.1 Release|Win32
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win8.1 Release|Win32.Build.0 = Win8.1 Release|Win32
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win8.1 Release|Win32.Deploy.0 = Win8.1 Release|Win32
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win8.1 Release|x64.ActiveCfg = Win8.1 Release|x64
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win8.1 Release|x64.Build.0 = Win8.1 Release|x64
+ {48C072A6-A36E-4090-B208-F0084AC06272}.Win8.1 Release|x64.Deploy.0 = Win8.1 Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
Index: wiener_pcivme
===================================================================
--- wiener_pcivme (nonexistent)
+++ wiener_pcivme (revision 178)
/wiener_pcivme
Property changes:
Added: svn:global-ignores
## -0,0 +1,5 ##
+*.sdf
+*.suo
+Win7Debug
+Win8Debug
+Win8Release
Added: svn:ignore
## -0,0 +1,2 ##
+Win7Release
+Win8Debug