win32-def
Version:
win32 definitions for node-ffi
1,463 lines (1,414 loc) • 42.3 kB
JavaScript
/**
* win32-def
* win32 definitions for node-ffi
*
* @version 26.1.1
* @author waiting
* @license MIT
* @link https://waitingsong.github.io/node-win32-api
*/
'use strict';
var assert = require('node:assert');
var ffi = require('koffi');
/* eslint-disable @typescript-eslint/no-explicit-any */
/**
* @link https://koffi.dev/functions#calling-conventions
*/
var CallingConvention;
(function (CallingConvention) {
CallingConvention["Cdecl"] = "";
CallingConvention["Stdcall"] = "__stdcall";
CallingConvention["Fastcall"] = "__fastcall";
CallingConvention["Thiscall"] = "__thiscall";
})(CallingConvention || (CallingConvention = {}));
// dict of windef value
const config = {
_WIN64: process.arch === 'x64',
};
({
convention: CallingConvention.Cdecl});
/**
* @link https://koffi.dev/input
* @link https://tootallnate.github.io/ref/
*/
var Def;
(function (Def) {
Def["bool"] = "bool";
Def["byte"] = "uint8_t";
Def["int"] = "int";
Def["int8"] = "int8_t";
Def["int16"] = "int16_t";
Def["int32"] = "int32_t";
Def["int64"] = "int64_t";
Def["float"] = "float";
Def["long"] = "long";
Def["longlong"] = "longlong";
// ptr = 'pointer',
Def["uchar"] = "uchar";
Def["uint"] = "uint";
Def["uint8"] = "uint8_t";
Def["uint16"] = "uint16_t";
Def["uint32"] = "uint32_t";
Def["uint64"] = "uint64_t";
Def["ulong"] = "ulong";
Def["ulonglong"] = "ulonglong";
Def["ushort"] = "ushort";
Def["void"] = "void";
Def["boolPtr"] = "bool*";
Def["bytePtr"] = "uint8_t*";
Def["charPtr"] = "char*";
Def["intPtr"] = "int*";
Def["int8Ptr"] = "int8_t*";
Def["int16Ptr"] = "int16_t*";
Def["int32Ptr"] = "int32_t*";
Def["int64Ptr"] = "int64_t*";
Def["floatPtr"] = "float*";
Def["longPtr"] = "long*";
Def["uintPtr"] = "uint*";
Def["uint8Ptr"] = "uint8_t*";
Def["intPtrPtr"] = "int**";
Def["uint16Ptr"] = "uint16_t*";
Def["uint32Ptr"] = "uint32_t*";
Def["uint64Ptr"] = "uint64_t*";
Def["ulonglongPtr"] = "ulonglong*";
Def["voidPtr"] = "void*";
Def["uintPtrPtr"] = "uint**";
Def["uint16PtrPtr"] = "uint16_t**";
Def["uint32PtrPtr"] = "uint32_t**";
Def["uint64PtrPtr"] = "uint64_t**";
Def["ulonglongPtrPtr"] = "ulonglong**";
Def["voidPtrPtr"] = "void**";
})(Def || (Def = {}));
// windows data types for ref module https://github.com/TooTallNate/ref
// https://msdn.microsoft.com/en-us/library/windows/desktop/aa383751
const { _WIN64 } = config;
/**
* @link https://docs.microsoft.com/en-us/windows/win32/secauthz/access-mask-format
*/
const ACCESS_MASK = Def.int32;
const ATOM = Def.uint16;
const DWORD = Def.uint32;
_WIN64 ? Def.uint64Ptr : Def.uint32Ptr;
const PVOID = Def.voidPtr;
/**
* `uint32` or `uint64` used as value usage (memory address) instead of PVOID (Buffer),
* Use `HANDLE` (number) for params definition of the api,
* @see https://stackoverflow.com/questions/18266626/what-is-the-range-of-a-windows-handle-on-a-64-bits-application/29526711#29526711
*/
const HANDLE = _WIN64 ? Def.uint64 : Def.uint32;
const LONG_PTR = _WIN64 ? Def.int64 : Def.int32;
const ULONG_PTR = _WIN64 ? Def.int64 : Def.int32;
Def.void;
Def.uint16;
const WORD = Def.int16;
const BOOL = Def.int32;
Def.bool;
const BYTE = Def.byte;
Def.uint8;
Def.uint8;
// export const CONST;
Def.uint64;
Def.uint32;
Def.uint64;
Def.float;
_WIN64 ? Def.int32 : Def.int16;
const HBRUSH = HANDLE;
const HCURSOR = HANDLE;
const HICON = HANDLE;
const HINSTANCE = HANDLE;
Def.long;
const HWND = HANDLE;
/** A 32-bit signed integer */
const INT = Def.int;
_WIN64 ? Def.int64Ptr : Def.int32Ptr;
Def.int8;
Def.int16;
Def.int32;
Def.int64;
const LONG = Def.long;
Def.longlong;
Def.int32;
Def.int64;
const LPARAM = LONG_PTR;
Def.bytePtr;
Def.int8Ptr;
Def.int16Ptr;
Def.int16Ptr;
Def.voidPtr;
Def.uint16Ptr;
_WIN64 ? Def.int64Ptr : Def.int32Ptr;
Def.int32Ptr;
Def.charPtr;
Def.uint16Ptr;
const LPTSTR = Def.uint16Ptr;
Def.uint16Ptr;
Def.uint32;
Def.boolPtr;
Def.bytePtr;
Def.charPtr;
Def.uint8Ptr;
_WIN64 ? Def.int16Ptr : Def.int8Ptr;
Def.uint16Ptr;
Def.uint32Ptr;
Def.uint64Ptr;
Def.uint32Ptr;
Def.uint64Ptr;
Def.floatPtr;
_WIN64 ? Def.uint64PtrPtr : Def.uint32PtrPtr;
_WIN64 ? Def.uint64PtrPtr : Def.uint32PtrPtr;
Def.intPtrPtr;
Def.int8Ptr;
Def.int16Ptr;
Def.int32Ptr;
Def.int64Ptr;
Def.uint32Ptr;
Def.longPtr;
Def.int64Ptr;
Def.int32Ptr;
Def.int64Ptr;
// ? A 32-bit pointer. On a 32-bit system, this is a native pointer.
// On a 64-bit system, this is a truncated 64-bit pointer.
_WIN64 ? Def.int32Ptr : Def.int32Ptr;
// ? A 64-bit pointer. On a 64-bit system, this is a native pointer.
// On a 32-bit system, this is a sign-extended 32-bit pointer.
_WIN64 ? Def.int64Ptr : Def.int32Ptr;
Def.int16Ptr;
Def.charPtr;
Def.int16Ptr;
Def.uint16Ptr;
Def.uint16Ptr;
const PUINT = Def.uintPtr;
Def.uintPtrPtr;
Def.uint8Ptr;
Def.uint16Ptr;
Def.uint32Ptr;
Def.uint64Ptr;
Def.uintPtr;
Def.uint64Ptr;
Def.uint64PtrPtr;
Def.uintPtr;
Def.uint64Ptr;
Def.uint16Ptr;
Def.uint16Ptr;
Def.uint16Ptr;
Def.uint16Ptr;
Def.uint64;
const SHORT = Def.int16;
Def.int16;
Def.uint16;
Def.uchar;
_WIN64 ? Def.uint32 : Def.uint16;
const UINT = Def.uint;
const UINT_PTR = _WIN64 ? Def.uint64 : Def.uint32;
Def.uint8;
const UINT16 = Def.uint16;
const UINT32 = Def.uint32;
Def.uint64;
const ULONG = Def.uint;
Def.uint64;
Def.uint32;
Def.uint64;
const USHORT = Def.ushort;
const WNDPROC = Def.voidPtr;
Def.voidPtr;
/**
* Note: original be typedef UINT_PTR WPARAM;
* CALLBACK WNDCLASSEX.lpfnWndProc may pass negative number and cause process exit.
*/
const WPARAM = UINT_PTR;
/**
* For 'str16' from https://koffi.dev/input
*/
const WString = 'str16';
class StructUnionCache {
static cacheStructMap = new Map();
static cacheUnionMap = new Map();
// #region STRUCT
static getStruct(key) {
assert(key, `key is empty`);
return StructUnionCache.cacheStructMap.get(key);
}
static setStruct(key, value) {
assert(key, `key is empty`);
StructUnionCache.cacheStructMap.set(key, value);
}
static removeStruct(key) {
assert(key, `key is empty`);
return StructUnionCache.cacheStructMap.delete(key);
}
// #region UNION
static getUnion(key) {
assert(key, `key is empty`);
return StructUnionCache.cacheUnionMap.get(key);
}
static setUnion(key, value) {
assert(key, `key is empty`);
StructUnionCache.cacheUnionMap.set(key, value);
}
static removeUnion(key) {
assert(key, `key is empty`);
return StructUnionCache.cacheUnionMap.delete(key);
}
}
// #region genSimpleStruct()
/**
* Generate a simple struct
* - def must has no nested struct or union
*/
function genSimpleStruct(def, name, pointer) {
const key = name ? name.trim() : '';
let ptr = pointer ?? '';
if (key && !ptr) {
ptr = key + ' *';
}
if (key) {
const data = StructUnionCache.getStruct(key);
if (data) {
return data;
}
}
let ret;
if (key) {
const type = ffi.struct(key, def);
const size = ffi.sizeof(type);
ret = { name: key, pointer: ptr, CType: type, size };
StructUnionCache.setStruct(key, ret); // cache named struct only
}
else {
const type = ffi.struct(def);
const size = ffi.sizeof(type);
ret = { name: key, pointer: ptr, CType: type, size };
}
assert(ret, `ret is null or undefined`);
return ret;
}
// #region genSimpleUnion()
function genSimpleUnion(def, name, pointer) {
const key = name ? name.trim() : '';
let ptr = pointer ? pointer.trim() : '';
if (key && !ptr) {
ptr = key + ' *';
}
if (key) {
const data = StructUnionCache.getUnion(key);
if (data) {
return data;
}
}
let ret;
if (key) {
const type = ffi.union(key, def);
const size = ffi.sizeof(type);
ret = { name: key, pointer: ptr, CType: type, size };
StructUnionCache.setUnion(key, ret); // cache named union only
}
else {
const type = ffi.union(def);
const size = ffi.sizeof(type);
ret = { name: key, pointer: ptr, CType: type, size };
}
return ret;
}
// #region genStruct()
/**
* Generate a complex struct,
* def can have nested struct or union
* - key s{number} means struct
* - key u{number} means union
*/
function genStruct(def, name, pointer, sizeColumns) {
const struct = genComplexStruct(def, name, pointer);
bindPayloadGetter(struct, sizeColumns);
return struct;
}
function bindPayloadGetter(struct, sizeColumns) {
if (typeof struct.sizeColumns === 'undefined') {
Object.defineProperty(struct, 'sizeColumns', {
enumerable: true,
writable: false,
value: sizeColumns,
});
}
if (typeof struct.payload === 'undefined') {
// payload must be the new one after each call of the struct factory function
Object.defineProperty(struct, 'payload', {
get: function () {
if (!this.sizeColumns?.length) {
return {};
}
const ret = {};
this.sizeColumns.forEach((key) => {
if (key) {
Object.defineProperty(ret, key, {
enumerable: true,
writable: false,
value: this.size,
});
}
});
return ret;
},
});
}
}
// #region genComplexStruct()
/**
* Generate a complex struct,
* def can have nested struct or union
* - key s{number} means struct
* - key u{number} means union
*/
function genComplexStruct(def, name, pointer) {
const key = name ? name.trim() : '';
const ret = genStructCached(def, key, pointer);
if (name) {
assert(ret.name === key, `name: "${ret.name}" !== "${key}"`);
}
return ret;
}
const regStructName = /^s\d*$/u;
const regUnionName = /^u\d*$/u;
function genStructCached(def, name, pointer) {
if (name) {
const data = StructUnionCache.getStruct(name);
if (data) {
return data;
}
}
const data = { ...def };
// detect nested struct or union, key name start at "s{number*}" means struct, start at "u{number*}" means union
genItem(data);
const ret = genSimpleStruct(data, name, pointer);
return ret;
}
// @region genUnion()
function genUnion(def, name, pointer) {
const key = name ? name.trim() : '';
let pname = pointer ?? '';
if (key && !pname) {
pname = key + '*';
}
const ret = genUnionCached(def, key, pname);
if (name) {
assert(ret.name === key, `name: ${ret.name} !== ${key}`);
}
return ret;
}
function genUnionCached(def, name, pointer) {
if (name) {
const data = StructUnionCache.getUnion(name);
if (data) {
return data;
}
}
const data = { ...def };
// detect nested struct or union, key name start at "s{number*}" means struct, start at "u{number*}" means union
genItem(data);
const ret = genSimpleUnion(data, name, pointer);
return ret;
}
function genItem(data) {
// detect nested struct or union, key name start at "s{number*}" means struct, start at "u{number*}" means union
Object.keys(data).forEach((key) => {
const value = data[key];
assert(value, `value of key ${key} is null or undefined`);
if (typeof value === 'string') {
return;
}
if (typeof value === 'function') {
const nested = value();
assert(nested, `nested struct must be an object, but got ${typeof nested}`);
data[key] = nested.CType;
}
else if (typeof value === 'object') {
// Do not check value, because it can be KoffiCType
// assert(Object.keys(value).length > 0, `value of key ${key} is empty object`)
if (regStructName.test(key)) {
const nested = genComplexStruct(value); // do not pass key
data[key] = nested.CType;
}
else if (regUnionName.test(key)) {
const nested = genUnion(value); // do not pass key
data[key] = nested.CType;
}
else if (Object.keys(value).length === 0) {
return; // maybe fix array
}
/* c8 ignore next 3 */
else {
assert(false, `key ${key} must start with 's' or 'u'`);
}
}
/* c8 ignore next 3 */
else {
assert(data[key], `value of key ${key} is null or undefined`);
}
});
}
/**
* Generate a fixed int16_t array.
* convert it back to string through decodeInt16Array()
*/
function genFixedInt16Array(length) {
assert(length > 0, `length must be greater than 0, but got ${length}`);
const type = ffi.array('int16_t', length);
return type;
}
function genFixedArray(length) {
assert(length > 0, `length must be greater than 0, but got ${length}`);
const type = ffi.array('int16_t', length, 'Array');
return type;
}
const key$A = 'INITCOMMONCONTROLSEX';
const ptr$A = `${key$A}*`;
const init$A = {
dwSize: DWORD,
dwICC: DWORD,
};
const LPINITCOMMONCONTROLSEX = ptr$A;
const INITCOMMONCONTROLSEX_Name = key$A;
const INITCOMMONCONTROLSEX_Init = init$A;
/**
* INITCOMMONCONTROLSEX structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/commctrl/nf-commctrl-initcommoncontrolsex
*/
function INITCOMMONCONTROLSEX_Factory() {
return genStruct(init$A, key$A, ptr$A, ['dwSize']);
}
const key$z = 'FILETIME';
const ptr$z = `${key$z}*`;
const init$z = {
dwLowDateTime: DWORD,
dwHighDateTime: DWORD,
};
const LPFILETIME = ptr$z;
const LPFILETIME_Name = key$z;
const FILETIME_Init = init$z;
/**
* FILETIME structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/minwinbase/ns-minwinbase-filetime
*/
function FILETIME_Factory() {
return genStruct(init$z, key$z, ptr$z);
}
const key$y = 'SYSTEMTIME';
const ptr$y = `${key$y}*`;
const init$y = {
wYear: WORD,
wMonth: WORD,
wDayOfWeek: WORD,
wDay: WORD,
wHour: WORD,
wMinute: WORD,
wSecond: WORD,
wMilliseconds: WORD,
};
const LPSYSTEMTIME = ptr$y;
const SYSTEMTIME_Name = key$y;
const SYSTEMTIME_Init = init$y;
/**
* SYSTEMTIME structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/minwinbase/ns-minwinbase-systemtime
*/
function SYSTEMTIME_Factory() {
return genStruct(init$y, key$y, ptr$y);
}
const key$x = 'POINT';
const ptr$x = `${key$x}*`;
const init$x = {
x: LONG,
y: LONG,
};
const LPPOINT = ptr$x;
const POINT_Name = key$x;
const POINT_Init = init$x;
/**
* POINT structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/windef/ns-windef-point
*/
function POINT_Factory() {
return genStruct(init$x, key$x, ptr$x);
}
const key$w = 'RECT';
const ptr$w = `${key$w}*`;
const init$w = {
left: LONG,
top: LONG,
right: LONG,
bottom: LONG,
};
const LPRECT = ptr$w;
const RECT_Name = key$w;
const RECT_Init = init$w;
/**
* RECT structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/windef/ns-windef-RECT
*/
function RECT_Factory() {
return genStruct(init$w, key$w, ptr$w);
}
const key$v = 'DEVMODEW';
const ptr$v = `${key$v}*`;
const init$v = {
dmDeviceName: genFixedInt16Array(32),
dmSpecVersion: WORD,
dmDriverVersion: WORD,
dmSize: WORD,
dmDriverExtra: WORD,
dmFields: DWORD,
u1: {
s1: {
dmOrientation: SHORT,
dmPaperSize: SHORT,
dmPaperLength: SHORT,
dmPaperWidth: SHORT,
dmScale: SHORT,
dmCopies: SHORT,
dmDefaultSource: SHORT,
dmPrintQuality: SHORT,
},
dmPosition: POINT_Factory,
s2: {
dmPosition: POINT_Factory,
dmDisplayOrientation: DWORD,
dmDisplayFixedOutput: DWORD,
},
},
dmColor: SHORT,
dmDuplex: SHORT,
dmYResolution: SHORT,
dmTTOption: SHORT,
dmCollate: SHORT,
dmFormName: genFixedInt16Array(32),
dmLogPixels: WORD,
dmBitsPerPel: DWORD,
dmPelsWidth: DWORD,
dmPelsHeight: DWORD,
u2: {
dmDisplayFlags: DWORD,
dmNup: DWORD,
},
dmDisplayFrequency: DWORD,
dmICMMethod: DWORD,
dmICMIntent: DWORD,
dmMediaType: DWORD,
dmDitherType: DWORD,
dmReserved1: DWORD,
dmReserved2: DWORD,
dmPanningWidth: DWORD,
dmPanningHeight: DWORD,
};
const LPDEVMODEW = ptr$v;
const DEVMODEW_Name = key$v;
const DEVMODEW_Init = init$v;
/**
* DEVMODEW structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/wingdi/ns-wingdi-devmodew
*/
function DEVMODEW_Factory() {
return genStruct(init$v, key$v, ptr$v, ['dmSize']);
}
const key$u = 'DISPLAY_DEVICEW';
const ptr$u = `${key$u}*`;
const init$u = {
cb: DWORD,
DeviceName: genFixedInt16Array(32),
DeviceString: genFixedInt16Array(128),
StateFlags: DWORD,
DeviceID: genFixedInt16Array(128),
DeviceKey: genFixedInt16Array(128),
};
const LPDISPLAY_DEVICEW = ptr$u;
const DISPLAY_DEVICEW_Name = key$u;
const DISPLAY_DEVICEW_Init = init$u;
/**
* DISPLAY_DEVICEW structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/wingdi/ns-wingdi-display_devicew
*/
function DISPLAY_DEVICEW_Factory() {
return genStruct(init$u, key$u, ptr$u, ['cb']);
}
const key$t = 'DOC_INFO_1';
const ptr$t = `${key$t}*`;
const init$t = {
pDocName: WString,
pOutputFile: WString,
pDatatype: WString,
};
const LPDOC_INFO_1 = ptr$t;
const DOC_INFO_1_Name = key$t;
const DOC_INFO_1_Init = init$t;
/**
* DOC_INFO_1 structure,
* Describes a document that will be printed.
* @link https://learn.microsoft.com/en-us/windows/win32/printdocs/doc-info-1
*/
function DOC_INFO_1_Factory() {
return genStruct(init$t, key$t, ptr$t);
}
const key$s = 'JOB_INFO_1';
const ptr$s = `${key$s}*`;
const init$s = {
JobId: DWORD,
pPrinterName: LPTSTR,
pMachineName: LPTSTR,
pUserName: LPTSTR,
pDocument: LPTSTR,
pDatatype: LPTSTR,
pStatus: LPTSTR,
Status: DWORD,
Priority: DWORD,
Position: DWORD,
TotalPages: DWORD,
PagesPrinted: DWORD,
Submitted: SYSTEMTIME_Factory,
};
const PJOB_INFO_1 = ptr$s;
const JOB_INFO_1_Name = key$s;
const JOB_INFO_1_Init = init$s;
/**
* JOB_INFO_1 structure,
* The JOB_INFO_1 structure specifies print-job information such as the job-identifier value
* @link https://learn.microsoft.com/en-us/windows/win32/printdocs/job-info-1
*/
function JOB_INFO_1_Factory() {
return genStruct(init$s, key$s, ptr$s);
}
const key$r = 'PRINTER_DEFAULTS';
const ptr$r = `${key$r}*`;
const init$r = {
pDatatype: LPTSTR,
pDevMode: DEVMODEW_Factory,
DesiredAccess: ACCESS_MASK,
};
const PPRINTER_DEFAULTS = ptr$r;
const PRINTER_DEFAULTS_Name = key$r;
const PRINTER_DEFAULTS_Init = init$r;
/**
* PRINTER_DEFAULTS structure,
* Specifies the default data type, environment, initialization data, and access rights for a printer.
* @link https://learn.microsoft.com/en-us/windows/win32/printdocs/printer-defaults
*/
function PRINTER_DEFAULTS_Factory() {
return genStruct(init$r, key$r, ptr$r);
}
const key$q = 'PRINTER_INFO_1';
const ptr$q = `${key$q}*`;
const init$q = {
Flags: DWORD,
pDescription: WString,
pName: WString,
pComment: WString,
};
const PPRINTER_INFO_1 = ptr$q;
const PRINTER_INFO_1_Name = key$q;
const PRINTER_INFO_1_Init = init$q;
/**
* PRINTER_INFO_1 structure,
* Specifies general printer information
* @link https://learn.microsoft.com/en-us/windows/win32/printdocs/PRINTER-INFO-1
*/
function PRINTER_INFO_1_Factory() {
return genStruct(init$q, key$q, ptr$q);
}
const key$p = 'PRINTER_INFO_4';
const ptr$p = `${key$p}*`;
const init$p = {
pPrinterName: WString,
pServerName: WString,
Attributes: DWORD,
};
const PPRINTER_INFO_4 = ptr$p;
const PRINTER_INFO_4_Name = key$p;
const PRINTER_INFO_4_Init = init$p;
/**
* PRINTER_INFO_4 structure,
* Specifies general printer information
* @link https://learn.microsoft.com/en-us/windows/win32/printdocs/PRINTER-INFO-4
* @description The structure can be used to retrieve minimal printer information on a call to EnumPrinters.
* Such a call is a fast and easy way to retrieve the names and attributes of all locally installed printers
* on a system and all remote printer connections that a user has established.
*/
function PRINTER_INFO_4_Factory() {
return genStruct(init$p, key$p, ptr$p);
}
const key$o = 'PRINTER_INFO_5';
const ptr$o = `${key$o}*`;
const init$o = {
pPrinterName: WString,
pPortName: WString,
Attributes: DWORD,
DeviceNotSelectedTimeout: DWORD,
TransmissionRetryTimeout: DWORD,
};
const PPRINTER_INFO_5 = ptr$o;
const PRINTER_INFO_5_Name = key$o;
const PRINTER_INFO_5_Init = init$o;
/**
* PRINTER_INFO_5 structure,
* structure specifies detailed printer information.
* @link https://learn.microsoft.com/en-us/windows/win32/printdocs/PRINTER-INFO-5
*/
function PRINTER_INFO_5_Factory() {
return genStruct(init$o, key$o, ptr$o);
}
const key$n = 'PRINTER_INFO_8';
const ptr$n = `${key$n}*`;
const init$n = {
pDevMode: DEVMODEW_Factory,
};
const PPRINTER_INFO_8 = ptr$n;
const PRINTER_INFO_8_Name = key$n;
const PRINTER_INFO_8_Init = init$n;
/**
* PRINTER_INFO_8 structure,
* specifies the global default printer settings.
* @link https://learn.microsoft.com/en-us/windows/win32/printdocs/PRINTER-INFO-8
*/
function PRINTER_INFO_8_Factory() {
return genStruct(init$n, key$n, ptr$n);
}
const key$m = 'PRINTER_INFO_9';
const ptr$m = `${key$m}*`;
const init$m = {
pDevMode: DEVMODEW_Factory,
};
const PPRINTER_INFO_9 = ptr$m;
const PRINTER_INFO_9_Name = key$m;
const PRINTER_INFO_9_Init = init$m;
/**
* PRINTER_INFO_9 structure,
* structure specifies the per-user default printer settings.
* @link https://learn.microsoft.com/en-us/windows/win32/printdocs/PRINTER-INFO-9
*/
function PRINTER_INFO_9_Factory() {
return genStruct(init$m, key$m, ptr$m);
}
const key$l = 'PRINTPROCESSOR_INFO_1';
const ptr$l = `${key$l}*`;
const init$l = {
pName: LPTSTR,
};
const PPRINTPROCESSOR_INFO_1 = ptr$l;
const PRINTPROCESSOR_INFO_1_Name = key$l;
const PRINTPROCESSOR_INFO_1_Init = init$l;
/**
* PRINTPROCESSOR_INFO_1 structure,
* Specifies the name of an installed print processor.
* @link https://learn.microsoft.com/en-us/windows/win32/printdocs/printprocessor-info-1
*/
function PRINTPROCESSOR_INFO_1_Factory() {
return genStruct(init$l, key$l, ptr$l);
}
const key$k = 'PRINTER_INFO_6';
const ptr$k = `${key$k}*`;
const init$k = {
dwStatus: DWORD,
};
const PPRINTER_INFO_6 = ptr$k;
const PRINTER_INFO_6_Name = key$k;
const PRINTER_INFO_6_Init = init$k;
/**
* PRINTER_INFO_6 structure,
* structure specifies detailed printer information.
* @link https://learn.microsoft.com/en-us/windows/win32/printdocs/PRINTER-INFO-6
*/
function PRINTER_INFO_6_Factory() {
return genStruct(init$k, key$k, ptr$k);
}
const key$j = 'ALTTABINFO';
const ptr$j = `${key$j}*`;
const init$j = {
cbSize: DWORD,
cItems: INT,
cColumns: INT,
cRows: INT,
iColFocus: INT,
iRowFocus: INT,
cxItem: INT,
cyItem: INT,
ptStart: POINT_Factory,
};
const LPALTTABINFO = ptr$j;
const ALTTABINFO_Name = key$j;
const ALTTABINFO_Init = init$j;
/**
* ALTTABINFO structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-alttabinfo
*/
function ALTTABINFO_Factory() {
return genStruct(init$j, key$j, ptr$j, ['cbSize']);
}
const key$i = 'COPYDATASTRUCT';
const ptr$i = `${key$i}*`;
const init$i = {
dwData: ULONG_PTR,
cbData: DWORD,
lpData: PVOID,
};
const LPCOPYDATASTRUCT = ptr$i;
const COPYDATASTRUCT_Name = key$i;
const COPYDATASTRUCT_Init = init$i;
/**
* COPYDATASTRUCT structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-copydatastruct
*/
function COPYDATASTRUCT_Factory() {
return genStruct(init$i, key$i, ptr$i);
}
const key$h = 'FLASHWINFO';
const ptr$h = `${key$h}*`;
const init$h = {
cbSize: UINT,
hwnd: HWND,
dwFlags: DWORD,
uCount: UINT,
dwTimeout: DWORD,
};
const PFLASHWINFO = ptr$h;
const FLASHWINFO_Name = key$h;
const FLASHWINFO_Init = init$h;
/**
* FLASHWINFO structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-FLASHWINFO
*/
function FLASHWINFO_Factory() {
return genStruct(init$h, key$h, ptr$h, ['cbSize']);
}
const key$g = 'HARDWAREINPUT';
const ptr$g = `${key$g}*`;
const init$g = {
uMsg: UINT32,
wParamL: UINT16,
wParamH: UINT16,
};
const LPHARDWAREINPUT = ptr$g;
const HARDWAREINPUT_Name = key$g;
const HARDWAREINPUT_Init = init$g;
/**
* HARDWAREINPUT structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-hardwareinput
*/
function HARDWAREINPUT_Factory() {
return genStruct(init$g, key$g, ptr$g);
}
const key$f = 'KEYBDINPUT';
const ptr$f = `${key$f}*`;
const init$f = {
wVk: UINT16,
wScan: UINT16,
dwFlags: UINT32,
time: UINT32,
dwExtraInfo: PUINT,
};
const LPKEYBDINPUT = ptr$f;
const KEYBDINPUT_Name = key$f;
const KEYBDINPUT_Init = init$f;
/**
* KEYBDINPUT structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-keybdinput
*/
function KEYBDINPUT_Factory() {
return genStruct(init$f, key$f, ptr$f);
}
const key$e = 'MOUSEINPUT';
const ptr$e = `${key$e}*`;
const init$e = {
dx: LONG,
dy: LONG,
mouseData: UINT32,
dwFlags: UINT32,
time: UINT32,
dwExtraInfo: PUINT,
};
const LPMOUSEINPUT = ptr$e;
const MOUSEINPUT_Name = key$e;
const MOUSEINPUT_Init = init$e;
/**
* MOUSEINPUT structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-mouseinput
*/
function MOUSEINPUT_Factory() {
return genStruct(init$e, key$e, ptr$e);
}
const key$d = 'INPUT';
const ptr$d = `${key$d}*`;
const init$d = {
type: UINT32,
u: {
mi: MOUSEINPUT_Factory,
ki: KEYBDINPUT_Factory,
hi: HARDWAREINPUT_Factory,
},
};
const LPINPUT = ptr$d;
const INPUT_Name = key$d;
const INPUT_Init = init$d;
/**
* INPUT structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-input
*/
function INPUT_Factory() {
return genStruct(init$d, key$d, ptr$d);
}
// export const INPUT = koffi.struct('INPUT', {
// type: W.UINT32,
// u: koffi.union({
// mi: MOUSEINPUT,
// ki: KEYBDINPUT,
// hi: HARDWAREINPUT,
// }),
// })
const key$c = 'MSG';
const ptr$c = `${key$c}*`;
const init$c = {
hwnd: HWND,
message: UINT,
wParam: WPARAM,
lParam: LPARAM,
time: DWORD,
pt: POINT_Factory,
lPrivate: DWORD,
};
const LPMSG = ptr$c;
const MSG_Name = key$c;
const MSG_Init = init$c;
/**
* MSG structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-msg
*/
function MSG_Factory() {
return genStruct(init$c, key$c, ptr$c);
}
const key$b = 'RAWHID';
const ptr$b = `${key$b}*`;
const init$b = {
dwSizeHid: DWORD,
dwCount: DWORD,
/** bRawData[1] */
bRawData: BYTE,
};
const LPRAWHID = ptr$b;
const RAWHID_Name = key$b;
const RAWHID_Init = init$b;
/**
* RAWHID structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-rawhid
*/
function RAWHID_Factory() {
return genStruct(init$b, key$b, ptr$b);
}
const key$a = 'RAWINPUTHEADER';
const ptr$a = `${key$a}*`;
const init$a = {
dwType: DWORD,
dwSize: DWORD,
hDevice: HANDLE,
wParam: WPARAM,
};
const LPRAWINPUTHEADER = ptr$a;
const RAWINPUTHEADER_Name = key$a;
const RAWINPUTHEADER_Init = init$a;
/**
* RAWINPUTHEADER structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-RAWINPUTHEADER
*/
function RAWINPUTHEADER_Factory() {
return genStruct(init$a, key$a, ptr$a);
}
const key$9 = 'RAWKEYBOARD';
const ptr$9 = `${key$9}*`;
const init$9 = {
MakeCode: USHORT,
Flags: USHORT,
Reserved: USHORT,
VKey: USHORT,
Message: UINT,
ExtraInformation: ULONG,
};
const LPRAWKEYBOARD = ptr$9;
const RAWKEYBOARD_Name = key$9;
const RAWKEYBOARD_Init = init$9;
/**
* RAWKEYBOARD structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-RAWKEYBOARD
*/
function RAWKEYBOARD_Factory() {
return genStruct(init$9, key$9, ptr$9);
}
const key$8 = 'RAWMOUSE';
const ptr$8 = `${key$8}*`;
const init$8 = {
usFlags: USHORT,
u: {
ulButtons: ULONG,
s: {
usButtonFlags: USHORT,
usButtonData: USHORT,
},
},
ulRawButtons: ULONG,
lLastX: LONG,
lLastY: LONG,
ulExtraInformation: ULONG,
};
/**
* RAWMOUSE structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-RAWMOUSE
*/
function RAWMOUSE_Factory() {
return genStruct(init$8, key$8, ptr$8);
}
const LPRAWMOUSE = ptr$8;
const RAWMOUSE_Name = key$8;
const RAWMOUSE_Init = init$8;
const key$7 = 'RAWINPUT';
const ptr$7 = `${key$7}*`;
const init$7 = {
header: RAWINPUTHEADER_Factory,
u: {
mouse: RAWMOUSE_Factory,
keyboard: RAWKEYBOARD_Factory,
hid: RAWHID_Factory,
},
};
const LPRAWINPUT = ptr$7;
const RAWINPUT_Name = key$7;
const RAWINPUT_Init = init$7;
/**
* RAWINPUT structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-rawinput
*/
function RAWINPUT_Factory() {
return genStruct(init$7, key$7, ptr$7);
}
const key$6 = 'RAWINPUTDEVICELIST';
const ptr$6 = `${key$6}*`;
const init$6 = {
hDevice: HANDLE,
dwType: DWORD,
};
const LPRAWINPUTDEVICELIST = ptr$6;
const RAWINPUTDEVICELIST_Name = key$6;
const RAWINPUTDEVICELIST_Init = init$6;
/**
* RAWINPUTDEVICELIST structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-RAWINPUTDEVICELIST
*/
function RAWINPUTDEVICELIST_Factory() {
return genStruct(init$6, key$6, ptr$6);
}
const key$5 = 'RID_DEVICE_INFO_HID';
const ptr$5 = `${key$5}*`;
const init$5 = {
dwVendorId: DWORD,
dwProductId: DWORD,
dwVersionNumber: DWORD,
usUsagePage: USHORT,
usUsage: USHORT,
};
const PRID_DEVICE_INFO_HID = ptr$5;
const RID_DEVICE_INFO_HID_Name = key$5;
const RID_DEVICE_INFO_HID_Init = init$5;
/**
* RID_DEVICE_INFO_HID structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-RID_DEVICE_INFO_HID
*/
function RID_DEVICE_INFO_HID_Factory() {
return genStruct(init$5, key$5, ptr$5);
}
const key$4 = 'RID_DEVICE_INFO_KEYBOARD';
const ptr$4 = `${key$4}*`;
const init$4 = {
dwType: DWORD,
dwSubType: DWORD,
dwKeyboardMode: DWORD,
dwNumberOfFunctionKeys: DWORD,
dwNumberOfIndicators: DWORD,
dwNumberOfKeysTotal: DWORD,
};
const PRID_DEVICE_INFO_KEYBOARD = ptr$4;
const RID_DEVICE_INFO_KEYBOARD_Name = key$4;
const RID_DEVICE_INFO_KEYBOARD_Init = init$4;
/**
* RID_DEVICE_INFO_KEYBOARD structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-RID_DEVICE_INFO_KEYBOARD
*/
function RID_DEVICE_INFO_KEYBOARD_Factory() {
return genStruct(init$4, key$4, ptr$4);
}
const key$3 = 'RID_DEVICE_INFO_MOUSE';
const ptr$3 = `${key$3}*`;
const init$3 = {
dwId: DWORD,
dwNumberOfButtons: DWORD,
dwSampleRate: DWORD,
fHasHorizontalWheel: BOOL,
};
const PRID_DEVICE_INFO_MOUSE = ptr$3;
const RID_DEVICE_INFO_MOUSE_Name = key$3;
const RID_DEVICE_INFO_MOUSE_Init = init$3;
/**
* RID_DEVICE_INFO_MOUSE structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-RID_DEVICE_INFO_MOUSE
*/
function RID_DEVICE_INFO_MOUSE_Factory() {
return genStruct(init$3, key$3, ptr$3);
}
const key$2 = 'RID_DEVICE_INFO';
const ptr$2 = `${key$2}*`;
const init$2 = {
cbSize: DWORD,
dwType: DWORD,
u: {
mouse: RID_DEVICE_INFO_MOUSE_Factory,
keyboard: RID_DEVICE_INFO_KEYBOARD_Factory,
hid: RID_DEVICE_INFO_HID_Factory,
},
};
const LPRID_DEVICE_INFO = ptr$2;
const RID_DEVICE_INFO_Name = key$2;
const RID_DEVICE_INFO_Init = init$2;
/**
* RID_DEVICE_INFO structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-RID_DEVICE_INFO
*/
function RID_DEVICE_INFO_Factory() {
return genStruct(init$2, key$2, ptr$2, ['cbSize']);
}
const key$1 = 'WNDCLASSEXW';
const ptr$1 = `${key$1}*`;
const init$1 = {
cbSize: UINT,
style: UINT,
lpfnWndProc: WNDPROC,
cbClsExtra: INT,
cbWndExtra: INT,
hInstance: HINSTANCE,
hIcon: HICON,
hCursor: HCURSOR,
hbrBackground: HBRUSH,
lpszMenuName: WString,
lpszClassName: WString,
hIconSm: HICON,
};
const LPWNDCLASSEXW = ptr$1;
const WNDCLASSEXW_Name = key$1;
const WNDCLASSEXW_Init = init$1;
/**
* WNDCLASSEXW structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-wndclassexw
*/
function WNDCLASSEXW_Factory() {
return genStruct(init$1, key$1, ptr$1, ['cbSize']);
}
const key = 'WINDOWINFO';
const ptr = `${key}*`;
const init = {
cbSize: DWORD,
rcWindow: RECT_Factory,
rcClient: RECT_Factory,
dwStyle: DWORD,
dwExStyle: DWORD,
dwWindowStatus: DWORD,
cxWindowBorders: UINT,
cyWindowBorders: UINT,
atomWindowType: ATOM,
wCreatorVersion: WORD,
};
const LPWINDOWINFO = ptr;
const WINDOWINFO_Name = key;
const WINDOWINFO_Init = init;
/**
* WINDOWINFO structure
* @link https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-WINDOWINFO
*/
function WINDOWINFO_Factory() {
return genStruct(init, key, ptr, ['cbSize']);
}
function getPRINTER_INFO_X_Ptr(level) {
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
switch (level) {
case 1: return PPRINTER_INFO_1;
case 4: return PPRINTER_INFO_4;
case 5: return PPRINTER_INFO_5;
case 6: return PPRINTER_INFO_6;
case 8: return PPRINTER_INFO_8;
case 9: return PPRINTER_INFO_9;
/* c8 ignore next 2 */
default:
assert(false, `getPRINTER_INFO_X_Ptr(): level not supported: ${level}`);
}
}
function PRINTER_INFO_X_Factory(level) {
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
switch (level) {
case 1: return PRINTER_INFO_1_Factory();
case 4: return PRINTER_INFO_4_Factory();
case 5: return PRINTER_INFO_5_Factory();
case 6: return PRINTER_INFO_6_Factory();
case 8: return PRINTER_INFO_8_Factory();
case 9: return PRINTER_INFO_9_Factory();
/* c8 ignore next 2 */
default:
assert(false, `level not supported: ${level}`);
}
}
exports.ALTTABINFO_Factory = ALTTABINFO_Factory;
exports.ALTTABINFO_Init = ALTTABINFO_Init;
exports.ALTTABINFO_Name = ALTTABINFO_Name;
exports.COPYDATASTRUCT_Factory = COPYDATASTRUCT_Factory;
exports.COPYDATASTRUCT_Init = COPYDATASTRUCT_Init;
exports.COPYDATASTRUCT_Name = COPYDATASTRUCT_Name;
exports.DEVMODEW_Factory = DEVMODEW_Factory;
exports.DEVMODEW_Init = DEVMODEW_Init;
exports.DEVMODEW_Name = DEVMODEW_Name;
exports.DISPLAY_DEVICEW_Factory = DISPLAY_DEVICEW_Factory;
exports.DISPLAY_DEVICEW_Init = DISPLAY_DEVICEW_Init;
exports.DISPLAY_DEVICEW_Name = DISPLAY_DEVICEW_Name;
exports.DOC_INFO_1_Factory = DOC_INFO_1_Factory;
exports.DOC_INFO_1_Init = DOC_INFO_1_Init;
exports.DOC_INFO_1_Name = DOC_INFO_1_Name;
exports.FILETIME_Factory = FILETIME_Factory;
exports.FILETIME_Init = FILETIME_Init;
exports.FLASHWINFO_Factory = FLASHWINFO_Factory;
exports.FLASHWINFO_Init = FLASHWINFO_Init;
exports.FLASHWINFO_Name = FLASHWINFO_Name;
exports.HARDWAREINPUT_Factory = HARDWAREINPUT_Factory;
exports.HARDWAREINPUT_Init = HARDWAREINPUT_Init;
exports.HARDWAREINPUT_Name = HARDWAREINPUT_Name;
exports.INITCOMMONCONTROLSEX_Factory = INITCOMMONCONTROLSEX_Factory;
exports.INITCOMMONCONTROLSEX_Init = INITCOMMONCONTROLSEX_Init;
exports.INITCOMMONCONTROLSEX_Name = INITCOMMONCONTROLSEX_Name;
exports.INPUT_Factory = INPUT_Factory;
exports.INPUT_Init = INPUT_Init;
exports.INPUT_Name = INPUT_Name;
exports.JOB_INFO_1_Factory = JOB_INFO_1_Factory;
exports.JOB_INFO_1_Init = JOB_INFO_1_Init;
exports.JOB_INFO_1_Name = JOB_INFO_1_Name;
exports.KEYBDINPUT_Factory = KEYBDINPUT_Factory;
exports.KEYBDINPUT_Init = KEYBDINPUT_Init;
exports.KEYBDINPUT_Name = KEYBDINPUT_Name;
exports.LPALTTABINFO = LPALTTABINFO;
exports.LPCOPYDATASTRUCT = LPCOPYDATASTRUCT;
exports.LPDEVMODEW = LPDEVMODEW;
exports.LPDISPLAY_DEVICEW = LPDISPLAY_DEVICEW;
exports.LPDOC_INFO_1 = LPDOC_INFO_1;
exports.LPFILETIME = LPFILETIME;
exports.LPFILETIME_Name = LPFILETIME_Name;
exports.LPHARDWAREINPUT = LPHARDWAREINPUT;
exports.LPINITCOMMONCONTROLSEX = LPINITCOMMONCONTROLSEX;
exports.LPINPUT = LPINPUT;
exports.LPKEYBDINPUT = LPKEYBDINPUT;
exports.LPMOUSEINPUT = LPMOUSEINPUT;
exports.LPMSG = LPMSG;
exports.LPPOINT = LPPOINT;
exports.LPRAWHID = LPRAWHID;
exports.LPRAWINPUT = LPRAWINPUT;
exports.LPRAWINPUTDEVICELIST = LPRAWINPUTDEVICELIST;
exports.LPRAWINPUTHEADER = LPRAWINPUTHEADER;
exports.LPRAWKEYBOARD = LPRAWKEYBOARD;
exports.LPRAWMOUSE = LPRAWMOUSE;
exports.LPRECT = LPRECT;
exports.LPRID_DEVICE_INFO = LPRID_DEVICE_INFO;
exports.LPSYSTEMTIME = LPSYSTEMTIME;
exports.LPWINDOWINFO = LPWINDOWINFO;
exports.LPWNDCLASSEXW = LPWNDCLASSEXW;
exports.MOUSEINPUT_Factory = MOUSEINPUT_Factory;
exports.MOUSEINPUT_Init = MOUSEINPUT_Init;
exports.MOUSEINPUT_Name = MOUSEINPUT_Name;
exports.MSG_Factory = MSG_Factory;
exports.MSG_Init = MSG_Init;
exports.MSG_Name = MSG_Name;
exports.PFLASHWINFO = PFLASHWINFO;
exports.PJOB_INFO_1 = PJOB_INFO_1;
exports.POINT_Factory = POINT_Factory;
exports.POINT_Init = POINT_Init;
exports.POINT_Name = POINT_Name;
exports.PPRINTER_DEFAULTS = PPRINTER_DEFAULTS;
exports.PPRINTER_INFO_1 = PPRINTER_INFO_1;
exports.PPRINTER_INFO_4 = PPRINTER_INFO_4;
exports.PPRINTER_INFO_5 = PPRINTER_INFO_5;
exports.PPRINTER_INFO_6 = PPRINTER_INFO_6;
exports.PPRINTER_INFO_8 = PPRINTER_INFO_8;
exports.PPRINTER_INFO_9 = PPRINTER_INFO_9;
exports.PPRINTPROCESSOR_INFO_1 = PPRINTPROCESSOR_INFO_1;
exports.PRID_DEVICE_INFO_HID = PRID_DEVICE_INFO_HID;
exports.PRID_DEVICE_INFO_KEYBOARD = PRID_DEVICE_INFO_KEYBOARD;
exports.PRID_DEVICE_INFO_MOUSE = PRID_DEVICE_INFO_MOUSE;
exports.PRINTER_DEFAULTS_Factory = PRINTER_DEFAULTS_Factory;
exports.PRINTER_DEFAULTS_Init = PRINTER_DEFAULTS_Init;
exports.PRINTER_DEFAULTS_Name = PRINTER_DEFAULTS_Name;
exports.PRINTER_INFO_1_Factory = PRINTER_INFO_1_Factory;
exports.PRINTER_INFO_1_Init = PRINTER_INFO_1_Init;
exports.PRINTER_INFO_1_Name = PRINTER_INFO_1_Name;
exports.PRINTER_INFO_4_Factory = PRINTER_INFO_4_Factory;
exports.PRINTER_INFO_4_Init = PRINTER_INFO_4_Init;
exports.PRINTER_INFO_4_Name = PRINTER_INFO_4_Name;
exports.PRINTER_INFO_5_Factory = PRINTER_INFO_5_Factory;
exports.PRINTER_INFO_5_Init = PRINTER_INFO_5_Init;
exports.PRINTER_INFO_5_Name = PRINTER_INFO_5_Name;
exports.PRINTER_INFO_6_Factory = PRINTER_INFO_6_Factory;
exports.PRINTER_INFO_6_Init = PRINTER_INFO_6_Init;
exports.PRINTER_INFO_6_Name = PRINTER_INFO_6_Name;
exports.PRINTER_INFO_8_Factory = PRINTER_INFO_8_Factory;
exports.PRINTER_INFO_8_Init = PRINTER_INFO_8_Init;
exports.PRINTER_INFO_8_Name = PRINTER_INFO_8_Name;
exports.PRINTER_INFO_9_Factory = PRINTER_INFO_9_Factory;
exports.PRINTER_INFO_9_Init = PRINTER_INFO_9_Init;
exports.PRINTER_INFO_9_Name = PRINTER_INFO_9_Name;
exports.PRINTER_INFO_X_Factory = PRINTER_INFO_X_Factory;
exports.PRINTPROCESSOR_INFO_1_Factory = PRINTPROCESSOR_INFO_1_Factory;
exports.PRINTPROCESSOR_INFO_1_Init = PRINTPROCESSOR_INFO_1_Init;
exports.PRINTPROCESSOR_INFO_1_Name = PRINTPROCESSOR_INFO_1_Name;
exports.RAWHID_Factory = RAWHID_Factory;
exports.RAWHID_Init = RAWHID_Init;
exports.RAWHID_Name = RAWHID_Name;
exports.RAWINPUTDEVICELIST_Factory = RAWINPUTDEVICELIST_Factory;
exports.RAWINPUTDEVICELIST_Init = RAWINPUTDEVICELIST_Init;
exports.RAWINPUTDEVICELIST_Name = RAWINPUTDEVICELIST_Name;
exports.RAWINPUTHEADER_Factory = RAWINPUTHEADER_Factory;
exports.RAWINPUTHEADER_Init = RAWINPUTHEADER_Init;
exports.RAWINPUTHEADER_Name = RAWINPUTHEADER_Name;
exports.RAWINPUT_Factory = RAWINPUT_Factory;
exports.RAWINPUT_Init = RAWINPUT_Init;
exports.RAWINPUT_Name = RAWINPUT_Name;
exports.RAWKEYBOARD_Factory = RAWKEYBOARD_Factory;
exports.RAWKEYBOARD_Init = RAWKEYBOARD_Init;
exports.RAWKEYBOARD_Name = RAWKEYBOARD_Name;
exports.RAWMOUSE_Factory = RAWMOUSE_Factory;
exports.RAWMOUSE_Init = RAWMOUSE_Init;
exports.RAWMOUSE_Name = RAWMOUSE_Name;
exports.RECT_Factory = RECT_Factory;
exports.RECT_Init = RECT_Init;
exports.RECT_Name = RECT_Name;
exports.RID_DEVICE_INFO_Factory = RID_DEVICE_INFO_Factory;
exports.RID_DEVICE_INFO_HID_Factory = RID_DEVICE_INFO_HID_Factory;
exports.RID_DEVICE_INFO_HID_Init = RID_DEVICE_INFO_HID_Init;
exports.RID_DEVICE_INFO_HID_Name = RID_DEVICE_INFO_HID_Name;
exports.RID_DEVICE_INFO_Init = RID_DEVICE_INFO_Init;
exports.RID_DEVICE_INFO_KEYBOARD_Factory = RID_DEVICE_INFO_KEYBOARD_Factory;
exports.RID_DEVICE_INFO_KEYBOARD_Init = RID_DEVICE_INFO_KEYBOARD_Init;
exports.RID_DEVICE_INFO_KEYBOARD_Name = RID_DEVICE_INFO_KEYBOARD_Name;
exports.RID_DEVICE_INFO_MOUSE_Factory = RID_DEVICE_INFO_MOUSE_Factory;
exports.RID_DEVICE_INFO_MOUSE_Init = RID_DEVICE_INFO_MOUSE_Init;
exports.RID_DEVICE_INFO_MOUSE_Name = RID_DEVICE_INFO_MOUSE_Name;
exports.RID_DEVICE_INFO_Name = RID_DEVICE_INFO_Name;
exports.SYSTEMTIME_Factory = SYSTEMTIME_Factory;
exports.SYSTEMTIME_Init = SYSTEMTIME_Init;
exports.SYSTEMTIME_Name = SYSTEMTIME_Name;
exports.WINDOWINFO_Factory = WINDOWINFO_Factory;
exports.WINDOWINFO_Init = WINDOWINFO_Init;
exports.WINDOWINFO_Name = WINDOWINFO_Name;
exports.WNDCLASSEXW_Factory = WNDCLASSEXW_Factory;
exports.WNDCLASSEXW_Init = WNDCLASSEXW_Init;
exports.WNDCLASSEXW_Name = WNDCLASSEXW_Name;
exports.genComplexStruct = genComplexStruct;
exports.genFixedArray = genFixedArray;
exports.genFixedInt16Array = genFixedInt16Array;
exports.genSimpleStruct = genSimpleStruct;
exports.genSimpleUnion = genSimpleUnion;
exports.genStruct = genStruct;
exports.genUnion = genUnion;
exports.getPRINTER_INFO_X_Ptr = getPRINTER_INFO_X_Ptr;
//# sourceMappingURL=index.struct.cjs.map