/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 |