C-Library File IO Routines

Code Example

/*          sample.c : Sample PXPIO console application*/

#include <stdio.h>

#include <windows.h>

#include "pvkio.h"

int main(int argc, char* argv[])

HMODULE hPvkio;

FARPROC PVK_OpenExt, PVK_close, PVK_read, PVK_write, PVK_seek;

FARPROC PVK_AllocEnv, PVK_DeAllocEnv, PVK_RegisterKey;

HPVKENV hEnv;

intfh, keysz, dtasz, i, sts, fc;

char bfr[256], keybfr[4+1], dtabfr[4+256+1], pswd[32];

INT16 opt = 0;

INT32 open_err = 0;

memset(pswd, 0x00, sizeof(pswd));

/* Load the DLL and locate necessary entrypoints */

if ((hPvkio = LoadLibrary("pxpio.dll")) EQ NULL) return -1;

if ((PVK_OpenExt = GetProcAddress(hPvkio, "PVK_OpenExt"))

EQ NULL) return -2;

if ((PVK_close = GetProcAddress(hPvkio, "PVK_close"))

EQ NULL) return -2;

if ((PVK_read = GetProcAddress(hPvkio, "PVK_read"))

EQ NULL) return -2;

if ((PVK_write = GetProcAddress(hPvkio, "PVK_write"))

EQ NULL) return -2;

if ((PVK_seek = GetProcAddress(hPvkio, "PVK_seek"))

EQ NULL) return -2;

if ((PVK_AllocEnv = GetProcAddress(hPvkio, "PVK_AllocEnv"))

EQ NULL) return -2;

if ((PVK_DeAllocEnv = GetProcAddress(hPvkio, "PVK_DeAllocEnv"))

EQ NULL) return -2;

if ((PVK_RegisterKey = GetProcAddress(hPvkio, "PVK_RegisterKey"))

EQ NULL) return -2;

/* Create a new Environment */

hEnv = (HPVKENV)(*PVK_AllocEnv)();

if (hEnv EQ NULL) return -3;

(*PVK_RegisterKey)(hEnv, "<Insert License Name and Number here>", 12345678L);

fh = (int)((*PVK_OpenExt)(hEnv, "testfile", pswd, sizeof(pswd), opt, &open_err));

if (fh EQ (int)-1) return -4;

/*          Insert/Update 10 records */

for(i=1;i<=10;i++)

{

sprintf(keybfr, "%04d", i);

sprintf(dtabfr, "This is record #%d%c", i, 0x8a);

keysz = strlen(keybfr);

dtasz = strlen(dtabfr);

sts = (int)((*PVK_write)(fh, &dtabfr, dtasz, &keybfr, keysz));

sprintf(bfr, "Writing: %s - %s - sts=%d\n", keybfr, dtabfr, sts);

printf(bfr);

}

/* Seek to key 0005 and read until end of file */

sts = (int)((*PVK_seek)(fh, "0005", 4, 1));

fc = PVKRD_CUR;

for(;;)

{

sts = (int)((*PVK_read)(fh, &dtabfr, sizeof(dtabfr), fc));

if (sts EQ -1) break;/* EOF */

dtabfr[sts] = 0;

sprintf(bfr, "Read: %s - sts=%d\n", dtabfr, sts);

printf(bfr);

fc = PVKRD_NEXT;

}

(*PVK_close)(fh);

(*PVK_DeAllocEnv)(hEnv);

FreeLibrary(hPvkio);

return 0;

}