├── .gitattributes ├── .gitignore ├── Makefile ├── Sources ├── Sources.props ├── install.cmd ├── mkcab.cmd ├── win2k ├── zero.inf └── zero_dummy.inf ├── win7 ├── zero.inf └── zero_dummy.inf ├── winnet ├── zero.inf └── zero_dummy.inf ├── zero.7zsfxcfg ├── zero.cpp ├── zero.inf ├── zero.rc ├── zero.sln ├── zero.vcxproj ├── zero.vcxproj.filters └── zero_dummy.inf /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Mono auto generated files 17 | mono_crash.* 18 | 19 | # Build results 20 | [Dd]ebug/ 21 | [Dd]ebugPublic/ 22 | [Rr]elease/ 23 | [Rr]eleases/ 24 | x64/ 25 | x86/ 26 | [Aa][Rr][Mm]/ 27 | [Aa][Rr][Mm]64/ 28 | bld/ 29 | [Bb]in/ 30 | [Oo]bj/ 31 | [Ll]og/ 32 | [Ll]ogs/ 33 | 34 | # Visual Studio 2015/2017 cache/options directory 35 | .vs/ 36 | # Uncomment if you have tasks that create the project's static files in wwwroot 37 | #wwwroot/ 38 | 39 | # Visual Studio 2017 auto generated files 40 | Generated\ Files/ 41 | 42 | # MSTest test Results 43 | [Tt]est[Rr]esult*/ 44 | [Bb]uild[Ll]og.* 45 | 46 | # NUnit 47 | *.VisualState.xml 48 | TestResult.xml 49 | nunit-*.xml 50 | 51 | # Build Results of an ATL Project 52 | [Dd]ebugPS/ 53 | [Rr]eleasePS/ 54 | dlldata.c 55 | 56 | # Benchmark Results 57 | BenchmarkDotNet.Artifacts/ 58 | 59 | # .NET Core 60 | project.lock.json 61 | project.fragment.lock.json 62 | artifacts/ 63 | 64 | # StyleCop 65 | StyleCopReport.xml 66 | 67 | # Files built by Visual Studio 68 | *_i.c 69 | *_p.c 70 | *_h.h 71 | *.ilk 72 | *.meta 73 | *.obj 74 | *.iobj 75 | *.pch 76 | *.pdb 77 | *.ipdb 78 | *.pgc 79 | *.pgd 80 | *.rsp 81 | *.sbr 82 | *.tlb 83 | *.tli 84 | *.tlh 85 | *.tmp 86 | *.tmp_proj 87 | *_wpftmp.csproj 88 | *.log 89 | *.vspscc 90 | *.vssscc 91 | .builds 92 | *.pidb 93 | *.svclog 94 | *.scc 95 | 96 | # Chutzpah Test files 97 | _Chutzpah* 98 | 99 | # Visual C++ cache files 100 | ipch/ 101 | *.aps 102 | *.ncb 103 | *.opendb 104 | *.opensdf 105 | *.sdf 106 | *.cachefile 107 | *.VC.db 108 | *.VC.VC.opendb 109 | 110 | # Visual Studio profiler 111 | *.psess 112 | *.vsp 113 | *.vspx 114 | *.sap 115 | 116 | # Visual Studio Trace Files 117 | *.e2e 118 | 119 | # TFS 2012 Local Workspace 120 | $tf/ 121 | 122 | # Guidance Automation Toolkit 123 | *.gpState 124 | 125 | # ReSharper is a .NET coding add-in 126 | _ReSharper*/ 127 | *.[Rr]e[Ss]harper 128 | *.DotSettings.user 129 | 130 | # JustCode is a .NET coding add-in 131 | .JustCode 132 | 133 | # TeamCity is a build add-in 134 | _TeamCity* 135 | 136 | # DotCover is a Code Coverage Tool 137 | *.dotCover 138 | 139 | # AxoCover is a Code Coverage Tool 140 | .axoCover/* 141 | !.axoCover/settings.json 142 | 143 | # Visual Studio code coverage results 144 | *.coverage 145 | *.coveragexml 146 | 147 | # NCrunch 148 | _NCrunch_* 149 | .*crunch*.local.xml 150 | nCrunchTemp_* 151 | 152 | # MightyMoose 153 | *.mm.* 154 | AutoTest.Net/ 155 | 156 | # Web workbench (sass) 157 | .sass-cache/ 158 | 159 | # Installshield output folder 160 | [Ee]xpress/ 161 | 162 | # DocProject is a documentation generator add-in 163 | DocProject/buildhelp/ 164 | DocProject/Help/*.HxT 165 | DocProject/Help/*.HxC 166 | DocProject/Help/*.hhc 167 | DocProject/Help/*.hhk 168 | DocProject/Help/*.hhp 169 | DocProject/Help/Html2 170 | DocProject/Help/html 171 | 172 | # Click-Once directory 173 | publish/ 174 | 175 | # Publish Web Output 176 | *.[Pp]ublish.xml 177 | *.azurePubxml 178 | # Note: Comment the next line if you want to checkin your web deploy settings, 179 | # but database connection strings (with potential passwords) will be unencrypted 180 | *.pubxml 181 | *.publishproj 182 | 183 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 184 | # checkin your Azure Web App publish settings, but sensitive information contained 185 | # in these scripts will be unencrypted 186 | PublishScripts/ 187 | 188 | # NuGet Packages 189 | *.nupkg 190 | # NuGet Symbol Packages 191 | *.snupkg 192 | # The packages folder can be ignored because of Package Restore 193 | **/[Pp]ackages/* 194 | # except build/, which is used as an MSBuild target. 195 | !**/[Pp]ackages/build/ 196 | # Uncomment if necessary however generally it will be regenerated when needed 197 | #!**/[Pp]ackages/repositories.config 198 | # NuGet v3's project.json files produces more ignorable files 199 | *.nuget.props 200 | *.nuget.targets 201 | 202 | # Microsoft Azure Build Output 203 | csx/ 204 | *.build.csdef 205 | 206 | # Microsoft Azure Emulator 207 | ecf/ 208 | rcf/ 209 | 210 | # Windows Store app package directories and files 211 | AppPackages/ 212 | BundleArtifacts/ 213 | Package.StoreAssociation.xml 214 | _pkginfo.txt 215 | *.appx 216 | *.appxbundle 217 | *.appxupload 218 | 219 | # Visual Studio cache files 220 | # files ending in .cache can be ignored 221 | *.[Cc]ache 222 | # but keep track of directories ending in .cache 223 | !?*.[Cc]ache/ 224 | 225 | # Others 226 | ClientBin/ 227 | ~$* 228 | *~ 229 | *.dbmdl 230 | *.dbproj.schemaview 231 | *.jfm 232 | *.pfx 233 | *.publishsettings 234 | orleans.codegen.cs 235 | 236 | # Including strong name files can present a security risk 237 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 238 | #*.snk 239 | 240 | # Since there are multiple workflows, uncomment next line to ignore bower_components 241 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 242 | #bower_components/ 243 | 244 | # RIA/Silverlight projects 245 | Generated_Code/ 246 | 247 | # Backup & report files from converting an old project file 248 | # to a newer Visual Studio version. Backup files are not needed, 249 | # because we have git ;-) 250 | _UpgradeReport_Files/ 251 | Backup*/ 252 | UpgradeLog*.XML 253 | UpgradeLog*.htm 254 | ServiceFabricBackup/ 255 | *.rptproj.bak 256 | 257 | # SQL Server files 258 | *.mdf 259 | *.ldf 260 | *.ndf 261 | 262 | # Business Intelligence projects 263 | *.rdl.data 264 | *.bim.layout 265 | *.bim_*.settings 266 | *.rptproj.rsuser 267 | *- [Bb]ackup.rdl 268 | *- [Bb]ackup ([0-9]).rdl 269 | *- [Bb]ackup ([0-9][0-9]).rdl 270 | 271 | # Microsoft Fakes 272 | FakesAssemblies/ 273 | 274 | # GhostDoc plugin setting file 275 | *.GhostDoc.xml 276 | 277 | # Node.js Tools for Visual Studio 278 | .ntvs_analysis.dat 279 | node_modules/ 280 | 281 | # Visual Studio 6 build log 282 | *.plg 283 | 284 | # Visual Studio 6 workspace options file 285 | *.opt 286 | 287 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 288 | *.vbw 289 | 290 | # Visual Studio LightSwitch build output 291 | **/*.HTMLClient/GeneratedArtifacts 292 | **/*.DesktopClient/GeneratedArtifacts 293 | **/*.DesktopClient/ModelManifest.xml 294 | **/*.Server/GeneratedArtifacts 295 | **/*.Server/ModelManifest.xml 296 | _Pvt_Extensions 297 | 298 | # Paket dependency manager 299 | .paket/paket.exe 300 | paket-files/ 301 | 302 | # FAKE - F# Make 303 | .fake/ 304 | 305 | # CodeRush personal settings 306 | .cr/personal 307 | 308 | # Python Tools for Visual Studio (PTVS) 309 | __pycache__/ 310 | *.pyc 311 | 312 | # Cake - Uncomment if you are using it 313 | # tools/** 314 | # !tools/packages.config 315 | 316 | # Tabs Studio 317 | *.tss 318 | 319 | # Telerik's JustMock configuration file 320 | *.jmconfig 321 | 322 | # BizTalk build output 323 | *.btp.cs 324 | *.btm.cs 325 | *.odx.cs 326 | *.xsd.cs 327 | 328 | # OpenCover UI analysis results 329 | OpenCover/ 330 | 331 | # Azure Stream Analytics local run output 332 | ASALocalRun/ 333 | 334 | # MSBuild Binary and Structured Log 335 | *.binlog 336 | 337 | # NVidia Nsight GPU debugger configuration file 338 | *.nvuser 339 | 340 | # MFractors (Xamarin productivity tool) working folder 341 | .mfractor/ 342 | 343 | # Local History for Visual Studio 344 | .localhistory/ 345 | 346 | # BeatPulse healthcheck temp database 347 | healthchecksdb 348 | 349 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 350 | MigrationBackup/ 351 | 352 | # Ionide (cross platform F# VS Code tools) working folder 353 | .ionide/ 354 | *.sys 355 | *.zip 356 | *.cat 357 | cab/ 358 | *.dll 359 | *.exe 360 | *.mac 361 | *.bin 362 | upd*.cmd 363 | *.7z 364 | *.wrn 365 | *.sfx 366 | *.res 367 | obj*_*_* 368 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | !IF EXIST(Makefile.user) 2 | !INCLUDE Makefile.user 3 | !ENDIF 4 | 5 | BUILD_DEFAULT=-cegiw -nmake -i 6 | 7 | !IF EXIST($(NTMAKEENV)\makefile.def) 8 | !INCLUDE $(NTMAKEENV)\makefile.def 9 | !ENDIF 10 | 11 | zero.7z: win2k\i386\zero.sys win2k\zero.inf winnet\i386\zero.sys winnet\ia64\zero.sys winnet\amd64\zero.sys winnet\zero.inf win7\x86\zero.sys win7\ia64\zero.sys win7\x64\zero.sys win7\arm\zero.sys win7\arm64\zero.sys win7\zero.inf install.cmd run64.exe w32verc.exe Makefile 12 | 7z a zero.7z -m0=LZMA:a=2 win2k\i386\zero.sys win2k\zero.inf winnet\i386\zero.sys winnet\ia64\zero.sys winnet\amd64\zero.sys winnet\zero.inf win7\x86\zero.sys win7\ia64\zero.sys win7\x64\zero.sys win7\arm\zero.sys win7\arm64\zero.sys win7\zero.inf install.cmd run64.exe w32verc.exe 13 | -------------------------------------------------------------------------------- /Sources: -------------------------------------------------------------------------------- 1 | TARGETNAME=zero 2 | TARGETPATH=$(DDK_TARGET_OS) 3 | TARGETTYPE=DRIVER 4 | SOURCES=zero.c zero.rc 5 | MSC_WARNING_LEVEL=/W4 /WX /wd4201 /wd4100 6 | MSC_OPTIMIZATION=/Ox /GF 7 | 8 | TARGETLIBS=$(TARGETLIBS) $(DDK_LIB_PATH)\ksecdd.lib 9 | 10 | !IF "$(_BUILDARCH)" == "x86" 11 | 12 | BUFFER_OVERFLOW_CHECKS=0 13 | 14 | !ENDIF 15 | -------------------------------------------------------------------------------- /Sources.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | zero 5 | . 6 | DRIVER 7 | zero.c zero.rc 8 | /W4 /WX /wd4201 /wd4100 9 | /Ox /GF 10 | 11 | 12 | 13 | 14 | 0 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /install.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | "%SystemRoot%\system32\net.exe" stop zero > nul 2>&1 3 | echo Installing Zero And Random Device Driver... 4 | pushd "%~dp0" 5 | .\w32verc.exe 6 | if errorlevel 6000 ( 7 | "%SystemRoot%\system32\rundll32.exe" setupapi.dll,InstallHinfSection DefaultInstall 132 win7\zero.inf 8 | ) else if errorlevel 3790 ( 9 | "%SystemRoot%\system32\rundll32.exe" setupapi.dll,InstallHinfSection DefaultInstall 132 winnet\zero.inf 10 | ) else ( 11 | "%SystemRoot%\system32\rundll32.exe" setupapi.dll,InstallHinfSection DefaultInstall 132 win2k\zero.inf 12 | ) 13 | popd 14 | echo. 15 | echo Loading Zero And Random Device Driver... 16 | "%SystemRoot%\system32\net.exe" start zero > nul 2>&1 17 | if errorlevel 1 ( 18 | echo. 19 | echo Error installing/loading the driver. Check %SystemRoot%\setupapi.log for details. 20 | ) else ( 21 | echo. 22 | echo The Zero And Random Device Driver was successfully loaded into the kernel. 23 | ) 24 | echo. 25 | pause 26 | -------------------------------------------------------------------------------- /mkcab.cmd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LTRData/zero/6b8dfe2066b0e57864e6cc97a9a7f3a185446bed/mkcab.cmd -------------------------------------------------------------------------------- /win2k/zero.inf: -------------------------------------------------------------------------------- 1 | [Version] 2 | signature = "$Windows NT$" 3 | Provider = "Olof Lagerkvist, LTR Data" 4 | Provider = "LTR Data" 5 | DriverVer = 09/10/2021,23.15.17.897 6 | 7 | 8 | [SourceDisksNames] 9 | 1 = "Zero And Random Device Driver Installation disk" 10 | 11 | 12 | [SourceDisksFiles.x86] 13 | zero.sys = 1,x86 14 | 15 | 16 | [SourceDisksFiles.ia64] 17 | zero.sys = 1,ia64 18 | 19 | 20 | [SourceDisksFiles.amd64] 21 | zero.sys = 1,x64 22 | 23 | 24 | [SourceDisksFiles.arm] 25 | zero.sys = 1,arm 26 | 27 | 28 | [SourceDisksFiles.arm64] 29 | zero.sys = 1,arm64 30 | 31 | 32 | [DestinationDirs] 33 | DefaultDestDir = 12 34 | 35 | 36 | [DefaultInstall.NT] 37 | CopyFiles = @zero.sys 38 | 39 | 40 | [DefaultInstall.NT.Services] 41 | AddService = zero, , ZeroDrv 42 | 43 | 44 | [ZeroDrv] 45 | DisplayName = "Zero And Random Device Driver" 46 | Description = "Device driver for the Zero and Random character devices." 47 | ServiceType = 1 48 | StartType = 1 49 | ErrorControl = 0 50 | ServiceBinary = %12%\zero.sys 51 | 52 | -------------------------------------------------------------------------------- /win2k/zero_dummy.inf: -------------------------------------------------------------------------------- 1 | 2 | ; DUMMY.INF 3 | ; Dummy inf file. 4 | 5 | [Version] 6 | signature = "$Windows NT$" 7 | Class = SCSIAdapter 8 | ClassGUID = {4D36E97B-E325-11CE-BFC1-08002BE10318} 9 | Provider = "LTR Data" 10 | DriverVer = 09/10/2021,23.15.17.803 11 | CatalogFile = zero_dummy.cat 12 | 13 | 14 | [SourceDisksNames] 15 | 1 = "Zero and Random Device Driver" 16 | 17 | 18 | [SourceDisksFiles.x86] 19 | zero.sys = 1, i386 20 | 21 | [DestinationDirs] 22 | zeroSysFiles = 12 23 | 24 | 25 | [DefaultInstall.ntx86] 26 | CopyFiles = zeroSysFiles 27 | 28 | 29 | [zeroSysFiles] 30 | zero.sys 31 | 32 | 33 | [DefaultInstall.ntx86.Services] 34 | AddService = zero, , zeroDrv 35 | 36 | 37 | [zeroDrv] 38 | DisplayName = "Zero and Random Device Driver" 39 | StartType = 1 40 | ServiceType = 1 41 | ErrorControl = 0 42 | ServiceBinary = %12%\zero.sys 43 | -------------------------------------------------------------------------------- /win7/zero.inf: -------------------------------------------------------------------------------- 1 | [Version] 2 | signature = "$Windows NT$" 3 | Provider = "Olof Lagerkvist, LTR Data" 4 | Provider = "LTR Data" 5 | DriverVer = 09/10/2021,23.15.17.959 6 | 7 | 8 | [SourceDisksNames] 9 | 1 = "Zero And Random Device Driver Installation disk" 10 | 11 | 12 | [SourceDisksFiles.x86] 13 | zero.sys = 1,x86 14 | 15 | 16 | [SourceDisksFiles.ia64] 17 | zero.sys = 1,ia64 18 | 19 | 20 | [SourceDisksFiles.amd64] 21 | zero.sys = 1,x64 22 | 23 | 24 | [SourceDisksFiles.arm] 25 | zero.sys = 1,arm 26 | 27 | 28 | [SourceDisksFiles.arm64] 29 | zero.sys = 1,arm64 30 | 31 | 32 | [DestinationDirs] 33 | DefaultDestDir = 12 34 | 35 | 36 | [DefaultInstall.NT] 37 | CopyFiles = @zero.sys 38 | 39 | 40 | [DefaultInstall.NT.Services] 41 | AddService = zero, , ZeroDrv 42 | 43 | 44 | [ZeroDrv] 45 | DisplayName = "Zero And Random Device Driver" 46 | Description = "Device driver for the Zero and Random character devices." 47 | ServiceType = 1 48 | StartType = 1 49 | ErrorControl = 0 50 | ServiceBinary = %12%\zero.sys 51 | 52 | -------------------------------------------------------------------------------- /win7/zero_dummy.inf: -------------------------------------------------------------------------------- 1 | 2 | ; DUMMY.INF 3 | ; Dummy inf file. 4 | 5 | [Version] 6 | signature = "$Windows NT$" 7 | Class = SCSIAdapter 8 | ClassGUID = {4D36E97B-E325-11CE-BFC1-08002BE10318} 9 | Provider = "LTR Data" 10 | DriverVer = 09/10/2021,23.15.17.870 11 | CatalogFile = zero_dummy.cat 12 | 13 | 14 | [SourceDisksNames] 15 | 1 = "Zero and Random Device Driver" 16 | 17 | 18 | [SourceDisksFiles.x86] 19 | zero.sys = 1, x86 20 | 21 | [SourceDisksFiles.ia64] 22 | zero.sys = 1, ia64 23 | 24 | [SourceDisksFiles.amd64] 25 | zero.sys = 1, x64 26 | 27 | [SourceDisksFiles.arm] 28 | zero.sys = 1, arm 29 | 30 | [SourceDisksFiles.arm64] 31 | zero.sys = 1, arm64 32 | 33 | [DestinationDirs] 34 | zeroSysFiles = 12 35 | 36 | 37 | [DefaultInstall.ntx86] 38 | CopyFiles = zeroSysFiles 39 | 40 | 41 | [zeroSysFiles] 42 | zero.sys 43 | 44 | 45 | [DefaultInstall.ntx86.Services] 46 | AddService = zero, , zeroDrv 47 | 48 | 49 | [zeroDrv] 50 | DisplayName = "Zero and Random Device Driver" 51 | StartType = 1 52 | ServiceType = 1 53 | ErrorControl = 0 54 | ServiceBinary = %12%\zero.sys 55 | -------------------------------------------------------------------------------- /winnet/zero.inf: -------------------------------------------------------------------------------- 1 | [Version] 2 | signature = "$Windows NT$" 3 | Provider = "Olof Lagerkvist, LTR Data" 4 | Provider = "LTR Data" 5 | DriverVer = 09/10/2021,23.15.17.932 6 | 7 | 8 | [SourceDisksNames] 9 | 1 = "Zero And Random Device Driver Installation disk" 10 | 11 | 12 | [SourceDisksFiles.x86] 13 | zero.sys = 1,x86 14 | 15 | 16 | [SourceDisksFiles.ia64] 17 | zero.sys = 1,ia64 18 | 19 | 20 | [SourceDisksFiles.amd64] 21 | zero.sys = 1,x64 22 | 23 | 24 | [SourceDisksFiles.arm] 25 | zero.sys = 1,arm 26 | 27 | 28 | [SourceDisksFiles.arm64] 29 | zero.sys = 1,arm64 30 | 31 | 32 | [DestinationDirs] 33 | DefaultDestDir = 12 34 | 35 | 36 | [DefaultInstall.NT] 37 | CopyFiles = @zero.sys 38 | 39 | 40 | [DefaultInstall.NT.Services] 41 | AddService = zero, , ZeroDrv 42 | 43 | 44 | [ZeroDrv] 45 | DisplayName = "Zero And Random Device Driver" 46 | Description = "Device driver for the Zero and Random character devices." 47 | ServiceType = 1 48 | StartType = 1 49 | ErrorControl = 0 50 | ServiceBinary = %12%\zero.sys 51 | 52 | -------------------------------------------------------------------------------- /winnet/zero_dummy.inf: -------------------------------------------------------------------------------- 1 | 2 | ; DUMMY.INF 3 | ; Dummy inf file. 4 | 5 | [Version] 6 | signature = "$Windows NT$" 7 | Class = SCSIAdapter 8 | ClassGUID = {4D36E97B-E325-11CE-BFC1-08002BE10318} 9 | Provider = "LTR Data" 10 | DriverVer = 09/10/2021,23.15.17.835 11 | CatalogFile = zero_dummy.cat 12 | 13 | 14 | [SourceDisksNames] 15 | 1 = "Zero and Random Device Driver" 16 | 17 | 18 | [SourceDisksFiles.x86] 19 | zero.sys = 1, i386 20 | 21 | [SourceDisksFiles.ia64] 22 | zero.sys = 1, ia64 23 | 24 | [SourceDisksFiles.amd64] 25 | zero.sys = 1, amd64 26 | 27 | [DestinationDirs] 28 | zeroSysFiles = 12 29 | 30 | 31 | [DefaultInstall.ntx86] 32 | CopyFiles = zeroSysFiles 33 | 34 | 35 | [zeroSysFiles] 36 | zero.sys 37 | 38 | 39 | [DefaultInstall.ntx86.Services] 40 | AddService = zero, , zeroDrv 41 | 42 | 43 | [zeroDrv] 44 | DisplayName = "Zero and Random Device Driver" 45 | StartType = 1 46 | ServiceType = 1 47 | ErrorControl = 0 48 | ServiceBinary = %12%\zero.sys 49 | -------------------------------------------------------------------------------- /zero.7zsfxcfg: -------------------------------------------------------------------------------- 1 | ;!@Install@!UTF-8! 2 | Title="Zero And Random Device Driver" 3 | BeginPrompt="Do you want to install the Zero And Random Device Driver?" 4 | ExecuteFile="run64.exe" 5 | ExecuteParameters="cmd.exe /c .\install.cmd" 6 | ;!@InstallEnd@! 7 | -------------------------------------------------------------------------------- /zero.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #ifdef _M_IA64 5 | EXTERN_C 6 | #endif 7 | NTKERNELAPI 8 | int 9 | SystemPrng( 10 | OUT PUCHAR RandomBuffer, 11 | UINT_PTR RandomBufferLength 12 | ); 13 | 14 | EXTERN_C 15 | NTKERNELAPI 16 | ULONG 17 | RtlRandom(IN OUT PULONG Seed); 18 | 19 | EXTERN_C 20 | NTKERNELAPI 21 | ULONG 22 | RtlRandomEx(IN OUT PULONG Seed); 23 | 24 | PDEVICE_OBJECT ZeroDev; 25 | PDEVICE_OBJECT RandomDev; 26 | LARGE_INTEGER DriverLoadSystemTime; 27 | 28 | #if !defined(NTDDI_WINXP) || NTDDI_VERSION < NTDDI_WINXP 29 | 30 | PVOID 31 | MmGetSystemAddressForMdlPrettySafe(PMDL Mdl) 32 | { 33 | CSHORT MdlMappingCanFail; 34 | PVOID MappedSystemVa; 35 | 36 | if (Mdl == NULL) 37 | return NULL; 38 | 39 | if (Mdl->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA | MDL_SOURCE_IS_NONPAGED_POOL)) 40 | return Mdl->MappedSystemVa; 41 | 42 | MdlMappingCanFail = Mdl->MdlFlags & MDL_MAPPING_CAN_FAIL; 43 | 44 | Mdl->MdlFlags |= MDL_MAPPING_CAN_FAIL; 45 | 46 | MappedSystemVa = MmMapLockedPages(Mdl, KernelMode); 47 | 48 | if (MdlMappingCanFail == 0) 49 | Mdl->MdlFlags &= ~MDL_MAPPING_CAN_FAIL; 50 | 51 | return MappedSystemVa; 52 | } 53 | 54 | #ifdef MmGetSystemAddressForMdlSafe 55 | #undef MmGetSystemAddressForMdlSafe 56 | #endif 57 | #define MmGetSystemAddressForMdlSafe(Mdl, Priority) MmGetSystemAddressForMdlPrettySafe((Mdl)) 58 | #ifdef RtlRandomEx 59 | #undef RtlRandomEx 60 | #endif 61 | #define RtlRandomEx RtlRandom 62 | 63 | #endif 64 | 65 | #if !defined(NTDDI_VISTA) || NTDDI_VERSION < NTDDI_VISTA 66 | 67 | void 68 | FillRandom(PUCHAR buffer, SIZE_T size) 69 | { 70 | PUCHAR ptr = buffer; 71 | 72 | for (; 73 | ptr <= buffer + size - sizeof(USHORT); 74 | ptr += sizeof(USHORT)) 75 | { 76 | ULONG rnd = RtlRandomEx(&DriverLoadSystemTime.LowPart); 77 | *(PUSHORT)ptr = HIWORD(rnd) ^ LOWORD(rnd); 78 | } 79 | 80 | for (; 81 | ptr < buffer + size; 82 | ptr++) 83 | { 84 | ULONG rnd = RtlRandomEx(&DriverLoadSystemTime.LowPart); 85 | *ptr = (UCHAR)(HIWORD(rnd) ^ LOWORD(rnd)); 86 | } 87 | } 88 | 89 | #define SystemPrng(buffer, size) FillRandom(buffer, size) 90 | 91 | #endif 92 | 93 | /////// 94 | 95 | EXTERN_C 96 | NTSTATUS 97 | DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath); 98 | 99 | NTSTATUS 100 | ZeroDispatchCreateClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); 101 | 102 | NTSTATUS 103 | ZeroDispatchRead(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); 104 | 105 | NTSTATUS 106 | ZeroDispatchWrite(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); 107 | 108 | NTSTATUS 109 | ZeroDispatchQueryInformation(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); 110 | 111 | NTSTATUS 112 | ZeroDispatchSetInformation(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); 113 | 114 | VOID 115 | ZeroUnload(IN PDRIVER_OBJECT DriverObject); 116 | 117 | #pragma code_seg("INIT") 118 | 119 | NTSTATUS 120 | DriverEntry(IN PDRIVER_OBJECT DriverObject, 121 | IN PUNICODE_STRING RegistryPath) 122 | { 123 | NTSTATUS status; 124 | UNICODE_STRING device_name; 125 | UNICODE_STRING link_name; 126 | 127 | UNREFERENCED_PARAMETER(RegistryPath); 128 | 129 | KeQuerySystemTime(&DriverLoadSystemTime); 130 | 131 | RtlInitUnicodeString(&device_name, L"\\Device\\Zero"); 132 | 133 | status = IoCreateDevice(DriverObject, 0, &device_name, FILE_DEVICE_NULL, 0, 134 | FALSE, &ZeroDev); 135 | 136 | if (!NT_SUCCESS(status)) 137 | ZeroDev = NULL; 138 | else 139 | ZeroDev->Flags |= DO_DIRECT_IO; 140 | 141 | RtlInitUnicodeString(&link_name, L"\\DosDevices\\Zero"); 142 | IoCreateUnprotectedSymbolicLink(&link_name, &device_name); 143 | 144 | RtlInitUnicodeString(&device_name, L"\\Device\\Random"); 145 | 146 | status = IoCreateDevice(DriverObject, 0, &device_name, FILE_DEVICE_NULL, 0, 147 | FALSE, &RandomDev); 148 | 149 | if (!NT_SUCCESS(status)) 150 | RandomDev = NULL; 151 | else 152 | RandomDev->Flags |= DO_DIRECT_IO; 153 | 154 | if ((ZeroDev == NULL) && (RandomDev == NULL)) 155 | return status; 156 | 157 | RtlInitUnicodeString(&link_name, L"\\DosDevices\\Random"); 158 | IoCreateUnprotectedSymbolicLink(&link_name, &device_name); 159 | 160 | DriverObject->MajorFunction[IRP_MJ_CREATE] = ZeroDispatchCreateClose; 161 | DriverObject->MajorFunction[IRP_MJ_CLOSE] = ZeroDispatchCreateClose; 162 | DriverObject->MajorFunction[IRP_MJ_READ] = ZeroDispatchRead; 163 | DriverObject->MajorFunction[IRP_MJ_WRITE] = ZeroDispatchWrite; 164 | DriverObject->MajorFunction[IRP_MJ_QUERY_INFORMATION] = 165 | ZeroDispatchQueryInformation; 166 | DriverObject->MajorFunction[IRP_MJ_SET_INFORMATION] = 167 | ZeroDispatchSetInformation; 168 | 169 | DriverObject->DriverUnload = ZeroUnload; 170 | 171 | return STATUS_SUCCESS; 172 | } 173 | 174 | #pragma code_seg("PAGE") 175 | 176 | VOID 177 | ZeroUnload(IN PDRIVER_OBJECT DriverObject) 178 | { 179 | PDEVICE_OBJECT device_object; 180 | UNICODE_STRING link_name; 181 | 182 | PAGED_CODE(); 183 | 184 | RtlInitUnicodeString(&link_name, L"\\DosDevices\\Zero"); 185 | IoDeleteSymbolicLink(&link_name); 186 | RtlInitUnicodeString(&link_name, L"\\DosDevices\\Random"); 187 | IoDeleteSymbolicLink(&link_name); 188 | 189 | while ((device_object = DriverObject->DeviceObject) != NULL) 190 | IoDeleteDevice(device_object); 191 | } 192 | 193 | #pragma code_seg() 194 | 195 | NTSTATUS 196 | ZeroDispatchCreateClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) 197 | { 198 | UNREFERENCED_PARAMETER(DeviceObject); 199 | 200 | Irp->IoStatus.Status = STATUS_SUCCESS; 201 | Irp->IoStatus.Information = 0; 202 | 203 | IoCompleteRequest(Irp, IO_NO_INCREMENT); 204 | 205 | return STATUS_SUCCESS; 206 | } 207 | 208 | NTSTATUS 209 | ZeroDispatchRead(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) 210 | { 211 | PIO_STACK_LOCATION io_stack = IoGetCurrentIrpStackLocation(Irp); 212 | 213 | if (io_stack->Parameters.Read.Length == 0 || 214 | Irp->MdlAddress == NULL) 215 | { 216 | Irp->IoStatus.Status = STATUS_SUCCESS; 217 | Irp->IoStatus.Information = 0; 218 | 219 | IoCompleteRequest(Irp, IO_DISK_INCREMENT); 220 | 221 | return STATUS_SUCCESS; 222 | } 223 | 224 | PVOID system_buffer = MmGetSystemAddressForMdlSafe(Irp->MdlAddress, LowPagePriority); 225 | 226 | if (system_buffer == NULL) 227 | { 228 | Irp->IoStatus.Status = STATUS_INSUFFICIENT_RESOURCES; 229 | Irp->IoStatus.Information = 0; 230 | 231 | IoCompleteRequest(Irp, IO_NO_INCREMENT); 232 | 233 | return STATUS_INSUFFICIENT_RESOURCES; 234 | } 235 | 236 | if (DeviceObject == RandomDev) 237 | { 238 | SystemPrng((PUCHAR)system_buffer, io_stack->Parameters.Read.Length); 239 | } 240 | else // if (DeviceObject == ZeroDev) 241 | { 242 | RtlZeroMemory(system_buffer, io_stack->Parameters.Read.Length); 243 | } 244 | 245 | Irp->IoStatus.Status = STATUS_SUCCESS; 246 | Irp->IoStatus.Information = io_stack->Parameters.Read.Length; 247 | 248 | IoCompleteRequest(Irp, IO_NO_INCREMENT); 249 | 250 | return STATUS_SUCCESS; 251 | } 252 | 253 | NTSTATUS 254 | ZeroDispatchWrite(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) 255 | { 256 | UNREFERENCED_PARAMETER(DeviceObject); 257 | 258 | PIO_STACK_LOCATION io_stack = IoGetCurrentIrpStackLocation(Irp); 259 | 260 | Irp->IoStatus.Status = STATUS_SUCCESS; 261 | Irp->IoStatus.Information = io_stack->Parameters.Write.Length; 262 | 263 | IoCompleteRequest(Irp, IO_NO_INCREMENT); 264 | 265 | return STATUS_SUCCESS; 266 | } 267 | 268 | NTSTATUS 269 | ZeroDispatchQueryInformation(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) 270 | { 271 | UNREFERENCED_PARAMETER(DeviceObject); 272 | 273 | PIO_STACK_LOCATION io_stack = IoGetCurrentIrpStackLocation(Irp); 274 | NTSTATUS status; 275 | 276 | switch (io_stack->Parameters.QueryFile.FileInformationClass) 277 | { 278 | case FileStandardInformation: 279 | { 280 | PFILE_STANDARD_INFORMATION file_standard_information = 281 | (PFILE_STANDARD_INFORMATION)Irp->AssociatedIrp.SystemBuffer; 282 | 283 | if (io_stack->Parameters.QueryFile.Length < 284 | sizeof(FILE_STANDARD_INFORMATION)) 285 | { 286 | status = STATUS_INVALID_PARAMETER; 287 | break; 288 | } 289 | 290 | file_standard_information->AllocationSize.QuadPart = 0; 291 | file_standard_information->EndOfFile.QuadPart = 0; 292 | file_standard_information->NumberOfLinks = 0; 293 | file_standard_information->DeletePending = FALSE; 294 | file_standard_information->Directory = FALSE; 295 | 296 | Irp->IoStatus.Information = sizeof(FILE_STANDARD_INFORMATION); 297 | status = STATUS_SUCCESS; 298 | 299 | break; 300 | } 301 | 302 | case FilePositionInformation: 303 | { 304 | PFILE_POSITION_INFORMATION file_position_information = 305 | (PFILE_POSITION_INFORMATION)Irp->AssociatedIrp.SystemBuffer; 306 | 307 | if (io_stack->Parameters.QueryFile.Length < 308 | sizeof(FILE_POSITION_INFORMATION)) 309 | { 310 | status = STATUS_INVALID_PARAMETER; 311 | break; 312 | } 313 | 314 | file_position_information->CurrentByteOffset.QuadPart = 0; 315 | 316 | Irp->IoStatus.Information = sizeof(FILE_POSITION_INFORMATION); 317 | status = STATUS_SUCCESS; 318 | 319 | break; 320 | } 321 | 322 | default: 323 | status = STATUS_INVALID_DEVICE_REQUEST; 324 | } 325 | 326 | if (!NT_SUCCESS(status)) 327 | Irp->IoStatus.Information = 0; 328 | 329 | Irp->IoStatus.Status = status; 330 | 331 | IoCompleteRequest(Irp, IO_NO_INCREMENT); 332 | 333 | return status; 334 | } 335 | 336 | NTSTATUS 337 | ZeroDispatchSetInformation(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) 338 | { 339 | UNREFERENCED_PARAMETER(DeviceObject); 340 | 341 | PIO_STACK_LOCATION io_stack = IoGetCurrentIrpStackLocation(Irp); 342 | NTSTATUS status; 343 | 344 | switch (io_stack->Parameters.SetFile.FileInformationClass) 345 | { 346 | case FileEndOfFileInformation: 347 | case FileAllocationInformation: 348 | status = STATUS_SUCCESS; 349 | break; 350 | 351 | default: 352 | status = STATUS_INVALID_DEVICE_REQUEST; 353 | } 354 | 355 | Irp->IoStatus.Information = 0; 356 | Irp->IoStatus.Status = status; 357 | 358 | IoCompleteRequest(Irp, IO_NO_INCREMENT); 359 | 360 | return status; 361 | } 362 | -------------------------------------------------------------------------------- /zero.inf: -------------------------------------------------------------------------------- 1 | [Version] 2 | signature = "$Windows NT$" 3 | Provider = "Olof Lagerkvist, LTR Data" 4 | Provider = "LTR Data" 5 | DriverVer=04/26/2018,17.49.52.789 6 | 7 | 8 | [SourceDisksNames] 9 | 1 = "Zero And Random Device Driver Installation disk" 10 | 11 | 12 | [SourceDisksFiles.x86] 13 | zero.sys = 1,x86 14 | 15 | 16 | [SourceDisksFiles.ia64] 17 | zero.sys = 1,ia64 18 | 19 | 20 | [SourceDisksFiles.amd64] 21 | zero.sys = 1,x64 22 | 23 | 24 | [SourceDisksFiles.arm] 25 | zero.sys = 1,arm 26 | 27 | 28 | [SourceDisksFiles.arm64] 29 | zero.sys = 1,arm64 30 | 31 | 32 | [DestinationDirs] 33 | DefaultDestDir = 12 34 | 35 | 36 | [DefaultInstall.NT] 37 | CopyFiles = @zero.sys 38 | 39 | 40 | [DefaultInstall.NT.Services] 41 | AddService = zero, , ZeroDrv 42 | 43 | 44 | [ZeroDrv] 45 | DisplayName = "Zero And Random Device Driver" 46 | Description = "Device driver for the Zero and Random character devices." 47 | ServiceType = 1 48 | StartType = 1 49 | ErrorControl = 0 50 | ServiceBinary = %12%\zero.sys 51 | 52 | -------------------------------------------------------------------------------- /zero.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LTRData/zero/6b8dfe2066b0e57864e6cc97a9a7f3a185446bed/zero.rc -------------------------------------------------------------------------------- /zero.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.30503.244 5 | MinimumVisualStudioVersion = 12.0 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zero", "zero.vcxproj", "{E0B914F2-1311-4310-92AE-74B4D29A4894}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|ARM = Debug|ARM 11 | Debug|ARM64 = Debug|ARM64 12 | Debug|x64 = Debug|x64 13 | Debug|x86 = Debug|x86 14 | Release|ARM = Release|ARM 15 | Release|ARM64 = Release|ARM64 16 | Release|x64 = Release|x64 17 | Release|x86 = Release|x86 18 | EndGlobalSection 19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 20 | {E0B914F2-1311-4310-92AE-74B4D29A4894}.Debug|ARM.ActiveCfg = Debug|ARM 21 | {E0B914F2-1311-4310-92AE-74B4D29A4894}.Debug|ARM.Build.0 = Debug|ARM 22 | {E0B914F2-1311-4310-92AE-74B4D29A4894}.Debug|ARM.Deploy.0 = Debug|ARM 23 | {E0B914F2-1311-4310-92AE-74B4D29A4894}.Debug|ARM64.ActiveCfg = Debug|ARM64 24 | {E0B914F2-1311-4310-92AE-74B4D29A4894}.Debug|ARM64.Build.0 = Debug|ARM64 25 | {E0B914F2-1311-4310-92AE-74B4D29A4894}.Debug|ARM64.Deploy.0 = Debug|ARM64 26 | {E0B914F2-1311-4310-92AE-74B4D29A4894}.Debug|x64.ActiveCfg = Debug|x64 27 | {E0B914F2-1311-4310-92AE-74B4D29A4894}.Debug|x64.Build.0 = Debug|x64 28 | {E0B914F2-1311-4310-92AE-74B4D29A4894}.Debug|x64.Deploy.0 = Debug|x64 29 | {E0B914F2-1311-4310-92AE-74B4D29A4894}.Debug|x86.ActiveCfg = Debug|Win32 30 | {E0B914F2-1311-4310-92AE-74B4D29A4894}.Debug|x86.Build.0 = Debug|Win32 31 | {E0B914F2-1311-4310-92AE-74B4D29A4894}.Debug|x86.Deploy.0 = Debug|Win32 32 | {E0B914F2-1311-4310-92AE-74B4D29A4894}.Release|ARM.ActiveCfg = Release|ARM 33 | {E0B914F2-1311-4310-92AE-74B4D29A4894}.Release|ARM.Build.0 = Release|ARM 34 | {E0B914F2-1311-4310-92AE-74B4D29A4894}.Release|ARM.Deploy.0 = Release|ARM 35 | {E0B914F2-1311-4310-92AE-74B4D29A4894}.Release|ARM64.ActiveCfg = Release|ARM64 36 | {E0B914F2-1311-4310-92AE-74B4D29A4894}.Release|ARM64.Build.0 = Release|ARM64 37 | {E0B914F2-1311-4310-92AE-74B4D29A4894}.Release|ARM64.Deploy.0 = Release|ARM64 38 | {E0B914F2-1311-4310-92AE-74B4D29A4894}.Release|x64.ActiveCfg = Release|x64 39 | {E0B914F2-1311-4310-92AE-74B4D29A4894}.Release|x64.Build.0 = Release|x64 40 | {E0B914F2-1311-4310-92AE-74B4D29A4894}.Release|x64.Deploy.0 = Release|x64 41 | {E0B914F2-1311-4310-92AE-74B4D29A4894}.Release|x86.ActiveCfg = Release|Win32 42 | {E0B914F2-1311-4310-92AE-74B4D29A4894}.Release|x86.Build.0 = Release|Win32 43 | {E0B914F2-1311-4310-92AE-74B4D29A4894}.Release|x86.Deploy.0 = Release|Win32 44 | EndGlobalSection 45 | GlobalSection(SolutionProperties) = preSolution 46 | HideSolutionNode = FALSE 47 | EndGlobalSection 48 | GlobalSection(ExtensibilityGlobals) = postSolution 49 | SolutionGuid = {3029AC78-21CE-40F6-896B-20E211AA5F17} 50 | EndGlobalSection 51 | EndGlobal 52 | -------------------------------------------------------------------------------- /zero.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | Debug 14 | x64 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | Debug 22 | ARM 23 | 24 | 25 | Release 26 | ARM 27 | 28 | 29 | Debug 30 | ARM64 31 | 32 | 33 | Release 34 | ARM64 35 | 36 | 37 | 38 | {E0B914F2-1311-4310-92AE-74B4D29A4894} 39 | {dd38f7fc-d7bd-488b-9242-7d8754cde80d} 40 | v4.5 41 | 12.0 42 | Debug 43 | Win32 44 | zero 45 | 10.0.17763.0 46 | 47 | 48 | 49 | Windows7 50 | true 51 | WindowsKernelModeDriver10.0 52 | Driver 53 | WDM 54 | 55 | 56 | Windows7 57 | false 58 | WindowsKernelModeDriver10.0 59 | Driver 60 | WDM 61 | 62 | 63 | Windows7 64 | true 65 | WindowsKernelModeDriver10.0 66 | Driver 67 | WDM 68 | 69 | 70 | Windows7 71 | false 72 | WindowsKernelModeDriver10.0 73 | Driver 74 | WDM 75 | 76 | 77 | Windows8 78 | true 79 | WindowsKernelModeDriver10.0 80 | Driver 81 | WDM 82 | 83 | 84 | Windows8 85 | false 86 | WindowsKernelModeDriver10.0 87 | Driver 88 | WDM 89 | 90 | 91 | Windows10 92 | true 93 | WindowsKernelModeDriver10.0 94 | Driver 95 | WDM 96 | 97 | 98 | Windows10 99 | false 100 | WindowsKernelModeDriver10.0 101 | Driver 102 | WDM 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | DbgengKernelDebugger 114 | $(ConfigurationName)\$(PlatformTarget)\ 115 | $(SolutionDir)$(ConfigurationName)\$(PlatformTarget)\ 116 | 117 | false 118 | 119 | 120 | DbgengKernelDebugger 121 | $(ConfigurationName)\$(PlatformTarget)\ 122 | $(SolutionDir)win7\$(PlatformTarget)\ 123 | 124 | false 125 | 126 | 127 | DbgengKernelDebugger 128 | $(ConfigurationName)\$(PlatformTarget)\ 129 | $(SolutionDir)$(ConfigurationName)\$(PlatformTarget)\ 130 | 131 | false 132 | 133 | 134 | DbgengKernelDebugger 135 | $(SolutionDir)win7\$(PlatformTarget)\ 136 | $(ConfigurationName)\$(PlatformTarget)\ 137 | 138 | false 139 | 140 | 141 | DbgengKernelDebugger 142 | $(ConfigurationName)\$(PlatformTarget)\ 143 | $(SolutionDir)$(ConfigurationName)\$(PlatformTarget)\ 144 | 145 | false 146 | 147 | 148 | DbgengKernelDebugger 149 | $(SolutionDir)win7\$(PlatformTarget)\ 150 | $(ConfigurationName)\$(PlatformTarget)\ 151 | 152 | false 153 | 154 | 155 | DbgengKernelDebugger 156 | $(ConfigurationName)\$(PlatformTarget)\ 157 | $(SolutionDir)$(ConfigurationName)\$(PlatformTarget)\ 158 | 159 | false 160 | 161 | 162 | DbgengKernelDebugger 163 | $(SolutionDir)win7\$(PlatformTarget)\ 164 | $(ConfigurationName)\$(PlatformTarget)\ 165 | 166 | false 167 | 168 | 169 | 170 | ksecdd.lib;%(AdditionalDependencies) 171 | 172 | 173 | 174 | 175 | ksecdd.lib;%(AdditionalDependencies) 176 | 177 | 178 | 179 | 180 | ksecdd.lib;%(AdditionalDependencies) 181 | 182 | 183 | 184 | 185 | ksecdd.lib;%(AdditionalDependencies) 186 | 187 | 188 | 189 | 190 | ksecdd.lib;%(AdditionalDependencies) 191 | 192 | 193 | 194 | 195 | ksecdd.lib;%(AdditionalDependencies) 196 | 197 | 198 | 199 | 200 | ksecdd.lib;%(AdditionalDependencies) 201 | 202 | 203 | 204 | 205 | ksecdd.lib;%(AdditionalDependencies) 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | -------------------------------------------------------------------------------- /zero.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | {8E41214B-6785-4CFE-B992-037D68949A14} 18 | inf;inv;inx;mof;mc; 19 | 20 | 21 | 22 | 23 | Source Files 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | Resource Files 37 | 38 | 39 | -------------------------------------------------------------------------------- /zero_dummy.inf: -------------------------------------------------------------------------------- 1 | 2 | ; DUMMY.INF 3 | ; Dummy inf file. 4 | 5 | [Version] 6 | signature = "$Windows NT$" 7 | Class = SCSIAdapter 8 | ClassGUID = {4D36E97B-E325-11CE-BFC1-08002BE10318} 9 | Provider = "LTR Data" 10 | DriverVer=04/26/2018,17.49.52.789 11 | CatalogFile = zero_dummy.cat 12 | 13 | 14 | [SourceDisksNames] 15 | 1 = "Zero and Random Device Driver" 16 | 17 | 18 | [SourceDisksFiles.x86] 19 | zero.sys = 1, x86 20 | 21 | [SourceDisksFiles.ia64] 22 | zero.sys = 1, ia64 23 | 24 | [SourceDisksFiles.amd64] 25 | zero.sys = 1, x64 26 | 27 | [SourceDisksFiles.arm] 28 | zero.sys = 1, arm 29 | 30 | [SourceDisksFiles.arm64] 31 | zero.sys = 1, arm64 32 | 33 | [DestinationDirs] 34 | zeroSysFiles = 12 35 | 36 | 37 | [DefaultInstall.ntx86] 38 | CopyFiles = zeroSysFiles 39 | 40 | 41 | [zeroSysFiles] 42 | zero.sys 43 | 44 | 45 | [DefaultInstall.ntx86.Services] 46 | AddService = zero, , zeroDrv 47 | 48 | 49 | [zeroDrv] 50 | DisplayName = "Zero and Random Device Driver" 51 | StartType = 1 52 | ServiceType = 1 53 | ErrorControl = 0 54 | ServiceBinary = %12%\zero.sys 55 | --------------------------------------------------------------------------------