A>Я пробовал даже указывать только _O_APPEND, потому что это единственный хоть как-то подходящий мне флаг из описанных на https://msdn.microsoft.com/en-us/library/bdts1c9x.aspx, но всё равно получил -1 и errno=22.
A>Подсмотрел Process Monitor'ом: в течение работы fopen(device, "r+b") процесс только открывает пачку ключей реестра по адресам HKLM\System\CurrentControlSet\Enum\BTHENUM\<здесь GUID>_LOCALMFG<MAC-адреса и другие идентификаторы>. Лог не особо интересен: http://pastebin.com/6zn8XbJg
A>Лог в формате Process Monitor, со стеками: http://rghost.ru/77rFmrCJm
Тут подебажить надо бы. Посмотреть что там внутри _open_osfhandle фэйлится. С большего она вроде ничего кроме GetFileType не вызывает для переданного ей хэндла. Но может в новых CRT еще каких проверок понатыкали