Partilhar via


Tipos de dados do Windows

Os tipos de dados suportados pelo Windows são usados para definir valores de retorno de função, parâmetros de função e mensagem e membros da estrutura. Eles definem o tamanho e o significado desses elementos. Para obter mais informações sobre os tipos de dados C/C++ subjacentes, consulte Data Type Ranges.

A tabela a seguir contém os seguintes tipos: caractere, inteiro, booleano, ponteiro e identificador. Os tipos de caracteres, inteiros e booleanos são comuns à maioria dos compiladores C. A maioria dos nomes de tipo de ponteiro começa com um prefixo de P ou LP. Os identificadores referem-se a um recurso que foi carregado na memória.

Para obter mais informações sobre como manipular inteiros de 64 bits, consulte Inteiros Grandes.

Tipo de dados Descrição
APIENTRY A convenção de chamada para funções do sistema.
Este tipo é declarado em WinDef.h da seguinte forma:
#define APIENTRY WINAPI
ATOM Um átomo. Para obter mais informações, consulte Sobre tabelas Atom.
Este tipo é declarado em WinDef.h da seguinte forma:
typedef WORD ATOM;
BOOL Uma variável booleana (deve ser TRUE ou FALSE).
Este tipo é declarado em WinDef.h da seguinte forma:
typedef int BOOL;
BOOLEAN Uma variável booleana (deve ser TRUE ou FALSE).
Este tipo é declarado em WinNT.h da seguinte forma:
typedef BYTE BOOLEAN;
BYTE Um byte (8 bits).
Este tipo é declarado em WinDef.h da seguinte forma:
typedef unsigned char BYTE;
CALLBACK A convenção de chamada para funções de retorno de chamada.
Este tipo é declarado em WinDef.h da seguinte forma:
#define CALLBACK __stdcall
CALLBACK , WINAPIe APIENTRY são usados para definir funções com a convenção de chamada __stdcall. A maioria das funções na API do Windows são declaradas usando WINAPI. Você pode usar CALLBACK para as funções de retorno de chamada que você implementa para ajudar a identificar a função como uma função de retorno de chamada.
CCHAR Um caractere ANSI (Windows) de 8 bits.
Este tipo é declarado em WinNT.h da seguinte forma:
typedef char CCHAR;
CHAR Um caractere ANSI (Windows) de 8 bits. Para obter mais informações, consulte conjuntos de caracteres usados por fontes.
Este tipo é declarado em WinNT.h da seguinte forma:
typedef char CHAR;
COLORREF O valor de cor vermelho, verde, azul (RGB) (32 bits). Consulte COLORREF para obter informações sobre este tipo.
Este tipo é declarado em WinDef.h da seguinte forma:
typedef DWORD COLORREF;
CONST Uma variável cujo valor deve permanecer constante durante a execução.
Este tipo é declarado em WinDef.h da seguinte forma:
#define CONST const
DWORD Um inteiro não assinado de 32 bits. O intervalo é de 0 a 4294967295 decimal.
Este tipo é declarado em IntSafe.h da seguinte forma:
typedef unsigned long DWORD;
DWORDLONG Um inteiro não assinado de 64 bits. O intervalo é de 0 a 18446744073709551615 decimal.
Este tipo é declarado em IntSafe.h da seguinte forma:
typedef unsigned __int64 DWORDLONG;
DWORD_PTR Um tipo longo não assinado para precisão de ponteiro. Use ao transmitir um ponteiro para um tipo longo para executar a aritmética de ponteiro. (Também comumente usado para parâmetros gerais de 32 bits que foram estendidos para 64 bits no Windows de 64 bits.)
Este tipo é declarado em BaseTsd.h da seguinte forma:
typedef ULONG_PTR DWORD_PTR;
DWORD32 Um inteiro não assinado de 32 bits.
Este tipo é declarado em BaseTsd.h da seguinte forma:
typedef unsigned int DWORD32;
DWORD64 Um inteiro não assinado de 64 bits.
Este tipo é declarado em BaseTsd.h da seguinte forma:
typedef unsigned __int64 DWORD64;
FLOAT Uma variável de ponto flutuante.
Este tipo é declarado em WinDef.h da seguinte forma:
typedef float FLOAT;
HACCEL Um identificador para uma tabela de aceleração de .
Este tipo é declarado em WinDef.h da seguinte forma:
typedef HANDLE HACCEL;
HALF_PTR Metade do tamanho de um ponteiro. Use dentro de uma estrutura que contém um ponteiro e dois campos pequenos.
Este tipo é declarado em BaseTsd.h da seguinte forma:
C++
#ifdef _WIN64
 typedef int HALF_PTR;
