Windows 32 bit long

SetWindowLongA function (winuser.h)

Changes an attribute of the specified window. The function also sets the 32-bit (long) value at the specified offset into the extra window memory.

Syntax

Parameters

A handle to the window and, indirectly, the class to which the window belongs.

The zero-based offset to the value to be set. Valid values are in the range zero through the number of bytes of extra window memory, minus the size of an integer. To set any other value, specify one of the following values.

Value Meaning
GWL_EXSTYLE -20 Sets a new extended window style.
GWL_HINSTANCE -6 Sets a new application instance handle.
GWL_ID -12 Sets a new identifier of the child window. The window cannot be a top-level window.
GWL_STYLE -16 Sets a new window style.
GWL_USERDATA -21 Sets the user data associated with the window. This data is intended for use by the application that created the window. Its value is initially zero.
GWL_WNDPROC -4 Sets a new address for the window procedure.

You cannot change this attribute if the window does not belong to the same process as the calling thread.

The following values are also available when the hWnd parameter identifies a dialog box.

Value Meaning
DWL_DLGPROC DWLP_MSGRESULT + sizeof(LRESULT) Sets the new address of the dialog box procedure.
DWL_MSGRESULT 0 Sets the return value of a message processed in the dialog box procedure.
DWL_USER DWLP_DLGPROC + sizeof(DLGPROC) Sets new extra information that is private to the application, such as handles or pointers.

The replacement value.

Return value

If the function succeeds, the return value is the previous value of the specified 32-bit integer.

If the function fails, the return value is zero. To get extended error information, call GetLastError.

If the previous value of the specified 32-bit integer is zero, and the function succeeds, the return value is zero, but the function does not clear the last error information. This makes it difficult to determine success or failure. To deal with this, you should clear the last error information by calling SetLastError with 0 before calling SetWindowLong. Then, function failure will be indicated by a return value of zero and a GetLastError result that is nonzero.

Remarks

Certain window data is cached, so changes you make using SetWindowLong will not take effect until you call the SetWindowPos function. Specifically, if you change any of the frame styles, you must call SetWindowPos with the SWP_FRAMECHANGED flag for the cache to be updated properly.

If you use SetWindowLong with the GWL_WNDPROC index to replace the window procedure, the window procedure must conform to the guidelines specified in the description of the WindowProc callback function.

If you use SetWindowLong with the DWL_MSGRESULT index to set the return value for a message processed by a dialog procedure, you should return TRUE directly afterward. Otherwise, if you call any function that results in your dialog procedure receiving a window message, the nested window message could overwrite the return value you set using DWL_MSGRESULT.

Calling SetWindowLong with the GWL_WNDPROC index creates a subclass of the window class used to create the window. An application can subclass a system class, but should not subclass a window class created by another process. The SetWindowLong function creates the window subclass by changing the window procedure associated with a particular window class, causing the system to call the new window procedure instead of the previous one. An application must pass any messages not processed by the new window procedure to the previous window procedure by calling CallWindowProc. This allows the application to create a chain of window procedures.

Reserve extra window memory by specifying a nonzero value in the cbWndExtra member of the WNDCLASSEX structure used with the RegisterClassEx function.

You must not call SetWindowLong with the GWL_HWNDPARENT index to change the parent of a child window. Instead, use the SetParent function.

If the window has a class style of CS_CLASSDC or CS_OWNDC, do not set the extended window styles WS_EX_COMPOSITED or WS_EX_LAYERED.

Calling SetWindowLong to set the style on a progressbar will reset its position.

Examples

The winuser.h header defines SetWindowLong as an alias which automatically selects the ANSI or Unicode version of this function based on the definition of the UNICODE preprocessor constant. Mixing usage of the encoding-neutral alias with code that not encoding-neutral can lead to mismatches that result in compilation or runtime errors. For more information, see Conventions for Function Prototypes.

Long long int on 32 bit machines

very simple question, I read that GCC supports long long int type. But how can make math operations with it, when CPU is 32 bit wide only?

