[version] Up version to 0.0.1.7
authorShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Sun, 16 May 2010 21:23:51 +0000 (17:23 -0400)
committerShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Sun, 16 May 2010 21:55:05 +0000 (17:55 -0400)
This version sees a couple of changes:

- AoE has been split off as a separate driver that depends
on the WinVBlock bus driver.  This removes the bus driver's
dependency on NDIS.SYS.  You can boot from an AoE disk still,
but pay attention to the service load order; you want NDIS to
load first, then your NIC's driver, then WinVBlock, then AoE.

- Geometry detection has been added for file-backed disks, so
you can hopefully do:

  winvblk attach c:\foo.hdd h 0 0 0

and get the right geometry.

- We now always create a root-enumerated bus device.  There's
no longer a need to add the /WINVBLOCK=BUS=1 option to the
BOOT.INI or TXTSETUP.SIF files.

CHANGES.log
makeinf.bat
src/bus/winvblock.rc

index 064e2c8..c6e423c 100644 (file)
@@ -1,4 +1,587 @@
 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Sun May 16 17:23:51 2010 -0400\r
+\r
+    [version] Up version to 0.0.1.7\r
+    \r
+    This version sees a couple of changes:\r
+    \r
+    - AoE has been split off as a separate driver that depends\r
+    on the WinVBlock bus driver.  This removes the bus driver's\r
+    dependency on NDIS.SYS.  You can boot from an AoE disk still,\r
+    but pay attention to the service load order; you want NDIS to\r
+    load first, then your NIC's driver, then WinVBlock, then AoE.\r
+    \r
+    - Geometry detection has been added for file-backed disks, so\r
+    you can hopefully do:\r
+    \r
+      winvblk attach c:\foo.hdd h 0 0 0\r
+    \r
+    and get the right geometry.\r
+    \r
+    - We now always create a root-enumerated bus device.  There's\r
+    no longer a need to add the /WINVBLOCK=BUS=1 option to the\r
+    BOOT.INI or TXTSETUP.SIF files.\r
+\r
+commit 908b420c949dc11e0a9318fd7643ee7a5c649227\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Sun May 16 17:19:37 2010 -0400\r
+\r
+    [aoe] Add files to support 64-bit compilation\r
+    \r
+    As in, AMD64/x64...  Not Itanium/IA-64.\r
+\r
+commit e1b6cf336cdb93323302fe1afcdae1782a36bfe5\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Sun May 16 17:17:45 2010 -0400\r
+\r
+    [project] Add to git ignore file\r
+    \r
+    Ignore warning, error, log files.  Ignore object\r
+    directories.\r
+\r
+commit 5200bee416645443b0ee672263d9bc30fa0ed365\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Sun May 16 15:18:38 2010 -0400\r
+\r
+    [bus/disk,bus/filedisk] Add geometry detection\r
+    \r
+    Now you can specify something like:\r
+    \r
+      winvblk attach c:\foo.hdd h 0 0 0\r
+    \r
+    and geometry detection will be attempted when the first\r
+    sector of the disk is accessed.  We use some of the logic\r
+    from H. Peter Anvin's MEMDISK to look at FAT and MBR\r
+    params.\r
+\r
+commit 2549ed2921c3d63e38a609da89acb16101fdd0c9\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Mon May 10 23:41:12 2010 -0400\r
+\r
+    [httpdisk] Apply WinVBlock-as-usual indentation\r
+\r
+commit c108b940d666d462e0cbb30356fbe25f63ee1f36\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Mon May 10 23:38:24 2010 -0400\r
+\r
+    [httpdisk] Dos2Unix source files\r
+\r
+commit 1fb699648a5bc32fc40de044ce70fb427cb8eddc\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Mon May 10 23:32:34 2010 -0400\r
+\r
+    [httpdisk] Support compilation under DDK 6001.18001\r
+    \r
+    A couple of changes so that HTTPDisk and its mounting\r
+    utility compile under the Windows Driver Development Kit\r
+    version 6001.18001, which is what I've been using for\r
+    WinVBlock.\r
+\r
+commit 6d26bad9697bd83101172cbb525d26ddb40a905c\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Mon May 10 22:54:49 2010 -0400\r
+\r
+    [httpdisk] Initial population into WinVBlock repository\r
+    \r
+    The extremely nice work of Bo Brantén found at:\r
+    \r
+    http://www.acc.umu.se/~bosse/\r
+    \r
+    includes HTTPDisk, a read-only HTTP SAN driver, of sorts.\r
+    \r
+    He has very kindly provided permission for its incorporation\r
+    into WinVBlock.  It will be developed to be a "feature\r
+    driver", just as AoE is a "feature driver".\r
+    \r
+    Please note that HTTPDisk is GPLv2 or any later version.\r
+\r
+commit 1037e1e1bf67392404c63f535ab22dc267499025\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Mon May 10 22:05:58 2010 -0400\r
+\r
+    [project] Split AoE off, part 3\r
+    \r
+    At last, the unfortunately monolithic AoE module can be\r
+    separated from the bus, RAM disk and file-backed disk\r
+    code.  This is the final part of the estimated 3 commits.\r
+    \r
+    Now that AoE is its own driver, but dependent on WinVBlock,\r
+    we have to consider the service load order in a booted-from\r
+    scenario.\r
+    \r
+    I've re-ordered HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\\r
+    Control\ServiceGroupOrder\ : List : REG_MULTI_SZ as follows:\r
+    \r
+    ...\r
+    System Bus Extender\r
+    * NDIS Wrapper\r
+    * NDIS\r
+    SCSI miniport\r
+    ...\r
+    \r
+    Instead of:\r
+    \r
+    ...\r
+    System Bus Extender\r
+    SCSI miniport\r
+    ...\r
+    Streams Drivers\r
+    * NDIS Wrapper\r
+    COM Infrastructure\r
+    ...\r
+    PNP_TDI\r
+    * NDIS\r
+    TDI\r
+    ...\r
+    \r
+    And I use the following Group values for the two drivers:\r
+    \r
+    ...\Services\WinVBlock : Group : REG_SZ : SCSI miniport\r
+    ...\Services\AoE : Group : REG_SZ : SCSI Class\r
+    \r
+    And of course as usual, you will want your NIC driver set\r
+    to boot-start.  Loading should thus be ordered as follows:\r
+    \r
+    NDIS\r
+    NIC driver\r
+    WinVBlock\r
+    AoE\r
+\r
+commit 0e3582a09583afc01260f7d1ddaf3ee6d22050d1\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Mon May 10 21:40:43 2010 -0400\r
+\r
+    [project] Split AoE off, part 2\r
+    \r
+    At last, the unfortunately monolithic AoE module can be\r
+    separated from the bus, RAM disk and file-backed disk\r
+    code.  This is part 2 of an estimated 3 commits.  Do not\r
+    expect AoE to work until the third commit.\r
+\r
+commit 3df7614b527e16a04b54907812c8aca7344bb42d\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Mon May 10 21:33:11 2010 -0400\r
+\r
+    [project] Split AoE off, part 1\r
+    \r
+    At last, the unfortunately monolithic AoE module can be\r
+    separated from the bus, RAM disk and file-backed disk\r
+    code.  This is part 1 of an estimated 3 commits.  Do not\r
+    expect AoE to work until the third commit.\r
+\r
+commit 171f46360ac507ad261c21006c8ab3af5fa5a0f9\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Mon May 10 20:13:00 2010 -0400\r
+\r
+    [debug] Export xDbgPrint\r
+    \r
+    Because AoE (and every other module) uses it.\r
+\r
+commit 7726ae5bc2d49c992ebd2ade36cd51efb100bd34\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Mon May 10 20:09:34 2010 -0400\r
+\r
+    [driver] Export Driver_CompletePendingIrp\r
+    \r
+    Because AoE uses it. *sigh*  I'm in a hurry to finish this\r
+    split so that AoE can be its own driver.\r
+\r
+commit 5b532480e2edb02e237242bd044e0bb62e78c5a6\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Mon May 10 15:26:16 2010 -0400\r
+\r
+    [disk] Export disk device operations\r
+    \r
+    Because AoE uses them.\r
+\r
+commit 785957d74fae19dedea8ac37debe383246906f1a\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Mon May 10 15:17:52 2010 -0400\r
+\r
+    [aoe] Implement a disk close routine\r
+    \r
+    To avoid referencing the disk__default_close() function in\r
+    the disk module.\r
+\r
+commit 4209907fabccc3e26e7146671f4cf428949fcb42\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Mon May 10 15:11:24 2010 -0400\r
+\r
+    [driver] Export Error function\r
+    \r
+    Because AoE uses it.\r
+\r
+commit 281a67e2a8e75c825aa110982b1592f198e3b850\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Mon May 10 15:02:58 2010 -0400\r
+\r
+    [bus,aoe,irp] AoE mini IRP handling in AoE module\r
+    \r
+    The bus module pretty well needs to expose the bus device to\r
+    other drivers so that they can register their mini IRP\r
+    handling tables with it.  bus__dev() now yields the FDO.\r
+    \r
+    The un-register function was mis-named in the IRP module.\r
+    \r
+    We are now registering the AoE IOCTL handling twice, but\r
+    this is not a big deal.  When AoE is finally split off,\r
+    the bus module will no longer register anything AoE-related.\r
+\r
+commit 356ee317a0a8c9eb0e85fe1edffe9a9853643b99\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Mon May 10 14:13:57 2010 -0400\r
+\r
+    [project] Change get_XXX_ptr to preprocessor macro\r
+    \r
+    I don't think the inline specifier was working anyway.\r
+\r
+commit 7feecadb08d7f09fb745ac1b68090ef3656db8e6\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Mon May 10 13:57:18 2010 -0400\r
+\r
+    [bus] bus__add_child only uses the single bus\r
+    \r
+    The bus__add_child() function has been modified to simply\r
+    use the only bus device we allow, rather than taking an\r
+    argument.  Also, we invalidate the bus relations instead\r
+    of the caller.\r
+\r
+commit dc26e3d56f44ae23c8f9d1523b7d9ce9cc853a87\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Mon May 10 13:18:01 2010 -0400\r
+\r
+    [registry,aoe] Move AoE Registry setup into AoE module\r
+    \r
+    AoE needs to register its protocol with NDIS and also does\r
+    some Registry manipulation.  This logic has been moved from\r
+    the Registry module into the AoE module (which is getting\r
+    quite monolithic now).  This is still towards splitting AoE\r
+    into its own driver.\r
+\r
+commit 819355c4ba81c161345489c7c8568e32155a5f2f\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Mon May 10 12:40:32 2010 -0400\r
+\r
+    [registry] Change Registry_NoteOsLoadOptions function\r
+    \r
+    Renamed to registry__note_os_load_opts().  Now takes an\r
+    argument instead of storing directly to a global in the\r
+    driver module.\r
+    \r
+    We also free this from the driver module at driver unload\r
+    time, as well.\r
+\r
+commit 5ffbd67823df15e624c55790e8f5744b6b11832f\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Mon May 10 12:12:53 2010 -0400\r
+\r
+    [registry] Export handy functions by Michael Brown\r
+    \r
+    AoE will want to do some Registry manipulation once it has\r
+    been split from WinVBlock, so we might as well export some\r
+    functions it (or other future drivers) could make use of.\r
+\r
+commit b05c54be05c1c881d9ae482db41a26780c414230\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Mon May 10 11:54:06 2010 -0400\r
+\r
+    [aoe] Do not truncate fractional end cylinder\r
+    \r
+    Ran into problems with AoE to a disk image with geometry\r
+    constrained to QEmu's expectations.  We used to truncate\r
+    a fractional end cylinder for the disk, but this has been\r
+    changed with the hopes that most disk consumers will use\r
+    LBA.\r
+    \r
+    We should really address the FIXME and use geometry from\r
+    the MBR.\r
+\r
+commit 481bdb089027a722eac1f514bbb5c75ea3a7bf15\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Sun May 9 18:39:36 2010 -0400\r
+\r
+    [project] Match Entry messages with Exit messages\r
+    \r
+    Simply output messages when functions return via the\r
+    "usual" or expected path, so we can track entry and exit.\r
+\r
+commit 0a40d1be143310c2dce11d05f1598457b175267f\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Sat May 8 16:12:55 2010 -0400\r
+\r
+    [aoe_ioctl] Merge header into AoE header\r
+    \r
+    Also moved a single extern function declaration needed\r
+    by the AoE protocol module right into the protocol\r
+    module itself, thus avoiding complications for the\r
+    user-space "mount" utility having to know about the DDK.\r
+\r
+commit 13ed736ced14a4cd339b491a29d8cbb8452aa23c\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Sat May 8 15:59:59 2010 -0400\r
+\r
+    [aoe] Make AoE_Start private\r
+    \r
+    Renamed to start().  Only the AoE module uses it.\r
+\r
+commit 6701e254d2fc02c1c7850a728f6b9b0ead3843ce\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Sat May 8 15:56:28 2010 -0400\r
+\r
+    [aoe] Rename AoE_ResetProbe to aoe__reset_probe\r
+    \r
+    Used by the AoE protocol module, too.\r
+\r
+commit b1a3cc9a7fb8de3fce5c6e4887455ac413a926e8\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Sat May 8 15:54:19 2010 -0400\r
+\r
+    [aoe] Rename AoE_Reply to aoe__reply\r
+    \r
+    Used by the AoE protocol module, too.\r
+\r
+commit 4525af4ffb801aee5895f480b204cebed2fb78ce\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Sat May 8 15:50:12 2010 -0400\r
+\r
+    [aoe] Make AoE disk operations private\r
+    \r
+    An amendment to commit\r
+    818ebaaf58fcfbad04c7760ca4db1edfb4d146f1\r
+\r
+commit 02d2e86e21d7ae3dbf078a18bd511cf30bdf0860\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Sat May 8 15:46:51 2010 -0400\r
+\r
+    [aoe] Make aoe__target_list private\r
+    \r
+    An amendment to commit\r
+    793f876c1aa0dddff0d9b2f402ed105e0f7a89b5\r
+\r
+commit 818ebaaf58fcfbad04c7760ca4db1edfb4d146f1\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Sat May 8 15:42:59 2010 -0400\r
+\r
+    [aoe] Make AoE disk operations private\r
+\r
+commit 71d0b1eb484ca68804541148f9ca39e34cf1650d\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Sat May 8 15:40:35 2010 -0400\r
+\r
+    [aoe] Rename aoe__get_disk_ptr to get_aoe_disk_ptr\r
+    \r
+    Since it's entirely within the AoE module now.\r
+\r
+commit 793f876c1aa0dddff0d9b2f402ed105e0f7a89b5\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Sat May 8 15:38:39 2010 -0400\r
+\r
+    [aoe] Make aoe__target_list private\r
+    \r
+    Only AoE functions need to know the AoE target_list\r
+    type now.\r
+\r
+commit 2e84efe9b7747ee0b4f184d5cc575a699936b116\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Sat May 8 15:30:42 2010 -0400\r
+\r
+    [aoe] Make AoE search_state private\r
+    \r
+    Only AoE functions need to know about the search_state\r
+    enumeration now.\r
+\r
+commit 30d11d5b622caa47a6d57470e6964032ed20f611\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Sat May 8 15:27:51 2010 -0400\r
+\r
+    [aoe] Make aoe__disk_type private\r
+    \r
+    Only AoE functions need to know about this type now.\r
+\r
+commit 5110aec0e75bdce0d0f3b3a2100a9ad64cf9244e\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Sat May 8 13:53:05 2010 -0400\r
+\r
+    [bus/bus_dev_ctl,bus/aoe] Move AoE IOCTLs into AoE module\r
+    \r
+    Still in the process of splitting AoE off, we move AoE-\r
+    specific IOCTL handling into the AoE module.\r
+\r
+commit bb0cc2d79dfbfbc8ac90f8815653f3e867819ec1\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Sat May 8 12:35:20 2010 -0400\r
+\r
+    [bus/disk] Fix uninitialized mini IRP handling table chain\r
+    \r
+    Before registering a mini IRP handling table with a device,\r
+    we should really make sure the chain of tables is empty.\r
+    Oops.\r
+\r
+commit 4ce836b52af4afb5bc39e82f108f9e46ba8bd76e\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Fri May 7 20:37:19 2010 -0400\r
+\r
+    [mount,aoe] Move AoE IOCTLs into their own file\r
+    \r
+    Starting to split AoE from the rest.\r
+\r
+commit 0f090193e606d935165ae8ba4428a52d15939948\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Fri May 7 17:33:43 2010 -0400\r
+\r
+    [irp] Use mini IRP handling chain\r
+    \r
+    When an IRP dispatch comes in, we special-case a power\r
+    IRP, or pass the IRP along to irp__process().\r
+    \r
+    irp__process() will walk each table of IRP handlings\r
+    in the device's chain of registered tables, looking for\r
+    an IRP handling that matches the IRP major and minor\r
+    codes.  This is roughly similar to the PDO stacked\r
+    beneath multiple FDOs approach, but just a little less\r
+    complex and with perhaps less memory and management\r
+    overhead.\r
+    \r
+    A feature (provided by a driver) can register handled\r
+    IRP types on a device, then WinVBlock should use that\r
+    feature's functions to process the IRP.  I hope WinVBlock\r
+    can call functions in another driver in this way. :)\r
+    \r
+    So now when a bus or disk device is created, the default\r
+    driver IRP handling table is registered as well as the\r
+    device-specific handling table (bus or disk).  We used\r
+    to manually build a large table with these tables copied\r
+    into it, but not anymore.\r
+\r
+commit c6ca22ad43a0db18c807bb5dcc5e48ccffff3fd2\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Fri May 7 10:53:21 2010 -0400\r
+\r
+    [irp] Move mini IRP handling into its own module\r
+    \r
+    We introduce bus/irp.c for the miniature IRP handling logic.\r
+    \r
+    We also introduce code for an IRP handling table chain.  The\r
+    goal of such a chain is to allow IRP handlings to be\r
+    dynamically added and removed for a device.  An example use\r
+    would be for the AoE system to register IOCTL handling with\r
+    the WinVBlock bus device, so that the bus processes the\r
+    IOCTLs.  If the AoE system is unloaded, it should be able to\r
+    un-register the handling of these IOCTLs.\r
+    \r
+    Currently, the IRP handling table chain is not used, but\r
+    this will change in a future commit.\r
+\r
+commit 5e000d42647f5afb63a2c74061f7199d157c164e\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Thu May 6 19:54:07 2010 -0400\r
+\r
+    [headers] Introduce generic pointer type\r
+    \r
+    We include winvblock__any_ptr to represent a void *.\r
+\r
+commit 2c9dc5bd3ec4e100fe0e583758500e1982e9170f\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Wed May 5 19:15:10 2010 -0400\r
+\r
+    [bus/bus] Remove STDCALL for argless func\r
+    \r
+    Bus_Stop() takes no arguments, so it doesn't need the\r
+    STDCALL specifier.\r
+\r
+commit ba1d96bbb2254e9f9a9ff5ee59172e1fff167c98\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Wed May 5 19:12:34 2010 -0400\r
+\r
+    [bus/driver] Remove reinitialization declaration\r
+    \r
+    Should have been removed in commit\r
+    3afe1fddd34f0e0187dca6bb569d9f8353aab07a\r
+\r
+commit 32a89e9dd90e58b98b48a124d6e3760ec706440c\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Tue May 4 18:43:14 2010 -0400\r
+\r
+    [build] Build bus driver to provide exports\r
+    \r
+    Using the helpful information at this web page[1], we\r
+    now compile to provide a .LIB so that other drivers\r
+    can link against it and use functions that we might\r
+    choose to export.\r
+    \r
+    Export functions by beginning with winvblock__lib_func\r
+    in the declaration.\r
+    \r
+    [1] http://www.wd-3.com/archive/KernelDlls.htm\r
+        Tim Roberts\r
+\r
+commit 3f338d2b7296009a8fd5714837da328b4f15bb29\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Mon May 3 14:57:31 2010 -0400\r
+\r
+    [bus/driver] Always create the root-enumerated bus dev\r
+    \r
+    Instead of requiring the user to specify a BOOT.INI/TXTSETUP.SIF\r
+    /WINVBLOCK=BUS=1 option, we will simply always provide a root-\r
+    enumerated bus device.  It's probably less complicated that way.\r
+\r
+commit 4e3103dec6b4e6d753f92bca5c9831fb2040c608\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Fri Apr 30 19:10:11 2010 -0400\r
+\r
+    [devel] Update wxDev-C++ project file\r
+    \r
+    Should reflect directory & file shuffling\r
+\r
+commit a9408bd55b72c40de677ddc4ee9c3471178b5ccd\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Fri Apr 30 19:03:07 2010 -0400\r
+\r
+    [build] Move majority of code into bus subdir\r
+    \r
+    The plan is to split AoE functionality off into its own driver,\r
+    to avoid WinVBlock's dependency on NDIS for those users who\r
+    do not require or desire the AoE feature.\r
+    \r
+    Similarly, future features with dependencies can have their own\r
+    directories and their own .SYS drivers.\r
+    \r
+    For now, all driver code including AoE has been moved into bus/,\r
+    but AoE will eventually come out of there.\r
+    \r
+    A strategy needs to be determined to allow for the single bus\r
+    device to accept features in a modular fashion, and to route\r
+    applicable feature-wide control signals to each feature's driver.\r
+    \r
+    For example, the WinVBlock bus (an "HDD controller" of sorts) can\r
+    support certain virtual disk types natively.  When an AoE driver\r
+    starts, it could look for the bus and register itself as a\r
+    feature if the bus is found.  Thenceforth, a user-land utility\r
+    could request an AoE-attach of the WinVBlock bus, who could forward\r
+    that request on to the AoE driver.\r
+\r
+commit c07f380b83d69643dbb01a9c68a32dd49e175511\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Fri Apr 30 17:26:12 2010 -0400\r
+\r
+    [build] Move userland utility into subdir\r
+\r
+commit bdd8c75f0dbe3bcda2fff3a3fad548bad77030e0\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Fri Apr 30 17:16:05 2010 -0400\r
+\r
+    [build] Move driver loader into subdir\r
+\r
+commit 5143a3b691e6e11c559d32635efddf3002572f38\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
+Date:   Fri Apr 30 16:15:48 2010 -0400\r
+\r
+    [build] Move PXE NBP sources into nbp subdir\r
+    \r
+    It's time to re-organize the project's directory structure.\r
+\r
+commit 41d3e4ac4ae6099115d64f57c4b325a788d977bd\r
+Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
 Date:   Thu Jan 14 14:19:19 2010 -0500\r
 \r
     [version] Up version to 0.0.1.6\r
