Link to home
Start Free TrialLog in
Avatar of poweroff
poweroff

asked on

For cessi0g ... Help Me! S.O.S.


      Thanks, dear Jorge...  Sorry! I thought "regards" was a last name  ;(
       

      Yes this is my first VxD .... I need to access a custom EISA card, under Win9x.

      Jorge,  in your sample source code, you wrote:
         
      >>   TransferData.Segment = MySegment;
      >>   TransferData.Offset = MyOffset;
      >>   TransferData.aDWord = aDwordValue;  

      Where do you get the values for the Segment/Offset?

      Also, how do I get the Segment and Offset of any given value (or from a function)?
      Then I can send them, using the DeviceIOControl function, to the VxD.
             
      Now, inside of the VxD you writte :

      >> case VXDMSG_GETINT_VECTOR:
      >>                   Get_PM_Int_Vector( INTERRUPT, &Segment, &Offset);
      >>                   lpTransferData = (LPTRANSFERDATA)lpDIOCParms->lpvOutBuffer;
      >>                   lpTransferData->Segment = Segment;
      >>                   lpTransferData->Offset = Offset;
      >>                   lpTransferData->aDWord = 0;
      >>                   return 0;

      The Get_PM_Int_vector must return the address of the number of interrupt to check
      where do you do this in your code?

      Besides, using Borland Turbo C 3.0 (16-bit), the way to access the custom card is by means of
      the INTERRUPT (void interrupt )declaration. Below is an example of source code for a timer
      associated with an interrupt. In Visual C 5.0 (32 bit) there is no INTERRUPT declaration, so how
      can I implement the interrupt service routine and related code for the interrupt-driven card, using
      Visual C 5.0?

      Please note that this task is part of my thesis work, and the final product will be used in university
      research and not for profit.

      Best regards, Jorge!  And many thanks.
      Sincerely.
      Hernan!
      power_off@usa.net



      // ***********   source Code Timer ***********
      #include <dos.h>
      #include <conio.h>
      #include <stdio.h>
      #define INTR 0x8
      #define TIMEMAX 20
      #define ALTO 119318 >>8
      #define BAJO 119318 & 255
      #ifdef __cplusplus
          #define __CPPARGS ...
      #else
          #define __CPPARGS
      #endif
      void interrupt ( *oldtiempo)(__CPPARGS);
      int count=0,segundo=0;
      void interrupt tiempo(__CPPARGS)
      {
      count++;
      if (count == 25){
            count=0;
            segundo++;
           printf("==>: %d\n",segundo);
      }
      }
      int main(void)
      {
      int vectorON,Modo;
      char ch;
      clrscr();
      vectorON= inp(0x21);
      outp(0x21,0xf9);
      oldtiempo = getvect(INTR);  
                    setvect(INTR, tiempo);
      Modo= inp(0x43);
      puts("Press any key to begin:\n");
      ch= getche();
      puts("INICIANDO CONTEO:\n");
      outp(0x43,54);
      outp(0x40,BAJO);
      outp(0x40,ALTO);
      outp(0x21,0xf8);
       while (segundo < TIMEMAX);
      outp(0x43,Modo);
      outp(0x40,0x0);
      outp(0x40,0x0);
      setvect(INTR, oldtiempo);
      outp(0x21,vectorON);
      puts("Test o.k \n");
       return 0;
       }
ASKER CERTIFIED SOLUTION
Avatar of cessi0g
cessi0g

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of poweroff
poweroff

ASKER

Gracias Jorge!!  
si, si hablo español ( es mi lengua nativa).

gracias por proporcionarme tu e-mail y por todas las atenciones prestadas..

atentamente tu amigo

Hernan
Merida, Yucatan Mexico.                                            
where can i start on developing a VXD?

any website....?etc?

i'm a master student in EE