Tipos de dados do Windows

Os tipos de dados compatíveis com o 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 Intervalos de tipo de dados.

A tabela a seguir contém os seguintes tipos: caractere, inteiro, booliano, ponteiro e identificador. Os tipos caractere, inteiro e booliano 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 lidar com inteiros de 64 bits, confira Inteiros Grandes.

Tipo de dados Descrição
APIENTRY A convenção de chamada para funções do sistema.
Esse tipo é declarado em WinDef.h da seguinte maneira:
#define APIENTRY WINAPI
ÁTOMO Um átomo. Para obter mais informações, consulte Sobre tabelas atom.
Esse tipo é declarado em WinDef.h da seguinte maneira:
typedef WORD ATOM;
BOOL Uma variável booliana (deve ser TRUE ou FALSE).
Esse tipo é declarado em WinDef.h da seguinte maneira:
typedef int BOOL;
BOOLEAN Uma variável booliana (deve ser TRUE ou FALSE).
Esse tipo é declarado em WinNT.h da seguinte maneira:
typedef BYTE BOOLEAN;
BYTE Um byte (8 bits).
Esse tipo é declarado em WinDef.h da seguinte maneira:
typedef unsigned char BYTE;
CALLBACK A convenção de chamada para funções de retorno de chamada.
Esse tipo é declarado em WinDef.h da seguinte maneira:
#define CALLBACK __stdcall
CALLBACK, WINAPI e APIENTRY são todos usados para definir funções com a convenção de chamada __stdcall. A maioria das funções na API do Windows é declarada usando WINAPI. Talvez você queira usar CALLBACK para as funções de retorno de chamada implementadas para ajudar a identificar a função como uma função de retorno de chamada.
CCHAR Um caractere ANSI (Windows) de 8 bits.
Esse tipo é declarado em WinNT.h da seguinte maneira:
typedef char CCHAR;
CHAR Um caractere ANSI (Windows) de 8 bits. Para obter mais informações, consulte Conjuntos de caracteres usados por fontes.
Esse tipo é declarado em WinNT.h da seguinte maneira:
typedef char CHAR;
COLORREF O valor de cor vermelho, verde, azul (RGB) (32 bits). Consulte COLORREF para obter informações sobre esse tipo.
Esse tipo é declarado em WinDef.h da seguinte maneira:
typedef DWORD COLORREF;
CONST Uma variável cujo valor deve permanecer constante durante a execução.
Esse tipo é declarado em WinDef.h da seguinte maneira:
#define CONST const
DWORD Um inteiro sem sinal de 32 bits. O intervalo é de 0 a 4294967295 decimal.
Esse tipo é declarado em IntSafe.h da seguinte maneira:
typedef unsigned long DWORD;
DWORDLONG Um inteiro sem sinal de 64 bits. O intervalo é de 0 a 18446744073709551615 decimal.
Esse tipo é declarado em IntSafe.h da seguinte maneira:
typedef unsigned __int64 DWORDLONG;
DWORD_PTR Um tipo longo sem sinal para precisão do ponteiro. Use ao converter um ponteiro em um tipo longo para executar aritmética do ponteiro. (Também comumente usado para parâmetros gerais de 32 bits que foram estendidos para 64 bits no Windows de 64 bits.)
Esse tipo é declarado em BaseTsd.h da seguinte maneira:
typedef ULONG_PTR DWORD_PTR;
DWORD32 Um inteiro sem sinal de 32 bits.
Esse tipo é declarado em BaseTsd.h da seguinte maneira:
typedef unsigned int DWORD32;
DWORD64 Um inteiro sem sinal de 64 bits.
Esse tipo é declarado em BaseTsd.h da seguinte maneira:
typedef unsigned __int64 DWORD64;
FLUTUAR Uma variável de ponto flutuante.
Esse tipo é declarado em WinDef.h da seguinte maneira:
typedef float FLOAT;
HACCEL Um identificador para uma tabela de aceleradores.
Esse tipo é declarado em WinDef.h da seguinte maneira:
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.
Esse tipo é declarado em BaseTsd.h da seguinte maneira:
C++
#ifdef _WIN64
 typedef int HALF_PTR;
#else
 typedef short HALF_PTR;
#endif
LIDAR COM

Um identificador para um objeto .

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

typedef PVOID HANDLE;

HBITMAP

Um identificador para um bitmap.

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

typedef HANDLE HBITMAP;

HBRUSH

Um identificador para um pincel.

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

typedef HANDLE HBRUSH;

HCOLORSPACE

Um identificador para um espaço de cor.

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

typedef HANDLE HCOLORSPACE;

HCONV

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

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

typedef HANDLE HCONV;

HCONVLIST

Um identificador para uma lista de conversas DDE.

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

typedef HANDLE HCONVLIST;

HCURSOR

Um identificador para um cursor.

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

typedef HICON HCURSOR;

HDC

Um identificador para um DC (contexto de dispositivo ).

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

typedef HANDLE HDC;

HDDEDATA

Um identificador para dados DDE.

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

typedef HANDLE HDDEDATA;

HDESK

Um identificador para uma área de trabalho.

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

typedef HANDLE HDESK;

HDROP

Um identificador para uma estrutura de soltar interna.

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

typedef HANDLE HDROP;

HDWP

Um identificador para uma estrutura de posição de janela adiada.

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

typedef HANDLE HDWP;

HENHMETAFILE

Um identificador para um meta-arquivo aprimorado.

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

typedef HANDLE HENHMETAFILE;

HFILE

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

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

typedef int HFILE;

HFONT

Um identificador para uma fonte.

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

typedef HANDLE HFONT;

HGDIOBJ

Um identificador para um objeto GDI.

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

typedef HANDLE HGDIOBJ;

HGLOBAL

Um identificador para um bloco de memória global.

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

typedef HANDLE HGLOBAL;

HHOOK

Um identificador para um gancho.

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

typedef HANDLE HHOOK;

HICON

Um identificador para um ícone.

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

typedef HANDLE HICON;

HINSTANCE

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

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

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

typedef HANDLE HINSTANCE;

HKEY

Um identificador de uma chave do registro.

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

typedef HANDLE HKEY;

HKL

Um identificador de localidade de entrada.

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

typedef HANDLE HKL;

HLOCAL

Um identificador para um bloco de memória local.

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

typedef HANDLE HLOCAL;

HMENU

Um identificador para um menu.

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

typedef HANDLE HMENU;

HMETAFILE

Um identificador para um metarquivo.

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

typedef HANDLE HMETAFILE;

HMODULE

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

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

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

typedef HINSTANCE HMODULE;

HMONITOR

Um identificador para um monitor de exibição.

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

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

HPALETTE

Um identificador para uma paleta.

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

typedef HANDLE HPALETTE;

HPEN

Um identificador para uma caneta.

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

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 HRESULT , use as macros FAILED e SUCCEEDED .

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

typedef LONG HRESULT;

HRGN

Um identificador para uma região.

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

typedef HANDLE HRGN;

HRSRC

Um identificador para um recurso.

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

typedef HANDLE HRSRC;

HSZ

Um identificador para uma cadeia de caracteres DDE.

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

typedef HANDLE HSZ;

HWINSTA

Um identificador para uma estação de janela.

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

typedef HANDLE WINSTA;

HWND

Um identificador para uma janela.

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

typedef HANDLE HWND;

INT

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

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

typedef int INT;

INT_PTR

Um tipo inteiro com sinal para precisão do ponteiro. Use ao converter um ponteiro em um inteiro para executar aritmética do ponteiro.

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

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

Um inteiro com sinal de 8 bits.

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

typedef signed char INT8;

INT16

Um inteiro de 16 bits com sinal.

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

typedef signed short INT16;

INT32

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

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

typedef signed int INT32;

INT64

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

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

typedef signed __int64 INT64;

LANGID

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

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

typedef WORD LANGID;

LCID

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

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

typedef DWORD LCID;

LCTYPE

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

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

typedef DWORD LCTYPE;

LGRPID

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

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

typedef DWORD LGRPID;

LONGAS

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

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

typedef long LONG;

LONGLONG

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

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

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

Um tipo longo assinado para precisão do ponteiro. Use ao converter um ponteiro em um long para executar aritmética do ponteiro.

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

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

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

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

typedef signed int LONG32;

LONG64

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

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

typedef __int64 LONG64;

LPARAM

Um parâmetro de mensagem.

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

typedef LONG_PTR LPARAM;

LPBOOL

Um ponteiro para um BOOL.

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

typedef BOOL far *LPBOOL;

LPBYTE

Um ponteiro para um BYTE.

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

typedef BYTE far *LPBYTE;

LPCOLORREF

Um ponteiro para um valor COLORREF .

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

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.

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

typedef __nullterminated CONST CHAR *LPCSTR;

LPCTSTR

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

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

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

Um ponteiro para uma constante de qualquer tipo.

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

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.

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

typedef CONST WCHAR *LPCWSTR;

LPDWORD

Um ponteiro para um DWORD.

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

typedef DWORD *LPDWORD;

LPHANDLE

Um ponteiro para um HANDLE.

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

typedef HANDLE *LPHANDLE;

LPINT

Um ponteiro para um INT.

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

typedef int *LPINT;

LPLONG

Um ponteiro para um LONG.

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

typedef long *LPLONG;

