Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 27-04-2005
mar646 mar646 is offline
Miembro
 
Registrado: dic 2004
Posts: 46
Poder: 0
mar646 Va por buen camino
Perdona por no explicarme bien. Mira: tengo una dll que me dio el fabricante de una capturadora de video. Esta dll tiene la dll en si y un archivo de cabecera en c++ (creo que este tipo de dll hace uso de MFC). No puedo usar directamente esta dll porque contiene una estructura en la que usa la palabra reservada de delphi 'set'. Al ocurrirme esto, pensé en hacer una dll para que me sirva de interfaz entre la del fabricante y mi aplicación. Pues bien, todas la funciones funcionan perfectamente excepto la siguiente:

typedef void ( __cdecl __RPC_FAR *CAPTURECALLBACK )(
DWORD channel,
BYTE __RPC_FAR *pBuffer,
DWORD nBufLen,
BYTE bStatus);

AVSAPI AVSERR AVS_SetCapCallback(CAPTURECALLBACK pCallback);

Esta función, según entiendo yo, se le pasa un puntero a una función con los parámetros definidos en el tipo de arriba. Mi idea es la de asignar una función hecha en delphi para poder controlar esta función. Para ello:

// declaración de tipo (lo de los parámetros al revés es por la documentación de la ayuda de delphi)
Callback = procedure(prStatus: Byte; prBufferLen: DWORD; prBuffer: PByte; prCanal: DWORD); cdecl;
pCallback = ^Callback;

// Definición de la función de la dll
function SetCapCallback(prCallback: pCallback): integer; stdcall;

// Definición de la función en la que quiero tratar la llamada
procedure CapCallBack(prStatus: Byte; prBufferLen: DWORD; prBuffer: PByte; prCanal: DWORD);

// Asignación de la función
SetCapCallback(@CapCallBack);

Una vez hecho esto, me salta la función CapCallBack, pero: 1º. Los parámetros no llegan bien (cosas raras); 2º. Al salir de la función da un error de memoria.

¿Alguna idea? Supongo que no estaré llamando bien a la función o estaré haciendo algo malamente. Gracias.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 20:20:49.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi