Pointless Blathering

Peter Wieland's thoughts on Windows driver development, and occasional rants about computing in general.

Browse by Tags

Tagged Content List
  • Blog Post: New KMDF white-paper out on writing a bus driver

    Penny Orwick has been working on a white paper that talks abut using KMDF to write a bus driver.  It’s been stalled waiting for us lazy developers to review it, but it finally came out last night: http://www.microsoft.com/whdc/driver/wdf/KMDFBusDrv.mspx
  • Blog Post: Measuring DPC time

    At the DDC this year we had some very useful “community forums”. I generally come out of these feeling like I've been beaten with a sack of oranges, and this year was no exception. But one question in particular struck my eye – someone was saying that MS didn’t provide any useful tools for figuring out...
  • Blog Post: WDK available in other languages

    This is pretty cool, though my high-school french isn't sufficient to appreciate it completely.  The WDK content on MSDN has been translated into multiple languages.  It's a machine translation and to make up for the inconsistencies they do side-by-side english & other language.  It...
  • Blog Post: My UMDF driver has some data - how do I get it to my app?

    This came up as a question on NTDEV today. After I thought about it for a bit I realized it was actually a pretty good question. You've started writing your driver, or at least thinking about your driver. You know you'll get some data back from the device and you need to get it to the app. How do you...
  • Blog Post: Do UMDF drivers require signing?

    To quote from Rev. Lovejoy :     Shoo, short answer: "Yes" with an "If", long answer "No" - with a "But.     There are two types of driver signing, which complicates the answer. As usual any answers I provide are probably vague and can be overridden by standard documentation. In this case the...
  • Blog Post: Fixing the UMDF USB samples to install both on XP & Vista

    UMDF's content in the WDK contains a handful of examples for controlling a USB device. Unfortunately they only show how to do it on Vista. The problem was that WinUSB's co-installer wasn't added to the WDK until very late - too late for us to be able to change our samples to show how to use it. WINUSB...
  • Blog Post: Glossary Definition of "WDM"

    I got looped into a discussion about the WDK glossary entry for "Windows Driver Model". It got me thinking about how difficult it is to explain things in the driver space to non-driver folks. When I was working in storage I used to have this problem all the time. Someone, usually a family member...
  • Blog Post: Does Windows have a "Scheduler"

    The question came up on the NTDEV mailing list a while back about how the "Scheduler" works in Windows … specifically about what thread it ran on and how it got control. The answer is that you should ignore this idea that there's a "scheduler" as an independent entity. It doesn't exist like that...
  • Blog Post: Meet my boss

    Nar's talk on the NT I/O manager is now up on channel 9.
  • Blog Post: Ilias Tsigkogiannis has started a Blog about learning to write Windows Drivers

    Ilias is the latest addition to the UMDF development team. I'm really excited that he's decided to start blogging about his initial experience learning about how WDM and UMDF drivers work. Hopefully this can serve as a helpful introduction for anyone who is just starting off with driver development.
  • Blog Post: COM in UMDF

    UMDF defines all of its interfaces using COM interfaces, rather than the flat C-style DDI that the KMDF team used.  When kernel developers see this their first question is often "why did you do that?" and it's an understandable question. I had a long discussion at WinHEC about this exact topic. First...
  • Blog Post: 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...
  • Blog Post: UMDF 1.0 (for XP only) beta is FINALLY avaialble

    YIPPY!!! Sometimes it seems like releasing software is more complicated than developing it. We really wanted to have this at WinHEC, but that just wasn't going to happen. Fortunately I have an amazing team to help push through all the problems and process imposed upon us. So we have a beta release...
  • Blog Post: Windows Driver Kit Beta 2 is finally available

    I got back from vacation today and went to connect.microsoft.com to see if the WDK beta was up yet, and i'm happy to say that it is. It's a fairly large (2.3 GB) ISO image to download and i'm pulling it down now to make sure it works okay. Here are the steps i had to follow to get into...
  • Blog Post: GetScatterGatherList will coallesce contiguous SG list entries

    GregH asked me an interesting question at WinHEC today - one for which I didn't immediately know the answer. He was wondering whether the new DMA DDIs (Get|PutScatterGatherList) would return a single SG entry for each page, or whether they would coallesce physically contiguous pages into a single entry...
  • Blog Post: UMDF is almost available for play

    I finished my talk on UMDF at WinHEC yesterday. It seems to have gone reasonably well, so I'm relieved about that. The bad news is that we couldn't make our beta support for XP available due to some internal logistical problems, but it's still on the horizon. Even though the XP support isn't available...
  • Blog Post: What is DMA (Part 9): I/O MMUs and why you'll wish you'd used the DMA DDI in 3 or 4 years

    Perhaps you've read through all of my posts about DMA and still think that using the DMA DDIs is optional. After all you've built a 64-bit card, and you're not using DAC so you don't have to worry about busses being downgraded on you (or maybe you don't believe in the boogyman either). Sure someone might...
  • Blog Post: What is DMA (Part 8) - BuildScatterGatherList

    Since i'm on vacation next week, i thought i'd tackle something light this week. Last time i talked about GetScatterGatherList and PutScatterGatherList and how much better they are than the older method of doing DMA. But as much as I like these two functions, they have one major problem that hit us...
  • Blog Post: What is DMA (part 7) - Scatter Gather DMA the "new" way

    Yesterday i talked about how to do your DMA operations the old way. And it's painful. Very, very painful. Fortunately for those of you with bus-mastering controllers there's a much easier way. AllocateAdapterChannel suffers from some real problems. It can't fail if the system is low on...
  • Blog Post: What is DMA (Part 6) - Scatter Gather DMA the "old" way

    What Is DMA (Part 6) - Scatter Gather DMA the "old" way To be honest, it has been a long, long time since i've needed to support slave-mode DMA or packet-based non-scatter-gather DMA. To talk about those i'd probably have to do some (gulp) research. Also I'm not sure how much they apply to modern...
  • Blog Post: What is DMA (Part 5) - Packet Based DMA

    Packet Based DMA Last time i talked about using common buffer to stage your DMA operations. Doing this allows you to coallesce very fragmented packets, which can be very valuable, but it does complicate your DMA operations. After all someone has to manage the common buffer that you allocated. The...
  • Blog Post: What is DMA (Part 4) - Common Buffer

    The DMA API also allows you to create a section of kernel memory which you can share between your driver and your device. This memory is known as "common buffer", and has a variety of uses with modern PCI devices. You can allocate a piece of common buffer by calling the AllocateCommonBuffer function...
  • Blog Post: What is DMA (Part 3) - DMA Translation & Map Registers

    Previously in this sequence I talked some about what DMA is, and some of the common models for programming DMA on a device. Like most code, your driver usually deals with virtual addresses for data buffers. Your DMA engine (be it slave or bus-mastering) is on the other side of the MMU and so can't...
  • Blog Post: What is DMA (Part 2) - DMA to a Driver

    Yesterday i talked a little about "what DMA is". Today i want to talk a little bit about how devices use DMA) DMA to a Driver From the driver's point of view there are two aspects to DMA. The first is how you prepare your data for DMA transfers. The second is how you program the device to initiate...
  • Blog Post: What Is DMA (Part 1)

    What Is DMA? DMA is a way for you to offload the work of transferring data between main memory and the device onto your device. This is in contrast to programmed I/O (PIO) where you have the processor copying data between main memory and the device. PIO results in high data-rates (processors are...
Page 1 of 1 (25 items)