#else
 typedef short HALF_PTR;
#endif
HANDLE

Um identificador para um objeto.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef PVOID HANDLE;

HBITMAP

Um identificador para um bitmap .

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HANDLE HBITMAP;

HBRUSH

Uma alça para uma escova .

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HANDLE HBRUSH;

HCOLORSPACE

Uma alça para um espaço de cores .

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HANDLE HCOLORSPACE;

HCONV

Um identificador para uma conversa de troca dinâmica de dados (DDE).

Este tipo é declarado em Ddeml.h da seguinte forma:

typedef HANDLE HCONV;

HCONVLIST

Um identificador para uma lista de conversação DDE.

Este tipo é declarado em Ddeml.h da seguinte forma:

typedef HANDLE HCONVLIST;

HCURSOR

Uma alça para um cursor .

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HICON HCURSOR;

HDC

Um identificador para um de contexto de dispositivo (DC).

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HANDLE HDC;

HDDEDATA

Um identificador para dados DDE.

Este tipo é declarado em Ddeml.h da seguinte forma:

typedef HANDLE HDDEDATA;

HDESK

Um identificador para uma área de trabalho .

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HANDLE HDESK;

HDROP

Uma alça para uma estrutura de gota interna.

Esse tipo é declarado em ShellApi.h da seguinte maneira:

typedef HANDLE HDROP;

HDWP

Uma alça para uma estrutura de posição de janela diferida.

Esse tipo é declarado em WinUser.h da seguinte maneira:

typedef HANDLE HDWP;

HENHMETAFILE

Um identificador para um metarquivo aprimorado.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HANDLE HENHMETAFILE;

HFILE

Um identificador para um arquivo aberto pelo OpenFile, não CreateFile.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef int HFILE;

HFONT

Um identificador para uma fonte .

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HANDLE HFONT;

HGDIOBJ

Um identificador para um objeto GDI.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HANDLE HGDIOBJ;

HGLOBAL

Um identificador para um bloco de memória global.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HANDLE HGLOBAL;

HHOOK

Uma alça para um gancho .

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HANDLE HHOOK;

HICON

Um identificador para um ícone de .

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HANDLE HICON;

HINSTANCE

Um identificador para uma instância. Este é o endereço base do módulo na memória.

HMODULE e HINSTANCE são os mesmos hoje, mas representavam coisas diferentes no Windows de 16 bits.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HANDLE HINSTANCE;

HKEY

Um identificador para uma chave do Registro.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HANDLE HKEY;

HKL

Um identificador de localidade de entrada.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HANDLE HKL;

HLOCAL

Um identificador para um bloco de memória local.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HANDLE HLOCAL;

HMENU

Um identificador para um menu .

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HANDLE HMENU;

HMETAFILE

Um identificador para um metarquivo .

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HANDLE HMETAFILE;

HMODULE

Um identificador para um módulo. Este é o endereço base do módulo na memória.

HMODULE e HINSTANCE são os mesmos nas versões atuais do Windows, mas representam coisas diferentes no Windows de 16 bits.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HINSTANCE HMODULE;

HMONITOR

Uma alça para um monitor de vídeo.

Este tipo é declarado em WinDef.h da seguinte forma:

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

HPALETTE

Uma alça para uma paleta.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HANDLE HPALETTE;

HPEN

Uma alça para uma caneta .

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HANDLE HPEN;

HRESULT

Os códigos de retorno usados pelas interfaces COM. Para obter mais informações, consulte estrutura dos códigos de erro COM. Para testar um valor de HRESULT, use o FAILED e SUCCESSFUL macros.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef LONG HRESULT;

