This protocol provides services that allow NVM Express commands to be sent to an NVM Express controller or to a specific namespace in a NVM Express controller. This protocol interface is optimized for storage.
Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php.
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
- Revision Reference:
- This Protocol was introduced in UEFI Specification 2.5.
Used to allocate and build a device path node for an NVM Express namespace on an NVM Express controller.
The EFI_NVM_EXPRESS_PASS_THRU_PROTOCOL.BuildDevicePath() function allocates and builds a single device path node for the NVM Express namespace specified by NamespaceId.
If the NamespaceId is not valid, then EFI_NOT_FOUND is returned.
If DevicePath is NULL, then EFI_INVALID_PARAMETER is returned.
If there are not enough resources to allocate the device path node, then EFI_OUT_OF_RESOURCES is returned.
Otherwise, DevicePath is allocated with the boot service AllocatePool(), the contents of DevicePath are initialized to describe the NVM Express namespace specified by NamespaceId, and EFI_SUCCESS is returned.
- Parameters
-
| [in] | This | A pointer to the EFI_NVM_EXPRESS_PASS_THRU_PROTOCOL instance. |
| [in] | NamespaceId | The NVM Express namespace ID for which a device path node is to be allocated and built. Caller must set the NamespaceId to zero if the device path node will contain a valid UUID. |
| [in,out] | DevicePath | A pointer to a single device path node that describes the NVM Express namespace specified by NamespaceId. This function is responsible for allocating the buffer DevicePath with the boot service AllocatePool(). It is the caller's responsibility to free DevicePath when the caller is finished with DevicePath. |
- Return values
-
| EFI_SUCCESS | The device path node that describes the NVM Express namespace specified by NamespaceId was allocated and returned in DevicePath. |
| EFI_NOT_FOUND | The NamespaceId is not valid. |
| EFI_INVALID_PARAMETER | DevicePath is NULL. |
| EFI_OUT_OF_RESOURCES | There are not enough resources to allocate the DevicePath node. |
Used to translate a device path node to a namespace ID.
The EFI_NVM_EXPRESS_PASS_THRU_PROTOCOL.GetNamespace() function determines the namespace ID associated with the namespace described by DevicePath.
If DevicePath is a device path node type that the NVM Express Pass Thru driver supports, then the NVM Express Pass Thru driver will attempt to translate the contents DevicePath into a namespace ID.
If this translation is successful, then that namespace ID is returned in NamespaceId, and EFI_SUCCESS is returned
- Parameters
-
| [in] | This | A pointer to the EFI_NVM_EXPRESS_PASS_THRU_PROTOCOL instance. |
| [in] | DevicePath | A pointer to the device path node that describes an NVM Express namespace on the NVM Express controller. |
| [out] | NamespaceId | The NVM Express namespace ID contained in the device path node. |
- Return values
-
| EFI_SUCCESS | DevicePath was successfully translated to NamespaceId. |
| EFI_INVALID_PARAMETER | If DevicePath or NamespaceId are NULL, then EFI_INVALID_PARAMETER is returned. |
| EFI_UNSUPPORTED | If DevicePath is not a device path node type that the NVM Express Pass Thru driver supports, then EFI_UNSUPPORTED is returned. |
| EFI_NOT_FOUND | If DevicePath is a device path node type that the NVM Express Pass Thru driver supports, but there is not a valid translation from DevicePath to a namespace ID, then EFI_NOT_FOUND is returned. |
Used to retrieve the next namespace ID for this NVM Express controller.
The EFI_NVM_EXPRESS_PASS_THRU_PROTOCOL.GetNextNamespace() function retrieves the next valid namespace ID on this NVM Express controller.
If on input the value pointed to by NamespaceId is 0xFFFFFFFF, then the first valid namespace ID defined on the NVM Express controller is returned in the location pointed to by NamespaceId and a status of EFI_SUCCESS is returned.
If on input the value pointed to by NamespaceId is an invalid namespace ID other than 0xFFFFFFFF, then EFI_INVALID_PARAMETER is returned.
If on input the value pointed to by NamespaceId is a valid namespace ID, then the next valid namespace ID on the NVM Express controller is returned in the location pointed to by NamespaceId, and EFI_SUCCESS is returned.
If the value pointed to by NamespaceId is the namespace ID of the last namespace on the NVM Express controller, then EFI_NOT_FOUND is returned.
- Parameters
-
| [in] | This | A pointer to the EFI_NVM_EXPRESS_PASS_THRU_PROTOCOL instance. |
| [in,out] | NamespaceId | On input, a pointer to a legal NamespaceId for an NVM Express namespace present on the NVM Express controller. On output, a pointer to the next NamespaceId of an NVM Express namespace on an NVM Express controller. An input value of 0xFFFFFFFF retrieves the first NamespaceId for an NVM Express namespace present on an NVM Express controller. |
- Return values
-
| EFI_SUCCESS | The Namespace ID of the next Namespace was returned. |
| EFI_NOT_FOUND | There are no more namespaces defined on this controller. |
| EFI_INVALID_PARAMETER | NamespaceId is an invalid value other than 0xFFFFFFFF. |