共用方式為


NVME_STATUS_GENERIC_COMMAND_CODES列舉 (nvme.h)

包含值,指出與命令相關聯的狀態,該命令在許多不同的命令類型之間是泛型的。

這些狀態代碼屬於 NVME_STATUS_TYPE_GENERIC_COMMAND狀態代碼類型,而且會在命令完成時,由控制器在 完成佇列 專案中張貼。 這些代碼表示已完成完成佇列專案中命令和提交佇列標識碼所指定的命令。

語法

typedef enum {
  NVME_STATUS_SUCCESS_COMPLETION,
  NVME_STATUS_INVALID_COMMAND_OPCODE,
  NVME_STATUS_INVALID_FIELD_IN_COMMAND,
  NVME_STATUS_COMMAND_ID_CONFLICT,
  NVME_STATUS_DATA_TRANSFER_ERROR,
  NVME_STATUS_COMMAND_ABORTED_DUE_TO_POWER_LOSS_NOTIFICATION,
  NVME_STATUS_INTERNAL_DEVICE_ERROR,
  NVME_STATUS_COMMAND_ABORT_REQUESTED,
  NVME_STATUS_COMMAND_ABORTED_DUE_TO_SQ_DELETION,
  NVME_STATUS_COMMAND_ABORTED_DUE_TO_FAILED_FUSED_COMMAND,
  NVME_STATUS_COMMAND_ABORTED_DUE_TO_FAILED_MISSING_COMMAND,
  NVME_STATUS_INVALID_NAMESPACE_OR_FORMAT,
  NVME_STATUS_COMMAND_SEQUENCE_ERROR,
  NVME_STATUS_INVALID_SGL_LAST_SEGMENT_DESCR,
  NVME_STATUS_INVALID_NUMBER_OF_SGL_DESCR,
  NVME_STATUS_DATA_SGL_LENGTH_INVALID,
  NVME_STATUS_METADATA_SGL_LENGTH_INVALID,
  NVME_STATUS_SGL_DESCR_TYPE_INVALID,
  NVME_STATUS_INVALID_USE_OF_CONTROLLER_MEMORY_BUFFER,
  NVME_STATUS_PRP_OFFSET_INVALID,
  NVME_STATUS_ATOMIC_WRITE_UNIT_EXCEEDED,
  NVME_STATUS_OPERATION_DENIED,
  NVME_STATUS_SGL_OFFSET_INVALID,
  NVME_STATUS_RESERVED,
  NVME_STATUS_HOST_IDENTIFIER_INCONSISTENT_FORMAT,
  NVME_STATUS_KEEP_ALIVE_TIMEOUT_EXPIRED,
  NVME_STATUS_KEEP_ALIVE_TIMEOUT_INVALID,
  NVME_STATUS_COMMAND_ABORTED_DUE_TO_PREEMPT_ABORT,
  NVME_STATUS_SANITIZE_FAILED,
  NVME_STATUS_SANITIZE_IN_PROGRESS,
  NVME_STATUS_SGL_DATA_BLOCK_GRANULARITY_INVALID,
  NVME_STATUS_DIRECTIVE_TYPE_INVALID,
  NVME_STATUS_DIRECTIVE_ID_INVALID,
  NVME_STATUS_NVM_LBA_OUT_OF_RANGE,
  NVME_STATUS_NVM_CAPACITY_EXCEEDED,
  NVME_STATUS_NVM_NAMESPACE_NOT_READY,
  NVME_STATUS_NVM_RESERVATION_CONFLICT,
  NVME_STATUS_FORMAT_IN_PROGRESS
} NVME_STATUS_GENERIC_COMMAND_CODES;

常數

 
NVME_STATUS_SUCCESS_COMPLETION
命令已順利完成。
NVME_STATUS_INVALID_COMMAND_OPCODE
相關聯的命令 opcode 欄位無效。
NVME_STATUS_INVALID_FIELD_IN_COMMAND
命令參數中指定了無效或不支援的欄位。
NVME_STATUS_COMMAND_ID_CONFLICT
命令標識碼已在使用中。

注意

搜尋標識號衝突的命令數目是特定的實作。

NVME_STATUS_DATA_TRANSFER_ERROR
指出傳送與命令相關聯的數據或元數據時發生錯誤。
NVME_STATUS_COMMAND_ABORTED_DUE_TO_POWER_LOSS_NOTIFICATION
表示命令因為電源遺失通知而中止。
NVME_STATUS_INTERNAL_DEVICE_ERROR
由於內部錯誤,命令未順利完成。 內部裝置錯誤的詳細數據會以異步事件的形式傳回。
NVME_STATUS_COMMAND_ABORT_REQUESTED
命令已中止,因為收到命令中止命令,該命令會指定此命令的提交佇列標識碼和命令標識碼。
NVME_STATUS_COMMAND_ABORTED_DUE_TO_SQ_DELETION
命令已中止,因為已收到提交佇列的刪除 I/O 提交佇列要求,命令已提交至該佇列。
NVME_STATUS_COMMAND_ABORTED_DUE_TO_FAILED_FUSED_COMMAND
命令已中止,因為融合作業中的其他命令失敗。
NVME_STATUS_COMMAND_ABORTED_DUE_TO_FAILED_MISSING_COMMAND
命令已中止,因為未找到隨附的融合命令作為後續提交佇列專案。
NVME_STATUS_INVALID_NAMESPACE_OR_FORMAT
命名空間或該命名空間的格式無效。
NVME_STATUS_COMMAND_SEQUENCE_ERROR
命令因為多重命令順序中的通訊協議違規而中止。 例如,違反 TCG 記憶體同步介面通訊協定中的安全性傳送和安全性接收排序規則。
NVME_STATUS_INVALID_SGL_LAST_SEGMENT_DESCR
此命令包含無效的 SGL Last Segment 或 SGL 區段描述元。 當 SGL Last Segment 描述元所指向的 SGL 區段包含 SGL 區段描述元或 SGL Last Segment 描述元或 SGL 區段描述元時,就可能發生此情況。 當 SGL Last Segment 描述元包含無效的長度時,可能會發生這種情況(例如,長度為零或不是 16 倍數的長度)。
NVME_STATUS_INVALID_NUMBER_OF_SGL_DESCR
在區段的最後一個描述元以外的位置中,有 SGL Last Segment 描述元或 SGL 區段描述元,以指定的長度為基礎。
NVME_STATUS_DATA_SGL_LENGTH_INVALID
如果 Data SGL 的長度太短,就可能會發生這種情況。 如果數據 SGL 的長度太長,且控制者不支援 SGL 傳輸的時間超過要傳輸的數據量,如 識別控制器 (NVME_IDENTIFY_CONTROLLER_DATA) 數據結構中的 SGL 支援 (SGLS) 欄位所指示。
NVME_STATUS_METADATA_SGL_LENGTH_INVALID
如果元數據 SGL 的長度太短,就可能會發生這種情況。 如果元數據 SGL 的長度太長,且控制器不支援 SGL 傳輸的時間長度超過要傳輸的數據量,如 識別控制器 (NVME_IDENTIFY_CONTROLLER_DATA) 數據結構中的 SGL 支援 (SGLS) 字段中所指出。
NVME_STATUS_SGL_DESCR_TYPE_INVALID
SGL 描述元的類型是控制器不支援的類型。
NVME_STATUS_INVALID_USE_OF_CONTROLLER_MEMORY_BUFFER
控制器不支持嘗試使用控制器記憶體緩衝區。
NVME_STATUS_PRP_OFFSET_INVALID
PRP 專案的 Offset 字段無效。 當第一個項目之後有非零位移的 PRP 專案時,可能會發生這種情況。
NVME_STATUS_ATOMIC_WRITE_UNIT_EXCEEDED
指定的長度超過不可部分完成的寫入單位大小。
NVME_STATUS_OPERATION_DENIED
由於缺乏訪問許可權,命令遭到拒絕。
NVME_STATUS_SGL_OFFSET_INVALID
描述元中指定的位移無效。
NVME_STATUS_RESERVED
保留。
NVME_STATUS_HOST_IDENTIFIER_INCONSISTENT_FORMAT
NVM 子系統偵測到在不同控制器上同時使用 64 位和 128 位主機識別碼值。
NVME_STATUS_KEEP_ALIVE_TIMEOUT_EXPIRED
Keep Alive Timer 已過期。
NVME_STATUS_KEEP_ALIVE_TIMEOUT_INVALID
指定的 [保持運作逾時] 值無效。
NVME_STATUS_COMMAND_ABORTED_DUE_TO_PREEMPT_ABORT
此命令已中止,因為保留取得動作 (RACQA) 設定為 010b (Preempt 和 Abort) 的 Reservation Acquire 命令。
NVME_STATUS_SANITIZE_FAILED
最新的清理作業失敗,且尚未成功完成復原動作。
NVME_STATUS_SANITIZE_IN_PROGRESS
正在清理作業時,禁止要求函式(例如命令)。
NVME_STATUS_SGL_DATA_BLOCK_GRANULARITY_INVALID
SGLData 區塊描述元的位址對齊或長度粒度無效。
NVME_STATUS_NVM_LBA_OUT_OF_RANGE
命令會參考超過命名空間大小的 LBA。
NVME_STATUS_NVM_CAPACITY_EXCEEDED
命令的執行已導致超過命名空間的容量。 當Namespace使用率超過Namespace容量時,就會發生此錯誤。
NVME_STATUS_NVM_NAMESPACE_NOT_READY
命名空間尚未準備好存取。 「不要重試」位指出稍後是否重新發出命令是否可能成功。
NVME_STATUS_NVM_RESERVATION_CONFLICT
命令已中止,因為與存取命名空間上保留的保留發生衝突。
NVME_STATUS_FORMAT_IN_PROGRESS
命名空間目前正在格式化。 [不要重試] 位會清除為 '0',表示如果重新提交命令,命令可能會成功。

要求

要求 價值
最低支援的用戶端 Windows 10
標頭 nvme.h