|
Die Funktion is_SetAllocatedImageMem() kann auf 64-Bit-Systemen nicht verwendet werden, da auf diesen keine benutzer-allokierten Speicher unterstützt werden. |
Syntax
INT is_SetAllocatedImageMem (HIDS hf, INT width, INT height, INT bitspixel, char* pcImgMem, int* pid)
Beschreibung
is_SetAllocatedImageMem() erklärt einen vom Benutzer allozierten Speicher zu einem Speicher, in den digitalisiert werden kann. Der Speicher muss groß genug allozierten worden und muss unbedingt global gesperrt sein! Ein mit is_SetAllocatedImageMem() angegebener Speicher kann in eine Sequenz eingebaut werden. Der Speicher muss mit is_FreeImageMem() aus der treiberinternen Verwaltung genommen werden, bevor er tatsächlich wieder freigegeben wird. Der allozierte Speicher darf nicht realloziert werden.
Folgende Reihenfolge ist zu beachten:
1.Speicher allozieren: HANDLE hgMem = GlobalAlloc (size);
2.Speicher sperren: char* pcMem = (char*) GlobalLock (hgMem);
Die Adresse des Speichers wird an den FALCON/EAGLE-Treiber übergeben. Dies geschieht mit der Funktion is_SetAllocatedImageMem(). Zusätzlich muss wie bei is_AllocImageMem() die Größe des Bildes angegeben werden. Eine Speicher-ID wird zurückgegeben. Diese wird eventuell für andere Funktionen benötigt.
is_SetAllocatedImageMem (hf, width, height, bitspixel, pcMem, &ID);
|
size >= (width * height * bitspixel/8) |
Der Bildspeicher kann nun wie üblich verwendet werden. Sequenzen sind ebenso möglich.
Der Speicherbereich muss wieder aus der Treiber-Verwaltung genommen werden: is_FreeImageMem (hf, pcMem, ID);
Hierbei wird der Speicher jedoch nicht freigegeben.
Der Benutzer muss dafür sorgen, dass der Speicher freigegeben wird:
GlobalUnlock (hgMem);
GlobalFree (hgMem);
Übergabeparameter
hf |
Handle auf Frame Grabber |
width |
Breite des Bildes |
height |
Höhe des Bildes |
bitspixel |
Farbtiefe des Bildes (Bits pro Pixel) |
pcImgMem |
Zeiger auf den Speicheranfang des allozierten Speichers |
pid |
Enthält dann die ID für diesen Speicher |
Rückgabewert
IS_SUCCESS, IS_NO_SUCCESS