LPSTR

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

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

typedef CHAR *LPSTR;

LPTSTR

Um LPWSTR se UNICODE for definido; caso contrário, um LPSTR . Para obter mais informações, consulte Tipos de dados do Windows para cadeias de caracteres.

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

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

Um ponteiro para qualquer tipo.

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

typedef void *LPVOID;

LPWORD

Um ponteiro para um WORD.

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

typedef WORD *LPWORD;

LPWSTR

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

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

typedef WCHAR *LPWSTR;

LRESULT

Resultado assinado do processamento de mensagens.

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

typedef LONG_PTR LRESULT;

PBOOL

Um ponteiro para um BOOL.

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

typedef BOOL *PBOOL;

PBOOLEAN

Um ponteiro para um BOOLEAN.

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

typedef BOOLEAN *PBOOLEAN;

PBYTE

Um ponteiro para um BYTE.

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

typedef BYTE *PBYTE;

PCHAR

Um ponteiro para um CHAR.

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

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.

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

typedef CONST CHAR *PCSTR;

PCTSTR

Um PCWSTR se UNICODE for definido; caso contrário, um PCSTR . Para obter mais informações, consulte Tipos de dados do Windows para cadeias de caracteres.

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

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.

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

typedef CONST WCHAR *PCWSTR;

PDWORD

Um ponteiro para um DWORD.

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

typedef DWORD *PDWORD;

PDWORDLONG

Um ponteiro para um DWORDLONG.

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

typedef DWORDLONG *PDWORDLONG;

PDWORD_PTR

Um ponteiro para um DWORD_PTR.

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

typedef DWORD_PTR *PDWORD_PTR;

PDWORD32

Um ponteiro para um DWORD32.

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

typedef DWORD32 *PDWORD32;

PDWORD64

Um ponteiro para um DWORD64.

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

typedef DWORD64 *PDWORD64;

PFLOAT

Um ponteiro para um FLOAT.

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

typedef FLOAT *PFLOAT;

PHALF_PTR

Um ponteiro para um HALF_PTR.

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

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

Um ponteiro para um HANDLE.

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

typedef HANDLE *PHANDLE;

PHKEY

Um ponteiro para um HKEY.

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

typedef HKEY *PHKEY;

CERVEJA

Um ponteiro para um INT.

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

typedef int *PINT;

PINT_PTR

Um ponteiro para um INT_PTR.

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

typedef INT_PTR *PINT_PTR;

PINT8

Um ponteiro para um INT8.

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

typedef INT8 *PINT8;

PINT16

Um ponteiro para um INT16.

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

typedef INT16 *PINT16;

PINT32

Um ponteiro para um INT32.

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

typedef INT32 *PINT32;

PINT64

Um ponteiro para um INT64.

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

typedef INT64 *PINT64;

PLCID

Um ponteiro para um LCID.

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

typedef PDWORD PLCID;

PLONG

Um ponteiro para um LONG.

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

typedef LONG *PLONG;

PLONGLONG

Um ponteiro para um LONGLONG.

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

typedef LONGLONG *PLONGLONG;

PLONG_PTR

Um ponteiro para um LONG_PTR.

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

typedef LONG_PTR *PLONG_PTR;

PLONG32

Um ponteiro para um LONG32.

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

typedef LONG32 *PLONG32;

PLONG64

Um ponteiro para um LONG64.

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

typedef LONG64 *PLONG64;

POINTER_32

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

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

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, esse é um ponteiro nativo. Em um sistema de 32 bits, esse é um ponteiro de 32 bits estendido por sinal.

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

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

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

Um ponteiro assinado.

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

#define POINTER_SIGNED __sptr

POINTER_UNSIGNED

Um ponteiro sem sinal.

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

#define POINTER_UNSIGNED __uptr

PSHORT

Um ponteiro para um SHORT.

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

typedef SHORT *PSHORT;

PSIZE_T

Um ponteiro para um SIZE_T.

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

typedef SIZE_T *PSIZE_T;

PSSIZE_T

Um ponteiro para um SSIZE_T.

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

typedef SSIZE_T *PSSIZE_T;

PSTR

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

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

typedef CHAR *PSTR;

PTBYTE

Um ponteiro para um TBYTE.

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

typedef TBYTE *PTBYTE;

PTCHAR

Um ponteiro para um TCHAR.

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

typedef TCHAR *PTCHAR;

PTSTR

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

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

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

Um ponteiro para um UCHAR.

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

typedef UCHAR *PUCHAR;

PUHALF_PTR

Um ponteiro para um UHALF_PTR.

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

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

Um ponteiro para um UINT.

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

typedef UINT *PUINT;

PUINT_PTR

Um ponteiro para um UINT_PTR.

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

