-#include <stdarg.h>
-#include <string.h>
#include <stdio.h>
+#include <string.h>
+#define WIN32_NO_STATUS
#include <windows.h>
-#include <ddk/ntddk.h>
-#include <rosrtl/string.h>
+#define NTOS_MODE_USER
+#include <ndk/ntndk.h>
HANDLE OutputHandle;
HANDLE InputHandle;
-VOID STDCALL
+VOID STDCALL
ApcRoutine(PVOID Context,
PIO_STATUS_BLOCK IoStatus,
ULONG Reserved)
NTSTATUS Status;
HANDLE FileHandle;
OBJECT_ATTRIBUTES ObjectAttributes;
- UNICODE_STRING FileName = ROS_STRING_INITIALIZER(L"\\C:\\a.txt");
+ UNICODE_STRING FileName = RTL_CONSTANT_STRING(L"\\C:\\a.txt");
IO_STATUS_BLOCK IoStatus;
CHAR Buffer[256];
HANDLE EventHandle;
LARGE_INTEGER off;
-
+
AllocConsole();
InputHandle = GetStdHandle(STD_INPUT_HANDLE);
OutputHandle = GetStdHandle(STD_OUTPUT_HANDLE);
printf("APC test program\n");
-
+
EventHandle = CreateEventW(NULL,
FALSE,
FALSE,
printf("Failed to create event\n");
return 0;
}
-
+
printf("Opening file\n");
InitializeObjectAttributes(&ObjectAttributes,
&FileName,
0,
NULL,
NULL);
-
+
printf("Creating file\n");
FileHandle = CreateFileW(L"C:\\a.txt",
FILE_GENERIC_READ | FILE_GENERIC_WRITE,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL);
-
+
if (FileHandle == INVALID_HANDLE_VALUE)
{
printf("Open failed last err 0x%lu\n",GetLastError());
return 0;
}
-
+
off.QuadPart = 0;
-
+
printf("Reading file\n");
Status = ZwReadFile(FileHandle,
NULL,
&IoStatus,
Buffer,
256,//len
- &off ,//offset must exist if file was opened for asynch. i/o aka. OVERLAPPED
- NULL);
-
+ &off ,//offset must exist if file was opened for asynch. i/o aka. OVERLAPPED
+ NULL);
+
if (!NT_SUCCESS(Status))
{
printf("Read failed status 0x%lu\n",Status);