-                ERROR_INVALID_PARAMETER => return Err(Error::Internal),
-                ERROR_NOT_ENOUGH_MEMORY => return Err(Error::Internal),
-                ERROR_NO_DATA => return Ok(HashMap::new()), // there aren't any
-                _ => return Err(Error::Internal), // TODO: Use FormatMessage to get a string
+                ERROR_INVALID_PARAMETER => return Err(Error::InvalidParameter),
+                ERROR_NOT_ENOUGH_MEMORY => return Err(Error::NotEnoughMemory),
+                ERROR_NO_DATA => return Ok(List(HashMap::new())), // there aren't any
+                _ => return Err(Error::UnexpectedWindowsResult(res)),