C ++/Winrt Graphics Interop на DirectX сбойC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 C ++/Winrt Graphics Interop на DirectX сбой

Сообщение Anonymous »

Я пытаюсь запечатлеть растровое изображение с экрана через API захвата, используя id3d11ture2d < /code>.
Вот часть обработчика событий: < /p>

Код: Выделить всё

void
ScreenGrabWinCaptureApi::OnFrameArrived(const winrt::Windows::Graphics::Capture::Direct3D11CaptureFramePool &sender,
const winrt::Windows::Foundation::IInspectable &) {
auto frame = framePool.TryGetNextFrame();

winrt::com_ptr access;

access = frame.as();

winrt::com_ptr frame_surface;

winrt::check_hresult(
access->GetInterface(winrt::guid_of(), frame_surface.put_void()));

//
// 
//
}
Я не могу понять, почему frame.as (); вызывает исключение, даже не может понять, что не может понять, что не может понять, что не может понять, что не может понять Исключено. В отладке есть окно, предлагающее мне отладить, и я думаю, что причина, по которой у меня не регулярно «сбой процесса». < /P>
> Вот фрагмент debug procdump call:

Код: Выделить всё

PS C:\Users\arkuzo\Procdump> .\procdump64.exe -e rds-wrtc.exe
.
.
.
[13:54:03] Exception: 40080201
[13:54:03] Exception: 40080201
[13:54:03] Exception: E06D7363.?AUhresult_class_not_registered@winrt@@
[13:54:08] The process has exited.
[13:54:08] Dump count not reached.
Я создал дамп после появления окна сбоя, и получить следующее! Проанализировать -v output (я предполагаю, что это вызов окна сбоя):

Код: Выделить всё

EXCEPTION_RECORD:  (.exr -1)
ExceptionAddress: 0000000000000000
ExceptionCode: 80000003 (Break instruction exception)
ExceptionFlags: 00000000
NumberParameters: 0

FAULTING_THREAD:  00004660

PROCESS_NAME:  rds-wrtc.exe

ERROR_CODE: (NTSTATUS) 0x80000003 - {          }                                           .

EXCEPTION_CODE_STR:  80000003

STACK_TEXT:
0000001e`e5cfe308 00007ffa`21f08bf6     : 00000000`00000000 00000000`00e50073 00000000`00000001 0000001e`00000001 : win32u!NtUserGetMessage+0x14
0000001e`e5cfe310 00007ff6`56a53285     : 00000000`00000000 0000001e`e5cff250 0000001e`e5cff250 00000000`0000018f : user32!GetMessageA+0x46
0000001e`e5cfe370 00000000`00000000     : 0000001e`e5cff250 0000001e`e5cff250 00000000`0000018f 00007ff6`80000000 : rds_wrtc!WinMain+0x1075
В Release есть невозможное сбоев исключений, и дамп был успешно создан. Вот фрагмент дампа Описание: < /p>

Код: Выделить всё

This dump file has an exception of interest stored in it.
The stored exception information can be accessed via .ecxr.
(21bc.e2c): Security check failure or stack buffer overrun - code c0000409 (first/second chance not available)
Subcode: 0x7 FAST_FAIL_FATAL_APP_EXIT
Тот же код ошибки в! анализировать -v call.
Что такое исходная ошибка? 40080201 , C0000409 или 80000003 ? Как это узнать? И как исправить winrt :: com_ptr :: as call (у меня есть 2 примера с открытым исходным кодом с тем же кодом, работающим нормально)?

Подробнее здесь: https://stackoverflow.com/questions/703 ... tx-failing
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»