HRGN

Uma alça para uma região .

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HANDLE HRGN;

HRSRC

Um identificador para um recurso.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HANDLE HRSRC;

HSZ

Um identificador para uma cadeia de caracteres DDE.

Este tipo é declarado em Ddeml.h da seguinte forma:

typedef HANDLE HSZ;

HWINSTA

Uma alça para uma estação de janela .

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HANDLE WINSTA;

HWND

Uma alça para uma janela de .

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HANDLE HWND;

INT

Um inteiro assinado de 32 bits. O intervalo é -2147483648 até 2147483647 decimal.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef int INT;

INT_PTR

Um tipo de inteiro assinado para precisão de ponteiro. Use ao lançar um ponteiro para um inteiro para executar a aritmética do ponteiro.

Este tipo é declarado em BaseTsd.h da seguinte forma:

C++
#if defined(_WIN64) 
 typedef __int64 INT_PTR; 
#else 
 typedef int INT_PTR;
#endif
INT8

Um inteiro assinado de 8 bits.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef signed char INT8;

INT16

Um inteiro assinado de 16 bits.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef signed short INT16;

INT32

Um inteiro assinado de 32 bits. O intervalo é -2147483648 até 2147483647 decimal.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef signed int INT32;

INT64

Um inteiro assinado de 64 bits. O intervalo é -9223372036854775808 até 9223372036854775807 decimal.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef signed __int64 INT64;

LANGID

Um identificador de idioma. Para obter mais informações, consulte Language Identifiers.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef WORD LANGID;

LCID

Um identificador de localidade. Para obter mais informações, consulte identificadores de localidade.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef DWORD LCID;

LCTYPE

Um tipo de informação de localidade. Para obter uma lista, consulte Constantes de informações de localidade.

Este tipo é declarado em WinNls.h da seguinte forma:

typedef DWORD LCTYPE;

LGRPID

Um identificador de grupo de idiomas. Para obter uma lista, consulte EnumLanguageGroupLocales.

Este tipo é declarado em WinNls.h da seguinte forma:

typedef DWORD LGRPID;

LONG

Um inteiro assinado de 32 bits. O intervalo é -2147483648 até 2147483647 decimal.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef long LONG;

LONGLONG

Um inteiro assinado de 64 bits. O intervalo é -9223372036854775808 até 9223372036854775807 decimal.

Este tipo é declarado em WinNT.h da seguinte forma:

C++
#if !defined(_M_IX86)
 typedef __int64 LONGLONG; 
#else
 typedef double LONGLONG;
#endif
LONG_PTR

Um tipo longo assinado para precisão de ponteiro. Use ao lançar um ponteiro para um longo para executar a aritmética do ponteiro.

Este tipo é declarado em BaseTsd.h da seguinte forma:

C++
#if defined(_WIN64)
 typedef __int64 LONG_PTR; 
#else
 typedef long LONG_PTR;
#endif
LONG32

Um inteiro assinado de 32 bits. O intervalo é -2147483648 até 2147483647 decimal.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef signed int LONG32;

LONG64

Um inteiro assinado de 64 bits. O intervalo é -9223372036854775808 até 9223372036854775807 decimal.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef __int64 LONG64;

LPARAM

Um parâmetro message.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef LONG_PTR LPARAM;

LPBOOL

Um ponteiro para um BOOL.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef BOOL far *LPBOOL;

LPBYTE

Um ponteiro para um BYTE.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef BYTE far *LPBYTE;

LPCOLORREF

Um ponteiro para um COLORREF valor.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef DWORD *LPCOLORREF;

LPCSTR

Um ponteiro para uma cadeia de caracteres terminada em nulo constante de caracteres ANSI (Windows) de 8 bits. Para obter mais informações, consulte conjuntos de caracteres usados por fontes.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef __nullterminated CONST CHAR *LPCSTR;

LPCTSTR

Um LPCWSTR se UNICODE estiver definido, um LPCSTR caso contrário. Para obter mais informações, consulte Tipos de dados do Windows para cadeias de caracteres.

Este tipo é declarado em WinNT.h da seguinte forma:

C++
#ifdef UNICODE
 typedef LPCWSTR LPCTSTR; 
#else
 typedef LPCSTR LPCTSTR;
#endif
LPCVOID

Um ponteiro para uma constante de qualquer tipo.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef CONST void *LPCVOID;

LPCWSTR

Um ponteiro para uma cadeia de caracteres terminada em nulo constante de caracteres Unicode de 16 bits. Para obter mais informações, consulte conjuntos de caracteres usados por fontes.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef CONST WCHAR *LPCWSTR;

LPDWORD

Um ponteiro para um DWORD.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef DWORD *LPDWORD;

LPHANDLE

Um ponteiro para um HANDLE.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HANDLE *LPHANDLE;

LPINT

Um ponteiro para um INT.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef int *LPINT;

LPLONG

Um ponteiro para um LONG.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef long *LPLONG;

LPSTR

Um ponteiro para uma cadeia de caracteres terminada em nulo de caracteres ANSI (Windows) de 8 bits. Para obter mais informações, consulte conjuntos de caracteres usados por fontes.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef CHAR *LPSTR;

LPTSTR

Um LPWSTR se UNICODE estiver definido, um LPSTR de outra forma. Para obter mais informações, consulte Tipos de dados do Windows para cadeias de caracteres.

Este tipo é declarado em WinNT.h da seguinte forma:

C++
#ifdef UNICODE
 typedef LPWSTR LPTSTR;
#else
 typedef LPSTR LPTSTR;
#endif
LPVOID

Um ponteiro para qualquer tipo.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef void *LPVOID;

LPWORD

Um ponteiro para um WORD.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef WORD *LPWORD;

LPWSTR

Um ponteiro para uma cadeia de caracteres Unicode terminada em nulo de 16 bits. Para obter mais informações, consulte conjuntos de caracteres usados por fontes.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef WCHAR *LPWSTR;

LRESULT

Resultado assinado do processamento de mensagens.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef LONG_PTR LRESULT;

PBOOL

Um ponteiro para um BOOL.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef BOOL *PBOOL;

PBOOLEAN

Um ponteiro para um BOOLEAN.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef BOOLEAN *PBOOLEAN;

PBYTE

Um ponteiro para um BYTE.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef BYTE *PBYTE;

PCHAR

Um ponteiro para um CHAR.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef CHAR *PCHAR;

PCSTR

Um ponteiro para uma cadeia de caracteres terminada em nulo constante de caracteres ANSI (Windows) de 8 bits. Para obter mais informações, consulte conjuntos de caracteres usados por fontes.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef CONST CHAR *PCSTR;

PCTSTR

Um PCWSTR se UNICODE estiver definido, um PCSTR de outra forma. Para obter mais informações, consulte Tipos de dados do Windows para cadeias de caracteres.

Este tipo é declarado em WinNT.h da seguinte forma:

C++
#ifdef UNICODE
 typedef LPCWSTR PCTSTR;
#else
 typedef LPCSTR PCTSTR;
#endif
PCWSTR

Um ponteiro para uma cadeia de caracteres terminada em nulo constante de caracteres Unicode de 16 bits. Para obter mais informações, consulte conjuntos de caracteres usados por fontes.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef CONST WCHAR *PCWSTR;

PDWORD

Um ponteiro para um DWORD.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef DWORD *PDWORD;

PDWORDLONG

Um ponteiro para um DWORDLONG.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef DWORDLONG *PDWORDLONG;

PDWORD_PTR

Um ponteiro para um DWORD_PTR.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef DWORD_PTR *PDWORD_PTR;

PDWORD32

Um ponteiro para um DWORD32.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef DWORD32 *PDWORD32;

PDWORD64

Um ponteiro para um DWORD64.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef DWORD64 *PDWORD64;

PFLOAT

Um ponteiro para um FLOAT.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef FLOAT *PFLOAT;

PHALF_PTR

Um ponteiro para um HALF_PTR.

Este tipo é declarado em BaseTsd.h da seguinte forma:

C++
#ifdef _WIN64
 typedef HALF_PTR *PHALF_PTR;
#else
 typedef HALF_PTR *PHALF_PTR;
#endif
PHANDLE

Um ponteiro para um HANDLE.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef HANDLE *PHANDLE;

PHKEY

Um ponteiro para um HKEY.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef HKEY *PHKEY;

PINT

Um ponteiro para um INT.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef int *PINT;

PINT_PTR

Um ponteiro para um INT_PTR.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef INT_PTR *PINT_PTR;

PINT8

Um ponteiro para um INT8.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef INT8 *PINT8;

PINT16

Um ponteiro para um INT16.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef INT16 *PINT16;

PINT32

Um ponteiro para um INT32.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef INT32 *PINT32;

PINT64

Um ponteiro para um INT64.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef INT64 *PINT64;

PLCID

Um ponteiro para um LCID.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef PDWORD PLCID;

PLONG

Um ponteiro para um LONG.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef LONG *PLONG;

PLONGLONG

Um ponteiro para um LONGLONG.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef LONGLONG *PLONGLONG;

PLONG_PTR

Um ponteiro para um LONG_PTR.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef LONG_PTR *PLONG_PTR;

PLONG32

Um ponteiro para um LONG32.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef LONG32 *PLONG32;

PLONG64

Um ponteiro para um LONG64.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef LONG64 *PLONG64;

POINTER_32

Um ponteiro de 32 bits. Em um sistema de 32 bits, este é um ponteiro nativo. Em um sistema de 64 bits, este é um ponteiro truncado de 64 bits.

Este tipo é declarado em BaseTsd.h da seguinte forma:

C++
#if defined(_WIN64)
#define POINTER_32 __ptr32
#else
#define POINTER_32
#endif
POINTER_64

Um ponteiro de 64 bits. Em um sistema de 64 bits, este é um ponteiro nativo. Em um sistema de 32 bits, este é um ponteiro de 32 bits estendido por sinal.

Observe que não é seguro assumir o estado do bit de ponteiro alto.

Este tipo é declarado em BaseTsd.h da seguinte forma:

C++
#if (_MSC_VER >= 1300)
#define POINTER_64 __ptr64
#else
#define POINTER_64
#endif
POINTER_SIGNED

Um ponteiro assinado.

Este tipo é declarado em BaseTsd.h da seguinte forma:

#define POINTER_SIGNED __sptr

POINTER_UNSIGNED

Um ponteiro não assinado.

Este tipo é declarado em BaseTsd.h da seguinte forma:

#define POINTER_UNSIGNED __uptr

PSHORT

Um ponteiro para um SHORT.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef SHORT *PSHORT;

PSIZE_T

Um ponteiro para um SIZE_T.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef SIZE_T *PSIZE_T;

PSSIZE_T

Um ponteiro para um SSIZE_T.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef SSIZE_T *PSSIZE_T;

PSTR

Um ponteiro para uma cadeia de caracteres terminada em nulo de caracteres ANSI (Windows) de 8 bits. Para obter mais informações, consulte conjuntos de caracteres usados por fontes.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef CHAR *PSTR;

PTBYTE

Um ponteiro para um TBYTE.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef TBYTE *PTBYTE;

PTCHAR

Um ponteiro para um TCHAR.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef TCHAR *PTCHAR;

PTSTR

Um PWSTR se UNICODE estiver definido, um PSTR caso contrário. Para obter mais informações, consulte Tipos de dados do Windows para cadeias de caracteres.

Este tipo é declarado em WinNT.h da seguinte forma:

C++
#ifdef UNICODE
 typedef LPWSTR PTSTR;
#else typedef LPSTR PTSTR;
#endif
PUCHAR

Um ponteiro para um UCHAR.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef UCHAR *PUCHAR;

PUHALF_PTR

Um ponteiro para um UHALF_PTR.

Este tipo é declarado em BaseTsd.h da seguinte forma:

