UNIDRV_PRIVATE_DEVMODE Struktur (printoem.h)
Mit der UNIDRV_PRIVATE_DEVMODE-Struktur können Unidrv-Plug-Ins die Größe des privaten Teils der DEVMODEW--Struktur von Unidrv bestimmen.
Syntax
typedef struct _UNIDRV_PRIVATE_DEVMODE {
WORD wReserved[4];
WORD wSize;
} UNIDRV_PRIVATE_DEVMODE, *PUNIDRV_PRIVATE_DEVMODE;
Angehörige
wReserved[4]
Reserviert für die Systemverwendung.
wSize
Die Größe des privaten Teils der DEVMODEW- Struktur von Unidrv in Bytes.
Bemerkungen
Informationen zu den öffentlichen und privaten Abschnitten der DEVMODEW--Struktur finden Sie unter DEVMODEW-.
Printoem.h definiert ein Makro zum Bestimmen der Größe des privaten Teils der DEVMODEW Struktur von Unidrv.
#define GET_UNIDRV_PRIVATE_DEVMODE_SIZE(pdm)\
( ( (pdm)->dmDriverExtra > (FIELD_OFFSET(UNIDRV_PRIVATE_DEVMODE, wSize) + sizeof(WORD)) ) ? \
((PUNIDRV_PRIVATE_DEVMODE)((PBYTE)(pdm) + (pdm)-> dmSize)) -> wSize : 0 )
Das pdm-Argument im GET_UNIDRV_PRIVATE_DEVMODE_SIZE-Makro ist ein Zeiger auf eine DEVMODEW--Struktur. Das Makro bestimmt, ob der Wert des dmDriverExtra- Mitglieds der DEVMODEW--Struktur größer als der Byteoffset des wSize Member der UNIDRV_PRIVATE_DEVMODE Struktur ist. Wenn ja, gibt das Makro den Wert des wSize Member in der UNIDRV_PRIVATE_DEVMODE Struktur zurück. Ist dies nicht der Fehler, gibt das Makro null zurück.
Gehen Sie wie folgt vor, um die Adresse des privaten Teils der DEVMODEW- struktur Ihres Plug-Ins sicher zu ermitteln:
Rufen Sie das GET_UNIDRV_PRIVATE_DEVMODE_SIZE Makro auf, und übergeben Sie die Adresse der DEVMODEW- Struktur im Aufruf.
Stellen Sie sicher, dass (pdm)->dmDriverExtra größer als der vom Makro zurückgegebene Wert ist. (Das Makro gibt den Wert des wSize Member der UNIDRV_PRIVATE_DEVMODE Struktur zurück.)
Ermitteln Sie die Adresse des privaten Teils der DEVMODEW- Struktur Ihres Plug-Ins wie folgt.
pdmPlugin = (PBYTE)(pdm) + (pdm)->dmSize + wSize;
Das vorangehende Beispiel beginnt mit der Adresse der öffentlichen DEVMODEW--Struktur (pdm), fügt die Anzahl der Bytes dieser Struktur hinzu (pdm->dmSize), und fügt dann die Größe in Bytes der privaten DEVMODEW Struktur (wSize) hinzu. Die privaten DEVMODEW Daten eines Plug-Ins beginnen an dieser Speicheradresse. Wenn mehrere Plug-Ins miteinander verkettet sind, ist die von diesem Beispiel zurückgegebene Adresse das private DEVMODEW--Daten des ersten Plug-Ins. Die daten des zweiten Plug-Ins DEVMODEW folgen den privaten DEVMODEW Daten des ersten Plug-Ins, dem privaten DEVMODEW Daten des zweiten Plug-Ins, dem privaten DEVMODEW daten des zweiten Plug-Ins usw. Ein Plug-In-Entwickler, der die Adresse der privaten n-th Plug-Ins private DEVMODEW--Daten ermitteln muss, müssen die Größen der privaten DEVMODEW--Daten für die ersten n - 1 Plug-Ins kennen.
Stellen Sie sicher, dass der private Teil der DEVMODEW- Struktur Ihres Plug-Ins mit einer gültigen OEM_DMEXTRAHEADER-Struktur beginnt.
Anforderungen
Anforderung | Wert |
---|---|
Header- | printoem.h (include Printoem.h) |