5 Answers 5

The compiler will synthesize math operations (or use function calls) that use more than one CPU instruction to perform the operation. For example, an add operation will add the low order components (the low words) of the long long values and will then take the carry out of that operation and feed it into an add operation on the high order words of the long long .

So the following C code:

might be represented by an instruction sequence that looks something like:

And if you consider for a moment, compilers for 8 and 16 bits systems had to do this type of thing for 16 and/or 32-bit values long before long long came into being.

Internally, the type is represented by a high-word and a low-word, like:

The compiler needs to know if it is a 32bit or 64bit environment and then selects the right reprenstations of the number — if it is 64bit, it can be done natively, if it is 32bit, the compiler has to take care of the math between the high/lowword.

If you have a look in math.h, you can see the functions used for this, and use them yourself. On an additional note, be aware of the difference between little-endian and big-endian (see wiki), the usage depends on the operating system.

Saying an architecture is 32 bit (or 64 or whatever) is usually only an approximation of what the processor is capable of. Usually you only refer to the width of pointers with that number, arithmetic might be quite different. E.g the x86 architecture has 32 bit pointers, most arithmetic is performed in 32 bit registers, but it also has native support for some basic 64 bit operations.

Also you shouldn’t follow the impression that the standard integer types have some prescribed width. In particular long long is at least 64 bit but may be wider. Use the typedefs int32_t, int64_t if you want to be portably sure about the width.

If you want to know what gcc (or any other compiler) does with long long you have to look into the specification for your particular target platform

It’s easy enough to just compile and test if you have a 32-bit system accessible. gcc has a flag -S which turns on assembly language output. Here’s what it produces on my 32-bit intel:

Most likely as a class, not natively. same way any compiler can/could support any large number set.

Not the answer you’re looking for? Browse other questions tagged c++ c types or ask your own question.

Linked

Hot Network Questions

Subscribe to RSS

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

site design / logo © 2021 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2021.4.16.39093

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

32-битная vs 64-битная Windows. Что выбрать?

Для многих всё ещё остаётся открытым вопрос, что такое разрядность системы и причём тут 32 и 64 бита. В этой статье разберёмся в этом вопросе. Поехали!

Разрядность? What is it!

Выбор 32 битной и 64 битной Windows напрямую связан с вопрос о разрядности процессора. Что же это такое?

Разрядность — количество битов (разрядов) данных, одновременно обрабатываемых устройством за 1 такт, в нашем случае в качестве такого устройства выступает процессор. Процессор постоянно обменивается данными с оперативной памятью, поэтому от разрядности зависит сколько данных за 1 такт будет передано в оперативную память.

Несколько трюков с арифметикой. Имеем обычный 32-разрядный процессор (какой-нибудь AMD Sempron 2004 года). Он может одновременно передать 2 ^ 32 = 4 294 967 296 бита = 4 Гб. Отсюда следует простой вывод, что будь у вас хоть 32 Гб оперативной памяти, процессор физически не может оперировать таким количеством информации.

Ну ладно, сейчас на дворе уже 2019 год, в основном у всех 64-разрядные процессоры. А на что способны они? — Считаем.

2 ^ 18 446 744 073 709 551 616 бит = 16 Еб (16 * 1024 Тб)

В общем это огромный объём данных, которой в ближайшие лет 100 вряд ли будет задействован. К тому же это теоретический предел, на деле более реальны цифры в терабайты (что-то около 16 Тб), что всё равно чертовски много.

Кстати, чтобы определить разрядность вашего процессора, достаточно зайти в свойства системы и обратить внимание на эту строку (выделена на картинке ниже).

32-разрядная архитектура обозначается как x86, 64-разрядная — как x64.

Также данная инфа есть на сайте производителя или на странице в магазине (обычно записи остаются). Там обаятельно указывается о поддержке 64 битных инструкций.

Возвращаясь к Windows

Разрядность должна поддерживаться не только на аппаратном уровне, но и на программном. Поэтому выпускается 2 версии Windows: 32-битная и 64-битная. Думаю эти названия полностью отражает суть версий систем.

32-битная Windows умеет работать с 4 Гб оперативной памяти максимум. На деле всё несколько хуже, обычно доступно примерно 3,5 Гб. Стоит заметить, что имея 64-разрядный процессор, вы можете поставить Win32bit и получить всё тот же обрезок в 3,5Гб, но наоборот уже не получится.

64-битная Windows поддерживает более 4 Гб. Максимум в разных версиях Windows разный. Приведу официальные цифры для наиболее популярных сейчас систем.

  • Windows 7 Home Basic x64: 8 Гб
  • Windows 7 Home Premium x64 : 16 Гб
  • Windows 7 Professional x64 : 192 Гб
  • Windows 7 Ultimate x64 ) : 192 Гб
  • Windows 10 Home x64 : 128 Гб
  • Windows 10 Pro x64 : 512 Гб

Как вы могли заметить, владельцам данных систем вообще можно не парится об ограничениях на объём оперативки.

Весь остальной софт аналогично делится на 2 категории: для 32-битных систем и для 64-битных систем.

  • На 32-битную систему без вариантов ставить только 32-битную версию программы.
  • На 64-битную систему лучше ставить 64-битные программы. 32-битные версии программ устанавливайте только в том случае, если эти программы вообще не имеют 64-битных версий.

Что выбрать по итогу

А теперь пришло время ответить на самый главный вопрос, какую версию Windows выбрать. Есть несколько вариантов:

Если у вас 32-разрядный процессор или меньше 2 ГБ ОЗУ, то выбора нет: на вашей системе нормально будет работать только 32-битная ОС.

Если у вас 64-разрядный процессор и от 2 ГБ ОЗУ, устанавливайте 64-разрядную версию Windows как более современную и эффективную.

Ещё небольшой момент. Он касается перехода с версии на версию. Предположим у вас 64-битный процессор, но установлена 32-битная Windows (странно конечно, но всё таки). В таком случае вам придётся выполнить чистую установку Windows с 64-битного образа.

На этом у меня всё. Надеюсь данная статья была вам полезна и интересна.

Понравилась статья? Ставьте лайки. Подписывайтесь на канал, полезная информация гарантирована. Делитесь публикацией с друзьями, кнопки «поделиться» ждут ваших кликов.

Windows Data Types

The data types supported by Windows are used to define function return values, function and message parameters, and structure members. They define the size and meaning of these elements. For more information about the underlying C/C++ data types, see Data Type Ranges.

The following table contains the following types: character, integer, Boolean, pointer, and handle. The character, integer, and Boolean types are common to most C compilers. Most of the pointer-type names begin with a prefix of P or LP. Handles refer to a resource that has been loaded into memory.

For more information about handling 64-bit integers, see Large Integers.

A handle to an object.

This type is declared in WinNT.h as follows:

typedef PVOID HANDLE;

This type is declared in WinDef.h as follows:

typedef HANDLE HBITMAP;

This type is declared in WinDef.h as follows:

typedef HANDLE HBRUSH;

This type is declared in WinDef.h as follows:

typedef HANDLE HCOLORSPACE;

A handle to a dynamic data exchange (DDE) conversation.

This type is declared in Ddeml.h as follows:

typedef HANDLE HCONV;

A handle to a DDE conversation list.

This type is declared in Ddeml.h as follows:

typedef HANDLE HCONVLIST;

This type is declared in WinDef.h as follows:

typedef HICON HCURSOR;

This type is declared in WinDef.h as follows:

typedef HANDLE HDC;

A handle to DDE data.

This type is declared in Ddeml.h as follows:

typedef HANDLE HDDEDATA;

This type is declared in WinDef.h as follows:

typedef HANDLE HDESK;

A handle to an internal drop structure.

This type is declared in ShellApi.h as follows:

typedef HANDLE HDROP;

