Windows error 0x000000EA, 234

Detailed Error Information

MORE_DATA[1]

MessageMore data is available.
Declared inwinerror.h

This appears to be a raw Win32 error. More information may be available in error 0x800700EA.

THREAD_STUCK_IN_DEVICE_DRIVER[2]

This is a Blue Screen of Death stop code. More information is available in the Knowledge Base article Bug Check 0xEA: THREAD_STUCK_IN_DEVICE_DRIVER.

HRESULT analysis[3]

This is probably not the correct interpretation of this error. The Win32 error above is more likely to indicate the actual problem.
FlagsSeveritySuccess

This code indicates success, rather than an error. This may not be the correct interpretation of this code, or possibly the program is handling errors incorrectly.

Reserved (R)false
OriginMicrosoft
NTSTATUSfalse
Reserved (X)false
FacilityCode0 (0x000)
NameFACILITY_NULL[3][1]
DescriptionThe default facility code.[3][1]
Error Code234 (0x00ea)

Possible solutions

4

CryptEncrypt AES 256 fails at encrypting last block

c++
winapi
encryption

You are getting the error ERROR_MORE_DATA. Which translates into:

If the buffer allocated for pbData is not large enough to hold the encrypted data, GetLastError returns ERROR_MORE_DATA and stores the required buffer size, in bytes, in the DWORD value pointed to by pdwDataLen.

If the method uses CBC encryption (Microsoft, in it's wisdom, does not specify a mode OR padding algorithm in their API) then the following algorithm should be performed to calculate the output size of the buffer:

buffer_size = (plain_size_bytes / AES_BLOCK_SIZE + 1) * AES_BLOCK_SIZE;

In other words, if plain_size_bytes is N * AES_BLOCK_SIZE you still need a full block of padding. This is because you always need to perform padding, otherwise the unpadding algorithm cannot distinquish you plain text from padding bytes.

Of course, you could also simply create a buffer of plain_size_bytes + AES_BLOCK_SIZE and use the pdwDataLen value to get the actual length.

EDIT: if you encrypt each plain text block separately, and the cipher uses CBC or ECB with padding, then the last plain block may require 2 whole blocks because of above

answered on Stack Overflow Feb 1, 2012 by Maarten Bodewes • edited Apr 30, 2014 by Community
2

How can I solve this MB2GPT issue?

windows-10
mbr
gpt
boot-partition

For my situation I was booting UEFI/MBR and I suspect that this may be the case too since you were using Chameleon UEFI bootloader.

MBR2GPT.exe assumes BIOS boot and checks the BIOS BCD store at

[System Partition]\Boot\BCD

instead of finding out where the actual system store resides. My BIOS BCD had invalid entries so MBR2GPT rightfully complained that it couldn't find the non-existent recovery volume. I replaced the BIOS BCD with the EFI BCD from

[System Partition]\EFI\Microsoft\Boot

and was able to run MBR2GPT.

C:\Windows\system32>MBR2GPT.EXE /convert /allowfullos

MBR2GPT will now attempt to convert the default book disk.
If conversion is successful the disk can only be booted in GPT mode.
These changes cannot be undone!

MBR2GPT: Attempting to convert disk 3
MBR2GPT: Retrieving layout of disk
MBR2GPT: Validating layout, disk sector size is: 512 bytes
MBR2GPT: Trying to shrink the OS partition
MBR2GPT: Creating the EFI system partition
MBR2GPT: Installing the new boot files
MBR2GPT: Performing the layout conversion
MBR2GPT: Migrating default boot entry
MBR2GPT: Adding recovery boot entry
MBR2GPT: Fixing drive letter mapping
MBR2GPT: Conversion completed successfully
MBR2GPT: Before the new system can boot properly you need to switch the firmware to boot to UEFI mode!
answered on Super User Jan 3, 2018 by merle
1

CryptEncrypt AES 256 fails at encrypting last block

c++
winapi
encryption
while ( address < (address + len) )

My cryptic answer is "think about it -- you won't quite think about it forever, but..."

answered on Stack Overflow Feb 1, 2012 by Windows programmer
0

CryptEncrypt AES 256 fails at encrypting last block

c++
winapi
encryption
if ( (len - dwCount) < dwBlockLen) EOB = TRUE;

maybe should be something like

if ( (len - dwCount) < dwBlockLen)
{
    EOB = TRUE;
    dwBlockLen = ENCRYPT_BLOCK_SIZE;
}
answered on Stack Overflow Feb 1, 2012 by Windows programmer

Comments

Leave a comment

(plain text only)

Sources

  1. winerror.h from Windows SDK 10.0.14393.0
  2. https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/bug-check-code-reference2
  3. https://msdn.microsoft.com/en-us/library/cc231198.aspx

User contributions licensed under CC BY-SA 3.0