pvoid c что это

Что такое тип данных PVOID?

Может кто-нибудь объяснить, что такое PVOID и как он используется в такой функции, как:

ОТВЕТЫ

Ответ 1

указатель void, такой же, как

aka «Указатель на что-то, но вам решать, чтобы понять это».

Ответ 2

Ответ 3

Если библиотека экспортирует функцию, которая может принимать несколько типов указателей, но хочет поддерживать такие языки, как C, которые не имеют перегрузки функций, тогда работает void *.

Ответ 4

Указатели и указатели пустот получают хорошее лечение в этой статье из http://cplusplus.com.

Ответ 5

Эта и другая мнемоника, такая как BOOL, LPCTSTR, имеют начало с Windows, BTW которой была разработана до существования стандарта C и не зависела в конкретном компиляторе, она использовала свои собственные типы.

Вы можете просмотреть блог Old New Thing, чтобы узнать больше о истории разработки Windows и о ее странностях, которые останутся у нас (http://blogs.msdn.com/oldnewthing).

Ответ 6

Похоже, это просто псевдоним (define или typedef) для void *. Я понятия не имею, почему люди думают, что это будет лучше, но я знаю, что некоторые API-интерфейсы любят использовать это в случае, если в будущем произойдет изменение типа.

Я знаю, что в ранних версиях Windows такие вещи, как STDCALL, были префиксом для многих функций, и определение STDCALL могло измениться в зависимости от той версии Windows, которую вы скомпилировали. Это из памяти (на которую на протяжении многих лет влияет алкоголь:-), поэтому не полагайтесь на это как на Евангелие. Это в основном правильно, но детали могут быть немного разными.

Источник

Аргумент типа *PVOID

Аргумент типа const char* не совместим с параметром типа TCHAR*
Здравствуйте, появилась проблема с кодом, при наведении на: NtOpenProcess, NtClose.

Аргумент типа const char* не совместим с параметром типа LPCWSTR
Начал учить win32 по книге Финогенова, вставил код первой проги в VS10, пишет мне ошибку «аргумент.

Вопрос темы: как узнать какой тип данных указывать аргументом, если функция просит void*.(я не просто так показал typedef’ы, а с целью выявить что изначально HANDLE == void*)

Добавлено через 14 секунд

Мне очень трудно понять что ты хочешь. Ты можешь написать простой пример, где будет воспроизводится твоя проблема? Не кусок непонятного кода, а именно пример, который можно будет скомпилировать.

Если ты имеешь в виду, что шаблоны не различают типы HMENU и void *, то это не так:

void foo(T) [with T = int]
void foo(T) [with T = char]
void foo(T) [with T = void*]
void foo(T) [with T = HMENU__*]

Добавлено через 24 секунды
Мне очень трудно понять что ты хочешь. Ты можешь написать простой пример, где будет воспроизводится твоя проблема? Не кусок непонятного кода, а именно пример, который можно будет скомпилировать.

Если ты имеешь в виду, что шаблоны не различают типы HMENU и void *, то это не так:

void foo(T) [with T = int]
void foo(T) [with T = char]
void foo(T) [with T = void*]
void foo(T) [with T = HMENU__*]

Добавлено через 1 минуту

Тип они может и различают, но какой в этом смысл?

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

Источник

Pvoid c что это

Типы данных Windows

Типы данных, поддерживаемые Microsoft ® Windows ® используются для определения возвращаемых значений функциями, параметров функций и сообщений и членов структур. Они определяют размер и значение этих элементов.

Булева переменная (должна быть ИСТИНА (TRUE) или ЛОЖЬ (FALSE)). Этот тип объявлен в Windef.h как показано ниже:

Булева переменная (должна быть ИСТИНА (TRUE) или ЛОЖЬ (FALSE)). Этот тип объявлен в Winnt.h как показано ниже:

Байт (8 бит). Этот тип объявлен в Windef.h как показано ниже:

Соглашение о вызовах для функций повторного вызова. Этот тип объявлен в Windef.h как показано ниже:

Переменная, значение которой остается постоянным в ходе выполнения программы. Этот тип объявлен в Windef.h как показано ниже:

32-разрядное беззнаковое целое число. Этот тип объявлен в Windef.h как показано ниже:

DWORDLONG64-разрядное беззнаковое целое число. Этот тип объявлен в Winnt.h как показано ниже:

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

Источник

What is PVOID data type?

Can someone explain what PVOID is and how it is used in a function like:

6 Answers 6

void pointer, same as

aka «Pointer to something, but it’s up to you to figure it out».

Pointers and void pointers are given a good treatment in this article from http://cplusplus.com.

This and other mnemonic like BOOL, LPCTSTR have it origin with Windows, which BTW was developed before the existence of a C standard, and to not depend in a particular compiler it used its own types.

You can check the Old New Thing blog for more stories about to the Windows development history, and its oddities which will remain with us (http://blogs.msdn.com/oldnewthing).

If you’re question is what use is a void pointer? The most common use is when you’re passing a pointer to memory that doesn’t really care about type. free(), for example.

If a library exports a function that can take multiple pointer types, but wants to support languages like C that don’t have function overloading, then void * works.

It sounds like it’s just an alias (define or typedef) for void*. I have no idea why people think that would be better but I know some APIs like to use that in case the implementation of a type changes in future.

I know that early versions of windows used things like STDCALL as a prefix to many functions and the definition of STDCALL could change based on which version of Windows you compiled for. This is from memory (which is affected by alcohol after many years :-), so don’t rely on this as gospel. It’s basically correct but the details might be a little different.

Источник

Что такое тип данных PVOID?

Может кто-нибудь объяснить, что такое PVOID и как он используется в такой функции, как:

ОТВЕТЫ

Ответ 1

указатель void, такой же, как

aka «Указатель на что-то, но вам решать, чтобы понять это».

Ответ 2

Ответ 3

Если библиотека экспортирует функцию, которая может принимать несколько типов указателей, но хочет поддерживать такие языки, как C, которые не имеют перегрузки функций, тогда работает void *.

Ответ 4

Указатели и указатели пустот получают хорошее лечение в этой статье из http://cplusplus.com.

Ответ 5

Эта и другая мнемоника, такая как BOOL, LPCTSTR, имеют начало с Windows, BTW которой была разработана до существования стандарта C и не зависела в конкретном компиляторе, она использовала свои собственные типы.

Вы можете просмотреть блог Old New Thing, чтобы узнать больше о истории разработки Windows и о ее странностях, которые останутся у нас (http://blogs.msdn.com/oldnewthing).

Ответ 6

Похоже, это просто псевдоним (define или typedef) для void *. Я понятия не имею, почему люди думают, что это будет лучше, но я знаю, что некоторые API-интерфейсы любят использовать это в случае, если в будущем произойдет изменение типа.

Я знаю, что в ранних версиях Windows такие вещи, как STDCALL, были префиксом для многих функций, и определение STDCALL могло измениться в зависимости от той версии Windows, которую вы скомпилировали. Это из памяти (на которую на протяжении многих лет влияет алкоголь:-), поэтому не полагайтесь на это как на Евангелие. Это в основном правильно, но детали могут быть немного разными.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *