Building the UMDF 1.0 (beta) samples


I'm sorry it's taken me so long to write about this.  The
last week or two have been pretty hectic as we try to lockdown for Vista. 
But we still want people to download the UMDF 1.0 beta, and here are the
instructions for that.

The first step, of course, is to install the WDK.  You
can either use the Beta 2 WDK or the 5456 version which was recently published
on the beta site.  If you don't have either of these installed yet, you can
my earlier blog entry on

installing the WDK
.

Next you need to download the UMDF beta bits and install those
on your development machine as well.  Go to the connect.microsoft.com site
for the beta & look under downloads.  You will see several items but you
want to download and run either "UMDFx86" or "UMDF64" depending on the
architecture of your development machine (not your test machine). 
Download and install the MSI and you'll be ready to go.

To actually build one of the samples you'll want to start a
"Windows Vista and Windows Server Longhorn" build environment from the WDK. 
This is burried under "Windows Driver Kits" on your start menu.  Be sure
you either use the 5483 or 5456 WDK … if you have Beta 1 or the February CTP
kit still installed those may not work.

Once you've started your build window, you need to run a
script to tell it to use the headers & all from the MSI you just installed
rather than the ones in the kit.  Do the following:

    cd \WinDDK\WDF\UMDF10_xp
    set_umdf_env.cmd
    cd src\umdf
    build -cZ

And you've just built the UMDF 1.0 samples.

Next time i'll walk through installing the echo sample driver.

Comments (10)

  1. Shaul Eizikovich says:

    That was easy, Thank you.

    Now, trying to install the ‘skeleton’ was not that easy. I wish you try this.

    However, trying to debug skeleton is really frustrating.

    Going through the WDK manual, I learnt that I had to change the HostProcessDbgBreakOnStart registry entry, but unfortunately it does not exist.

    Than I had to attach WinDbg to process WUDFHost.exe which also did not exist. Outch.

    I must have been terribly out of line. Any idea?

    Thanks

      Shaul

  2. people says:

    When can you tell us how to install the sample of echo? I get nothing after follow the instruction from DDK.

  3. gadit says:

    Hi,

    I currently have a driver which is written in WDM.

    This driver receives bulk messages from the device, and transfers it to applications which are running on the host (they are polling all the time).

    At current state, only one application receives a message, and I want to extend the driver to send the messages to all applications which are registered to it (by send I mean respond to their Read operation).

    I will copy the message into buffers and use separate queues for each application.

    My question is, can I use UMDF to write a filter driver which will be above my WDM driver in the stack? Is it easier than to change the WDM driver? Or maybe it’s easier to write the whole driver from scratch, using UMDF only? And if so, does the current UMDF version (1.0) support it? (I saw that it does not have WinUSB)

    I need it to run on both XP and Vista. I understand that only 1.5 will support Vista. Will it be released on the short term? And while I’m waiting, is the beta version stable enough to use it to write the driver? Does the beta version and 1.5 version have full USB support for my goals?

    Thanks,

    Gadi Tunes

  4. PeterWieland says:

    Gadit –

    Yes i think you should be able to use UMDF for this, either as a filter or by rewriting your driver.  You can create a manual queue for each file object (parented off the device but have a pointer to it in the file and delete it when the file is closed) to enqueue requests from each app.  When you get data back you go to each file’s queue, pull off the next request (if there is one), copy the data into its buffer, then complete the request.

    Of course this gets a bit more complex if apps can issue reads smaller than the packet size … you might need to build a ring buffer for each file, but it’s definately possible.

    As to UMDF 1.5 – it’s complete and is in the final build of the Vista WDK (along with WinUSB+KMDF 1.5 which are required for USB support).

  5. PeterWieland says:

    people –

    i’ll make it my next post.  Sorry it’s taken so long to get back to this – I took some vacation time off after we shipped Vista.

    -p

  6. gadit says:

    Thank you for the info.

    I just want to make sure that it will be able to run on both Vista and XP (the UMDF 1.5 version), including all WinUsb features, and supporting power management.

    I saw that some modifications need to be made to the INF files in order for it to run on XP, I just want to make sure that that’s all, and there are no other differences or any USB feaures that I will encounter that cannot be implemented with UMDF 1.5.

    Thanks again,

    Gadi

  7. PeterWieland says:

    Gadit,

    I finally posted a blog entry on how to modify the UMDF sample INFs to use the WinUsbCoinstaller in order to install on both XP and Vista.

  8. RobD says:

    I am trying to build some of the umdf example drivers. I have downloaded the latest WDK and UMDF.

    I opend the Build environment "Windows XP Free Buld" en did first "C:WinDDKWDFUMDF10_xp>set_umdf_env.cmd".

    When I try to build the any of the UMDF example drivers, I get the folowing results:

    What is the problem?

    UMDFC:WinDDKWDFUMDF10_xpsrcumdfusbfx2_driverstep1>bcz

    BUILD: Compile and Link for x86

    BUILD: Start time: Sat Feb 10 15:15:19 2007

    errors in directory c:winddkwdfumdf10_xpsrcumdfusbfx2_driverstep1

    obj_path is set for you. You may not set it.

    BUILD: Examining c:winddkwdfumdf10_xpsrcumdfusbfx2_driverstep1 directory

    for files to compile.

    BUILD: Compiling c:winddkwdfumdf10_xpsrcumdfusbfx2_driverstep1 directory

    _NT_TARGET_VERSION SET TO WINXP

    Compiling – osrusbfx2.rc

    Compiling – dllsup.cpp

    Compiling – comsup.cpp

    Compiling – driver.cpp

    Compiling – device.cpp

    Compiling – generating code…

    Building Library – objfre_wxp_x86i386wudfosrusbfx2_1.lib

    link : error LNK1104: cannot open file ‘C:DOCUME~1TON’

    Building Library – objfre_wxp_x86i386wudfosrusbfx2_1.lib

    BUILD: Linking c:winddkwdfumdf10_xpsrcumdfusbfx2_driverstep1 directory

    _NT_TARGET_VERSION SET TO WINXP

    Building Library – objfre_wxp_x86i386wudfosrusbfx2_1.lib

    link : error LNK1104: cannot open file ‘C:DOCUME~1TON’

    NMAKE : fatal error U1073: don’t know how to make ‘C:WinDDK6000libcrti386s

    trsafe.lib’

    nmake.exe /nologo BUILDMSG=Stop. -i BUILD_PASS=PASS2 LINKONLY=1 NOPASS0=1 MAKEDL

    L=1 MAKEDIR_RELATIVE_TO_BASEDIR= MAKEDIR_LOWERCASE=c:winddkwdfumdf10_xpsrcu

    mdfusbfx2_driverstep1 failed – rc = 2

    BUILD: Finish time: Sat Feb 10 15:15:22 2007

    BUILD: Done

       7 files compiled – 2 Errors

       3 libraries built – 3 Errors

  9. Fileds says:

    I also encounter build error same as RObD, Hope somebody can make the UMDF more useability.

  10. PeterWieland says:

    RObD,

    The latest WDKs (the Vista build for example) already contain UMDF 1.5.  You don’t need to download UMDF 1.0 any longer.

    The UMDF 1.0 kit wasn’t designed to work with the Vista WDK (since it wasn’t released when 1.0 came out) so that’s probably the source of your build issues.

    -p

Skip to main content