typedef UINT_PTR *PUINT_PTR;

PUINT8

Um ponteiro para um UINT8.

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

typedef UINT8 *PUINT8;

PUINT16

Um ponteiro para um UINT16.

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

typedef UINT16 *PUINT16;

PUINT32

Um ponteiro para um UINT32.

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

typedef UINT32 *PUINT32;

PUINT64

Um ponteiro para um UINT64.

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

typedef UINT64 *PUINT64;

PULONG

Um ponteiro para um ULONG.

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

typedef ULONG *PULONG;

PULONGLONG

Um ponteiro para um ULONGLONG.

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

typedef ULONGLONG *PULONGLONG;

PULONG_PTR

Um ponteiro para um ULONG_PTR.

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

typedef ULONG_PTR *PULONG_PTR;

PULONG32

Um ponteiro para um ULONG32.

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

typedef ULONG32 *PULONG32;

PULONG64

Um ponteiro para um ULONG64.

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

typedef ULONG64 *PULONG64;

PUSHORT

Um ponteiro para um USHORT.

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

typedef USHORT *PUSHORT;

PVOID

Um ponteiro para qualquer tipo.

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

typedef void *PVOID;

PWCHAR

Um ponteiro para um WCHAR.

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

typedef WCHAR *PWCHAR;

PWORD

Um ponteiro para um WORD.

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

typedef WORD *PWORD;

PWSTR

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

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

typedef WCHAR *PWSTR;

QWORD

Um inteiro sem sinal de 64 bits.

Esse tipo é declarado da seguinte maneira:

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 Identificadores SCM.

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

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 Identificadores SCM.

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

typedef LPVOID SC_LOCK;

SERVICE_STATUS_HANDLE

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

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

typedef HANDLE SERVICE_STATUS_HANDLE;

CURTO

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

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

typedef short SHORT;

SIZE_T

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

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

typedef ULONG_PTR SIZE_T;

SSIZE_T

Uma versão assinada do SIZE_T.

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

typedef LONG_PTR SSIZE_T;

TBYTE

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

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

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

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

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

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

Um CHAR sem sinal.

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

typedef unsigned char UCHAR;

UHALF_PTR

Um HALF_PTR sem sinal. Use dentro de uma estrutura que contém um ponteiro e dois campos pequenos.

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

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

Um INT sem sinal. O intervalo é de 0 a 4294967295 decimal.

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

typedef unsigned int UINT;

UINT_PTR

Um INT_PTR sem sinal.

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

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

Um INT8 sem sinal.

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

typedef unsigned char UINT8;

UINT16

Um INT16 sem sinal.

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

typedef unsigned short UINT16;

UINT32

Um INT32 sem sinal. O intervalo é de 0 a 4294967295 decimal.

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

typedef unsigned int UINT32;

UINT64

Um INT64 sem sinal. O intervalo é de 0 a 18446744073709551615 decimal.

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

typedef unsigned __int64 UINT64;

ULONG

Um LONG sem sinal. O intervalo é de 0 a 4294967295 decimal.

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

typedef unsigned long ULONG;

ULONGLONG

Um inteiro sem sinal de 64 bits. O intervalo é de 0 a 18446744073709551615 decimal.

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

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

Um LONG_PTR sem sinal.

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

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

Um LONG32 sem sinal. O intervalo é de 0 a 4294967295 decimal.

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

typedef unsigned int ULONG32;

ULONG64

Um LONG64 sem sinal. O intervalo é de 0 a 18446744073709551615 decimal.

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

typedef unsigned __int64 ULONG64;

UNICODE_STRING

Uma cadeia de caracteres Unicode.

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

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 SHORT sem sinal. O intervalo é de 0 a 65535 decimal.

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

typedef unsigned short USHORT;

USN

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

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

typedef LONGLONG USN;

VAZIO

Qualquer tipo.

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

#define VOID void

WCHAR

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

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

typedef wchar_t WCHAR;

WINAPI

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

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

#define WINAPI __stdcall

CALLBACK, WINAPI e APIENTRY são todos usados para definir funções com a convenção de chamada __stdcall. A maioria das funções na API do Windows é declarada usando WINAPI. Talvez você queira usar CALLBACK para as funções de retorno de chamada implementadas para ajudar a identificar a função como uma função de retorno de chamada.

PALAVRA

Um inteiro sem sinal de 16 bits. O intervalo é de 0 a 65535 decimal.

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

typedef unsigned short WORD;

WPARAM

Um parâmetro de mensagem.

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

typedef UINT_PTR WPARAM;

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Windows Server 2003 [somente aplicativos da área de trabalho]
Cabeçalho
BaseTsd.h;
WinDef.h;
WinNT.h