CTL_CODE

Other versions of this page are also available for the following:

Windows Mobile Not SupportedWindows Embedded CE Supported

8/27/2008

This macro creates a unique system I/O control code (IOCTL).

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

    The following device types are specific to Windows Embedded CE:

    • 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 for Microsoft; 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 CE. 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 IOCTL and FSCTL function control codes. All IOCTLs 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 IOCTL.

Aa914767.300a9979-620d-4ab2-9094-03e3fdfa9dcb(en-US,WinEmbedded.60).gif

Requirements

Header windev.h
Windows Embedded CE Windows CE .NET 4.0 and later

See Also

Other Resources

DeviceIoControl