A handle to a deferred window position structure.

This type is declared in WinUser.h as follows:

typedef HANDLE HDWP;

This type is declared in WinDef.h as follows:

typedef HANDLE HENHMETAFILE;

This type is declared in WinDef.h as follows:

typedef int HFILE;

This type is declared in WinDef.h as follows:

typedef HANDLE HFONT;

A handle to a GDI object.

This type is declared in WinDef.h as follows:

typedef HANDLE HGDIOBJ;

A handle to a global memory block.

This type is declared in WinDef.h as follows:

typedef HANDLE HGLOBAL;

This type is declared in WinDef.h as follows:

typedef HANDLE HHOOK;

This type is declared in WinDef.h as follows:

typedef HANDLE HICON;

A handle to an instance. This is the base address of the module in memory.

HMODULE and HINSTANCE are the same today, but represented different things in 16-bit Windows.

This type is declared in WinDef.h as follows:

typedef HANDLE HINSTANCE;

A handle to a registry key.

This type is declared in WinDef.h as follows:

typedef HANDLE HKEY;

An input locale identifier.

This type is declared in WinDef.h as follows:

typedef HANDLE HKL;

A handle to a local memory block.

This type is declared in WinDef.h as follows:

typedef HANDLE HLOCAL;

This type is declared in WinDef.h as follows:

typedef HANDLE HMENU;

This type is declared in WinDef.h as follows:

typedef HANDLE HMETAFILE;

A handle to a module. The is the base address of the module in memory.

HMODULE and HINSTANCE are the same in current versions of Windows, but represented different things in 16-bit Windows.

This type is declared in WinDef.h as follows:

typedef HINSTANCE HMODULE;

A handle to a display monitor.

This type is declared in WinDef.h as follows:

if(WINVER >= 0x0500) typedef HANDLE HMONITOR;

A handle to a palette.

This type is declared in WinDef.h as follows:

typedef HANDLE HPALETTE;

This type is declared in WinDef.h as follows:

typedef HANDLE HPEN;

The return codes used by COM interfaces. For more information, see Structure of the COM Error Codes. To test an HRESULT value, use the FAILED and SUCCEEDED macros.

This type is declared in WinNT.h as follows:

typedef LONG HRESULT;

This type is declared in WinDef.h as follows:

typedef HANDLE HRGN;

A handle to a resource.

This type is declared in WinDef.h as follows:

typedef HANDLE HRSRC;

A handle to a DDE string.

This type is declared in Ddeml.h as follows:

typedef HANDLE HSZ;

This type is declared in WinDef.h as follows:

typedef HANDLE WINSTA;

This type is declared in WinDef.h as follows:

typedef HANDLE HWND;

A 32-bit signed integer. The range is -2147483648 through 2147483647 decimal.

This type is declared in WinDef.h as follows:

typedef int INT;

A signed integer type for pointer precision. Use when casting a pointer to an integer to perform pointer arithmetic.

This type is declared in BaseTsd.h as follows:

An 8-bit signed integer.

This type is declared in BaseTsd.h as follows:

typedef signed char INT8;

A 16-bit signed integer.

This type is declared in BaseTsd.h as follows:

typedef signed short INT16;

A 32-bit signed integer. The range is -2147483648 through 2147483647 decimal.

This type is declared in BaseTsd.h as follows:

typedef signed int INT32;

A 64-bit signed integer. The range is -9223372036854775808 through 9223372036854775807 decimal.

This type is declared in BaseTsd.h as follows:

typedef signed __int64 INT64;

A language identifier. For more information, see Language Identifiers.

This type is declared in WinNT.h as follows:

typedef WORD LANGID;

A locale identifier. For more information, see Locale Identifiers.

This type is declared in WinNT.h as follows:

typedef DWORD LCID;

A locale information type. For a list, see Locale Information Constants.

This type is declared in WinNls.h as follows:

typedef DWORD LCTYPE;

This type is declared in WinNls.h as follows:

typedef DWORD LGRPID;

A 32-bit signed integer. The range is -2147483648 through 2147483647 decimal.

This type is declared in WinNT.h as follows:

typedef long LONG;

A 64-bit signed integer. The range is -9223372036854775808 through 9223372036854775807 decimal.

This type is declared in WinNT.h as follows:

A signed long type for pointer precision. Use when casting a pointer to a long to perform pointer arithmetic.

This type is declared in BaseTsd.h as follows:

A 32-bit signed integer. The range is -2147483648 through 2147483647 decimal.

This type is declared in BaseTsd.h as follows:

typedef signed int LONG32;

A 64-bit signed integer. The range is -9223372036854775808 through 9223372036854775807 decimal.

This type is declared in BaseTsd.h as follows:

typedef __int64 LONG64;

A message parameter.

This type is declared in WinDef.h as follows:

typedef LONG_PTR LPARAM;

This type is declared in WinDef.h as follows:

typedef BOOL far *LPBOOL;

This type is declared in WinDef.h as follows:

typedef BYTE far *LPBYTE;

This type is declared in WinDef.h as follows:

typedef DWORD *LPCOLORREF;

A pointer to a constant null-terminated string of 8-bit Windows (ANSI) characters. For more information, see Character Sets Used By Fonts.

This type is declared in WinNT.h as follows:

typedef __nullterminated CONST CHAR *LPCSTR;

An LPCWSTR if UNICODE is defined, an LPCSTR otherwise. For more information, see Windows Data Types for Strings.

This type is declared in WinNT.h as follows:

A pointer to a constant of any type.

This type is declared in WinDef.h as follows:

typedef CONST void *LPCVOID;

A pointer to a constant null-terminated string of 16-bit Unicode characters. For more information, see Character Sets Used By Fonts.

This type is declared in WinNT.h as follows:

typedef CONST WCHAR *LPCWSTR;

This type is declared in WinDef.h as follows:

typedef DWORD *LPDWORD;

This type is declared in WinDef.h as follows:

typedef HANDLE *LPHANDLE;

This type is declared in WinDef.h as follows:

typedef int *LPINT;

This type is declared in WinDef.h as follows:

typedef long *LPLONG;

A pointer to a null-terminated string of 8-bit Windows (ANSI) characters. For more information, see Character Sets Used By Fonts.

This type is declared in WinNT.h as follows:

typedef CHAR *LPSTR;

An LPWSTR if UNICODE is defined, an LPSTR otherwise. For more information, see Windows Data Types for Strings.

This type is declared in WinNT.h as follows:

A pointer to any type.

This type is declared in WinDef.h as follows:

typedef void *LPVOID;

This type is declared in WinDef.h as follows:

typedef WORD *LPWORD;

A pointer to a null-terminated string of 16-bit Unicode characters. For more information, see Character Sets Used By Fonts.

This type is declared in WinNT.h as follows:

typedef WCHAR *LPWSTR;

Signed result of message processing.

This type is declared in WinDef.h as follows:

typedef LONG_PTR LRESULT;

This type is declared in WinDef.h as follows:

typedef BOOL *PBOOL;

This type is declared in WinNT.h as follows:

typedef BOOLEAN *PBOOLEAN;

This type is declared in WinDef.h as follows:

typedef BYTE *PBYTE;

This type is declared in WinNT.h as follows:

typedef CHAR *PCHAR;

A pointer to a constant null-terminated string of 8-bit Windows (ANSI) characters. For more information, see Character Sets Used By Fonts.

This type is declared in WinNT.h as follows:

typedef CONST CHAR *PCSTR;

A PCWSTR if UNICODE is defined, a PCSTR otherwise. For more information, see Windows Data Types for Strings.

This type is declared in WinNT.h as follows:

A pointer to a constant null-terminated string of 16-bit Unicode characters. For more information, see Character Sets Used By Fonts.

This type is declared in WinNT.h as follows:

