CTL_CODE (Compact 2013)

10/16/2014

This macro creates a unique system I/O control.

Syntax

#define CTL_CODE(      DeviceType, Function, Method, Access) (
  ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method))

Parameters

  • DeviceType
    Defines the type of device for the given IOCTL.

    This parameter can be no bigger than a WORD value.

    The values used by Microsoft are in the range 0-32767; the values 32768-65535 are reserved for use by OEMs and IHVs.

    The following device types are defined by the system:

    • FILE_DEVICE_BEEP
    • FILE_DEVICE_CD_ROM
    • FILE_DEVICE_CD_ROM_FILE_SYSTEM
    • FILE_DEVICE_CONTROLLER
    • FILE_DEVICE_DATALINK
    • FILE_DEVICE_DFS
    • FILE_DEVICE_DISK
    • FILE_DEVICE_DISK_FILE_SYSTEM
    • FILE_DEVICE_FILE_SYSTEM
    • FILE_DEVICE_INPORT_PORT
    • FILE_DEVICE_KEYBOARD
    • FILE_DEVICE_MAILSLOT
    • FILE_DEVICE_MIDI_IN
    • FILE_DEVICE_MIDI_OUT
    • FILE_DEVICE_MOUSE
    • FILE_DEVICE_MULTI_UNC_PROVIDER
    • FILE_DEVICE_NAMED_PIPE
    • FILE_DEVICE_NETWORK
    • FILE_DEVICE_NETWORK_BROWSER
    • FILE_DEVICE_NETWORK_FILE_SYSTEM
    • FILE_DEVICE_NULL
    • FILE_DEVICE_PARALLEL_PORT
    • FILE_DEVICE_PHYSICAL_NETCARD
    • FILE_DEVICE_PRINTER
    • FILE_DEVICE_SCANNER
    • FILE_DEVICE_SERIAL_MOUSE_PORT
    • FILE_DEVICE_SERIAL_PORT
    • FILE_DEVICE_SCREEN
    • FILE_DEVICE_SOUND
    • FILE_DEVICE_DEVICE_STREAMS
    • FILE_DEVICE_TAPE
    • FILE_DEVICE_TAPE_FILE_SYSTEM
    • FILE_DEVICE_TRANSPORT
    • FILE_DEVICE_UNKNOWN
    • FILE_DEVICE_VIDEO
    • FILE_DEVICE_VIRTUAL_DISK
    • FILE_DEVICE_WAVE_IN
    • FILE_DEVICE_WAVE_OUT
    • FILE_DEVICE_8042_PORT
    • FILE_DEVICE_NETWORK_REDIRECTOR
    • FILE_DEVICE_BATTERY
    • FILE_DEVICE_BUS_EXTENDER
    • FILE_DEVICE_MODEM
    • FILE_DEVICE_VDM
    • FILE_DEVICE_MASS_STORAGE
    • FILE_DEVICE_SMB
    • FILE_DEVICE_KS
    • FILE_DEVICE_CHANGER
    • FILE_DEVICE_SMARTCARD
    • FILE_DEVICE_ACPI
    • FILE_DEVICE_DVD
    • FILE_DEVICE_FULLSCREEN_VIDEO
    • FILE_DEVICE_DFS_FILE_SYSTEM
    • FILE_DEVICE_DFS_VOLUME
    • FILE_DEVICE_LIGHT

    The following device types are specific to Windows Embedded Compact:

    • FILE_DEVICE_HAL
    • FILE_DEVICE_CONSOLE
    • FILE_DEVICE_PSL
    • FILE_DEVICE_SERVICE
  • Function
    Defines an action within the device category.

    Function codes 0-2047 are reserved; codes 2048-4095 are reserved for OEMs and IHVs.

    A function code can be no larger then 4095.

  • Method
    Defines the method codes for how buffers are passed for I/O and file system controls.

    The following values are possible for this parameter:

    • METHOD_BUFFERED
    • METHOD_IN_DIRECT
    • METHOD_OUT_DIRECT
    • METHOD_NEITHER

    This field is ignored by Windows Embedded Compact. You should always use the METHOD_BUFFERED value unless compatibility with Windows-based desktop platforms is required using a different Method value.

  • Access
    Defines the access check value for any access.

    The following table shows the possible flags for this parameter. The FILE_ANY_ACCESS is generally the correct value.

    Flag

    Description

    FILE_ANY_ACCESS

    Request all access.

    FILE_READ_ACCESS

    Request read access. Can be used with FILE_WRITE_ACCESS.

    FILE_WRITE_ACCESS

    Request write access. Can be used with FILE_READ_ACCESS.

Return Value

None.

Remarks

The macro can be used for defining I/O control and files system controls. All I/O controls must be defined this way to ensure that values used by Microsoft, OEMs, and IHVs do not overlap.

The following illustration shows the format of the resulting I/O control.

Ee478525.300a9979-620d-4ab2-9094-03e3fdfa9dcb(en-us,WinEmbedded.80).gif

Requirements

Header

windev.h

See Also

Reference

OAL Macros