Win32 API 日本語リファレンス
ホームGraphics.Printing › PRINTPROVIDOR

PRINTPROVIDOR

構造体
サイズx64: 864 バイト / x86: 432 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
fpOpenPrinterINT_PTR8/4+0+0OpenPrinterを実装するプリントプロバイダー関数へのポインター。
fpSetJobINT_PTR8/4+8+4SetJobを実装する関数へのポインター。
fpGetJobINT_PTR8/4+16+8GetJobを実装する関数へのポインター。
fpEnumJobsINT_PTR8/4+24+12EnumJobsを実装する関数へのポインター。
fpAddPrinterINT_PTR8/4+32+16AddPrinterを実装する関数へのポインター。
fpDeletePrinterINT_PTR8/4+40+20DeletePrinterを実装する関数へのポインター。
fpSetPrinterINT_PTR8/4+48+24SetPrinterを実装する関数へのポインター。
fpGetPrinterINT_PTR8/4+56+28GetPrinterを実装する関数へのポインター。
fpEnumPrintersINT_PTR8/4+64+32EnumPrintersを実装する関数へのポインター。
fpAddPrinterDriverINT_PTR8/4+72+36AddPrinterDriverを実装する関数へのポインター。
fpEnumPrinterDriversINT_PTR8/4+80+40EnumPrinterDriversを実装する関数へのポインター。
fpGetPrinterDriverINT_PTR8/4+88+44GetPrinterDriverを実装する関数へのポインター。
fpGetPrinterDriverDirectoryINT_PTR8/4+96+48GetPrinterDriverDirectoryを実装する関数へのポインター。
fpDeletePrinterDriverINT_PTR8/4+104+52DeletePrinterDriverを実装する関数へのポインター。
fpAddPrintProcessorINT_PTR8/4+112+56AddPrintProcessorを実装する関数へのポインター。
fpEnumPrintProcessorsINT_PTR8/4+120+60EnumPrintProcessorsを実装する関数へのポインター。
fpGetPrintProcessorDirectoryINT_PTR8/4+128+64GetPrintProcessorDirectoryを実装する関数へのポインター。
fpDeletePrintProcessorINT_PTR8/4+136+68DeletePrintProcessorを実装する関数へのポインター。
fpEnumPrintProcessorDatatypesINT_PTR8/4+144+72EnumPrintProcessorDatatypesを実装する関数へのポインター。
fpStartDocPrinterINT_PTR8/4+152+76StartDocPrinterを実装する関数へのポインター。
fpStartPagePrinterINT_PTR8/4+160+80StartPagePrinterを実装する関数へのポインター。
fpWritePrinterINT_PTR8/4+168+84WritePrinterを実装する関数へのポインター。
fpEndPagePrinterINT_PTR8/4+176+88EndPagePrinterを実装する関数へのポインター。
fpAbortPrinterINT_PTR8/4+184+92AbortPrinterを実装する関数へのポインター。
fpReadPrinterINT_PTR8/4+192+96ReadPrinterを実装する関数へのポインター。
fpEndDocPrinterINT_PTR8/4+200+100EndDocPrinterを実装する関数へのポインター。
fpAddJobINT_PTR8/4+208+104AddJobを実装する関数へのポインター。
fpScheduleJobINT_PTR8/4+216+108ScheduleJobを実装する関数へのポインター。
fpGetPrinterDataINT_PTR8/4+224+112GetPrinterDataを実装する関数へのポインター。
fpSetPrinterDataINT_PTR8/4+232+116SetPrinterDataを実装する関数へのポインター。
fpWaitForPrinterChangeINT_PTR8/4+240+120WaitForPrinterChangeを実装する関数へのポインター。
fpClosePrinterINT_PTR8/4+248+124ClosePrinterを実装する関数へのポインター。
fpAddFormINT_PTR8/4+256+128AddFormを実装する関数へのポインター。
fpDeleteFormINT_PTR8/4+264+132DeleteFormを実装する関数へのポインター。
fpGetFormINT_PTR8/4+272+136GetFormを実装する関数へのポインター。
fpSetFormINT_PTR8/4+280+140SetFormを実装する関数へのポインター。
fpEnumFormsINT_PTR8/4+288+144EnumFormsを実装する関数へのポインター。
fpEnumMonitorsINT_PTR8/4+296+148EnumMonitorsを実装する関数へのポインター。
fpEnumPortsINT_PTR8/4+304+152EnumPortsを実装する関数へのポインター。
fpAddPortINT_PTR8/4+312+156AddPortを実装する関数へのポインター。
fpConfigurePortINT_PTR8/4+320+160ConfigurePortを実装する関数へのポインター。
fpDeletePortINT_PTR8/4+328+164DeletePortを実装する関数へのポインター。
fpCreatePrinterICINT_PTR8/4+336+168CreatePrinterICを実装する関数へのポインター。
fpPlayGdiScriptOnPrinterICINT_PTR8/4+344+172PlayGdiScriptOnPrinterICを実装する関数へのポインター。
fpDeletePrinterICINT_PTR8/4+352+176DeletePrinterICを実装する関数へのポインター。
fpAddPrinterConnectionINT_PTR8/4+360+180AddPrinterConnectionを実装する関数へのポインター。
fpDeletePrinterConnectionINT_PTR8/4+368+184DeletePrinterConnectionを実装する関数へのポインター。
fpPrinterMessageBoxINT_PTR8/4+376+188PrinterMessageBoxを実装する関数へのポインター。
fpAddMonitorINT_PTR8/4+384+192AddMonitorを実装する関数へのポインター。
fpDeleteMonitorINT_PTR8/4+392+196DeleteMonitorを実装する関数へのポインター。
fpResetPrinterINT_PTR8/4+400+200ResetPrinterを実装する関数へのポインター。
fpGetPrinterDriverExINT_PTR8/4+408+204GetPrinterDriverExを実装する関数へのポインター。
fpFindFirstPrinterChangeNotificationINT_PTR8/4+416+208FindFirstPrinterChangeNotificationを実装する関数へのポインター。
fpFindClosePrinterChangeNotificationINT_PTR8/4+424+212FindClosePrinterChangeNotificationを実装する関数へのポインター。
fpAddPortExINT_PTR8/4+432+216AddPortExを実装する関数へのポインター。
fpShutDownINT_PTR8/4+440+220シャットダウン処理を実装する関数へのポインター。
fpRefreshPrinterChangeNotificationINT_PTR8/4+448+224RefreshPrinterChangeNotificationを実装する関数へのポインター。
fpOpenPrinterExINT_PTR8/4+456+228OpenPrinterExを実装する関数へのポインター。
fpAddPrinterExINT_PTR8/4+464+232AddPrinterExを実装する関数へのポインター。
fpSetPortINT_PTR8/4+472+236SetPortを実装する関数へのポインター。
fpEnumPrinterDataINT_PTR8/4+480+240EnumPrinterDataを実装する関数へのポインター。
fpDeletePrinterDataINT_PTR8/4+488+244DeletePrinterDataを実装する関数へのポインター。
fpClusterSplOpenINT_PTR8/4+496+248クラスタースプーラーのオープンを実装する関数へのポインター。
fpClusterSplCloseINT_PTR8/4+504+252クラスタースプーラーのクローズを実装する関数へのポインター。
fpClusterSplIsAliveINT_PTR8/4+512+256クラスタースプーラーの生存確認を実装する関数へのポインター。
fpSetPrinterDataExINT_PTR8/4+520+260SetPrinterDataExを実装する関数へのポインター。
fpGetPrinterDataExINT_PTR8/4+528+264GetPrinterDataExを実装する関数へのポインター。
fpEnumPrinterDataExINT_PTR8/4+536+268EnumPrinterDataExを実装する関数へのポインター。
fpEnumPrinterKeyINT_PTR8/4+544+272EnumPrinterKeyを実装する関数へのポインター。
fpDeletePrinterDataExINT_PTR8/4+552+276DeletePrinterDataExを実装する関数へのポインター。
fpDeletePrinterKeyINT_PTR8/4+560+280DeletePrinterKeyを実装する関数へのポインター。
fpSeekPrinterINT_PTR8/4+568+284プリンターストリームのシークを実装する関数へのポインター。
fpDeletePrinterDriverExINT_PTR8/4+576+288DeletePrinterDriverExを実装する関数へのポインター。
fpAddPerMachineConnectionINT_PTR8/4+584+292AddPerMachineConnectionを実装する関数へのポインター。
fpDeletePerMachineConnectionINT_PTR8/4+592+296DeletePerMachineConnectionを実装する関数へのポインター。
fpEnumPerMachineConnectionsINT_PTR8/4+600+300EnumPerMachineConnectionsを実装する関数へのポインター。
fpXcvDataINT_PTR8/4+608+304XcvDataを実装する関数へのポインター。
fpAddPrinterDriverExINT_PTR8/4+616+308AddPrinterDriverExを実装する関数へのポインター。
fpSplReadPrinterINT_PTR8/4+624+312スプーラー内部のプリンター読み取りを実装する関数へのポインター。
fpDriverUnloadCompleteINT_PTR8/4+632+316ドライバーアンロード完了通知を実装する関数へのポインター。
fpGetSpoolFileInfoINT_PTR8/4+640+320スプールファイル情報取得を実装する関数へのポインター。
fpCommitSpoolDataINT_PTR8/4+648+324スプールデータのコミットを実装する関数へのポインター。
fpCloseSpoolFileHandleINT_PTR8/4+656+328スプールファイルハンドルのクローズを実装する関数へのポインター。
fpFlushPrinterINT_PTR8/4+664+332FlushPrinterを実装する関数へのポインター。
fpSendRecvBidiDataINT_PTR8/4+672+336双方向(Bidi)データ送受信を実装する関数へのポインター。
fpAddPrinterConnection2INT_PTR8/4+680+340AddPrinterConnection2を実装する関数へのポインター。
fpGetPrintClassObjectINT_PTR8/4+688+344プリントクラスオブジェクト取得を実装する関数へのポインター。
fpReportJobProcessingProgressINT_PTR8/4+696+348ReportJobProcessingProgressを実装する関数へのポインター。
fpEnumAndLogProvidorObjectsINT_PTR8/4+704+352プロバイダーオブジェクトの列挙とログを実装する関数へのポインター。
fpInternalGetPrinterDriverINT_PTR8/4+712+356内部用GetPrinterDriverを実装する関数へのポインター。
fpFindCompatibleDriverINT_PTR8/4+720+360互換ドライバー検索を実装する関数へのポインター。
fpInstallPrinterDriverPackageFromConnectionINT_PTR8/4+728+364接続からのドライバーパッケージインストールを実装する関数へのポインター。
fpGetJobNamedPropertyValueINT_PTR8/4+736+368ジョブの名前付きプロパティ値取得を実装する関数へのポインター。
fpSetJobNamedPropertyINT_PTR8/4+744+372ジョブの名前付きプロパティ設定を実装する関数へのポインター。
fpDeleteJobNamedPropertyINT_PTR8/4+752+376ジョブの名前付きプロパティ削除を実装する関数へのポインター。
fpEnumJobNamedPropertiesINT_PTR8/4+760+380ジョブの名前付きプロパティ列挙を実装する関数へのポインター。
fpPowerEventINT_PTR8/4+768+384電源イベント処理を実装する関数へのポインター。
fpGetUserPropertyBagINT_PTR8/4+776+388ユーザープロパティバッグ取得を実装する関数へのポインター。
fpCanShutdownINT_PTR8/4+784+392シャットダウン可否判定を実装する関数へのポインター。
fpLogJobInfoForBranchOfficeINT_PTR8/4+792+396ブランチオフィス向けジョブ情報ログを実装する関数へのポインター。
fpRegeneratePrintDeviceCapabilitiesINT_PTR8/4+800+400印刷デバイス能力の再生成を実装する関数へのポインター。
fpPrintSupportOperationINT_PTR8/4+808+404印刷サポート操作を実装する関数へのポインター。
fpIppCreateJobOnPrinterINT_PTR8/4+816+408IPPでのプリンタージョブ作成を実装する関数へのポインター。
fpIppGetJobAttributesINT_PTR8/4+824+412IPPジョブ属性取得を実装する関数へのポインター。
fpIppSetJobAttributesINT_PTR8/4+832+416IPPジョブ属性設定を実装する関数へのポインター。
fpIppGetPrinterAttributesINT_PTR8/4+840+420IPPプリンター属性取得を実装する関数へのポインター。
fpIppSetPrinterAttributesINT_PTR8/4+848+424IPPプリンター属性設定を実装する関数へのポインター。
fpIppCreateJobOnPrinterWithAttributesINT_PTR8/4+856+428属性付きIPPプリンタージョブ作成を実装する関数へのポインター。

各言語での定義

#include <windows.h>

