00025 {
00026 HANDLE Profile, Profile2;
00027 ULONG Hack;
00028 PULONG
Buffer;
00029 HANDLE CurrentProcessHandle;
00030 ULONG Size1;
00031
NTSTATUS status;
00032
00033
Buffer = &Hack;
00034
00035 CurrentProcessHandle = NtCurrentProcess();
00036
00037 status =
NtCreateProfile (&Profile,
00038 CurrentProcessHandle,
00039 NULL,
00040 0xFFFFFFFF,
00041 16,
00042 Buffer,
00043 (ULONG)64*1024,
00044 ProfileTime,
00045 (KAFFINITY)-1);
00046
00047
if (status != STATUS_SUCCESS) {
00048
DbgPrint(
"(Expected) create profile #1 failed - status %lx\n", status);
00049 }
00050
00051 status =
NtStartProfile (Profile);
00052
if (status != STATUS_SUCCESS) {
00053
DbgPrint(
"(Expected) start profile #1 failed - status %lx\n", status);
00054 }
00055
00056 status =
NtStopProfile (Profile);
00057
if (status != STATUS_SUCCESS) {
00058
DbgPrint(
"(Expected) stop profile #1 failed - status %lx\n", status);
00059 }
00060
00061 Size1 = 1024*64;
00062
Buffer =
NULL;
00063
00064 status =
NtAllocateVirtualMemory (CurrentProcessHandle, (PVOID *)&Buffer,
00065 0, &Size1, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
00066
00067
00068
00069
00070
00071 status =
NtCreateProfile (&Profile,
00072 NtCurrentProcess(),
00073 NULL,
00074 0xFFFFFFFF,
00075 16,
00076 Buffer,
00077 (ULONG)64*1024,
00078 ProfileTime,
00079 (KAFFINITY)-1);
00080
00081
if (status != STATUS_SUCCESS) {
00082
DbgPrint(
"(Expected) create profile #2 failed - status %lx\n", status);
00083 }
00084
00085 status =
NtStartProfile (Profile);
00086
if (status != STATUS_SUCCESS) {
00087
DbgPrint(
"(Expected) start profile #2 failed - status %lx\n", status);
00088 }
00089
00090 status =
NtStopProfile (Profile);
00091
if (status != STATUS_SUCCESS) {
00092
DbgPrint(
"(Expected) stop profile #2 failed - status %lx\n", status);
00093 }
00094
00095 status =
NtClose (Profile);
00096
00097
00098
00099
00100
00101 status =
NtCreateProfile (&Profile,
00102 NtCurrentProcess(),
00103 NULL,
00104 0xFFFFFFFF,
00105 18,
00106 Buffer,
00107 (ULONG)64*1024,
00108 ProfileTime,
00109 (KAFFINITY)-1);
00110
00111
if (status != STATUS_SUCCESS) {
00112
DbgPrint(
"(Unexpected) create profile #3 failed - status %lx\n", status);
00113 }
00114
00115 status =
NtStartProfile (Profile);
00116
if (status != STATUS_SUCCESS) {
00117
DbgPrint(
"(Unexpected) start profile #3 failed - status %lx\n", status);
00118 }
00119
00120 status =
NtStopProfile (Profile);
00121
if (status != STATUS_SUCCESS) {
00122
DbgPrint(
"(Unexpected) stop profile #3 failed - status %lx\n", status);
00123 }
00124
00125 status =
NtClose (Profile);
00126
00127
00128
00129
00130
00131
00132 status =
NtCreateProfile (&Profile,
00133 NtCurrentProcess(),
00134 (PVOID)0x203030,
00135 0xffffffff,
00136 6,
00137 Buffer,
00138 (ULONG)64*1024,
00139 ProfileTime,
00140 (KAFFINITY)-1);
00141
00142
if (status != STATUS_SUCCESS) {
00143
DbgPrint(
"(Expected) create profile #4 failed - status %lx\n", status);
00144 }
00145
00146 status =
NtStartProfile (Profile);
00147
if (status != STATUS_SUCCESS) {
00148
DbgPrint(
"(Expected) start profile #4 failed - status %lx\n", status);
00149 }
00150
00151 status =
NtStopProfile (Profile);
00152
if (status != STATUS_SUCCESS) {
00153
DbgPrint(
"(Expected) stop profile #4 failed - status %lx\n", status);
00154 }
00155
00156 status =
NtClose (Profile);
00157
00158
00159
00160
00161
00162 status =
NtCreateProfile (&Profile,
00163 NtCurrentProcess(),
00164 (PVOID)0x80000000,
00165 0x7fffffff,
00166 17,
00167 Buffer,
00168 (ULONG)64*1024,
00169 ProfileTime,
00170 (KAFFINITY)-1);
00171
00172
if (status != STATUS_SUCCESS) {
00173
DbgPrint(
"(Unexpected) create profile #5 failed - status %lx\n", status);
00174 }
00175
00176 status =
NtStartProfile (Profile);
00177
if (status != STATUS_SUCCESS) {
00178
DbgPrint(
"(Unexpected) start profile #5 failed - status %lx\n", status);
00179 }
00180
00181 status =
NtStopProfile (Profile);
00182
if (status != STATUS_SUCCESS) {
00183
DbgPrint(
"(Unexpected) stop profile #5 failed - status %lx\n", status);
00184 }
00185
00186
00187
00188
00189
00190 status =
NtStartProfile (Profile);
00191
if (status != STATUS_SUCCESS) {
00192
DbgPrint(
"(Unexpected) start profile #6.1 failed - status %lx\n", status);
00193 }
00194
00195
00196
00197
00198
00199 status =
NtStartProfile (Profile);
00200
if (status != STATUS_SUCCESS) {
00201
DbgPrint(
"(Expected) start profile #6.2 failed - status %lx\n", status);
00202 }
00203
00204
00205
00206
00207
00208 status =
NtCreateProfile (&Profile2,
00209 NtCurrentProcess(),
00210 NULL,
00211 0x3000000,
00212 15,
00213 Buffer,
00214 (ULONG)64*1024,
00215 ProfileTime,
00216 (KAFFINITY)-1);
00217
00218
00219
if (status != STATUS_SUCCESS) {
00220
DbgPrint(
"create profile #7 failed - status %lx\n", status);
00221 }
00222
00223 status =
NtStartProfile (Profile2);
00224
if (status != STATUS_SUCCESS) {
00225
DbgPrint(
"start profile #7.1 failed - status %lx\n", status);
00226 }
00227
00228 status =
NtStopProfile (Profile2);
00229
if (status != STATUS_SUCCESS) {
00230
DbgPrint(
"stop profile #7.2 failed - status %lx\n", status);
00231 }
00232
00233 status =
NtStopProfile (Profile2);
00234
if (status != STATUS_SUCCESS) {
00235
DbgPrint(
"(Expected) stop profile #7.3 failed - status %lx\n", status);
00236 }
00237
00238 status =
NtStartProfile (Profile2);
00239
if (status != STATUS_SUCCESS) {
00240
DbgPrint(
"start profile #7.4 failed - status %lx\n", status);
00241 }
00242
00243 status =
NtClose (Profile);
00244
if (status != STATUS_SUCCESS) {
00245
DbgPrint(
"close profile #7.5 failed - status %lx\n", status);
00246 }
00247
00248
return status;
00249 }