index fa628ac..750bc93 100644 (file)
+=============================@( GOto  :@:  CRAZY )=============================\r
+123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789\r
+ÉÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍ»\r
+º _ _ _ Each line of this file is optimally formatted for 79 columns. _ _ _ _ º\r
+º _ _ _ Best viewed from a command-line interface (a DOS box), with the _ _ _ º\r
+º _ _ _ _ 'type' command or in Windows Notepad with the Terminal font _ _ _ _ º\r
+ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ\r
+º Programmed by Shao Miller @ 2010-05-14_19:52. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ º\r
+ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\r
+\r
+\r
+\r
+-----MAIN-----\r
+===\r
+\r
+ Extract the .INF file for WinVBlock's bus driver\r
+\r
+===\r
+:_main\r
+\r
+%@% Extracting WinVBlk.INF...\r
+%@%\r
+mkdir bin %_%\r
+call :_extract WinVBlk > bin\WinVBlk.INF\r
+%Q%\r
+\r
+-----EOF-----\r
+\r
+\r
+\r
+-----WinVBlk-----\r
+[Version]\r
+Signature="$Windows NT$"\r
+Class=SCSIAdapter\r
+ClassGUID={4D36E97B-E325-11CE-BFC1-08002BE10318}\r
+Provider=WinVBlock\r
+CatalogFile=winvblk.cat\r
+DriverVer=05/16/2010,0.0.0.7\r
\r
+[Manufacturer]\r
+WinVBlock=WinVBlockDriver,,NTamd64\r
+  \r
+[WinVBlockDriver]\r
+"WinVBlock Driver"=WinVBlock,Root\WinVBlock, Detected\WinVBlock\r
\r
+[WinVBlockDriver.NTamd64]\r
+"WinVBlock Driver"=WinVBlock.NTamd64,Root\WinVBlock, Detected\WinVBlock\r
\r
+[SourceDisksNames]\r
+0="Install Disk"\r
\r
+[SourceDisksFiles]\r
+winvblk.exe=0\r
+wvblk32.sys=0\r
+wvblk64.sys=0\r
\r
+[DestinationDirs]\r
+Files.Driver=12\r
+Files.Driver.NTamd64=12\r
+Files.Tools=11\r
\r
+[Files.Driver]\r
+wvblk32.sys\r
\r
+[Files.Driver.NTamd64]\r
+wvblk64.sys\r
\r
+[Files.Tools]\r
+winvblk.exe\r
\r
+[WinVBlock]\r
+CopyFiles=Files.Driver,Files.Tools\r
\r
+[WinVBlock.NTamd64]\r
+CopyFiles=Files.Driver.NTamd64,Files.Tools\r
\r
+[WinVBlock.Services]\r
+AddService=WinVBlock,0x00000002,Service\r
\r
+[WinVBlock.NTamd64.Services]\r
+AddService=WinVBlock,0x00000002,Service.NTamd64\r
\r
+[Service]\r
+ServiceType=0x00000001\r
+StartType=0x00000000\r
+ErrorControl=0x00000001\r
+ServiceBinary=%12%\wvblk32.sys\r
\r
+[Service.NTamd64]\r
+ServiceType=0x00000001\r
+StartType=0x00000000\r
+ErrorControl=0x00000001\r
+ServiceBinary=%12%\wvblk64.sys\r
+-----EOF-----\r
+\r
+\r
+\r
+-----TESTING-----\r
+This is a wacky batch file.  There is stuff all over the place.\r
+More comments.\r
+\r
+\r
+:_test\r
+\r
+%@% This is the main part of the batch file\r
+%@%\r
+\r
+%@% Showing FILE1...\r
+%@%\r
+call :_extract FILE1\r
+%@%\r
+\r
+%@% Showing INIFILE...\r
+%@%\r
+call :_extract INIFILE\r
+%@%\r
+\r
+%@% Showing FILE2...\r
+%@%\r
+call :_extract FILE2\r
+%@%\r
+\r
+%@% Showing LIBRARY...\r
+%@%\r
+call :_extract LIBRARY\r
+%@%\r
+\r
+%@% Trying hex...\r
+%@%\r
+call :_hexchar 01020304\r
+\r
+%Q%\r
+\r
+\r
+\r
+-----EOF-----\r
+\r
+\r
+\r
+-----LIBRARY-----\r
+\r
+\r
+\r
+===\r
+\r
+ Sets _line to the line number that is found for\r
+ the -----SECTION----- "embedded file" found in this file\r
+\r
+===\r
+:_find_section\r
+\r
+set _line=\r
+for /f "delims=:" %%a in ('findstr /b /n /c:-----%1----- %~sf0') do (\r
+  set _line=%%a\r
+  )\r
+%C%\r
+if "%_line%"=="" (\r
+  %@% Section not found!\r
+  %E%\r
+  )\r
+%Q%\r
+\r
+\r
+\r
+===\r
+\r
+ Extract a section from this batch file.  Blank lines and\r
+ the special illegal character are excluded from the output\r
+\r
+===\r
+:_extract\r
+\r
+call :_find_section %1\r
+%QOE%\r
+for /f "delims=%_ill% skip=%_line%" %%a in (%~sf0) do (\r
+  if "%%a"=="-----EOF-----" (\r
+    %Q%\r
+    )\r
+  %@%%%a\r
+  )\r
+%Q%\r
+\r
+\r
+\r
+===\r
+\r
+ Set variable to a generated unique string (we sure hope)\r
+\r
+===\r
+:_unique_str\r
+\r
+set _unique_str=%time::=_%\r
+set _unique_str=%_unique_str:.=_%\r
+set _unique_str=%_unique_str%_%random%\r
+set %1=%_unique_str%\r
+set _unique_str=\r
+%Q%\r
+\r
+\r
+\r
+===\r
+\r
+ Display arbitrary characters, given hex input...  Except CR, LF, ':'\r
+\r
+===\r
+:_hexchar\r
+\r
+:: Next line is word-wrapped.  Add the hex and some magic to the Registry\r
+reg add hkcu\goto_crazy /v hex /t reg_binary /d 0D0A%13A4D414749434D414749430D0A /f %_%\r
+\r
+:: Save the data out of the Registry\r
+call :_unique_str _hive\r
+reg save hkcu\goto_crazy %_hive%.tmp %_%\r
+\r
+:: Clean the data out of the Registry\r
+reg delete hkcu\goto_crazy /f %_%\r
+\r
+:: Extract the data by the associated magic\r
+call :_unique_str _magic\r
+findstr MAGICMAGIC %_hive%.tmp > %_magic%.tmp 2> NUL\r
+\r
+:: Clean-up\r
+del %_hive%.tmp\r
+set _hive=\r
+\r
+:: Display the requested data; it's before the magic\r
+for /f "delims=:" %%a in (%_magic%.tmp) do (\r
+  %@%%%a\r
+  )\r
+\r
+:: Clean-up\r
+del %_magic%.tmp\r
+set _magic=\r
+%Q%\r
+\r
+\r
+\r
+===\r
+\r
+ Sets up the environment for common features used in the batch file\r
+\r
+===\r
+:@:\r
+\r
+:: Don't show commands\r
 @echo off\r
-mkdir bin 2>nul\r
-\r
-echo [Version] > bin/winvblk.inf\r
-echo Signature="$Windows NT$" >> bin/winvblk.inf\r
-echo Class=SCSIAdapter >> bin/winvblk.inf\r
-echo ClassGUID={4D36E97B-E325-11CE-BFC1-08002BE10318} >> bin/winvblk.inf\r
-echo Provider=WinVBlock >> bin/winvblk.inf\r
-echo CatalogFile=winvblk.cat >> bin/winvblk.inf\r
-echo DriverVer=01/14/2010,1.0 >> bin/winvblk.inf\r
-echo. >> bin/winvblk.inf\r
-echo [Manufacturer] >> bin/winvblk.inf\r
-echo WinVBlock=WinVBlockDriver,,NTamd64 >> bin/winvblk.inf\r
-echo.  >> bin/winvblk.inf\r
-echo [WinVBlockDriver] >> bin/winvblk.inf\r
-echo "WinVBlock Driver"=WinVBlock,Root\WinVBlock, Detected\WinVBlock >> bin/winvblk.inf\r
-echo. >> bin/winvblk.inf\r
-echo [WinVBlockDriver.NTamd64] >> bin/winvblk.inf\r
-echo "WinVBlock Driver"=WinVBlock.NTamd64,Root\WinVBlock, Detected\WinVBlock >> bin/winvblk.inf\r
-echo. >> bin/winvblk.inf\r
-echo [SourceDisksNames] >> bin/winvblk.inf\r
-echo 0="Install Disk" >> bin/winvblk.inf\r
-echo. >> bin/winvblk.inf\r
-echo [SourceDisksFiles] >> bin/winvblk.inf\r
-echo winvblk.exe=0 >> bin/winvblk.inf\r
-echo wvblk32.sys=0 >> bin/winvblk.inf\r
-echo wvblk64.sys=0 >> bin/winvblk.inf\r
-echo. >> bin/winvblk.inf\r
-echo [DestinationDirs] >> bin/winvblk.inf\r
-echo Files.Driver=12 >> bin/winvblk.inf\r
-echo Files.Driver.NTamd64=12 >> bin/winvblk.inf\r
-echo Files.Tools=11 >> bin/winvblk.inf\r
-echo. >> bin/winvblk.inf\r
-echo [Files.Driver] >> bin/winvblk.inf\r
-echo wvblk32.sys >> bin/winvblk.inf\r
-echo. >> bin/winvblk.inf\r
-echo [Files.Driver.NTamd64] >> bin/winvblk.inf\r
-echo wvblk64.sys >> bin/winvblk.inf\r
-echo. >> bin/winvblk.inf\r
-echo [Files.Tools] >> bin/winvblk.inf\r
-echo winvblk.exe >> bin/winvblk.inf\r
-echo. >> bin/winvblk.inf\r
-echo [WinVBlock] >> bin/winvblk.inf\r
-echo CopyFiles=Files.Driver,Files.Tools >> bin/winvblk.inf\r
-#echo DelReg=DelReg >> bin/winvblk.inf\r
-echo. >> bin/winvblk.inf\r
-echo [WinVBlock.NTamd64] >> bin/winvblk.inf\r
-echo CopyFiles=Files.Driver.NTamd64,Files.Tools >> bin/winvblk.inf\r
-#echo DelReg=DelReg >> bin/winvblk.inf\r
-echo. >> bin/winvblk.inf\r
-echo [WinVBlock.Services] >> bin/winvblk.inf\r
-echo AddService=WinVBlock,0x00000002,Service >> bin/winvblk.inf\r
-echo. >> bin/winvblk.inf\r
-echo [WinVBlock.NTamd64.Services] >> bin/winvblk.inf\r
-echo AddService=WinVBlock,0x00000002,Service.NTamd64 >> bin/winvblk.inf\r
-echo. >> bin/winvblk.inf\r
-echo [Service] >> bin/winvblk.inf\r
-echo ServiceType=0x00000001 >> bin/winvblk.inf\r
-echo StartType=0x00000000 >> bin/winvblk.inf\r
-echo ErrorControl=0x00000001 >> bin/winvblk.inf\r
-echo ServiceBinary=%%12%%\wvblk32.sys >> bin/winvblk.inf\r
-#echo LoadOrderGroup=NDIS >> bin/winvblk.inf\r
-echo. >> bin/winvblk.inf\r
-echo [Service.NTamd64] >> bin/winvblk.inf\r
-echo ServiceType=0x00000001 >> bin/winvblk.inf\r
-echo StartType=0x00000000 >> bin/winvblk.inf\r
-echo ErrorControl=0x00000001 >> bin/winvblk.inf\r
-echo ServiceBinary=%%12%%\wvblk64.sys >> bin/winvblk.inf\r
-#echo LoadOrderGroup=NDIS >> bin/winvblk.inf\r
-#echo. >> bin/winvblk.inf\r
-#echo [DelReg] >> bin/winvblk.inf\r
-#echo HKLM,SYSTEM\CurrentControlSet\Services\atapi,Group >> bin/winvblk.inf\r
-\r
-echo [Disks] > bin/txtsetup.oem\r
-echo disk = "WINVBLOCK DISK",\winvblk.inf,\ >> bin/txtsetup.oem\r
-echo. >> bin/txtsetup.oem\r
-echo [Defaults] >> bin/txtsetup.oem\r
-echo scsi = WINVBLOCK >> bin/txtsetup.oem\r
-echo. >> bin/txtsetup.oem\r
-echo [scsi] >> bin/txtsetup.oem\r
-echo WINVBLOCK = "WinVBlock Driver" >> bin/txtsetup.oem\r
-echo. >> bin/txtsetup.oem\r
-echo [Files.scsi.WINVBLOCK] >> bin/txtsetup.oem\r
-echo driver = disk,wvblk32.sys,WinVBlock >> bin/txtsetup.oem\r
-echo inf = disk,winvblk.inf >> bin/txtsetup.oem\r
+\r
+:: Display a message\r
+set @=echo.\r
+\r
+:: Exit a function or the batch file\r
+set Q=goto :eof\r
+\r
+:: Exit a function or the batch file on error condition\r
+set QOE=if errorlevel 1 %Q%\r
+\r
+:: Suppress standard output and error messages\r
+set _= ^> NUL 2^>^&1\r
+\r
+:: Signal an error condition\r
+set E=cd:%_%\r
+\r
+:: Clear an error condition\r
+set C=cd.%_%\r
+\r
+:: The unique character not to be used in "file" sections.  Please\r
+:: note that if you are displaying this very LIBRARY section, you\r
+:: will be missing this special character, since it's illegal!\r
+set _ill=#\r
+\r
+:: Goto the _main function\r
+goto :_main\r
+\r
+\r
+\r
+-----EOF-----\r
+\r
+\r
+\r
+-----INIFILE-----\r
+\r
+\r
+\r
+[IniSection]\r
+IniEntry = IniValue\r
+\r
+\r
+\r
+-----EOF-----\r
+\r
+\r
+\r
+-----FILE1-----\r
+\r
+\r
+\r
+this is some random text now?\r
+\r
+(:inp\r
+echo input\r
+echo input2\r
+goto :eof\r
+\r
+:skip\r
+)\r
+) )\r
+) ) )\r
+) ) ) )\r
+\r
+\r
+echo Line found at: %_line%\r
+\r
+\r
+echo Skipped\r
+goto :ha\r
+ -----FILE1-----\r
+blah blah\r
+\r
+\r
+\r
+-----FILE2-----\r
+:ha\r
+echo got to ha\r
+goto :eof\r
+\r
+\r
+\r
+-----EOF-----
\ No newline at end of file
index 1223b6f..d9f3f68 100644 (file)
@@ -1,6 +1,6 @@
 1 VERSIONINFO\r