C++
#ifdef _WIN64
 typedef UHALF_PTR *PUHALF_PTR;
#else
 typedef UHALF_PTR *PUHALF_PTR;
#endif
PUINT

Um ponteiro para um UINT.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef UINT *PUINT;

PUINT_PTR

Um ponteiro para um UINT_PTR.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef UINT_PTR *PUINT_PTR;

PUINT8

Um ponteiro para um UINT8.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef UINT8 *PUINT8;

PUINT16

Um ponteiro para um UINT16.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef UINT16 *PUINT16;

PUINT32

Um ponteiro para um UINT32.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef UINT32 *PUINT32;

PUINT64

Um ponteiro para um UINT64.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef UINT64 *PUINT64;

PULONG

Um ponteiro para um ULONG.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef ULONG *PULONG;

PULONGLONG

Um ponteiro para um ULONGLONG.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef ULONGLONG *PULONGLONG;

PULONG_PTR

Um ponteiro para um ULONG_PTR.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef ULONG_PTR *PULONG_PTR;

PULONG32

Um ponteiro para um ULONG32.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef ULONG32 *PULONG32;

PULONG64

Um ponteiro para um ULONG64.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef ULONG64 *PULONG64;

PUSHORT

Um ponteiro para um USHORT.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef USHORT *PUSHORT;

PVOID

Um ponteiro para qualquer tipo.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef void *PVOID;

PWCHAR

Um ponteiro para um WCHAR.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef WCHAR *PWCHAR;

PWORD

Um ponteiro para um WORD.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef WORD *PWORD;

PWSTR

Um ponteiro para uma cadeia de caracteres Unicode terminada em nulo de 16 bits. Para obter mais informações, consulte conjuntos de caracteres usados por fontes.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef WCHAR *PWSTR;

QWORD

Um inteiro não assinado de 64 bits.

Este tipo é declarado da seguinte forma:

typedef unsigned __int64 QWORD;

SC_HANDLE

Um identificador para um banco de dados do gerenciador de controle de serviço. Para obter mais informações, consulte SCM Handles.

Este tipo é declarado em WinSvc.h da seguinte forma:

typedef HANDLE SC_HANDLE;

SC_LOCK

Um bloqueio para um banco de dados do gerenciador de controle de serviço. Para obter mais informações, consulte SCM Handles.

Este tipo é declarado em WinSvc.h da seguinte forma:

typedef LPVOID SC_LOCK;

SERVICE_STATUS_HANDLE

Um identificador para um valor de status de serviço. Para obter mais informações, consulte SCM Handles.

Este tipo é declarado em WinSvc.h da seguinte forma:

typedef HANDLE SERVICE_STATUS_HANDLE;

SHORT

Um inteiro de 16 bits. O intervalo é -32768 a 32767 decimais.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef short SHORT;

SIZE_T

O número máximo de bytes para o qual um ponteiro pode apontar. Use para uma contagem que deve abranger todo o intervalo de um ponteiro.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef ULONG_PTR SIZE_T;

SSIZE_T

Uma versão assinada do SIZE_T.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef LONG_PTR SSIZE_T;

TBYTE

Um WCHAR se UNICODE estiver definido, um CHAR caso contrário.

Este tipo é declarado em WinNT.h da seguinte forma:

C++
#ifdef UNICODE
 typedef WCHAR TBYTE;
#else
 typedef unsigned char TBYTE;
#endif
TCHAR

Um WCHAR se UNICODE estiver definido, um CHAR caso contrário.

Este tipo é declarado em WinNT.h da seguinte forma:

C++
#ifdef UNICODE
 typedef WCHAR TCHAR;
#else
 typedef char TCHAR;
#endif
UCHAR

Um não assinado CHAR.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef unsigned char UCHAR;

UHALF_PTR

Uma HALF_PTRnão assinada . Use dentro de uma estrutura que contém um ponteiro e dois campos pequenos.

Este tipo é declarado em BaseTsd.h da seguinte forma:

C++
#ifdef _WIN64
 typedef unsigned int UHALF_PTR;
