windows_users 0.1.0

A crate for managing Windows users and groups.
Documentation
use windows::Win32::Foundation::ERROR_INVALID_PARAMETER;
use windows::Win32::NetworkManagement::NetManagement::NERR_Success;
use windows::core::HRESULT;

use crate::error::{ParmnumError, WindowsUsersError};

pub fn net_api_result_with_index(
    status: u32,
    parm_err: u32,
) -> std::result::Result<(), WindowsUsersError> {
    if status == NERR_Success {
        return Ok(());
    }

    let windows_error = windows::core::Error::from_hresult(HRESULT::from_win32(status));

    if status == ERROR_INVALID_PARAMETER.0 {
        return Err(WindowsUsersError::WindowsErrorWithParmnum {
            parm: ParmnumError::from(parm_err),
            source: windows_error,
        });
    }

    Err(WindowsUsersError::WindowsError(windows_error))
}

pub fn net_api_result(status: u32) -> std::result::Result<(), WindowsUsersError> {
    if status == NERR_Success {
        return Ok(());
    }

    let windows_error = windows::core::Error::from_hresult(HRESULT::from_win32(status));

    Err(WindowsUsersError::WindowsError(windows_error))
}