⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmain.c

📁 这是一些例程
💻 C
字号:
/*------------------------------------------------------------------------

 C main that calls asm dll 
 
 Passes: char, short, int, long using stdcall calling and naming convention.

 Returns: number of failures.

--------------------------------------------------------------------------*/




#include <stdio.h>
#include <windows.h>

BOOL __stdcall VSIntTest( char int1, int int2, short int3, long int4 );

BOOL __stdcall RSIntTest( char *int1, int *int2, short *int3, long *int4 );


const bNegMax = -128;
const iNegOne = -1;
const suMax   = 32767;
const lNegMax = -2147483647 - 1;   


int main( void ) 
{ 

  char bVal1 = bNegMax;
  int iVal2 = iNegOne;
  short iVal3 = suMax;
  long lVal4 = lNegMax;

  int cErrors = 0;                // count of errors/failed tests


/* Call a function in the DLL passing various params by value.
   Since the params were passed by value, the original value passed
   shouldn't have changed, generate an error if they were. */

  
  if (!VSIntTest(bVal1, iVal2, iVal3, lVal4)) {
    printf("Failed: Passing signed integers by value, stdcall, to MASM DLL.\n");
	cErrors++;
  }
  else {
    if (!( (bVal1 == bNegMax) && (iVal2 == iNegOne) && (iVal3 == suMax) && (lVal4 == lNegMax) )) {
      printf("Stack corruption: signed integers by value, stdcall, to MASM DLL.\n");
	  cErrors++;
	}
    else {
      printf("Passed: Passing signed integers by value, stdcall, to MASM DLL.\n");
	}
  }



/* Call another function in the DLL passing various params by reference.
   Since the params were passed by reference, generate an error if they 
   were not changed to the desired values within the DLL. */


  if (!RSIntTest(&bVal1, &iVal2, &iVal3, &lVal4)) {
    printf("Failed: Passing signed integers by reference, stdcall, to MASM DLL.\n");
	cErrors++;
  }
  else {
    if (!( (bVal1 == 1) && (iVal2 == 1) && (iVal3 == 1) && (lVal4 == 1) )) {
      printf("Stack corruption: signed integers by reference, stdcall, to MASM DLL.\n");
	  cErrors++;
	}
    else 
      printf("Passed: Passing signed integers by reference, stdcall, to MASM DLL.\n");
  }
  

  return cErrors;  // return a count of errors.

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -