pub unsafe fn NtAccessCheckByTypeAndAuditAlarm<P0, P1, P2>(
    subsystemname: *const UNICODE_STRING,
    handleid: Option<*const c_void>,
    objecttypename: *const UNICODE_STRING,
    objectname: *const UNICODE_STRING,
    securitydescriptor: P0,
    principalselfsid: P1,
    desiredaccess: u32,
    audittype: AUDIT_EVENT_TYPE,
    flags: u32,
    objecttypelist: Option<&[OBJECT_TYPE_LIST]>,
    genericmapping: *const GENERIC_MAPPING,
    objectcreation: P2,
    grantedaccess: *mut u32,
    accessstatus: *mut i32,
    generateonclose: *mut BOOLEAN,
) -> NTSTATUS
where P0: Param<PSECURITY_DESCRIPTOR>, P1: Param<PSID>, P2: Param<BOOLEAN>,