PRB: Windows 95 Doesn't Load SCSI Miniport Driver

Last reviewed: December 12, 1995
Article ID: Q140732
The information in this article applies to:
  • Microsoft Win32 Device Development Kit (DDK) for Windows 95

SYPTOMS

Hardware vendors developing a Microsoft SCSI miniport driver may find that their miniport will not load under Windows 95 when the SCSI adapter's BIOS is enabled. Ios.log shows the following listing:

    UnKnown int 13 hooker MBRINT13

CAUSE

The Windows 95 I/O Supervisor (Ios.vxd) attempts to detect unsafe INT 13h hookers during Windows 95 initialization. Part of this detection mechanism is an attempt to detect INT 13h hooks that were installed by a modified Master Boot Record (MBR). MBR INT 13h hooks are usually installed by disk utilities that perform services such as disk compression or encryption, which make it unsafe for Windows 95 to take over control of the disk using 32-bit disk drivers. MBR INT 13h hookers may also be installed by certain viruses.

Under certain circumstances, it is possible for IOS to treat the INT 13h handler installed by a SCSI BIOS as an unsafe MBR INT 13h hooker. This occurs when the BIOS allocates system RAM and moves its INT 13h entrypoint into this memory. The INT 13h hook is treated as an unsafe MBR INT 13h hook because it lies at an adress below A000:0000h in RAM, rather than above A000:0000h in what is assumed to be ROM.

RESOLUTION

IOS tries to detect when a BIOS has installed an INT 13h handler by examining the code in the handler's entrypoint. It looks for code sequences that jump directly to an address above A000:0000h. Specifically, it looks for the following five code sequences to call or jump to an address above A000:0000h:

1.

    push    ds
    push    cs
    pop     ds
    jmp     xxxx:yyyy

2.
    push    ds
    push    cs
    pop     ds
    jmp     dword ptr [foo]

3.
    push    ds
    push    cs
    pop     ds
    call    dword ptr [foo]

4.
    call    xxxx:yyyy

5.
    jmp     xxxx:yyyy

SCSI miniport developers who are encountering this problem should modify their INT 13h entrypoint to use one of the above code sequences, and thus allow IOS to load their miniport driver.

STATUS

This behavior is by design.


Additional reference words: 4.00 MBR MBRINT13
KBCategory: kbtool kbprb
KBSubcategory:


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: December 12, 1995
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.