#else
 typedef unsigned short UHALF_PTR;
#endif
UINT

Uma não assinada INT. O intervalo é de 0 a 4294967295 decimal.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef unsigned int UINT;

UINT_PTR

Um INT_PTRnão assinado .

Este tipo é declarado em BaseTsd.h da seguinte forma:

C++
#if defined(_WIN64)
 typedef unsigned __int64 UINT_PTR;
#else
 typedef unsigned int UINT_PTR;
#endif
UINT8

Um não assinado INT8.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef unsigned char UINT8;

UINT16

Um não assinado INT16.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef unsigned short UINT16;

UINT32

Um não assinado INT32. O intervalo é de 0 a 4294967295 decimal.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef unsigned int UINT32;

UINT64

Um não assinado INT64. O intervalo é de 0 a 18446744073709551615 decimal.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef unsigned __int64 UINT64;

ULONG

Um não assinado LONG. O intervalo é de 0 a 4294967295 decimal.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef unsigned long ULONG;

ULONGLONG

Um inteiro não assinado de 64 bits. O intervalo é de 0 a 18446744073709551615 decimal.

Este tipo é declarado em WinNT.h da seguinte forma:

C++
#if !defined(_M_IX86)
 typedef unsigned __int64 ULONGLONG;
#else
 typedef double ULONGLONG;
#endif
ULONG_PTR

Uma LONG_PTRnão assinada .

Este tipo é declarado em BaseTsd.h da seguinte forma:

C++
#if defined(_WIN64)
 typedef unsigned __int64 ULONG_PTR;
#else
 typedef unsigned long ULONG_PTR;
#endif
ULONG32

Um não assinado LONG32. O intervalo é de 0 a 4294967295 decimal.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef unsigned int ULONG32;

ULONG64

Um não assinado LONG64. O intervalo é de 0 a 18446744073709551615 decimal.

Este tipo é declarado em BaseTsd.h da seguinte forma:

typedef unsigned __int64 ULONG64;

UNICODE_STRING

Uma cadeia de caracteres Unicode.

Este tipo é declarado em Winternl.h da seguinte forma:

C++
typedef struct _UNICODE_STRING {
  USHORT  Length;
  USHORT  MaximumLength;
  PWSTR  Buffer;
} UNICODE_STRING;
typedef UNICODE_STRING *PUNICODE_STRING;
typedef const UNICODE_STRING *PCUNICODE_STRING;
USHORT

Um não assinado SHORT. O intervalo é de 0 a 65535 decimais.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef unsigned short USHORT;

USN

Um número de sequência de atualização (USN).

Este tipo é declarado em WinNT.h da seguinte forma:

typedef LONGLONG USN;

VOID

Qualquer tipo.

Este tipo é declarado em WinNT.h da seguinte forma:

#define VOID void

WCHAR

Um caractere Unicode de 16 bits. Para obter mais informações, consulte conjuntos de caracteres usados por fontes.

Este tipo é declarado em WinNT.h da seguinte forma:

typedef wchar_t WCHAR;

WINAPI

A convenção de chamada para funções do sistema.

Este tipo é declarado em WinDef.h da seguinte forma:

#define WINAPI __stdcall

CALLBACK , WINAPIe APIENTRY são usados para definir funções com a convenção de chamada __stdcall. A maioria das funções na API do Windows são declaradas usando WINAPI. Você pode usar CALLBACK para as funções de retorno de chamada que você implementa para ajudar a identificar a função como uma função de retorno de chamada.

WORD

Um inteiro não assinado de 16 bits. O intervalo é de 0 a 65535 decimais.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef unsigned short WORD;

WPARAM

Um parâmetro message.

Este tipo é declarado em WinDef.h da seguinte forma:

typedef UINT_PTR WPARAM;

Requerimentos

Exigência Valor
Cliente mínimo suportado
Windows XP [apenas aplicações de ambiente de trabalho]
Servidor mínimo suportado
Windows Server 2003 [apenas aplicações de ambiente de trabalho]
Cabeçalho
BaseTsd.h;
WinDef.h;
WinNT.h