// PRINTPROVIDOR  (x64 864 / x86 432 バイト)
typedef struct PRINTPROVIDOR {
    INT_PTR fpOpenPrinter;
    INT_PTR fpSetJob;
    INT_PTR fpGetJob;
    INT_PTR fpEnumJobs;
    INT_PTR fpAddPrinter;
    INT_PTR fpDeletePrinter;
    INT_PTR fpSetPrinter;
    INT_PTR fpGetPrinter;
    INT_PTR fpEnumPrinters;
    INT_PTR fpAddPrinterDriver;
    INT_PTR fpEnumPrinterDrivers;
    INT_PTR fpGetPrinterDriver;
    INT_PTR fpGetPrinterDriverDirectory;
    INT_PTR fpDeletePrinterDriver;
    INT_PTR fpAddPrintProcessor;
    INT_PTR fpEnumPrintProcessors;
    INT_PTR fpGetPrintProcessorDirectory;
    INT_PTR fpDeletePrintProcessor;
    INT_PTR fpEnumPrintProcessorDatatypes;
    INT_PTR fpStartDocPrinter;
    INT_PTR fpStartPagePrinter;
    INT_PTR fpWritePrinter;
    INT_PTR fpEndPagePrinter;
    INT_PTR fpAbortPrinter;
    INT_PTR fpReadPrinter;
    INT_PTR fpEndDocPrinter;
    INT_PTR fpAddJob;
    INT_PTR fpScheduleJob;
    INT_PTR fpGetPrinterData;
    INT_PTR fpSetPrinterData;
    INT_PTR fpWaitForPrinterChange;
    INT_PTR fpClosePrinter;
    INT_PTR fpAddForm;
    INT_PTR fpDeleteForm;
    INT_PTR fpGetForm;
    INT_PTR fpSetForm;
    INT_PTR fpEnumForms;
    INT_PTR fpEnumMonitors;
    INT_PTR fpEnumPorts;
    INT_PTR fpAddPort;
    INT_PTR fpConfigurePort;
    INT_PTR fpDeletePort;
    INT_PTR fpCreatePrinterIC;
    INT_PTR fpPlayGdiScriptOnPrinterIC;
    INT_PTR fpDeletePrinterIC;
    INT_PTR fpAddPrinterConnection;
    INT_PTR fpDeletePrinterConnection;
    INT_PTR fpPrinterMessageBox;
    INT_PTR fpAddMonitor;
    INT_PTR fpDeleteMonitor;
    INT_PTR fpResetPrinter;
    INT_PTR fpGetPrinterDriverEx;
    INT_PTR fpFindFirstPrinterChangeNotification;
    INT_PTR fpFindClosePrinterChangeNotification;
    INT_PTR fpAddPortEx;
    INT_PTR fpShutDown;
    INT_PTR fpRefreshPrinterChangeNotification;
    INT_PTR fpOpenPrinterEx;
    INT_PTR fpAddPrinterEx;
    INT_PTR fpSetPort;
    INT_PTR fpEnumPrinterData;
    INT_PTR fpDeletePrinterData;
    INT_PTR fpClusterSplOpen;
    INT_PTR fpClusterSplClose;
    INT_PTR fpClusterSplIsAlive;
    INT_PTR fpSetPrinterDataEx;
    INT_PTR fpGetPrinterDataEx;
    INT_PTR fpEnumPrinterDataEx;
    INT_PTR fpEnumPrinterKey;
    INT_PTR fpDeletePrinterDataEx;
    INT_PTR fpDeletePrinterKey;
    INT_PTR fpSeekPrinter;
    INT_PTR fpDeletePrinterDriverEx;
    INT_PTR fpAddPerMachineConnection;
    INT_PTR fpDeletePerMachineConnection;
    INT_PTR fpEnumPerMachineConnections;
    INT_PTR fpXcvData;
    INT_PTR fpAddPrinterDriverEx;
    INT_PTR fpSplReadPrinter;
    INT_PTR fpDriverUnloadComplete;
    INT_PTR fpGetSpoolFileInfo;
    INT_PTR fpCommitSpoolData;
    INT_PTR fpCloseSpoolFileHandle;
    INT_PTR fpFlushPrinter;
    INT_PTR fpSendRecvBidiData;
    INT_PTR fpAddPrinterConnection2;
    INT_PTR fpGetPrintClassObject;
    INT_PTR fpReportJobProcessingProgress;
    INT_PTR fpEnumAndLogProvidorObjects;
    INT_PTR fpInternalGetPrinterDriver;
    INT_PTR fpFindCompatibleDriver;
    INT_PTR fpInstallPrinterDriverPackageFromConnection;
    INT_PTR fpGetJobNamedPropertyValue;
    INT_PTR fpSetJobNamedProperty;
    INT_PTR fpDeleteJobNamedProperty;
    INT_PTR fpEnumJobNamedProperties;
    INT_PTR fpPowerEvent;
    INT_PTR fpGetUserPropertyBag;
    INT_PTR fpCanShutdown;
    INT_PTR fpLogJobInfoForBranchOffice;
    INT_PTR fpRegeneratePrintDeviceCapabilities;
    INT_PTR fpPrintSupportOperation;
    INT_PTR fpIppCreateJobOnPrinter;
    INT_PTR fpIppGetJobAttributes;
    INT_PTR fpIppSetJobAttributes;
    INT_PTR fpIppGetPrinterAttributes;
    INT_PTR fpIppSetPrinterAttributes;
    INT_PTR fpIppCreateJobOnPrinterWithAttributes;
} PRINTPROVIDOR;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct PRINTPROVIDOR
{
    public IntPtr fpOpenPrinter;
    public IntPtr fpSetJob;
    public IntPtr fpGetJob;
    public IntPtr fpEnumJobs;
    public IntPtr fpAddPrinter;
    public IntPtr fpDeletePrinter;
    public IntPtr fpSetPrinter;
    public IntPtr fpGetPrinter;
    public IntPtr fpEnumPrinters;
    public IntPtr fpAddPrinterDriver;
    public IntPtr fpEnumPrinterDrivers;
    public IntPtr fpGetPrinterDriver;
    public IntPtr fpGetPrinterDriverDirectory;
    public IntPtr fpDeletePrinterDriver;
    public IntPtr fpAddPrintProcessor;
    public IntPtr fpEnumPrintProcessors;
    public IntPtr fpGetPrintProcessorDirectory;
    public IntPtr fpDeletePrintProcessor;
    public IntPtr fpEnumPrintProcessorDatatypes;
    public IntPtr fpStartDocPrinter;
    public IntPtr fpStartPagePrinter;
    public IntPtr fpWritePrinter;
    public IntPtr fpEndPagePrinter;
    public IntPtr fpAbortPrinter;
    public IntPtr fpReadPrinter;
    public IntPtr fpEndDocPrinter;
    public IntPtr fpAddJob;
    public IntPtr fpScheduleJob;
    public IntPtr fpGetPrinterData;
    public IntPtr fpSetPrinterData;
    public IntPtr fpWaitForPrinterChange;
    public IntPtr fpClosePrinter;
    public IntPtr fpAddForm;
    public IntPtr fpDeleteForm;
    public IntPtr fpGetForm;
    public IntPtr fpSetForm;
    public IntPtr fpEnumForms;
    public IntPtr fpEnumMonitors;
    public IntPtr fpEnumPorts;
    public IntPtr fpAddPort;
    public IntPtr fpConfigurePort;
    public IntPtr fpDeletePort;
    public IntPtr fpCreatePrinterIC;
    public IntPtr fpPlayGdiScriptOnPrinterIC;
    public IntPtr fpDeletePrinterIC;
    public IntPtr fpAddPrinterConnection;
    public IntPtr fpDeletePrinterConnection;
    public IntPtr fpPrinterMessageBox;
    public IntPtr fpAddMonitor;
    public IntPtr fpDeleteMonitor;
    public IntPtr fpResetPrinter;
    public IntPtr fpGetPrinterDriverEx;
    public IntPtr fpFindFirstPrinterChangeNotification;
    public IntPtr fpFindClosePrinterChangeNotification;
    public IntPtr fpAddPortEx;
    public IntPtr fpShutDown;
    public IntPtr fpRefreshPrinterChangeNotification;
    public IntPtr fpOpenPrinterEx;
    public IntPtr fpAddPrinterEx;
    public IntPtr fpSetPort;
    public IntPtr fpEnumPrinterData;
    public IntPtr fpDeletePrinterData;
    public IntPtr fpClusterSplOpen;
    public IntPtr fpClusterSplClose;
    public IntPtr fpClusterSplIsAlive;
    public IntPtr fpSetPrinterDataEx;
    public IntPtr fpGetPrinterDataEx;
    public IntPtr fpEnumPrinterDataEx;
    public IntPtr fpEnumPrinterKey;
    public IntPtr fpDeletePrinterDataEx;
    public IntPtr fpDeletePrinterKey;
    public IntPtr fpSeekPrinter;
    public IntPtr fpDeletePrinterDriverEx;
    public IntPtr fpAddPerMachineConnection;
    public IntPtr fpDeletePerMachineConnection;
    public IntPtr fpEnumPerMachineConnections;
    public IntPtr fpXcvData;
    public IntPtr fpAddPrinterDriverEx;
    public IntPtr fpSplReadPrinter;
    public IntPtr fpDriverUnloadComplete;
    public IntPtr fpGetSpoolFileInfo;
    public IntPtr fpCommitSpoolData;
    public IntPtr fpCloseSpoolFileHandle;
    public IntPtr fpFlushPrinter;
    public IntPtr fpSendRecvBidiData;
    public IntPtr fpAddPrinterConnection2;
    public IntPtr fpGetPrintClassObject;
    public IntPtr fpReportJobProcessingProgress;
    public IntPtr fpEnumAndLogProvidorObjects;
    public IntPtr fpInternalGetPrinterDriver;
    public IntPtr fpFindCompatibleDriver;
    public IntPtr fpInstallPrinterDriverPackageFromConnection;
    public IntPtr fpGetJobNamedPropertyValue;
    public IntPtr fpSetJobNamedProperty;
    public IntPtr fpDeleteJobNamedProperty;
    public IntPtr fpEnumJobNamedProperties;
    public IntPtr fpPowerEvent;
    public IntPtr fpGetUserPropertyBag;
    public IntPtr fpCanShutdown;
    public IntPtr fpLogJobInfoForBranchOffice;
    public IntPtr fpRegeneratePrintDeviceCapabilities;
    public IntPtr fpPrintSupportOperation;
    public IntPtr fpIppCreateJobOnPrinter;
    public IntPtr fpIppGetJobAttributes;
    public IntPtr fpIppSetJobAttributes;
    public IntPtr fpIppGetPrinterAttributes;
    public IntPtr fpIppSetPrinterAttributes;
    public IntPtr fpIppCreateJobOnPrinterWithAttributes;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure PRINTPROVIDOR
    Public fpOpenPrinter As IntPtr
    Public fpSetJob As IntPtr
    Public fpGetJob As IntPtr
    Public fpEnumJobs As IntPtr
    Public fpAddPrinter As IntPtr
    Public fpDeletePrinter As IntPtr
    Public fpSetPrinter As IntPtr
    Public fpGetPrinter As IntPtr
    Public fpEnumPrinters As IntPtr
    Public fpAddPrinterDriver As IntPtr
    Public fpEnumPrinterDrivers As IntPtr
    Public fpGetPrinterDriver As IntPtr
    Public fpGetPrinterDriverDirectory As IntPtr
    Public fpDeletePrinterDriver As IntPtr
    Public fpAddPrintProcessor As IntPtr
    Public fpEnumPrintProcessors As IntPtr
    Public fpGetPrintProcessorDirectory As IntPtr
    Public fpDeletePrintProcessor As IntPtr
    Public fpEnumPrintProcessorDatatypes As IntPtr
    Public fpStartDocPrinter As IntPtr
    Public fpStartPagePrinter As IntPtr
    Public fpWritePrinter As IntPtr
    Public fpEndPagePrinter As IntPtr
    Public fpAbortPrinter As IntPtr
    Public fpReadPrinter As IntPtr
    Public fpEndDocPrinter As IntPtr
    Public fpAddJob As IntPtr
    Public fpScheduleJob As IntPtr
    Public fpGetPrinterData As IntPtr
    Public fpSetPrinterData As IntPtr
    Public fpWaitForPrinterChange As IntPtr
    Public fpClosePrinter As IntPtr
    Public fpAddForm As IntPtr
    Public fpDeleteForm As IntPtr
    Public fpGetForm As IntPtr
    Public fpSetForm As IntPtr
    Public fpEnumForms As IntPtr
    Public fpEnumMonitors As IntPtr
    Public fpEnumPorts As IntPtr
    Public fpAddPort As IntPtr
    Public fpConfigurePort As IntPtr
    Public fpDeletePort As IntPtr
    Public fpCreatePrinterIC As IntPtr
    Public fpPlayGdiScriptOnPrinterIC As IntPtr
    Public fpDeletePrinterIC As IntPtr
    Public fpAddPrinterConnection As IntPtr
    Public fpDeletePrinterConnection As IntPtr
    Public fpPrinterMessageBox As IntPtr
    Public fpAddMonitor As IntPtr
    Public fpDeleteMonitor As IntPtr
    Public fpResetPrinter As IntPtr
    Public fpGetPrinterDriverEx As IntPtr
    Public fpFindFirstPrinterChangeNotification As IntPtr
    Public fpFindClosePrinterChangeNotification As IntPtr
    Public fpAddPortEx As IntPtr
    Public fpShutDown As IntPtr
    Public fpRefreshPrinterChangeNotification As IntPtr
    Public fpOpenPrinterEx As IntPtr
    Public fpAddPrinterEx As IntPtr
    Public fpSetPort As IntPtr
    Public fpEnumPrinterData As IntPtr
    Public fpDeletePrinterData As IntPtr
    Public fpClusterSplOpen As IntPtr
    Public fpClusterSplClose As IntPtr
    Public fpClusterSplIsAlive As IntPtr
    Public fpSetPrinterDataEx As IntPtr
    Public fpGetPrinterDataEx As IntPtr
    Public fpEnumPrinterDataEx As IntPtr
    Public fpEnumPrinterKey As IntPtr
    Public fpDeletePrinterDataEx As IntPtr
    Public fpDeletePrinterKey As IntPtr
    Public fpSeekPrinter As IntPtr
    Public fpDeletePrinterDriverEx As IntPtr
    Public fpAddPerMachineConnection As IntPtr
    Public fpDeletePerMachineConnection As IntPtr
    Public fpEnumPerMachineConnections As IntPtr
    Public fpXcvData As IntPtr
    Public fpAddPrinterDriverEx As IntPtr
    Public fpSplReadPrinter As IntPtr
    Public fpDriverUnloadComplete As IntPtr
    Public fpGetSpoolFileInfo As IntPtr
    Public fpCommitSpoolData As IntPtr
    Public fpCloseSpoolFileHandle As IntPtr
    Public fpFlushPrinter As IntPtr
    Public fpSendRecvBidiData As IntPtr
    Public fpAddPrinterConnection2 As IntPtr
    Public fpGetPrintClassObject As IntPtr
    Public fpReportJobProcessingProgress As IntPtr
    Public fpEnumAndLogProvidorObjects As IntPtr
    Public fpInternalGetPrinterDriver As IntPtr
    Public fpFindCompatibleDriver As IntPtr
    Public fpInstallPrinterDriverPackageFromConnection As IntPtr
    Public fpGetJobNamedPropertyValue As IntPtr
    Public fpSetJobNamedProperty As IntPtr
    Public fpDeleteJobNamedProperty As IntPtr
    Public fpEnumJobNamedProperties As IntPtr
    Public fpPowerEvent As IntPtr
    Public fpGetUserPropertyBag As IntPtr
    Public fpCanShutdown As IntPtr
    Public fpLogJobInfoForBranchOffice As IntPtr
    Public fpRegeneratePrintDeviceCapabilities As IntPtr
    Public fpPrintSupportOperation As IntPtr
    Public fpIppCreateJobOnPrinter As IntPtr
    Public fpIppGetJobAttributes As IntPtr
    Public fpIppSetJobAttributes As IntPtr
    Public fpIppGetPrinterAttributes As IntPtr
    Public fpIppSetPrinterAttributes As IntPtr
    Public fpIppCreateJobOnPrinterWithAttributes As IntPtr
End Structure
import ctypes
from ctypes import wintypes

class PRINTPROVIDOR(ctypes.Structure):
    _fields_ = [
        ("fpOpenPrinter", ctypes.c_ssize_t),
        ("fpSetJob", ctypes.c_ssize_t),
        ("fpGetJob", ctypes.c_ssize_t),
        ("fpEnumJobs", ctypes.c_ssize_t),
        ("fpAddPrinter", ctypes.c_ssize_t),
        ("fpDeletePrinter", ctypes.c_ssize_t),
        ("fpSetPrinter", ctypes.c_ssize_t),
        ("fpGetPrinter", ctypes.c_ssize_t),
        ("fpEnumPrinters", ctypes.c_ssize_t),
        ("fpAddPrinterDriver", ctypes.c_ssize_t),
        ("fpEnumPrinterDrivers", ctypes.c_ssize_t),
        ("fpGetPrinterDriver", ctypes.c_ssize_t),
        ("fpGetPrinterDriverDirectory", ctypes.c_ssize_t),
        ("fpDeletePrinterDriver", ctypes.c_ssize_t),
        ("fpAddPrintProcessor", ctypes.c_ssize_t),
        ("fpEnumPrintProcessors", ctypes.c_ssize_t),
        ("fpGetPrintProcessorDirectory", ctypes.c_ssize_t),
        ("fpDeletePrintProcessor", ctypes.c_ssize_t),
        ("fpEnumPrintProcessorDatatypes", ctypes.c_ssize_t),
        ("fpStartDocPrinter", ctypes.c_ssize_t),
        ("fpStartPagePrinter", ctypes.c_ssize_t),
        ("fpWritePrinter", ctypes.c_ssize_t),
        ("fpEndPagePrinter", ctypes.c_ssize_t),
        ("fpAbortPrinter", ctypes.c_ssize_t),
        ("fpReadPrinter", ctypes.c_ssize_t),
        ("fpEndDocPrinter", ctypes.c_ssize_t),
        ("fpAddJob", ctypes.c_ssize_t),
        ("fpScheduleJob", ctypes.c_ssize_t),
        ("fpGetPrinterData", ctypes.c_ssize_t),
        ("fpSetPrinterData", ctypes.c_ssize_t),
        ("fpWaitForPrinterChange", ctypes.c_ssize_t),
        ("fpClosePrinter", ctypes.c_ssize_t),
        ("fpAddForm", ctypes.c_ssize_t),
        ("fpDeleteForm", ctypes.c_ssize_t),
        ("fpGetForm", ctypes.c_ssize_t),
        ("fpSetForm", ctypes.c_ssize_t),
        ("fpEnumForms", ctypes.c_ssize_t),
        ("fpEnumMonitors", ctypes.c_ssize_t),
        ("fpEnumPorts", ctypes.c_ssize_t),
        ("fpAddPort", ctypes.c_ssize_t),
        ("fpConfigurePort", ctypes.c_ssize_t),
        ("fpDeletePort", ctypes.c_ssize_t),
        ("fpCreatePrinterIC", ctypes.c_ssize_t),
        ("fpPlayGdiScriptOnPrinterIC", ctypes.c_ssize_t),
        ("fpDeletePrinterIC", ctypes.c_ssize_t),
        ("fpAddPrinterConnection", ctypes.c_ssize_t),
        ("fpDeletePrinterConnection", ctypes.c_ssize_t),
        ("fpPrinterMessageBox", ctypes.c_ssize_t),
        ("fpAddMonitor", ctypes.c_ssize_t),
        ("fpDeleteMonitor", ctypes.c_ssize_t),
        ("fpResetPrinter", ctypes.c_ssize_t),
        ("fpGetPrinterDriverEx", ctypes.c_ssize_t),
        ("fpFindFirstPrinterChangeNotification", ctypes.c_ssize_t),
        ("fpFindClosePrinterChangeNotification", ctypes.c_ssize_t),
        ("fpAddPortEx", ctypes.c_ssize_t),
        ("fpShutDown", ctypes.c_ssize_t),
        ("fpRefreshPrinterChangeNotification", ctypes.c_ssize_t),
        ("fpOpenPrinterEx", ctypes.c_ssize_t),
        ("fpAddPrinterEx", ctypes.c_ssize_t),
        ("fpSetPort", ctypes.c_ssize_t),
        ("fpEnumPrinterData", ctypes.c_ssize_t),
        ("fpDeletePrinterData", ctypes.c_ssize_t),
        ("fpClusterSplOpen", ctypes.c_ssize_t),
        ("fpClusterSplClose", ctypes.c_ssize_t),
        ("fpClusterSplIsAlive", ctypes.c_ssize_t),
        ("fpSetPrinterDataEx", ctypes.c_ssize_t),
        ("fpGetPrinterDataEx", ctypes.c_ssize_t),
        ("fpEnumPrinterDataEx", ctypes.c_ssize_t),
        ("fpEnumPrinterKey", ctypes.c_ssize_t),
        ("fpDeletePrinterDataEx", ctypes.c_ssize_t),
        ("fpDeletePrinterKey", ctypes.c_ssize_t),
        ("fpSeekPrinter", ctypes.c_ssize_t),
        ("fpDeletePrinterDriverEx", ctypes.c_ssize_t),
        ("fpAddPerMachineConnection", ctypes.c_ssize_t),
        ("fpDeletePerMachineConnection", ctypes.c_ssize_t),
        ("fpEnumPerMachineConnections", ctypes.c_ssize_t),
        ("fpXcvData", ctypes.c_ssize_t),
        ("fpAddPrinterDriverEx", ctypes.c_ssize_t),
        ("fpSplReadPrinter", ctypes.c_ssize_t),
        ("fpDriverUnloadComplete", ctypes.c_ssize_t),
        ("fpGetSpoolFileInfo", ctypes.c_ssize_t),
        ("fpCommitSpoolData", ctypes.c_ssize_t),
        ("fpCloseSpoolFileHandle", ctypes.c_ssize_t),
        ("fpFlushPrinter", ctypes.c_ssize_t),
        ("fpSendRecvBidiData", ctypes.c_ssize_t),
        ("fpAddPrinterConnection2", ctypes.c_ssize_t),
        ("fpGetPrintClassObject", ctypes.c_ssize_t),
        ("fpReportJobProcessingProgress", ctypes.c_ssize_t),
        ("fpEnumAndLogProvidorObjects", ctypes.c_ssize_t),
        ("fpInternalGetPrinterDriver", ctypes.c_ssize_t),
        ("fpFindCompatibleDriver", ctypes.c_ssize_t),
        ("fpInstallPrinterDriverPackageFromConnection", ctypes.c_ssize_t),
        ("fpGetJobNamedPropertyValue", ctypes.c_ssize_t),
        ("fpSetJobNamedProperty", ctypes.c_ssize_t),
        ("fpDeleteJobNamedProperty", ctypes.c_ssize_t),
        ("fpEnumJobNamedProperties", ctypes.c_ssize_t),
        ("fpPowerEvent", ctypes.c_ssize_t),
        ("fpGetUserPropertyBag", ctypes.c_ssize_t),
        ("fpCanShutdown", ctypes.c_ssize_t),
        ("fpLogJobInfoForBranchOffice", ctypes.c_ssize_t),
        ("fpRegeneratePrintDeviceCapabilities", ctypes.c_ssize_t),
        ("fpPrintSupportOperation", ctypes.c_ssize_t),
        ("fpIppCreateJobOnPrinter", ctypes.c_ssize_t),
        ("fpIppGetJobAttributes", ctypes.c_ssize_t),
        ("fpIppSetJobAttributes", ctypes.c_ssize_t),
        ("fpIppGetPrinterAttributes", ctypes.c_ssize_t),
        ("fpIppSetPrinterAttributes", ctypes.c_ssize_t),
        ("fpIppCreateJobOnPrinterWithAttributes", ctypes.c_ssize_t),
    ]
#[repr(C)]
pub struct PRINTPROVIDOR {
    pub fpOpenPrinter: isize,
    pub fpSetJob: isize,
    pub fpGetJob: isize,
    pub fpEnumJobs: isize,
    pub fpAddPrinter: isize,
    pub fpDeletePrinter: isize,
    pub fpSetPrinter: isize,
    pub fpGetPrinter: isize,
    pub fpEnumPrinters: isize,
    pub fpAddPrinterDriver: isize,
    pub fpEnumPrinterDrivers: isize,
    pub fpGetPrinterDriver: isize,
    pub fpGetPrinterDriverDirectory: isize,
    pub fpDeletePrinterDriver: isize,
    pub fpAddPrintProcessor: isize,
    pub fpEnumPrintProcessors: isize,
    pub fpGetPrintProcessorDirectory: isize,
    pub fpDeletePrintProcessor: isize,
    pub fpEnumPrintProcessorDatatypes: isize,
    pub fpStartDocPrinter: isize,
    pub fpStartPagePrinter: isize,
    pub fpWritePrinter: isize,
    pub fpEndPagePrinter: isize,
    pub fpAbortPrinter: isize,
    pub fpReadPrinter: isize,
    pub fpEndDocPrinter: isize,
    pub fpAddJob: isize,
    pub fpScheduleJob: isize,
    pub fpGetPrinterData: isize,
    pub fpSetPrinterData: isize,
    pub fpWaitForPrinterChange: isize,
    pub fpClosePrinter: isize,
    pub fpAddForm: isize,
    pub fpDeleteForm: isize,
    pub fpGetForm: isize,
    pub fpSetForm: isize,
    pub fpEnumForms: isize,
    pub fpEnumMonitors: isize,
    pub fpEnumPorts: isize,
    pub fpAddPort: isize,
    pub fpConfigurePort: isize,
    pub fpDeletePort: isize,
    pub fpCreatePrinterIC: isize,
    pub fpPlayGdiScriptOnPrinterIC: isize,
    pub fpDeletePrinterIC: isize,
    pub fpAddPrinterConnection: isize,
    pub fpDeletePrinterConnection: isize,
    pub fpPrinterMessageBox: isize,
    pub fpAddMonitor: isize,
    pub fpDeleteMonitor: isize,
    pub fpResetPrinter: isize,
    pub fpGetPrinterDriverEx: isize,
    pub fpFindFirstPrinterChangeNotification: isize,
    pub fpFindClosePrinterChangeNotification: isize,
    pub fpAddPortEx: isize,
    pub fpShutDown: isize,
    pub fpRefreshPrinterChangeNotification: isize,
    pub fpOpenPrinterEx: isize,
    pub fpAddPrinterEx: isize,
    pub fpSetPort: isize,
    pub fpEnumPrinterData: isize,
    pub fpDeletePrinterData: isize,
    pub fpClusterSplOpen: isize,
    pub fpClusterSplClose: isize,
    pub fpClusterSplIsAlive: isize,
    pub fpSetPrinterDataEx: isize,
    pub fpGetPrinterDataEx: isize,
    pub fpEnumPrinterDataEx: isize,
    pub fpEnumPrinterKey: isize,
    pub fpDeletePrinterDataEx: isize,
    pub fpDeletePrinterKey: isize,
    pub fpSeekPrinter: isize,
    pub fpDeletePrinterDriverEx: isize,
    pub fpAddPerMachineConnection: isize,
    pub fpDeletePerMachineConnection: isize,
    pub fpEnumPerMachineConnections: isize,
    pub fpXcvData: isize,
    pub fpAddPrinterDriverEx: isize,
    pub fpSplReadPrinter: isize,
    pub fpDriverUnloadComplete: isize,
    pub fpGetSpoolFileInfo: isize,
    pub fpCommitSpoolData: isize,
    pub fpCloseSpoolFileHandle: isize,
    pub fpFlushPrinter: isize,
    pub fpSendRecvBidiData: isize,
    pub fpAddPrinterConnection2: isize,
    pub fpGetPrintClassObject: isize,
    pub fpReportJobProcessingProgress: isize,
    pub fpEnumAndLogProvidorObjects: isize,
    pub fpInternalGetPrinterDriver: isize,
    pub fpFindCompatibleDriver: isize,
    pub fpInstallPrinterDriverPackageFromConnection: isize,
    pub fpGetJobNamedPropertyValue: isize,
    pub fpSetJobNamedProperty: isize,
    pub fpDeleteJobNamedProperty: isize,
    pub fpEnumJobNamedProperties: isize,
    pub fpPowerEvent: isize,
    pub fpGetUserPropertyBag: isize,
    pub fpCanShutdown: isize,
    pub fpLogJobInfoForBranchOffice: isize,
    pub fpRegeneratePrintDeviceCapabilities: isize,
    pub fpPrintSupportOperation: isize,
    pub fpIppCreateJobOnPrinter: isize,
    pub fpIppGetJobAttributes: isize,
    pub fpIppSetJobAttributes: isize,
    pub fpIppGetPrinterAttributes: isize,
    pub fpIppSetPrinterAttributes: isize,
    pub fpIppCreateJobOnPrinterWithAttributes: isize,
}
import "golang.org/x/sys/windows"

type PRINTPROVIDOR struct {
	fpOpenPrinter uintptr
	fpSetJob uintptr
	fpGetJob uintptr
	fpEnumJobs uintptr
	fpAddPrinter uintptr
	fpDeletePrinter uintptr
	fpSetPrinter uintptr
	fpGetPrinter uintptr
	fpEnumPrinters uintptr
	fpAddPrinterDriver uintptr
	fpEnumPrinterDrivers uintptr
	fpGetPrinterDriver uintptr
	fpGetPrinterDriverDirectory uintptr
	fpDeletePrinterDriver uintptr
	fpAddPrintProcessor uintptr
	fpEnumPrintProcessors uintptr
	fpGetPrintProcessorDirectory uintptr
	fpDeletePrintProcessor uintptr
	fpEnumPrintProcessorDatatypes uintptr
	fpStartDocPrinter uintptr
	fpStartPagePrinter uintptr
	fpWritePrinter uintptr
	fpEndPagePrinter uintptr
	fpAbortPrinter uintptr
	fpReadPrinter uintptr
	fpEndDocPrinter uintptr
	fpAddJob uintptr
	fpScheduleJob uintptr
	fpGetPrinterData uintptr
	fpSetPrinterData uintptr
	fpWaitForPrinterChange uintptr
	fpClosePrinter uintptr
	fpAddForm uintptr
	fpDeleteForm uintptr
	fpGetForm uintptr
	fpSetForm uintptr
	fpEnumForms uintptr
	fpEnumMonitors uintptr
	fpEnumPorts uintptr
	fpAddPort uintptr
	fpConfigurePort uintptr
	fpDeletePort uintptr
	fpCreatePrinterIC uintptr
	fpPlayGdiScriptOnPrinterIC uintptr
	fpDeletePrinterIC uintptr
	fpAddPrinterConnection uintptr
	fpDeletePrinterConnection uintptr
	fpPrinterMessageBox uintptr
	fpAddMonitor uintptr
	fpDeleteMonitor uintptr
	fpResetPrinter uintptr
	fpGetPrinterDriverEx uintptr
	fpFindFirstPrinterChangeNotification uintptr
	fpFindClosePrinterChangeNotification uintptr
	fpAddPortEx uintptr
	fpShutDown uintptr
	fpRefreshPrinterChangeNotification uintptr
	fpOpenPrinterEx uintptr
	fpAddPrinterEx uintptr
	fpSetPort uintptr
	fpEnumPrinterData uintptr
	fpDeletePrinterData uintptr
	fpClusterSplOpen uintptr
	fpClusterSplClose uintptr
	fpClusterSplIsAlive uintptr
	fpSetPrinterDataEx uintptr
	fpGetPrinterDataEx uintptr
	fpEnumPrinterDataEx uintptr
	fpEnumPrinterKey uintptr
	fpDeletePrinterDataEx uintptr
	fpDeletePrinterKey uintptr
	fpSeekPrinter uintptr
	fpDeletePrinterDriverEx uintptr
	fpAddPerMachineConnection uintptr
	fpDeletePerMachineConnection uintptr
	fpEnumPerMachineConnections uintptr
	fpXcvData uintptr
	fpAddPrinterDriverEx uintptr
	fpSplReadPrinter uintptr
	fpDriverUnloadComplete uintptr
	fpGetSpoolFileInfo uintptr
	fpCommitSpoolData uintptr
	fpCloseSpoolFileHandle uintptr
	fpFlushPrinter uintptr
	fpSendRecvBidiData uintptr
	fpAddPrinterConnection2 uintptr
	fpGetPrintClassObject uintptr
	fpReportJobProcessingProgress uintptr
	fpEnumAndLogProvidorObjects uintptr
	fpInternalGetPrinterDriver uintptr
	fpFindCompatibleDriver uintptr
	fpInstallPrinterDriverPackageFromConnection uintptr
	fpGetJobNamedPropertyValue uintptr
	fpSetJobNamedProperty uintptr
	fpDeleteJobNamedProperty uintptr
	fpEnumJobNamedProperties uintptr
	fpPowerEvent uintptr
	fpGetUserPropertyBag uintptr
	fpCanShutdown uintptr
	fpLogJobInfoForBranchOffice uintptr
	fpRegeneratePrintDeviceCapabilities uintptr
	fpPrintSupportOperation uintptr
	fpIppCreateJobOnPrinter uintptr
	fpIppGetJobAttributes uintptr
	fpIppSetJobAttributes uintptr
	fpIppGetPrinterAttributes uintptr
	fpIppSetPrinterAttributes uintptr
	fpIppCreateJobOnPrinterWithAttributes uintptr
}
type
  PRINTPROVIDOR = record
    fpOpenPrinter: NativeInt;
    fpSetJob: NativeInt;
    fpGetJob: NativeInt;
    fpEnumJobs: NativeInt;
    fpAddPrinter: NativeInt;
    fpDeletePrinter: NativeInt;
    fpSetPrinter: NativeInt;
    fpGetPrinter: NativeInt;
    fpEnumPrinters: NativeInt;
    fpAddPrinterDriver: NativeInt;
    fpEnumPrinterDrivers: NativeInt;
    fpGetPrinterDriver: NativeInt;
    fpGetPrinterDriverDirectory: NativeInt;
    fpDeletePrinterDriver: NativeInt;
    fpAddPrintProcessor: NativeInt;
    fpEnumPrintProcessors: NativeInt;
    fpGetPrintProcessorDirectory: NativeInt;
    fpDeletePrintProcessor: NativeInt;
    fpEnumPrintProcessorDatatypes: NativeInt;
    fpStartDocPrinter: NativeInt;
    fpStartPagePrinter: NativeInt;
    fpWritePrinter: NativeInt;
    fpEndPagePrinter: NativeInt;
    fpAbortPrinter: NativeInt;
    fpReadPrinter: NativeInt;
    fpEndDocPrinter: NativeInt;
    fpAddJob: NativeInt;
    fpScheduleJob: NativeInt;
    fpGetPrinterData: NativeInt;
    fpSetPrinterData: NativeInt;
    fpWaitForPrinterChange: NativeInt;
    fpClosePrinter: NativeInt;
    fpAddForm: NativeInt;
    fpDeleteForm: NativeInt;
    fpGetForm: NativeInt;
    fpSetForm: NativeInt;
    fpEnumForms: NativeInt;
    fpEnumMonitors: NativeInt;
    fpEnumPorts: NativeInt;
    fpAddPort: NativeInt;
    fpConfigurePort: NativeInt;
    fpDeletePort: NativeInt;
    fpCreatePrinterIC: NativeInt;
    fpPlayGdiScriptOnPrinterIC: NativeInt;
    fpDeletePrinterIC: NativeInt;
    fpAddPrinterConnection: NativeInt;
    fpDeletePrinterConnection: NativeInt;
    fpPrinterMessageBox: NativeInt;
    fpAddMonitor: NativeInt;
    fpDeleteMonitor: NativeInt;
    fpResetPrinter: NativeInt;
    fpGetPrinterDriverEx: NativeInt;
    fpFindFirstPrinterChangeNotification: NativeInt;
    fpFindClosePrinterChangeNotification: NativeInt;
    fpAddPortEx: NativeInt;
    fpShutDown: NativeInt;
    fpRefreshPrinterChangeNotification: NativeInt;
    fpOpenPrinterEx: NativeInt;
    fpAddPrinterEx: NativeInt;
    fpSetPort: NativeInt;
    fpEnumPrinterData: NativeInt;
    fpDeletePrinterData: NativeInt;
    fpClusterSplOpen: NativeInt;
    fpClusterSplClose: NativeInt;
    fpClusterSplIsAlive: NativeInt;
    fpSetPrinterDataEx: NativeInt;
    fpGetPrinterDataEx: NativeInt;
    fpEnumPrinterDataEx: NativeInt;
    fpEnumPrinterKey: NativeInt;
    fpDeletePrinterDataEx: NativeInt;
    fpDeletePrinterKey: NativeInt;
    fpSeekPrinter: NativeInt;
    fpDeletePrinterDriverEx: NativeInt;
    fpAddPerMachineConnection: NativeInt;
    fpDeletePerMachineConnection: NativeInt;
    fpEnumPerMachineConnections: NativeInt;
    fpXcvData: NativeInt;
    fpAddPrinterDriverEx: NativeInt;
    fpSplReadPrinter: NativeInt;
    fpDriverUnloadComplete: NativeInt;
    fpGetSpoolFileInfo: NativeInt;
    fpCommitSpoolData: NativeInt;
    fpCloseSpoolFileHandle: NativeInt;
    fpFlushPrinter: NativeInt;
    fpSendRecvBidiData: NativeInt;
    fpAddPrinterConnection2: NativeInt;
    fpGetPrintClassObject: NativeInt;
    fpReportJobProcessingProgress: NativeInt;
    fpEnumAndLogProvidorObjects: NativeInt;
    fpInternalGetPrinterDriver: NativeInt;
    fpFindCompatibleDriver: NativeInt;
    fpInstallPrinterDriverPackageFromConnection: NativeInt;
    fpGetJobNamedPropertyValue: NativeInt;
    fpSetJobNamedProperty: NativeInt;
    fpDeleteJobNamedProperty: NativeInt;
    fpEnumJobNamedProperties: NativeInt;
    fpPowerEvent: NativeInt;
    fpGetUserPropertyBag: NativeInt;
    fpCanShutdown: NativeInt;
    fpLogJobInfoForBranchOffice: NativeInt;
    fpRegeneratePrintDeviceCapabilities: NativeInt;
    fpPrintSupportOperation: NativeInt;
    fpIppCreateJobOnPrinter: NativeInt;
    fpIppGetJobAttributes: NativeInt;
    fpIppSetJobAttributes: NativeInt;
    fpIppGetPrinterAttributes: NativeInt;
    fpIppSetPrinterAttributes: NativeInt;
    fpIppCreateJobOnPrinterWithAttributes: NativeInt;
  end;
const PRINTPROVIDOR = extern struct {
    fpOpenPrinter: isize,
    fpSetJob: isize,
    fpGetJob: isize,
    fpEnumJobs: isize,
    fpAddPrinter: isize,
    fpDeletePrinter: isize,
    fpSetPrinter: isize,
    fpGetPrinter: isize,
    fpEnumPrinters: isize,
    fpAddPrinterDriver: isize,
    fpEnumPrinterDrivers: isize,
    fpGetPrinterDriver: isize,
    fpGetPrinterDriverDirectory: isize,
    fpDeletePrinterDriver: isize,
    fpAddPrintProcessor: isize,
    fpEnumPrintProcessors: isize,
    fpGetPrintProcessorDirectory: isize,
    fpDeletePrintProcessor: isize,
    fpEnumPrintProcessorDatatypes: isize,
    fpStartDocPrinter: isize,
    fpStartPagePrinter: isize,
    fpWritePrinter: isize,
    fpEndPagePrinter: isize,
    fpAbortPrinter: isize,
    fpReadPrinter: isize,
    fpEndDocPrinter: isize,
    fpAddJob: isize,
    fpScheduleJob: isize,
    fpGetPrinterData: isize,
    fpSetPrinterData: isize,
    fpWaitForPrinterChange: isize,
    fpClosePrinter: isize,
    fpAddForm: isize,
    fpDeleteForm: isize,
    fpGetForm: isize,
    fpSetForm: isize,
    fpEnumForms: isize,
    fpEnumMonitors: isize,
    fpEnumPorts: isize,
    fpAddPort: isize,
    fpConfigurePort: isize,
    fpDeletePort: isize,
    fpCreatePrinterIC: isize,
    fpPlayGdiScriptOnPrinterIC: isize,
    fpDeletePrinterIC: isize,
    fpAddPrinterConnection: isize,
    fpDeletePrinterConnection: isize,
    fpPrinterMessageBox: isize,
    fpAddMonitor: isize,
    fpDeleteMonitor: isize,
    fpResetPrinter: isize,
    fpGetPrinterDriverEx: isize,
    fpFindFirstPrinterChangeNotification: isize,
    fpFindClosePrinterChangeNotification: isize,
    fpAddPortEx: isize,
    fpShutDown: isize,
    fpRefreshPrinterChangeNotification: isize,
    fpOpenPrinterEx: isize,
    fpAddPrinterEx: isize,
    fpSetPort: isize,
    fpEnumPrinterData: isize,
    fpDeletePrinterData: isize,
    fpClusterSplOpen: isize,
    fpClusterSplClose: isize,
    fpClusterSplIsAlive: isize,
    fpSetPrinterDataEx: isize,
    fpGetPrinterDataEx: isize,
    fpEnumPrinterDataEx: isize,
    fpEnumPrinterKey: isize,
    fpDeletePrinterDataEx: isize,
    fpDeletePrinterKey: isize,
    fpSeekPrinter: isize,
    fpDeletePrinterDriverEx: isize,
    fpAddPerMachineConnection: isize,
    fpDeletePerMachineConnection: isize,
    fpEnumPerMachineConnections: isize,
    fpXcvData: isize,
    fpAddPrinterDriverEx: isize,
    fpSplReadPrinter: isize,
    fpDriverUnloadComplete: isize,
    fpGetSpoolFileInfo: isize,
    fpCommitSpoolData: isize,
    fpCloseSpoolFileHandle: isize,
    fpFlushPrinter: isize,
    fpSendRecvBidiData: isize,
    fpAddPrinterConnection2: isize,
    fpGetPrintClassObject: isize,
    fpReportJobProcessingProgress: isize,
    fpEnumAndLogProvidorObjects: isize,
    fpInternalGetPrinterDriver: isize,
    fpFindCompatibleDriver: isize,
    fpInstallPrinterDriverPackageFromConnection: isize,
    fpGetJobNamedPropertyValue: isize,
    fpSetJobNamedProperty: isize,
    fpDeleteJobNamedProperty: isize,
    fpEnumJobNamedProperties: isize,
    fpPowerEvent: isize,
    fpGetUserPropertyBag: isize,
    fpCanShutdown: isize,
    fpLogJobInfoForBranchOffice: isize,
    fpRegeneratePrintDeviceCapabilities: isize,
    fpPrintSupportOperation: isize,
    fpIppCreateJobOnPrinter: isize,
    fpIppGetJobAttributes: isize,
    fpIppSetJobAttributes: isize,
    fpIppGetPrinterAttributes: isize,
    fpIppSetPrinterAttributes: isize,
    fpIppCreateJobOnPrinterWithAttributes: isize,
};
type
  PRINTPROVIDOR {.bycopy.} = object
    fpOpenPrinter: int
    fpSetJob: int
    fpGetJob: int
    fpEnumJobs: int
    fpAddPrinter: int
    fpDeletePrinter: int
    fpSetPrinter: int
    fpGetPrinter: int
    fpEnumPrinters: int
    fpAddPrinterDriver: int
    fpEnumPrinterDrivers: int
    fpGetPrinterDriver: int
    fpGetPrinterDriverDirectory: int
    fpDeletePrinterDriver: int
    fpAddPrintProcessor: int
    fpEnumPrintProcessors: int
    fpGetPrintProcessorDirectory: int
    fpDeletePrintProcessor: int
    fpEnumPrintProcessorDatatypes: int
    fpStartDocPrinter: int
    fpStartPagePrinter: int
    fpWritePrinter: int
    fpEndPagePrinter: int
    fpAbortPrinter: int
    fpReadPrinter: int
    fpEndDocPrinter: int
    fpAddJob: int
    fpScheduleJob: int
    fpGetPrinterData: int
    fpSetPrinterData: int
    fpWaitForPrinterChange: int
    fpClosePrinter: int
    fpAddForm: int
    fpDeleteForm: int
    fpGetForm: int
    fpSetForm: int
    fpEnumForms: int
    fpEnumMonitors: int
    fpEnumPorts: int
    fpAddPort: int
    fpConfigurePort: int
    fpDeletePort: int
    fpCreatePrinterIC: int
    fpPlayGdiScriptOnPrinterIC: int
    fpDeletePrinterIC: int
    fpAddPrinterConnection: int
    fpDeletePrinterConnection: int
    fpPrinterMessageBox: int
    fpAddMonitor: int
    fpDeleteMonitor: int
    fpResetPrinter: int
    fpGetPrinterDriverEx: int
    fpFindFirstPrinterChangeNotification: int
    fpFindClosePrinterChangeNotification: int
    fpAddPortEx: int
    fpShutDown: int
    fpRefreshPrinterChangeNotification: int
    fpOpenPrinterEx: int
    fpAddPrinterEx: int
    fpSetPort: int
    fpEnumPrinterData: int
    fpDeletePrinterData: int
    fpClusterSplOpen: int
    fpClusterSplClose: int
    fpClusterSplIsAlive: int
    fpSetPrinterDataEx: int
    fpGetPrinterDataEx: int
    fpEnumPrinterDataEx: int
    fpEnumPrinterKey: int
    fpDeletePrinterDataEx: int
    fpDeletePrinterKey: int
    fpSeekPrinter: int
    fpDeletePrinterDriverEx: int
    fpAddPerMachineConnection: int
    fpDeletePerMachineConnection: int
    fpEnumPerMachineConnections: int
    fpXcvData: int
    fpAddPrinterDriverEx: int
    fpSplReadPrinter: int
    fpDriverUnloadComplete: int
    fpGetSpoolFileInfo: int
    fpCommitSpoolData: int
    fpCloseSpoolFileHandle: int
    fpFlushPrinter: int
    fpSendRecvBidiData: int
    fpAddPrinterConnection2: int
    fpGetPrintClassObject: int
    fpReportJobProcessingProgress: int
    fpEnumAndLogProvidorObjects: int
    fpInternalGetPrinterDriver: int
    fpFindCompatibleDriver: int
    fpInstallPrinterDriverPackageFromConnection: int
    fpGetJobNamedPropertyValue: int
    fpSetJobNamedProperty: int
    fpDeleteJobNamedProperty: int
    fpEnumJobNamedProperties: int
    fpPowerEvent: int
    fpGetUserPropertyBag: int
    fpCanShutdown: int
    fpLogJobInfoForBranchOffice: int
    fpRegeneratePrintDeviceCapabilities: int
    fpPrintSupportOperation: int
    fpIppCreateJobOnPrinter: int
    fpIppGetJobAttributes: int
    fpIppSetJobAttributes: int
    fpIppGetPrinterAttributes: int
    fpIppSetPrinterAttributes: int
    fpIppCreateJobOnPrinterWithAttributes: int
struct PRINTPROVIDOR
{
    ptrdiff_t fpOpenPrinter;
    ptrdiff_t fpSetJob;
    ptrdiff_t fpGetJob;
    ptrdiff_t fpEnumJobs;
    ptrdiff_t fpAddPrinter;
    ptrdiff_t fpDeletePrinter;
    ptrdiff_t fpSetPrinter;
    ptrdiff_t fpGetPrinter;
    ptrdiff_t fpEnumPrinters;
    ptrdiff_t fpAddPrinterDriver;
    ptrdiff_t fpEnumPrinterDrivers;
    ptrdiff_t fpGetPrinterDriver;
    ptrdiff_t fpGetPrinterDriverDirectory;
    ptrdiff_t fpDeletePrinterDriver;
    ptrdiff_t fpAddPrintProcessor;
    ptrdiff_t fpEnumPrintProcessors;
    ptrdiff_t fpGetPrintProcessorDirectory;
    ptrdiff_t fpDeletePrintProcessor;
    ptrdiff_t fpEnumPrintProcessorDatatypes;
    ptrdiff_t fpStartDocPrinter;
    ptrdiff_t fpStartPagePrinter;
    ptrdiff_t fpWritePrinter;
    ptrdiff_t fpEndPagePrinter;
    ptrdiff_t fpAbortPrinter;
    ptrdiff_t fpReadPrinter;
    ptrdiff_t fpEndDocPrinter;
    ptrdiff_t fpAddJob;
    ptrdiff_t fpScheduleJob;
    ptrdiff_t fpGetPrinterData;
    ptrdiff_t fpSetPrinterData;
    ptrdiff_t fpWaitForPrinterChange;
    ptrdiff_t fpClosePrinter;
    ptrdiff_t fpAddForm;
    ptrdiff_t fpDeleteForm;
    ptrdiff_t fpGetForm;
    ptrdiff_t fpSetForm;
    ptrdiff_t fpEnumForms;
    ptrdiff_t fpEnumMonitors;
    ptrdiff_t fpEnumPorts;
    ptrdiff_t fpAddPort;
    ptrdiff_t fpConfigurePort;
    ptrdiff_t fpDeletePort;
    ptrdiff_t fpCreatePrinterIC;
    ptrdiff_t fpPlayGdiScriptOnPrinterIC;
    ptrdiff_t fpDeletePrinterIC;
    ptrdiff_t fpAddPrinterConnection;
    ptrdiff_t fpDeletePrinterConnection;
    ptrdiff_t fpPrinterMessageBox;
    ptrdiff_t fpAddMonitor;
    ptrdiff_t fpDeleteMonitor;
    ptrdiff_t fpResetPrinter;
    ptrdiff_t fpGetPrinterDriverEx;
    ptrdiff_t fpFindFirstPrinterChangeNotification;
    ptrdiff_t fpFindClosePrinterChangeNotification;
    ptrdiff_t fpAddPortEx;
    ptrdiff_t fpShutDown;
    ptrdiff_t fpRefreshPrinterChangeNotification;
    ptrdiff_t fpOpenPrinterEx;
    ptrdiff_t fpAddPrinterEx;
    ptrdiff_t fpSetPort;
    ptrdiff_t fpEnumPrinterData;
    ptrdiff_t fpDeletePrinterData;
    ptrdiff_t fpClusterSplOpen;
    ptrdiff_t fpClusterSplClose;
    ptrdiff_t fpClusterSplIsAlive;
    ptrdiff_t fpSetPrinterDataEx;
    ptrdiff_t fpGetPrinterDataEx;
    ptrdiff_t fpEnumPrinterDataEx;
    ptrdiff_t fpEnumPrinterKey;
    ptrdiff_t fpDeletePrinterDataEx;
    ptrdiff_t fpDeletePrinterKey;
    ptrdiff_t fpSeekPrinter;
    ptrdiff_t fpDeletePrinterDriverEx;
    ptrdiff_t fpAddPerMachineConnection;
    ptrdiff_t fpDeletePerMachineConnection;
    ptrdiff_t fpEnumPerMachineConnections;
    ptrdiff_t fpXcvData;
    ptrdiff_t fpAddPrinterDriverEx;
    ptrdiff_t fpSplReadPrinter;
    ptrdiff_t fpDriverUnloadComplete;
    ptrdiff_t fpGetSpoolFileInfo;
    ptrdiff_t fpCommitSpoolData;
    ptrdiff_t fpCloseSpoolFileHandle;
    ptrdiff_t fpFlushPrinter;
    ptrdiff_t fpSendRecvBidiData;
    ptrdiff_t fpAddPrinterConnection2;
    ptrdiff_t fpGetPrintClassObject;
    ptrdiff_t fpReportJobProcessingProgress;
    ptrdiff_t fpEnumAndLogProvidorObjects;
    ptrdiff_t fpInternalGetPrinterDriver;
    ptrdiff_t fpFindCompatibleDriver;
    ptrdiff_t fpInstallPrinterDriverPackageFromConnection;
    ptrdiff_t fpGetJobNamedPropertyValue;
    ptrdiff_t fpSetJobNamedProperty;
    ptrdiff_t fpDeleteJobNamedProperty;
    ptrdiff_t fpEnumJobNamedProperties;
    ptrdiff_t fpPowerEvent;
    ptrdiff_t fpGetUserPropertyBag;
    ptrdiff_t fpCanShutdown;
    ptrdiff_t fpLogJobInfoForBranchOffice;
    ptrdiff_t fpRegeneratePrintDeviceCapabilities;
    ptrdiff_t fpPrintSupportOperation;
    ptrdiff_t fpIppCreateJobOnPrinter;
    ptrdiff_t fpIppGetJobAttributes;
    ptrdiff_t fpIppSetJobAttributes;
    ptrdiff_t fpIppGetPrinterAttributes;
    ptrdiff_t fpIppSetPrinterAttributes;
    ptrdiff_t fpIppCreateJobOnPrinterWithAttributes;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; PRINTPROVIDOR サイズ: 432 バイト(x86)
dim st, 108    ; 4byte整数×108(構造体サイズ 432 / 4 切り上げ)
; fpOpenPrinter : INT_PTR (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; fpSetJob : INT_PTR (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; fpGetJob : INT_PTR (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; fpEnumJobs : INT_PTR (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; fpAddPrinter : INT_PTR (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; fpDeletePrinter : INT_PTR (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; fpSetPrinter : INT_PTR (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; fpGetPrinter : INT_PTR (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; fpEnumPrinters : INT_PTR (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; fpAddPrinterDriver : INT_PTR (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; fpEnumPrinterDrivers : INT_PTR (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; fpGetPrinterDriver : INT_PTR (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; fpGetPrinterDriverDirectory : INT_PTR (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; fpDeletePrinterDriver : INT_PTR (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; fpAddPrintProcessor : INT_PTR (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; fpEnumPrintProcessors : INT_PTR (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; fpGetPrintProcessorDirectory : INT_PTR (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; fpDeletePrintProcessor : INT_PTR (+68, 4byte)  st.17 = 値  /  値 = st.17   (lpoke/lpeek も可)
; fpEnumPrintProcessorDatatypes : INT_PTR (+72, 4byte)  st.18 = 値  /  値 = st.18   (lpoke/lpeek も可)
; fpStartDocPrinter : INT_PTR (+76, 4byte)  st.19 = 値  /  値 = st.19   (lpoke/lpeek も可)
; fpStartPagePrinter : INT_PTR (+80, 4byte)  st.20 = 値  /  値 = st.20   (lpoke/lpeek も可)
; fpWritePrinter : INT_PTR (+84, 4byte)  st.21 = 値  /  値 = st.21   (lpoke/lpeek も可)
; fpEndPagePrinter : INT_PTR (+88, 4byte)  st.22 = 値  /  値 = st.22   (lpoke/lpeek も可)
; fpAbortPrinter : INT_PTR (+92, 4byte)  st.23 = 値  /  値 = st.23   (lpoke/lpeek も可)
; fpReadPrinter : INT_PTR (+96, 4byte)  st.24 = 値  /  値 = st.24   (lpoke/lpeek も可)
; fpEndDocPrinter : INT_PTR (+100, 4byte)  st.25 = 値  /  値 = st.25   (lpoke/lpeek も可)
; fpAddJob : INT_PTR (+104, 4byte)  st.26 = 値  /  値 = st.26   (lpoke/lpeek も可)
; fpScheduleJob : INT_PTR (+108, 4byte)  st.27 = 値  /  値 = st.27   (lpoke/lpeek も可)
; fpGetPrinterData : INT_PTR (+112, 4byte)  st.28 = 値  /  値 = st.28   (lpoke/lpeek も可)
; fpSetPrinterData : INT_PTR (+116, 4byte)  st.29 = 値  /  値 = st.29   (lpoke/lpeek も可)
; fpWaitForPrinterChange : INT_PTR (+120, 4byte)  st.30 = 値  /  値 = st.30   (lpoke/lpeek も可)
; fpClosePrinter : INT_PTR (+124, 4byte)  st.31 = 値  /  値 = st.31   (lpoke/lpeek も可)
; fpAddForm : INT_PTR (+128, 4byte)  st.32 = 値  /  値 = st.32   (lpoke/lpeek も可)
; fpDeleteForm : INT_PTR (+132, 4byte)  st.33 = 値  /  値 = st.33   (lpoke/lpeek も可)
; fpGetForm : INT_PTR (+136, 4byte)  st.34 = 値  /  値 = st.34   (lpoke/lpeek も可)
; fpSetForm : INT_PTR (+140, 4byte)  st.35 = 値  /  値 = st.35   (lpoke/lpeek も可)
; fpEnumForms : INT_PTR (+144, 4byte)  st.36 = 値  /  値 = st.36   (lpoke/lpeek も可)
; fpEnumMonitors : INT_PTR (+148, 4byte)  st.37 = 値  /  値 = st.37   (lpoke/lpeek も可)
; fpEnumPorts : INT_PTR (+152, 4byte)  st.38 = 値  /  値 = st.38   (lpoke/lpeek も可)
; fpAddPort : INT_PTR (+156, 4byte)  st.39 = 値  /  値 = st.39   (lpoke/lpeek も可)
; fpConfigurePort : INT_PTR (+160, 4byte)  st.40 = 値  /  値 = st.40   (lpoke/lpeek も可)
; fpDeletePort : INT_PTR (+164, 4byte)  st.41 = 値  /  値 = st.41   (lpoke/lpeek も可)
; fpCreatePrinterIC : INT_PTR (+168, 4byte)  st.42 = 値  /  値 = st.42   (lpoke/lpeek も可)
; fpPlayGdiScriptOnPrinterIC : INT_PTR (+172, 4byte)  st.43 = 値  /  値 = st.43   (lpoke/lpeek も可)
; fpDeletePrinterIC : INT_PTR (+176, 4byte)  st.44 = 値  /  値 = st.44   (lpoke/lpeek も可)
; fpAddPrinterConnection : INT_PTR (+180, 4byte)  st.45 = 値  /  値 = st.45   (lpoke/lpeek も可)
; fpDeletePrinterConnection : INT_PTR (+184, 4byte)  st.46 = 値  /  値 = st.46   (lpoke/lpeek も可)
; fpPrinterMessageBox : INT_PTR (+188, 4byte)  st.47 = 値  /  値 = st.47   (lpoke/lpeek も可)
; fpAddMonitor : INT_PTR (+192, 4byte)  st.48 = 値  /  値 = st.48   (lpoke/lpeek も可)
; fpDeleteMonitor : INT_PTR (+196, 4byte)  st.49 = 値  /  値 = st.49   (lpoke/lpeek も可)
; fpResetPrinter : INT_PTR (+200, 4byte)  st.50 = 値  /  値 = st.50   (lpoke/lpeek も可)
; fpGetPrinterDriverEx : INT_PTR (+204, 4byte)  st.51 = 値  /  値 = st.51   (lpoke/lpeek も可)
; fpFindFirstPrinterChangeNotification : INT_PTR (+208, 4byte)  st.52 = 値  /  値 = st.52   (lpoke/lpeek も可)
; fpFindClosePrinterChangeNotification : INT_PTR (+212, 4byte)  st.53 = 値  /  値 = st.53   (lpoke/lpeek も可)
; fpAddPortEx : INT_PTR (+216, 4byte)  st.54 = 値  /  値 = st.54   (lpoke/lpeek も可)
; fpShutDown : INT_PTR (+220, 4byte)  st.55 = 値  /  値 = st.55   (lpoke/lpeek も可)
; fpRefreshPrinterChangeNotification : INT_PTR (+224, 4byte)  st.56 = 値  /  値 = st.56   (lpoke/lpeek も可)
; fpOpenPrinterEx : INT_PTR (+228, 4byte)  st.57 = 値  /  値 = st.57   (lpoke/lpeek も可)
; fpAddPrinterEx : INT_PTR (+232, 4byte)  st.58 = 値  /  値 = st.58   (lpoke/lpeek も可)
; fpSetPort : INT_PTR (+236, 4byte)  st.59 = 値  /  値 = st.59   (lpoke/lpeek も可)
; fpEnumPrinterData : INT_PTR (+240, 4byte)  st.60 = 値  /  値 = st.60   (lpoke/lpeek も可)
; fpDeletePrinterData : INT_PTR (+244, 4byte)  st.61 = 値  /  値 = st.61   (lpoke/lpeek も可)
; fpClusterSplOpen : INT_PTR (+248, 4byte)  st.62 = 値  /  値 = st.62   (lpoke/lpeek も可)
; fpClusterSplClose : INT_PTR (+252, 4byte)  st.63 = 値  /  値 = st.63   (lpoke/lpeek も可)
; fpClusterSplIsAlive : INT_PTR (+256, 4byte)  st.64 = 値  /  値 = st.64   (lpoke/lpeek も可)
; fpSetPrinterDataEx : INT_PTR (+260, 4byte)  st.65 = 値  /  値 = st.65   (lpoke/lpeek も可)
; fpGetPrinterDataEx : INT_PTR (+264, 4byte)  st.66 = 値  /  値 = st.66   (lpoke/lpeek も可)
; fpEnumPrinterDataEx : INT_PTR (+268, 4byte)  st.67 = 値  /  値 = st.67   (lpoke/lpeek も可)
; fpEnumPrinterKey : INT_PTR (+272, 4byte)  st.68 = 値  /  値 = st.68   (lpoke/lpeek も可)
; fpDeletePrinterDataEx : INT_PTR (+276, 4byte)  st.69 = 値  /  値 = st.69   (lpoke/lpeek も可)
; fpDeletePrinterKey : INT_PTR (+280, 4byte)  st.70 = 値  /  値 = st.70   (lpoke/lpeek も可)
; fpSeekPrinter : INT_PTR (+284, 4byte)  st.71 = 値  /  値 = st.71   (lpoke/lpeek も可)
; fpDeletePrinterDriverEx : INT_PTR (+288, 4byte)  st.72 = 値  /  値 = st.72   (lpoke/lpeek も可)
; fpAddPerMachineConnection : INT_PTR (+292, 4byte)  st.73 = 値  /  値 = st.73   (lpoke/lpeek も可)
; fpDeletePerMachineConnection : INT_PTR (+296, 4byte)  st.74 = 値  /  値 = st.74   (lpoke/lpeek も可)
; fpEnumPerMachineConnections : INT_PTR (+300, 4byte)  st.75 = 値  /  値 = st.75   (lpoke/lpeek も可)
; fpXcvData : INT_PTR (+304, 4byte)  st.76 = 値  /  値 = st.76   (lpoke/lpeek も可)
; fpAddPrinterDriverEx : INT_PTR (+308, 4byte)  st.77 = 値  /  値 = st.77   (lpoke/lpeek も可)
; fpSplReadPrinter : INT_PTR (+312, 4byte)  st.78 = 値  /  値 = st.78   (lpoke/lpeek も可)
; fpDriverUnloadComplete : INT_PTR (+316, 4byte)  st.79 = 値  /  値 = st.79   (lpoke/lpeek も可)
; fpGetSpoolFileInfo : INT_PTR (+320, 4byte)  st.80 = 値  /  値 = st.80   (lpoke/lpeek も可)
; fpCommitSpoolData : INT_PTR (+324, 4byte)  st.81 = 値  /  値 = st.81   (lpoke/lpeek も可)
; fpCloseSpoolFileHandle : INT_PTR (+328, 4byte)  st.82 = 値  /  値 = st.82   (lpoke/lpeek も可)
; fpFlushPrinter : INT_PTR (+332, 4byte)  st.83 = 値  /  値 = st.83   (lpoke/lpeek も可)
; fpSendRecvBidiData : INT_PTR (+336, 4byte)  st.84 = 値  /  値 = st.84   (lpoke/lpeek も可)
; fpAddPrinterConnection2 : INT_PTR (+340, 4byte)  st.85 = 値  /  値 = st.85   (lpoke/lpeek も可)
; fpGetPrintClassObject : INT_PTR (+344, 4byte)  st.86 = 値  /  値 = st.86   (lpoke/lpeek も可)
; fpReportJobProcessingProgress : INT_PTR (+348, 4byte)  st.87 = 値  /  値 = st.87   (lpoke/lpeek も可)
; fpEnumAndLogProvidorObjects : INT_PTR (+352, 4byte)  st.88 = 値  /  値 = st.88   (lpoke/lpeek も可)
; fpInternalGetPrinterDriver : INT_PTR (+356, 4byte)  st.89 = 値  /  値 = st.89   (lpoke/lpeek も可)
; fpFindCompatibleDriver : INT_PTR (+360, 4byte)  st.90 = 値  /  値 = st.90   (lpoke/lpeek も可)
; fpInstallPrinterDriverPackageFromConnection : INT_PTR (+364, 4byte)  st.91 = 値  /  値 = st.91   (lpoke/lpeek も可)
; fpGetJobNamedPropertyValue : INT_PTR (+368, 4byte)  st.92 = 値  /  値 = st.92   (lpoke/lpeek も可)
; fpSetJobNamedProperty : INT_PTR (+372, 4byte)  st.93 = 値  /  値 = st.93   (lpoke/lpeek も可)
; fpDeleteJobNamedProperty : INT_PTR (+376, 4byte)  st.94 = 値  /  値 = st.94   (lpoke/lpeek も可)
; fpEnumJobNamedProperties : INT_PTR (+380, 4byte)  st.95 = 値  /  値 = st.95   (lpoke/lpeek も可)
; fpPowerEvent : INT_PTR (+384, 4byte)  st.96 = 値  /  値 = st.96   (lpoke/lpeek も可)
; fpGetUserPropertyBag : INT_PTR (+388, 4byte)  st.97 = 値  /  値 = st.97   (lpoke/lpeek も可)
; fpCanShutdown : INT_PTR (+392, 4byte)  st.98 = 値  /  値 = st.98   (lpoke/lpeek も可)
; fpLogJobInfoForBranchOffice : INT_PTR (+396, 4byte)  st.99 = 値  /  値 = st.99   (lpoke/lpeek も可)
; fpRegeneratePrintDeviceCapabilities : INT_PTR (+400, 4byte)  st.100 = 値  /  値 = st.100   (lpoke/lpeek も可)
; fpPrintSupportOperation : INT_PTR (+404, 4byte)  st.101 = 値  /  値 = st.101   (lpoke/lpeek も可)
; fpIppCreateJobOnPrinter : INT_PTR (+408, 4byte)  st.102 = 値  /  値 = st.102   (lpoke/lpeek も可)
; fpIppGetJobAttributes : INT_PTR (+412, 4byte)  st.103 = 値  /  値 = st.103   (lpoke/lpeek も可)
; fpIppSetJobAttributes : INT_PTR (+416, 4byte)  st.104 = 値  /  値 = st.104   (lpoke/lpeek も可)
; fpIppGetPrinterAttributes : INT_PTR (+420, 4byte)  st.105 = 値  /  値 = st.105   (lpoke/lpeek も可)
; fpIppSetPrinterAttributes : INT_PTR (+424, 4byte)  st.106 = 値  /  値 = st.106   (lpoke/lpeek も可)
; fpIppCreateJobOnPrinterWithAttributes : INT_PTR (+428, 4byte)  st.107 = 値  /  値 = st.107   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; PRINTPROVIDOR サイズ: 864 バイト(x64)
dim st, 216    ; 4byte整数×216(構造体サイズ 864 / 4 切り上げ)
; fpOpenPrinter : INT_PTR (+0, 8byte)  qpoke st,0,値 / qpeek(st,0)  ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; fpSetJob : INT_PTR (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; fpGetJob : INT_PTR (+16, 8byte)  qpoke st,16,値 / qpeek(st,16)  ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; fpEnumJobs : INT_PTR (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; fpAddPrinter : INT_PTR (+32, 8byte)  qpoke st,32,値 / qpeek(st,32)  ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; fpDeletePrinter : INT_PTR (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; fpSetPrinter : INT_PTR (+48, 8byte)  qpoke st,48,値 / qpeek(st,48)  ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; fpGetPrinter : INT_PTR (+56, 8byte)  qpoke st,56,値 / qpeek(st,56)  ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; fpEnumPrinters : INT_PTR (+64, 8byte)  qpoke st,64,値 / qpeek(st,64)  ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; fpAddPrinterDriver : INT_PTR (+72, 8byte)  qpoke st,72,値 / qpeek(st,72)  ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; fpEnumPrinterDrivers : INT_PTR (+80, 8byte)  qpoke st,80,値 / qpeek(st,80)  ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; fpGetPrinterDriver : INT_PTR (+88, 8byte)  qpoke st,88,値 / qpeek(st,88)  ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; fpGetPrinterDriverDirectory : INT_PTR (+96, 8byte)  qpoke st,96,値 / qpeek(st,96)  ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; fpDeletePrinterDriver : INT_PTR (+104, 8byte)  qpoke st,104,値 / qpeek(st,104)  ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; fpAddPrintProcessor : INT_PTR (+112, 8byte)  qpoke st,112,値 / qpeek(st,112)  ※IronHSPのみ。3.7/3.8は lpoke st,112,下位 : lpoke st,116,上位
; fpEnumPrintProcessors : INT_PTR (+120, 8byte)  qpoke st,120,値 / qpeek(st,120)  ※IronHSPのみ。3.7/3.8は lpoke st,120,下位 : lpoke st,124,上位
; fpGetPrintProcessorDirectory : INT_PTR (+128, 8byte)  qpoke st,128,値 / qpeek(st,128)  ※IronHSPのみ。3.7/3.8は lpoke st,128,下位 : lpoke st,132,上位
; fpDeletePrintProcessor : INT_PTR (+136, 8byte)  qpoke st,136,値 / qpeek(st,136)  ※IronHSPのみ。3.7/3.8は lpoke st,136,下位 : lpoke st,140,上位
; fpEnumPrintProcessorDatatypes : INT_PTR (+144, 8byte)  qpoke st,144,値 / qpeek(st,144)  ※IronHSPのみ。3.7/3.8は lpoke st,144,下位 : lpoke st,148,上位
; fpStartDocPrinter : INT_PTR (+152, 8byte)  qpoke st,152,値 / qpeek(st,152)  ※IronHSPのみ。3.7/3.8は lpoke st,152,下位 : lpoke st,156,上位
; fpStartPagePrinter : INT_PTR (+160, 8byte)  qpoke st,160,値 / qpeek(st,160)  ※IronHSPのみ。3.7/3.8は lpoke st,160,下位 : lpoke st,164,上位
; fpWritePrinter : INT_PTR (+168, 8byte)  qpoke st,168,値 / qpeek(st,168)  ※IronHSPのみ。3.7/3.8は lpoke st,168,下位 : lpoke st,172,上位
; fpEndPagePrinter : INT_PTR (+176, 8byte)  qpoke st,176,値 / qpeek(st,176)  ※IronHSPのみ。3.7/3.8は lpoke st,176,下位 : lpoke st,180,上位
; fpAbortPrinter : INT_PTR (+184, 8byte)  qpoke st,184,値 / qpeek(st,184)  ※IronHSPのみ。3.7/3.8は lpoke st,184,下位 : lpoke st,188,上位
; fpReadPrinter : INT_PTR (+192, 8byte)  qpoke st,192,値 / qpeek(st,192)  ※IronHSPのみ。3.7/3.8は lpoke st,192,下位 : lpoke st,196,上位
; fpEndDocPrinter : INT_PTR (+200, 8byte)  qpoke st,200,値 / qpeek(st,200)  ※IronHSPのみ。3.7/3.8は lpoke st,200,下位 : lpoke st,204,上位
; fpAddJob : INT_PTR (+208, 8byte)  qpoke st,208,値 / qpeek(st,208)  ※IronHSPのみ。3.7/3.8は lpoke st,208,下位 : lpoke st,212,上位
; fpScheduleJob : INT_PTR (+216, 8byte)  qpoke st,216,値 / qpeek(st,216)  ※IronHSPのみ。3.7/3.8は lpoke st,216,下位 : lpoke st,220,上位
; fpGetPrinterData : INT_PTR (+224, 8byte)  qpoke st,224,値 / qpeek(st,224)  ※IronHSPのみ。3.7/3.8は lpoke st,224,下位 : lpoke st,228,上位
; fpSetPrinterData : INT_PTR (+232, 8byte)  qpoke st,232,値 / qpeek(st,232)  ※IronHSPのみ。3.7/3.8は lpoke st,232,下位 : lpoke st,236,上位
; fpWaitForPrinterChange : INT_PTR (+240, 8byte)  qpoke st,240,値 / qpeek(st,240)  ※IronHSPのみ。3.7/3.8は lpoke st,240,下位 : lpoke st,244,上位
; fpClosePrinter : INT_PTR (+248, 8byte)  qpoke st,248,値 / qpeek(st,248)  ※IronHSPのみ。3.7/3.8は lpoke st,248,下位 : lpoke st,252,上位
; fpAddForm : INT_PTR (+256, 8byte)  qpoke st,256,値 / qpeek(st,256)  ※IronHSPのみ。3.7/3.8は lpoke st,256,下位 : lpoke st,260,上位
; fpDeleteForm : INT_PTR (+264, 8byte)  qpoke st,264,値 / qpeek(st,264)  ※IronHSPのみ。3.7/3.8は lpoke st,264,下位 : lpoke st,268,上位
; fpGetForm : INT_PTR (+272, 8byte)  qpoke st,272,値 / qpeek(st,272)  ※IronHSPのみ。3.7/3.8は lpoke st,272,下位 : lpoke st,276,上位
; fpSetForm : INT_PTR (+280, 8byte)  qpoke st,280,値 / qpeek(st,280)  ※IronHSPのみ。3.7/3.8は lpoke st,280,下位 : lpoke st,284,上位
; fpEnumForms : INT_PTR (+288, 8byte)  qpoke st,288,値 / qpeek(st,288)  ※IronHSPのみ。3.7/3.8は lpoke st,288,下位 : lpoke st,292,上位
; fpEnumMonitors : INT_PTR (+296, 8byte)  qpoke st,296,値 / qpeek(st,296)  ※IronHSPのみ。3.7/3.8は lpoke st,296,下位 : lpoke st,300,上位
; fpEnumPorts : INT_PTR (+304, 8byte)  qpoke st,304,値 / qpeek(st,304)  ※IronHSPのみ。3.7/3.8は lpoke st,304,下位 : lpoke st,308,上位
; fpAddPort : INT_PTR (+312, 8byte)  qpoke st,312,値 / qpeek(st,312)  ※IronHSPのみ。3.7/3.8は lpoke st,312,下位 : lpoke st,316,上位
; fpConfigurePort : INT_PTR (+320, 8byte)  qpoke st,320,値 / qpeek(st,320)  ※IronHSPのみ。3.7/3.8は lpoke st,320,下位 : lpoke st,324,上位
; fpDeletePort : INT_PTR (+328, 8byte)  qpoke st,328,値 / qpeek(st,328)  ※IronHSPのみ。3.7/3.8は lpoke st,328,下位 : lpoke st,332,上位
; fpCreatePrinterIC : INT_PTR (+336, 8byte)  qpoke st,336,値 / qpeek(st,336)  ※IronHSPのみ。3.7/3.8は lpoke st,336,下位 : lpoke st,340,上位
; fpPlayGdiScriptOnPrinterIC : INT_PTR (+344, 8byte)  qpoke st,344,値 / qpeek(st,344)  ※IronHSPのみ。3.7/3.8は lpoke st,344,下位 : lpoke st,348,上位
; fpDeletePrinterIC : INT_PTR (+352, 8byte)  qpoke st,352,値 / qpeek(st,352)  ※IronHSPのみ。3.7/3.8は lpoke st,352,下位 : lpoke st,356,上位
; fpAddPrinterConnection : INT_PTR (+360, 8byte)  qpoke st,360,値 / qpeek(st,360)  ※IronHSPのみ。3.7/3.8は lpoke st,360,下位 : lpoke st,364,上位
; fpDeletePrinterConnection : INT_PTR (+368, 8byte)  qpoke st,368,値 / qpeek(st,368)  ※IronHSPのみ。3.7/3.8は lpoke st,368,下位 : lpoke st,372,上位
; fpPrinterMessageBox : INT_PTR (+376, 8byte)  qpoke st,376,値 / qpeek(st,376)  ※IronHSPのみ。3.7/3.8は lpoke st,376,下位 : lpoke st,380,上位
; fpAddMonitor : INT_PTR (+384, 8byte)  qpoke st,384,値 / qpeek(st,384)  ※IronHSPのみ。3.7/3.8は lpoke st,384,下位 : lpoke st,388,上位
; fpDeleteMonitor : INT_PTR (+392, 8byte)  qpoke st,392,値 / qpeek(st,392)  ※IronHSPのみ。3.7/3.8は lpoke st,392,下位 : lpoke st,396,上位
; fpResetPrinter : INT_PTR (+400, 8byte)  qpoke st,400,値 / qpeek(st,400)  ※IronHSPのみ。3.7/3.8は lpoke st,400,下位 : lpoke st,404,上位
; fpGetPrinterDriverEx : INT_PTR (+408, 8byte)  qpoke st,408,値 / qpeek(st,408)  ※IronHSPのみ。3.7/3.8は lpoke st,408,下位 : lpoke st,412,上位
; fpFindFirstPrinterChangeNotification : INT_PTR (+416, 8byte)  qpoke st,416,値 / qpeek(st,416)  ※IronHSPのみ。3.7/3.8は lpoke st,416,下位 : lpoke st,420,上位
; fpFindClosePrinterChangeNotification : INT_PTR (+424, 8byte)  qpoke st,424,値 / qpeek(st,424)  ※IronHSPのみ。3.7/3.8は lpoke st,424,下位 : lpoke st,428,上位
; fpAddPortEx : INT_PTR (+432, 8byte)  qpoke st,432,値 / qpeek(st,432)  ※IronHSPのみ。3.7/3.8は lpoke st,432,下位 : lpoke st,436,上位
; fpShutDown : INT_PTR (+440, 8byte)  qpoke st,440,値 / qpeek(st,440)  ※IronHSPのみ。3.7/3.8は lpoke st,440,下位 : lpoke st,444,上位
; fpRefreshPrinterChangeNotification : INT_PTR (+448, 8byte)  qpoke st,448,値 / qpeek(st,448)  ※IronHSPのみ。3.7/3.8は lpoke st,448,下位 : lpoke st,452,上位
; fpOpenPrinterEx : INT_PTR (+456, 8byte)  qpoke st,456,値 / qpeek(st,456)  ※IronHSPのみ。3.7/3.8は lpoke st,456,下位 : lpoke st,460,上位
; fpAddPrinterEx : INT_PTR (+464, 8byte)  qpoke st,464,値 / qpeek(st,464)  ※IronHSPのみ。3.7/3.8は lpoke st,464,下位 : lpoke st,468,上位
; fpSetPort : INT_PTR (+472, 8byte)  qpoke st,472,値 / qpeek(st,472)  ※IronHSPのみ。3.7/3.8は lpoke st,472,下位 : lpoke st,476,上位
; fpEnumPrinterData : INT_PTR (+480, 8byte)  qpoke st,480,値 / qpeek(st,480)  ※IronHSPのみ。3.7/3.8は lpoke st,480,下位 : lpoke st,484,上位
; fpDeletePrinterData : INT_PTR (+488, 8byte)  qpoke st,488,値 / qpeek(st,488)  ※IronHSPのみ。3.7/3.8は lpoke st,488,下位 : lpoke st,492,上位
; fpClusterSplOpen : INT_PTR (+496, 8byte)  qpoke st,496,値 / qpeek(st,496)  ※IronHSPのみ。3.7/3.8は lpoke st,496,下位 : lpoke st,500,上位
; fpClusterSplClose : INT_PTR (+504, 8byte)  qpoke st,504,値 / qpeek(st,504)  ※IronHSPのみ。3.7/3.8は lpoke st,504,下位 : lpoke st,508,上位
; fpClusterSplIsAlive : INT_PTR (+512, 8byte)  qpoke st,512,値 / qpeek(st,512)  ※IronHSPのみ。3.7/3.8は lpoke st,512,下位 : lpoke st,516,上位
; fpSetPrinterDataEx : INT_PTR (+520, 8byte)  qpoke st,520,値 / qpeek(st,520)  ※IronHSPのみ。3.7/3.8は lpoke st,520,下位 : lpoke st,524,上位
; fpGetPrinterDataEx : INT_PTR (+528, 8byte)  qpoke st,528,値 / qpeek(st,528)  ※IronHSPのみ。3.7/3.8は lpoke st,528,下位 : lpoke st,532,上位
; fpEnumPrinterDataEx : INT_PTR (+536, 8byte)  qpoke st,536,値 / qpeek(st,536)  ※IronHSPのみ。3.7/3.8は lpoke st,536,下位 : lpoke st,540,上位
; fpEnumPrinterKey : INT_PTR (+544, 8byte)  qpoke st,544,値 / qpeek(st,544)  ※IronHSPのみ。3.7/3.8は lpoke st,544,下位 : lpoke st,548,上位
; fpDeletePrinterDataEx : INT_PTR (+552, 8byte)  qpoke st,552,値 / qpeek(st,552)  ※IronHSPのみ。3.7/3.8は lpoke st,552,下位 : lpoke st,556,上位
; fpDeletePrinterKey : INT_PTR (+560, 8byte)  qpoke st,560,値 / qpeek(st,560)  ※IronHSPのみ。3.7/3.8は lpoke st,560,下位 : lpoke st,564,上位
; fpSeekPrinter : INT_PTR (+568, 8byte)  qpoke st,568,値 / qpeek(st,568)  ※IronHSPのみ。3.7/3.8は lpoke st,568,下位 : lpoke st,572,上位
; fpDeletePrinterDriverEx : INT_PTR (+576, 8byte)  qpoke st,576,値 / qpeek(st,576)  ※IronHSPのみ。3.7/3.8は lpoke st,576,下位 : lpoke st,580,上位
; fpAddPerMachineConnection : INT_PTR (+584, 8byte)  qpoke st,584,値 / qpeek(st,584)  ※IronHSPのみ。3.7/3.8は lpoke st,584,下位 : lpoke st,588,上位
; fpDeletePerMachineConnection : INT_PTR (+592, 8byte)  qpoke st,592,値 / qpeek(st,592)  ※IronHSPのみ。3.7/3.8は lpoke st,592,下位 : lpoke st,596,上位
; fpEnumPerMachineConnections : INT_PTR (+600, 8byte)  qpoke st,600,値 / qpeek(st,600)  ※IronHSPのみ。3.7/3.8は lpoke st,600,下位 : lpoke st,604,上位
; fpXcvData : INT_PTR (+608, 8byte)  qpoke st,608,値 / qpeek(st,608)  ※IronHSPのみ。3.7/3.8は lpoke st,608,下位 : lpoke st,612,上位
; fpAddPrinterDriverEx : INT_PTR (+616, 8byte)  qpoke st,616,値 / qpeek(st,616)  ※IronHSPのみ。3.7/3.8は lpoke st,616,下位 : lpoke st,620,上位
; fpSplReadPrinter : INT_PTR (+624, 8byte)  qpoke st,624,値 / qpeek(st,624)  ※IronHSPのみ。3.7/3.8は lpoke st,624,下位 : lpoke st,628,上位
; fpDriverUnloadComplete : INT_PTR (+632, 8byte)  qpoke st,632,値 / qpeek(st,632)  ※IronHSPのみ。3.7/3.8は lpoke st,632,下位 : lpoke st,636,上位
; fpGetSpoolFileInfo : INT_PTR (+640, 8byte)  qpoke st,640,値 / qpeek(st,640)  ※IronHSPのみ。3.7/3.8は lpoke st,640,下位 : lpoke st,644,上位
; fpCommitSpoolData : INT_PTR (+648, 8byte)  qpoke st,648,値 / qpeek(st,648)  ※IronHSPのみ。3.7/3.8は lpoke st,648,下位 : lpoke st,652,上位
; fpCloseSpoolFileHandle : INT_PTR (+656, 8byte)  qpoke st,656,値 / qpeek(st,656)  ※IronHSPのみ。3.7/3.8は lpoke st,656,下位 : lpoke st,660,上位
; fpFlushPrinter : INT_PTR (+664, 8byte)  qpoke st,664,値 / qpeek(st,664)  ※IronHSPのみ。3.7/3.8は lpoke st,664,下位 : lpoke st,668,上位
; fpSendRecvBidiData : INT_PTR (+672, 8byte)  qpoke st,672,値 / qpeek(st,672)  ※IronHSPのみ。3.7/3.8は lpoke st,672,下位 : lpoke st,676,上位
; fpAddPrinterConnection2 : INT_PTR (+680, 8byte)  qpoke st,680,値 / qpeek(st,680)  ※IronHSPのみ。3.7/3.8は lpoke st,680,下位 : lpoke st,684,上位
; fpGetPrintClassObject : INT_PTR (+688, 8byte)  qpoke st,688,値 / qpeek(st,688)  ※IronHSPのみ。3.7/3.8は lpoke st,688,下位 : lpoke st,692,上位
; fpReportJobProcessingProgress : INT_PTR (+696, 8byte)  qpoke st,696,値 / qpeek(st,696)  ※IronHSPのみ。3.7/3.8は lpoke st,696,下位 : lpoke st,700,上位
; fpEnumAndLogProvidorObjects : INT_PTR (+704, 8byte)  qpoke st,704,値 / qpeek(st,704)  ※IronHSPのみ。3.7/3.8は lpoke st,704,下位 : lpoke st,708,上位
; fpInternalGetPrinterDriver : INT_PTR (+712, 8byte)  qpoke st,712,値 / qpeek(st,712)  ※IronHSPのみ。3.7/3.8は lpoke st,712,下位 : lpoke st,716,上位
; fpFindCompatibleDriver : INT_PTR (+720, 8byte)  qpoke st,720,値 / qpeek(st,720)  ※IronHSPのみ。3.7/3.8は lpoke st,720,下位 : lpoke st,724,上位
; fpInstallPrinterDriverPackageFromConnection : INT_PTR (+728, 8byte)  qpoke st,728,値 / qpeek(st,728)  ※IronHSPのみ。3.7/3.8は lpoke st,728,下位 : lpoke st,732,上位
; fpGetJobNamedPropertyValue : INT_PTR (+736, 8byte)  qpoke st,736,値 / qpeek(st,736)  ※IronHSPのみ。3.7/3.8は lpoke st,736,下位 : lpoke st,740,上位
; fpSetJobNamedProperty : INT_PTR (+744, 8byte)  qpoke st,744,値 / qpeek(st,744)  ※IronHSPのみ。3.7/3.8は lpoke st,744,下位 : lpoke st,748,上位
; fpDeleteJobNamedProperty : INT_PTR (+752, 8byte)  qpoke st,752,値 / qpeek(st,752)  ※IronHSPのみ。3.7/3.8は lpoke st,752,下位 : lpoke st,756,上位
; fpEnumJobNamedProperties : INT_PTR (+760, 8byte)  qpoke st,760,値 / qpeek(st,760)  ※IronHSPのみ。3.7/3.8は lpoke st,760,下位 : lpoke st,764,上位
; fpPowerEvent : INT_PTR (+768, 8byte)  qpoke st,768,値 / qpeek(st,768)  ※IronHSPのみ。3.7/3.8は lpoke st,768,下位 : lpoke st,772,上位
; fpGetUserPropertyBag : INT_PTR (+776, 8byte)  qpoke st,776,値 / qpeek(st,776)  ※IronHSPのみ。3.7/3.8は lpoke st,776,下位 : lpoke st,780,上位
; fpCanShutdown : INT_PTR (+784, 8byte)  qpoke st,784,値 / qpeek(st,784)  ※IronHSPのみ。3.7/3.8は lpoke st,784,下位 : lpoke st,788,上位
; fpLogJobInfoForBranchOffice : INT_PTR (+792, 8byte)  qpoke st,792,値 / qpeek(st,792)  ※IronHSPのみ。3.7/3.8は lpoke st,792,下位 : lpoke st,796,上位
; fpRegeneratePrintDeviceCapabilities : INT_PTR (+800, 8byte)  qpoke st,800,値 / qpeek(st,800)  ※IronHSPのみ。3.7/3.8は lpoke st,800,下位 : lpoke st,804,上位
; fpPrintSupportOperation : INT_PTR (+808, 8byte)  qpoke st,808,値 / qpeek(st,808)  ※IronHSPのみ。3.7/3.8は lpoke st,808,下位 : lpoke st,812,上位
; fpIppCreateJobOnPrinter : INT_PTR (+816, 8byte)  qpoke st,816,値 / qpeek(st,816)  ※IronHSPのみ。3.7/3.8は lpoke st,816,下位 : lpoke st,820,上位
; fpIppGetJobAttributes : INT_PTR (+824, 8byte)  qpoke st,824,値 / qpeek(st,824)  ※IronHSPのみ。3.7/3.8は lpoke st,824,下位 : lpoke st,828,上位
; fpIppSetJobAttributes : INT_PTR (+832, 8byte)  qpoke st,832,値 / qpeek(st,832)  ※IronHSPのみ。3.7/3.8は lpoke st,832,下位 : lpoke st,836,上位
; fpIppGetPrinterAttributes : INT_PTR (+840, 8byte)  qpoke st,840,値 / qpeek(st,840)  ※IronHSPのみ。3.7/3.8は lpoke st,840,下位 : lpoke st,844,上位
; fpIppSetPrinterAttributes : INT_PTR (+848, 8byte)  qpoke st,848,値 / qpeek(st,848)  ※IronHSPのみ。3.7/3.8は lpoke st,848,下位 : lpoke st,852,上位
; fpIppCreateJobOnPrinterWithAttributes : INT_PTR (+856, 8byte)  qpoke st,856,値 / qpeek(st,856)  ※IronHSPのみ。3.7/3.8は lpoke st,856,下位 : lpoke st,860,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global PRINTPROVIDOR
    #field intptr fpOpenPrinter
    #field intptr fpSetJob
    #field intptr fpGetJob
    #field intptr fpEnumJobs
    #field intptr fpAddPrinter
    #field intptr fpDeletePrinter
    #field intptr fpSetPrinter
    #field intptr fpGetPrinter
    #field intptr fpEnumPrinters
    #field intptr fpAddPrinterDriver
    #field intptr fpEnumPrinterDrivers
    #field intptr fpGetPrinterDriver
    #field intptr fpGetPrinterDriverDirectory
    #field intptr fpDeletePrinterDriver
    #field intptr fpAddPrintProcessor
    #field intptr fpEnumPrintProcessors
    #field intptr fpGetPrintProcessorDirectory
    #field intptr fpDeletePrintProcessor
    #field intptr fpEnumPrintProcessorDatatypes
    #field intptr fpStartDocPrinter
    #field intptr fpStartPagePrinter
    #field intptr fpWritePrinter
    #field intptr fpEndPagePrinter
    #field intptr fpAbortPrinter
    #field intptr fpReadPrinter
    #field intptr fpEndDocPrinter
    #field intptr fpAddJob
    #field intptr fpScheduleJob
    #field intptr fpGetPrinterData
    #field intptr fpSetPrinterData
    #field intptr fpWaitForPrinterChange
    #field intptr fpClosePrinter
    #field intptr fpAddForm
    #field intptr fpDeleteForm
    #field intptr fpGetForm
    #field intptr fpSetForm
    #field intptr fpEnumForms
    #field intptr fpEnumMonitors
    #field intptr fpEnumPorts
    #field intptr fpAddPort
    #field intptr fpConfigurePort
    #field intptr fpDeletePort
    #field intptr fpCreatePrinterIC
    #field intptr fpPlayGdiScriptOnPrinterIC
    #field intptr fpDeletePrinterIC
    #field intptr fpAddPrinterConnection
    #field intptr fpDeletePrinterConnection
    #field intptr fpPrinterMessageBox
    #field intptr fpAddMonitor
    #field intptr fpDeleteMonitor
    #field intptr fpResetPrinter
    #field intptr fpGetPrinterDriverEx
    #field intptr fpFindFirstPrinterChangeNotification
    #field intptr fpFindClosePrinterChangeNotification
    #field intptr fpAddPortEx
    #field intptr fpShutDown
    #field intptr fpRefreshPrinterChangeNotification
    #field intptr fpOpenPrinterEx
    #field intptr fpAddPrinterEx
    #field intptr fpSetPort
    #field intptr fpEnumPrinterData
    #field intptr fpDeletePrinterData
    #field intptr fpClusterSplOpen
    #field intptr fpClusterSplClose
    #field intptr fpClusterSplIsAlive
    #field intptr fpSetPrinterDataEx
    #field intptr fpGetPrinterDataEx
    #field intptr fpEnumPrinterDataEx
    #field intptr fpEnumPrinterKey
    #field intptr fpDeletePrinterDataEx
    #field intptr fpDeletePrinterKey
    #field intptr fpSeekPrinter
    #field intptr fpDeletePrinterDriverEx
    #field intptr fpAddPerMachineConnection
    #field intptr fpDeletePerMachineConnection
    #field intptr fpEnumPerMachineConnections
    #field intptr fpXcvData
    #field intptr fpAddPrinterDriverEx
    #field intptr fpSplReadPrinter
    #field intptr fpDriverUnloadComplete
    #field intptr fpGetSpoolFileInfo
    #field intptr fpCommitSpoolData
    #field intptr fpCloseSpoolFileHandle
    #field intptr fpFlushPrinter
    #field intptr fpSendRecvBidiData
    #field intptr fpAddPrinterConnection2
    #field intptr fpGetPrintClassObject
    #field intptr fpReportJobProcessingProgress
    #field intptr fpEnumAndLogProvidorObjects
    #field intptr fpInternalGetPrinterDriver
    #field intptr fpFindCompatibleDriver
    #field intptr fpInstallPrinterDriverPackageFromConnection
    #field intptr fpGetJobNamedPropertyValue
    #field intptr fpSetJobNamedProperty
    #field intptr fpDeleteJobNamedProperty
    #field intptr fpEnumJobNamedProperties
    #field intptr fpPowerEvent
    #field intptr fpGetUserPropertyBag
    #field intptr fpCanShutdown
    #field intptr fpLogJobInfoForBranchOffice
    #field intptr fpRegeneratePrintDeviceCapabilities
    #field intptr fpPrintSupportOperation
    #field intptr fpIppCreateJobOnPrinter
    #field intptr fpIppGetJobAttributes
    #field intptr fpIppSetJobAttributes
    #field intptr fpIppGetPrinterAttributes
    #field intptr fpIppSetPrinterAttributes
    #field intptr fpIppCreateJobOnPrinterWithAttributes
#endstruct

stdim st, PRINTPROVIDOR        ; NSTRUCT 変数を確保
st->fpOpenPrinter = 100
mes "fpOpenPrinter=" + st->fpOpenPrinter