|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
EnumPrinters
The EnumPrinters function enumerates available printers, print servers, domains, or print providers.
BOOL EnumPrinters(
DWORD Flags, // types of printer objects to enumerate LPTSTR Name, // name of printer object DWORD Level, // specifies type of printer info structure LPBYTE pPrinterEnum, // pointer to buffer to receive printer info structures DWORD cbBuf, // size, in bytes, of array LPDWORD pcbNeeded, // pointer to variable with no. of bytes copied (or required) LPDWORD pcReturned // pointer to variable with no. of printer info. structures copied );
Parameters
Flags
Specifies the types of print objects that the function should enumerate. This value can be a combination of the following constants:
Value Meaning PRINTER_ENUM_LOCAL The function ignores the Name parameter, and enumerates the locally installed printers.Windows 95: The function will also enumerate network printers because they are handled by the local print provider. PRINTER_ENUM_NAME The function enumerates the printer identified by Name. This can be a server, a domain, or a print provider. If Name is NULL, the function enumerates available print providers. PRINTER_ENUM_SHARED The function enumerates printers that have the shared attribute. Cannot be used in isolation; use an OR operation to combine with another PRINTER_ENUM type. PRINTER_ENUM_DEFAULT Windows 95 only: The function returns information about the default printer. PRINTER_ENUM_CONNECTIONS Windows NT only: The function enumerates the list of printers to which the user has made previous connections. PRINTER_ENUM_NETWORK Windows NT only: The function enumerates network printers in the computer's domain. This value is valid only if Level is 1. PRINTER_ENUM_REMOTE Windows NT only: The function enumerates network printers and print servers in the computer's domain. This value is valid only if Level is 1.
If Level is 4, you can only use the PRINTER_ENUM_CONNECTIONS and PRINTER_ENUM_LOCAL constants.
Name
If Level is 1, Flags contains PRINTER_ENUM_NAME, and Name is non-NULL, Name points to a null-terminated string that specifies the name of the object to enumerate. This string can be the name of a server, a domain, or a print provider. If Level is 1, Flags contains PRINTER_ENUM_NAME, and Name is NULL, the function enumerates the available print providers. If Level is 1, Flags contains PRINTER_ENUM_REMOTE, and Name is NULL, the function enumerates the printers in the user's domain.
If Level is 2 or 5, Name points to a null-terminated string that specifies the name of a server whose printers are to be enumerated. If this string is NULL, the function enumerates the printers installed on the local machine. If Level is 4, Name should be NULL. The function always queries on the local machine. When Name is NULL, it enumerates printers that are installed on the local machine. These printers include those that are physically attached to the local machine as well as remote printers to which it has a network connection.
Level
Specifies the type of data structures pointed to by pPrinterEnum. Valid values are 1, 2, 4, and 5, which correspond to the PRINTER_INFO_1, PRINTER_INFO_2, PRINTER_INFO_4, and PRINTER_INFO_5 data structures. Windows 95: The value can be 1, 2, or 5. Windows NT: This value can be 1, 2, 4, or 5.
pPrinterEnum
Pointer to a buffer that receives an array of PRINTER_INFO_1, PRINTER_INFO_2, PRINTER_INFO_4, or PRINTER_INFO_5 structures. Each structure contains data that describes an available print object. If Level is 1, the array contains PRINTER_INFO_1 structures. If Level is 2, the array contains PRINTER_INFO_2 structures. If Level is 4, the array contains PRINTER_INFO_4 structures. If Level is 5, the array contains PRINTER_INFO_5 structures.
Windows 95: The buffer cannot receive PRINTER_INFO_4 structures. It can receive any of the other types.
cbBuf
Specifies the size, in bytes, of the array pointed to by pPrinterEnum.
pcbNeeded
Pointer to a value that receives the number of bytes copied if the function succeeds or the number of bytes required if cbBuf is too small.
pcReturned
Pointer to a value that receives the number of PRINTER_INFO_1, PRINTER_INFO_2, PRINTER_INFO_4, or PRINTER_INFO_5 structures that the function returns in the array to which pPrinterEnum points.
Return Values
If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
If EnumPrinters returns a PRINTER_INFO_1 structure in which PRINTER_ENUM_CONTAINER is specified, this indicates that there is a hierarchy of printer objects. An application can enumerate the hierarchy by calling EnumPrinters again, setting Name to the value of the PRINTER_INFO_1 structure's pName member. The EnumPrinters function does not retrieve security information. If PRINTER_INFO_2 structures are returned in the array pointed to by pPrinterEnum, their pSecurityDescriptor members will be set to NULL.
To get information about the default printer, call the GetProfileString function with the section name string set to "windows" and the key name string set to "device". The returned string contains the name of the default printer, the name of the printer DRV file, and the port to which the printer is attached.
Windows NT:
The PRINTER_INFO_4 structure provides an easy and extremely fast way to retrieve the names of the printers installed on a local machine, as well as the remote connections that a user has established. When EnumPrinters is called with a PRINTER_INFO_4 data structure, that function queries the registry for the specified information, then returns immediately. This differs from the behavior of EnumPrinters when called with other levels of PRINTER_INFO_* data structures. In particular, when EnumPrinters is called with a level 2 (PRINTER_INFO_2) data structure, it performs an OpenPrinter call on each remote connection. If a remote connection is down, or the remote server no longer exists, or the remote printer no longer exists, the function must wait for RPC to time out and consequently fail the OpenPrinter call. This can take a while. Passing a PRINTER_INFO_4 structure lets an application retrieve a bare minimium of required information; if more detailed information is desired, a subsequent EnumPrinter level 2 call can be made.
Windows 95:
To quickly enumerate local and network printers, use the PRINTER_INFO_5 structure. This causes EnumPrinters to query the registry rather than make remote calls, and is similar to using the PRINTER_INFO_4 structure on Windows NT as described in the preceding paragraph.
Examples
The following table shows the EnumPrinters output for various Flags values when the Level parameter is set to 1. In the Name parameter column of the table, you should substitute an appropriate name for Print Provider, Domain, and Machine. For example, for Print Provider, you could use the name of the Windows NT network print provider: "Windows NT Remote Printers", or the name of the Windows 95 local print provider: "Windows 95 Local Print Provider". To get print provider names, call EnumPrinters with Name set to NULL.
Flags parameter Name parameter Result PRINTER_ENUM_LOCAL The Name parameter is ignored. All local printers.Windows 95: Also enumerates network printers because they are installed locally. PRINTER_ENUM_NAME "Print Provider" All domain names PRINTER_ENUM_NAME Windows NT only: "Print Provider!Domain" All printers and print servers in the computer's domain PRINTER_ENUM_NAME Windows NT only: "Print Provider!!\\Machine" All printers shared at \\Machine PRINTER_ENUM_NAME Windows NT: An empty string, ""Windows 95: The name of the local machine or the local print provider. All local printers.Windows 95: Also enumerates network printers because they are installed locally. PRINTER_ENUM_NAME NULL All print providers in the computer's domain Windows NT only: PRINTER_ENUM_CONNECTIONS The Name parameter is ignored. All connected remote printers Windows NT only: PRINTER_ENUM_NETWORK The Name parameter is ignored. All printers in the computer's domain Windows NT only: PRINTER_ENUM_REMOTE An empty string, "" All printers and print servers in the computer's domain Windows NT only: PRINTER_ENUM_REMOTE "Print Provider" Same as PRINTER_ENUM_NAME Windows NT only: PRINTER_ENUM_REMOTE "Print Provider!Domain" All printers and print servers in computer's domain, regardless of Domain specified.
See Also
AddPrinter, DeletePrinter, GetPrinter, GetProfileString, PRINTER_INFO_1, PRINTER_INFO_2, PRINTER_INFO_4, PRINTER_INFO_5, SetPrinter
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
EnumPrinters
Функция EnumPrinters перечисляет доступные принтеры, печатает серверы, области или печатает поставщиков.
BOOL EnumPrinters(
DWORD СИГНАЛИЗИРУЕТ, // типы объектов принтера против перечислять Имя LPTSTR, // имя принтера объектного Уровня DWORD, // определяет тип инфо структуры принтера LPBYTE pPrinterEnum, // указателя, чтобы буферизоваться, чтобы получать инфо структуры принтера DWORD cbBuf, // размера, в байтах, массива LPDWORD pcbNeeded, // указатель в переменную с no. байтов скопированных (или требовавшееся) LPDWORD pcReturned // указатель в переменную с no. инфо структур принтера скопированного );
Параметры
Флаги
Определяет типы объектов распечатки, что функция должна перечислить. Эта величина может быть комбинацией следующих констант:
Значение Величины PRINTER_ENUM_LOCAL функция игнорирует параметр Имени и перечисляет локально включенные принтеры.Windows 95: функция также перечислит сетевые принтеры поскольку они прооперированы локальным поставщиком распечатки. PRINTER_ENUM_NAME функция перечисляет принтер идентифицированный по имени. Это может быть сервером, область, или поставщиком распечатки. Если Имя НЕДЕЙСТВИТЕЛЬНО, функция перечисляет доступных поставщиков распечатки. PRINTER_ENUM_SHARED функция перечисляет принтеры, которые имеют коллективный атрибут. Не может быть использовано в изоляции; используйте ИЛИ операцию, чтобы объединяться с другим типом PRINTER_ENUM. PRINTER_ENUM_DEFAULT Windows 95 только: функция возвращает информацию о по умолчанию принтере. PRINTER_ENUM_CONNECTIONS Windows NT только: функция перечисляет список принтеров на которых пользователь был сделан предшествующие связи. PRINTER_ENUM_NETWORK Windows NT только: функция перечисляет сетевые принтеры в компьютерной области. Эта величина - в силе только если Уровень - 1. PRINTER_ENUM_REMOTE Windows NT только: функция перечисляет сетевые принтеры и печатает серверы в компьютерной области. Эта величина - в силе только если Уровень - 1.
Если Уровень - 4, Вы можете только использовать PRINTER_ENUM_CONNECTIONS и константы PRINTER_ENUM_LOCAL.
Имя
Если Уровень - 1, Флаги содержит PRINTER_ENUM_NAME, и Имя не-НЕДЕЙСТВИТЕЛЬНО, точки Имени на недействительный расторгнутую строку, которые определяют имя объекта против перечисляться. Эта строка может быть именем сервера, область, или поставщиком распечатки. Если Уровень - 1, Флаги содержит PRINTER_ENUM_NAME, и Имя НЕДЕЙСТВИТЕЛЬНО, функция перечисляет доступных поставщиков распечатки. Если Уровень - 1, Флаги содержит PRINTER_ENUM_REMOTE, и Имя НЕДЕЙСТВИТЕЛЬНО, функция перечисляет принтеры в области пользователя.
Если Уровень - 2 или 5, Назовите точки на недействительный расторгнутую строку, которые определяют имя сервера, чьи принтеры должны быть перечислены. Если эта строка НЕДЕЙСТВИТЕЛЬНА, функция перечисляет принтеры установленные в локальной машине. Если Уровень - 4, Имя должно быть НЕДЕЙСТВИТЕЛЬНО. Функциональные всегда запросы в локальной машине. Когда Имя НЕДЕЙСТВИТЕЛЬНО, оно перечисляет принтеры, которые установлены в локальной машине. Эти принтеры включают те которые физически приложены к локальной машине, а также дистанционные принтеры на которые у него есть сетевая связь.
Уровень
Определяет тип структур данных указанных, чтобы pPrinterEnum. Правильные величины - 1, 2, 4, и 5, которые переписываются в PRINTER_INFO_1, PRINTER_INFO_2, PRINTER_INFO_4, и структуры данных PRINTER_INFO_5. Windows 95: величина может быть 1, 2, или 5. Windows NT: Эта величина может быть 1, 2, 4, или 5.
pPrinterEnum
Указатель в буфер, который получает массив PRINTER_INFO_1, PRINTER_INFO_2, PRINTER_INFO_4, или структур PRINTER_INFO_5. Каждая структура содержит данные, которые описывают доступный объект распечатки. Если Уровень - 1, массив содержит структуры PRINTER_INFO_1. Если Уровень - 2, массив содержит структуры PRINTER_INFO_2. Если Уровень - 4, массив содержит структуры PRINTER_INFO_4. Если Уровень - 5, массив содержит структуры PRINTER_INFO_5.
Windows 95: буфер не может получить структуры PRINTER_INFO_4. Это может получить любой из других типов.
cbBuf
Определяет размер, в байтах, массива указанного, чтобы pPrinterEnum.
pcbNeeded
Указатель в величину, которая получает количество байтов копировался если функция добивается успеха или количество байтов требовалось если cbBuf слишком небольшой.
pcReturned
Указатель в величину, которая получает число PRINTER_INFO_1, PRINTER_INFO_2, PRINTER_INFO_4, или структуры PRINTER_INFO_5, что функция возвращается в массив на который точки pPrinterEnum.
Обратные Величины
Если функция добивается успеха, обратная величина ненулевая. Если функция терпит неудачу, обратная величина нулевая. Для того, чтобы расширять информацию ошибки, назовите GetLastError.
Замечания
Если EnumPrinters возвращает структуру PRINTER_INFO_1 в которой PRINTER_ENUM_CONTAINER определен, это указывает, что есть иерархия объектов принтера. Приложение может перечислить иерархию вызывая EnumPrinters снова, устанавливая Имя в величину PRINTER_INFO_1 структурного элемента pName. Функция EnumPrinters не извлекает информацию безопасности. Если структуры PRINTER_INFO_2 возвращаны в массив указанный, чтобы pPrinterEnum, их участники pSecurityDescriptor будут установлены на НЕДЕЙСТВИТЕЛЬНЫЙ.
Для того, чтобы получать информацию о по умолчанию принтере, назовите функцию GetProfileString со строкой имени секции установленной в "окно" и ключевая строка имени установленные на "устройство". Возвращанная строка содержит имя по умолчанию принтера, имя файла принтера DRV, и порт на котором принтер приложен.
Windows NT:
Структура PRINTER_INFO_4 обеспечивает легкий и чрезвычайно быстрый путь извлекать имена принтеров установленных в локальной машине, а также дистанционные связи, что пользователь установил. Когда EnumPrinters назван структурой данных PRINTER_INFO_4, которая функционирует запросам регистрацию для определенной информации затем возвращается немедленно. Это отличается от поведения EnumPrinters когда названо другими уровнями PRINTER_INFO_* структуры данных. В конкретном, когда EnumPrinters назван уровнем 2 данных (PRINTER_INFO_2) структура, это выполняет OpenPrinter посещает каждую дистанционную связь. Если дистанционная связь - вниз, или дистанционный сервер больше не существует, или дистанционный принтер больше не существует, функция должна подождать RPC во время и следовательно терпеть неудачу вызов OpenPrinter. Это может взять пока. Прохождение структуры PRINTER_INFO_4 позволяет, приложение извлекает чистый minimium необходимой информации; если более подробная информация желательная, последующий уровень EnumPrinter 2 вызова может быть сделан.
Windows 95:
Для того, чтобы быстро перечислять локальные и сетевые принтеры, используйте структуру PRINTER_INFO_5. Это вызывает EnumPrinters на запрос регистрация а не делает дистанционными вызовами, и подобная использованию структуры PRINTER_INFO_4 на Windows NT как описано в предыдущем параграфе.
Примеры
Следующая таблица показывает выход EnumPrinters для различных величин Флагов когда параметр Уровня установлен на 1. В столбце параметра Имени таблицы, Вы должны заменять подходящий называть в честь Поставщика Распечатки, Области, и Машины. Например, для Поставщика Распечатки, Вы могли бы использовать имя сетевого поставщика распечатки Windows NT: "Дистанционные Принтеры Windows NT", или имя локального поставщика распечатки Windows 95: "Локальный Поставщик Распечатки Windows 95". Для того, чтобы получать имена поставщика распечатки, назовите EnumPrinters с Именем установленным на НЕДЕЙСТВИТЕЛЬНЫЙ.
Параметр Имени параметра Результата Флагов PRINTER_ENUM_LOCAL параметр Имени проигнорирован. Все локальные принтеры.Windows 95: Также перечисляет сетевые принтеры поскольку они устанавливаются локально. PRINTER_ENUM_NAME "Поставщик Распечатки" Вся область называет PRINTER_ENUM_NAME Windows NT только: "Поставщик Распечатки!Область" Все принтеры и серверы распечатки в компьютерной области PRINTER_ENUM_NAME Windows NT только: "Распечатка Provider!!\\Machine" Все принтеры распространялась в \\Машины PRINTER_ENUM_NAME Windows NT: пустая строка, ""Windows 95: имя локальной машины или локальный поставщик распечатки. Все локальные принтеры.Windows 95: Также перечисляет сетевые принтеры поскольку они устанавливаются локально. PRINTER_ENUM_NAME НЕДЕЙСТВИТЕЛЬНЫХ Всех поставщиков распечатки в компьютерной области Windows NT только: PRINTER_ENUM_CONNECTIONS параметр Имени проигнорирован. Все связывали дистанционные принтеры Windows NT только: PRINTER_ENUM_NETWORK параметр Имени проигнорирован. Все принтеры в компьютерной области Windows NT только: PRINTER_ENUM_REMOTE пустая строка, "" Все принтеры и серверы распечатки в компьютерной области Windows NT только: PRINTER_ENUM_REMOTE "Поставщик Распечатки" Также, как PRINTER_ENUM_NAME Windows NT только: PRINTER_ENUM_REMOTE "Поставщик Распечатки!Область" Все принтеры и серверы распечатки в компьютерной области, независимо от Области определенной.
Смотри Также
AddPrinter, DeletePrinter, GetPrinter, GetProfileString, PRINTER_INFO_1, PRINTER_INFO_2, PRINTER_INFO_4, PRINTER_INFO_5, SetPrinter
|
|
|
|
| |