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;
}