Search
Module:
Directory

   Desktop Functions:

   Smart Device Functions:


Show Recent Changes
Subscribe (RSS)
Misc. Pages
Comments
FAQ
Helpful Tools
Playground
Suggested Reading
Website TODO List
Download Visual Studio Add-In

DeviceCapabilities (Enums)
 
.
Summary

C# Definition:

using System.ComponentModel;

using System.Collections;

using System.Runtime.InteropServices;

[DllImport("winspool.drv", SetLastError=true)]

static extern Int32 DeviceCapabilities( string device,

    string port,
    DeviceCapabilitiesFlags capability,
    IntPtr outputBuffer,
    IntPtr deviceMode);

public static bool GetProperties(string strDeviceName, string strPort, out bool bDuplex, out bool bColor, out string strError)

{

    strError = "";
    bDuplex = false;
    bColor = false;

    // Duplex
    int nRes = DeviceCapabilities(strDeviceName, strPort, DeviceCapabilitiesFlags.DC_DUPLEX, IntPtr.Zero, (IntPtr)null);
    if(nRes < 0)
    {
        strError = new Win32Exception(Marshal.GetLastWin32Error()).Message + "["+ strDeviceName +": "+ strPort +"]";
        return false;
    }
    bDuplex = nRes == 1;

    // Color
    nRes = DeviceCapabilities(strDeviceName, strPort, DeviceCapabilitiesFlags.DC_COLORDEVICE,    IntPtr.Zero, (IntPtr)null);
    if(nRes < 0)
    {
        strError = new Win32Exception(Marshal.GetLastWin32Error()).Message + "["+ strDeviceName +": "+ strPort +"]";
        return false;
    }
    bColor = nRes == 1;

    return true;

}

public static bool GetBins(string strDeviceName, string strPort, out ArrayList BinNr, out ArrayList BinName, out string strError)

{

    strError = "";
    BinNr = new ArrayList();
    BinName = new ArrayList();

    // Bins
    int nRes = DeviceCapabilities(strDeviceName, strPort, DeviceCapabilitiesFlags.DC_BINS, (IntPtr)null, (IntPtr)null);
    IntPtr pAddr = Marshal.AllocHGlobal((int)nRes * 2);
    nRes = DeviceCapabilities(strDeviceName, strPort, DeviceCapabilitiesFlags.DC_BINS, pAddr, (IntPtr)null);
    if(nRes < 0)
    {
        strError = new Win32Exception(Marshal.GetLastWin32Error()).Message + "["+ strDeviceName +": "+ strPort +"]";
        return false;
    }
    short[] bins = new short[nRes];
    int offset = pAddr.ToInt32();
    for (int i = 0; i < nRes; i++)
    {
        BinNr.Add((short) Marshal.ReadIntPtr(new IntPtr(offset + i * 2)));
    }
    Marshal.FreeHGlobal(pAddr);

    // BinNames
    nRes = DeviceCapabilities(strDeviceName, strPort, DeviceCapabilitiesFlags.DC_BINNAMES, (IntPtr)null, (IntPtr)null);
    pAddr = Marshal.AllocHGlobal((int)nRes * 24);
    nRes = DeviceCapabilities(strDeviceName, strPort, DeviceCapabilitiesFlags.DC_BINNAMES, pAddr, (IntPtr)null);
    if(nRes < 0)
    {
        strError = new Win32Exception(Marshal.GetLastWin32Error()).Message + "["+ strDeviceName +": "+ strPort +"]";
        return false;
    }

    offset = pAddr.ToInt32();
    for(int i = 0; i < nRes; i++)
    {
        BinName.Add(Marshal.PtrToStringAnsi(new IntPtr(offset + i * 24)));
    }
    Marshal.FreeHGlobal(pAddr);

    return true;

}

/* device capabilities indices */

FlagsAttribute

public enum DeviceCapabilitiesFlags : short

{

    DC_FIELDS = 1,
    DC_PAPERS = 2,
    DC_PAPERSIZE = 3,
    DC_MINEXTENT = 4,
    DC_MAXEXTENT = 5,
    DC_BINS = 6,
    DC_DUPLEX = 7,
    DC_SIZE = 8,
    DC_EXTRA = 9,
    DC_VERSION = 10,
    DC_DRIVER = 11,
    DC_BINNAMES = 12,
    DC_ENUMRESOLUTIONS = 13,
    DC_FILEDEPENDENCIES = 14,
    DC_TRUETYPE = 15,
    DC_PAPERNAMES = 16,
    DC_ORIENTATION = 17,
    DC_COPIES = 18,
    DC_BINADJUST = 19,
    DC_EMF_COMPLIANT = 20,
    DC_DATATYPE_PRODUCED = 21,
    DC_COLLATE = 22,
    DC_MANUFACTURER = 23,
    DC_MODEL = 24,
    DC_PERSONALITY = 25,
    DC_PRINTRATE = 26,
    DC_PRINTRATEUNIT = 27,
    DC_PRINTERMEM = 28,
    DC_MEDIAREADY = 29,
    DC_STAPLE = 30,
    DC_PRINTRATEPPM = 31,
    DC_COLORDEVICE = 32,
    DC_NUP = 33

}

VB Definition:

    Public Enum DeviceCapabilities
    Fields = 1
    Papers = 2
    PaperSize = 3
    MinExtent = 4
    MaxExtent = 5
    Bins = 6
    Duplex = 7
    Size = 8
    Extra = 9
    Version = 10
    Driver = 11
    BinNames = 12
    EnumResolutions = 13
    FileDependencies = 14
    TrueType = 15
    PaperNames = 16
    Orientation = 17
    Copies = 18
    BinAdjust = 19
    EmfCompliant = 20
    DataTypeProduced = 21
    Collate = 22
    Nanufacturer = 23
    Nodel = 24
    Personality = 25
    PrintRate = 26
    PrintRateUnit = 27
    PrinterMemory = 28
    MediaReady = 29
    Staple = 30
    PrintRatePpm = 31
    ColorDevice = 32
    Nup = 33
    End Enum

Notes:

None.

Documentation
 

Please edit this page!

Do you have...

  • helpful tips?
  • corrections to the existing content?
  • additional languages you want to include?

Select "Edit This Page" on the right hand toolbar and edit it!

 
Access PInvoke.net directly from VS:
Terms of Use
Find References
Show Printable Version
Revisions