mirror of
https://github.com/vosen/ZLUDA.git
synced 2025-04-20 16:34:45 +00:00
306 lines
11 KiB
C++
Vendored
306 lines
11 KiB
C++
Vendored
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Detours Test Program (dtarge.dll)
|
|
//
|
|
// Microsoft Research Detours Package
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
#include <stdio.h>
|
|
#include <windows.h>
|
|
#include "dtarge.h"
|
|
|
|
DWORD_PTR WINAPI Target0()
|
|
{
|
|
printf(" Target0 ()\n");
|
|
return 1000;
|
|
}
|
|
|
|
DWORD_PTR WINAPI Target1(DWORD_PTR v1)
|
|
{
|
|
printf(" Target1 (%ld)\n",
|
|
(DWORD)v1);
|
|
return 1001;
|
|
}
|
|
|
|
DWORD_PTR WINAPI Target2(DWORD_PTR v1, DWORD_PTR v2)
|
|
{
|
|
printf(" Target2 (%ld,%ld)\n",
|
|
(DWORD)v1, (DWORD)v2);
|
|
return 1002;
|
|
}
|
|
|
|
DWORD_PTR WINAPI Target3(DWORD_PTR v1, DWORD_PTR v2, DWORD_PTR v3)
|
|
{
|
|
printf(" Target3 (%ld,%ld,%ld)\n",
|
|
(DWORD)v1, (DWORD)v2, (DWORD)v3);
|
|
return 1003;
|
|
}
|
|
|
|
DWORD_PTR WINAPI Target4(DWORD_PTR v1, DWORD_PTR v2, DWORD_PTR v3, DWORD_PTR v4)
|
|
{
|
|
printf(" Target4 (%ld,%ld,%ld,%ld)\n",
|
|
(DWORD)v1, (DWORD)v2, (DWORD)v3, (DWORD)v4);
|
|
return 1004;
|
|
}
|
|
|
|
DWORD_PTR WINAPI Target5(DWORD_PTR v1, DWORD_PTR v2, DWORD_PTR v3, DWORD_PTR v4,
|
|
DWORD_PTR v5)
|
|
{
|
|
printf(" Target5 (%ld,%ld,%ld,%ld,%ld)\n",
|
|
(DWORD)v1, (DWORD)v2, (DWORD)v3, (DWORD)v4,
|
|
(DWORD)v5);
|
|
return 1005;
|
|
}
|
|
|
|
DWORD_PTR WINAPI Target6(DWORD_PTR v1, DWORD_PTR v2, DWORD_PTR v3, DWORD_PTR v4,
|
|
DWORD_PTR v5, DWORD_PTR v6)
|
|
{
|
|
printf(" Target6 (%ld,%ld,%ld,%ld,%ld,%ld)\n",
|
|
(DWORD)v1, (DWORD)v2, (DWORD)v3, (DWORD)v4,
|
|
(DWORD)v5, (DWORD)v6);
|
|
return 1006;
|
|
}
|
|
|
|
DWORD_PTR WINAPI Target7(DWORD_PTR v1, DWORD_PTR v2, DWORD_PTR v3, DWORD_PTR v4,
|
|
DWORD_PTR v5, DWORD_PTR v6, DWORD_PTR v7)
|
|
{
|
|
printf(" Target7 (%ld,%ld,%ld,%ld,%ld,%ld,%ld)\n",
|
|
(DWORD)v1, (DWORD)v2, (DWORD)v3, (DWORD)v4,
|
|
(DWORD)v5, (DWORD)v6, (DWORD)v7);
|
|
return 1007;
|
|
}
|
|
|
|
DWORD_PTR WINAPI Target8(DWORD_PTR v1, DWORD_PTR v2, DWORD_PTR v3, DWORD_PTR v4,
|
|
DWORD_PTR v5, DWORD_PTR v6, DWORD_PTR v7, DWORD_PTR v8)
|
|
{
|
|
printf(" Target8 (%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)\n",
|
|
(DWORD)v1, (DWORD)v2, (DWORD)v3, (DWORD)v4,
|
|
(DWORD)v5, (DWORD)v6, (DWORD)v7, (DWORD)v8);
|
|
return 1008;
|
|
}
|
|
|
|
DWORD_PTR WINAPI Target9(DWORD_PTR v1, DWORD_PTR v2, DWORD_PTR v3, DWORD_PTR v4,
|
|
DWORD_PTR v5, DWORD_PTR v6, DWORD_PTR v7, DWORD_PTR v8,
|
|
DWORD_PTR v9)
|
|
{
|
|
printf(" Target9 (%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)\n",
|
|
(DWORD)v1, (DWORD)v2, (DWORD)v3, (DWORD)v4,
|
|
(DWORD)v5, (DWORD)v6, (DWORD)v7, (DWORD)v8,
|
|
(DWORD)v9);
|
|
return 1009;
|
|
}
|
|
|
|
DWORD_PTR WINAPI Target10(DWORD_PTR v1, DWORD_PTR v2, DWORD_PTR v3, DWORD_PTR v4,
|
|
DWORD_PTR v5, DWORD_PTR v6, DWORD_PTR v7, DWORD_PTR v8,
|
|
DWORD_PTR v9, DWORD_PTR v10)
|
|
{
|
|
printf(" Target10(%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)\n",
|
|
(DWORD)v1, (DWORD)v2, (DWORD)v3, (DWORD)v4,
|
|
(DWORD)v5, (DWORD)v6, (DWORD)v7, (DWORD)v8,
|
|
(DWORD)v9, (DWORD)v10);
|
|
return 1010;
|
|
}
|
|
|
|
DWORD_PTR WINAPI Target11(DWORD_PTR v1, DWORD_PTR v2, DWORD_PTR v3, DWORD_PTR v4,
|
|
DWORD_PTR v5, DWORD_PTR v6, DWORD_PTR v7, DWORD_PTR v8,
|
|
DWORD_PTR v9, DWORD_PTR v10, DWORD_PTR v11)
|
|
{
|
|
printf(" Target11(%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)\n",
|
|
(DWORD)v1, (DWORD)v2, (DWORD)v3, (DWORD)v4,
|
|
(DWORD)v5, (DWORD)v6, (DWORD)v7, (DWORD)v8,
|
|
(DWORD)v9, (DWORD)v10, (DWORD)v11);
|
|
return 1011;
|
|
}
|
|
|
|
DWORD_PTR WINAPI Target12(DWORD_PTR v1, DWORD_PTR v2, DWORD_PTR v3, DWORD_PTR v4,
|
|
DWORD_PTR v5, DWORD_PTR v6, DWORD_PTR v7, DWORD_PTR v8,
|
|
DWORD_PTR v9, DWORD_PTR v10, DWORD_PTR v11, DWORD_PTR v12)
|
|
{
|
|
printf(" Target12(%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)\n",
|
|
(DWORD)v1, (DWORD)v2, (DWORD)v3, (DWORD)v4,
|
|
(DWORD)v5, (DWORD)v6, (DWORD)v7, (DWORD)v8,
|
|
(DWORD)v9, (DWORD)v10, (DWORD)v11, (DWORD)v12);
|
|
return 1012;
|
|
}
|
|
|
|
DWORD_PTR WINAPI Target13(DWORD_PTR v1, DWORD_PTR v2, DWORD_PTR v3, DWORD_PTR v4,
|
|
DWORD_PTR v5, DWORD_PTR v6, DWORD_PTR v7, DWORD_PTR v8,
|
|
DWORD_PTR v9, DWORD_PTR v10, DWORD_PTR v11, DWORD_PTR v12,
|
|
DWORD_PTR v13)
|
|
{
|
|
printf(" Target13(%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)\n",
|
|
(DWORD)v1, (DWORD)v2, (DWORD)v3, (DWORD)v4,
|
|
(DWORD)v5, (DWORD)v6, (DWORD)v7, (DWORD)v8,
|
|
(DWORD)v9, (DWORD)v10, (DWORD)v11, (DWORD)v12,
|
|
(DWORD)v13);
|
|
return 1013;
|
|
}
|
|
|
|
DWORD_PTR WINAPI Target14(DWORD_PTR v1, DWORD_PTR v2, DWORD_PTR v3, DWORD_PTR v4,
|
|
DWORD_PTR v5, DWORD_PTR v6, DWORD_PTR v7, DWORD_PTR v8,
|
|
DWORD_PTR v9, DWORD_PTR v10, DWORD_PTR v11, DWORD_PTR v12,
|
|
DWORD_PTR v13, DWORD_PTR v14)
|
|
{
|
|
printf(" Target14(%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)\n",
|
|
(DWORD)v1, (DWORD)v2, (DWORD)v3, (DWORD)v4,
|
|
(DWORD)v5, (DWORD)v6, (DWORD)v7, (DWORD)v8,
|
|
(DWORD)v9, (DWORD)v10, (DWORD)v11, (DWORD)v12,
|
|
(DWORD)v13, (DWORD)v14);
|
|
return 1014;
|
|
}
|
|
|
|
DWORD_PTR WINAPI Target15(DWORD_PTR v1, DWORD_PTR v2, DWORD_PTR v3, DWORD_PTR v4,
|
|
DWORD_PTR v5, DWORD_PTR v6, DWORD_PTR v7, DWORD_PTR v8,
|
|
DWORD_PTR v9, DWORD_PTR v10, DWORD_PTR v11, DWORD_PTR v12,
|
|
DWORD_PTR v13, DWORD_PTR v14, DWORD_PTR v15)
|
|
{
|
|
printf(" Target15(%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)\n",
|
|
(DWORD)v1, (DWORD)v2, (DWORD)v3, (DWORD)v4,
|
|
(DWORD)v5, (DWORD)v6, (DWORD)v7, (DWORD)v8,
|
|
(DWORD)v9, (DWORD)v10, (DWORD)v11, (DWORD)v12,
|
|
(DWORD)v13, (DWORD)v14, (DWORD)v15);
|
|
return 1015;
|
|
}
|
|
|
|
DWORD_PTR WINAPI Target16(DWORD_PTR v1, DWORD_PTR v2, DWORD_PTR v3, DWORD_PTR v4,
|
|
DWORD_PTR v5, DWORD_PTR v6, DWORD_PTR v7, DWORD_PTR v8,
|
|
DWORD_PTR v9, DWORD_PTR v10, DWORD_PTR v11, DWORD_PTR v12,
|
|
DWORD_PTR v13, DWORD_PTR v14, DWORD_PTR v15, DWORD_PTR v16)
|
|
{
|
|
printf(" Target16(%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld)\n",
|
|
(DWORD)v1, (DWORD)v2, (DWORD)v3, (DWORD)v4,
|
|
(DWORD)v5, (DWORD)v6, (DWORD)v7, (DWORD)v8,
|
|
(DWORD)v9, (DWORD)v10, (DWORD)v11, (DWORD)v12,
|
|
(DWORD)v13, (DWORD)v14, (DWORD)v15, (DWORD)v16);
|
|
return 1016;
|
|
}
|
|
|
|
DWORD_PTR WINAPI TargetV(DWORD_PTR v1, ...)
|
|
{
|
|
DWORD_PTR args[32];
|
|
|
|
va_list va;
|
|
va_start(va, v1);
|
|
|
|
int argc = 0;
|
|
for (args[argc++] = v1; args[argc-1] != 0;) {
|
|
args[argc++] = va_arg(va, DWORD_PTR);
|
|
}
|
|
va_end(va);
|
|
|
|
printf(" TargetV (");
|
|
int i = argc - 1;
|
|
for (; i > 0; i--) {
|
|
printf("%ld,", (DWORD)args[i]);
|
|
}
|
|
printf("%ld)\n", (DWORD)args[0]);
|
|
|
|
return 1000 + argc;
|
|
}
|
|
|
|
DWORD_PTR WINAPI TargetR(DWORD_PTR v1, ...)
|
|
{
|
|
DWORD_PTR args[32];
|
|
|
|
va_list va;
|
|
va_start(va, v1);
|
|
|
|
int argc = 0;
|
|
for (args[argc++] = v1; args[argc-1] != 0;) {
|
|
args[argc++] = va_arg(va, DWORD_PTR);
|
|
}
|
|
va_end(va);
|
|
|
|
if (v1 > 1) {
|
|
printf(":");
|
|
switch (argc) {
|
|
default:
|
|
return TargetR(0) + 1;
|
|
case 1:
|
|
return TargetR(args[0] - 1) + 1;
|
|
case 2:
|
|
return TargetR(args[0] - 1, args[1]) + 1;
|
|
case 3:
|
|
return TargetR(args[0] - 1, args[1], args[2]) + 1;
|
|
case 4:
|
|
return TargetR(args[0] - 1, args[1], args[2], args[3]) + 1;
|
|
case 5:
|
|
return TargetR(args[0] - 1, args[1], args[2], args[3],
|
|
args[4]) + 1;
|
|
case 6:
|
|
return TargetR(args[0] - 1, args[1], args[2], args[3],
|
|
args[4], args[5]) + 1;
|
|
case 7:
|
|
return TargetR(args[0] - 1, args[1], args[2], args[3],
|
|
args[4], args[5], args[6]) + 1;
|
|
case 8:
|
|
return TargetR(args[0] - 1, args[1], args[2], args[3],
|
|
args[4], args[5], args[6], args[7]) + 1;
|
|
case 9:
|
|
return TargetR(args[0] - 1, args[1], args[2], args[3],
|
|
args[4], args[5], args[6], args[7],
|
|
args[8]) + 1;
|
|
case 10:
|
|
return TargetR(args[0] - 1, args[1], args[2], args[3],
|
|
args[4], args[5], args[6], args[7],
|
|
args[8], args[9]) + 1;
|
|
case 11:
|
|
return TargetR(args[0] - 1, args[1], args[2], args[3],
|
|
args[4], args[5], args[6], args[7],
|
|
args[8], args[9], args[10]) + 1;
|
|
case 12:
|
|
return TargetR(args[0] - 1, args[1], args[2], args[3],
|
|
args[4], args[5], args[6], args[7],
|
|
args[8], args[9], args[10], args[11]) + 1;
|
|
case 13:
|
|
return TargetR(args[0] - 1, args[1], args[2], args[3],
|
|
args[4], args[5], args[6], args[7],
|
|
args[8], args[9], args[10], args[11],
|
|
args[12]) + 1;
|
|
case 14:
|
|
return TargetR(args[0] - 1, args[1], args[2], args[3],
|
|
args[4], args[5], args[6], args[7],
|
|
args[8], args[9], args[10], args[11],
|
|
args[12], args[13]) + 1;
|
|
case 15:
|
|
return TargetR(args[0] - 1, args[1], args[2], args[3],
|
|
args[4], args[5], args[6], args[7],
|
|
args[8], args[9], args[10], args[11],
|
|
args[12], args[13], args[14]) + 1;
|
|
case 16:
|
|
return TargetR(args[0] - 1, args[1], args[2], args[3],
|
|
args[4], args[5], args[6], args[7],
|
|
args[8], args[9], args[10], args[11],
|
|
args[12], args[13], args[14], args[15]) + 1;
|
|
case 17:
|
|
return TargetR(args[0] - 1, args[1], args[2], args[3],
|
|
args[4], args[5], args[6], args[7],
|
|
args[8], args[9], args[10], args[11],
|
|
args[12], args[13], args[14], args[15],
|
|
args[16]) + 1;
|
|
}
|
|
}
|
|
|
|
printf(" TargetR (");
|
|
int i = argc - 1;
|
|
for (; i > 0; i--) {
|
|
printf("%ld,", (DWORD)args[i]);
|
|
}
|
|
printf("%ld)\n", (DWORD)args[0]);
|
|
|
|
return 2000 + argc;
|
|
}
|
|
|
|
|
|
BOOL WINAPI DllMain(HINSTANCE hinst, DWORD dwReason, LPVOID reserved)
|
|
{
|
|
(void)hinst;
|
|
(void)dwReason;
|
|
(void)reserved;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
//
|
|
///////////////////////////////////////////////////////////////// End of File.
|