public NVMeInfo GetInfo()
 {
     if (handle.IsClosed)
     {
         throw new ObjectDisposedException("WindowsNVMeSmart");
     }
     try {
         byte[] rawData;
         NVMeIdentifyControllerData data = ReadPassThrough <NVMeIdentifyControllerData>(NVMePassThroughOpcode.AdminIdentify, 0x00000000, 0x000000001, out rawData);
         if (data.nn == 1)
         {
             byte[] rawDataNamespace;
             NVMeIdentifyNamespaceData nspace = ReadPassThrough <NVMeIdentifyNamespaceData>(NVMePassThroughOpcode.AdminIdentify, 0x000000001, 0x00000000, out rawDataNamespace);
             return(new NVMeInfoImpl(driveNumber, data, rawData, nspace, rawDataNamespace));
         }
         return(new NVMeInfoImpl(driveNumber, data, rawData));
     } catch (Win32Exception) {
     }
     return(null);
 }
 public NVMeInfoImpl(int index, NVMeIdentifyControllerData data, byte[] rawData,
                     NVMeIdentifyNamespaceData namespaceData, byte[] namespaceRawData)
     : this(index, data, rawData)
 {
     Namespace1 = new NVMeNamespaceInfoImpl(namespaceData, namespaceRawData);
 }