-FILEVERSION 0,0,1,6\r
-PRODUCTVERSION 0,0,1,6\r
+FILEVERSION 0,0,1,7\r
+PRODUCTVERSION 0,0,1,7\r
 FILEOS 0x40004\r
 FILETYPE 0x3\r
 {\r
@@ -10,12 +10,12 @@ BLOCK "StringFileInfo"
        {\r
                VALUE "CompanyName", "Shao Miller"\r
                VALUE "FileDescription", "WinVBlock Virtual SCSI Driver"\r
-               VALUE "FileVersion", "0.0.1.6 (Jan-14-2010)"\r
+               VALUE "FileVersion", "0.0.1.7 (May-16-2010)"\r
                VALUE "InternalName", "WinVBlock Virtual SCSI Driver"\r
-               VALUE "LegalCopyright", "© 2008 V., © 2009 Shao Miller, All rights reserved, Licensed under GPL."\r
+               VALUE "LegalCopyright", "© 2008 V., © 2009-2010 Shao Miller, All rights reserved, Licensed under GPL."\r
                VALUE "OriginalFilename", "winvblock.sys"\r
                VALUE "ProductName", "WinVBlock Virtual SCSI Driver"\r
-               VALUE "ProductVersion", "0.0.1.6"\r
+               VALUE "ProductVersion", "0.0.1.7"\r
        }\r
 }\r
 \r