// // readbpb.c //copyright (c) 1994 by CuTEST Inc. #include "windows.h" #include "stdio.h" #include "stdlib.h" #include "winioctl.h" int main(int argc, char *argv[]) { ULONG Value; UCHAR Buffer[8012]; HANDLE Source, Target; DWORD BytesRead, BytesWritten; ULONG err; int i; if ((Source = CreateFile( "ntfsboot.com", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL )) == ((HANDLE)-1)) { printf("Can't get a handle to ntfsboot.com\n"); err = GetLastError(); printf("error = %d\n", err); return 0; } printf("Open to ntfsboot.com succeeded\n"); if ((Target = CreateFile( "bootntfs.h", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL )) == ((HANDLE)-1)) { printf("Can't get a handle to bootntfs.h\n"); err = GetLastError(); printf("error = %d\n", err); return 0; } printf("Open to bootntfs.h succeeded\n"); sprintf(Buffer, "#define NTFSBOOTCODE_SIZE 32768\n\n\n"); WriteFile(Target, Buffer, strlen(Buffer), &BytesWritten, NULL); sprintf(Buffer, "unsigned char NtfsBootCode[] = {\n"); WriteFile(Target, Buffer, strlen(Buffer), &BytesWritten, NULL); printf("Starting Do-While loop\n"); i = 0; do { ReadFile(Source, &Value, 1, &BytesRead, NULL); _itoa(Value, Buffer, 10); WriteFile(Target, Buffer, strlen(Buffer), &BytesWritten, NULL); sprintf(Buffer, ","); WriteFile(Target, Buffer, strlen(Buffer), &BytesWritten, NULL); if ((i != 0) && (i % 16 == 0)) { sprintf(Buffer, "\n"); WriteFile(Target, Buffer, strlen(Buffer), &BytesWritten, NULL); } i++; } while (BytesRead); sprintf(Buffer, "};\n"); WriteFile(Target, Buffer, strlen(Buffer), &BytesWritten, NULL); CloseHandle(Source); CloseHandle(Target); }