From: Guilherme Moro on 25 Jun 2010 16:02 Hello all, I'm seeing a problem in my disk driver, it receives a MmGetMdlByteCount that is shorter than DataTransferLength, MmGetMdlByteCount is not multiple of 512, and DataTransferLength comes rounded - up to the next 512 boundarie. This only happen in Vista/7, with a clean installation, and only when booting from the disk, if I mount it somewhere else this dont occur. Searching for a clue I found this discussion: http://www.osronline.com/showthread.cfm?link=129406 But if I complete the request with DataTransferLength like someone suggest in this thread, I got a data corruption scenario, because it obviously corrupt the shorter buffer. Anyone knows exactly what to do with this situation? Using MmGetMdlByteCount when it is shorter actually works, but when it come to be less than 1 page (512 bytes) I dont know if I need to pad or trunk the results. Any idea? Guilherme Moro
From: Guilherme Moro on 29 Jun 2010 14:45 Let me give some more information, so we see if somebody can help me. =) The "wrong" IRP that come rounded is sent by the system only when I click to shutdown windows. thanks Guilherme On 25 jun, 17:02, Guilherme Moro <guilherme.m...(a)gmail.com> wrote: > Hello all, > > I'm seeing a problem in my disk driver, it receives a > MmGetMdlByteCount that is shorter than DataTransferLength, > MmGetMdlByteCount is not multiple of 512, and DataTransferLength comes > rounded - up to the next 512 boundarie. > This only happen in Vista/7, with a clean installation, and only when > booting from the disk, if I mount it somewhere else this dont occur. > Searching for a clue I found this discussion: > > http://www.osronline.com/showthread.cfm?link=129406 > > But if I complete the request with DataTransferLength like someone > suggest in this thread, I got a data corruption scenario, because it > obviously corrupt the shorter buffer. > > Anyone knows exactly what to do with this situation? > > Using MmGetMdlByteCount when it is shorter actually works, but when it > come to be less than 1 page (512 bytes) I dont know if I need to pad > or trunk the results. Any idea? > > Guilherme Moro
|
Pages: 1 Prev: Drvlineto doesn't get called Next: Read SPD data from EEPROM |