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( Marshal.ReadInt16(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 EnumDeviceCapabilities
        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