Microsoft 1394 Driver Download For Windows



-->

The following diagram illustrates the IEEE 1394 driver stack with the new 1394 bus driver and the Microsoft-supported 1394 client drivers.

It provides information for 1394 developers to understand the new 1394 bus driver in Windows 7. The 1394 bus driver was rewritten for Windows 7 to provide support for higher speeds and alternative media, as defined in the IEEE-1394b specification. The 1394 bus driver that is included with Windows 7 replaces the 1394 bus drivers that were.

A client driver for a device that connects to the IEEE 1394 bus driver sits on top of the IEEE 1394 driver stack. The bus driver provides a hardware-independent interface to the IEEE 1394 bus. The device driver communicates with the device by sending IRPs, which are processed by the IEEE 1394 bus driver. Before Windows 7, the bus driver was a combination of a port driver (1394bus.sys) and a primary miniport driver for the motherboard's host controller (ochi1394.sys). In Windows 7 and later versions, the legacy port/miniport bus drivers are replaced by 1394ohci.sys, a monolithic IEEE 1394 bus driver that is implemented by using the kernel-mode driver framework (KMDF). The 1394ohci.sys bus driver is fully backward compatible with the legacy 1394 bus drivers. For more information about some known differences in behavior between the new bus driver and the legacy 1394 bus drivers, see IEEE 1394 Bus Driver in Windows 7.

The following illustration shows the relationship between the legacy and the new 1394 bus drivers.

  1. Download Windows Mixed Reality driver version 10.0. (Windows 10 Version 1803) from Official Microsoft Download Center.
  2. This issue occurs because the legacy 1394 bus drivers (1394bus.sys and Ochi1394.sys) are removed in Windows 8.1 or Windows 8. Resolution Update information How to obtain this update Microsoft Download Center. The following files are available for download from the Microsoft Download Center.

To issue commands to devices connected to the bus, drivers issue the IRP_MJ_DEVICE_CONTROL IRP, with control code IOCTL_1394_CLASS. The driver packages the parameters in an IEEE 1394 I/O request block (IRB), and passes a pointer to it in the Parameters.Others.Argument1 member of the IRP. The FunctionNumber member of the IRB determines the type of operation, and the u member describes the operation. The bus driver uses the IOCTL_1394_CLASS IRP to present an interface to both the bus and the host controller.

The IRB structure contains parameters that apply to each bus request and request-specific parameters. The u member of the IRB contains the request-specific parameters, in a union of data structures, one per request type.

During normal operation, drivers receive ordinary I/O requests (such as IRP_MJ_READ), convert them to the appropriate IEEE 1394 operation, and dispatch that operation to the device through IOCTL_1394_CLASS.

Related topics

-->

Windows 7 includes 1394ohci.sys, a new IEEE 1394 bus driver that supports faster speeds and alternative media as defined in the IEEE-1394b specification. The 1394ohci.sys bus driver is a single (monolithic) device driver, implemented by using the kernel-mode driver framework (KMDF). The legacy 1394 bus driver (available in earlier versions of Windows) includes multiple device drivers that were implemented by using the Windows Driver Model (WDM) in a port/miniport configuration. The 1394ohci.sys bus driver replaces the legacy port driver, 1394bus.sys, and the primary miniport driver, ochi1394.sys.

The new 1394ohci.sys bus driver is fully backward compatible with the legacy bus driver. This topic describes some of the known differences in behavior between the new and the legacy 1394 bus driver.

Note

The 1394ohci.sys driver is a system driver that is included in Windows. It is automatically loaded when you install a 1394 controller. This is not a redistributable driver that you can download separately.

I/O Request Completion

Microsoft 1394 Driver Download For Windows

All I/O requests that are sent to the new 1394 bus driver return STATUS_PENDING because the 1394ohci.sys bus driver is implemented by using KMDF instead of WDM. This behavior differs from that of the legacy 1394 bus driver, in which certain I/O requests complete immediately.

A client driver must wait until I/O requests sent to the new 1394 bus driver are complete. You can provide an I/O completion routine that is called after the request is complete. The status of the completed I/O request is in the IRP.

Configuration ROM Retrieval

Microsoft 1394 driver download for windows 10

The new 1394 bus driver tries to use asynchronous block transactions at faster bus speeds to retrieve the contents of a node's configuration ROM. The legacy 1394 bus driver uses asynchronous quadlet reads at S100 speed—or 100 megabits per second (Mbps). The 1394ohci.sys bus driver also uses the values that are specified in generation and max_rom entries of the node's configuration ROM header to improve the retrieval of the remaining content of the configuration ROM. For more information about how the new 1394 bus driver retrieves the contents of a node's configuration ROM, see Retrieving the Contents of a IEEE 1394 Node's Configuration ROM.

Microsoft 1394 Driver Download For Windows Xp

IEEE-1394-1995 PHY Support

The 1394ohci.sys bus driver requires a physical layer (PHY) that supports IEEE-1394a or IEEE-1394b. It does not support a PHY that supports IEEE-1394-1995. This requirement is due to the 1394ohci.sys bus driver's exclusive use of short (arbitrated) bus resets.

NODE_DEVICE_EXTENSION Structure Usage

A client driver can reference the device extension in the 1394 bus driver associated with the physical device object (PDO) for the device that the client driver controls. This device extension is described by the NODE_DEVICE_EXTENSION structure. In 1394ohci.sys, this structure remains at the same location as in the legacy 1394 bus driver, but the nonstatic members of the structure might not be valid. When a client driver uses the new 1394 bus driver, they must make sure that the data accessed in NODE_DEVICE_EXTENSION is valid. The static members of NODE_DEVICE_EXTENSION that contain valid data are Tag, DeviceObject, and PortDeviceObject. All other members NODE_DEVICE_EXTENSION are nonstatic, which the client driver must not reference.

Gap Count Optimization

The default behavior of the 1394ohci.sys bus driver is to optimize the gap count when it finds only IEEE 1394a devices on the 1394 bus, excluding the local node. For example, if the system that is running 1394ohci.sys has a host controller that complies with IEEE 1394b but all devices on the bus comply with IEEE 1394a, then the new 1394 bus driver tries to optimize the gap count.

Gap count optimization occurs only if the 1394ohci.sys bus driver determines that the local node is the bus manager.

The 1394ohci.sys bus driver determines whether a device complies with IEEE-1394a by the speed setting in the node's self-id packet. If a node sets both of the bits in the speed (sp) field in the self-id packet, then 1394ohci.sys considers the node to comply with IEEE-1394b. If the speed field contains any other value, then 1394ohci.sys considers the node to comply with IEEE-1394a. The gap count value that is used is based on table E-1 in the IEEE-1394a specification, which provides the gap count as a function of hops. The 1394ohci.sys bus driver does not compute the gap count. You can change the default gap count behavior by using a registry value. For more information, see Modifying the Default Behavior of the IEEE 1394 Bus Driver.

Device Driver Interface (DDI) Changes

In Windows 7, the 1394 DDIs were changed to support faster speeds as defined by the 1394b specification and improved to simplify the development of 1394 client drivers. For more information about the general DDI changes that the new 1394 bus driver supports, see Device Driver Interface (DDI) Changes in Windows 7.

Microsoft 1394 Driver Download For Windows 8.1

Related topics

The IEEE 1394 Driver Stack
Retrieving the Contents of a IEEE 1394 Node's Configuration ROM