• Download VisualDDK • Download VisualDDK Source





Making your first driver - complete walkthrough
This article describes how to create, build and debug your first driver using Visual Studio and VisualDDK. provides detailed step-by-step instructions on using the development and debugging tools, leaving the driver API and architecture description behind. If you want to leam more about the API used to develop drivers, consider exploring online WDK help. In this walkthrough we will create two drivers and test them using a virtual machine: • A dummy driver that simply prints a message when it is loaded • A ramdisk driver, that creates a virtual hard disk It

• First Driver • VisualDDK Quickstart

• System Function Argument Viewer • VisualDDKHelpers • Driver Wizard • Expression Visualizer • Launcher • Speed-up Guide

If you prefer to use a second physical machine instead, skip the VM-related stuff. However, you will need either a direct COM, or a direct IEEE 1394 (FireWire) connection between the machines.

Before you beg in
Before you start making your driver, ensure that you have the required software. You can get the required Microsoft products for free if you are qualified for MSDNAA, DreamSpark or BizSpark. All third-party tools referenced here are free. So, prepare to download: • A virtual machine application (VirtualBox is free and recommended, VMWare is another alternative, any other VM application will also work, but will be slow due to lack ofVirtualKD support). • A Windows installation disc or a disc image to install it on the VM. • Visual Studio (2005, 2008 or 201 0). The Express edition won't work. • Windows Driver Kit (ask google for the latest version, or download version 7.1.0). • A 32-bit version of Debugging Tools for Windows. They are normally located in the Debuggers directory of the WDK ISO. Note that if you are using a 64-bit Windows version, you will need to install the 32-bit Debugging Tools manually by running V:\Debuggers\setup_x86.exe. Visual Studio is a 32-bit process and won't work with the 64-bit Debug Tools. • Latest version ofVisualDDK.

If you don't have a tool to mount the downloaded ISO images, consider WinCDEmu.

