Jump to main content

##

# 1.1.3.4.4 DRV_MEMORY_Open Function

## C

    DRV_HANDLE DRV_MEMORY_Open
    (
        const SYS_MODULE_INDEX drvIndex,
        const DRV_IO_INTENT ioIntent
    );

## Summary

Opens the specified Memory driver instance and returns a handle to it

## Description

This routine opens the specified Memory driver instance and provides a handle.

When Open is called for the first time for specified Memory driver instance it opens the attached media device and reads the geomerty details.

This handle returned must be provided to all other client-level operations to identify the caller and the instance of the driver.

## Preconditions

Function DRV_MEMORY_Initialize must have been called before calling this function.

## Parameters

Param | Description
--- | ---
drvIndex | Identifier for the instance to be opened
ioIntent | Zero or more of the values from the enumeration DRV_IO_INTENT "ORed" together to indicate the intended use of the driver

## Returns

- If successful, the routine returns a valid open-instance handle (a number identifying both the caller and the module instance).

- If an error occurs, DRV_HANDLE_INVALID is returned. Errors can occur under the following circumstances:

  - if the attached media device is not ready or the geometry get fails.
  - if the number of client objects allocated via DRV_MEMORY_CLIENTS_NUMBER is insufficient
  - if the client is trying to open the driver but driver has been opened exclusively by another client
  - if the client is trying to open the driver exclusively, but has already been opened in a non exclusive mode by another client.
  - if the driver hardware instance being opened is not initialized or is invalid - if the attached memory device open or geometry read fails for first time.

## Example

    DRV_HANDLE handle;

    handle = DRV_MEMORY_Open(DRV_MEMORY_INDEX_0);

    if (DRV_HANDLE_INVALID == handle)
    {
        // Unable to open the driver
    }

## Remarks

The handle returned is valid until the DRV_MEMORY_Close routine is called. If the driver innstance has already been opened, it cannot be opened again.