typedef CONST WCHAR *PCWSTR;

This type is declared in WinDef.h as follows:

typedef DWORD *PDWORD;

This type is declared in WinNT.h as follows:

typedef DWORDLONG *PDWORDLONG;

This type is declared in BaseTsd.h as follows:

typedef DWORD_PTR *PDWORD_PTR;

This type is declared in BaseTsd.h as follows:

typedef DWORD32 *PDWORD32;

This type is declared in BaseTsd.h as follows:

typedef DWORD64 *PDWORD64;

This type is declared in WinDef.h as follows:

typedef FLOAT *PFLOAT;

This type is declared in BaseTsd.h as follows:

This type is declared in WinNT.h as follows:

typedef HANDLE *PHANDLE;

This type is declared in WinDef.h as follows:

typedef HKEY *PHKEY;

This type is declared in WinDef.h as follows:

typedef int *PINT;

This type is declared in BaseTsd.h as follows:

typedef INT_PTR *PINT_PTR;

This type is declared in BaseTsd.h as follows:

typedef INT8 *PINT8;

This type is declared in BaseTsd.h as follows:

typedef INT16 *PINT16;

This type is declared in BaseTsd.h as follows:

typedef INT32 *PINT32;

This type is declared in BaseTsd.h as follows:

typedef INT64 *PINT64;

This type is declared in WinNT.h as follows:

typedef PDWORD PLCID;

This type is declared in WinNT.h as follows:

typedef LONG *PLONG;

This type is declared in WinNT.h as follows:

typedef LONGLONG *PLONGLONG;

This type is declared in BaseTsd.h as follows:

typedef LONG_PTR *PLONG_PTR;

This type is declared in BaseTsd.h as follows:

typedef LONG32 *PLONG32;

This type is declared in BaseTsd.h as follows:

typedef LONG64 *PLONG64;

A 32-bit pointer. On a 32-bit system, this is a native pointer. On a 64-bit system, this is a truncated 64-bit pointer.

This type is declared in BaseTsd.h as follows:

A 64-bit pointer. On a 64-bit system, this is a native pointer. On a 32-bit system, this is a sign-extended 32-bit pointer.

Note that it is not safe to assume the state of the high pointer bit.

This type is declared in BaseTsd.h as follows:

A signed pointer.

This type is declared in BaseTsd.h as follows:

#define POINTER_SIGNED __sptr

An unsigned pointer.

This type is declared in BaseTsd.h as follows:

#define POINTER_UNSIGNED __uptr

This type is declared in WinNT.h as follows:

typedef SHORT *PSHORT;

This type is declared in BaseTsd.h as follows:

typedef SIZE_T *PSIZE_T;

This type is declared in BaseTsd.h as follows:

typedef SSIZE_T *PSSIZE_T;

A pointer to a null-terminated string of 8-bit Windows (ANSI) characters. For more information, see Character Sets Used By Fonts.

This type is declared in WinNT.h as follows:

typedef CHAR *PSTR;

This type is declared in WinNT.h as follows:

typedef TBYTE *PTBYTE;

This type is declared in WinNT.h as follows:

typedef TCHAR *PTCHAR;

A PWSTR if UNICODE is defined, a PSTR otherwise. For more information, see Windows Data Types for Strings.

This type is declared in WinNT.h as follows:

This type is declared in WinDef.h as follows:

typedef UCHAR *PUCHAR;

This type is declared in BaseTsd.h as follows:

This type is declared in WinDef.h as follows:

typedef UINT *PUINT;

This type is declared in BaseTsd.h as follows:

typedef UINT_PTR *PUINT_PTR;

This type is declared in BaseTsd.h as follows:

typedef UINT8 *PUINT8;

This type is declared in BaseTsd.h as follows:

typedef UINT16 *PUINT16;

This type is declared in BaseTsd.h as follows:

typedef UINT32 *PUINT32;

This type is declared in BaseTsd.h as follows:

typedef UINT64 *PUINT64;