The first thing you need to do is to install the virtual machine application. This walkthrough refers to VirtualBox, however, if you prefer to use any other VM, the steps will be similar. Then, create a new virtual machine. It is recommended to select the PIX chipset instead of the ICH9 one when setting the VM properties. Once the VM is created, you will need to install Windows on it. This walkthrough uses Windows 7, however, any other modem version will do. After Windows Setup completes, ensure that the virtual machine can access the physical machine via the network: it is recommended to set the network adapter settings in the VM to NAT. If you encounter connection problems later, check your firewall settings. Once Windows is installed on the VM install VMWare ToolsNirtualBox additions (in VirtualBox, just select "Devices->Install guest additions"). It is also recommended to setup a virtual shared folder (VM Settings>Shared folders), or use a network share to be able to copy files between the physical machine and the VM. Finally, create a snapshot called "clean Windows installation" (it won't consume any additional disk space, but will be useful if anything goes wrong) and switch the VM off. Now install Visual Studio on the physical machine. Note that you will need support for C++ (enable 64-bit support if you plan to build 64-bit drivers) and C# (required for certain VisualDDK components). Then install Windows Driver kit and Debugging Tools on the physical machine. Finally install VisualDDK. Note that if you install VisualDDK before installing Visual Studio, it won't be integrated correctly and you will have to re-run VisualDDK installer. If you are using VirtualBox or VMWare, you will need to do some additional steps:

• If you are using VirtualBox, go to the VirtualBox install directory, rename VBoxDD.DLL

into VBoxDDO.DLL and copy C:\Program Files (x86)\visuaIDDK\VirtuaIBox\{x86/x64}\VBoxDD.dll VirtualBox directory. This will enable VirtualKD - a plugin that increases VMWareNirtualBox speed and usability. It is recommended to turn of UAC on the virtual machine. Otherwise, VisualDDK start automatically every time you start your virtual machine.

in the debugging

monitor won't be able to

• Copy C:\Program Files (x86)\VisuaIDDK\target\vminstall.exe to your virtual machine and run it there. Do not run vminstall.exe on the physical machine! You can use either VM shared folders, or a 1/11

h IOCTL handlers (Ba. \l'is. Start Visual Studio from in administrator mode (right click-> run as administrator).=:Dn. 1 i'!1']ln..uarStudio compiler 'Nill be used and the project settillgs will be stored inside a . Hint: if you have set up a VirtualBox shared folder (e.2ldi9 projeyt.compiler and linker settings set up fer. it will ask for a reboot.ual St"dio project 'l'5lem' Usirng Visual Stl. ~ ~ GeDerafe' [ill Cieate'CPP!tl.--~~~~i.04.1 I L.:~. then select "Visual C++ -> VisuaIDDK->VisuaIDDK driver wizard" . This is the easiest way to start developing. Once vrninstall is done.ln_e_g_BG_'=_l ~ lmpert existing source flies ~-".S6 '~ Creating the first driver 1.the WDK.'1 ~ Add support for x&! target ----.~:~~::(:::~~:i.~em and compiler Wltl create a normal G-r+ 'project . Press OK.WDM bus driver (Ba~.i.~:jS~::L::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::j 7. If the build fails due to missing include files.~:?.uaIDDKHelpers.isUbj A ~mple..le". Press OK so that the project is created 5.-.201119.vcp'".UbJ A bus-based RAMDISK driver IBa~sUb) A'imp'le:legaCYliH4~ejdriver{Ba'isUb) ID: Imdi\[lrlverl INFOa... Now you can build the driver using "Build->Build solution" command (or just press Ctrl+Shift+B). You can write C-style code using C++ compiler.(recammendedj @ Use IA. >Project".:--. Now let's add some custom code to our driver.Ub) A sample RAMDISK driver{Ba. it lllill be accessible nelllllJrk folder IIVBOXSVRISHARE: as a to (j().sysprogs. 6.:.o.eB~J"D system and WDk'!'mimm'l!e~w~:.m".h V/>1IN5IALL pJ Name ~ Computer Date modified SiZE: 924 KB @vminstall zs . it is recommended that you shut down the VM instead. ensure that the DDKPATHIWDKPATH environment variable is set and that Visual Studio has been restarted since then. OK 4. WDM dnver w.:::~:?!a.h reg file.':::~:?iI~:jS~::L:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::j articles. n PrOj~c:t~rname:: D~. Add the following line before the retum statement of the DriverEntry() function: 2/11 .g.".e'fla~" @ Generate sample sources I.'instead'Of·C: Hardware A simpIe. 2.-:1r.:i'jI« VBOXSIIR • \WBQXSIIR\s'hare • VMINSTALL '"": 1*1" II Type Appli cetion 5e<". select "File->New- but it is not officially supported by Microsoft.ert \ii.~:~~::(:::~~:?~:~Y.: I~=====~ HOC ..'. 3.:. Select the directory and project name (e.K version to use: Deb"g/ReJea.D~M~~~luDJ~~-P~I~~~dn~'vier 1~11b~!. Driver1). As you are going create the driver project first.:c_' called SHARE). In the Driver Wizard dialog box do the following: o Select "A sample legacy driver" as the driver template.l6S&5. o is recommended that you enable the "Generate CPP files" checkbox.g.{I-Window. LI 7 #d_ef_in_e--==D~E~BU~G_+_#d __ efi--..-----. however you will have better debugging experience due to features like built-in wchar_t type.iil4 M emptyWDM drtver{Ba.j. ---------'.network drive to copy the file to VM.16 '"" Network :.m~. let's just print a message when the driver loads and unloads. Add the following line in the beginning ofthe Driver1 Unload() function: L::~~:~~:i. In this example. o Select "Use Visual Studio project system".:e'c:' .oR o U.Ub) I E\WINQQK\7W!l. Toolmain 'selecjj.

(riHeIlo. A debugging settings dialog articles.> Flag:3 .r-Lnq (. Note that if you want need to selectx64 instead ofWin32 as the current build platform.\ nceuev. LIT\.& = . When the OS selection menu appears.t code Sr. select the VirtualKD entry and press ENTER: 10. to use a 64-bit target OS. t. 3/11 ..Un. 8. D. world! z-et.t ce av'. Switch back to Visual Studio and select "Debug->Start will appear: debugging driver"._ OBJECT world! \n[I). UNICODE_STRING Rtllni Win32Device. Rebuild the driver by selecting "Build->Build solution". you 9. Start your virtual machine.oed DbgPrint (IN PDRlVER. Now let's debug the driver using VisualDDK.&Win32Device.~OO DE\r:ICE_ IN ITIALI _ \nrr).sysprogs. ~pp Source files Dr i ve r ST~TUS _SUCCESS. (TrGoodbye. L:J B··· IZjo Dr i ve:rObj ECT) Resou rc e fi Ies e Drivert.Your code should look the following way now: Devi c eObj DbgFrint E"C t .cpp i2l stdafx.

. Ensure that "debugging connection" is set to "Virtual machine" and your currently running VM is selected.d Pi~~. Please install the latest version and speefty its ceth in this window.I:<SI»\De.~YsternR_oot%\System32\Dri\o'erS\Qriver' the ~~~~~--~~~~~----------------.'ion~ ..- connection foruploadinq the-updated dri'l. 13. and a 'TCPlIP ..o:iilOO!k1)[)[J 1 to a rram"d device 1\\.o'er'andir:ig_gering the-driver II).yet: ".ro. 12. Ix:SI» Path lor downloaded symbol': C:\sYMBOLS. a settings dialog will appear: :Path'H Symbol servers .e[file~path:.I Symbol policy 1 4/11 ... (WioDbg.l.ig 6?nn~c:pon s~~~ shoUd be iLtring op ta.e .. etc. 71 1 options Ta'QE."" -arq. VisualDDK will detect it. As we have just started our VM.anoel .Ii..<)rIP: {detect. When you're done.aun"hingdn. A connection progress dialog will appear: o CooneCling!• .INET 1 1 Brow.M:::_W_:_. Debug~ing Tool.oci t~rg~ mat$ioe:.: corrrtiarrdline: f() Send 'am IOCTLoode: I~OO71 ~~========================~ In&stojJ l"g'aG)'dn~"r 'to 'a' /"1ffi11.e . channel = IlJ f. the Win32 subsystem is not yet running and the driver will not be loaded automatically. StGPpl~g (Jover @ 'Run'.rn.· NOte thai! ([) mM port ICOM1 Ikd_VMXPPRO ~ 1 baLid rote = 1115200 . or service.~[ alJtomatic'll!yceqUiWs. @ $t. display a message in debug console and stop the target OS execution: articles. you need a 32-bit version even on a 64-bit machine!) and that the downloaded symbol path points to a valid directory.-. ~~~~================~ D1.l¥'I'sh t!:ll o Named pipe: @\!)rtual.t :mat:hin'ehq_stna. create a new empty directory (e. press OK.3Q.--. Debuggir.1 0 B94 port. OK Cancel Ensure that the debugging tools location is set correctly (remember. press "refresh".-RIe.\M!i[JeVlcell1 Fel ® p~ P lf1Ie!fare' (25=A()9~FDO:7O:-E5O:':'BB:=-4'::{)C:i a=-:=BCO:C. Name.exe.u~ging Tools fer Window.cellaneous 1 \Ji. j32ii. automatically] Dii\!. press "launch". IrriOt~rfit.NET) and select it as the directory for downloaded symbols.'" 11l. For Window.\MyDevlceOl @ PnP Interface I{25AOOFD7'E5BB~1J1a-BCCI}-7DFA51~1aF!\5ll ~========~============~ 15 Ihseble ePnP'devlce WITh J-iard~are ID.CEVlBe 1\\. When done.sysprogs.7x_:_.o~ lega0' dlDve~or se~ge:.Ito be present on your machine.':.e. Ym:INMWirn]x86 11 t.1/er1 11.i In~. If you did not debug any drivers 14. S--.nPdevice''''h Hardware ID: lrootlmydri ve r Driver1 @ Start Jegacy driver.jllocatiorn: (:\Program .or KDVMWarej. debuggirng 1001. It it is not in the list. If you are debugging a driver for the first time.::()''=7D:=FO:AC::5'' 14cc18=:F::'A5~1 1 Enable a P. C:\SYMBOLS..both debugging cil"r1edi9" {03M p(irt.rar..chine: Target machine ~====================~==~ "'' ' 11 c.uaIDGK're~uire.Sys e Senden 10 IOCllio. Ensure that the "starting driver" and "stopping driver" settings are set to "legacy driver" and the correct driver name is entered. Hint: you can significantly speed up symbol loading by going to the Symbol Policy tab and selecting "Load symbols for NT kemel and drivers from current solution only".g.IV.

tne os et.Eo~\ at an the target machine ..JUrlING: Inac:cessi.AG~ached VisualDDl( Launche::r: 'Target ~Q os a ~~Ge not ke~nel ------sta::rted.e 0-0000000 3 out o:f PDE. thSt:atu:3In:3t.. You can enter anyWinDbg commands in VisualDDK console.! g'[:lpB~eakWi Ox8:2:67C394.eeoc. I WA. c:pp' nop rrnwh nt!sw~ ------. Once VisualDDK correctly: monitor has started.:ed ------.. the current debugging state is equivalent to WinDbg just after connecting to a kernel-mode target. simply press F5 or select Debug->Continue in Visual Studio menu. Note that the OS may take some time to load...111 ... Allow access :::::] I Cancel 18.. ~ Security Alert Windows Firewall has blocked some features of this program Wirndol/ SIll .. you need to select both private and public networks and press "allow access": rii ..g.c is completely drive~ loading wi~1 on1y work when the Win32 SubByst~ is running and Vi3ualDD~ Launeri monitor is act f. ~ visua I [l D I(H .auncn your d_rj_VeI.lS Firewall has blocked some features pri .::eakP-.3. C:Iddldaunchmonitor .. run VisualDDK recnj.tdafx .. c "I 0<".exe 'Monitor to commwnicate 'on these networks: sumas my home or worknetwork ~ P'!d.nt: Ln c nnp :::: l.. If Windows Firewall shows an "access blocked" popup..t. start it manually (default location is c:\DDKLaunchMonilor. Plea.e3p+4J Ox8267C3"3S ntiI UJ[S2-6?C3S8 0H:8267£33:9 OxB26?C39A Ox82E-7C3S8 !DbgUg·e!:B:...oS Drive-l.. CVSOGD\mi. ensure that it has detected the virtual machine IP address(es) articles. sumas those in airports and coffee shops (notrecorornended because these netJAtorks often have little or no security) What are the risks of allowing a program through a firewall? [: .DQ r-e-cj.. If not...l]rg Pal!:!: Allow VisualDDKLaunm ~ P'Civate networks. To let VisualDDK load our driver we need to let the OS boot completely. ate of VisualDDK Leunch 'Monitor on all public and @ O!'lame: ~umlishe:r: VisualDDKLaunm'Monitor SysProgs.sysprogs.D\ tjnab Le to Loa. 17.F"._:.i. If you are familiar with WinDbg. When the operating system has loaded.ded BONDL..tllicnetworks.. pp . J Resource file.3e !"eSum. To do that.lDIrl pr::r ~. nt. or use the corresponding functions of Visual Studio. L B···Ib SOU" e fi Ies :.ble \ Vi::::tua.E\ add \_ TRASH...:6~.Evalua~ian racduj. symbols for cample~e in 0 ~ 50 modu Le s ------- 15.or path: Vi::::tl:laL1. 16.. Let.. Automat!. netJAtorks.edebugging.exe)...:t:llction~ Lsrc !:E!'L- dT.1. • E: \PROJECIS :-. ensure that VisualDDK monitor has been started on the Virtual Machine.

56.168. Ensure that the parameters are set correctly and press "install".. Lislening 10 UDP pori 36676 .. Please select installation options.. Bound 10 21P addresses. Now switch back to Visual Studio.sys unloaded" text in VisualDDK console.. Note that it won't restart your target OS.end pre" "lnstell".. VisualDDK will show a driver installation prompt: To debug the driver.15 Close 19. world" message: articles.. I LocallP addresses 192. Once the installation is complete. Check VisualDDK console window for the "Hello..5 . 20.sysprogs. and select "load driver". not depend on any e>:iS!ing bus Install ] Cancel L 21.101_ 10. 1 Start mode: L_ I Manual ~ .dnver: Service name: Service type: Driver'l L_ I Kemel driver ~ .. 1 eJ Pn P driver: INFlile on host: Hardware 10: Temporary directory for INF and SYS files on target ~eave blank to create a new dir in '%temp%): SYS file path relative to INF (see [Sourceflisksflles xxx] section in the INFfile): D This is a root-enumersted dnver. that doe. but will unload your driver if it was loaded. you can also press shift+F5 to stop debugging and then hit F5 to start another debugging session.. If you cannot find the corresponding button. Dnvertype: @ Legacy.. it first needs to be installed on the target machine.0. If you are loading this driver for the first time.@ DDKLaunchMonilo·r I Initializing DDKLaunchMonitor v1. click at the " 6/11 .2... the driver will be loaded.

.e Symbo Lf.sys 1"92.r ex~st f as a~ installed an.l.~~ ...1ce) nk . _ D'[iverObjec"Cl file Line Project U1 §j<: ~ II @ Setting' • ~~ .Und code St.L'I'nd t.D32Device..TATUS S(I"CCE5S. if you vem to debug some code that only gets cal/ed during unload.z-Lnq Eo (&Wl.g.c. File Line Column D Hint: you can also press Shift+FS to stop debugging and unload the driver.~ serv~ce does serv:ice.56. Click at "Driver1. Note that all other debugging techniques common to Visual Studio (e.sysprogs. )_ __ _l~~~~~~~~~QS~e~c~C~-2> 7/11 . Let's test some simple interactive debugging functionality. I.S.1·63. Successf·ully not t. open the "watch 1" window and add "DriverObject" to watch list. . Put a breakpoint on the line containing the 10CreateDevice(} call and start your driver again by selecting "Debug->Start debugging driver".101 (176·~/s) .Let. Rt... Hello l world! D 22. ." \ \Do3Devices\ \Dri ve r-Ln n·) De. Once the breakpoint is hit. using the "unload driver" command is the only VIfIyto do. hovering mouse over a variable to view its value) will work: articles.~~ ~~.s e r r e d e: \PRDJECl'S\"Ce:mp. UNICODE_ST~ING Wi...Wi.1CeObjeC~}.~.n32Dev.-~ .~ ~~~~~-~~~ .d (ir.. world! \nn ~.sys loaded" message and select "unload driver": DbgF"rint ~"Goodb ye .. Hovever.. ~Q \T~SI 1\Driver1\D~bug\Drive~1.n~2Device.. Now let's unload the driver.~-. 23.

h L.p -tOxge nt~Krl1·.. Important advice: Now once the OS is booted. Start Visual Studio from in administrator mode (right click-> run as administrator) 8/11 . unload the driver again.~ im Driver! B··· Ib' Header files : G stdefx. click at the "Install BazisLib" button to do it automatically. always use the "Settings->Disconnect from target" command in VisualDDK console. select "File->New- 2.cpp stdafx. Creating a sample ramdisk driver VisualDDK driver wizard allows creating driver projects based on BazisLib..cpp r. it is a good time to create another Virtual Machine snapshot. you will simply need to restore the snapshot and press "start debugging driver". VisualDDK will do the rest. To do it safely. When you want to debug a driver later. then select "Visual C++ -> VisuaIDDK->VisuaIDDK driver wizard" .1111 B !. an object-oriented library for simplified driver design. One of sample projects provided by BazisLib is the ramdisk driver. 3.. However. please note that shutting down the VM while Visual Studio is running could hang the latter. 25. You won't have to wait until the OS starts or start anything manually.J Solution 'Deiverj' (1 '8 ntueptcedrrfver 168 Ox00009000 2 DRVO _LEGACY _DRIVER void ii: +Ox7ed -jflx 70 ntl IopLoadUnloadDriver nnexpworkerrbread-cxtud ntl Psp5Ys~Thread5tartu.. >Project".feqdSfarb. If you have not installed BazisLib.sysprogs. When you're done checking out the debugging functions.Jp +O~ ig" unsigned 9:1<:983c5000 -20480 void :i: 24. VisualDDK monitor is running and no custom drivers are loaded.. G Visual[)[)KHel"e. The following walkthrough will show how to create a project based on it. 0 IlJ ResourcefilesSource files ~ Driverk. 1. Select "A bus-based RAMDISK driver (BazisLib)" from the driver template list: articles.

Ie: An empty WDM driver [Bazialib] A simple WDM driver with IOCTL handlers A simple. Deb"g/Relea.chain ·se'lecP. o Fore more details. Go to yourVM and confirm the installation of an unsigned driver. 8.j.• '.org/visualddk/firstdriverl 9/11 . When a driver installation prompt appears. a LOK::::J 4. 7.ramdlektest DDKiWUK version to use: I E\WINQQK\7'600. 0 'Import existing source flies ---. VisIJal Studio compiler will be "sed ann the project settinqs Will be stored inside a .rth the' compiler and lin~er .cpp.1~.. press "install driver". flU I liD USing \Ii. right-click at the "computer" item in Start Menu.uaIDDKHeipers..i.e'fla~" I 7 ~ L_ !'!define __ ~ _IJEBClG + lIQefine ElBG=1 ~'I ~ Add support forx€4target @ Generate semple sources rIDn_'v_er--. ".:c-in~jl=lat". D~yi¢:e:'Glass.e~: =-_=--.---. 0 "" ~ lrtsen \ii." ~====' [ HOC ramdiskte~Driver . look into the OnStartDeviceO 6..• GeDerate ':in! ". select "Manage" and go to Disk Management. method in RamDiskBus.Ub) Dn~. ' dnve!{8a>MJb) dnver (Ba. WOM bus driver (Ba~slib) A . you will need to create a partition manually using Disk Management snap-in in Computer Management.. Build the project by pressing Ctrl+Shift+B.ual Studio proiect. Thus.1 remdlsktest T ool.t.erclass.~f1 system and W D ~ eomciler ueccrmreodedl USE.the WDK. Select default launching options. You will see the 2 virtual disks: articles.h A sirrple WD M (Plug-fl·Play) driver A simple :Iegacy (NT4 st~e) driver . The second one is 32MB large and has no precomputed MBR.{I·Windo". switch to your VM. Start your driver by selecting "Debug->Start debugging driver". This sample project creates 2 RAM disks: o The first one has a size of 16MB and contains a precomputed MBR describing 1 partition.ettiClgs 'et up fer..lib) Hardware IGle roolliamdisktest IN FOa ss : U·lMil=U~IIII§31~~mif A sirnple :legaCj' (NT4 ~e) (Ba. 5.¥~'rojJil~'. This disk will immediately receive a drive letter when Windows recognizes it.systern 'and' compiler ".11 create normal C. If everything went right.

.i narndisktest device L.c.?[tle:n.t Services andApplication Bius Enu m erator L.~' C5il[}".. rosoft Com posite Battery Microsoft System Managemen.tem 10'01.~~ AdvancedConfiquration and Powerin!emace !. .!ction lliew Help . .~' Com po. Simple 0::.t: ..nagememt (Lo ~ ~j Sy.r More Actions Act!dns NTF WF ® Pertormance d Device Storage j.t BIOS Driver Microsoft Virtual Drive Enumerator Driver L.OO GB tGrnliMe C!l[}is:kl Eia.~ Comperter..ROM d)-ElOM 39iMB Online 0 VB(}XA 391MB C Healthy ~I ru • Un'lrc.. ~ @ T ask Scheduler t> I~ (I Volume I Laivouf 11v~'.org/visualddk/firstdriverl 10/11 .. Now go to device manager (press Win+8reak and select "device manager")..k'j) Sa. Open ramdisk.. articles..8 VBOXAOOmO NS_4.l!crr.1 ~~ VMWin7x861 ~ .J~ers.~i'( 3i ~B Online 31 MB tlnalloc QDis:~~ - - Basic 16:MB Online (F:) l&MI Heal! .Q_L~t~~:ana~.. and! Grou Manager.~ L.sysprogs..~ed • Primary 'parliho[1 I 9. ([)~ Simple rrr NTF NTF.. Virtual SCSI Devi'. Select "View->Devices connection" and ensure that the virtual disks are present: ~ II. The breakpoint wil hit: method.cpp and put a breakpoint on RamDisk::ReadO Switch to VM and open the newly created disk in Explorer. file by Device Manager !.eI FiIe! Ha:s~( Basic Bas~( Basic ~ WI ~ l> ~~ ~~ til Event Viewer Shared Folders Local t.y Software Device Enumerator ~.~ !:!elp' I~ Computer Ma.~~ IPlug:and: Pl1a.~ (ACpn PC i····~ Mi'. Now let's do some debugging.. I--~---------------..~" lIJMBus Roo! Bus Enumerator ~ Virtual SCSI Device Remote Desktop Device Redirector Bus ~ .Management Iile .!'!ction y.e e L.. (F:) Simple Simple ~ System Reserved .

decoded it and invoked a simple ReadO method. :_MBREmulatorT <BazisLib :DDK: :-SCSI ramdiskte~t! BazisLib :DDI< :'SCSI: :BasicSCS.3[siE~ecuie'(unsig~ed'kmg :DispatrnRo.~tine{da~s -Baj~Lib:' ~DDk:: Inc~~rl)gIrp BazisLIb: _BlOCKI'cic = Ox. : ramdisktest!Bazislib :ODK.IPDO: :6~. BazisLib is available under LGPL.\svn'lp:zsliblp:zsddk' nt! Pspsvstern ThreadStartup 11.tru~t jo _ST AC<' 'C/C ~tru[f _SCsI_REQUEST = -i DDK.sysprogs. All rights reserved.sLib ramdisktest! Bansllb.: :O~~ul~peratio~{unsig~~d ranidisktes.IPDO: +Oxge :DispatrnROUtine{class :OOK: :Incomlng"Irp = Irp OX9S783d38.~·878 3~38"~.S·CSI:·:BasitSCSiBlockUe~ke: :DD" 11/11 .Impressum I Term.lBlockDe~ice.ecuieCode "Irp char Reouesttype = Ox2J? "('I struct _CDB: :_ 'Cjc char Reouestrvpe = 01 ='Ox:28 'e v'oid i: pck. Check out the call stack to see how BazisLib automatically routed the request from the to the worker thread.:·:.s.01f(J4) [e: Iprojects. If you want to implement your own virtual disk driver. :DD~: :Vir'tuaIS'cS.: i6d~vi[e: ::ExecuteSCSIRe'quest{uns'igned 5csiE.Requestinspatcher'Threadscdyf v cid *" pParam O~842.::Vlr. c/C [Ie :DDK: :Device: .void ~pBuffe:L ~ = m TotalSi2e _ EyteOffse~.t!BazisLib r~~diskb=st!BajsLib ramdisktest!'B~. . of Use I QQmright I Privacy Policy articles.tuaISC5. consider making your own implementation of the BazisLib: :AIBasicDisk interface and reusing BazisLib code to handle all OS-related issues.c/C struct _IO j. as © 2012 Sysprogs UG (haftungsbeschriinkt).

Sign up to vote on this title
UsefulNot useful