I found that code, generated by STM32CubeMX for STM32F4 SDIO periperal, is poorly integrated with MCI interface (CMSIS driver). And doesn't work out of box without modification.
STM32CubeMX generates HAL_MMC_MspInit function (file stm32f4xx_hal_msp.c). But MCI interface expect HAL_SD_MspInit (file MCI_STM32F4xx.c, line 543).
Another problem related to SDIO_IRQ. I've disabled SDIO global interrupt here, because MCI_STM32F4xx.c has SDIO_IRQHandler already:
(otherwise STM32CubeMX generates second SDIO_IRQHandler)
But in this case no code generated to enable SDIO_IRQn. And MCI_STM32F4xx.c doesn't enable this interrupt as well.
After implementing workarounds for bugs above MCI interface driver works fine.
8 bit eMMC
Keil MDK v5.25.1
Keil STM32F4xx_DFP v2.12.0
STM32CubeF4 package v1.19.0