This type is declared in WinDef.h as follows:

typedef ULONG *PULONG;

This type is declared in WinDef.h as follows:

typedef ULONGLONG *PULONGLONG;

This type is declared in BaseTsd.h as follows:

typedef ULONG_PTR *PULONG_PTR;

This type is declared in BaseTsd.h as follows:

typedef ULONG32 *PULONG32;

This type is declared in BaseTsd.h as follows:

typedef ULONG64 *PULONG64;

This type is declared in WinDef.h as follows:

typedef USHORT *PUSHORT;

A pointer to any type.

This type is declared in WinNT.h as follows:

typedef void *PVOID;

This type is declared in WinNT.h as follows:

typedef WCHAR *PWCHAR;

This type is declared in WinDef.h as follows:

typedef WORD *PWORD;

A pointer to a null-terminated string of 16-bit Unicode characters. For more information, see Character Sets Used By Fonts.

This type is declared in WinNT.h as follows:

typedef WCHAR *PWSTR;

A 64-bit unsigned integer.

This type is declared as follows:

typedef unsigned __int64 QWORD;

A handle to a service control manager database. For more information, see SCM Handles.

This type is declared in WinSvc.h as follows:

typedef HANDLE SC_HANDLE;

A lock to a service control manager database. For more information, see SCM Handles.

This type is declared in WinSvc.h as follows:

typedef LPVOID SC_LOCK;

A handle to a service status value. For more information, see SCM Handles.

This type is declared in WinSvc.h as follows:

typedef HANDLE SERVICE_STATUS_HANDLE;

A 16-bit integer. The range is -32768 through 32767 decimal.

This type is declared in WinNT.h as follows:

typedef short SHORT;

The maximum number of bytes to which a pointer can point. Use for a count that must span the full range of a pointer.

This type is declared in BaseTsd.h as follows:

typedef ULONG_PTR SIZE_T;

This type is declared in BaseTsd.h as follows:

typedef LONG_PTR SSIZE_T;

A WCHAR if UNICODE is defined, a CHAR otherwise.

This type is declared in WinNT.h as follows:

A WCHAR if UNICODE is defined, a CHAR otherwise.

This type is declared in WinNT.h as follows:

This type is declared in WinDef.h as follows:

typedef unsigned char UCHAR;

An unsigned HALF_PTR. Use within a structure that contains a pointer and two small fields.

This type is declared in BaseTsd.h as follows:

An unsigned INT. The range is 0 through 4294967295 decimal.

This type is declared in WinDef.h as follows:

typedef unsigned int UINT;

This type is declared in BaseTsd.h as follows:

This type is declared in BaseTsd.h as follows:

typedef unsigned char UINT8;

This type is declared in BaseTsd.h as follows:

typedef unsigned short UINT16;

An unsigned INT32. The range is 0 through 4294967295 decimal.

This type is declared in BaseTsd.h as follows:

typedef unsigned int UINT32;

An unsigned INT64. The range is 0 through 18446744073709551615 decimal.

This type is declared in BaseTsd.h as follows:

typedef usigned __int 64 UINT64;

An unsigned LONG. The range is 0 through 4294967295 decimal.

This type is declared in WinDef.h as follows:

typedef unsigned long ULONG;

A 64-bit unsigned integer. The range is 0 through 18446744073709551615 decimal.

This type is declared in WinNT.h as follows:

This type is declared in BaseTsd.h as follows:

An unsigned LONG32. The range is 0 through 4294967295 decimal.

This type is declared in BaseTsd.h as follows:

typedef unsigned int ULONG32;

An unsigned LONG64. The range is 0 through 18446744073709551615 decimal.

This type is declared in BaseTsd.h as follows:

typedef unsigned __int64 ULONG64;

A Unicode string.

This type is declared in Winternl.h as follows:

An unsigned SHORT. The range is 0 through 65535 decimal.

This type is declared in WinDef.h as follows:

typedef unsigned short USHORT;

An update sequence number (USN).

This type is declared in WinNT.h as follows:

typedef LONGLONG USN;

This type is declared in WinNT.h as follows:

#define VOID void

A 16-bit Unicode character. For more information, see Character Sets Used By Fonts.

This type is declared in WinNT.h as follows:

typedef wchar_t WCHAR;

The calling convention for system functions.

This type is declared in WinDef.h as follows:

#define WINAPI __stdcall

CALLBACK, WINAPI, and APIENTRY are all used to define functions with the __stdcall calling convention. Most functions in the Windows API are declared using WINAPI. You may wish to use CALLBACK for the callback functions that you implement to help identify the function as a callback function.

A 16-bit unsigned integer. The range is 0 through 65535 decimal.

This type is declared in WinDef.h as follows:

typedef unsigned short WORD;

A message parameter.

This type is declared in WinDef.h as follows:

Читайте также:  Восстановление последней версии mac os
Оцените статью
Data type Description
APIENTRY The calling convention for system functions.
This type is declared in WinDef.h as follows:
#define APIENTRY WINAPI
ATOM An atom. For more information, see About Atom Tables.
This type is declared in WinDef.h as follows:
typedef WORD ATOM;
BOOL A Boolean variable (should be TRUE or FALSE).
This type is declared in WinDef.h as follows:
typedef int BOOL;
BOOLEAN A Boolean variable (should be TRUE or FALSE).
This type is declared in WinNT.h as follows:
typedef BYTE BOOLEAN;
BYTE A byte (8 bits).
This type is declared in WinDef.h as follows:
typedef unsigned char BYTE;
CALLBACK The calling convention for callback functions.
This type is declared in WinDef.h as follows:
#define CALLBACK __stdcall
CALLBACK, WINAPI, and APIENTRY are all used to define functions with the __stdcall calling convention. Most functions in the Windows API are declared using WINAPI. You may wish to use CALLBACK for the callback functions that you implement to help identify the function as a callback function.
CCHAR An 8-bit Windows (ANSI) character.
This type is declared in WinNT.h as follows:
typedef char CCHAR;
CHAR An 8-bit Windows (ANSI) character. For more information, see Character Sets Used By Fonts.
This type is declared in WinNT.h as follows:
typedef char CHAR;
COLORREF The red, green, blue (RGB) color value (32 bits). See COLORREF for information on this type.
This type is declared in WinDef.h as follows:
typedef DWORD COLORREF;
CONST A variable whose value is to remain constant during execution.
This type is declared in WinDef.h as follows:
#define CONST const
DWORD A 32-bit unsigned integer. The range is 0 through 4294967295 decimal.
This type is declared in IntSafe.h as follows:
typedef unsigned long DWORD;
DWORDLONG A 64-bit unsigned integer. The range is 0 through 18446744073709551615 decimal.
This type is declared in IntSafe.h as follows:
typedef unsigned __int64 DWORDLONG;
DWORD_PTR An unsigned long type for pointer precision. Use when casting a pointer to a long type to perform pointer arithmetic. (Also commonly used for general 32-bit parameters that have been extended to 64 bits in 64-bit Windows.)
This type is declared in BaseTsd.h as follows:
typedef ULONG_PTR DWORD_PTR;
DWORD32 A 32-bit unsigned integer.
This type is declared in BaseTsd.h as follows:
typedef unsigned int DWORD32;
DWORD64 A 64-bit unsigned integer.
This type is declared in BaseTsd.h as follows:
typedef unsigned __int64 DWORD64;
FLOAT A floating-point variable.
This type is declared in WinDef.h as follows:
typedef float FLOAT;
HACCEL A handle to an accelerator table.
This type is declared in WinDef.h as follows:
typedef HANDLE HACCEL;
HALF_PTR Half the size of a pointer. Use within a structure that contains a pointer and two small fields.
This type is declared in BaseTsd.h as follows:
C++
HANDLE
POINTER_UNSIGNED
SERVICE_STATUS_HANDLE