Hopefully fail to break anything in the process of syncing with trunk (r47786)
svn path=/branches/reactos-yarotows/; revision=47795
|
@ -18,6 +18,7 @@
|
|||
<define name="TARGET_amd64" host="true" />
|
||||
|
||||
<define name="USE_COMPILER_EXCEPTIONS" />
|
||||
<define name ="NO_UNDERSCORE_PREFIX" />
|
||||
|
||||
<property name="PLATFORM" value="PC"/>
|
||||
<property name="usewrc" value="false"/>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* TRANSLATOR : Mário Kaèmár /Mario Kacmar/ aka Kario (kario@szm.sk)
|
||||
* DATE OF TR.: 30-01-2008
|
||||
* LAST CHANGE: 04-09-2009
|
||||
* LAST CHANGE: 31-05-2010
|
||||
* ---------------------------------------
|
||||
* TODO:
|
||||
* pridanie navigaèných znaèiek "&" ?
|
||||
|
@ -647,7 +647,7 @@ STRINGTABLE DISCARDABLE
|
|||
BEGIN
|
||||
IDS_TIME_DAYS "Dni"
|
||||
IDS_TIME_HOURS "Hodiny"
|
||||
IDS_TIME_NANOSECONDS "Nanoseconds"
|
||||
IDS_TIME_NANOSECONDS "Nanosekundy"
|
||||
IDS_TIME_MICROSECONDS "Mikrosekundy"
|
||||
IDS_TIME_MILLISECONDS "Milisekundy"
|
||||
IDS_TIME_MINUTES "Minúty"
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* Danish language support
|
||||
*
|
||||
* Copyright 2008 Jens Albretsen <jens@albretsen.dk>
|
||||
* 2010 Thomas Larsen
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -21,12 +22,19 @@
|
|||
|
||||
#include "reg.h"
|
||||
|
||||
#pragma code_page(65001)
|
||||
|
||||
LANGUAGE LANG_DANISH, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
STRING_USAGE, "Syntaksen for dette kommando er:\n\nREG [ ADD | DELETE | QUERY ]\nREG kommando /?\n"
|
||||
STRING_ADD_USAGE, "REG ADD nøgle_navn [/v værdi | /ve] [/t type] [/s separator] [/d data] [/f]\n"
|
||||
STRING_DELETE_USAGE, "REG DELETE nøgle_navn [/v værdi | /ve | /va] [/f]\n"
|
||||
STRING_QUERY_USAGE, "REG QUERY nøgle_navn [/v værdi | /ve] [/s]\n"
|
||||
STRING_ADD_USAGE, "REG ADD nøgle_navn [/v værdi | /ve] [/t type] [/s separator] [/d data] [/f]\n"
|
||||
STRING_DELETE_USAGE, "REG DELETE nøgle_navn [/v værdi | /ve | /va] [/f]\n"
|
||||
STRING_QUERY_USAGE, "REG QUERY nøgle_navn [/v værdi | /ve] [/s]\n"
|
||||
STRING_SUCCESS, "Operationen blev afsluttet med succes\n"
|
||||
STRING_INVALID_KEY, "Fejl: Ugyldigt nøgle navn\n"
|
||||
STRING_INVALID_CMDLINE, "Fejl: Ugyldige kommando linje parametre\n"
|
||||
STRING_NO_REMOTE, "Fejl: Kunne ikke tilføje nøgler til fjern maskinen\n"
|
||||
STRING_CANNOT_FIND, "Fejl: Systemet kunne ikke finde, den angivet registrerings nøgle eller værdi\n"
|
||||
}
|
||||
|
|
40
base/applications/cmdutils/reg/Es.rc
Normal file
|
@ -0,0 +1,40 @@
|
|||
/*
|
||||
* REG.EXE - Wine-compatible reg program.
|
||||
* Spanish language support
|
||||
*
|
||||
* Copyright 2010 José Rostagno
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "reg.h"
|
||||
|
||||
/* UTF-8 */
|
||||
#pragma code_page(65001)
|
||||
|
||||
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
STRING_USAGE, "La sintaxis de este comando es:\n\nREG [ ADD | DELETE | QUERY ]\nREG comando /?\n"
|
||||
STRING_ADD_USAGE, "REG ADD nombre_clave [/v nombre_valor | /ve] [/t tipo] [/s separador] [/d datos] [/f]\n"
|
||||
STRING_DELETE_USAGE, "REG DELETE nombre_clave [/v nombre_valor | /ve | /va] [/f]\n"
|
||||
STRING_QUERY_USAGE, "REG QUERY nombre_clave [/v nombre_valor | /ve] [/s]\n"
|
||||
STRING_SUCCESS, "La operación finalizó con éxito\n"
|
||||
STRING_INVALID_KEY, "Error: nombre de clave no válido\n"
|
||||
STRING_INVALID_CMDLINE, "Error: parámetros de línea de comandos inválidos\n"
|
||||
STRING_NO_REMOTE, "Error: No se puede agregar claves al equipo remoto\n"
|
||||
STRING_CANNOT_FIND, "Error: El sistema no pudo encontrar la clave o el valor del Registro especificado\n"
|
||||
}
|
|
@ -31,7 +31,7 @@ STRINGTABLE
|
|||
STRING_QUERY_USAGE, "REG QUERY sleutel_naam [/v waarde_naam | /ve] [/s]\n"
|
||||
STRING_SUCCESS, "De bewerking is succesvol voltooid\n"
|
||||
STRING_INVALID_KEY, "Fout: Foutieve sleutelnaam\n"
|
||||
STRING_INVALID_CMDLINE, "Fout: Foutieve commando regel parameters\n"
|
||||
STRING_INVALID_CMDLINE, "Fout: Foutieve commandoregel-parameters\n"
|
||||
STRING_NO_REMOTE, "Fout: Sleutels konden niet toegevoegd worden aan de remote machine\n"
|
||||
STRING_CANNOT_FIND, "Fout: Het systeem kon de gespecificeerde registry sleutel of waarde niet vinden\n"
|
||||
STRING_CANNOT_FIND, "Fout: Het systeem kon de gespecificeerde registersleutel of waarde niet vinden\n"
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
*
|
||||
* Copyright 2008 Andrew Riedi
|
||||
* Copyright 2008 Mikolaj Zalewski
|
||||
* Copyright 2010 Łukasz Wojniłowicz
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -30,4 +31,9 @@ STRINGTABLE
|
|||
STRING_ADD_USAGE, "REG ADD nazwa_klucza [/v nazwa_wartoœci | /ve] [/t typ] [/s separator] [/d dane] [/f]\n"
|
||||
STRING_DELETE_USAGE, "REG DELETE nazwa_klucza [/v nazwa_wartoœci | /ve | /va] [/f]\n"
|
||||
STRING_QUERY_USAGE, "REG QUERY nazwa_klucza [/v nazwa_wartoœci | /ve] [/s]\n"
|
||||
STRING_SUCCESS, "Operacja zakończona pomyślnie\n"
|
||||
STRING_INVALID_KEY, "Błąd: Niewłaściwa nazwa klucza\n"
|
||||
STRING_INVALID_CMDLINE, "Błąd: Niewłaściwe parametry wiersza poleceń\n"
|
||||
STRING_NO_REMOTE, "Błąd: Nie można dodać kluczy do zdalnej maszyny\n"
|
||||
STRING_CANNOT_FIND, "Błąd: System nie mógł znaleźć podanej wartości lub klucza rejestru\n"
|
||||
}
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
#include "Da.rc"
|
||||
#include "En.rc"
|
||||
#include "Ko.rc"
|
||||
#include "Nl.rc"
|
||||
#include "Pl.rc"
|
||||
|
||||
/* UTF-8 */
|
||||
#include "Da.rc"
|
||||
#include "De.rc"
|
||||
#include "Es.rc"
|
||||
#include "Fr.rc"
|
||||
#include "It.rc"
|
||||
#include "Ja.rc"
|
||||
|
|
|
@ -29,15 +29,15 @@ STRINGTABLE
|
|||
{
|
||||
STRING_INVPARMS, "Onjuist aantal parameters - Gebruik xcopy /? om hulp te krijgen\n"
|
||||
STRING_INVPARM, "Onjuiste parameter '%s' - Gebruik xcopy /? om hulp te krijgen\n"
|
||||
STRING_PAUSE, "Druk op <enter> om te beginnen met copiëren\n"
|
||||
STRING_SIMCOPY, "%d bestand(en) zouden worden gecopiëerd\n"
|
||||
STRING_COPY, "%d bestand(en) gecopiëerd\n"
|
||||
STRING_QISDIR, "Is '%s' een bestand of een directory\n" \
|
||||
STRING_PAUSE, "Druk op <enter> om te beginnen met kopiëren\n"
|
||||
STRING_SIMCOPY, "%d bestand(en) zouden worden gekopieerd\n"
|
||||
STRING_COPY, "%d bestand(en) gekopieerd\n"
|
||||
STRING_QISDIR, "Is '%s' een bestand of een map\n" \
|
||||
"op de bestemming?\n" \
|
||||
"(B - Bestand, D - Directory)\n"
|
||||
STRING_SRCPROMPT,"%s? (Ja|Nee)\n"
|
||||
STRING_OVERWRITE,"Overschrijven %s? (Ja|Nee|Alles)\n"
|
||||
STRING_COPYFAIL, "Copiëren van '%s' naar '%s' mislukt met r/c %d\n"
|
||||
STRING_COPYFAIL, "Kopiëren van '%s' naar '%s' mislukt met r/c %d\n"
|
||||
STRING_OPENFAIL, "Fout tijdens openen van '%s'\n"
|
||||
STRING_READFAIL, "Fout tijdens lezen van '%s'\n"
|
||||
STRING_YES_CHAR, "J"
|
||||
|
@ -47,7 +47,7 @@ STRINGTABLE
|
|||
STRING_DIR_CHAR, "D"
|
||||
|
||||
STRING_HELP,
|
||||
"XCOPY - Copiëerd bron bestanden of directory bomen naar een bestemming\n\
|
||||
"XCOPY - Kopieert bronbestanden of -mappen naar een bestemming\n\
|
||||
\n\
|
||||
Gebruik:\n\
|
||||
XCOPY bron [bestemming] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U]\n\
|
||||
|
@ -56,26 +56,26 @@ XCOPY bron [bestemming] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U]\n\
|
|||
Parameters:\n\
|
||||
\n\
|
||||
[/I] Als bestemming niet bestaat en 2 of meer bestanden worden\n\
|
||||
\tgecopiëerd, neem aan dat een directory werd bedoeld\n\
|
||||
[/S] Copiëer directories en subdirectories\n\
|
||||
[/E] Copiëer directories en subdirectories, inclusief lege\n\
|
||||
[/Q] Toon geen namen tijdens copiëren (stil).\n\
|
||||
[/F] Toon volledige bron- en bestemmingnamen tijdens copiëren\n\
|
||||
[/L] Simuleer de actie, toon de namen die gecopiëerd zouden worden\n\
|
||||
[/W] Wacht op gebruiker actie voordat de copiëeractie begint\n\
|
||||
[/T] Creëert de lege directory structuur maar copiëert geen bestanden\n\
|
||||
\tgekopieerd, neem aan dat een map werd bedoeld\n\
|
||||
[/S] Kopieer mappen en submappen\n\
|
||||
[/E] Kopieer mappen en submappen, inclusief lege\n\
|
||||
[/Q] Toon geen namen tijdens kopiëren (stil).\n\
|
||||
[/F] Toon volledige bron- en bestemmingnamen tijdens kopiëren\n\
|
||||
[/L] Simuleer de actie, toon de namen die gekopieerd zouden worden\n\
|
||||
[/W] Wacht op actie van de gebruiker voor het kopiëren begint\n\
|
||||
[/T] Creëert een lege mapstructuur, maar kopieert geen bestanden\n\
|
||||
[/Y] Onderdrukt gebruikersactie wanneer bestanden worden overschreven\n\
|
||||
[/-Y] Vraagt gebruikersactie wanneer bestanden worden overschreven\n\
|
||||
[/P] Vraagt gebruikersactie voor ieder bron bestand voor copiëren\n\
|
||||
[/N] Copiëer m.b.v korte bestandsnamen\n\
|
||||
[/U] Copiëer alleen bestanden die al bestaan op de bestemming\n\
|
||||
[/P] Vraagt gebruikersactie voor ieder bronbestand voor kopiëren\n\
|
||||
[/N] Kopieer m.b.v korte bestandsnamen\n\
|
||||
[/U] Kopieer alleen bestanden die al bestaan op de bestemming\n\
|
||||
[/R] Overschrijf alle schrijf-beveiligde bestanden\n\
|
||||
[/H] Inclusief verborgen en systeem bestanden\n\
|
||||
[/C] Ga door zelfs als er een fout optreed tijdens het copiëren\n\
|
||||
[/A] Copiëer alleen bestanden met archiverings attribuut aan\n\
|
||||
[/M] Copiëer alleen bestanden met archiverings attribuut aan, verwijderd\n\
|
||||
[/C] Ga door zelfs als er een fout optreed tijdens het kopiëren\n\
|
||||
[/A] Kopieer alleen bestanden met archiveringsattribuut aan\n\
|
||||
[/M] Kopieer alleen bestanden met archiveringsattribuut aan, verwijdert\n\
|
||||
\tdit archiveringsattribuut\n\
|
||||
[/D | /D:m-d-y] Copiëer nieuwe bestanden of die gewijzigd zijn na de opgegeven\n\
|
||||
\t\tdatum. Als geen detum wordt gegeven, copiëer alleen als bron nieuwer is.\n\n"
|
||||
[/D | /D:m-d-y] Kopieer bestanden die nieuw zijn of gewijzigd zijn na de opgegeven\n\
|
||||
\t\tdatum. Als geen datum wordt gegeven, kopieer alleen als bron nieuwer is.\n\n"
|
||||
|
||||
}
|
||||
|
|
|
@ -261,11 +261,13 @@ int wmain (int argc, WCHAR *argvW[])
|
|||
WINE_TRACE("Destination : '%s'\n", wine_dbgstr_w(supplieddestination));
|
||||
|
||||
/* Extract required information from source specification */
|
||||
XCOPY_ProcessSourceParm(suppliedsource, sourcestem, sourcespec, flags);
|
||||
rc = XCOPY_ProcessSourceParm(suppliedsource, sourcestem, sourcespec, flags);
|
||||
if (rc != RC_OK) return rc;
|
||||
|
||||
/* Extract required information from destination specification */
|
||||
XCOPY_ProcessDestParm(supplieddestination, destinationstem,
|
||||
rc = XCOPY_ProcessDestParm(supplieddestination, destinationstem,
|
||||
destinationspec, sourcespec, flags);
|
||||
if (rc != RC_OK) return rc;
|
||||
|
||||
/* Trace out the resulting information */
|
||||
WINE_TRACE("Resolved parameters:\n");
|
||||
|
|
89
base/applications/games/spider/lang/fr-FR.rc
Normal file
|
@ -0,0 +1,89 @@
|
|||
/*
|
||||
* PROJECT: Spider Solitaire
|
||||
* LICENSE: See COPYING in top level directory
|
||||
* FILE: base/applications/games/spider/lang/fr-FR.rc
|
||||
* PURPOSE: French Language File for Spider Solitaire
|
||||
* TRANSLATOR: Pierre Schweitzer
|
||||
*/
|
||||
|
||||
#include "resource.h"
|
||||
|
||||
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
|
||||
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_CARDBACK DIALOGEX 6, 6, 186, 104
|
||||
CAPTION "Sélectionnez le tarot des cartes"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_SHELLFONT
|
||||
BEGIN
|
||||
CONTROL "", IDC_CARDBACK1, "Static", SS_NOTIFY, 4, 7, 26, 32
|
||||
CONTROL "", IDC_CARDBACK2, "Static", SS_NOTIFY, 34, 7, 26, 32
|
||||
CONTROL "", IDC_CARDBACK3, "Static", SS_NOTIFY, 64, 7, 26, 32
|
||||
CONTROL "", IDC_CARDBACK4, "Static", SS_NOTIFY, 94, 7, 26, 32
|
||||
CONTROL "", IDC_CARDBACK5, "Static", SS_NOTIFY, 124, 7, 26, 32
|
||||
CONTROL "", IDC_CARDBACK6, "Static", SS_NOTIFY, 154, 7, 26, 32
|
||||
CONTROL "", IDC_CARDBACK7, "Static", SS_NOTIFY, 4, 46, 26, 32
|
||||
CONTROL "", IDC_CARDBACK8, "Static", SS_NOTIFY, 34, 46, 26, 32
|
||||
CONTROL "", IDC_CARDBACK9, "Static", SS_NOTIFY, 64, 46, 26, 32
|
||||
CONTROL "", IDC_CARDBACK10, "Static", SS_NOTIFY, 94, 46, 26, 32
|
||||
CONTROL "", IDC_CARDBACK11, "Static", SS_NOTIFY, 124, 46, 26, 32
|
||||
CONTROL "", IDC_CARDBACK12, "Static", SS_NOTIFY, 154, 46, 26, 32
|
||||
DEFPUSHBUTTON "OK", IDOK, 66, 84, 54, 13
|
||||
PUSHBUTTON "Annuler", IDCANCEL, 126, 84, 54, 13
|
||||
END
|
||||
|
||||
IDD_DIFFICULTY DIALOGEX DISCARDABLE 100, 100, 106, 80
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_SHELLFONT
|
||||
CAPTION "Difficulté"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
AUTORADIOBUTTON "Facile : &une couleur", IDC_DIF_ONECOLOR, 8, 10, 80, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "Moyenne : &deux couleurs", IDC_DIF_TWOCOLORS, 8, 23, 80, 10
|
||||
AUTORADIOBUTTON "Difficile : &quatre couleurs", IDC_DIF_FOURCOLORS, 8, 36, 80, 10
|
||||
|
||||
DEFPUSHBUTTON "OK", IDOK, 8, 58, 40, 14
|
||||
PUSHBUTTON "Annuler", IDCANCEL, 58, 58, 40, 14
|
||||
END
|
||||
|
||||
/* Strings */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_SPI_NAME "Spider"
|
||||
IDS_SPI_ABOUT "Spider Solitaire par Gregor Schneider\n\nCardLib version 1.0"
|
||||
IDS_SPI_QUIT "Quitter le jeu actuel ?"
|
||||
IDS_SPI_WIN "Félicitations, Vous avez gagné !"
|
||||
IDS_SPI_DEAL "Redistribuer ?"
|
||||
END
|
||||
|
||||
|
||||
/* Menus */
|
||||
|
||||
IDR_MENU1 MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "&Partie"
|
||||
BEGIN
|
||||
MENUITEM "&Donne\tF2", IDM_GAME_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Jeux...", IDM_GAME_DECK
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Quitter", IDM_GAME_EXIT
|
||||
END
|
||||
POPUP "&Aide"
|
||||
BEGIN
|
||||
MENUITEM "&Sommaire\tF1", IDM_HELP_CONTENTS
|
||||
MENUITEM "&À propos", IDM_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
|
||||
/* Accelerator */
|
||||
|
||||
IDR_ACCELERATOR1 ACCELERATORS DISCARDABLE
|
||||
BEGIN
|
||||
VK_F1, IDM_HELP_CONTENTS, VIRTKEY, NOINVERT
|
||||
VK_F2, IDM_GAME_NEW, VIRTKEY, NOINVERT
|
||||
END
|
|
@ -9,6 +9,7 @@ IDI_SPIDER ICON DISCARDABLE "spider.ico"
|
|||
#include "lang/de-DE.rc"
|
||||
#include "lang/en-US.rc"
|
||||
#include "lang/es-ES.rc"
|
||||
#include "lang/fr-FR.rc"
|
||||
#include "lang/hu-HU.rc"
|
||||
#include "lang/it-IT.rc"
|
||||
#include "lang/ja-JP.rc"
|
||||
|
|
BIN
base/applications/iexplore/iexplore.ico
Normal file
After Width: | Height: | Size: 25 KiB |
|
@ -6,5 +6,5 @@
|
|||
<library>gdi32</library>
|
||||
<library>shdocvw</library>
|
||||
<file>main.c</file>
|
||||
<file>version.rc</file>
|
||||
<file>iexplore.rc</file>
|
||||
</module>
|
||||
|
|
|
@ -25,3 +25,6 @@
|
|||
#define WINE_PRODUCTVERSION_STR "6.0.2900.2180"
|
||||
|
||||
#include "wine/wine_common_ver.rc"
|
||||
|
||||
/* @makedep: iexplore.ico */
|
||||
1 ICON iexplore.ico
|
|
@ -49,7 +49,7 @@ BEGIN
|
|||
MENUITEM SEPARATOR
|
||||
POPUP "Zoom"
|
||||
BEGIN
|
||||
POPUP "User defined"
|
||||
POPUP "Défini par l'utilisateur"
|
||||
BEGIN
|
||||
MENUITEM "12,5%", IDM_VIEWZOOM125
|
||||
MENUITEM "25%", IDM_VIEWZOOM25
|
||||
|
@ -60,8 +60,8 @@ BEGIN
|
|||
MENUITEM "800%", IDM_VIEWZOOM800
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Show grid", IDM_VIEWSHOWGRID
|
||||
MENUITEM "Show miniature", IDM_VIEWSHOWMINIATURE
|
||||
MENUITEM "Montrer la grille", IDM_VIEWSHOWGRID
|
||||
MENUITEM "Montrer la miniature", IDM_VIEWSHOWMINIATURE
|
||||
END
|
||||
MENUITEM "Plein écran\tCtrl+F", IDM_VIEWFULLSCREEN
|
||||
END
|
||||
|
@ -200,6 +200,6 @@ BEGIN
|
|||
IDS_TOOLTIP16, "Rectangle arrondi"
|
||||
IDS_OPENFILTER, "Bitmap (*.bmp;*.dib)\1*.bmp;*.dib\1Tous les fichiers (*.*)\1*.*\1"
|
||||
IDS_SAVEFILTER, "Bitmap 24 bit (*.bmp;*.dib)\1*.bmp;*.dib\1"
|
||||
IDS_FILESIZE, "%d bytes"
|
||||
IDS_PRINTRES, "%d x %d pixels per meter"
|
||||
IDS_FILESIZE, "%d octets"
|
||||
IDS_PRINTRES, "%d x %d pixels par mètre"
|
||||
END
|
||||
|
|
|
@ -416,14 +416,11 @@ INT_PTR CALLBACK modify_binary_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, L
|
|||
if ((hwndValue = GetDlgItem(hwndDlg, IDC_VALUE_DATA)))
|
||||
{
|
||||
len = (UINT) HexEdit_GetBufferSize(hwndValue);
|
||||
if (len != valueDataLen && len > 0)
|
||||
{
|
||||
if (len > 0 && binValueData)
|
||||
binValueData = HeapReAlloc(GetProcessHeap(), 0, binValueData, len);
|
||||
}
|
||||
if (len > 0)
|
||||
{
|
||||
else
|
||||
binValueData = HeapAlloc(GetProcessHeap(), 0, len + 1);
|
||||
HexEdit_CopyBuffer(hwndValue, binValueData, len);
|
||||
}
|
||||
valueDataLen = len;
|
||||
}
|
||||
EndDialog(hwndDlg, IDOK);
|
||||
|
@ -642,7 +639,7 @@ BOOL ModifyValue(HWND hwnd, HKEY hKey, LPCTSTR valueName, BOOL EditBin)
|
|||
#endif
|
||||
if(valueDataLen > 0)
|
||||
{
|
||||
if(!(binValueData = HeapAlloc(GetProcessHeap(), 0, valueDataLen)))
|
||||
if(!(binValueData = HeapAlloc(GetProcessHeap(), 0, valueDataLen + 1)))
|
||||
{
|
||||
error(hwnd, IDS_TOO_BIG_VALUE, valueDataLen);
|
||||
goto done;
|
||||
|
|
|
@ -30,7 +30,7 @@ typedef struct
|
|||
INT nLines;
|
||||
INT nVisibleLinesComplete;
|
||||
INT nVisibleLines;
|
||||
INT Position;
|
||||
INT Index;
|
||||
INT LineHeight;
|
||||
INT CharWidth;
|
||||
HFONT hFont;
|
||||
|
@ -43,6 +43,7 @@ typedef struct
|
|||
BOOL EditingField;
|
||||
INT CaretCol;
|
||||
INT CaretLine;
|
||||
BOOL InMid;
|
||||
} HEXEDIT_DATA, *PHEXEDIT_DATA;
|
||||
|
||||
/* hit test codes */
|
||||
|
@ -112,7 +113,7 @@ HEXEDIT_MoveCaret(PHEXEDIT_DATA hed, BOOL Scroll)
|
|||
}
|
||||
|
||||
if(hed->EditingField)
|
||||
SetCaretPos(hed->LeftMargin + ((4 + hed->AddressSpacing + (3 * hed->CaretCol)) * hed->CharWidth) - 1, (hed->CaretLine - si.nPos) * hed->LineHeight);
|
||||
SetCaretPos(hed->LeftMargin + ((4 + hed->AddressSpacing + (3 * hed->CaretCol) + hed->InMid * 2) * hed->CharWidth) - 1, (hed->CaretLine - si.nPos) * hed->LineHeight);
|
||||
else
|
||||
SetCaretPos(hed->LeftMargin + ((4 + hed->AddressSpacing + hed->SplitSpacing + (3 * hed->ColumnsPerLine) + hed->CaretCol) * hed->CharWidth) - 2, (hed->CaretLine - si.nPos) * hed->LineHeight);
|
||||
}
|
||||
|
@ -314,10 +315,10 @@ HEXEDIT_HitRegionTest(PHEXEDIT_DATA hed, POINTS pt)
|
|||
}
|
||||
|
||||
static DWORD
|
||||
HEXEDIT_PositionFromPoint(PHEXEDIT_DATA hed, POINTS pt, DWORD Hit, POINT *EditPos, BOOL *EditField)
|
||||
HEXEDIT_IndexFromPoint(PHEXEDIT_DATA hed, POINTS pt, DWORD Hit, POINT *EditPos, BOOL *EditField)
|
||||
{
|
||||
SCROLLINFO si;
|
||||
DWORD Pos, bufsize;
|
||||
DWORD Index, bufsize;
|
||||
|
||||
si.cbSize = sizeof(SCROLLINFO);
|
||||
si.fMask = SIF_POS;
|
||||
|
@ -353,18 +354,18 @@ HEXEDIT_PositionFromPoint(PHEXEDIT_DATA hed, POINTS pt, DWORD Hit, POINT *EditPo
|
|||
if(pt.x > 0)
|
||||
{
|
||||
INT BlockWidth = (*EditField ? hed->CharWidth * 3 : hed->CharWidth);
|
||||
EditPos->x = min(hed->ColumnsPerLine, pt.x / BlockWidth);
|
||||
EditPos->x = min(hed->ColumnsPerLine, (pt.x + BlockWidth / 2) / BlockWidth);
|
||||
}
|
||||
|
||||
bufsize = (hed->hBuffer ? (DWORD) LocalSize(hed->hBuffer) : 0);
|
||||
Pos = (EditPos->y * hed->ColumnsPerLine) + EditPos->x;
|
||||
if(Pos > bufsize)
|
||||
Index = (EditPos->y * hed->ColumnsPerLine) + EditPos->x;
|
||||
if(Index > bufsize)
|
||||
{
|
||||
INT tmp = bufsize % hed->ColumnsPerLine;
|
||||
Pos = bufsize;
|
||||
Index = bufsize;
|
||||
EditPos->x = (tmp == 0 ? hed->ColumnsPerLine : tmp);
|
||||
}
|
||||
return Pos;
|
||||
return Index;
|
||||
}
|
||||
|
||||
/*** Control specific messages ************************************************/
|
||||
|
@ -393,7 +394,7 @@ HEXEDIT_HEM_LOADBUFFER(PHEXEDIT_DATA hed, PVOID Buffer, DWORD Size)
|
|||
else
|
||||
{
|
||||
hed->hBuffer = LocalFree(hed->hBuffer);
|
||||
hed->Position = 0;
|
||||
hed->Index = 0;
|
||||
HEXEDIT_Update(hed);
|
||||
|
||||
return 0;
|
||||
|
@ -416,13 +417,13 @@ HEXEDIT_HEM_LOADBUFFER(PHEXEDIT_DATA hed, PVOID Buffer, DWORD Size)
|
|||
LocalUnlock(hed->hBuffer);
|
||||
}
|
||||
|
||||
hed->Position = 0;
|
||||
hed->Index = 0;
|
||||
HEXEDIT_Update(hed);
|
||||
return Size;
|
||||
}
|
||||
else if(hed->hBuffer)
|
||||
{
|
||||
hed->Position = 0;
|
||||
hed->Index = 0;
|
||||
hed->hBuffer = LocalFree(hed->hBuffer);
|
||||
HEXEDIT_Update(hed);
|
||||
}
|
||||
|
@ -466,12 +467,16 @@ static LRESULT
|
|||
HEXEDIT_HEM_SETMAXBUFFERSIZE(PHEXEDIT_DATA hed, DWORD nMaxSize)
|
||||
{
|
||||
hed->MaxBuffer = nMaxSize;
|
||||
if(hed->MaxBuffer > 0 && hed->hBuffer && LocalSize(hed->hBuffer) > hed->MaxBuffer)
|
||||
if (hed->MaxBuffer == 0)
|
||||
{
|
||||
/* truncate the buffer */
|
||||
hed->hBuffer = LocalReAlloc(hed->hBuffer, hed->MaxBuffer, LMEM_MOVEABLE);
|
||||
HEXEDIT_Update(hed);
|
||||
hed->hBuffer = LocalFree(hed->hBuffer);
|
||||
return 0;
|
||||
}
|
||||
if (hed->hBuffer)
|
||||
hed->hBuffer = LocalReAlloc(hed->hBuffer, hed->MaxBuffer, LMEM_MOVEABLE);
|
||||
else
|
||||
hed->hBuffer = LocalAlloc(LMEM_MOVEABLE, hed->MaxBuffer);
|
||||
HEXEDIT_Update(hed);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -496,6 +501,7 @@ HEXEDIT_WM_NCCREATE(HWND hWnd, CREATESTRUCT *cs)
|
|||
hed->AddressSpacing = 2;
|
||||
hed->SplitSpacing = 2;
|
||||
hed->EditingField = TRUE; /* in hexdump field */
|
||||
hed->InMid = FALSE;
|
||||
|
||||
SetWindowLongPtr(hWnd, 0, (DWORD_PTR)hed);
|
||||
HEXEDIT_Update(hed);
|
||||
|
@ -754,10 +760,11 @@ HEXEDIT_WM_LBUTTONDOWN(PHEXEDIT_DATA hed, INT Buttons, POINTS Pt)
|
|||
UNREFERENCED_PARAMETER(Buttons);
|
||||
SetFocus(hed->hWndSelf);
|
||||
|
||||
hed->Position = HEXEDIT_PositionFromPoint(hed, Pt, Hit, &EditPos, &NewField);
|
||||
hed->Index = HEXEDIT_IndexFromPoint(hed, Pt, Hit, &EditPos, &NewField);
|
||||
hed->EditingField = NewField;
|
||||
hed->CaretCol = EditPos.x;
|
||||
hed->CaretLine = EditPos.y;
|
||||
hed->InMid = FALSE;
|
||||
|
||||
HEXEDIT_MoveCaret(hed, TRUE);
|
||||
|
||||
|
@ -768,6 +775,7 @@ static BOOL
|
|||
HEXEDIT_WM_KEYDOWN(PHEXEDIT_DATA hed, INT VkCode)
|
||||
{
|
||||
size_t bufsize;
|
||||
PBYTE buf;
|
||||
if(GetKeyState(VK_MENU) & 0x8000)
|
||||
{
|
||||
return FALSE;
|
||||
|
@ -777,72 +785,113 @@ HEXEDIT_WM_KEYDOWN(PHEXEDIT_DATA hed, INT VkCode)
|
|||
|
||||
switch(VkCode)
|
||||
{
|
||||
case VK_LEFT:
|
||||
if(hed->Position > 0)
|
||||
case VK_DELETE:
|
||||
if (hed->InMid && hed->EditingField)
|
||||
{
|
||||
if(--hed->CaretCol < 0)
|
||||
buf = (PBYTE) LocalLock(hed->hBuffer);
|
||||
if (buf)
|
||||
{
|
||||
hed->CaretLine--;
|
||||
hed->CaretCol = hed->ColumnsPerLine;
|
||||
MoveMemory(buf + hed->Index, buf + hed->Index + 1,
|
||||
bufsize - hed->Index - 1);
|
||||
LocalUnlock(hed->hBuffer);
|
||||
}
|
||||
else
|
||||
hed->Position--;
|
||||
HexEdit_SetMaxBufferSize(hed->hWndSelf, bufsize - 1);
|
||||
hed->InMid = FALSE;
|
||||
}
|
||||
else if (hed->Index < bufsize)
|
||||
{
|
||||
buf = (PBYTE) LocalLock(hed->hBuffer);
|
||||
if (buf)
|
||||
{
|
||||
MoveMemory(buf + hed->Index, buf + hed->Index + 1,
|
||||
bufsize - hed->Index - 1);
|
||||
LocalUnlock(hed->hBuffer);
|
||||
}
|
||||
HexEdit_SetMaxBufferSize(hed->hWndSelf, bufsize - 1);
|
||||
}
|
||||
InvalidateRect(hed->hWndSelf, NULL, TRUE);
|
||||
HEXEDIT_MoveCaret(hed, TRUE);
|
||||
break;
|
||||
|
||||
case VK_BACK:
|
||||
if (hed->InMid && hed->EditingField)
|
||||
{
|
||||
buf = (PBYTE) LocalLock(hed->hBuffer);
|
||||
if (buf)
|
||||
{
|
||||
MoveMemory(buf + hed->Index, buf + hed->Index + 1,
|
||||
bufsize - hed->Index - 1);
|
||||
LocalUnlock(hed->hBuffer);
|
||||
}
|
||||
HexEdit_SetMaxBufferSize(hed->hWndSelf, bufsize - 1);
|
||||
hed->InMid = FALSE;
|
||||
}
|
||||
else if (hed->Index > 0)
|
||||
{
|
||||
buf = (PBYTE) LocalLock(hed->hBuffer);
|
||||
if (buf)
|
||||
{
|
||||
MoveMemory(buf + hed->Index - 1, buf + hed->Index,
|
||||
bufsize - hed->Index);
|
||||
LocalUnlock(hed->hBuffer);
|
||||
}
|
||||
HexEdit_SetMaxBufferSize(hed->hWndSelf, bufsize - 1);
|
||||
hed->Index--;
|
||||
hed->CaretCol = hed->Index % hed->ColumnsPerLine;
|
||||
hed->CaretLine = hed->Index / hed->ColumnsPerLine;
|
||||
hed->InMid = FALSE;
|
||||
}
|
||||
InvalidateRect(hed->hWndSelf, NULL, TRUE);
|
||||
HEXEDIT_MoveCaret(hed, TRUE);
|
||||
break;
|
||||
|
||||
case VK_LEFT:
|
||||
if (hed->Index > 0)
|
||||
{
|
||||
hed->Index--;
|
||||
hed->CaretCol = hed->Index % hed->ColumnsPerLine;
|
||||
hed->CaretLine = hed->Index / hed->ColumnsPerLine;
|
||||
hed->InMid = FALSE;
|
||||
HEXEDIT_MoveCaret(hed, TRUE);
|
||||
}
|
||||
break;
|
||||
|
||||
case VK_RIGHT:
|
||||
if(hed->Position < (INT)bufsize)
|
||||
if (hed->Index < (INT)bufsize)
|
||||
{
|
||||
if(++hed->CaretCol > hed->ColumnsPerLine)
|
||||
{
|
||||
hed->CaretCol = 0;
|
||||
hed->CaretLine++;
|
||||
}
|
||||
else
|
||||
hed->Position++;
|
||||
}
|
||||
hed->Index++;
|
||||
hed->CaretCol = hed->Index % hed->ColumnsPerLine;
|
||||
hed->CaretLine = hed->Index / hed->ColumnsPerLine;
|
||||
hed->InMid = FALSE;
|
||||
HEXEDIT_MoveCaret(hed, TRUE);
|
||||
}
|
||||
break;
|
||||
|
||||
case VK_UP:
|
||||
if(hed->Position > 0)
|
||||
if (hed->Index >= hed->ColumnsPerLine)
|
||||
{
|
||||
if(hed->CaretLine <= 0)
|
||||
{
|
||||
hed->CaretCol = 0;
|
||||
hed->Position = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
hed->CaretLine--;
|
||||
hed->Position -= hed->ColumnsPerLine;
|
||||
}
|
||||
}
|
||||
hed->Index -= hed->ColumnsPerLine;
|
||||
hed->CaretCol = hed->Index % hed->ColumnsPerLine;
|
||||
hed->CaretLine = hed->Index / hed->ColumnsPerLine;
|
||||
hed->InMid = FALSE;
|
||||
HEXEDIT_MoveCaret(hed, TRUE);
|
||||
}
|
||||
break;
|
||||
|
||||
case VK_DOWN:
|
||||
if(hed->Position <= (INT)bufsize)
|
||||
if (hed->Index + hed->ColumnsPerLine <= (INT) bufsize)
|
||||
{
|
||||
if(hed->CaretLine < hed->nLines - 1)
|
||||
{
|
||||
hed->Position += hed->ColumnsPerLine;
|
||||
hed->CaretLine++;
|
||||
if(hed->Position > (INT)bufsize)
|
||||
{
|
||||
hed->Position = (INT) bufsize;
|
||||
hed->CaretLine = (hed->nLines > 0 ? hed->nLines - 1 : 0);
|
||||
hed->CaretCol = (INT) bufsize % hed->ColumnsPerLine;
|
||||
}
|
||||
hed->Index += hed->ColumnsPerLine;
|
||||
hed->CaretCol = hed->Index % hed->ColumnsPerLine;
|
||||
hed->CaretLine = hed->Index / hed->ColumnsPerLine;
|
||||
}
|
||||
else
|
||||
{
|
||||
INT tmp = (INT) bufsize % hed->ColumnsPerLine;
|
||||
hed->Position = (INT) bufsize;
|
||||
hed->CaretCol = (tmp == 0 ? hed->ColumnsPerLine : tmp);
|
||||
}
|
||||
hed->Index = bufsize;
|
||||
hed->CaretCol = hed->Index % hed->ColumnsPerLine;
|
||||
hed->CaretLine = hed->Index / hed->ColumnsPerLine;
|
||||
}
|
||||
hed->InMid = FALSE;
|
||||
HEXEDIT_MoveCaret(hed, TRUE);
|
||||
break;
|
||||
}
|
||||
|
@ -850,6 +899,87 @@ HEXEDIT_WM_KEYDOWN(PHEXEDIT_DATA hed, INT VkCode)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL
|
||||
HEXEDIT_WM_CHAR(PHEXEDIT_DATA hed, WCHAR ch)
|
||||
{
|
||||
size_t bufsize;
|
||||
PBYTE buf;
|
||||
|
||||
bufsize = (hed->hBuffer ? LocalSize(hed->hBuffer) : 0);
|
||||
if (!hed->EditingField)
|
||||
{
|
||||
if (0x20 <= ch && ch < 0x7F)
|
||||
{
|
||||
HexEdit_SetMaxBufferSize(hed->hWndSelf, bufsize + 1);
|
||||
buf = (PBYTE) LocalLock(hed->hBuffer);
|
||||
if (buf)
|
||||
{
|
||||
MoveMemory(buf + hed->Index + 1, buf + hed->Index,
|
||||
bufsize - hed->Index);
|
||||
buf[hed->Index] = ch;
|
||||
LocalUnlock(hed->hBuffer);
|
||||
}
|
||||
hed->Index++;
|
||||
hed->CaretCol = hed->Index % hed->ColumnsPerLine;
|
||||
hed->CaretLine = hed->Index / hed->ColumnsPerLine;
|
||||
InvalidateRect(hed->hWndSelf, NULL, TRUE);
|
||||
HEXEDIT_MoveCaret(hed, TRUE);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (('0' <= ch && ch <= '9') || ('A' <= ch && ch <= 'F') ||
|
||||
('a' <= ch && ch <= 'f'))
|
||||
{
|
||||
if (hed->InMid)
|
||||
{
|
||||
buf = (PBYTE) LocalLock(hed->hBuffer);
|
||||
if (buf)
|
||||
{
|
||||
if ('0' <= ch && ch <= '9')
|
||||
buf[hed->Index] |= ch - '0';
|
||||
else if ('A' <= ch && ch <= 'F')
|
||||
buf[hed->Index] |= ch + 10 - 'A';
|
||||
else if ('a' <= ch && ch <= 'f')
|
||||
buf[hed->Index] |= ch + 10 - 'a';
|
||||
LocalUnlock(hed->hBuffer);
|
||||
}
|
||||
hed->InMid = FALSE;
|
||||
hed->Index++;
|
||||
hed->CaretCol = hed->Index % hed->ColumnsPerLine;
|
||||
hed->CaretLine = hed->Index / hed->ColumnsPerLine;
|
||||
InvalidateRect(hed->hWndSelf, NULL, TRUE);
|
||||
HEXEDIT_MoveCaret(hed, TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
HexEdit_SetMaxBufferSize(hed->hWndSelf, bufsize + 1);
|
||||
buf = (PBYTE) LocalLock(hed->hBuffer);
|
||||
if (buf)
|
||||
{
|
||||
MoveMemory(buf + hed->Index + 1, buf + hed->Index,
|
||||
bufsize - hed->Index);
|
||||
if ('0' <= ch && ch <= '9')
|
||||
buf[hed->Index] = (ch - '0') << 4;
|
||||
else if ('A' <= ch && ch <= 'F')
|
||||
buf[hed->Index] = (ch + 10 - 'A') << 4;
|
||||
else if ('a' <= ch && ch <= 'f')
|
||||
buf[hed->Index] = (ch + 10 - 'a') << 4;
|
||||
LocalUnlock(hed->hBuffer);
|
||||
}
|
||||
hed->InMid = TRUE;
|
||||
hed->CaretCol = hed->Index % hed->ColumnsPerLine;
|
||||
hed->CaretLine = hed->Index / hed->ColumnsPerLine;
|
||||
InvalidateRect(hed->hWndSelf, NULL, TRUE);
|
||||
HEXEDIT_MoveCaret(hed, TRUE);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
HEXEDIT_WM_SIZE(PHEXEDIT_DATA hed, DWORD sType, WORD NewWidth, WORD NewHeight)
|
||||
{
|
||||
|
@ -878,6 +1008,9 @@ HexEditWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
case WM_KEYDOWN:
|
||||
return HEXEDIT_WM_KEYDOWN(hed, (INT)wParam);
|
||||
|
||||
case WM_CHAR:
|
||||
return HEXEDIT_WM_CHAR(hed, (WCHAR)wParam);
|
||||
|
||||
case WM_VSCROLL:
|
||||
return HEXEDIT_WM_VSCROLL(hed, HIWORD(wParam), LOWORD(wParam));
|
||||
|
||||
|
|
|
@ -543,7 +543,8 @@ BOOL RefreshListView(HWND hwndLV, HKEY hKey, LPCTSTR keyPath)
|
|||
errCode = RegQueryInfoKey(hNewKey, NULL, NULL, NULL, NULL, &max_sub_key_len, NULL,
|
||||
&val_count, &max_val_name_len, &max_val_size, NULL, NULL);
|
||||
|
||||
if (errCode == ERROR_SUCCESS) {
|
||||
if (errCode == ERROR_SUCCESS)
|
||||
{
|
||||
TCHAR* ValName = HeapAlloc(GetProcessHeap(), 0, ++max_val_name_len * sizeof(TCHAR));
|
||||
DWORD dwValNameLen = max_val_name_len;
|
||||
BYTE* ValBuf = HeapAlloc(GetProcessHeap(), 0, max_val_size + sizeof(TCHAR));
|
||||
|
@ -557,9 +558,15 @@ BOOL RefreshListView(HWND hwndLV, HKEY hKey, LPCTSTR keyPath)
|
|||
while (RegEnumValue(hNewKey, dwIndex, ValName, &dwValNameLen, NULL, &dwValType, ValBuf, &dwValSize) == ERROR_SUCCESS) {
|
||||
/* Remove unwanted path from key name */
|
||||
TCHAR *pLastBl = _tcsrchr(ValName, TEXT('\\'));
|
||||
if (pLastBl != NULL) ++pLastBl; else pLastBl = ValName;
|
||||
if (pLastBl != NULL)
|
||||
++pLastBl;
|
||||
else
|
||||
pLastBl = ValName;
|
||||
/* Add a terminating 0 character. Usually this is only necessary for strings. */
|
||||
((TCHAR*)ValBuf)[dwValSize/sizeof(TCHAR)] = 0;
|
||||
ValBuf[dwValSize] = 0;
|
||||
#ifdef UNICODE
|
||||
ValBuf[dwValSize + 1] = 0;
|
||||
#endif
|
||||
AddEntryToList(hwndLV, pLastBl, dwValType, ValBuf, dwValSize, -1, TRUE);
|
||||
dwValNameLen = max_val_name_len;
|
||||
dwValSize = max_val_size;
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
* Copyright 1997 Henrik Olsen
|
||||
* Copyright 2002 Sylvain Petreolle <spetreolle@yahoo.fr>
|
||||
* Copyright 2008 Jens Albretsen<jens@albretsen.dk>
|
||||
* 2010 Thomas Larsen
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -22,12 +23,16 @@
|
|||
|
||||
#include "winhelp_res.h"
|
||||
|
||||
#pragma code_page(65001)
|
||||
|
||||
LANGUAGE LANG_DANISH, SUBLANG_DEFAULT
|
||||
|
||||
/* Menu */
|
||||
|
||||
MAIN_MENU MENU LANGUAGE LANG_DANISH, SUBLANG_DEFAULT
|
||||
MAIN_MENU MENU
|
||||
{
|
||||
POPUP "&Filer" {
|
||||
MENUITEM "Å&ben...", MNID_FILE_OPEN
|
||||
MENUITEM "Å&ben...", MNID_FILE_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Udskriv emne", MNID_FILE_PRINT
|
||||
MENUITEM "&Indstil printer", MNID_FILE_SETUP
|
||||
|
@ -37,9 +42,9 @@ MAIN_MENU MENU LANGUAGE LANG_DANISH, SUBLANG_DEFAULT
|
|||
POPUP "&Rediger" {
|
||||
MENUITEM "K&opier...", MNID_EDIT_COPYDLG
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Anmærk...", MNID_EDIT_ANNOTATE
|
||||
MENUITEM "&Anmærk...", MNID_EDIT_ANNOTATE
|
||||
}
|
||||
POPUP "Bog&mærke" {
|
||||
POPUP "Bog&mærke" {
|
||||
MENUITEM "&Definer...", MNID_BKMK_DEFINE
|
||||
}
|
||||
POPUP "&Options" {
|
||||
|
@ -58,18 +63,18 @@ MAIN_MENU MENU LANGUAGE LANG_DANISH, SUBLANG_DEFAULT
|
|||
END
|
||||
MENUITEM "Use system colors", MNID_OPTS_SYSTEM_COLORS
|
||||
}
|
||||
POPUP "&Hjælp" {
|
||||
MENUITEM "&Brug af Hjælp", MNID_HELP_HELPON
|
||||
MENUITEM "Altid &øverst", MNID_HELP_HELPTOP
|
||||
POPUP "&Hjælp" {
|
||||
MENUITEM "&Brug af Hjælp", MNID_HELP_HELPON
|
||||
MENUITEM "Altid &øverst", MNID_HELP_HELPTOP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Information...", MNID_HELP_ABOUT
|
||||
#ifdef WINELIB
|
||||
MENUITEM "Om &WINE", MNID_HELP_WINE
|
||||
MENUITEM "Om &Wine", MNID_HELP_WINE
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
IDD_INDEX DIALOG DISCARDABLE 0, 0, 200, 190 LANGUAGE LANG_DANISH, SUBLANG_DEFAULT
|
||||
IDD_INDEX DIALOG DISCARDABLE 0, 0, 200, 190
|
||||
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Index"
|
||||
|
@ -77,21 +82,52 @@ CAPTION "Index"
|
|||
LISTBOX IDC_INDEXLIST, 10, 10, 180, 150, LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_BORDER
|
||||
}
|
||||
|
||||
/* Strings */
|
||||
STRINGTABLE DISCARDABLE LANGUAGE LANG_DANISH, SUBLANG_DEFAULT
|
||||
IDD_SEARCH DIALOG DISCARDABLE 0, 0, 200, 190
|
||||
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Søg"
|
||||
{
|
||||
STID_WINE_HELP, "WINE Hjælp"
|
||||
LTEXT "Er ikke blevet implementeret endnu", -1, 10, 10, 180, 150
|
||||
}
|
||||
|
||||
/* Strings */
|
||||
STRINGTABLE DISCARDABLE
|
||||
{
|
||||
STID_WINE_HELP, "Wine Hjælp"
|
||||
STID_WHERROR, "FEJL"
|
||||
STID_WARNING, "ADVARSEL"
|
||||
STID_INFO, "Information"
|
||||
STID_NOT_IMPLEMENTED, "Ikke implementeret"
|
||||
STID_HLPFILE_ERROR_s, "Fejl ved indlæsning af filen `%s'"
|
||||
STID_HLPFILE_ERROR_s, "Fejl ved indlæsning af filen `%s'"
|
||||
STID_INDEX, "&Indhold"
|
||||
STID_CONTENTS, "Summary"
|
||||
STID_BACK, "&Tilbage"
|
||||
STID_ALL_FILES, "Alle filer (*.*)"
|
||||
STID_HELP_FILES_HLP, "Hjælpe filer (*.hlp)"
|
||||
STID_HELP_FILES_HLP, "Hjælpe filer (*.hlp)"
|
||||
STID_FILE_NOT_FOUND_s "Kan ikke finde '%s'. Vil du selv finde filen?"
|
||||
STID_NO_RICHEDIT "Kan ikke finde en 'richedit' implementering... Afbryder"
|
||||
STID_PSH_INDEX, "Help topics: "
|
||||
}
|
||||
|
||||
CONTEXT_MENU MENU
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "Notat...", MNID_CTXT_ANNOTATE
|
||||
MENUITEM "Kopier", MNID_CTXT_COPY
|
||||
MENUITEM "Udskriv...", MNID_CTXT_PRINT
|
||||
POPUP "Skrifttype"
|
||||
BEGIN
|
||||
MENUITEM "Lille", MNID_CTXT_FONTS_SMALL
|
||||
MENUITEM "Normal", MNID_CTXT_FONTS_NORMAL
|
||||
MENUITEM "Stor", MNID_CTXT_FONTS_LARGE
|
||||
END
|
||||
POPUP "Bevar Hjælp øverst"
|
||||
BEGIN
|
||||
MENUITEM "Standard", MNID_CTXT_HELP_DEFAULT
|
||||
MENUITEM "Synlig", MNID_CTXT_HELP_VISIBLE
|
||||
MENUITEM "Usynlig", MNID_CTXT_HELP_NONVISIBLE
|
||||
END
|
||||
MENUITEM "Benyt systemfarver", MNID_CTXT_SYSTEM_COLORS
|
||||
END
|
||||
END
|
||||
|
|
|
@ -59,7 +59,7 @@ MAIN_MENU MENU LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
|
|||
END
|
||||
MENUITEM "Usa colori di sistema", MNID_OPTS_SYSTEM_COLORS
|
||||
}
|
||||
POPUP "&?" {
|
||||
POPUP "&Aiuto" {
|
||||
MENUITEM "&Aiuto sulla guida", MNID_HELP_HELPON
|
||||
MENUITEM "Sempre in primo &piano", MNID_HELP_HELPTOP
|
||||
MENUITEM SEPARATOR
|
||||
|
@ -70,8 +70,23 @@ MAIN_MENU MENU LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
|
|||
}
|
||||
}
|
||||
|
||||
/* Strings */
|
||||
IDD_INDEX DIALOG DISCARDABLE 0, 0, 200, 190 LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
|
||||
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Indice"
|
||||
{
|
||||
LISTBOX IDC_INDEXLIST, 10, 10, 180, 150, LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_BORDER
|
||||
}
|
||||
|
||||
IDD_SEARCH DIALOG DISCARDABLE 0, 0, 200, 190 LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
|
||||
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Cerca"
|
||||
{
|
||||
LTEXT "Non implementato.", -1, 10, 10, 180, 150
|
||||
}
|
||||
|
||||
/* Strings */
|
||||
STRINGTABLE DISCARDABLE LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
|
||||
{
|
||||
STID_WINE_HELP, "Guida di WINE"
|
||||
|
@ -89,3 +104,26 @@ STID_FILE_NOT_FOUND_s "Non è stato possibile trovare '%s'. Vuoi cercare questo
|
|||
STID_NO_RICHEDIT "Non è stato possibile trovare un'implementazione richedit... Annullando"
|
||||
STID_PSH_INDEX, "Argomenti di aiuto: "
|
||||
}
|
||||
|
||||
CONTEXT_MENU MENU LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "Annotazione...", MNID_CTXT_ANNOTATE
|
||||
MENUITEM "Copia", MNID_CTXT_COPY
|
||||
MENUITEM "Stampa...", MNID_CTXT_PRINT
|
||||
POPUP "Caratteri"
|
||||
BEGIN
|
||||
MENUITEM "Piccolo", MNID_CTXT_FONTS_SMALL
|
||||
MENUITEM "Normale", MNID_CTXT_FONTS_NORMAL
|
||||
MENUITEM "Grande", MNID_CTXT_FONTS_LARGE
|
||||
END
|
||||
POPUP "Aiuto sempre visibile"
|
||||
BEGIN
|
||||
MENUITEM "Default", MNID_CTXT_HELP_DEFAULT
|
||||
MENUITEM "Visibile", MNID_CTXT_HELP_VISIBLE
|
||||
MENUITEM "Non visibile", MNID_CTXT_HELP_NONVISIBLE
|
||||
END
|
||||
MENUITEM "Usa i colori di sistema", MNID_CTXT_SYSTEM_COLORS
|
||||
END
|
||||
END
|
||||
|
|
|
@ -23,15 +23,17 @@
|
|||
|
||||
#pragma code_page(65001)
|
||||
|
||||
LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
|
||||
|
||||
/* Menu */
|
||||
|
||||
MAIN_MENU MENU LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
|
||||
MAIN_MENU MENU
|
||||
{
|
||||
POPUP "&Bestand" {
|
||||
MENUITEM "&Openen", MNID_FILE_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Af&drukken", MNID_FILE_PRINT
|
||||
MENUITEM "&Printerinstellingen...", MNID_FILE_SETUP
|
||||
MENUITEM "&Pagina-instellingen...", MNID_FILE_SETUP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Afsluiten", MNID_FILE_EXIT
|
||||
}
|
||||
|
@ -50,7 +52,7 @@ MAIN_MENU MENU LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
|
|||
MENUITEM "Zichtbaar", MNID_OPTS_HELP_VISIBLE
|
||||
MENUITEM "Niet zichtbaar", MNID_OPTS_HELP_NONVISIBLE
|
||||
END
|
||||
MENUITEM "Historie", MNID_OPTS_HISTORY
|
||||
MENUITEM "Geschiedenis", MNID_OPTS_HISTORY
|
||||
POPUP "Lettertype"
|
||||
BEGIN
|
||||
MENUITEM "Klein", MNID_OPTS_FONTS_SMALL
|
||||
|
@ -70,7 +72,7 @@ MAIN_MENU MENU LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
|
|||
}
|
||||
}
|
||||
|
||||
IDD_INDEX DIALOG DISCARDABLE 0, 0, 200, 190 LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
|
||||
IDD_INDEX DIALOG DISCARDABLE 0, 0, 200, 190
|
||||
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Index"
|
||||
|
@ -78,7 +80,7 @@ CAPTION "Index"
|
|||
LISTBOX IDC_INDEXLIST, 10, 10, 180, 150, LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_BORDER
|
||||
}
|
||||
|
||||
IDD_SEARCH DIALOG DISCARDABLE 0, 0, 200, 190 LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
|
||||
IDD_SEARCH DIALOG DISCARDABLE 0, 0, 200, 190
|
||||
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Zoeken"
|
||||
|
@ -87,7 +89,7 @@ CAPTION "Zoeken"
|
|||
}
|
||||
|
||||
/* Strings */
|
||||
STRINGTABLE DISCARDABLE LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
|
||||
STRINGTABLE DISCARDABLE
|
||||
{
|
||||
STID_WINE_HELP, "Wine Help"
|
||||
STID_WHERROR, "FOUT"
|
||||
|
@ -102,17 +104,17 @@ STID_ALL_FILES, "Alle bestanden (*.*)"
|
|||
STID_HELP_FILES_HLP, "Helpbestanden (*.hlp)"
|
||||
STID_FILE_NOT_FOUND_s "Kan '%s' niet openen. Wilt u zelf dit bestand zoeken?"
|
||||
STID_NO_RICHEDIT "Kan geen richedit implementatie vinden... Actie afgebroken"
|
||||
STID_PSH_INDEX, "Help onderwerpen: "
|
||||
STID_PSH_INDEX, "Help-onderwerpen: "
|
||||
}
|
||||
|
||||
CONTEXT_MENU MENU LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
|
||||
CONTEXT_MENU MENU
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "Annotering...", MNID_CTXT_ANNOTATE
|
||||
MENUITEM "Kopiëren", MNID_CTXT_COPY
|
||||
MENUITEM "Print...", MNID_CTXT_PRINT
|
||||
POPUP "Lettertypes"
|
||||
MENUITEM "Afdrukken ...", MNID_CTXT_PRINT
|
||||
POPUP "Lettertype"
|
||||
BEGIN
|
||||
MENUITEM "Klein", MNID_CTXT_FONTS_SMALL
|
||||
MENUITEM "Normaal", MNID_CTXT_FONTS_NORMAL
|
||||
|
|
202
base/applications/winhlp32/Uk.rc
Normal file
|
@ -0,0 +1,202 @@
|
|||
/*
|
||||
* Help Viewer
|
||||
*
|
||||
* Copyright 1996 Ulrich Schmid
|
||||
* Copyright 2002 Sylvain Petreolle <spetreolle@yahoo.fr>
|
||||
*
|
||||
* Ukrainian language support
|
||||
*
|
||||
* Copyright (C) 2010 Igor Paliychuk
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "winhelp_res.h"
|
||||
|
||||
/* UTF-8 */
|
||||
#pragma code_page(65001)
|
||||
|
||||
/* Menu */
|
||||
|
||||
MAIN_MENU MENU LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
|
||||
{
|
||||
POPUP "&Файл" {
|
||||
MENUITEM "&Відкрити", MNID_FILE_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Друк", MNID_FILE_PRINT
|
||||
MENUITEM "Налаштування &принтера...", MNID_FILE_SETUP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "В&ихід", MNID_FILE_EXIT
|
||||
}
|
||||
POPUP "&Правка" {
|
||||
MENUITEM "&Копіювати...", MNID_EDIT_COPYDLG
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Annotate...", MNID_EDIT_ANNOTATE
|
||||
}
|
||||
POPUP "&Закладка" {
|
||||
MENUITEM "&Define...", MNID_BKMK_DEFINE
|
||||
}
|
||||
POPUP "&Налаштування" {
|
||||
POPUP "Help always visible"
|
||||
BEGIN
|
||||
MENUITEM "За замовчуванням", MNID_OPTS_HELP_DEFAULT
|
||||
MENUITEM "Видимий", MNID_OPTS_HELP_VISIBLE
|
||||
MENUITEM "Невидимий", MNID_OPTS_HELP_NONVISIBLE
|
||||
END
|
||||
MENUITEM "Історія", MNID_OPTS_HISTORY
|
||||
POPUP "Шрифти"
|
||||
BEGIN
|
||||
MENUITEM "Малий", MNID_OPTS_FONTS_SMALL
|
||||
MENUITEM "Нормальний", MNID_OPTS_FONTS_NORMAL
|
||||
MENUITEM "Великий", MNID_OPTS_FONTS_LARGE
|
||||
END
|
||||
MENUITEM "Використати системні кольори", MNID_OPTS_SYSTEM_COLORS
|
||||
}
|
||||
POPUP "&Довідка" {
|
||||
MENUITEM "Help &on help", MNID_HELP_HELPON
|
||||
MENUITEM "Завжди &зверху", MNID_HELP_HELPTOP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Інформація...", MNID_HELP_ABOUT
|
||||
#ifdef WINELIB
|
||||
MENUITEM "&Про Wine", MNID_HELP_WINE
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
MAIN_MENU MENU LANGUAGE LANG_UKRAINIAN, SUBLANG_NEUTRAL
|
||||
{
|
||||
POPUP "&Файл" {
|
||||
MENUITEM "&Відкрити", MNID_FILE_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Друк", MNID_FILE_PRINT
|
||||
MENUITEM "Налаштування &принтера...", MNID_FILE_SETUP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "В&ихід", MNID_FILE_EXIT
|
||||
}
|
||||
POPUP "&Правка" {
|
||||
MENUITEM "&Копіювати...", MNID_EDIT_COPYDLG
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Annotate...", MNID_EDIT_ANNOTATE
|
||||
}
|
||||
POPUP "&Закладка" {
|
||||
MENUITEM "&Define...", MNID_BKMK_DEFINE
|
||||
}
|
||||
POPUP "&Налаштування" {
|
||||
POPUP "Help always visible"
|
||||
BEGIN
|
||||
MENUITEM "За замовчуванням", MNID_OPTS_HELP_DEFAULT
|
||||
MENUITEM "Видимий", MNID_OPTS_HELP_VISIBLE
|
||||
MENUITEM "Невидимий", MNID_OPTS_HELP_NONVISIBLE
|
||||
END
|
||||
MENUITEM "Історія", MNID_OPTS_HISTORY
|
||||
POPUP "Шрифти"
|
||||
BEGIN
|
||||
MENUITEM "Малий", MNID_OPTS_FONTS_SMALL
|
||||
MENUITEM "Нормальний", MNID_OPTS_FONTS_NORMAL
|
||||
MENUITEM "Великий", MNID_OPTS_FONTS_LARGE
|
||||
END
|
||||
MENUITEM "Використати системні кольори", MNID_OPTS_SYSTEM_COLORS
|
||||
}
|
||||
POPUP "&Довідка" {
|
||||
MENUITEM "Help &on help", MNID_HELP_HELPON
|
||||
MENUITEM "Завжди &зверху", MNID_HELP_HELPTOP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Інформація...", MNID_HELP_ABOUT
|
||||
#ifdef WINELIB
|
||||
MENUITEM "&Про Wine", MNID_HELP_WINE
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
IDD_INDEX DIALOG DISCARDABLE 0, 0, 200, 190 LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
|
||||
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Index"
|
||||
{
|
||||
LISTBOX IDC_INDEXLIST, 10, 10, 180, 150, LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_BORDER
|
||||
}
|
||||
|
||||
IDD_SEARCH DIALOG DISCARDABLE 0, 0, 200, 190 LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
|
||||
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Search"
|
||||
{
|
||||
LTEXT "Ще не впроваджено", -1, 10, 10, 180, 150
|
||||
}
|
||||
|
||||
/* Strings */
|
||||
STRINGTABLE DISCARDABLE LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
|
||||
{
|
||||
STID_WINE_HELP, "Довідка Wine"
|
||||
STID_WHERROR, "ПОМИЛКА"
|
||||
STID_WARNING, "УВАГА"
|
||||
STID_INFO, "Інформація"
|
||||
STID_NOT_IMPLEMENTED, "Не впроваджено"
|
||||
STID_HLPFILE_ERROR_s, "Помилка читання файлу довідки `%s'"
|
||||
STID_INDEX, "&Index"
|
||||
STID_CONTENTS, "Summary"
|
||||
STID_BACK, "&Назад"
|
||||
STID_ALL_FILES, "Всі файли (*.*)"
|
||||
STID_HELP_FILES_HLP, "Файли довідки (*.hlp)"
|
||||
STID_FILE_NOT_FOUND_s "Не можу знайти '%s'. Хочете знайти цей файл самотужки?"
|
||||
STID_NO_RICHEDIT "Cannot find a richedit implementation... Aborting"
|
||||
STID_PSH_INDEX, "Розділи Довідки: "
|
||||
}
|
||||
|
||||
CONTEXT_MENU MENU LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "Annotation...", MNID_CTXT_ANNOTATE
|
||||
MENUITEM "Копіювати", MNID_CTXT_COPY
|
||||
MENUITEM "Друк...", MNID_CTXT_PRINT
|
||||
POPUP "Шрифти"
|
||||
BEGIN
|
||||
MENUITEM "Малий", MNID_CTXT_FONTS_SMALL
|
||||
MENUITEM "Нормальний", MNID_CTXT_FONTS_NORMAL
|
||||
MENUITEM "Великий", MNID_CTXT_FONTS_LARGE
|
||||
END
|
||||
POPUP "Довідка завжди видима"
|
||||
BEGIN
|
||||
MENUITEM "За замовчуванням", MNID_CTXT_HELP_DEFAULT
|
||||
MENUITEM "Видима", MNID_CTXT_HELP_VISIBLE
|
||||
MENUITEM "Невидима", MNID_CTXT_HELP_NONVISIBLE
|
||||
END
|
||||
MENUITEM "Використати системні кольори", MNID_CTXT_SYSTEM_COLORS
|
||||
END
|
||||
END
|
||||
|
||||
CONTEXT_MENU MENU LANGUAGE LANG_UKRAINIAN, SUBLANG_NEUTRAL
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "Annotation...", MNID_CTXT_ANNOTATE
|
||||
MENUITEM "Копіювати", MNID_CTXT_COPY
|
||||
MENUITEM "Друк...", MNID_CTXT_PRINT
|
||||
POPUP "Шрифти"
|
||||
BEGIN
|
||||
MENUITEM "Малий", MNID_CTXT_FONTS_SMALL
|
||||
MENUITEM "Нормальний", MNID_CTXT_FONTS_NORMAL
|
||||
MENUITEM "Великий", MNID_CTXT_FONTS_LARGE
|
||||
END
|
||||
POPUP "Довідка завжди видима"
|
||||
BEGIN
|
||||
MENUITEM "За замовчуванням", MNID_CTXT_HELP_DEFAULT
|
||||
MENUITEM "Видима", MNID_CTXT_HELP_VISIBLE
|
||||
MENUITEM "Невидима", MNID_CTXT_HELP_NONVISIBLE
|
||||
END
|
||||
MENUITEM "Використати ситемні кольори", MNID_CTXT_SYSTEM_COLORS
|
||||
END
|
||||
END
|
|
@ -815,6 +815,34 @@ static void HLPFILE_AddHotSpotLinks(struct RtfData* rd, HLPFILE* file,
|
|||
file->lpszPath, -1, HLPFILE_Hash(str),
|
||||
0, 1, -1);
|
||||
break;
|
||||
|
||||
case 0xEE:
|
||||
case 0xEF:
|
||||
{
|
||||
const char* win = strchr(str, '>');
|
||||
int wnd = -1;
|
||||
char* tgt = NULL;
|
||||
|
||||
if (win)
|
||||
{
|
||||
for (wnd = file->numWindows - 1; wnd >= 0; wnd--)
|
||||
{
|
||||
if (!strcmp(win + 1, file->windows[wnd].name)) break;
|
||||
}
|
||||
if (wnd == -1)
|
||||
WINE_WARN("Couldn't find window info for %s\n", win);
|
||||
if ((tgt = HeapAlloc(GetProcessHeap(), 0, win - str + 1)))
|
||||
{
|
||||
memcpy(tgt, str, win - str);
|
||||
tgt[win - str] = '\0';
|
||||
}
|
||||
}
|
||||
hslink = (HLPFILE_HOTSPOTLINK*)
|
||||
HLPFILE_AllocLink(rd, (start[7 + 15 * i + 0] & 1) ? hlp_link_link : hlp_link_popup,
|
||||
file->lpszPath, -1, HLPFILE_Hash(tgt ? tgt : str), 0, 1, wnd);
|
||||
HeapFree(GetProcessHeap(), 0, tgt);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
WINE_FIXME("unknown hotsport target 0x%x\n", start[7 + 15 * i + 0]);
|
||||
}
|
||||
|
@ -1736,16 +1764,6 @@ BOOL HLPFILE_BrowsePage(HLPFILE_PAGE* page, struct RtfData* rd,
|
|||
if (!HLPFILE_RtfAddControl(rd, "{\\colortbl ;\\red0\\green128\\blue0;")) return FALSE;
|
||||
for (index = 0; index < hlpfile->numFonts; index++)
|
||||
{
|
||||
const char* family;
|
||||
switch (hlpfile->fonts[index].LogFont.lfPitchAndFamily & 0xF0)
|
||||
{
|
||||
case FF_MODERN: family = "modern"; break;
|
||||
case FF_ROMAN: family = "roman"; break;
|
||||
case FF_SWISS: family = "swiss"; break;
|
||||
case FF_SCRIPT: family = "script"; break;
|
||||
case FF_DECORATIVE: family = "decor"; break;
|
||||
default: family = "nil"; break;
|
||||
}
|
||||
sprintf(tmp, "\\red%d\\green%d\\blue%d;",
|
||||
GetRValue(hlpfile->fonts[index].color),
|
||||
GetGValue(hlpfile->fonts[index].color),
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
#include "windows.h"
|
||||
#include "commdlg.h"
|
||||
#include "shellapi.h"
|
||||
#include "winhelp.h"
|
||||
|
||||
#include "wine/debug.h"
|
||||
|
@ -64,6 +65,9 @@ static WINHELP_BUTTON** MACRO_LookupButton(WINHELP_WINDOW* win, LPCSTR na
|
|||
return b;
|
||||
}
|
||||
|
||||
/******* some forward declarations *******/
|
||||
static void CALLBACK MACRO_JumpID(LPCSTR lpszPathWindow, LPCSTR topic_id);
|
||||
|
||||
/******* real macro implementation *******/
|
||||
|
||||
void CALLBACK MACRO_CreateButton(LPCSTR id, LPCSTR name, LPCSTR macro)
|
||||
|
@ -352,9 +356,20 @@ static void CALLBACK MACRO_EndMPrint(void)
|
|||
WINE_FIXME("()\n");
|
||||
}
|
||||
|
||||
static void CALLBACK MACRO_ExecFile(LPCSTR str1, LPCSTR str2, LONG u, LPCSTR str3)
|
||||
static void CALLBACK MACRO_ExecFile(LPCSTR pgm, LPCSTR args, LONG cmd_show, LPCSTR topic)
|
||||
{
|
||||
WINE_FIXME("(\"%s\", \"%s\", %u, \"%s\")\n", str1, str2, u, str3);
|
||||
HINSTANCE ret;
|
||||
|
||||
WINE_TRACE("(%s, %s, %u, %s)\n",
|
||||
wine_dbgstr_a(pgm), wine_dbgstr_a(args), cmd_show, wine_dbgstr_a(topic));
|
||||
|
||||
ret = ShellExecuteA(Globals.active_win ? Globals.active_win->hMainWnd : NULL, "open",
|
||||
pgm, args, ".", cmd_show);
|
||||
if ((DWORD_PTR)ret < 32)
|
||||
{
|
||||
WINE_WARN("Failed with %p\n", ret);
|
||||
if (topic) MACRO_JumpID(NULL, topic);
|
||||
}
|
||||
}
|
||||
|
||||
static void CALLBACK MACRO_ExecProgram(LPCSTR str, LONG u)
|
||||
|
|
|
@ -26,7 +26,6 @@ IDI_WINHELP ICON DISCARDABLE winhelp.ico
|
|||
|
||||
#include "Bg.rc"
|
||||
#include "Cs.rc"
|
||||
#include "Da.rc"
|
||||
#include "En.rc"
|
||||
#include "Es.rc"
|
||||
#include "Fi.rc"
|
||||
|
@ -39,6 +38,7 @@ IDI_WINHELP ICON DISCARDABLE winhelp.ico
|
|||
#include "Tr.rc"
|
||||
|
||||
/* UTF-8 */
|
||||
#include "Da.rc"
|
||||
#include "De.rc"
|
||||
#include "Fr.rc"
|
||||
#include "It.rc"
|
||||
|
@ -50,4 +50,5 @@ IDI_WINHELP ICON DISCARDABLE winhelp.ico
|
|||
#include "Ro.rc"
|
||||
#include "Ru.rc"
|
||||
#include "Si.rc"
|
||||
#include "Uk.rc"
|
||||
#include "Zh.rc"
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
|
||||
const char MAIN_WIN_CLASS_NAME[] = "MS_WINHELP";
|
||||
const char BUTTON_BOX_WIN_CLASS_NAME[] = "WHButtonBox";
|
||||
const char SHADOW_WIN_CLASS_NAME[] = "WHShadow";
|
||||
const char HISTORY_WIN_CLASS_NAME[] = "WHHistory";
|
||||
const char STRING_BUTTON[] = "BUTTON";
|
||||
|
||||
|
|
|
@ -570,7 +570,6 @@ static void WINHELP_DeleteWindow(WINHELP_WINDOW* win)
|
|||
WINHELP_DeleteButtons(win);
|
||||
|
||||
if (win->page) WINHELP_DeletePageLinks(win->page);
|
||||
if (win->hShadowWnd) DestroyWindow(win->hShadowWnd);
|
||||
if (win->hHistoryWnd) DestroyWindow(win->hHistoryWnd);
|
||||
|
||||
DeleteObject(win->hBrush);
|
||||
|
@ -712,14 +711,24 @@ BOOL WINHELP_CreateHelpWindow(WINHELP_WNDPAGE* wpage, int nCmdShow, BOOL remembe
|
|||
for (win = Globals.win_list; win; win = win->next)
|
||||
{
|
||||
if (!lstrcmpi(win->info->name, wpage->wininfo->name))
|
||||
{
|
||||
if (win->page == wpage->page && win->info == wpage->wininfo)
|
||||
{
|
||||
/* see #22979, some hlp files have a macro (run at page opening), which
|
||||
* jumps to the very same page
|
||||
* Exit gracefully in that case
|
||||
*/
|
||||
return TRUE;
|
||||
}
|
||||
WINHELP_DeleteButtons(win);
|
||||
bReUsed = TRUE;
|
||||
SetWindowText(win->hMainWnd, WINHELP_GetCaption(wpage));
|
||||
if (win->info != wpage->wininfo)
|
||||
{
|
||||
POINT pt = {0, 0};
|
||||
SIZE sz = {0, 0};
|
||||
DWORD flags = SWP_NOSIZE | SWP_NOMOVE;
|
||||
|
||||
WINHELP_DeleteButtons(win);
|
||||
bReUsed = TRUE;
|
||||
SetWindowText(win->hMainWnd, WINHELP_GetCaption(wpage));
|
||||
if (wpage->wininfo->origin.x != CW_USEDEFAULT &&
|
||||
wpage->wininfo->origin.y != CW_USEDEFAULT)
|
||||
{
|
||||
|
@ -733,6 +742,7 @@ BOOL WINHELP_CreateHelpWindow(WINHELP_WNDPAGE* wpage, int nCmdShow, BOOL remembe
|
|||
flags &= ~SWP_NOMOVE;
|
||||
}
|
||||
SetWindowPos(win->hMainWnd, HWND_TOP, pt.x, pt.y, sz.cx, sz.cy, flags);
|
||||
}
|
||||
|
||||
if (wpage->page && win->page && wpage->page->file != win->page->file)
|
||||
WINHELP_DeleteBackSet(win);
|
||||
|
@ -817,7 +827,8 @@ BOOL WINHELP_CreateHelpWindow(WINHELP_WNDPAGE* wpage, int nCmdShow, BOOL remembe
|
|||
}
|
||||
|
||||
hIcon = (wpage->page) ? wpage->page->file->hIcon : NULL;
|
||||
if (!hIcon) hIcon = LoadIcon(Globals.hInstance, MAKEINTRESOURCE(IDI_WINHELP));
|
||||
if (!hIcon) hIcon = LoadImage(Globals.hInstance, MAKEINTRESOURCE(IDI_WINHELP), IMAGE_ICON,
|
||||
GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED);
|
||||
SendMessage(win->hMainWnd, WM_SETICON, ICON_SMALL, (DWORD_PTR)hIcon);
|
||||
|
||||
/* Initialize file specific pushbuttons */
|
||||
|
@ -842,7 +853,6 @@ BOOL WINHELP_CreateHelpWindow(WINHELP_WNDPAGE* wpage, int nCmdShow, BOOL remembe
|
|||
if (bPopup)
|
||||
{
|
||||
DWORD mask = SendMessage(hTextWnd, EM_GETEVENTMASK, 0, 0);
|
||||
RECT rect;
|
||||
|
||||
win->font_scale = Globals.active_win->font_scale;
|
||||
WINHELP_SetupText(hTextWnd, win, wpage->relative);
|
||||
|
@ -852,17 +862,6 @@ BOOL WINHELP_CreateHelpWindow(WINHELP_WNDPAGE* wpage, int nCmdShow, BOOL remembe
|
|||
SendMessage(hTextWnd, EM_SETEVENTMASK, 0, mask | ENM_REQUESTRESIZE);
|
||||
SendMessage(hTextWnd, EM_REQUESTRESIZE, 0, 0);
|
||||
SendMessage(hTextWnd, EM_SETEVENTMASK, 0, mask);
|
||||
|
||||
GetWindowRect(win->hMainWnd, &rect);
|
||||
win->hShadowWnd = CreateWindowEx(WS_EX_TOOLWINDOW, SHADOW_WIN_CLASS_NAME,
|
||||
"", WS_POPUP | WS_VISIBLE,
|
||||
rect.left + SHADOW_DX, rect.top + SHADOW_DY,
|
||||
rect.right - rect.left,
|
||||
rect.bottom - rect.top,
|
||||
Globals.active_win->hMainWnd, 0,
|
||||
Globals.hInstance, NULL);
|
||||
SetWindowPos(win->hMainWnd, win->hShadowWnd, 0, 0, 0, 0,
|
||||
SWP_NOSIZE | SWP_NOMOVE);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -968,7 +967,7 @@ static BOOL WINHELP_CheckPopup(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam
|
|||
}
|
||||
break;
|
||||
case WM_ACTIVATE:
|
||||
if (wParam != WA_INACTIVE || (HWND)lParam == Globals.active_win->hMainWnd ||
|
||||
if (LOWORD(wParam) != WA_INACTIVE || (HWND)lParam == Globals.active_win->hMainWnd ||
|
||||
(HWND)lParam == Globals.active_popup->hMainWnd ||
|
||||
GetWindow((HWND)lParam, GW_OWNER) == Globals.active_win->hMainWnd)
|
||||
break;
|
||||
|
@ -976,7 +975,6 @@ static BOOL WINHELP_CheckPopup(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam
|
|||
if (WINHELP_HandleTextMouse(Globals.active_popup, msg, lParam))
|
||||
return FALSE;
|
||||
/* fall through */
|
||||
case WM_LBUTTONUP:
|
||||
case WM_MBUTTONDOWN:
|
||||
case WM_RBUTTONDOWN:
|
||||
case WM_NCLBUTTONDOWN:
|
||||
|
@ -1197,16 +1195,6 @@ static LRESULT CALLBACK WINHELP_HistoryWndProc(HWND hWnd, UINT msg, WPARAM wPara
|
|||
return DefWindowProc(hWnd, msg, wParam, lParam);
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
*
|
||||
* WINHELP_ShadowWndProc
|
||||
*/
|
||||
static LRESULT CALLBACK WINHELP_ShadowWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
if (WINHELP_CheckPopup(hWnd, msg, wParam, lParam, NULL)) return 0;
|
||||
return WINHELP_CheckPopup(hWnd, msg, wParam, lParam, NULL) ? 0L : DefWindowProc(hWnd, msg, wParam, lParam);
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* cb_KWBTree
|
||||
*
|
||||
|
@ -1306,12 +1294,9 @@ static INT_PTR CALLBACK WINHELP_IndexDlgProc(HWND hWnd, UINT msg, WPARAM wParam,
|
|||
*/
|
||||
static INT_PTR CALLBACK WINHELP_SearchDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
static struct index_data* id;
|
||||
|
||||
switch (msg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
id = (struct index_data*)((PROPSHEETPAGE*)lParam)->lParam;
|
||||
return TRUE;
|
||||
case WM_NOTIFY:
|
||||
switch (((NMHDR*)lParam)->code)
|
||||
|
@ -1337,7 +1322,6 @@ static LRESULT CALLBACK WINHELP_MainWndProc(HWND hWnd, UINT msg, WPARAM wParam,
|
|||
{
|
||||
WINHELP_WINDOW *win;
|
||||
WINHELP_BUTTON *button;
|
||||
INT keyDelta;
|
||||
HWND hTextWnd;
|
||||
LRESULT ret;
|
||||
|
||||
|
@ -1451,7 +1435,6 @@ static LRESULT CALLBACK WINHELP_MainWndProc(HWND hWnd, UINT msg, WPARAM wParam,
|
|||
break;
|
||||
|
||||
case WM_KEYDOWN:
|
||||
keyDelta = 0;
|
||||
win = (WINHELP_WINDOW*) GetWindowLongPtr(hWnd, 0);
|
||||
hTextWnd = GetDlgItem(win->hMainWnd, CTL_ID_TEXT);
|
||||
|
||||
|
@ -1633,8 +1616,9 @@ BOOL WINHELP_CreateIndexWindow(BOOL is_search)
|
|||
*/
|
||||
static BOOL WINHELP_RegisterWinClasses(void)
|
||||
{
|
||||
WNDCLASS class_main, class_button_box, class_shadow, class_history;
|
||||
WNDCLASSEX class_main, class_button_box, class_history;
|
||||
|
||||
class_main.cbSize = sizeof(class_main);
|
||||
class_main.style = CS_HREDRAW | CS_VREDRAW;
|
||||
class_main.lpfnWndProc = WINHELP_MainWndProc;
|
||||
class_main.cbClsExtra = 0;
|
||||
|
@ -1645,6 +1629,9 @@ static BOOL WINHELP_RegisterWinClasses(void)
|
|||
class_main.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
|
||||
class_main.lpszMenuName = 0;
|
||||
class_main.lpszClassName = MAIN_WIN_CLASS_NAME;
|
||||
class_main.hIconSm = LoadImage(Globals.hInstance, MAKEINTRESOURCE(IDI_WINHELP), IMAGE_ICON,
|
||||
GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON),
|
||||
LR_SHARED);
|
||||
|
||||
class_button_box = class_main;
|
||||
class_button_box.lpfnWndProc = WINHELP_ButtonBoxWndProc;
|
||||
|
@ -1652,20 +1639,13 @@ static BOOL WINHELP_RegisterWinClasses(void)
|
|||
class_button_box.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1);
|
||||
class_button_box.lpszClassName = BUTTON_BOX_WIN_CLASS_NAME;
|
||||
|
||||
class_shadow = class_main;
|
||||
class_shadow.lpfnWndProc = WINHELP_ShadowWndProc;
|
||||
class_shadow.cbWndExtra = 0;
|
||||
class_shadow.hbrBackground = (HBRUSH)(COLOR_3DDKSHADOW+1);
|
||||
class_shadow.lpszClassName = SHADOW_WIN_CLASS_NAME;
|
||||
|
||||
class_history = class_main;
|
||||
class_history.lpfnWndProc = WINHELP_HistoryWndProc;
|
||||
class_history.lpszClassName = HISTORY_WIN_CLASS_NAME;
|
||||
|
||||
return (RegisterClass(&class_main) &&
|
||||
RegisterClass(&class_button_box) &&
|
||||
RegisterClass(&class_shadow) &&
|
||||
RegisterClass(&class_history));
|
||||
return (RegisterClassEx(&class_main) &&
|
||||
RegisterClassEx(&class_button_box) &&
|
||||
RegisterClassEx(&class_history));
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
|
|
|
@ -76,7 +76,6 @@ typedef struct tagWinHelp
|
|||
HLPFILE_PAGE* page;
|
||||
|
||||
HWND hMainWnd;
|
||||
HWND hShadowWnd;
|
||||
HWND hHistoryWnd;
|
||||
|
||||
WNDPROC origRicheditWndProc;
|
||||
|
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 25 KiB |
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
* Copyright 2008 by Jens Albretsen <jens@albretsen.dk>
|
||||
* 2010 Thomas Larsen
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -18,6 +19,8 @@
|
|||
|
||||
#include "wordpad.h"
|
||||
|
||||
#pragma code_page(65001)
|
||||
|
||||
LANGUAGE LANG_DANISH, SUBLANG_DEFAULT
|
||||
|
||||
IDM_MAINMENU MENU DISCARDABLE
|
||||
|
@ -25,12 +28,12 @@ BEGIN
|
|||
POPUP "&Fil"
|
||||
BEGIN
|
||||
MENUITEM "&Ny...\tCtrl+N", ID_FILE_NEW
|
||||
MENUITEM "&Åben...\tCtrl+O", ID_FILE_OPEN
|
||||
MENUITEM "&Åben...\tCtrl+O", ID_FILE_OPEN
|
||||
MENUITEM "&Gemme\tCtrl+S", ID_FILE_SAVE
|
||||
MENUITEM "Gemme &som...", ID_FILE_SAVEAS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Udskriv...\tCtrl+P", ID_PRINT
|
||||
MENUITEM "&Forhåndsvisning...", ID_PREVIEW
|
||||
MENUITEM "&Forhåndsvisning...", ID_PREVIEW
|
||||
MENUITEM "&Side indstillinger...", ID_PRINTSETUP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Afslut", ID_FILE_EXIT
|
||||
|
@ -42,20 +45,20 @@ BEGIN
|
|||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Klip\tCtrl+X", ID_EDIT_CUT
|
||||
MENUITEM "K&opier\tCtrl+C", ID_EDIT_COPY
|
||||
MENUITEM "&Indsæt\tCtrl+V", ID_EDIT_PASTE
|
||||
MENUITEM "&Indsæt\tCtrl+V", ID_EDIT_PASTE
|
||||
MENUITEM "&Fjern\tDEL", ID_EDIT_CLEAR
|
||||
MENUITEM "&Marker alt\tCtrl+A", ID_EDIT_SELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Søg efter...\tCtrl+F", ID_FIND
|
||||
MENUITEM "Søg efter &næste\tF3", ID_FIND_NEXT
|
||||
MENUITEM "&Søg efter...\tCtrl+F", ID_FIND
|
||||
MENUITEM "Søg efter &næste\tF3", ID_FIND_NEXT
|
||||
MENUITEM "E&rstat...\tCtrl+H", ID_REPLACE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "S&krivebeskyttet", ID_EDIT_READONLY
|
||||
MENUITEM "Æ&ndret", ID_EDIT_MODIFIED
|
||||
MENUITEM "Æ&ndret", ID_EDIT_MODIFIED
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "&Ekstra"
|
||||
BEGIN
|
||||
MENUITEM "&Information om markeret område", ID_EDIT_SELECTIONINFO
|
||||
MENUITEM "&Information om markeret område", ID_EDIT_SELECTIONINFO
|
||||
MENUITEM "Tegn&format", ID_EDIT_CHARFORMAT
|
||||
MENUITEM "Stan&dard tegnformat", ID_EDIT_DEFCHARFORMAT
|
||||
MENUITEM "&Afsnitsformat", ID_EDIT_PARAFORMAT
|
||||
|
@ -64,14 +67,14 @@ BEGIN
|
|||
END
|
||||
POPUP "&Vis"
|
||||
BEGIN
|
||||
MENUITEM "Værk&tøjslinie", ID_TOGGLE_TOOLBAR
|
||||
MENUITEM "Værk&tøjslinie", ID_TOGGLE_TOOLBAR
|
||||
MENUITEM "&Formatteringlinie", ID_TOGGLE_FORMATBAR
|
||||
MENUITEM "&Lineal", ID_TOGGLE_RULER
|
||||
MENUITEM "&Statuslinie", ID_TOGGLE_STATUSBAR
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Alternativer...", ID_VIEWPROPERTIES
|
||||
END
|
||||
POPUP "&Indsæt"
|
||||
POPUP "&Indsæt"
|
||||
BEGIN
|
||||
MENUITEM "&Dato og tid...", ID_DATETIME
|
||||
END
|
||||
|
@ -87,7 +90,7 @@ BEGIN
|
|||
MENUITEM "&Huskeseddel\tCtrl+2", ID_BACK_2
|
||||
END
|
||||
END
|
||||
POPUP "&Hjælp"
|
||||
POPUP "&Hjælp"
|
||||
BEGIN
|
||||
MENUITEM "&Om Wine Wordpad" ID_ABOUT
|
||||
END
|
||||
|
@ -99,7 +102,7 @@ BEGIN
|
|||
BEGIN
|
||||
MENUITEM "&Klip" ID_EDIT_CUT
|
||||
MENUITEM "K&opier" ID_EDIT_COPY
|
||||
MENUITEM "&Indsæt" ID_EDIT_PASTE
|
||||
MENUITEM "&Indsæt" ID_EDIT_PASTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Bullets" ID_BULLET
|
||||
MENUITEM "&Afsnit..." ID_PARAFORMAT
|
||||
|
@ -111,18 +114,18 @@ BEGIN
|
|||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "Sort", ID_COLOR_BLACK
|
||||
MENUITEM "Mørkerød", ID_COLOR_MAROON
|
||||
MENUITEM "Grøn", ID_COLOR_GREEN
|
||||
MENUITEM "Mørkerød", ID_COLOR_MAROON
|
||||
MENUITEM "Grøn", ID_COLOR_GREEN
|
||||
MENUITEM "Oliven" ID_COLOR_OLIVE
|
||||
MENUITEM "Navy" ID_COLOR_NAVY
|
||||
MENUITEM "Lilla" ID_COLOR_PURPLE
|
||||
MENUITEM "Teal" ID_COLOR_TEAL
|
||||
MENUITEM "Grå" ID_COLOR_GRAY
|
||||
MENUITEM "Sølv" ID_COLOR_SILVER
|
||||
MENUITEM "Rød" ID_COLOR_RED
|
||||
MENUITEM "Grå" ID_COLOR_GRAY
|
||||
MENUITEM "Sølv" ID_COLOR_SILVER
|
||||
MENUITEM "Rød" ID_COLOR_RED
|
||||
MENUITEM "Lime" ID_COLOR_LIME
|
||||
MENUITEM "Gul" ID_COLOR_YELLOW
|
||||
MENUITEM "Blå" ID_COLOR_BLUE
|
||||
MENUITEM "Blå" ID_COLOR_BLUE
|
||||
MENUITEM "Violet" ID_COLOR_FUCHSIA
|
||||
MENUITEM "Cyan" ID_COLOR_AQUA
|
||||
MENUITEM "Hvid" ID_COLOR_WHITE
|
||||
|
@ -135,7 +138,7 @@ STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
|
|||
CAPTION "Dato og tid"
|
||||
FONT 10, "MS Sans Serif"
|
||||
BEGIN
|
||||
LTEXT "Tilgængelige formater",-1,3,2,100,15
|
||||
LTEXT "Tilgængelige formater",-1,3,2,100,15
|
||||
LISTBOX IDC_DATETIME,3,12,80,65,LBS_NOINTEGRALHEIGHT | LBS_NOTIFY
|
||||
PUSHBUTTON "&OK",IDOK,87,12,40,12
|
||||
PUSHBUTTON "&Annuller",IDCANCEL,87,26,40,12
|
||||
|
@ -160,9 +163,9 @@ BEGIN
|
|||
GROUPBOX "Indryk", -1, 10, 10, 120, 68
|
||||
LTEXT "Venstre", -1, 15, 22, 40, 13
|
||||
EDITTEXT IDC_PARA_LEFT, 55, 20, 60, 13
|
||||
LTEXT "Højre", -1, 15, 40, 40, 13
|
||||
LTEXT "Højre", -1, 15, 40, 40, 13
|
||||
EDITTEXT IDC_PARA_RIGHT, 55, 38, 60, 13
|
||||
LTEXT "Første linie", -1, 15, 58, 40, 13
|
||||
LTEXT "Første linie", -1, 15, 58, 40, 13
|
||||
EDITTEXT IDC_PARA_FIRST, 55, 56, 60, 13
|
||||
LTEXT "Justering", -1, 15, 87, 40, 13
|
||||
COMBOBOX IDC_PARA_ALIGN, 55, 85, 60, 60, CBS_DROPDOWNLIST
|
||||
|
@ -177,7 +180,7 @@ FONT 8, "MS SHell DLg"
|
|||
BEGIN
|
||||
GROUPBOX "Tabulatorstop", -1, 10, 10, 120, 90
|
||||
COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE
|
||||
DEFPUSHBUTTON "&Tilføj", ID_TAB_ADD, 20, 80, 45, 15
|
||||
DEFPUSHBUTTON "&Tilføj", ID_TAB_ADD, 20, 80, 45, 15
|
||||
PUSHBUTTON "&Fjern", ID_TAB_DEL, 72, 80, 45, 15
|
||||
PUSHBUTTON "&OK", IDOK, 137, 15, 50, 15
|
||||
PUSHBUTTON "&Annuller", IDCANCEL, 137, 33, 50, 15
|
||||
|
@ -193,8 +196,8 @@ BEGIN
|
|||
RADIOBUTTON "No line wrapping", IDC_PAGEFMT_WN, 18, 25, 117, 15
|
||||
RADIOBUTTON "Bryd tekst efter v&indusbredden", IDC_PAGEFMT_WW, 18, 45, 117, 15
|
||||
RADIOBUTTON "Bryd tekst efter &margen", IDC_PAGEFMT_WM, 18, 65, 117, 15
|
||||
GROUPBOX "Værktøjslinier", -1, 150, 10, 120, 85
|
||||
CHECKBOX "&Værktøjslinie", IDC_PAGEFMT_TB, 160, 20, 80, 15
|
||||
GROUPBOX "Værktøjslinier", -1, 150, 10, 120, 85
|
||||
CHECKBOX "&Værktøjslinie", IDC_PAGEFMT_TB, 160, 20, 80, 15
|
||||
CHECKBOX "&Formatteringlinie", IDC_PAGEFMT_FB, 160, 38, 80, 15
|
||||
CHECKBOX "&Lineal", IDC_PAGEFMT_RU, 160, 56, 80, 15
|
||||
CHECKBOX "&Statuslinie", IDC_PAGEFMT_SB, 160, 74, 80, 15
|
||||
|
@ -219,7 +222,7 @@ END
|
|||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_ALIGN_LEFT, "Venstrestillet"
|
||||
STRING_ALIGN_RIGHT, "Højrestillet"
|
||||
STRING_ALIGN_RIGHT, "Højrestillet"
|
||||
STRING_ALIGN_CENTER, "Midterstillet"
|
||||
END
|
||||
|
||||
|
@ -238,31 +241,36 @@ END
|
|||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_PREVIEW_PRINT, "Udskriv"
|
||||
STRING_PREVIEW_NEXTPAGE, "Næste side"
|
||||
STRING_PREVIEW_NEXTPAGE, "Næste side"
|
||||
STRING_PREVIEW_PREVPAGE, "Forrige side"
|
||||
STRING_PREVIEW_TWOPAGES, "To sider"
|
||||
STRING_PREVIEW_ONEPAGE, "Én side"
|
||||
STRING_PREVIEW_ONEPAGE, "Én side"
|
||||
STRING_PREVIEW_ZOOMIN, "Zoom in"
|
||||
STRING_PREVIEW_ZOOMOUT, "Zoom out"
|
||||
STRING_PREVIEW_CLOSE, "Luk"
|
||||
STRING_PREVIEW_PAGE, "Page"
|
||||
STRING_PREVIEW_PAGES, "Pages"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_PREVIEW_PAGE, "Side"
|
||||
STRING_PREVIEW_PAGES, "Sider"
|
||||
STRING_UNITS_CM, "cm"
|
||||
STRING_UNITS_IN, "tomme"
|
||||
STRING_UNITS_INCH, "tommer"
|
||||
STRING_UNITS_PT, "pkt"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_DEFAULT_FILENAME, "Dokument"
|
||||
STRING_PROMPT_SAVE_CHANGES, "Gemme ændringer i «%s»?"
|
||||
STRING_SEARCH_FINISHED, "Færdig med at søge i dokumentet."
|
||||
STRING_LOAD_RICHED_FAILED, "Kunne ikke indlæse RichEdit-biblioteket."
|
||||
STRING_PROMPT_SAVE_CHANGES, "Gemme ændringer i «%s»?"
|
||||
STRING_SEARCH_FINISHED, "Færdig med at søge i dokumentet."
|
||||
STRING_LOAD_RICHED_FAILED, "Kunne ikke indlæse RichEdit-biblioteket."
|
||||
STRING_SAVE_LOSEFORMATTING, "Du har valgt at gemme i rent tekstformat, noget som " \
|
||||
"vil medføre at al formatering går tabt. Er du " \
|
||||
"sikker på at du vil fortsætte?"
|
||||
"vil medføre at al formatering går tabt. Er du " \
|
||||
"sikker på at du vil fortsætte?"
|
||||
STRING_INVALID_NUMBER, "Ugyldigt talformat"
|
||||
STRING_OLE_STORAGE_NOT_SUPPORTED, "OLE storage dokumenter er ikke understøttet"
|
||||
STRING_OLE_STORAGE_NOT_SUPPORTED, "OLE storage dokumenter er ikke understøttet"
|
||||
STRING_WRITE_FAILED, "Kunne ikke gemme filen."
|
||||
STRING_WRITE_ACCESS_DENIED, "Filen kunne ikke gemmes, adgang nægtet."
|
||||
STRING_OPEN_FAILED, "Kunne ikke åbne filen."
|
||||
STRING_OPEN_ACCESS_DENIED, "Filen kunne ikke åbnes, adgang nægtet."
|
||||
STRING_PRINTING_NOT_IMPLEMENTED, "Udskrivning er endnu ikke implementeret."
|
||||
STRING_MAX_TAB_STOPS, "Kan ikke tilføje mere end 32 tabulatorer."
|
||||
END
|
||||
|
|
|
@ -192,7 +192,7 @@ Caption ""
|
|||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
GROUPBOX "Zeilenumbruch", -1, 10, 10, 130, 85
|
||||
RADIOBUTTON "No line wrapping", IDC_PAGEFMT_WN, 18, 25, 117, 15
|
||||
RADIOBUTTON "&Kein Zeilenumbruch", IDC_PAGEFMT_WN, 18, 25, 117, 15
|
||||
RADIOBUTTON "&Am Fenster umbrechen", IDC_PAGEFMT_WW, 18, 45, 117, 15
|
||||
RADIOBUTTON "A&m Lineal umbrechen", IDC_PAGEFMT_WM, 18, 65, 117, 15
|
||||
GROUPBOX "Symbolleisten", -1, 150, 10, 120, 85
|
||||
|
@ -249,11 +249,10 @@ BEGIN
|
|||
STRING_PREVIEW_CLOSE, "&Schließen"
|
||||
STRING_PREVIEW_PAGE, "Seite"
|
||||
STRING_PREVIEW_PAGES, "Seiten"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_UNITS_CM, "cm"
|
||||
STRING_UNITS_IN, "in"
|
||||
STRING_UNITS_INCH, "Zoll"
|
||||
STRING_UNITS_PT, "pt"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
|
|
|
@ -240,6 +240,9 @@ BEGIN
|
|||
STRING_PREVIEW_PAGE, "Page"
|
||||
STRING_PREVIEW_PAGES, "Pages"
|
||||
STRING_UNITS_CM, "cm"
|
||||
STRING_UNITS_IN, "in"
|
||||
STRING_UNITS_INCH, "inch"
|
||||
STRING_UNITS_PT, "pt"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
* Copyright 2006-2009 by Jonathan Ernst
|
||||
* Copyright 2010 by Frédéric Delanoy
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -58,10 +59,10 @@ BEGIN
|
|||
MENUITEM SEPARATOR
|
||||
POPUP "&Avancé"
|
||||
BEGIN
|
||||
MENUITEM "&Information sélection", ID_EDIT_SELECTIONINFO
|
||||
MENUITEM "&Format caractères", ID_EDIT_CHARFORMAT
|
||||
MENUITEM "&Déf. format car.", ID_EDIT_DEFCHARFORMAT
|
||||
MENUITEM "Format paragrap&he", ID_EDIT_PARAFORMAT
|
||||
MENUITEM "&Informations sur la sélection", ID_EDIT_SELECTIONINFO
|
||||
MENUITEM "&Format de caractères", ID_EDIT_CHARFORMAT
|
||||
MENUITEM "Format de caractères par &défaut", ID_EDIT_DEFCHARFORMAT
|
||||
MENUITEM "Format de ¶graphe", ID_EDIT_PARAFORMAT
|
||||
MENUITEM "Texte &complet", ID_EDIT_GETTEXT
|
||||
END
|
||||
END
|
||||
|
@ -129,7 +130,7 @@ BEGIN
|
|||
MENUITEM "Fuchsia" ID_COLOR_FUCHSIA
|
||||
MENUITEM "Eau" ID_COLOR_AQUA
|
||||
MENUITEM "Blanc" ID_COLOR_WHITE
|
||||
MENUITEM "Automatic" ID_COLOR_AUTOMATIC
|
||||
MENUITEM "Automatique" ID_COLOR_AUTOMATIC
|
||||
END
|
||||
END
|
||||
|
||||
|
@ -250,11 +251,10 @@ BEGIN
|
|||
STRING_PREVIEW_CLOSE, "Fermer"
|
||||
STRING_PREVIEW_PAGE, "Page"
|
||||
STRING_PREVIEW_PAGES, "Pages"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_UNITS_CM, "cm"
|
||||
STRING_UNITS_IN, "po"
|
||||
STRING_UNITS_INCH, "pouces"
|
||||
STRING_UNITS_PT, "pt"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
|
|
|
@ -54,7 +54,7 @@ BEGIN
|
|||
MENUITEM "Trova s&uccessivo\tF3", ID_FIND_NEXT
|
||||
MENUITEM "S&ostituisci...\tCtrl+H", ID_REPLACE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Sola &Lettura", ID_EDIT_READONLY
|
||||
MENUITEM "Solo &Lettura", ID_EDIT_READONLY
|
||||
MENUITEM "&Modificato", ID_EDIT_MODIFIED
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "E&xtra"
|
||||
|
@ -81,7 +81,7 @@ BEGIN
|
|||
END
|
||||
POPUP "F&ormato"
|
||||
BEGIN
|
||||
MENUITEM "&Font...", ID_FONTSETTINGS
|
||||
MENUITEM "&Carattere...", ID_FONTSETTINGS
|
||||
MENUITEM "&Elenco" ID_BULLET
|
||||
MENUITEM "&Paragrafo..." ID_PARAFORMAT
|
||||
MENUITEM "&Tabulazioni..." ID_TABSTOPS
|
||||
|
@ -93,7 +93,7 @@ BEGIN
|
|||
END
|
||||
POPUP "&Aiuto"
|
||||
BEGIN
|
||||
MENUITEM "&Su Wine Wordpad" ID_ABOUT
|
||||
MENUITEM "&Riguardo A Wine Wordpad" ID_ABOUT
|
||||
END
|
||||
END
|
||||
|
||||
|
@ -208,9 +208,9 @@ END
|
|||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_ALL_FILES, "Tutti i files (*.*)"
|
||||
STRING_TEXT_FILES_TXT, "Files di testo (*.txt)"
|
||||
STRING_TEXT_FILES_UNICODE_TXT, "Files di testo Unicode (*.txt)"
|
||||
STRING_RICHTEXT_FILES_RTF, "Rich text format (*.rtf)"
|
||||
STRING_TEXT_FILES_TXT, "File di testo (*.txt)"
|
||||
STRING_TEXT_FILES_UNICODE_TXT, "File di testo Unicode (*.txt)"
|
||||
STRING_RICHTEXT_FILES_RTF, "Formato rich text (*.rtf)"
|
||||
STRING_NEWFILE_RICHTEXT, "Documento Rich text"
|
||||
STRING_NEWFILE_TXT, "Documento di testo"
|
||||
STRING_NEWFILE_TXT_UNICODE, "Documento di testo Unicode"
|
||||
|
@ -241,9 +241,12 @@ BEGIN
|
|||
STRING_PREVIEW_ZOOMIN, "Ingrandisci"
|
||||
STRING_PREVIEW_ZOOMOUT, "Rimpicciolisci"
|
||||
STRING_PREVIEW_CLOSE, "Chiudi"
|
||||
STRING_PREVIEW_PAGE, "Page"
|
||||
STRING_PREVIEW_PAGES, "Pages"
|
||||
STRING_PREVIEW_PAGE, "Pagina"
|
||||
STRING_PREVIEW_PAGES, "Pagine"
|
||||
STRING_UNITS_CM, "cm"
|
||||
STRING_UNITS_IN, "po"
|
||||
STRING_UNITS_INCH, "pollici"
|
||||
STRING_UNITS_PT, "pt"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
|
|
|
@ -129,14 +129,14 @@ BEGIN
|
|||
MENUITEM "赤紫" ID_COLOR_FUCHSIA
|
||||
MENUITEM "水色" ID_COLOR_AQUA
|
||||
MENUITEM "白" ID_COLOR_WHITE
|
||||
MENUITEM "Automatic" ID_COLOR_AUTOMATIC
|
||||
MENUITEM "自動" ID_COLOR_AUTOMATIC
|
||||
END
|
||||
END
|
||||
|
||||
IDD_DATETIME DIALOG DISCARDABLE 30, 20, 130, 80
|
||||
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "日付と時刻"
|
||||
FONT 9, "MS Shell Dlg"
|
||||
FONT 10, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "利用できる形式",-1,3,2,100,15
|
||||
LISTBOX IDC_DATETIME,3,12,80,65,LBS_NOINTEGRALHEIGHT | LBS_NOTIFY
|
||||
|
@ -147,7 +147,7 @@ END
|
|||
IDD_NEWFILE DIALOG DISCARDABLE 30, 20, 140, 80
|
||||
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "新規作成"
|
||||
FONT 9, "MS Shell Dlg"
|
||||
FONT 10, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "新しい文書形式",-1,3,2,100,15
|
||||
LISTBOX IDC_NEWFILE,3,12,90,65,LBS_NOINTEGRALHEIGHT
|
||||
|
@ -193,7 +193,7 @@ CAPTION ""
|
|||
FONT 9, "MS Shell Dlg"
|
||||
BEGIN
|
||||
GROUPBOX "行の折り返し", -1, 10, 10, 130, 85
|
||||
RADIOBUTTON "No line wrapping", IDC_PAGEFMT_WN, 18, 25, 117, 15
|
||||
RADIOBUTTON "折り返ししない", IDC_PAGEFMT_WN, 18, 25, 117, 15
|
||||
RADIOBUTTON "ウィンドウの境界で折り返す(&W)", IDC_PAGEFMT_WW, 18, 45, 117, 15
|
||||
RADIOBUTTON "マージンで折り返す(&M)", IDC_PAGEFMT_WM, 18, 65, 117, 15
|
||||
GROUPBOX "ツールバー", -1, 150, 10, 120, 85
|
||||
|
@ -206,10 +206,14 @@ END
|
|||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_RICHTEXT_FILES_RTF, "リッチテキスト形式 (*.rtf)"
|
||||
STRING_ALL_FILES, "すべてのファイル (*.*)"
|
||||
STRING_TEXT_FILES_TXT, "テキスト文書 (*.txt)"
|
||||
STRING_TEXT_FILES_UNICODE_TXT, "Unicodeテキスト文書(*.txt)"
|
||||
STRING_ALL_FILES, "すべてのファイル (*.*)"
|
||||
STRING_RICHTEXT_FILES_RTF, "リッチテキスト形式 (*.rtf)"
|
||||
STRING_NEWFILE_RICHTEXT, "リッチテキスト文書"
|
||||
STRING_NEWFILE_TXT, "テキスト文書"
|
||||
STRING_NEWFILE_TXT_UNICODE, "Unicodeテキスト文書"
|
||||
STRING_PRINTER_FILES_PRN, "プリンタファイル (*.PRN)"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
|
@ -219,18 +223,6 @@ BEGIN
|
|||
STRING_ALIGN_CENTER, "中央"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_NEWFILE_RICHTEXT, "リッチテキスト文書"
|
||||
STRING_NEWFILE_TXT, "テキスト文書"
|
||||
STRING_NEWFILE_TXT_UNICODE, "Unicodeテキスト文書"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_PRINTER_FILES_PRN, "プリンタファイル (*.PRN)"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_VIEWPROPS_TITLE, "オプション"
|
||||
|
@ -245,16 +237,15 @@ BEGIN
|
|||
STRING_PREVIEW_PREVPAGE, "前のページ"
|
||||
STRING_PREVIEW_TWOPAGES, "2ページ"
|
||||
STRING_PREVIEW_ONEPAGE, "1ページ"
|
||||
STRING_PREVIEW_ZOOMIN, "Zoom in"
|
||||
STRING_PREVIEW_ZOOMOUT, "Zoom out"
|
||||
STRING_PREVIEW_ZOOMIN, "拡大"
|
||||
STRING_PREVIEW_ZOOMOUT, "縮小"
|
||||
STRING_PREVIEW_CLOSE, "閉じる"
|
||||
STRING_PREVIEW_PAGE, "Page"
|
||||
STRING_PREVIEW_PAGES, "Pages"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_PREVIEW_PAGE, "ページ"
|
||||
STRING_PREVIEW_PAGES, "ページ"
|
||||
STRING_UNITS_CM, "cm"
|
||||
STRING_UNITS_IN, "in"
|
||||
STRING_UNITS_INCH, "インチ"
|
||||
STRING_UNITS_PT, "pt"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
|
|
|
@ -242,6 +242,9 @@ BEGIN
|
|||
STRING_PREVIEW_PAGE, "페이지"
|
||||
STRING_PREVIEW_PAGES, "페이지들"
|
||||
STRING_UNITS_CM, "cm"
|
||||
STRING_UNITS_IN, "in"
|
||||
STRING_UNITS_INCH, "인치"
|
||||
STRING_UNITS_PT, "pt"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
|
|
|
@ -250,11 +250,10 @@ BEGIN
|
|||
STRING_PREVIEW_CLOSE, "Užverti"
|
||||
STRING_PREVIEW_PAGE, "Puslapis"
|
||||
STRING_PREVIEW_PAGES, "Puslapiai"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_UNITS_CM, "cm"
|
||||
STRING_UNITS_IN, "col."
|
||||
STRING_UNITS_INCH, "coliai"
|
||||
STRING_UNITS_PT, "tašk."
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
|
|
|
@ -21,6 +21,8 @@
|
|||
|
||||
LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
|
||||
|
||||
#pragma code_page(65001)
|
||||
|
||||
IDM_MAINMENU MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "&Bestand"
|
||||
|
@ -30,26 +32,26 @@ BEGIN
|
|||
MENUITEM "Op&slaan\tCtrl+S", ID_FILE_SAVE
|
||||
MENUITEM "Ops&laan als...", ID_FILE_SAVEAS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Print...\tCtrl+P", ID_PRINT
|
||||
MENUITEM "Print &voorbeeld...", ID_PREVIEW
|
||||
MENUITEM "Pa&gina setup...", ID_PRINTSETUP
|
||||
MENUITEM "Af&drukken...\tCtrl+P", ID_PRINT
|
||||
MENUITEM "Afdruk&voorbeeld...", ID_PREVIEW
|
||||
MENUITEM "Pa&gina-instellingen...", ID_PRINTSETUP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Afsluiten", ID_FILE_EXIT
|
||||
END
|
||||
POPUP "Be&werken"
|
||||
BEGIN
|
||||
MENUITEM "&Ongedaan maken\tCtrl+Z", ID_EDIT_UNDO
|
||||
MENUITEM "O&pnieuw\tCtrl+Y", ID_EDIT_REDO
|
||||
MENUITEM "Opn&ieuw\tCtrl+Y", ID_EDIT_REDO
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "K&nippen\tCtrl+X", ID_EDIT_CUT
|
||||
MENUITEM "&Kopieren\tCtrl+C", ID_EDIT_COPY
|
||||
MENUITEM "&Kopiëren\tCtrl+C", ID_EDIT_COPY
|
||||
MENUITEM "&Plakken\tCtrl+V", ID_EDIT_PASTE
|
||||
MENUITEM "&Verwijderen\tDel", ID_EDIT_CLEAR
|
||||
MENUITEM "&Alles selecteren\tCtrl+A", ID_EDIT_SELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Zoeken...\tCtrl+F", ID_FIND
|
||||
MENUITEM "Zoek vo&lgende\tF3", ID_FIND_NEXT
|
||||
MENUITEM "Ve&rvang...\tCtrl+H", ID_REPLACE
|
||||
MENUITEM "Ve&rvangen...\tCtrl+H", ID_REPLACE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Alleen &lezen", ID_EDIT_READONLY
|
||||
MENUITEM "&Gewijzigd", ID_EDIT_MODIFIED
|
||||
|
@ -65,9 +67,9 @@ BEGIN
|
|||
END
|
||||
POPUP "&Bekijken"
|
||||
BEGIN
|
||||
MENUITEM "&Toolbalk", ID_TOGGLE_TOOLBAR
|
||||
MENUITEM "&Gereedschapsbalk", ID_TOGGLE_TOOLBAR
|
||||
MENUITEM "&Formaatbalk", ID_TOGGLE_FORMATBAR
|
||||
MENUITEM "&Lineaal", ID_TOGGLE_RULER
|
||||
MENUITEM "&Liniaal", ID_TOGGLE_RULER
|
||||
MENUITEM "&Statusbalk", ID_TOGGLE_STATUSBAR
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Opties...", ID_VIEWPROPERTIES
|
||||
|
@ -99,7 +101,7 @@ BEGIN
|
|||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "K&nippen", ID_EDIT_CUT
|
||||
MENUITEM "&Kopieren", ID_EDIT_COPY
|
||||
MENUITEM "&Kopiëren", ID_EDIT_COPY
|
||||
MENUITEM "&Plakken", ID_EDIT_PASTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Bullet points" ID_BULLET
|
||||
|
@ -127,7 +129,7 @@ BEGIN
|
|||
MENUITEM "Fuchsiapaars" ID_COLOR_FUCHSIA
|
||||
MENUITEM "Zeeblauw" ID_COLOR_AQUA
|
||||
MENUITEM "Wit" ID_COLOR_WHITE
|
||||
MENUITEM "Automatic" ID_COLOR_AUTOMATIC
|
||||
MENUITEM "Automatisch" ID_COLOR_AUTOMATIC
|
||||
END
|
||||
END
|
||||
|
||||
|
@ -158,7 +160,7 @@ STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
|
|||
Caption "Paragraaf formaat"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
GROUPBOX "Indentation", -1, 10, 10, 120, 68
|
||||
GROUPBOX "Inspringing", -1, 10, 10, 120, 68
|
||||
LTEXT "Links", -1, 15, 22, 40, 13
|
||||
EDITTEXT IDC_PARA_LEFT, 55, 20, 60, 13
|
||||
LTEXT "Rechts", -1, 15, 40, 40, 13
|
||||
|
@ -176,7 +178,7 @@ STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
|
|||
Caption "Tabs"
|
||||
FONT 8, "MS SHell DLg"
|
||||
BEGIN
|
||||
GROUPBOX "Tab stops", -1, 10, 10, 120, 90
|
||||
GROUPBOX "Tab-einden", -1, 10, 10, 120, 90
|
||||
COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE
|
||||
DEFPUSHBUTTON "&Toevoegen", ID_TAB_ADD, 20, 80, 45, 15
|
||||
PUSHBUTTON "&Verwijderen", ID_TAB_DEL, 72, 80, 45, 15
|
||||
|
@ -191,13 +193,13 @@ Caption ""
|
|||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
GROUPBOX "Regel afbreken", -1, 10, 10, 130, 85
|
||||
RADIOBUTTON "No line wrapping", IDC_PAGEFMT_WN, 18, 25, 117, 15
|
||||
RADIOBUTTON "Geen regelafbraak", IDC_PAGEFMT_WN, 18, 25, 117, 15
|
||||
RADIOBUTTON "Breek tekst af bij &venster rand", IDC_PAGEFMT_WW, 18, 45, 117, 15
|
||||
RADIOBUTTON "Breek tekst af bij de &marge", IDC_PAGEFMT_WM, 18, 65, 117, 15
|
||||
GROUPBOX "Toolbars", -1, 150, 10, 120, 85
|
||||
CHECKBOX "&Toolbalk", IDC_PAGEFMT_TB, 160, 20, 80, 15
|
||||
GROUPBOX "Gereedschapsbalken", -1, 150, 10, 120, 85
|
||||
CHECKBOX "&Gereedschapsbalk", IDC_PAGEFMT_TB, 160, 20, 80, 15
|
||||
CHECKBOX "&Formaatbalk", IDC_PAGEFMT_FB, 160, 38, 80, 15
|
||||
CHECKBOX "&Lineaal", IDC_PAGEFMT_RU, 160, 56, 80, 15
|
||||
CHECKBOX "&Liniaal", IDC_PAGEFMT_RU, 160, 56, 80, 15
|
||||
CHECKBOX "&Statusbalk", IDC_PAGEFMT_SB, 160, 74, 80, 15
|
||||
LTEXT "", IDC_PAGEFMT_ID, 0,0,0,0
|
||||
END
|
||||
|
@ -207,11 +209,11 @@ BEGIN
|
|||
STRING_ALL_FILES, "Alle documenten (*.*)"
|
||||
STRING_TEXT_FILES_TXT, "Tekstdocumenten (*.txt)"
|
||||
STRING_TEXT_FILES_UNICODE_TXT, "Unicode tekstdocument (*.txt)"
|
||||
STRING_RICHTEXT_FILES_RTF, "Rich text formaat (*.rtf)"
|
||||
STRING_RICHTEXT_FILES_RTF, "Rich tekstformaat (*.rtf)"
|
||||
STRING_NEWFILE_RICHTEXT, "Rich tekstdocument"
|
||||
STRING_NEWFILE_TXT, "Tekstdocument"
|
||||
STRING_NEWFILE_TXT_UNICODE, "Unicode tekstdocument"
|
||||
STRING_PRINTER_FILES_PRN, "Printer bestanden (*.PRN)"
|
||||
STRING_PRINTER_FILES_PRN, "Afdrukbestanden (*.PRN)"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
|
@ -230,38 +232,37 @@ END
|
|||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_PREVIEW_PRINT, "Print"
|
||||
STRING_PREVIEW_PRINT, "Afdrukken"
|
||||
STRING_PREVIEW_NEXTPAGE, "Volgende pagina"
|
||||
STRING_PREVIEW_PREVPAGE, "Vorige pagina"
|
||||
STRING_PREVIEW_TWOPAGES, "Twee pagina's"
|
||||
STRING_PREVIEW_ONEPAGE, "Een pagina"
|
||||
STRING_PREVIEW_ZOOMIN, "Zoom in"
|
||||
STRING_PREVIEW_ZOOMOUT, "Zoom out"
|
||||
STRING_PREVIEW_ZOOMIN, "Inzoomen"
|
||||
STRING_PREVIEW_ZOOMOUT, "Uitzoomen"
|
||||
STRING_PREVIEW_CLOSE, "Sluiten"
|
||||
STRING_PREVIEW_PAGE, "Page"
|
||||
STRING_PREVIEW_PAGES, "Pages"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_PREVIEW_PAGE, "Pagina"
|
||||
STRING_PREVIEW_PAGES, "Pagina's"
|
||||
STRING_UNITS_CM, "cm"
|
||||
STRING_UNITS_IN, "in"
|
||||
STRING_UNITS_INCH, "inch"
|
||||
STRING_UNITS_PT, "pt"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_DEFAULT_FILENAME, "Document"
|
||||
STRING_PROMPT_SAVE_CHANGES, "Wijzigingen opslaan van '%s'?"
|
||||
STRING_SEARCH_FINISHED, "Doorzoeken van document beeindigd."
|
||||
STRING_PROMPT_SAVE_CHANGES, "Wijzigingen opslaan naar '%s'?"
|
||||
STRING_SEARCH_FINISHED, "Doorzoeken van document voltooid."
|
||||
STRING_LOAD_RICHED_FAILED, "Laden van de RichEdit library is mislukt."
|
||||
STRING_SAVE_LOSEFORMATTING, "U koos voor opslaan in gewoon tekst formaat, " \
|
||||
"waardoor alle formatering verloren zal gaan. " \
|
||||
"waardoor alle formattering verloren zal gaan. " \
|
||||
"Weet u zeker dat u dit wilt?"
|
||||
STRING_INVALID_NUMBER, "Foutief nummerformaat"
|
||||
STRING_OLE_STORAGE_NOT_SUPPORTED, "OLE storage documenten zijn niet ondersteund"
|
||||
STRING_WRITE_FAILED, "Bestand kon niet opgeslagen worden."
|
||||
STRING_OLE_STORAGE_NOT_SUPPORTED, "OLE storage documenten worden niet ondersteund"
|
||||
STRING_WRITE_FAILED, "Bestand kon niet worden opgeslagen."
|
||||
STRING_WRITE_ACCESS_DENIED, "Onvoldoende rechten om het bestand op te slaan."
|
||||
STRING_OPEN_FAILED, "Bestand kon niet geopend worden."
|
||||
STRING_OPEN_FAILED, "Bestand kon niet worden geopend."
|
||||
STRING_OPEN_ACCESS_DENIED, "Onvoldoende rechten om het bestand te openen."
|
||||
STRING_PRINTING_NOT_IMPLEMENTED, "Printen is nog niet geimplementeerd"
|
||||
STRING_PRINTING_NOT_IMPLEMENTED, "Printen is nog niet geïmplementeerd"
|
||||
STRING_MAX_TAB_STOPS, "Onmogelijk om meer dan 32 tab stops toe te voegen."
|
||||
END
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/*
|
||||
* Copyright 2004 by Krzysztof Foltman
|
||||
* Copyright 2006 by Mikolaj Zalewski
|
||||
* Copyright 2010 by £ukasz Wojni³owicz
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -127,7 +128,7 @@ BEGIN
|
|||
MENUITEM "Fuksja" ID_COLOR_FUCHSIA
|
||||
MENUITEM "Akwamaryna" ID_COLOR_AQUA
|
||||
MENUITEM "Bia³y" ID_COLOR_WHITE
|
||||
MENUITEM "Automatic" ID_COLOR_AUTOMATIC
|
||||
MENUITEM "Automatycznie" ID_COLOR_AUTOMATIC
|
||||
END
|
||||
END
|
||||
|
||||
|
@ -191,7 +192,7 @@ Caption ""
|
|||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
GROUPBOX "Zawijanie wierszy", -1, 10, 10, 130, 85
|
||||
RADIOBUTTON "No line wrapping", IDC_PAGEFMT_WN, 18, 25, 117, 15
|
||||
RADIOBUTTON "Bez zawijania wierszy", IDC_PAGEFMT_WN, 18, 25, 117, 15
|
||||
RADIOBUTTON "Zawijaj do &brzegu okna", IDC_PAGEFMT_WW, 18, 45, 117, 15
|
||||
RADIOBUTTON "Zawijaj do &marginesu", IDC_PAGEFMT_WM, 18, 65, 117, 15
|
||||
GROUPBOX "Paski narzêdzi", -1, 150, 10, 120, 85
|
||||
|
@ -206,7 +207,7 @@ STRINGTABLE DISCARDABLE
|
|||
BEGIN
|
||||
STRING_RICHTEXT_FILES_RTF, "Tekst sformatowany - RTF (*.rtf)"
|
||||
STRING_TEXT_FILES_TXT, "Dokument tekstowy (*.txt)"
|
||||
STRING_TEXT_FILES_UNICODE_TXT, "Unicode text document (*.txt)"
|
||||
STRING_TEXT_FILES_UNICODE_TXT, "Dokument tekstowy Unicode (*.txt)"
|
||||
STRING_ALL_FILES, "Wszystkie dokumenty (*.*)"
|
||||
END
|
||||
|
||||
|
@ -219,9 +220,9 @@ END
|
|||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_NEWFILE_RICHTEXT, "Document sformatowany (RTF)"
|
||||
STRING_NEWFILE_TXT, "Document tekstowy"
|
||||
STRING_NEWFILE_TXT_UNICODE, "Document tekstowy Unicode"
|
||||
STRING_NEWFILE_RICHTEXT, "Dokument sformatowany (RTF)"
|
||||
STRING_NEWFILE_TXT, "Dokument tekstowy"
|
||||
STRING_NEWFILE_TXT_UNICODE, "Dokument tekstowy Unicode"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
|
@ -241,18 +242,17 @@ BEGIN
|
|||
STRING_PREVIEW_PRINT, "Drukuj"
|
||||
STRING_PREVIEW_NEXTPAGE, "Nast. strona"
|
||||
STRING_PREVIEW_PREVPAGE, "Poprz. strona"
|
||||
STRING_PREVIEW_TWOPAGES, "Two pages"
|
||||
STRING_PREVIEW_ONEPAGE, "One page"
|
||||
STRING_PREVIEW_ZOOMIN, "Zoom in"
|
||||
STRING_PREVIEW_ZOOMOUT, "Zoom out"
|
||||
STRING_PREVIEW_TWOPAGES, "Dwie strony"
|
||||
STRING_PREVIEW_ONEPAGE, "Jedna strona"
|
||||
STRING_PREVIEW_ZOOMIN, "Zbli¿"
|
||||
STRING_PREVIEW_ZOOMOUT, "Oddal"
|
||||
STRING_PREVIEW_CLOSE, "Zamknij"
|
||||
STRING_PREVIEW_PAGE, "Page"
|
||||
STRING_PREVIEW_PAGES, "Pages"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_PREVIEW_PAGE, "Strona"
|
||||
STRING_PREVIEW_PAGES, "Strony"
|
||||
STRING_UNITS_CM, "cm"
|
||||
STRING_UNITS_IN, "cal"
|
||||
STRING_UNITS_INCH, "cal"
|
||||
STRING_UNITS_PT, "punkt"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
|
@ -266,4 +266,10 @@ BEGIN
|
|||
"Czy na pewno chcesz to zrobiæ?"
|
||||
STRING_INVALID_NUMBER, "Z³y format liczby"
|
||||
STRING_OLE_STORAGE_NOT_SUPPORTED, "Dokumenty typu OLE storage nie s¹ obs³ugiwane"
|
||||
STRING_WRITE_FAILED, "Nie mo¿na by³o zapisaæ pliku."
|
||||
STRING_WRITE_ACCESS_DENIED, "Nie masz dostêpu do zapisu pliku."
|
||||
STRING_OPEN_FAILED, "Nie mo¿na by³o otworzyæ pliku."
|
||||
STRING_OPEN_ACCESS_DENIED, "Nie masz dostêpu do otwarcia pliku."
|
||||
STRING_PRINTING_NOT_IMPLEMENTED, "Drukowanie niezaimplementowane"
|
||||
STRING_MAX_TAB_STOPS, "Nie mo¿na dodaæ wiêcej ni¿ 32 punkty tabulacji."
|
||||
END
|
||||
|
|
|
@ -247,13 +247,12 @@ BEGIN
|
|||
STRING_PREVIEW_ZOOMIN, "Zoom in"
|
||||
STRING_PREVIEW_ZOOMOUT, "Zoom out"
|
||||
STRING_PREVIEW_CLOSE, "Zapri"
|
||||
STRING_PREVIEW_PAGE, "Page"
|
||||
STRING_PREVIEW_PAGES, "Pages"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_PREVIEW_PAGE, "Stran"
|
||||
STRING_PREVIEW_PAGES, "Strani"
|
||||
STRING_UNITS_CM, "cm"
|
||||
STRING_UNITS_IN, "in"
|
||||
STRING_UNITS_INCH, "inch"
|
||||
STRING_UNITS_PT, "pt"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
|
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 8.1 KiB |
|
@ -487,7 +487,6 @@ static void print(LPPRINTDLGW pd, LPWSTR wszFileName)
|
|||
StartDocW(fr.hdc, &di);
|
||||
do
|
||||
{
|
||||
int bottom = fr.rc.bottom;
|
||||
if(StartPage(fr.hdc) <= 0)
|
||||
break;
|
||||
|
||||
|
@ -495,7 +494,6 @@ static void print(LPPRINTDLGW pd, LPWSTR wszFileName)
|
|||
|
||||
if(EndPage(fr.hdc) <= 0)
|
||||
break;
|
||||
bottom = fr.rc.bottom;
|
||||
|
||||
printedPages++;
|
||||
if((pd->Flags & PD_PAGENUMS) && (printedPages > (pd->nToPage - pd->nFromPage)))
|
||||
|
@ -789,7 +787,6 @@ static void update_scaled_preview(HWND hMainWnd)
|
|||
|
||||
void init_preview(HWND hMainWnd, LPWSTR wszFileName)
|
||||
{
|
||||
HWND hwndPreview;
|
||||
HINSTANCE hInstance = GetModuleHandleW(0);
|
||||
preview.page = 1;
|
||||
preview.hdc = 0;
|
||||
|
@ -799,7 +796,7 @@ void init_preview(HWND hMainWnd, LPWSTR wszFileName)
|
|||
preview.zoomlevel = 0;
|
||||
preview_bar_show(hMainWnd, TRUE);
|
||||
|
||||
hwndPreview = CreateWindowExW(0, wszPreviewWndClass, NULL,
|
||||
CreateWindowExW(0, wszPreviewWndClass, NULL,
|
||||
WS_VISIBLE | WS_CHILD | WS_VSCROLL | WS_HSCROLL,
|
||||
0, 0, 200, 10, hMainWnd, (HMENU)IDC_PREVIEW, hInstance, NULL);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/*
|
||||
/*
|
||||
* Copyright 2004 by Krzysztof Foltman
|
||||
* Copyright 2007 by Alexander N. Sørnes <alex@thehandofagony.com>
|
||||
*
|
||||
|
@ -52,33 +52,24 @@ IDB_FORMATBAR BITMAP "formatbar.bmp"
|
|||
/* @makedep: wordpad.ico */
|
||||
IDI_WORDPAD ICON "wordpad.ico"
|
||||
|
||||
/* @makedep: rtf.ico */
|
||||
IDI_RTF ICON "rtf.ico"
|
||||
|
||||
/* @makedep: wri.ico */
|
||||
IDI_WRI ICON "wri.ico"
|
||||
|
||||
/* @makedep: txt.ico */
|
||||
IDI_TXT ICON "txt.ico"
|
||||
|
||||
/* @makedep: zoom.cur */
|
||||
IDC_ZOOM CURSOR "zoom.cur"
|
||||
|
||||
|
||||
#include "Da.rc"
|
||||
#include "En.rc"
|
||||
#include "Hu.rc"
|
||||
#include "Ko.rc"
|
||||
#include "Nl.rc"
|
||||
#include "Pl.rc"
|
||||
#include "Tr.rc"
|
||||
|
||||
/* UTF-8 */
|
||||
#include "Da.rc"
|
||||
#include "De.rc"
|
||||
#include "Fr.rc"
|
||||
#include "It.rc"
|
||||
#include "Ja.rc"
|
||||
#include "Lt.rc"
|
||||
#include "Nl.rc"
|
||||
#include "No.rc"
|
||||
#include "Pt.rc"
|
||||
#include "Ru.rc"
|
||||
|
|
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 246 B After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 2.2 KiB |
|
@ -76,11 +76,19 @@ static WCHAR wszFilter[MAX_STRING_LEN*4+6*3+5];
|
|||
static WCHAR wszDefaultFileName[MAX_STRING_LEN];
|
||||
static WCHAR wszSaveChanges[MAX_STRING_LEN];
|
||||
static WCHAR units_cmW[MAX_STRING_LEN];
|
||||
|
||||
static char units_cmA[MAX_STRING_LEN];
|
||||
static WCHAR units_inW[MAX_STRING_LEN];
|
||||
static WCHAR units_inchW[MAX_STRING_LEN];
|
||||
static WCHAR units_ptW[MAX_STRING_LEN];
|
||||
|
||||
static LRESULT OnSize( HWND hWnd, WPARAM wParam, LPARAM lParam );
|
||||
|
||||
typedef enum
|
||||
{
|
||||
UNIT_CM,
|
||||
UNIT_INCH,
|
||||
UNIT_PT
|
||||
} UNIT;
|
||||
|
||||
/* Load string resources */
|
||||
static void DoLoadStrings(void)
|
||||
{
|
||||
|
@ -115,8 +123,10 @@ static void DoLoadStrings(void)
|
|||
p = wszSaveChanges;
|
||||
LoadStringW(hInstance, STRING_PROMPT_SAVE_CHANGES, p, MAX_STRING_LEN);
|
||||
|
||||
LoadStringA(hInstance, STRING_UNITS_CM, units_cmA, MAX_STRING_LEN);
|
||||
LoadStringW(hInstance, STRING_UNITS_CM, units_cmW, MAX_STRING_LEN);
|
||||
LoadStringW(hInstance, STRING_UNITS_IN, units_inW, MAX_STRING_LEN);
|
||||
LoadStringW(hInstance, STRING_UNITS_INCH, units_inchW, MAX_STRING_LEN);
|
||||
LoadStringW(hInstance, STRING_UNITS_PT, units_ptW, MAX_STRING_LEN);
|
||||
}
|
||||
|
||||
/* Show a message box with resource strings */
|
||||
|
@ -239,8 +249,10 @@ static void set_caption(LPCWSTR wszNewFileName)
|
|||
HeapFree(GetProcessHeap(), 0, wszCaption);
|
||||
}
|
||||
|
||||
static BOOL validate_endptr(LPCSTR endptr, BOOL units)
|
||||
static BOOL validate_endptr(LPCWSTR endptr, UNIT *punit)
|
||||
{
|
||||
if(punit != NULL)
|
||||
*punit = UNIT_CM;
|
||||
if(!endptr)
|
||||
return FALSE;
|
||||
if(!*endptr)
|
||||
|
@ -249,28 +261,45 @@ static BOOL validate_endptr(LPCSTR endptr, BOOL units)
|
|||
while(*endptr == ' ')
|
||||
endptr++;
|
||||
|
||||
if(!units)
|
||||
if(punit == NULL)
|
||||
return *endptr == '\0';
|
||||
|
||||
/* FIXME: Allow other units and convert between them */
|
||||
if(!lstrcmpA(endptr, units_cmA))
|
||||
endptr += 2;
|
||||
if(!lstrcmpW(endptr, units_cmW))
|
||||
{
|
||||
*punit = UNIT_CM;
|
||||
endptr += lstrlenW(units_cmW);
|
||||
}
|
||||
else if (!lstrcmpW(endptr, units_inW))
|
||||
{
|
||||
*punit = UNIT_INCH;
|
||||
endptr += lstrlenW(units_inW);
|
||||
}
|
||||
else if (!lstrcmpW(endptr, units_inchW))
|
||||
{
|
||||
*punit = UNIT_INCH;
|
||||
endptr += lstrlenW(units_inchW);
|
||||
}
|
||||
else if (!lstrcmpW(endptr, units_ptW))
|
||||
{
|
||||
*punit = UNIT_PT;
|
||||
endptr += lstrlenW(units_ptW);
|
||||
}
|
||||
|
||||
return *endptr == '\0';
|
||||
}
|
||||
|
||||
static BOOL number_from_string(LPCWSTR string, float *num, BOOL units)
|
||||
static BOOL number_from_string(LPCWSTR string, float *num, UNIT *punit)
|
||||
{
|
||||
double ret;
|
||||
char buffer[MAX_STRING_LEN];
|
||||
char *endptr = buffer;
|
||||
WCHAR *endptr;
|
||||
|
||||
WideCharToMultiByte(CP_ACP, 0, string, -1, buffer, MAX_STRING_LEN, NULL, NULL);
|
||||
*num = 0;
|
||||
errno = 0;
|
||||
ret = strtod(buffer, &endptr);
|
||||
ret = wcstod(string, &endptr);
|
||||
|
||||
if((ret == 0 && errno != 0) || endptr == buffer || !validate_endptr(endptr, units))
|
||||
if (punit != NULL)
|
||||
*punit = UNIT_CM;
|
||||
if((ret == 0 && errno != 0) || endptr == string || !validate_endptr(endptr, punit))
|
||||
{
|
||||
return FALSE;
|
||||
} else
|
||||
|
@ -304,7 +333,7 @@ static void on_sizelist_modified(HWND hwndSizeList, LPWSTR wszNewFontSize)
|
|||
if(lstrcmpW(sizeBuffer, wszNewFontSize))
|
||||
{
|
||||
float size = 0;
|
||||
if(number_from_string(wszNewFontSize, &size, FALSE)
|
||||
if(number_from_string(wszNewFontSize, &size, NULL)
|
||||
&& size > 0)
|
||||
{
|
||||
set_size(size);
|
||||
|
@ -703,17 +732,8 @@ static void preview_exit(HWND hMainWnd)
|
|||
|
||||
static void set_fileformat(WPARAM format)
|
||||
{
|
||||
HICON hIcon;
|
||||
HINSTANCE hInstance = GetModuleHandleW(0);
|
||||
fileFormat = format;
|
||||
|
||||
if(format & SF_TEXT)
|
||||
hIcon = LoadIconW(hInstance, MAKEINTRESOURCEW(IDI_TXT));
|
||||
else
|
||||
hIcon = LoadIconW(hInstance, MAKEINTRESOURCEW(IDI_RTF));
|
||||
|
||||
SendMessageW(hMainWnd, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
|
||||
|
||||
set_bar_states();
|
||||
set_default_font();
|
||||
target_device(hMainWnd, wordWrap[reg_formatindex(fileFormat)]);
|
||||
|
@ -1282,6 +1302,7 @@ static LRESULT handle_findmsg(LPFINDREPLACEW pFr)
|
|||
static void dialog_find(LPFINDREPLACEW fr, BOOL replace)
|
||||
{
|
||||
static WCHAR findBuffer[MAX_STRING_LEN];
|
||||
static WCHAR replaceBuffer[MAX_STRING_LEN];
|
||||
|
||||
/* Allow only one search/replace dialog to open */
|
||||
if(hFindWnd != NULL)
|
||||
|
@ -1295,8 +1316,10 @@ static void dialog_find(LPFINDREPLACEW fr, BOOL replace)
|
|||
fr->hwndOwner = hMainWnd;
|
||||
fr->Flags = FR_HIDEUPDOWN;
|
||||
fr->lpstrFindWhat = findBuffer;
|
||||
fr->lpstrReplaceWith = replaceBuffer;
|
||||
fr->lCustData = -1;
|
||||
fr->wFindWhatLen = MAX_STRING_LEN*sizeof(WCHAR);
|
||||
fr->wFindWhatLen = sizeof(findBuffer);
|
||||
fr->wReplaceWithLen = sizeof(replaceBuffer);
|
||||
|
||||
if(replace)
|
||||
hFindWnd = ReplaceTextW(fr);
|
||||
|
@ -1304,9 +1327,25 @@ static void dialog_find(LPFINDREPLACEW fr, BOOL replace)
|
|||
hFindWnd = FindTextW(fr);
|
||||
}
|
||||
|
||||
static int current_units_to_twips(float number)
|
||||
static int units_to_twips(UNIT unit, float number)
|
||||
{
|
||||
int twips = (int)(number * 1000.0 / (float)CENTMM_PER_INCH * (float)TWIPS_PER_INCH);
|
||||
int twips = 0;
|
||||
|
||||
switch(unit)
|
||||
{
|
||||
case UNIT_CM:
|
||||
twips = (int)(number * 1000.0 / (float)CENTMM_PER_INCH * (float)TWIPS_PER_INCH);
|
||||
break;
|
||||
|
||||
case UNIT_INCH:
|
||||
twips = (int)(number * (float)TWIPS_PER_INCH);
|
||||
break;
|
||||
|
||||
case UNIT_PT:
|
||||
twips = (int)(number * (0.0138 * (float)TWIPS_PER_INCH));
|
||||
break;
|
||||
}
|
||||
|
||||
return twips;
|
||||
}
|
||||
|
||||
|
@ -1515,22 +1554,23 @@ static INT_PTR CALLBACK paraformat_proc(HWND hWnd, UINT message, WPARAM wParam,
|
|||
float num;
|
||||
int ret = 0;
|
||||
PARAFORMAT pf;
|
||||
UNIT unit;
|
||||
|
||||
index = SendMessageW(hListWnd, CB_GETCURSEL, 0, 0);
|
||||
pf.wAlignment = ALIGNMENT_VALUES[index];
|
||||
|
||||
GetWindowTextW(hLeftWnd, buffer, MAX_STRING_LEN);
|
||||
if(number_from_string(buffer, &num, TRUE))
|
||||
if(number_from_string(buffer, &num, &unit))
|
||||
ret++;
|
||||
pf.dxOffset = current_units_to_twips(num);
|
||||
pf.dxOffset = units_to_twips(unit, num);
|
||||
GetWindowTextW(hRightWnd, buffer, MAX_STRING_LEN);
|
||||
if(number_from_string(buffer, &num, TRUE))
|
||||
if(number_from_string(buffer, &num, &unit))
|
||||
ret++;
|
||||
pf.dxRightIndent = current_units_to_twips(num);
|
||||
pf.dxRightIndent = units_to_twips(unit, num);
|
||||
GetWindowTextW(hFirstWnd, buffer, MAX_STRING_LEN);
|
||||
if(number_from_string(buffer, &num, TRUE))
|
||||
if(number_from_string(buffer, &num, &unit))
|
||||
ret++;
|
||||
pf.dxStartIndent = current_units_to_twips(num);
|
||||
pf.dxStartIndent = units_to_twips(unit, num);
|
||||
|
||||
if(ret != 3)
|
||||
{
|
||||
|
@ -1636,6 +1676,7 @@ static INT_PTR CALLBACK tabstops_proc(HWND hWnd, UINT message, WPARAM wParam, LP
|
|||
{
|
||||
HWND hTabWnd = GetDlgItem(hWnd, IDC_TABSTOPS);
|
||||
WCHAR buffer[MAX_STRING_LEN];
|
||||
UNIT unit;
|
||||
|
||||
GetWindowTextW(hTabWnd, buffer, MAX_STRING_LEN);
|
||||
append_current_units(buffer);
|
||||
|
@ -1645,7 +1686,7 @@ static INT_PTR CALLBACK tabstops_proc(HWND hWnd, UINT message, WPARAM wParam, LP
|
|||
float number = 0;
|
||||
int item_count = SendMessage(hTabWnd, CB_GETCOUNT, 0, 0);
|
||||
|
||||
if(!number_from_string(buffer, &number, TRUE))
|
||||
if(!number_from_string(buffer, &number, &unit))
|
||||
{
|
||||
MessageBoxWithResStringW(hWnd, MAKEINTRESOURCEW(STRING_INVALID_NUMBER),
|
||||
wszAppTitle, MB_OK | MB_ICONINFORMATION);
|
||||
|
@ -1656,14 +1697,14 @@ static INT_PTR CALLBACK tabstops_proc(HWND hWnd, UINT message, WPARAM wParam, LP
|
|||
int i;
|
||||
float next_number = -1;
|
||||
int next_number_in_twips = -1;
|
||||
int insert_number = current_units_to_twips(number);
|
||||
int insert_number = units_to_twips(unit, number);
|
||||
|
||||
/* linear search for position to insert the string */
|
||||
for(i = 0; i < item_count; i++)
|
||||
{
|
||||
SendMessageW(hTabWnd, CB_GETLBTEXT, i, (LPARAM)&buffer);
|
||||
number_from_string(buffer, &next_number, TRUE);
|
||||
next_number_in_twips = current_units_to_twips(next_number);
|
||||
number_from_string(buffer, &next_number, &unit);
|
||||
next_number_in_twips = units_to_twips(unit, next_number);
|
||||
if (insert_number <= next_number_in_twips)
|
||||
break;
|
||||
}
|
||||
|
@ -1704,6 +1745,7 @@ static INT_PTR CALLBACK tabstops_proc(HWND hWnd, UINT message, WPARAM wParam, LP
|
|||
WCHAR buffer[MAX_STRING_LEN];
|
||||
PARAFORMAT pf;
|
||||
float number;
|
||||
UNIT unit;
|
||||
|
||||
pf.cbSize = sizeof(pf);
|
||||
pf.dwMask = PFM_TABSTOPS;
|
||||
|
@ -1712,8 +1754,8 @@ static INT_PTR CALLBACK tabstops_proc(HWND hWnd, UINT message, WPARAM wParam, LP
|
|||
(LPARAM)&buffer) != CB_ERR &&
|
||||
i < MAX_TAB_STOPS; i++)
|
||||
{
|
||||
number_from_string(buffer, &number, TRUE);
|
||||
pf.rgxTabs[i] = current_units_to_twips(number);
|
||||
number_from_string(buffer, &number, &unit);
|
||||
pf.rgxTabs[i] = units_to_twips(unit, number);
|
||||
}
|
||||
pf.cTabCount = i;
|
||||
SendMessageW(hEditorWnd, EM_SETPARAFORMAT, 0, (LPARAM)&pf);
|
||||
|
@ -2253,11 +2295,11 @@ static LRESULT OnCommand( HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||
case ID_EDIT_DEFCHARFORMAT:
|
||||
{
|
||||
CHARFORMAT2W cf;
|
||||
LRESULT i;
|
||||
|
||||
ZeroMemory(&cf, sizeof(cf));
|
||||
cf.cbSize = sizeof(cf);
|
||||
cf.dwMask = 0;
|
||||
i = SendMessageW(hwndEditor, EM_GETCHARFORMAT,
|
||||
SendMessageW(hwndEditor, EM_GETCHARFORMAT,
|
||||
LOWORD(wParam) == ID_EDIT_CHARFORMAT, (LPARAM)&cf);
|
||||
return 0;
|
||||
}
|
||||
|
@ -2618,7 +2660,7 @@ int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hOldInstance, LPSTR szCmdPar
|
|||
{
|
||||
INITCOMMONCONTROLSEX classes = {8, ICC_BAR_CLASSES|ICC_COOL_CLASSES|ICC_USEREX_CLASSES};
|
||||
HACCEL hAccel;
|
||||
WNDCLASSW wc;
|
||||
WNDCLASSEXW wc;
|
||||
MSG msg;
|
||||
RECT rc;
|
||||
UINT_PTR hPrevRulerProc;
|
||||
|
@ -2632,17 +2674,20 @@ int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hOldInstance, LPSTR szCmdPar
|
|||
|
||||
hAccel = LoadAcceleratorsW(hInstance, wszAccelTable);
|
||||
|
||||
wc.cbSize = sizeof(wc);
|
||||
wc.style = CS_HREDRAW | CS_VREDRAW;
|
||||
wc.lpfnWndProc = WndProc;
|
||||
wc.cbClsExtra = 0;
|
||||
wc.cbWndExtra = 4;
|
||||
wc.hInstance = hInstance;
|
||||
wc.hIcon = LoadIconW(hInstance, MAKEINTRESOURCEW(IDI_WORDPAD));
|
||||
wc.hIconSm = LoadImageW(hInstance, MAKEINTRESOURCEW(IDI_WORDPAD), IMAGE_ICON,
|
||||
GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED);
|
||||
wc.hCursor = LoadCursor(NULL, IDC_IBEAM);
|
||||
wc.hbrBackground = GetSysColorBrush(COLOR_WINDOW);
|
||||
wc.lpszMenuName = MAKEINTRESOURCEW(IDM_MAINMENU);
|
||||
wc.lpszClassName = wszMainWndClass;
|
||||
RegisterClassW(&wc);
|
||||
RegisterClassExW(&wc);
|
||||
|
||||
wc.style = CS_HREDRAW | CS_VREDRAW;
|
||||
wc.lpfnWndProc = preview_proc;
|
||||
|
@ -2650,11 +2695,12 @@ int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hOldInstance, LPSTR szCmdPar
|
|||
wc.cbWndExtra = 0;
|
||||
wc.hInstance = hInstance;
|
||||
wc.hIcon = NULL;
|
||||
wc.hIconSm = NULL;
|
||||
wc.hCursor = LoadCursor(NULL, IDC_IBEAM);
|
||||
wc.hbrBackground = GetSysColorBrush(COLOR_WINDOW);
|
||||
wc.lpszMenuName = NULL;
|
||||
wc.lpszClassName = wszPreviewWndClass;
|
||||
RegisterClassW(&wc);
|
||||
RegisterClassExW(&wc);
|
||||
|
||||
registry_read_winrect(&rc);
|
||||
hMainWnd = CreateWindowExW(0, wszMainWndClass, wszAppTitle, WS_CLIPCHILDREN|WS_OVERLAPPEDWINDOW,
|
||||
|
|
|
@ -185,11 +185,8 @@
|
|||
#define IDB_FORMATBAR 101
|
||||
|
||||
#define IDI_WORDPAD 102
|
||||
#define IDI_RTF 103
|
||||
#define IDI_WRI 104
|
||||
#define IDI_TXT 105
|
||||
|
||||
#define IDC_ZOOM 106
|
||||
#define IDC_ZOOM 103
|
||||
|
||||
#define STRING_ALL_FILES 1400
|
||||
#define STRING_TEXT_FILES_TXT 1401
|
||||
|
@ -222,6 +219,9 @@
|
|||
#define STRING_PREVIEW_PAGES 1457
|
||||
|
||||
#define STRING_UNITS_CM 1458
|
||||
#define STRING_UNITS_IN 1459
|
||||
#define STRING_UNITS_INCH 1460
|
||||
#define STRING_UNITS_PT 1461
|
||||
|
||||
#define STRING_DEFAULT_FILENAME 1700
|
||||
#define STRING_PROMPT_SAVE_CHANGES 1701
|
||||
|
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 2.2 KiB |
29
base/applications/write/Da.rc
Normal file
|
@ -0,0 +1,29 @@
|
|||
/*
|
||||
* Danish language support
|
||||
*
|
||||
* Copyright 2010 Thomas Larsen
|
||||
* Paul Vriens
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "resources.h"
|
||||
|
||||
LANGUAGE LANG_DANISH, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_FAILED, "Kunne ikke starte Wordpad"
|
||||
}
|
32
base/applications/write/Es.rc
Normal file
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Spanish language support
|
||||
*
|
||||
* Copyright 2010 José Rostagno
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "resources.h"
|
||||
|
||||
/*UTF-8*/
|
||||
#pragma code_page(65001)
|
||||
|
||||
|
||||
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_FAILED, "Fallo inicio Wordpad"
|
||||
}
|
|
@ -20,6 +20,7 @@
|
|||
|
||||
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||
|
||||
#include "Da.rc"
|
||||
#include "En.rc"
|
||||
#include "Ko.rc"
|
||||
#include "Nl.rc"
|
||||
|
@ -30,6 +31,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
|||
|
||||
/* UTF-8 */
|
||||
#include "De.rc"
|
||||
#include "Es.rc"
|
||||
#include "Fr.rc"
|
||||
#include "It.rc"
|
||||
#include "Ja.rc"
|
||||
|
|
|
@ -106,8 +106,7 @@ PrintString(char* fmt,...)
|
|||
|
||||
|
||||
static VOID
|
||||
DrawBox(
|
||||
IN SHORT xLeft,
|
||||
DrawBox(IN SHORT xLeft,
|
||||
IN SHORT yTop,
|
||||
IN SHORT Width,
|
||||
IN SHORT Height)
|
||||
|
@ -118,8 +117,7 @@ DrawBox(
|
|||
/* draw upper left corner */
|
||||
coPos.X = xLeft;
|
||||
coPos.Y = yTop;
|
||||
FillConsoleOutputCharacterA(
|
||||
StdOutput,
|
||||
FillConsoleOutputCharacterA(StdOutput,
|
||||
0xDA, // '+',
|
||||
1,
|
||||
coPos,
|
||||
|
@ -128,8 +126,7 @@ DrawBox(
|
|||
/* draw upper edge */
|
||||
coPos.X = xLeft + 1;
|
||||
coPos.Y = yTop;
|
||||
FillConsoleOutputCharacterA(
|
||||
StdOutput,
|
||||
FillConsoleOutputCharacterA(StdOutput,
|
||||
0xC4, // '-',
|
||||
Width - 2,
|
||||
coPos,
|
||||
|
@ -138,8 +135,7 @@ DrawBox(
|
|||
/* draw upper right corner */
|
||||
coPos.X = xLeft + Width - 1;
|
||||
coPos.Y = yTop;
|
||||
FillConsoleOutputCharacterA(
|
||||
StdOutput,
|
||||
FillConsoleOutputCharacterA(StdOutput,
|
||||
0xBF, // '+',
|
||||
1,
|
||||
coPos,
|
||||
|
@ -149,24 +145,21 @@ DrawBox(
|
|||
for (coPos.Y = yTop + 1; coPos.Y < yTop + Height - 1; coPos.Y++)
|
||||
{
|
||||
coPos.X = xLeft;
|
||||
FillConsoleOutputCharacterA(
|
||||
StdOutput,
|
||||
FillConsoleOutputCharacterA(StdOutput,
|
||||
0xB3, // '|',
|
||||
1,
|
||||
coPos,
|
||||
&Written);
|
||||
|
||||
coPos.X = xLeft + 1;
|
||||
FillConsoleOutputCharacterA(
|
||||
StdOutput,
|
||||
FillConsoleOutputCharacterA(StdOutput,
|
||||
' ',
|
||||
Width - 2,
|
||||
coPos,
|
||||
&Written);
|
||||
|
||||
coPos.X = xLeft + Width - 1;
|
||||
FillConsoleOutputCharacterA(
|
||||
StdOutput,
|
||||
FillConsoleOutputCharacterA(StdOutput,
|
||||
0xB3, // '|',
|
||||
1,
|
||||
coPos,
|
||||
|
@ -176,8 +169,7 @@ DrawBox(
|
|||
/* draw lower left corner */
|
||||
coPos.X = xLeft;
|
||||
coPos.Y = yTop + Height - 1;
|
||||
FillConsoleOutputCharacterA(
|
||||
StdOutput,
|
||||
FillConsoleOutputCharacterA(StdOutput,
|
||||
0xC0, // '+',
|
||||
1,
|
||||
coPos,
|
||||
|
@ -186,8 +178,7 @@ DrawBox(
|
|||
/* draw lower edge */
|
||||
coPos.X = xLeft + 1;
|
||||
coPos.Y = yTop + Height - 1;
|
||||
FillConsoleOutputCharacterA(
|
||||
StdOutput,
|
||||
FillConsoleOutputCharacterA(StdOutput,
|
||||
0xC4, // '-',
|
||||
Width - 2,
|
||||
coPos,
|
||||
|
@ -196,14 +187,14 @@ DrawBox(
|
|||
/* draw lower right corner */
|
||||
coPos.X = xLeft + Width - 1;
|
||||
coPos.Y = yTop + Height - 1;
|
||||
FillConsoleOutputCharacterA(
|
||||
StdOutput,
|
||||
FillConsoleOutputCharacterA(StdOutput,
|
||||
0xD9, // '+',
|
||||
1,
|
||||
coPos,
|
||||
&Written);
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
PopupError(PCCH Text,
|
||||
PCCH Status,
|
||||
|
@ -563,8 +554,10 @@ CheckUnattendedSetup(VOID)
|
|||
}
|
||||
|
||||
/* search for LocaleID in the 'Unattend' section*/
|
||||
if (SetupFindFirstLineW (UnattendInf, L"Unattend", L"LocaleID", &Context)){
|
||||
if (INF_GetData (&Context, NULL, &Value)){
|
||||
if (SetupFindFirstLineW (UnattendInf, L"Unattend", L"LocaleID", &Context))
|
||||
{
|
||||
if (INF_GetData (&Context, NULL, &Value))
|
||||
{
|
||||
LONG Id = wcstol(Value, NULL, 16);
|
||||
swprintf(LocaleID,L"%08lx", Id);
|
||||
}
|
||||
|
@ -575,6 +568,7 @@ CheckUnattendedSetup(VOID)
|
|||
DPRINT("Running unattended setup\n");
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
UpdateKBLayout(VOID)
|
||||
{
|
||||
|
@ -611,6 +605,7 @@ UpdateKBLayout(VOID)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
static PAGE_NUMBER
|
||||
LanguagePage(PINPUT_RECORD Ir)
|
||||
{
|
||||
|
@ -840,10 +835,8 @@ SetupStartPage(PINPUT_RECORD Ir)
|
|||
LanguageList = CreateLanguageList(SetupInf, DefaultLanguage);
|
||||
|
||||
/* new part */
|
||||
|
||||
wcscpy(SelectedLanguageId,LocaleID);
|
||||
|
||||
|
||||
/* first we hack LanguageList */
|
||||
ListEntry = GetFirstListEntry(LanguageList);
|
||||
|
||||
|
@ -858,6 +851,7 @@ SetupStartPage(PINPUT_RECORD Ir)
|
|||
|
||||
ListEntry = GetNextListEntry(ListEntry);
|
||||
}
|
||||
|
||||
/* now LayoutList */
|
||||
ListEntry = GetFirstListEntry(LayoutList);
|
||||
|
||||
|
@ -872,6 +866,7 @@ SetupStartPage(PINPUT_RECORD Ir)
|
|||
|
||||
ListEntry = GetNextListEntry(ListEntry);
|
||||
}
|
||||
|
||||
SetConsoleCodePage();
|
||||
|
||||
return INSTALL_INTRO_PAGE;
|
||||
|
@ -923,6 +918,7 @@ IntroPage(PINPUT_RECORD Ir)
|
|||
return INTRO_PAGE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* License Page
|
||||
* RETURNS
|
||||
|
@ -947,6 +943,7 @@ LicensePage(PINPUT_RECORD Ir)
|
|||
return LICENSE_PAGE;
|
||||
}
|
||||
|
||||
|
||||
static PAGE_NUMBER
|
||||
RepairIntroPage(PINPUT_RECORD Ir)
|
||||
{
|
||||
|
@ -1401,9 +1398,12 @@ LayoutSettingsPage(PINPUT_RECORD Ir)
|
|||
return DISPLAY_SETTINGS_PAGE;
|
||||
}
|
||||
|
||||
static BOOL IsDiskSizeValid(PPARTENTRY PartEntry)
|
||||
|
||||
static BOOL
|
||||
IsDiskSizeValid(PPARTENTRY PartEntry)
|
||||
{
|
||||
ULONGLONG m;
|
||||
|
||||
/* check for unpartitioned space */
|
||||
m = PartEntry->UnpartitionedLength;
|
||||
m = (m + (1 << 19)) >> 20; /* in MBytes (rounded) */
|
||||
|
@ -1412,7 +1412,7 @@ static BOOL IsDiskSizeValid(PPARTENTRY PartEntry)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
// check for partitioned space
|
||||
/* check for partitioned space */
|
||||
m = PartEntry->PartInfo[0].PartitionLength.QuadPart;
|
||||
m = (m + (1 << 19)) >> 20; /* in MBytes (rounded) */
|
||||
if (m < RequiredPartitionDiskSpace)
|
||||
|
@ -1427,6 +1427,7 @@ static BOOL IsDiskSizeValid(PPARTENTRY PartEntry)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
static PAGE_NUMBER
|
||||
SelectPartitionPage(PINPUT_RECORD Ir)
|
||||
{
|
||||
|
@ -1438,7 +1439,6 @@ SelectPartitionPage(PINPUT_RECORD Ir)
|
|||
19,
|
||||
xScreen - 3,
|
||||
yScreen - 3);
|
||||
|
||||
if (PartitionList == NULL)
|
||||
{
|
||||
/* FIXME: show an error dialog */
|
||||
|
@ -1486,11 +1486,12 @@ SelectPartitionPage(PINPUT_RECORD Ir)
|
|||
MUIDisplayError(ERROR_INSUFFICIENT_DISKSPACE, Ir, POPUP_WAIT_ANY_KEY);
|
||||
return SELECT_PARTITION_PAGE; /* let the user select another partition */
|
||||
}
|
||||
|
||||
CreateNewPartition(PartitionList,
|
||||
MaxSize,
|
||||
TRUE);
|
||||
|
||||
return (SELECT_FILE_SYSTEM_PAGE);
|
||||
return SELECT_FILE_SYSTEM_PAGE;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -1500,7 +1501,8 @@ SelectPartitionPage(PINPUT_RECORD Ir)
|
|||
MUIDisplayError(ERROR_INSUFFICIENT_DISKSPACE, Ir, POPUP_WAIT_ANY_KEY);
|
||||
return SELECT_PARTITION_PAGE; /* let the user select another partition */
|
||||
}
|
||||
return(SELECT_FILE_SYSTEM_PAGE);
|
||||
|
||||
return SELECT_FILE_SYSTEM_PAGE;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2211,7 +2213,7 @@ SelectFileSystemPage (PINPUT_RECORD Ir)
|
|||
return FORMAT_PARTITION_PAGE;
|
||||
}
|
||||
|
||||
return(CHECK_FILE_SYSTEM_PAGE);
|
||||
return CHECK_FILE_SYSTEM_PAGE;
|
||||
}
|
||||
|
||||
while (TRUE)
|
||||
|
@ -2310,8 +2312,6 @@ FormatPartitionPage (PINPUT_RECORD Ir)
|
|||
{
|
||||
CONSOLE_SetStatusText(MUIGetString(STRING_PLEASEWAIT));
|
||||
|
||||
if (PartEntry->PartInfo[PartNum].PartitionType == PARTITION_ENTRY_UNUSED)
|
||||
{
|
||||
if (wcscmp(FileSystemList->Selected->FileSystem, L"FAT") == 0)
|
||||
{
|
||||
if (PartEntry->PartInfo[PartNum].PartitionLength.QuadPart < (4200LL * 1024LL))
|
||||
|
@ -2359,7 +2359,6 @@ FormatPartitionPage (PINPUT_RECORD Ir)
|
|||
PartEntry->PartInfo[PartNum].PartitionType = PARTITION_EXT2;
|
||||
else if (!FileSystemList->Selected->FormatFunc)
|
||||
return QUIT_PAGE;
|
||||
}
|
||||
|
||||
CheckActiveBootPartition(PartitionList);
|
||||
|
||||
|
@ -2437,7 +2436,8 @@ FormatPartitionPage (PINPUT_RECORD Ir)
|
|||
|
||||
if (FileSystemList->Selected->FormatFunc)
|
||||
{
|
||||
Status = FormatPartition(&DestinationRootPath, FileSystemList->Selected);
|
||||
Status = FormatPartition(&DestinationRootPath,
|
||||
FileSystemList->Selected);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("FormatPartition() failed with status 0x%08lx\n", Status);
|
||||
|
@ -2461,7 +2461,8 @@ FormatPartitionPage (PINPUT_RECORD Ir)
|
|||
PathBuffer, DestinationRootPath.Buffer);
|
||||
|
||||
/* Install MBR bootcode */
|
||||
Status = InstallMbrBootCodeToDisk(PathBuffer, DestinationRootPath.Buffer);
|
||||
Status = InstallMbrBootCodeToDisk(PathBuffer,
|
||||
DestinationRootPath.Buffer);
|
||||
if (!NT_SUCCESS (Status))
|
||||
{
|
||||
DPRINT1("InstallMbrBootCodeToDisk() failed (Status %lx)\n",
|
||||
|
@ -2483,9 +2484,9 @@ FormatPartitionPage (PINPUT_RECORD Ir)
|
|||
|
||||
DPRINT("Install FAT32 bootcode: %S ==> %S\n", PathBuffer,
|
||||
DestinationRootPath.Buffer);
|
||||
|
||||
Status = InstallFat32BootCodeToDisk(PathBuffer,
|
||||
DestinationRootPath.Buffer);
|
||||
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("InstallFat32BootCodeToDisk() failed with status 0x%08lx\n", Status);
|
||||
|
@ -2502,9 +2503,9 @@ FormatPartitionPage (PINPUT_RECORD Ir)
|
|||
|
||||
DPRINT("Install FAT bootcode: %S ==> %S\n", PathBuffer,
|
||||
DestinationRootPath.Buffer);
|
||||
|
||||
Status = InstallFat16BootCodeToDisk(PathBuffer,
|
||||
DestinationRootPath.Buffer);
|
||||
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("InstallFat16BootCodeToDisk() failed with status 0x%.08x\n", Status);
|
||||
|
@ -2522,9 +2523,9 @@ FormatPartitionPage (PINPUT_RECORD Ir)
|
|||
|
||||
DPRINT("Install EXT2 bootcode: %S ==> %S\n", PathBuffer,
|
||||
DestinationRootPath.Buffer);
|
||||
|
||||
Status = InstallFat32BootCodeToDisk(PathBuffer,
|
||||
DestinationRootPath.Buffer);
|
||||
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("InstallFat32BootCodeToDisk() failed with status 0x%08lx\n", Status);
|
||||
|
@ -2644,7 +2645,10 @@ CheckFileSystemPage(PINPUT_RECORD Ir)
|
|||
|
||||
|
||||
static PAGE_NUMBER
|
||||
InstallDirectoryPage1(PWCHAR InstallDir, PDISKENTRY DiskEntry, PPARTENTRY PartEntry, UCHAR PartNum)
|
||||
InstallDirectoryPage1(PWCHAR InstallDir,
|
||||
PDISKENTRY DiskEntry,
|
||||
PPARTENTRY PartEntry,
|
||||
UCHAR PartNum)
|
||||
{
|
||||
WCHAR PathBuffer[MAX_PATH];
|
||||
|
||||
|
@ -2676,7 +2680,7 @@ InstallDirectoryPage1(PWCHAR InstallDir, PDISKENTRY DiskEntry, PPARTENTRY PartEn
|
|||
wcscat(PathBuffer, InstallDir);
|
||||
RtlCreateUnicodeString(&DestinationArcPath, PathBuffer);
|
||||
|
||||
return(PREPARE_COPY_PAGE);
|
||||
return PREPARE_COPY_PAGE;
|
||||
}
|
||||
|
||||
|
||||
|
@ -2724,7 +2728,10 @@ InstallDirectoryPage(PINPUT_RECORD Ir)
|
|||
|
||||
if (IsUnattendedSetup)
|
||||
{
|
||||
return(InstallDirectoryPage1 (InstallDir, DiskEntry, PartEntry, PartitionList->CurrentPartitionNumber));
|
||||
return InstallDirectoryPage1(InstallDir,
|
||||
DiskEntry,
|
||||
PartEntry,
|
||||
PartitionList->CurrentPartitionNumber);
|
||||
}
|
||||
|
||||
while (TRUE)
|
||||
|
@ -2735,13 +2742,16 @@ InstallDirectoryPage(PINPUT_RECORD Ir)
|
|||
(Ir->Event.KeyEvent.wVirtualKeyCode == VK_F3)) /* F3 */
|
||||
{
|
||||
if (ConfirmQuit(Ir) == TRUE)
|
||||
return(QUIT_PAGE);
|
||||
return QUIT_PAGE;
|
||||
|
||||
break;
|
||||
}
|
||||
else if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D) /* ENTER */
|
||||
{
|
||||
return (InstallDirectoryPage1 (InstallDir, DiskEntry, PartEntry, PartitionList->CurrentPartitionNumber));
|
||||
return InstallDirectoryPage1(InstallDir,
|
||||
DiskEntry,
|
||||
PartEntry,
|
||||
PartitionList->CurrentPartitionNumber);
|
||||
}
|
||||
else if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x08) /* BACKSPACE */
|
||||
{
|
||||
|
@ -2764,9 +2774,10 @@ InstallDirectoryPage(PINPUT_RECORD Ir)
|
|||
}
|
||||
}
|
||||
|
||||
return(INSTALL_DIRECTORY_PAGE);
|
||||
return INSTALL_DIRECTORY_PAGE;
|
||||
}
|
||||
|
||||
|
||||
static BOOLEAN
|
||||
AddSectionToCopyQueueCab(HINF InfFile,
|
||||
PWCHAR SectionName,
|
||||
|
@ -2787,7 +2798,7 @@ AddSectionToCopyQueueCab(HINF InfFile,
|
|||
char Buffer[128];
|
||||
sprintf(Buffer, MUIGetString(STRING_TXTSETUPFAILED), SectionName);
|
||||
PopupError(Buffer, MUIGetString(STRING_REBOOTCOMPUTER), Ir, POPUP_WAIT_ENTER);
|
||||
return(FALSE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -2841,6 +2852,7 @@ AddSectionToCopyQueueCab(HINF InfFile,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
static BOOLEAN
|
||||
AddSectionToCopyQueue(HINF InfFile,
|
||||
PWCHAR SectionName,
|
||||
|
@ -2928,6 +2940,7 @@ AddSectionToCopyQueue(HINF InfFile,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
static BOOLEAN
|
||||
PrepareCopyPageInfFile(HINF InfFile,
|
||||
PWCHAR SourceCabinet,
|
||||
|
@ -3038,6 +3051,7 @@ PrepareCopyPageInfFile(HINF InfFile,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
static PAGE_NUMBER
|
||||
PrepareCopyPage(PINPUT_RECORD Ir)
|
||||
{
|
||||
|
@ -3131,6 +3145,7 @@ PrepareCopyPage(PINPUT_RECORD Ir)
|
|||
return FILE_COPY_PAGE;
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
SetupUpdateMemoryInfo(IN PCOPYCONTEXT CopyContext,
|
||||
|
@ -3159,7 +3174,9 @@ SetupUpdateMemoryInfo(IN PCOPYCONTEXT CopyContext,
|
|||
ProgressSetStep(CopyContext->MemoryBars[2], PerfInfo.AvailablePages);
|
||||
}
|
||||
|
||||
static UINT CALLBACK
|
||||
|
||||
static UINT
|
||||
CALLBACK
|
||||
FileCopyCallback(PVOID Context,
|
||||
UINT Notification,
|
||||
UINT_PTR Param1,
|
||||
|
@ -3194,6 +3211,7 @@ FileCopyCallback(PVOID Context,
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static
|
||||
PAGE_NUMBER
|
||||
FileCopyPage(PINPUT_RECORD Ir)
|
||||
|
@ -3270,6 +3288,7 @@ FileCopyPage(PINPUT_RECORD Ir)
|
|||
return REGISTRY_PAGE;
|
||||
}
|
||||
|
||||
|
||||
static PAGE_NUMBER
|
||||
RegistryPage(PINPUT_RECORD Ir)
|
||||
{
|
||||
|
@ -3325,7 +3344,8 @@ RegistryPage(PINPUT_RECORD Ir)
|
|||
|
||||
DPRINT("Action: %S File: %S Section %S\n", Action, File, Section);
|
||||
|
||||
if (Action == NULL) break; // Hackfix
|
||||
if (Action == NULL)
|
||||
break; // Hackfix
|
||||
|
||||
if (!_wcsicmp (Action, L"AddReg"))
|
||||
{
|
||||
|
@ -3383,8 +3403,8 @@ RegistryPage(PINPUT_RECORD Ir)
|
|||
return QUIT_PAGE;
|
||||
}
|
||||
|
||||
if (!IsUnattendedSetup){
|
||||
|
||||
if (!IsUnattendedSetup)
|
||||
{
|
||||
/* Update keyboard layout settings */
|
||||
CONSOLE_SetStatusText(MUIGetString(STRING_KEYBOARDSETTINGSUPDATE));
|
||||
if (!ProcessKeyboardLayoutRegistry(LayoutList))
|
||||
|
@ -3393,6 +3413,7 @@ RegistryPage(PINPUT_RECORD Ir)
|
|||
return QUIT_PAGE;
|
||||
}
|
||||
}
|
||||
|
||||
/* Add codepage information to registry */
|
||||
CONSOLE_SetStatusText(MUIGetString(STRING_CODEPAGEINFOUPDATE));
|
||||
if (!AddCodePage())
|
||||
|
@ -3498,8 +3519,11 @@ BootLoaderPage(PINPUT_RECORD Ir)
|
|||
CONSOLE_NormalTextXY(8, Line, 60, 1);
|
||||
|
||||
Line++;
|
||||
if (Line<12) Line=14;
|
||||
if (Line>14) Line=12;
|
||||
if (Line<12)
|
||||
Line=14;
|
||||
|
||||
if (Line>14)
|
||||
Line=12;
|
||||
|
||||
CONSOLE_InvertTextXY(8, Line, 60, 1);
|
||||
}
|
||||
|
@ -3509,8 +3533,11 @@ BootLoaderPage(PINPUT_RECORD Ir)
|
|||
CONSOLE_NormalTextXY(8, Line, 60, 1);
|
||||
|
||||
Line--;
|
||||
if (Line<12) Line=14;
|
||||
if (Line>14) Line=12;
|
||||
if (Line<12)
|
||||
Line=14;
|
||||
|
||||
if (Line>14)
|
||||
Line=12;
|
||||
|
||||
CONSOLE_InvertTextXY(8, Line, 60, 1);
|
||||
}
|
||||
|
@ -3736,7 +3763,16 @@ RunUSetup(VOID)
|
|||
|
||||
NtQuerySystemTime(&Time);
|
||||
|
||||
Status = RtlCreateUserThread(NtCurrentProcess(), NULL, TRUE, 0, 0, 0, PnpEventThread, &SetupInf, &hPnpThread, NULL);
|
||||
Status = RtlCreateUserThread(NtCurrentProcess(),
|
||||
NULL,
|
||||
TRUE,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
PnpEventThread,
|
||||
&SetupInf,
|
||||
&hPnpThread,
|
||||
NULL);
|
||||
if (!NT_SUCCESS(Status))
|
||||
hPnpThread = INVALID_HANDLE_VALUE;
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* TRANSLATOR: M rio KaŸm r /Mario Kacmar/ aka Kario (kario@szm.sk)
|
||||
* DATE OF TR: 22-01-2008
|
||||
* Encoding : Latin II (852)
|
||||
* LastChange: 01-11-2009
|
||||
* LastChange: 31-05-2010
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
@ -1489,8 +1489,8 @@ MUI_ERROR skSKErrorEntries[] =
|
|||
},
|
||||
{
|
||||
//ERROR_INSUFFICIENT_DISKSPACE,
|
||||
"Not enough free space in the selected partition.\n"
|
||||
" * Press any key to continue.",
|
||||
"Na zvolenej partˇcii nie je dostatok vo–n‚ho miesta.\n"
|
||||
" * Pokraźujte stlaźenˇm –ubovo–n‚ho kl vesu.",
|
||||
NULL
|
||||
},
|
||||
{
|
||||
|
|
|
@ -42,36 +42,6 @@ struct string_list
|
|||
WCHAR str[1];
|
||||
};
|
||||
|
||||
static const char UsageStr[] =
|
||||
"Usage:\n"
|
||||
" Install a product:\n"
|
||||
" msiexec {package|productcode} [property]\n"
|
||||
" msiexec /i {package|productcode} [property]\n"
|
||||
" msiexec /package {package|productcode} [property]\n"
|
||||
" msiexec /a package [property]\n"
|
||||
" Repair an installation:\n"
|
||||
" msiexec /f[p|o|e|d|c|a|u|m|s|v] {package|productcode}\n"
|
||||
" Uninstall a product:\n"
|
||||
" msiexec /x {package|productcode} [property]\n"
|
||||
" Advertise a product:\n"
|
||||
" msiexec /j[u|m] package [/t transform] [/g languageid]\n"
|
||||
" msiexec {u|m} package [/t transform] [/g languageid]\n"
|
||||
" Apply a patch:\n"
|
||||
" msiexec /p patchpackage [property]\n"
|
||||
" msiexec /p patchpackage /a package [property]\n"
|
||||
" Modifiers for above operations:\n"
|
||||
" msiexec /l[*][i|w|e|a|r|u|c|m|o|p|v|][+|!] logfile\n"
|
||||
" msiexec /q{|n|b|r|f|n+|b+|b-}\n"
|
||||
" Register a module:\n"
|
||||
" msiexec /y module\n"
|
||||
" Unregister a module:\n"
|
||||
" msiexec /z module\n"
|
||||
" Display usage and copyright:\n"
|
||||
" msiexec {/h|/?}\n"
|
||||
"NOTE: Product code on commandline unimplemented as of yet\n"
|
||||
"\n"
|
||||
"Copyright 2004 Vincent Béron\n";
|
||||
|
||||
static const WCHAR ActionAdmin[] = {
|
||||
'A','C','T','I','O','N','=','A','D','M','I','N',0 };
|
||||
static const WCHAR RemoveAll[] = {
|
||||
|
@ -87,7 +57,41 @@ static const WCHAR InstallRunOnce[] = {
|
|||
|
||||
static void ShowUsage(int ExitCode)
|
||||
{
|
||||
printf(UsageStr);
|
||||
WCHAR msiexec_version[40];
|
||||
WCHAR filename[MAX_PATH];
|
||||
LPWSTR msi_res;
|
||||
LPWSTR msiexec_help;
|
||||
HMODULE hmsi = GetModuleHandleA("msi.dll");
|
||||
DWORD len;
|
||||
DWORD res;
|
||||
|
||||
/* MsiGetFileVersion need the full path */
|
||||
*filename = 0;
|
||||
res = GetModuleFileNameW(hmsi, filename, sizeof(filename) / sizeof(filename[0]));
|
||||
if (!res)
|
||||
WINE_ERR("GetModuleFileName failed: %d\n", GetLastError());
|
||||
|
||||
len = sizeof(msiexec_version) / sizeof(msiexec_version[0]);
|
||||
*msiexec_version = 0;
|
||||
res = MsiGetFileVersionW(filename, msiexec_version, &len, NULL, NULL);
|
||||
if (res)
|
||||
WINE_ERR("MsiGetFileVersion failed with %d\n", res);
|
||||
|
||||
/* Return the length of the resource.
|
||||
No typo: The LPWSTR parameter must be a LPWSTR * for this mode */
|
||||
len = LoadStringW(hmsi, 10, (LPWSTR) &msi_res, 0);
|
||||
|
||||
msi_res = HeapAlloc(GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR));
|
||||
msiexec_help = HeapAlloc(GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR) + sizeof(msiexec_version));
|
||||
if (msi_res && msiexec_help) {
|
||||
*msi_res = 0;
|
||||
LoadStringW(hmsi, 10, msi_res, len + 1);
|
||||
|
||||
sprintfW(msiexec_help, msi_res, msiexec_version);
|
||||
MsiMessageBoxW(0, msiexec_help, NULL, 0, GetUserDefaultLangID(), 0);
|
||||
}
|
||||
HeapFree(GetProcessHeap(), 0, msi_res);
|
||||
HeapFree(GetProcessHeap(), 0, msiexec_help);
|
||||
ExitProcess(ExitCode);
|
||||
}
|
||||
|
||||
|
@ -660,11 +664,11 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
|||
WINE_TRACE("argvW[%d] = %s\n", i, wine_dbgstr_w(argvW[i]));
|
||||
PackageName = argvW[i];
|
||||
}
|
||||
else if(msi_option_prefix(argvW[i], "x"))
|
||||
else if(msi_option_prefix(argvW[i], "x") || msi_option_equal(argvW[i], "uninstall"))
|
||||
{
|
||||
FunctionInstall = TRUE;
|
||||
PackageName = argvW[i]+2;
|
||||
if (!PackageName[0])
|
||||
if(msi_option_prefix(argvW[i], "x")) PackageName = argvW[i]+2;
|
||||
if(!PackageName || !PackageName[0])
|
||||
{
|
||||
i++;
|
||||
if (i >= argc)
|
||||
|
@ -898,7 +902,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
|||
WINE_TRACE("argvW[%d] = %s\n", i, wine_dbgstr_w(argvW[i]));
|
||||
DllName = argvW[i];
|
||||
}
|
||||
else if(msi_option_equal(argvW[i], "h") || msi_option_equal(argvW[i], "?"))
|
||||
else if(msi_option_equal(argvW[i], "help") || msi_option_equal(argvW[i], "?"))
|
||||
{
|
||||
ShowUsage(0);
|
||||
}
|
||||
|
|
|
@ -150,7 +150,7 @@ dll\cpl\timedate\timedate.cpl 1
|
|||
;dll\cpl\usrmgr\usrmgr.cpl 1
|
||||
|
||||
dll\directx\amstream\amstream.dll 1
|
||||
dll\directx\bdaplgin\bdaplgin.ax 1
|
||||
;dll\directx\bdaplgin\bdaplgin.ax 1
|
||||
dll\directx\dinput\dinput.dll 1
|
||||
dll\directx\dinput8\dinput8.dll 1
|
||||
dll\directx\dmusic\dmusic.dll 1
|
||||
|
@ -164,8 +164,8 @@ dll\directx\devenum\devenum.dll 1
|
|||
dll\directx\ksproxy\ksproxy.ax 1
|
||||
dll\directx\ksuser\ksuser.dll 1
|
||||
dll\directx\msdmo\msdmo.dll 1
|
||||
dll\directx\msdvbnp\msdvbnp.ax 1
|
||||
dll\directx\msvidctl\msvidctl.dll 1
|
||||
;dll\directx\msdvbnp\msdvbnp.ax 1
|
||||
;dll\directx\msvidctl\msvidctl.dll 1
|
||||
dll\directx\quartz\quartz.dll 1
|
||||
dll\directx\qedit\qedit.dll 1
|
||||
dll\directx\wine\d3d8\d3d8.dll 1
|
||||
|
@ -504,7 +504,7 @@ drivers\input\mouclass\mouclass.sys 2
|
|||
drivers\input\sermouse\sermouse.sys 2
|
||||
|
||||
drivers\ksfilter\ks\ks.sys 2
|
||||
drivers\multimedia\bdasup\bdasup.sys 2
|
||||
;drivers\multimedia\bdasup\bdasup.sys 2
|
||||
|
||||
drivers\network\afd\afd.sys 2
|
||||
drivers\network\ndis\ndis.sys 2
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* TRANSLATOR: Mário Kaèmár /Mario Kacmar/ aka Kario (kario@szm.sk)
|
||||
* DATE OF TR: 28-04-2008
|
||||
* LastChange: 21-06-2009
|
||||
* LastChange: 31-05-2010
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT
|
||||
|
@ -194,8 +194,8 @@ STRINGTABLE
|
|||
BEGIN
|
||||
IDS_CUSTOMIZE_TITLE "Prispôsobi<62> miestne nastavenia"
|
||||
IDS_SPAIN "Spanish (Spain)"
|
||||
IDS_METRIC "Metric"
|
||||
IDS_IMPERIAL "Imperial"
|
||||
IDS_METRIC "Metrický"
|
||||
IDS_IMPERIAL "Imperiálny"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
|
|
@ -4,9 +4,9 @@
|
|||
<directory name="amstream">
|
||||
<xi:include href="amstream/amstream.rbuild" />
|
||||
</directory>
|
||||
<directory name="bdaplgin">
|
||||
<!--<directory name="bdaplgin">
|
||||
<xi:include href="bdaplgin/bdaplgin.rbuild" />
|
||||
</directory>
|
||||
</directory>-->
|
||||
<directory name="d3d8thk">
|
||||
<xi:include href="d3d8thk/d3d8thk.rbuild" />
|
||||
</directory>
|
||||
|
@ -43,12 +43,12 @@
|
|||
<directory name="msdmo">
|
||||
<xi:include href="msdmo/msdmo.rbuild" />
|
||||
</directory>
|
||||
<directory name="msdvbnp">
|
||||
<!--<directory name="msdvbnp">
|
||||
<xi:include href="msdvbnp/msdvbnp.rbuild" />
|
||||
</directory>
|
||||
<directory name="msvidctl">
|
||||
</directory>-->
|
||||
<!--<directory name="msvidctl">
|
||||
<xi:include href="msvidctl/msvidctl.rbuild" />
|
||||
</directory>
|
||||
</directory>-->
|
||||
<directory name="qedit">
|
||||
<xi:include href="qedit/qedit.rbuild" />
|
||||
</directory>
|
||||
|
|
|
@ -73,6 +73,6 @@ IDR_REGTREEOPTIONS REGISTRY "res\\regtreeoptions.rgs"
|
|||
//#include "lang/sk-SK.rc"
|
||||
//#include "lang/sv-SE.rc"
|
||||
//#include "lang/tr-TR.rc"
|
||||
//#include "lang/uk-UA.rc"
|
||||
#include "lang/uk-UA.rc"
|
||||
//#include "lang/zh-CN.rc"
|
||||
//#include "lang/zh-TW.rc"
|
||||
|
|
273
dll/win32/browseui/lang/uk-UA.rc
Normal file
|
@ -0,0 +1,273 @@
|
|||
/*
|
||||
* Copyright 2009 Andrew Hill
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Menus
|
||||
//
|
||||
|
||||
IDM_CABINET_CONTEXTMENU MENUEX
|
||||
BEGIN
|
||||
POPUP "", 264,MFT_STRING,MFS_ENABLED
|
||||
BEGIN
|
||||
MENUITEM "&Ñòàíäàðòí³ Êíîïêè", IDM_TOOLBARS_STANDARDBUTTONS,MFT_STRING,MFS_ENABLED
|
||||
MENUITEM "&Ðÿäîê Àäðåñè", IDM_TOOLBARS_ADDRESSBAR,MFT_STRING,MFS_ENABLED
|
||||
MENUITEM "&Ïîñèëàííÿ", IDM_TOOLBARS_LINKSBAR,MFT_STRING,MFS_ENABLED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Lock the Tool&bars", IDM_TOOLBARS_LOCKTOOLBARS,MFT_STRING,MFS_ENABLED
|
||||
MENUITEM "&Íàëàøòóâàòè...", IDM_TOOLBARS_CUSTOMIZE,MFT_STRING,MFS_ENABLED
|
||||
MENUITEM "&Text Labels", IDM_TOOLBARS_TEXTLABELS,MFT_STRING,MFS_ENABLED
|
||||
MENUITEM "&Go Button", IDM_TOOLBARS_GOBUTTON,MFT_STRING,MFS_ENABLED
|
||||
END
|
||||
END
|
||||
|
||||
IDM_CABINET_MAINMENU MENUEX
|
||||
BEGIN
|
||||
POPUP "&Ôàéë", FCIDM_MENU_FILE
|
||||
BEGIN
|
||||
MENUITEM "", -1, MFT_SEPARATOR
|
||||
MENUITEM "&Çàêðèòè", IDM_FILE_CLOSE
|
||||
END
|
||||
POPUP "&Ðåäàãóâàòè", FCIDM_MENU_EDIT
|
||||
BEGIN
|
||||
MENUITEM "", -1, MFT_SEPARATOR
|
||||
END
|
||||
POPUP "&Âèãëÿä", FCIDM_MENU_VIEW
|
||||
BEGIN
|
||||
POPUP "&Toolbars", IDM_VIEW_TOOLBARS
|
||||
BEGIN
|
||||
MENUITEM "", -1, MFT_SEPARATOR
|
||||
END
|
||||
MENUITEM "Ðÿäîê &Ñòàíó", IDM_VIEW_STATUSBAR
|
||||
POPUP "&Explorer Bar", IDM_VIEW_EXPLORERBAR
|
||||
BEGIN
|
||||
MENUITEM "&Ïîøóê\tCtrl+E", IDM_EXPLORERBAR_SEARCH
|
||||
MENUITEM "&Îáðàíå\tCtrl+I", IDM_EXPLORERBAR_FAVORITES
|
||||
MENUITEM "&Ìåä³à", IDM_EXPLORERBAR_MEDIA
|
||||
MENUITEM "&²ñòîð³ÿ\tCtrl+H", IDM_EXPLORERBAR_HISTORY
|
||||
MENUITEM "Ï&àïêè", IDM_EXPLORERBAR_FOLDERS
|
||||
MENUITEM "", IDM_EXPLORERBAR_SEPARATOR
|
||||
END
|
||||
MENUITEM "", FCIDM_MENU_VIEW_SEP_OPTIONS, MFT_SEPARATOR
|
||||
POPUP "É&òè Äî", FCIDM_MENU_EXPLORE
|
||||
BEGIN
|
||||
MENUITEM "&Íàçàä\tAlt+˳âà Ñòð³ëêà", IDM_GOTO_BACK
|
||||
MENUITEM "&Âïåðåä\tAlt+Ïðàâà Ñòð³ëêà", IDM_GOTO_FORWARD
|
||||
MENUITEM "Ââå&ðõ íà îäèí ð³âåíü", IDM_GOTO_UPONELEVEL
|
||||
MENUITEM "", -1, MFT_SEPARATOR
|
||||
MENUITEM "&Äîìàøíÿ Ñòîð³íêà\tAlt+Home", IDM_GOTO_HOMEPAGE
|
||||
END
|
||||
MENUITEM "&Îíîâèòè", IDM_VIEW_REFRESH
|
||||
END
|
||||
POPUP "F&avorites", FCIDM_MENU_FAVORITES
|
||||
BEGIN
|
||||
MENUITEM "&Äîäàòè äî Îáðàíîãî...", IDM_FAVORITES_ADDTOFAVORITES
|
||||
MENUITEM "&Îðãàí³çóâàòè Îáðàíå...", IDM_FAVORITES_ORGANIZEFAVORITES
|
||||
MENUITEM "", -1, MFT_SEPARATOR
|
||||
MENUITEM "(Empty)", IDM_FAVORITES_EMPTY
|
||||
END
|
||||
POPUP "&Tools", FCIDM_MENU_TOOLS
|
||||
BEGIN
|
||||
MENUITEM "ϳä'ºäíàòè &Ìåðåæåâèé Äèñê...", IDM_TOOLS_MAPNETWORKDRIVE
|
||||
MENUITEM "&³ä'ºäíàòè Ìåðæåâèé Äèñê...", IDM_TOOLS_DISCONNECTNETWORKDRIVE
|
||||
MENUITEM "&Ñèíõðîí³çóâàòè...", IDM_TOOLS_SYNCHRONIZE
|
||||
MENUITEM "", -1, MFT_SEPARATOR
|
||||
MENUITEM "&Îïö³¿ Ïàïêè...", IDM_TOOLS_FOLDEROPTIONS
|
||||
END
|
||||
POPUP "&Äîïîìîãà", FCIDM_MENU_HELP
|
||||
BEGIN
|
||||
MENUITEM "Öÿ êîï³ÿ ReactOS &çàêîííà?", IDM_HELP_ISTHISCOPYLEGAL
|
||||
MENUITEM "&Ïðî ReactOS", IDM_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialogs
|
||||
//
|
||||
|
||||
IDD_CUSTOMIZETOOLBAREX DIALOGEX 0, 0, 357, 33
|
||||
STYLE DS_SETFONT | DS_3DLOOK | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CAPTION
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x1
|
||||
BEGIN
|
||||
LTEXT "Te&xt options:",-1,4,2,48,15
|
||||
COMBOBOX IDC_TEXTOPTIONS,52,0,123,57,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT "Ico&n options:",-1,4,20,48,15
|
||||
COMBOBOX IDC_ICONOPTIONS,52,18,123,57,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Accelerator
|
||||
//
|
||||
|
||||
IDR_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
VK_F5, IDM_VIEW_REFRESH, VIRTKEY, NOINVERT
|
||||
VK_F5, IDM_VIEW_REFRESH, VIRTKEY, CONTROL, NOINVERT
|
||||
"R", IDM_VIEW_REFRESH, VIRTKEY, CONTROL, NOINVERT
|
||||
VK_HOME, IDM_GOTO_HOMEPAGE, VIRTKEY, ALT, NOINVERT
|
||||
"D", IDM_FAVORITES_ADDTOFAVORITES, VIRTKEY, CONTROL, NOINVERT
|
||||
"B", IDM_FAVORITES_ORGANIZEFAVORITES, VIRTKEY, CONTROL, NOINVERT
|
||||
VK_LEFT, IDM_GOTO_BACK, VIRTKEY, ALT
|
||||
VK_RIGHT, IDM_GOTO_FORWARD, VIRTKEY, ALT
|
||||
"W", IDM_FILE_CLOSE, VIRTKEY, CONTROL, NOINVERT
|
||||
"E", IDM_EXPLORERBAR_SEARCH, VIRTKEY, CONTROL, NOINVERT
|
||||
"I", IDM_EXPLORERBAR_FAVORITES, VIRTKEY, CONTROL, NOINVERT
|
||||
"H", IDM_EXPLORERBAR_HISTORY, VIRTKEY, CONTROL, NOINVERT
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Strings
|
||||
//
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
800 "̳ñòèòü êîìàíäè ìàí³ïóëþâàííÿ âèáðàíèìè îá'ºêòàìè."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
864 "̳ñòèòü êîìàíäè ïðàâêè."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
928 "̳ñòèòü êîìàíäè ìàí³ïóëþâàííÿ âèãëÿäîì."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
992 "̳ñòèòü êîìàíäè ³íñòðóìåíò³â."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
1056 "̳ñòèòü êîìàíäè äëÿ â³äîáðàæåííÿ Äîïîìîãè."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
9025 "Çàêðèâຠâ³êíî."
|
||||
9026 "Éäå ââåðõ íà îäèí ð³âåíü."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
9121 "ϳä'ºäíóº äî ìåðåæåâîãî äèñêó."
|
||||
9122 "³ä'ºäíóº â³ä ìåðåæåâîãî äèñêó."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
9250 "Displays program information, version number, and copyright."
|
||||
9252 "Displays information for debugging."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
9281 "Éäå äî ïîïåðåäíüî¿ ñòîð³íêè."
|
||||
9282 "Éäå äî íàñòóïíî¿ ñòîð³íêè."
|
||||
9283 "Enables you to change settings."
|
||||
9285 "Goes to your home page."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
9362 "³äêðèâຠïàïêó Îáðàíå."
|
||||
9363 "Adds the current page to your Favorites list."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
9505 "Shows or hides toolbars."
|
||||
9506 "Shows or hides the status bar."
|
||||
9508 "Displays the Standard Buttons toolbar."
|
||||
9509 "Displays the Address bar."
|
||||
9510 "Displays the Quick Links bar."
|
||||
9516 "Locks the sizes and positions of the toolbars."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
9533 "Customizes the toolbar."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
9552 "Shows or hides an Explorer bar."
|
||||
9553 "Shows the Search bar."
|
||||
9554 "Shows the Favorites bar."
|
||||
9555 "Shows the History bar."
|
||||
9557 "Shows the Folders bar."
|
||||
9559 "Shows the Media Bar."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_SMALLICONS "Ìàë³ çíà÷êè"
|
||||
IDS_LARGEICONS "Âåëèê³ çíà÷êè"
|
||||
IDS_SHOWTEXTLABELS "Show text labels"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_NOTEXTLABELS "No text labels"
|
||||
IDS_SELECTIVETEXTONRIGHT "Selective text on right"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_GOBUTTONLABEL "|Go||"
|
||||
IDS_GOBUTTONTIPTEMPLATE "Go to ""%s"""
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_SEARCHLABEL "Ïîøóê"
|
||||
IDS_ADDRESSBANDLABEL "À&äðåñà"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_FOLDERSLABEL "Ïàïêè"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_HISTORYTEXT "&²ñòîð³ÿ\tCtrl+H"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_UP "Ââåðõ"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_BACK "Íàçàä"
|
||||
IDS_FORWARD "Âïåðåä"
|
||||
END
|
||||
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
/* TRANSLATOR : Mário Kaèmár /Mario Kacmar/ aka Kario (kario@szm.sk)
|
||||
* DATE OF TR.: 30-05-2008
|
||||
* LAST CHANGE: 30-07-2008
|
||||
* LAST CHANGE: 31-05-2010
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT
|
||||
|
@ -166,7 +166,7 @@ FONT 8, "MS Shell Dlg"
|
|||
BEGIN
|
||||
ICON "", IDC_DEVICON, 7, 7, 20, 20
|
||||
LTEXT "", IDC_DEVNAME, 37, 9, 174, 16, SS_NOPREFIX
|
||||
LTEXT "Sprostredkovate¾:", -1, 34, 39, 60, 8, SS_NOPREFIX
|
||||
LTEXT "Poskytovate¾ ovládaèa:", -1, 34, 39, 60, 8, SS_NOPREFIX
|
||||
EDITTEXT IDC_DRVPROVIDER, 100, 39, 146, 12, NOT WS_TABSTOP | NOT WS_BORDER | ES_AUTOHSCROLL | ES_READONLY
|
||||
LTEXT "Dátum ovládaèa:", -1, 34, 53, 60, 8, SS_NOPREFIX
|
||||
EDITTEXT IDC_DRVDATE, 100, 53, 145, 12, NOT WS_TABSTOP | NOT WS_BORDER | ES_AUTOHSCROLL | ES_READONLY
|
||||
|
@ -189,7 +189,7 @@ BEGIN
|
|||
CONTROL "", IDC_DRIVERFILES, "SysListView32", LVS_REPORT | LVS_NOCOLUMNHEADER |
|
||||
LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_SHAREIMAGELISTS | LVS_SORTASCENDING |
|
||||
LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP, 7, 46, 209, 80
|
||||
LTEXT "Sprostredkovate¾:", -1, 14, 134, 66, 8
|
||||
LTEXT "Poskytovate¾:", -1, 14, 134, 66, 8
|
||||
EDITTEXT IDC_FILEPROVIDER, 80, 134, 137, 8, NOT WS_TABSTOP | NOT WS_BORDER | ES_AUTOHSCROLL | ES_READONLY
|
||||
LTEXT "Verzia súboru:", -1, 14, 150, 66, 8
|
||||
EDITTEXT IDC_FILEVERSION, 80, 150, 137, 8, NOT WS_TABSTOP | NOT WS_BORDER | ES_AUTOHSCROLL | ES_READONLY
|
||||
|
@ -202,7 +202,7 @@ END
|
|||
|
||||
IDD_DEVICEDETAILS DIALOGEX DISCARDABLE 0, 0, 252, 218
|
||||
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Details"
|
||||
CAPTION "Detaily"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
ICON "", IDC_DEVICON, 7, 7, 20, 20
|
||||
|
|
|
@ -13,3 +13,4 @@
|
|||
#include "lang/en-US.rc"
|
||||
#include "lang/es-ES.rc"
|
||||
#include "lang/ru-RU.rc"
|
||||
#include "lang/uk-UA.rc"
|
||||
|
|
163
dll/win32/kernel32/lang/uk-UA.rc
Normal file
|
@ -0,0 +1,163 @@
|
|||
#pragma code_page(1252)
|
||||
|
||||
LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
/* Names of code pages */
|
||||
1250 "1250 (ANSI - Öĺíňđŕëüíŕ Şâđîďŕ)"
|
||||
1251 "1251 (ANSI - Ęčđčëčö˙)"
|
||||
1252 "1252 (ANSI - Ëŕňčíčö˙ I)"
|
||||
1253 "1253 (ANSI - Ăđĺöüęŕ)"
|
||||
1254 "1254 (ANSI - Ňóđĺöüęŕ)"
|
||||
1255 "1255 (ANSI - ˛âđčň)"
|
||||
1256 "1256 (ANSI - Ŕđŕáńüęŕ)"
|
||||
1257 "1257 (ANSI - Áŕëňłéńüęŕ)"
|
||||
1258 "1258 (ANSI/OEM - Â'şňíŕěńüęŕ)"
|
||||
874 "874 (ANSI/OEM - Ňŕéńüęŕ)"
|
||||
932 "932 (ANSI/OEM - ßďîíńüęŕ Shift-JIS)"
|
||||
936 "936 (ANSI/OEM - Ęčňŕéńüęŕ ńďđîůĺíŕ GBK)"
|
||||
949 "949 (ANSI/OEM - Ęîđĺéńüęŕ)"
|
||||
950 "950 (ANSI/OEM - Ęčňŕéńüęŕ ňđŕäčöłéíŕ Big5)"
|
||||
|
||||
437 "437 (OEM - ŃŘŔ)"
|
||||
737 "737 (OEM - Ăđĺöüęŕ 437G)"
|
||||
775 "775 (OEM - Áŕëňłéńüęŕ)"
|
||||
850 "850 (OEM - Áŕăŕňîěîâíŕ Ëŕňčíčö˙ I)"
|
||||
852 "852 (OEM - Ëŕňčíčö˙ II)"
|
||||
855 "855 (OEM - Ęčđčëčö˙)"
|
||||
857 "857 (OEM - Ňóđĺöüęŕ)"
|
||||
858 "858 (OEM - Áŕăŕňîěîâíŕ Ëŕňčíčö˙ I + Şâđî)"
|
||||
860 "860 (OEM - Ďîđňóăŕëüńüęŕ)"
|
||||
861 "861 (OEM - ˛ńëŕíäńüęŕ)"
|
||||
862 "862 (OEM - ˛âđčň)"
|
||||
863 "863 (OEM - Canadian French)"
|
||||
864 "864 (OEM - Ŕđŕáńüęŕ)"
|
||||
865 "865 (OEM - Ńęŕíäčíŕâńüęŕ)"
|
||||
866 "866 (OEM - Đîńłéńüęŕ)"
|
||||
869 "869 (OEM - Ăđĺöüęŕ ńó÷ŕńíŕ)"
|
||||
|
||||
10000 "10000 (MAC - Ëŕňčíčö˙)"
|
||||
10001 "10001 (MAC - ßďîíńüęŕ)"
|
||||
10002 "10002 (MAC - Ęčňŕéńüęŕ ňđŕäčöłéíŕ Big5)"
|
||||
10003 "10003 (MAC - Ęîđĺéńüęŕ)"
|
||||
10004 "10004 (MAC - Ŕđŕáńüęŕ)"
|
||||
10005 "10005 (MAC - ˛âđčň)"
|
||||
10006 "10006 (MAC - Ăđĺöüęŕ I)"
|
||||
10007 "10007 (MAC - Ęčđčëčö˙)"
|
||||
10008 "10008 (MAC - Ęčňŕéńüęŕ ńďđîůĺíŕ GB 2312)"
|
||||
10010 "10010 (MAC - Đóěóíńüęŕ)"
|
||||
10017 "10017 (MAC - Óęđŕżíńüęŕ)"
|
||||
10021 "10021 (MAC - Ňŕéńüęŕ)"
|
||||
10029 "10029 (MAC - Ëŕňčíčö˙ II)"
|
||||
10079 "10079 (MAC - ˛ńëŕíäńüęŕ)"
|
||||
10081 "10081 (MAC - Ňóđĺöüęŕ)"
|
||||
10082 "10082 (MAC - Őîđâŕňńüęŕ)"
|
||||
|
||||
65000 "65000 (UTF-7)"
|
||||
65001 "65001 (UTF-8)"
|
||||
|
||||
3700 "37 (IBM EBCDIC - ŃŘŔ/Ęŕíŕäŕ)" /* FIXME */
|
||||
1026 "1026 (IBM EBCDIC - Ňóđĺöüęŕ (Ëŕňčíčö˙-5))"
|
||||
1047 "1047 (IBM EBCDIC - Ëŕňčíčö˙-1/Open System)"
|
||||
1140 "1140 (IBM EBCDIC - ŃŘŔ/Ęŕíŕäŕ (37 + Şâđî))"
|
||||
1141 "1141 (IBM EBCDIC - Íłěĺöüęŕ (20273 + Şâđî))"
|
||||
1142 "1142 (IBM EBCDIC - Äŕňńüęŕ/Íîđâĺçüęŕ (20277 + Şâđî))"
|
||||
1143 "1143 (IBM EBCDIC - Ôłíńüęŕ/Řâĺäńüęŕ (20278 + Şâđî))"
|
||||
1144 "1144 (IBM EBCDIC - ˛ňŕëłéńüęŕ (20280 + Şâđî))"
|
||||
1145 "1145 (IBM EBCDIC - Ëŕňčíîŕěĺđ./˛ńďŕíńüęŕ (20284 + Şâđî))"
|
||||
1146 "1146 (IBM EBCDIC - Áđčňŕíńüęŕ (20285 + Şâđî))"
|
||||
1147 "1147 (IBM EBCDIC - Ôđŕíöóçüęŕ (20297 + Şâđî))"
|
||||
1148 "1148 (IBM EBCDIC - Ěłćíŕđîäíŕ (500 + Şâđî))"
|
||||
1149 "1149 (IBM EBCDIC - ˛ńëŕíäńüęŕ (20871 + Şâđî))"
|
||||
20273 "20273 (IBM EBCDIC - Íłěĺöüęŕ)"
|
||||
20277 "20277 (IBM EBCDIC - Äŕňńüęŕ/Íîđâĺçüęŕ)"
|
||||
20278 "20278 (IBM EBCDIC - Ôłíńüęŕ/Řâĺäńüęŕ)"
|
||||
20280 "20280 (IBM EBCDIC - ˛ňŕëłéńüęŕ)"
|
||||
20284 "20284 (IBM EBCDIC - Ëŕňčíîŕěĺđ./˛ńďŕíńüęŕ)"
|
||||
20285 "20285 (IBM EBCDIC - Áđčňŕíńüęŕ)"
|
||||
20290 "20290 (IBM EBCDIC - ßďîíńüęŕ Ęŕňŕęŕíŕ Đîçřčđĺíŕ)"
|
||||
20297 "20297 (IBM EBCDIC - Ôđŕíöóçüęŕ)"
|
||||
20420 "20420 (IBM EBCDIC - Ŕđŕáńüęŕ)"
|
||||
20423 "20423 (IBM EBCDIC - Ăđĺöüęŕ)"
|
||||
20424 "20424 (IBM EBCDIC - ˛âđčň)"
|
||||
20833 "20833 (IBM EBCDIC - Ęîđĺéńüęŕ Đîçřčđĺíŕ)"
|
||||
20838 "20838 (IBM EBCDIC - Ňŕéńüęŕ)"
|
||||
20871 "20871 (IBM EBCDIC - ˛ńëŕíäńüęŕ)"
|
||||
20880 "20880 (IBM EBCDIC - Ęčđčëčö˙ (Đîńłéńüęŕ))"
|
||||
20905 "20905 (IBM EBCDIC - Ňóđĺöüęŕ)"
|
||||
20924 "20924 (IBM EBCDIC - Ëŕňčíčö˙-1/Open System (1047 + Şâđî))"
|
||||
21025 "21025 (IBM EBCDIC - Ęčđčëčö˙ (Ńĺđáńüęŕ, Áîëăŕđńüęŕ))"
|
||||
500 "500 (IBM EBCDIC - Ěłćíŕđîäíŕ)"
|
||||
870 "870 (IBM EBCDIC - Áŕăŕňîěîâíŕ/ROECE (Ëŕňčíčö˙-2))"
|
||||
875 "875 (IBM EBCDIC - Ńó÷ŕńíŕ Ăđĺöüęŕ)"
|
||||
|
||||
20269 "20269 (ISO 6937 Äłŕęđčňč÷íł Çíŕęč)"
|
||||
28591 "28591 (ISO 8859-1 Ëŕňčíčö˙ I)"
|
||||
28592 "28592 (ISO 8859-2 Öĺíňđŕëüíîşâđîďĺéńüęŕ)"
|
||||
28593 "28593 (ISO 8859-3 Ëŕňčíčö˙ 3)"
|
||||
28594 "28594 (ISO 8859-4 Áŕëňłéńüęŕ)"
|
||||
28595 "28595 (ISO 8859-5 Ęčđčëčö˙)"
|
||||
28596 "28596 (ISO 8859-6 Ŕđŕáńüęŕ)"
|
||||
28597 "28597 (ISO 8859-7 Ăđĺöüęŕ)"
|
||||
28598 "28598 (ISO 8859-8 ˛âđčň: Âłçóŕëüíčé Ďîđ˙äîę)"
|
||||
28599 "28599 (ISO 8859-9 Ëŕňčíčö˙ 5)"
|
||||
28605 "28605 (ISO 8859-15 Ëŕňčíčö˙ 9)"
|
||||
38598 "38598 (ISO 8859-8 ˛âđčň: Ëîăł÷íčé Ďîđ˙äîę)"
|
||||
|
||||
20105 "20105 (IA5 IRV Ěłćíŕđîäíčé Ŕëôŕâłň No.5)"
|
||||
20106 "20106 (IA5 Íłěĺöüęŕ)"
|
||||
20107 "20107 (IA5 Řâĺäńüęŕ)"
|
||||
20108 "20108 (IA5 Íîđâĺçüęŕ)"
|
||||
|
||||
1361 "1361 (Ęîđĺéńüęŕ - Johab)"
|
||||
20000 "20000 (CNS - Ňŕéâŕíńüęŕ)"
|
||||
20001 "20001 (TCA - Ňŕéâŕíńüęŕ)"
|
||||
20002 "20002 (Eten - Ňŕéâŕíńüęŕ)"
|
||||
20003 "20003 (IBM5550 - Ňŕéâŕíńüęŕ)"
|
||||
20004 "20004 (TeleText - Ňŕéâŕíńüęŕ)"
|
||||
20005 "20005 (Wang - Ňŕéâŕíńüęŕ)"
|
||||
20127 "20127 (ŃŘŔ-ASCII)"
|
||||
20261 "20261 (T.61)"
|
||||
20866 "20866 (Đîńłéńüęŕ - KOI8)"
|
||||
21027 "21027 (Đîçř. Ŕëô. Íčćíłé đĺăłńňđ)"
|
||||
21866 "21866 (Óęđŕżíńüęŕ - KOI8-U)"
|
||||
708 "708 (Ŕđŕáńüęŕ - ASMO)"
|
||||
720 "720 (Ŕđŕáńüęŕ - Ďđîçîđŕ ASMO)"
|
||||
20932 "20932 (JIS X 0208-1990 & 0212-1990)"
|
||||
20936 "20936 (Ęčňŕéńüęŕ ńďđîůĺíŕ GB2312)"
|
||||
20949 "20949 (Ęîđĺéńüęŕ Wansung)"
|
||||
|
||||
57002 "57002 (ISCII Äĺâŕíŕăŕđł)"
|
||||
57003 "57003 (ISCII Áĺíăŕëüńüęŕ)"
|
||||
57004 "57004 (ISCII Ňŕěłëüńüęŕ)"
|
||||
57005 "57005 (ISCII Ňĺëóăó)"
|
||||
57006 "57006 (ISCII Ŕńńŕěńüęŕ)"
|
||||
57007 "57007 (ISCII Îđł˙)"
|
||||
57008 "57008 (ISCII Ęŕííŕäŕ)"
|
||||
57009 "57009 (ISCII Ěŕëŕ˙ëŕě)"
|
||||
57010 "57010 (ISCII Ăóäćŕđŕňł)"
|
||||
57011 "57011 (ISCII Ăóđěóęőł)"
|
||||
|
||||
50930 "50930 (IBM EBCDIC - ßďîíńüęŕ (Ęŕňŕęŕíŕ) Đîçřčđĺíŕ ňŕ ßďîíńüęŕ)"
|
||||
50931 "50931 (IBM EBCDIC - ŃŘŔ/Ęŕíŕäŕ ňŕ ßďîíńüęŕ)"
|
||||
50933 "50933 (IBM EBCDIC - Ęîđĺéńüęŕ ňŕ Đîçřčđĺíŕ Ęîđĺéńüęŕ)"
|
||||
50935 "50935 (IBM EBCDIC - Ęčňŕéńüęŕ ńďđîůĺíŕ)"
|
||||
50937 "50937 (IBM EBCDIC - ŃŘŔ/Ęŕíŕäŕ ňŕ Ęčňŕéńüęŕ ňđŕäčöłéíŕ)"
|
||||
50939 "50939 (IBM EBCDIC - ßďîíńüęŕ (Ëŕňčíčö˙) Đîçřčđĺíŕ ňŕ ßďîíńüęŕ)"
|
||||
|
||||
50220 "50220 (ISO-2022 ßďîíńüęŕ áĺç ďłâřčđčííîż Ęŕňŕęŕíč)"
|
||||
50221 "50221 (ISO-2022 ßďîíńüęŕ ç ďłâřčđčííîţ Ęŕňŕęŕíîţ)"
|
||||
50222 "50222 (ISO-2022 ßďîíńüęŕ JIS X 0201-1989)"
|
||||
50225 "50225 (ISO-2022 Ęîđĺéńüęŕ)"
|
||||
50227 "50227 (ISO-2022 Ęčňŕéńüęŕ ńďđîůĺíŕ)"
|
||||
50229 "50229 (ISO-2022 Ęčňŕéńüęŕ ňđŕäčöłéíŕ)"
|
||||
|
||||
51932 "51932 (EUC-ßďîíńüęŕ)"
|
||||
51936 "51936 (EUC-Ęčňŕéńüęŕ ńďđîůĺíŕ)"
|
||||
51949 "51949 (EUC-Ęîđĺéńüęŕ)"
|
||||
51950 "51950 (EUC-Ęčňŕéńüęŕ ňđŕäčöłéíŕ)"
|
||||
|
||||
52936 "52936 (HZ-GB2312 Ęčňŕéńüęŕ ńďđîůĺíŕ)"
|
||||
54936 "54936 (GB18030 Ęčňŕéńüęŕ ńďđîůĺíŕ)"
|
||||
END
|
|
@ -16,12 +16,12 @@ BEGIN
|
|||
GROUPBOX "Description", -1, 9, 153, 230, 46, BS_GROUPBOX
|
||||
LTEXT "Description du composant...", IDC_DESCRIPTION, 15, 165, 217, 28, WS_GROUP
|
||||
CHECKBOX "&Afficher l'icône dans la barre des tâches", IDC_SHOWTASKBAR, 9, 206, 230, 12, BS_AUTOCHECKBOX | WS_TABSTOP
|
||||
CHECKBOX "&Notify me when this connection has limited or no connectivity", IDC_NOTIFYNOCONNECTION, 9, 220, 230, 12, BS_AUTOCHECKBOX | WS_TABSTOP
|
||||
CHECKBOX "Me ¬ifier quand cette connexion n'a pas de connectivité ou une limitée", IDC_NOTIFYNOCONNECTION, 9, 220, 230, 12, BS_AUTOCHECKBOX | WS_TABSTOP
|
||||
END
|
||||
|
||||
IDD_STATUS DIALOGEX DISCARDABLE 0, 0, 200, 280
|
||||
STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Allgemein"
|
||||
CAPTION "Général"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
END
|
||||
|
@ -112,7 +112,7 @@ BEGIN
|
|||
IDS_NET_REPAIR "Réparer"
|
||||
IDS_NET_CREATELINK "Créer un raccourci"
|
||||
IDS_NET_DELETE "Supprimer"
|
||||
IDS_NET_RENAME "Rename"
|
||||
IDS_NET_RENAME "Renommer"
|
||||
IDS_NET_PROPERTIES "Propriétés"
|
||||
|
||||
IDS_FORMAT_BIT "%u Bit/s"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* TRANSLATOR : Mário Kaèmár /Mario Kacmar/ aka Kario (kario@szm.sk)
|
||||
* DATE OF TR.: 31-08-2008
|
||||
* LAST CHANGE: 18-04-2009
|
||||
* LAST CHANGE: 02-05-2010
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT
|
||||
|
@ -32,7 +32,7 @@ BEGIN
|
|||
END
|
||||
|
||||
IDD_LAN_NETSTATUS DIALOGEX DISCARDABLE 0, 0, 200, 180
|
||||
STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
|
||||
CAPTION "Všeobecné"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
|
@ -42,7 +42,7 @@ BEGIN
|
|||
LTEXT "Rýchlos<6F>:", -1, 19, 48, 60, 8
|
||||
GROUPBOX "Èinnos<6F>", -1, 9, 74, 182, 70, BS_GROUPBOX
|
||||
RTEXT "Odoslané", -1, 26, 90, 60, 8
|
||||
ICON "", IDC_NETSTAT, 110, 85, 18, 20
|
||||
ICON "", IDC_NETSTAT, 110, 85, 32, 32
|
||||
LTEXT "Prijaté", -1, 149, 90, 37, 8
|
||||
LTEXT "Bajty:", -1, 17, 115, 32, 8
|
||||
RTEXT "000.000.000", IDC_SEND, 63, 115, 44, 8
|
||||
|
|
|
@ -27,7 +27,6 @@ typedef struct _OPENGL_INFO
|
|||
WCHAR DriverName[256]; /*!< Driver name */
|
||||
} OPENGL_INFO, *POPENGL_INFO;
|
||||
|
||||
|
||||
/*! \brief Append OpenGL Rendering Context (GLRC) to list
|
||||
*
|
||||
* \param glrc [IN] Pointer to GLRC to append to list
|
||||
|
@ -179,7 +178,7 @@ BOOL
|
|||
ROSGL_DeleteContext( GLRC *glrc )
|
||||
{
|
||||
/* unload icd */
|
||||
if ((glrc->icd != NULL) && !(InterlockedDecrement((LONG*)&glrc->icd->refcount)))
|
||||
if ((glrc->icd != NULL) && (!InterlockedDecrement((LONG*)&glrc->icd->refcount)))
|
||||
{
|
||||
/* This is the last context, remove the ICD*/
|
||||
ROSGL_DeleteDCDataForICD( glrc->icd );
|
||||
|
@ -272,7 +271,7 @@ ROSGL_GetPrivateDCData( HDC hdc )
|
|||
data = OPENGL32_processdata.dcdata_list;
|
||||
while (data != NULL)
|
||||
{
|
||||
if ((data->hdc == hdc) || (WindowFromDC(data->hdc) == WindowFromDC(hdc))) /* found */
|
||||
if (data->hdc == hdc) /* found */
|
||||
break;
|
||||
data = data->next;
|
||||
}
|
||||
|
@ -416,7 +415,7 @@ ROSGL_ICDForHDC( HDC hdc )
|
|||
NULL) != NULL)
|
||||
{
|
||||
/* Too bad, somebody else was faster... */
|
||||
DBGTRACE("Uh, Someone beat you to it!\n");
|
||||
DBGTRACE("ICD is already set!\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -689,16 +688,9 @@ rosglCreateLayerContext( HDC hdc, int layer )
|
|||
/* FIXME: fallback? */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Don't forget to refcount it, icd will be released when last context is deleted */
|
||||
InterlockedIncrement((LONG*)&icd->refcount);
|
||||
|
||||
if(!rosglGetPixelFormat(hdc))
|
||||
{
|
||||
ROSGL_DeleteContext(glrc);
|
||||
SetLastError(ERROR_INVALID_PIXEL_FORMAT);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* create context */
|
||||
if (icd->DrvCreateLayerContext != NULL)
|
||||
|
@ -1002,12 +994,6 @@ rosglMakeCurrent( HDC hdc, HGLRC hglrc )
|
|||
glrc->is_current = FALSE;
|
||||
OPENGL32_threaddata->glrc = NULL;
|
||||
}
|
||||
else if ((GetObjectType(hdc) != OBJ_DC) && (GetObjectType(hdc) != OBJ_MEMDC))
|
||||
{
|
||||
DBGPRINT("Current context is NULL and requested HDC is invalid.\n");
|
||||
SetLastError(ERROR_INVALID_HANDLE);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -327,13 +327,13 @@ SH_FileGeneralSetFileSizeTime(HWND hwndDlg, WCHAR *lpfilename, PULARGE_INTEGER l
|
|||
|
||||
if (SHFileGeneralGetFileTimeString(&accessed_time, resultstr))
|
||||
{
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, 14017);
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, 14019);
|
||||
SendMessageW(hDlgCtrl, WM_SETTEXT, (WPARAM)NULL, (LPARAM)resultstr);
|
||||
}
|
||||
|
||||
if (SHFileGeneralGetFileTimeString(&write_time, resultstr))
|
||||
{
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, 14019);
|
||||
hDlgCtrl = GetDlgItem(hwndDlg, 14017);
|
||||
SendMessageW(hDlgCtrl, WM_SETTEXT, (WPARAM)NULL, (LPARAM)resultstr);
|
||||
}
|
||||
|
||||
|
|
|
@ -669,8 +669,8 @@ BEGIN
|
|||
IDS_RESTART_PROMPT "Voulez-vous redémarrer votre ordinateur ?"
|
||||
IDS_SHUTDOWN_TITLE "Arrêter"
|
||||
IDS_SHUTDOWN_PROMPT "Voulez-vous fermer la session ReactOS ?"
|
||||
IDS_LOGOFF_TITLE "Log Off"
|
||||
IDS_LOGOFF_PROMPT "Do you want to log off?"
|
||||
IDS_LOGOFF_TITLE "Se déconnecter"
|
||||
IDS_LOGOFF_PROMPT "Voulez-vous vous déconnecter ?"
|
||||
|
||||
/* shell folder path default values */
|
||||
IDS_PROGRAMS "Menu Démarrer\\Programmes"
|
||||
|
@ -754,7 +754,7 @@ BEGIN
|
|||
IDS_INSTALLNEWFONT "Installer une nouvelle police..."
|
||||
|
||||
IDS_DEFAULT_CLUSTER_SIZE "Taille d'allocation par défaut"
|
||||
IDS_COPY_OF "Copy of"
|
||||
IDS_COPY_OF "Copie de"
|
||||
|
||||
IDS_SHLEXEC_NOASSOC "Aucun programme Windows n'est configuré pour ouvrir ce type de fichier."
|
||||
END
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* TRANSLATOR : Mário Kaèmár /Mario Kacmar/ aka Kario (kario@szm.sk)
|
||||
* NOTE : partially translated
|
||||
* TRANSLATED : 26-12-2007
|
||||
* LAST CHANGE: 20-09-2009
|
||||
* LAST CHANGE: 31-05-2010
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -671,8 +671,8 @@ BEGIN
|
|||
IDS_RESTART_PROMPT "Naozaj chcete reštartova<76> systém?"
|
||||
IDS_SHUTDOWN_TITLE "Vypnú<6E>"
|
||||
IDS_SHUTDOWN_PROMPT "Naozaj chcete vypnú<6E> poèítaè?"
|
||||
IDS_LOGOFF_TITLE "Log Off"
|
||||
IDS_LOGOFF_PROMPT "Do you want to log off?"
|
||||
IDS_LOGOFF_TITLE "Odhlásiť"
|
||||
IDS_LOGOFF_PROMPT "Naozaj sa chcete odhlásiť?"
|
||||
|
||||
/* shell folder path default values */
|
||||
IDS_PROGRAMS "Ponuka Štart\\Programy"
|
||||
|
@ -758,5 +758,7 @@ BEGIN
|
|||
IDS_DEFAULT_CLUSTER_SIZE "Predvolená alokaèná ve¾kos<6F>" //Default allocation size
|
||||
IDS_COPY_OF "Kópia" //Copy of
|
||||
|
||||
IDS_SHLEXEC_NOASSOC "There is no Windows program configured to open this type of file."
|
||||
// There is no Windows program configured to open this type of file.
|
||||
IDS_SHLEXEC_NOASSOC "Neexistuje žiadny program nakonfigurovaný tak, aby otváral tento typ súborov."
|
||||
// Na otváranie tohto typu súboru nie je nakonfigurovaný žiadny program systému Windows.
|
||||
END
|
||||
|
|
|
@ -855,6 +855,7 @@ InstallReactOS(HINSTANCE hInstance)
|
|||
DWORD LastError;
|
||||
HANDLE token;
|
||||
TOKEN_PRIVILEGES privs;
|
||||
HKEY hKey;
|
||||
|
||||
InitializeSetupActionLog(FALSE);
|
||||
LogItem(SYSSETUP_SEVERITY_INFORMATION, L"Installing ReactOS");
|
||||
|
@ -901,6 +902,29 @@ InstallReactOS(HINSTANCE hInstance)
|
|||
|
||||
if (GetWindowsDirectory(szBuffer, sizeof(szBuffer) / sizeof(TCHAR)))
|
||||
{
|
||||
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,
|
||||
L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion",
|
||||
0,
|
||||
KEY_WRITE,
|
||||
&hKey) == ERROR_SUCCESS)
|
||||
{
|
||||
RegSetValueExW(hKey,
|
||||
L"PathName",
|
||||
0,
|
||||
REG_SZ,
|
||||
(LPBYTE)szBuffer,
|
||||
(wcslen(szBuffer) + 1) * sizeof(WCHAR));
|
||||
|
||||
RegSetValueExW(hKey,
|
||||
L"SystemRoot",
|
||||
0,
|
||||
REG_SZ,
|
||||
(LPBYTE)szBuffer,
|
||||
(wcslen(szBuffer) + 1) * sizeof(WCHAR));
|
||||
|
||||
RegCloseKey(hKey);
|
||||
}
|
||||
|
||||
PathAddBackslash(szBuffer);
|
||||
_tcscat(szBuffer, _T("system"));
|
||||
CreateDirectory(szBuffer, NULL);
|
||||
|
|
|
@ -212,9 +212,9 @@ BEGIN
|
|||
IDS_CMT_DEVMGMT "Lancer le gestionnaire de périphériques"
|
||||
IDS_CMT_SERVMAN "Lancer le gestionnaire de services"
|
||||
IDS_CMT_RDESKTOP "Lancer le bureau distant"
|
||||
IDS_CMT_EVENTVIEW "Launch Event Viewer"
|
||||
IDS_CMT_MSCONFIG "Launch System Configuration program"
|
||||
IDS_CMT_PAINT "Launch Paint"
|
||||
IDS_CMT_EVENTVIEW "Lancer la visionneuse des événements"
|
||||
IDS_CMT_MSCONFIG "Lancer le programme de configuration système"
|
||||
IDS_CMT_PAINT "Lancer Paint"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -230,7 +230,7 @@ BEGIN
|
|||
IDS_SYS_TOOLS "Outils système"
|
||||
IDS_CMT_CHARMAP "Table des Caractères"
|
||||
IDS_CMT_KBSWITCH "Sélecteur de configuration clavier"
|
||||
IDS_CMT_DXDIAG "Launch ReactX-Diagnostic program"
|
||||
IDS_CMT_DXDIAG "Lancer le prorgramme de diagnostic ReactX"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -241,10 +241,10 @@ END
|
|||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_SYS_ENTERTAINMENT "Entertainment"
|
||||
IDS_CMT_MPLAY32 "Launch Multimedia Player"
|
||||
IDS_CMT_SNDVOL32 "Launch Volume Control"
|
||||
IDS_CMT_SNDREC32 "Launch Sound Recorder"
|
||||
IDS_SYS_ENTERTAINMENT "Divertissement"
|
||||
IDS_CMT_MPLAY32 "Lancer le lecteur multimédia"
|
||||
IDS_CMT_SNDVOL32 "Lancer le contrôleur de volume"
|
||||
IDS_CMT_SNDREC32 "Lancer l'enregistreur de son"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -279,11 +279,11 @@ BEGIN
|
|||
IDS_SHORT_MAGNIFY "Loupe.lnk"
|
||||
IDS_SHORT_RDESKTOP "Bureau Distant.lnk"
|
||||
IDS_SHORT_KBSWITCH "Sélecteur de configuration clavier.lnk"
|
||||
IDS_SHORT_EVENTVIEW "Event Viewer.lnk"
|
||||
IDS_SHORT_MSCONFIG "System Configuration.lnk"
|
||||
IDS_SHORT_SNDVOL32 "Volume Control.lnk"
|
||||
IDS_SHORT_SNDREC32 "Audiorecorder.lnk"
|
||||
IDS_SHORT_DXDIAG "ReactX Diagnostic.lnk"
|
||||
IDS_SHORT_EVENTVIEW "Visionneuse des événements.lnk"
|
||||
IDS_SHORT_MSCONFIG "Configuration système.lnk"
|
||||
IDS_SHORT_SNDVOL32 "Contrôleur de volume.lnk"
|
||||
IDS_SHORT_SNDREC32 "Enregistreur de son.lnk"
|
||||
IDS_SHORT_DXDIAG "Diagnostic ReactX.lnk"
|
||||
IDS_SHORT_PAINT "Paint.lnk"
|
||||
IDS_SHORT_SPIDER "Spider Solitaire.lnk"
|
||||
END
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* TRANSLATOR : Mário Kaèmár /Mario Kacmar/ aka Kario (kario@szm.sk)
|
||||
* DATE OF TR.: 09-02-2008
|
||||
* LAST CHANGE: 13-10-2009
|
||||
* LAST CHANGE: 15-12-2009
|
||||
* THANKS TO : Filip Navara and Kamil Hornicek and all good people ;-)
|
||||
*/
|
||||
|
||||
|
@ -230,7 +230,7 @@ BEGIN
|
|||
IDS_SYS_ENTERTAINMENT "Zábava" //Entertainment
|
||||
IDS_CMT_MPLAY32 "Spusti<74> Multimediálny prehrávaè"
|
||||
IDS_CMT_SNDVOL32 "Spusti<74> Ovládanie hlasitosti"
|
||||
IDS_CMT_SNDREC32 "Launch Sound Recorder"
|
||||
IDS_CMT_SNDREC32 "Spustiť Nahrávanie zvuku"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
@ -268,7 +268,7 @@ BEGIN
|
|||
IDS_SHORT_EVENTVIEW "Zobrazovaè udalostí.lnk"
|
||||
IDS_SHORT_MSCONFIG "Program na konfiguráciu systému.lnk"
|
||||
IDS_SHORT_SNDVOL32 "Ovládanie hlasitosti.lnk" //Volume Control
|
||||
IDS_SHORT_SNDREC32 "Audiorecorder.lnk"
|
||||
IDS_SHORT_SNDREC32 "Audiorekordér.lnk"
|
||||
IDS_SHORT_DXDIAG "Diagnostika ReactX.lnk"
|
||||
IDS_SHORT_PAINT "Skicár.lnk"
|
||||
IDS_SHORT_SPIDER "Pavúèí solitér.lnk"
|
||||
|
|
7
drivers/bluetooth/directory.rbuild
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE group SYSTEM "../../tools/rbuild/project.dtd">
|
||||
<group xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<!--directory name="fbtusb">
|
||||
<xi:include href="fbtusb/fbtusb.rbuild" />
|
||||
</directory-->
|
||||
</group>
|
1198
drivers/bluetooth/fbtusb/fbtdev.c
Executable file
1910
drivers/bluetooth/fbtusb/fbtpnp.c
Executable file
1062
drivers/bluetooth/fbtusb/fbtpwr.c
Executable file
543
drivers/bluetooth/fbtusb/fbtrwr.c
Executable file
|
@ -0,0 +1,543 @@
|
|||
// Copyright (c) 2004, Antony C. Roberts
|
||||
|
||||
// Use of this file is subject to the terms
|
||||
// described in the LICENSE.TXT file that
|
||||
// accompanies this file.
|
||||
//
|
||||
// Your use of this file indicates your
|
||||
// acceptance of the terms described in
|
||||
// LICENSE.TXT.
|
||||
//
|
||||
// http://www.freebt.net
|
||||
|
||||
#include "fbtusb.h"
|
||||
#include "fbtpnp.h"
|
||||
#include "fbtpwr.h"
|
||||
#include "fbtdev.h"
|
||||
#include "fbtrwr.h"
|
||||
#include "fbtwmi.h"
|
||||
|
||||
#include "fbtusr.h"
|
||||
|
||||
// Read/Write handler
|
||||
NTSTATUS FreeBT_DispatchRead(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
|
||||
{
|
||||
PMDL mdl;
|
||||
PURB urb;
|
||||
ULONG totalLength;
|
||||
ULONG stageLength;
|
||||
NTSTATUS ntStatus;
|
||||
ULONG_PTR virtualAddress;
|
||||
PFILE_OBJECT fileObject;
|
||||
PDEVICE_EXTENSION deviceExtension;
|
||||
PIO_STACK_LOCATION irpStack;
|
||||
PIO_STACK_LOCATION nextStack;
|
||||
PFREEBT_RW_CONTEXT rwContext;
|
||||
ULONG maxLength=0;
|
||||
|
||||
urb = NULL;
|
||||
mdl = NULL;
|
||||
rwContext = NULL;
|
||||
totalLength = 0;
|
||||
irpStack = IoGetCurrentIrpStackLocation(Irp);
|
||||
fileObject = irpStack->FileObject;
|
||||
deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension;
|
||||
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DispatchRead: Entered\n"));
|
||||
|
||||
if (deviceExtension->DeviceState != Working)
|
||||
{
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_DispatchRead: Invalid device state\n"));
|
||||
ntStatus = STATUS_INVALID_DEVICE_STATE;
|
||||
goto FreeBT_DispatchRead_Exit;
|
||||
|
||||
}
|
||||
|
||||
// Make sure that any selective suspend request has been completed.
|
||||
if (deviceExtension->SSEnable)
|
||||
{
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DispatchRead: Waiting on the IdleReqPendEvent\n"));
|
||||
KeWaitForSingleObject(&deviceExtension->NoIdleReqPendEvent,
|
||||
Executive,
|
||||
KernelMode,
|
||||
FALSE,
|
||||
NULL);
|
||||
|
||||
}
|
||||
|
||||
rwContext = (PFREEBT_RW_CONTEXT) ExAllocatePool(NonPagedPool, sizeof(FREEBT_RW_CONTEXT));
|
||||
if (rwContext == NULL)
|
||||
{
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_DispatchRead: Failed to alloc mem for rwContext\n"));
|
||||
ntStatus = STATUS_INSUFFICIENT_RESOURCES;
|
||||
goto FreeBT_DispatchRead_Exit;
|
||||
|
||||
}
|
||||
|
||||
if (Irp->MdlAddress)
|
||||
{
|
||||
totalLength = MmGetMdlByteCount(Irp->MdlAddress);
|
||||
|
||||
}
|
||||
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_DispatchRead: Transfer data length = %d\n", totalLength));
|
||||
if (totalLength == 0)
|
||||
{
|
||||
ntStatus = STATUS_SUCCESS;
|
||||
ExFreePool(rwContext);
|
||||
goto FreeBT_DispatchRead_Exit;
|
||||
|
||||
}
|
||||
|
||||
virtualAddress = (ULONG_PTR) MmGetMdlVirtualAddress(Irp->MdlAddress);
|
||||
if (totalLength > deviceExtension->DataInPipe.MaximumPacketSize)
|
||||
{
|
||||
stageLength = deviceExtension->DataInPipe.MaximumPacketSize;
|
||||
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
stageLength = totalLength;
|
||||
|
||||
}
|
||||
|
||||
mdl = IoAllocateMdl((PVOID) virtualAddress, totalLength, FALSE, FALSE, NULL);
|
||||
if (mdl == NULL)
|
||||
{
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_DispatchRead: Failed to alloc mem for mdl\n"));
|
||||
ntStatus = STATUS_INSUFFICIENT_RESOURCES;
|
||||
ExFreePool(rwContext);
|
||||
goto FreeBT_DispatchRead_Exit;
|
||||
|
||||
}
|
||||
|
||||
// map the portion of user-buffer described by an mdl to another mdl
|
||||
IoBuildPartialMdl(Irp->MdlAddress, mdl, (PVOID) virtualAddress, stageLength);
|
||||
urb = (PURB) ExAllocatePool(NonPagedPool, sizeof(struct _URB_BULK_OR_INTERRUPT_TRANSFER));
|
||||
if (urb == NULL)
|
||||
{
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_DispatchRead: Failed to alloc mem for urb\n"));
|
||||
ntStatus = STATUS_INSUFFICIENT_RESOURCES;
|
||||
ExFreePool(rwContext);
|
||||
IoFreeMdl(mdl);
|
||||
goto FreeBT_DispatchRead_Exit;
|
||||
|
||||
}
|
||||
|
||||
UsbBuildInterruptOrBulkTransferRequest(
|
||||
urb,
|
||||
sizeof(struct _URB_BULK_OR_INTERRUPT_TRANSFER),
|
||||
deviceExtension->DataInPipe.PipeHandle,
|
||||
NULL,
|
||||
mdl,
|
||||
stageLength,
|
||||
USBD_SHORT_TRANSFER_OK | USBD_TRANSFER_DIRECTION_IN,
|
||||
NULL);
|
||||
|
||||
// set FREEBT_RW_CONTEXT parameters.
|
||||
rwContext->Urb = urb;
|
||||
rwContext->Mdl = mdl;
|
||||
rwContext->Length = totalLength - stageLength;
|
||||
rwContext->Numxfer = 0;
|
||||
rwContext->VirtualAddress = virtualAddress + stageLength;
|
||||
|
||||
// use the original read/write irp as an internal device control irp
|
||||
nextStack = IoGetNextIrpStackLocation(Irp);
|
||||
nextStack->MajorFunction = IRP_MJ_INTERNAL_DEVICE_CONTROL;
|
||||
nextStack->Parameters.Others.Argument1 = (PVOID) urb;
|
||||
nextStack->Parameters.DeviceIoControl.IoControlCode = IOCTL_INTERNAL_USB_SUBMIT_URB;
|
||||
IoSetCompletionRoutine(Irp,
|
||||
(PIO_COMPLETION_ROUTINE)FreeBT_ReadCompletion,
|
||||
rwContext,
|
||||
TRUE,
|
||||
TRUE,
|
||||
TRUE);
|
||||
|
||||
// We return STATUS_PENDING; call IoMarkIrpPending.
|
||||
IoMarkIrpPending(Irp);
|
||||
|
||||
ntStatus = IoCallDriver(deviceExtension->TopOfStackDeviceObject, Irp);
|
||||
if (!NT_SUCCESS(ntStatus))
|
||||
{
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_DispatchRead: IoCallDriver fails with status %X\n", ntStatus));
|
||||
|
||||
// if the device was yanked out, then the pipeInformation
|
||||
// field is invalid.
|
||||
// similarly if the request was cancelled, then we need not
|
||||
// invoked reset pipe/device.
|
||||
if((ntStatus != STATUS_CANCELLED) && (ntStatus != STATUS_DEVICE_NOT_CONNECTED))
|
||||
{
|
||||
ntStatus = FreeBT_ResetPipe(DeviceObject, deviceExtension->DataInPipe.PipeHandle);
|
||||
if(!NT_SUCCESS(ntStatus))
|
||||
{
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_DispatchRead: FreeBT_ResetPipe failed\n"));
|
||||
ntStatus = FreeBT_ResetDevice(DeviceObject);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DispatchRead: ntStatus is STATUS_CANCELLED or STATUS_DEVICE_NOT_CONNECTED\n"));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DispatchRead::"));
|
||||
FreeBT_IoIncrement(deviceExtension);
|
||||
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DispatchRead: URB sent to lower driver, IRP is pending\n"));
|
||||
|
||||
// we return STATUS_PENDING and not the status returned by the lower layer.
|
||||
return STATUS_PENDING;
|
||||
|
||||
FreeBT_DispatchRead_Exit:
|
||||
Irp->IoStatus.Status = ntStatus;
|
||||
Irp->IoStatus.Information = 0;
|
||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DispatchRead: Leaving\n"));
|
||||
|
||||
return ntStatus;
|
||||
|
||||
}
|
||||
|
||||
NTSTATUS FreeBT_ReadCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context)
|
||||
{
|
||||
ULONG stageLength;
|
||||
NTSTATUS ntStatus;
|
||||
PIO_STACK_LOCATION nextStack;
|
||||
PFREEBT_RW_CONTEXT rwContext;
|
||||
PDEVICE_EXTENSION deviceExtension;
|
||||
|
||||
deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension;
|
||||
rwContext = (PFREEBT_RW_CONTEXT) Context;
|
||||
ntStatus = Irp->IoStatus.Status;
|
||||
|
||||
UNREFERENCED_PARAMETER(DeviceObject);
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_ReadCompletion: Entered\n"));
|
||||
|
||||
if (NT_SUCCESS(ntStatus))
|
||||
{
|
||||
Irp->IoStatus.Information = rwContext->Urb->UrbBulkOrInterruptTransfer.TransferBufferLength;
|
||||
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
Irp->IoStatus.Information = 0;
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_ReadCompletion: - failed with status = %X\n", ntStatus));
|
||||
|
||||
}
|
||||
|
||||
if (rwContext)
|
||||
{
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_ReadCompletion: ::"));
|
||||
FreeBT_IoDecrement(deviceExtension);
|
||||
|
||||
ExFreePool(rwContext->Urb);
|
||||
IoFreeMdl(rwContext->Mdl);
|
||||
ExFreePool(rwContext);
|
||||
|
||||
}
|
||||
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_ReadCompletion: Leaving\n"));
|
||||
|
||||
return ntStatus;
|
||||
|
||||
}
|
||||
|
||||
// Read/Write handler
|
||||
NTSTATUS FreeBT_DispatchWrite(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
|
||||
{
|
||||
PMDL mdl;
|
||||
PURB urb;
|
||||
ULONG totalLength;
|
||||
ULONG stageLength;
|
||||
NTSTATUS ntStatus;
|
||||
ULONG_PTR virtualAddress;
|
||||
PFILE_OBJECT fileObject;
|
||||
PDEVICE_EXTENSION deviceExtension;
|
||||
PIO_STACK_LOCATION irpStack;
|
||||
PIO_STACK_LOCATION nextStack;
|
||||
PFREEBT_RW_CONTEXT rwContext;
|
||||
ULONG maxLength=0;
|
||||
|
||||
urb = NULL;
|
||||
mdl = NULL;
|
||||
rwContext = NULL;
|
||||
totalLength = 0;
|
||||
irpStack = IoGetCurrentIrpStackLocation(Irp);
|
||||
fileObject = irpStack->FileObject;
|
||||
deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension;
|
||||
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DispatchWrite: Entered\n"));
|
||||
|
||||
if (deviceExtension->DeviceState != Working)
|
||||
{
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_WriteDispatch: Invalid device state\n"));
|
||||
ntStatus = STATUS_INVALID_DEVICE_STATE;
|
||||
goto FreeBT_DispatchWrite_Exit;
|
||||
|
||||
}
|
||||
|
||||
// Make sure that any selective suspend request has been completed.
|
||||
if (deviceExtension->SSEnable)
|
||||
{
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_WriteDispatch: Waiting on the IdleReqPendEvent\n"));
|
||||
KeWaitForSingleObject(&deviceExtension->NoIdleReqPendEvent,
|
||||
Executive,
|
||||
KernelMode,
|
||||
FALSE,
|
||||
NULL);
|
||||
|
||||
}
|
||||
|
||||
rwContext = (PFREEBT_RW_CONTEXT) ExAllocatePool(NonPagedPool, sizeof(FREEBT_RW_CONTEXT));
|
||||
if (rwContext == NULL)
|
||||
{
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: Failed to alloc mem for rwContext\n"));
|
||||
ntStatus = STATUS_INSUFFICIENT_RESOURCES;
|
||||
goto FreeBT_DispatchWrite_Exit;
|
||||
|
||||
}
|
||||
|
||||
if (Irp->MdlAddress)
|
||||
{
|
||||
totalLength = MmGetMdlByteCount(Irp->MdlAddress);
|
||||
|
||||
}
|
||||
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_WriteDispatch: Transfer data length = %d\n", totalLength));
|
||||
if (totalLength>FBT_HCI_DATA_MAX_SIZE)
|
||||
{
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_WriteDispatch: Buffer exceeds maximum packet length (%d), failing IRP\n", FBT_HCI_DATA_MAX_SIZE));
|
||||
ntStatus = STATUS_INVALID_BUFFER_SIZE;
|
||||
ExFreePool(rwContext);
|
||||
goto FreeBT_DispatchWrite_Exit;
|
||||
|
||||
}
|
||||
|
||||
if (totalLength<FBT_HCI_DATA_MIN_SIZE)
|
||||
{
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_WriteDispatch: Zero length buffer, completing IRP\n"));
|
||||
ntStatus = STATUS_BUFFER_TOO_SMALL;
|
||||
ExFreePool(rwContext);
|
||||
goto FreeBT_DispatchWrite_Exit;
|
||||
|
||||
}
|
||||
|
||||
virtualAddress = (ULONG_PTR) MmGetMdlVirtualAddress(Irp->MdlAddress);
|
||||
if (totalLength > deviceExtension->DataOutPipe.MaximumPacketSize)
|
||||
{
|
||||
stageLength = deviceExtension->DataOutPipe.MaximumPacketSize;
|
||||
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
stageLength = totalLength;
|
||||
|
||||
}
|
||||
|
||||
mdl = IoAllocateMdl((PVOID) virtualAddress, totalLength, FALSE, FALSE, NULL);
|
||||
if (mdl == NULL)
|
||||
{
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_WriteDispatch: Failed to alloc mem for mdl\n"));
|
||||
ntStatus = STATUS_INSUFFICIENT_RESOURCES;
|
||||
ExFreePool(rwContext);
|
||||
goto FreeBT_DispatchWrite_Exit;
|
||||
|
||||
}
|
||||
|
||||
// map the portion of user-buffer described by an mdl to another mdl
|
||||
IoBuildPartialMdl(Irp->MdlAddress, mdl, (PVOID) virtualAddress, stageLength);
|
||||
urb = (PURB) ExAllocatePool(NonPagedPool, sizeof(struct _URB_BULK_OR_INTERRUPT_TRANSFER));
|
||||
if (urb == NULL)
|
||||
{
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_WriteDispatch: Failed to alloc mem for urb\n"));
|
||||
ntStatus = STATUS_INSUFFICIENT_RESOURCES;
|
||||
ExFreePool(rwContext);
|
||||
IoFreeMdl(mdl);
|
||||
goto FreeBT_DispatchWrite_Exit;
|
||||
|
||||
}
|
||||
|
||||
UsbBuildInterruptOrBulkTransferRequest(
|
||||
urb,
|
||||
sizeof(struct _URB_BULK_OR_INTERRUPT_TRANSFER),
|
||||
deviceExtension->DataOutPipe.PipeHandle,
|
||||
NULL,
|
||||
mdl,
|
||||
stageLength,
|
||||
USBD_SHORT_TRANSFER_OK | USBD_TRANSFER_DIRECTION_OUT,
|
||||
NULL);
|
||||
|
||||
// set FREEBT_RW_CONTEXT parameters.
|
||||
rwContext->Urb = urb;
|
||||
rwContext->Mdl = mdl;
|
||||
rwContext->Length = totalLength - stageLength;
|
||||
rwContext->Numxfer = 0;
|
||||
rwContext->VirtualAddress = virtualAddress + stageLength;
|
||||
|
||||
// use the original read/write irp as an internal device control irp
|
||||
nextStack = IoGetNextIrpStackLocation(Irp);
|
||||
nextStack->MajorFunction = IRP_MJ_INTERNAL_DEVICE_CONTROL;
|
||||
nextStack->Parameters.Others.Argument1 = (PVOID) urb;
|
||||
nextStack->Parameters.DeviceIoControl.IoControlCode = IOCTL_INTERNAL_USB_SUBMIT_URB;
|
||||
IoSetCompletionRoutine(Irp,
|
||||
(PIO_COMPLETION_ROUTINE)FreeBT_WriteCompletion,
|
||||
rwContext,
|
||||
TRUE,
|
||||
TRUE,
|
||||
TRUE);
|
||||
|
||||
// We return STATUS_PENDING; call IoMarkIrpPending.
|
||||
IoMarkIrpPending(Irp);
|
||||
|
||||
ntStatus = IoCallDriver(deviceExtension->TopOfStackDeviceObject, Irp);
|
||||
if (!NT_SUCCESS(ntStatus))
|
||||
{
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_WriteDispatch: IoCallDriver fails with status %X\n", ntStatus));
|
||||
|
||||
// if the device was yanked out, then the pipeInformation
|
||||
// field is invalid.
|
||||
// similarly if the request was cancelled, then we need not
|
||||
// invoked reset pipe/device.
|
||||
if((ntStatus != STATUS_CANCELLED) && (ntStatus != STATUS_DEVICE_NOT_CONNECTED))
|
||||
{
|
||||
ntStatus = FreeBT_ResetPipe(DeviceObject, deviceExtension->DataOutPipe.PipeHandle);
|
||||
if(!NT_SUCCESS(ntStatus))
|
||||
{
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_ResetPipe failed\n"));
|
||||
ntStatus = FreeBT_ResetDevice(DeviceObject);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: ntStatus is STATUS_CANCELLED or STATUS_DEVICE_NOT_CONNECTED\n"));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DispatchWrite::"));
|
||||
FreeBT_IoIncrement(deviceExtension);
|
||||
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DispatchWrite: URB sent to lower driver, IRP is pending\n"));
|
||||
|
||||
// we return STATUS_PENDING and not the status returned by the lower layer.
|
||||
return STATUS_PENDING;
|
||||
|
||||
FreeBT_DispatchWrite_Exit:
|
||||
Irp->IoStatus.Status = ntStatus;
|
||||
Irp->IoStatus.Information = 0;
|
||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DispatchWrite: Leaving\n"));
|
||||
|
||||
return ntStatus;
|
||||
|
||||
}
|
||||
|
||||
NTSTATUS FreeBT_WriteCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context)
|
||||
{
|
||||
ULONG stageLength;
|
||||
NTSTATUS ntStatus;
|
||||
PIO_STACK_LOCATION nextStack;
|
||||
PFREEBT_RW_CONTEXT rwContext;
|
||||
PDEVICE_EXTENSION deviceExtension;
|
||||
|
||||
deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension;
|
||||
rwContext = (PFREEBT_RW_CONTEXT) Context;
|
||||
ntStatus = Irp->IoStatus.Status;
|
||||
|
||||
UNREFERENCED_PARAMETER(DeviceObject);
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_WriteCompletion: Entered\n"));
|
||||
|
||||
if (NT_SUCCESS(ntStatus))
|
||||
{
|
||||
if (rwContext)
|
||||
{
|
||||
rwContext->Numxfer += rwContext->Urb->UrbBulkOrInterruptTransfer.TransferBufferLength;
|
||||
if (rwContext->Length)
|
||||
{
|
||||
// More data to transfer
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_WriteCompletion: Initiating next transfer\n"));
|
||||
if (rwContext->Length > deviceExtension->DataOutPipe.MaximumPacketSize)
|
||||
{
|
||||
stageLength = deviceExtension->DataOutPipe.MaximumPacketSize;
|
||||
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
stageLength = rwContext->Length;
|
||||
|
||||
}
|
||||
|
||||
IoBuildPartialMdl(Irp->MdlAddress, rwContext->Mdl, (PVOID) rwContext->VirtualAddress, stageLength);
|
||||
|
||||
// reinitialize the urb
|
||||
rwContext->Urb->UrbBulkOrInterruptTransfer.TransferBufferLength = stageLength;
|
||||
rwContext->VirtualAddress += stageLength;
|
||||
rwContext->Length -= stageLength;
|
||||
|
||||
nextStack = IoGetNextIrpStackLocation(Irp);
|
||||
nextStack->MajorFunction = IRP_MJ_INTERNAL_DEVICE_CONTROL;
|
||||
nextStack->Parameters.Others.Argument1 = rwContext->Urb;
|
||||
nextStack->Parameters.DeviceIoControl.IoControlCode = IOCTL_INTERNAL_USB_SUBMIT_URB;
|
||||
|
||||
IoSetCompletionRoutine(Irp,
|
||||
FreeBT_ReadCompletion,
|
||||
rwContext,
|
||||
TRUE,
|
||||
TRUE,
|
||||
TRUE);
|
||||
|
||||
IoCallDriver(deviceExtension->TopOfStackDeviceObject, Irp);
|
||||
|
||||
return STATUS_MORE_PROCESSING_REQUIRED;
|
||||
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
// No more data to transfer
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: FreeNT_WriteCompletion: Write completed, %d bytes written\n", Irp->IoStatus.Information));
|
||||
Irp->IoStatus.Information = rwContext->Numxfer;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: FreeNT_WriteCompletion - failed with status = %X\n", ntStatus));
|
||||
|
||||
}
|
||||
|
||||
if (rwContext)
|
||||
{
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_WriteCompletion: ::"));
|
||||
FreeBT_IoDecrement(deviceExtension);
|
||||
|
||||
ExFreePool(rwContext->Urb);
|
||||
IoFreeMdl(rwContext->Mdl);
|
||||
ExFreePool(rwContext);
|
||||
|
||||
}
|
||||
|
||||
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_WriteCompletion: Leaving\n"));
|
||||
|
||||
return ntStatus;
|
||||
|
||||
}
|
||||
|
341
drivers/bluetooth/fbtusb/fbtusb.c
Executable file
|
@ -0,0 +1,341 @@
|
|||
// Copyright (c) 2004, Antony C. Roberts
|
||||
|
||||
// Use of this file is subject to the terms
|
||||
// described in the LICENSE.TXT file that
|
||||
// accompanies this file.
|
||||
//
|
||||
// Your use of this file indicates your
|
||||
// acceptance of the terms described in
|
||||
// LICENSE.TXT.
|
||||
//
|
||||
// http://www.freebt.net
|
||||
|
||||
#include "stdio.h"
|
||||
#include "fbtusb.h"
|
||||
#include "fbtpnp.h"
|
||||
#include "fbtpwr.h"
|
||||
#include "fbtdev.h"
|
||||
#include "fbtwmi.h"
|
||||
#include "fbtrwr.h"
|
||||
|
||||
#include "fbtusr.h"
|
||||
|
||||
|
||||
// Globals
|
||||
GLOBALS Globals;
|
||||
ULONG DebugLevel=255;
|
||||
|
||||
// Forward declaration
|
||||
NTSTATUS NTAPI DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING UniRegistryPath );
|
||||
VOID NTAPI FreeBT_DriverUnload(IN PDRIVER_OBJECT DriverObject);
|
||||
NTSTATUS NTAPI FreeBT_AddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject);
|
||||
|
||||
#ifdef PAGE_CODE
|
||||
#ifdef ALLOC_PRAGMA
|
||||
#pragma alloc_text(INIT, DriverEntry)
|
||||
#pragma alloc_text(PAGE, FreeBT_DriverUnload)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
NTSTATUS NTAPI DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING UniRegistryPath)
|
||||
{
|
||||
NTSTATUS ntStatus;
|
||||
PUNICODE_STRING registryPath;
|
||||
|
||||
registryPath = &Globals.FreeBT_RegistryPath;
|
||||
|
||||
registryPath->MaximumLength = UniRegistryPath->Length + sizeof(UNICODE_NULL);
|
||||
registryPath->Length = UniRegistryPath->Length;
|
||||
registryPath->Buffer = (PWSTR) ExAllocatePool(PagedPool, registryPath->MaximumLength);
|
||||
|
||||
if (!registryPath->Buffer)
|
||||
{
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: Failed to allocate memory for registryPath\n"));
|
||||
ntStatus = STATUS_INSUFFICIENT_RESOURCES;
|
||||
goto DriverEntry_Exit;
|
||||
|
||||
}
|
||||
|
||||
|
||||
RtlZeroMemory (registryPath->Buffer, registryPath->MaximumLength);
|
||||
RtlMoveMemory (registryPath->Buffer, UniRegistryPath->Buffer, UniRegistryPath->Length);
|
||||
|
||||
ntStatus = STATUS_SUCCESS;
|
||||
|
||||
// Initialize the driver object with this driver's entry points.
|
||||
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = FreeBT_DispatchDevCtrl;
|
||||
DriverObject->MajorFunction[IRP_MJ_POWER] = FreeBT_DispatchPower;
|
||||
DriverObject->MajorFunction[IRP_MJ_PNP] = FreeBT_DispatchPnP;
|
||||
DriverObject->MajorFunction[IRP_MJ_CREATE] = FreeBT_DispatchCreate;
|
||||
DriverObject->MajorFunction[IRP_MJ_CLOSE] = FreeBT_DispatchClose;
|
||||
DriverObject->MajorFunction[IRP_MJ_CLEANUP] = FreeBT_DispatchClean;
|
||||
DriverObject->MajorFunction[IRP_MJ_READ] = FreeBT_DispatchRead;
|
||||
DriverObject->MajorFunction[IRP_MJ_WRITE] = FreeBT_DispatchWrite;
|
||||
#ifdef ENABLE_WMI
|
||||
DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL] = FreeBT_DispatchSysCtrl;
|
||||
#endif
|
||||
DriverObject->DriverUnload = FreeBT_DriverUnload;
|
||||
DriverObject->DriverExtension->AddDevice = (PDRIVER_ADD_DEVICE) FreeBT_AddDevice;
|
||||
|
||||
DriverEntry_Exit:
|
||||
return ntStatus;
|
||||
|
||||
}
|
||||
|
||||
VOID NTAPI FreeBT_DriverUnload(IN PDRIVER_OBJECT DriverObject)
|
||||
{
|
||||
PUNICODE_STRING registryPath;
|
||||
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DriverUnload: Entered\n"));
|
||||
|
||||
registryPath = &Globals.FreeBT_RegistryPath;
|
||||
if(registryPath->Buffer)
|
||||
{
|
||||
ExFreePool(registryPath->Buffer);
|
||||
registryPath->Buffer = NULL;
|
||||
|
||||
}
|
||||
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DriverUnload: Leaving\n"));
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
// AddDevice, called when an instance of our supported hardware is found
|
||||
// Returning anything other than NT_SUCCESS here causes the device to fail
|
||||
// to initialise
|
||||
NTSTATUS NTAPI FreeBT_AddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject)
|
||||
{
|
||||
NTSTATUS ntStatus;
|
||||
PDEVICE_OBJECT deviceObject;
|
||||
PDEVICE_EXTENSION deviceExtension;
|
||||
POWER_STATE state;
|
||||
KIRQL oldIrql;
|
||||
UNICODE_STRING uniDeviceName;
|
||||
WCHAR wszDeviceName[255]={0};
|
||||
UNICODE_STRING uniDosDeviceName;
|
||||
LONG instanceNumber=0;
|
||||
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_AddDevice: Entered\n"));
|
||||
|
||||
deviceObject = NULL;
|
||||
|
||||
swprintf(wszDeviceName, L"\\Device\\FbtUsb%02d", instanceNumber);
|
||||
RtlInitUnicodeString(&uniDeviceName, wszDeviceName);
|
||||
ntStatus=STATUS_OBJECT_NAME_COLLISION;
|
||||
while (instanceNumber<99 && !NT_SUCCESS(ntStatus))
|
||||
{
|
||||
swprintf(wszDeviceName, L"\\Device\\FbtUsb%02d", instanceNumber);
|
||||
uniDeviceName.Length = wcslen(wszDeviceName) * sizeof(WCHAR);
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: Attempting to create device %ws\n", wszDeviceName));
|
||||
ntStatus = IoCreateDevice(
|
||||
DriverObject, // our driver object
|
||||
sizeof(DEVICE_EXTENSION), // extension size for us
|
||||
&uniDeviceName, // name for this device
|
||||
FILE_DEVICE_UNKNOWN,
|
||||
0, // device characteristics
|
||||
FALSE, // Not exclusive
|
||||
&deviceObject); // Our device object
|
||||
|
||||
if (!NT_SUCCESS(ntStatus))
|
||||
instanceNumber++;
|
||||
|
||||
}
|
||||
|
||||
if (!NT_SUCCESS(ntStatus))
|
||||
{
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: Failed to create device object\n"));
|
||||
return ntStatus;
|
||||
|
||||
}
|
||||
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: Created device %ws\n", wszDeviceName));
|
||||
|
||||
deviceExtension = (PDEVICE_EXTENSION) deviceObject->DeviceExtension;
|
||||
deviceExtension->FunctionalDeviceObject = deviceObject;
|
||||
deviceExtension->PhysicalDeviceObject = PhysicalDeviceObject;
|
||||
deviceObject->Flags |= DO_DIRECT_IO;
|
||||
|
||||
swprintf(deviceExtension->wszDosDeviceName, L"\\DosDevices\\FbtUsb%02d", instanceNumber);
|
||||
RtlInitUnicodeString(&uniDosDeviceName, deviceExtension->wszDosDeviceName);
|
||||
ntStatus=IoCreateSymbolicLink(&uniDosDeviceName, &uniDeviceName);
|
||||
if (!NT_SUCCESS(ntStatus))
|
||||
{
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: Failed to create symbolic link %ws to %ws, status=0x%08x\n", deviceExtension->wszDosDeviceName, wszDeviceName, ntStatus));
|
||||
IoDeleteDevice(deviceObject);
|
||||
return ntStatus;
|
||||
|
||||
}
|
||||
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: Created symbolic link %ws\n", deviceExtension->wszDosDeviceName));
|
||||
|
||||
KeInitializeSpinLock(&deviceExtension->DevStateLock);
|
||||
|
||||
INITIALIZE_PNP_STATE(deviceExtension);
|
||||
|
||||
deviceExtension->OpenHandleCount = 0;
|
||||
|
||||
// Initialize the selective suspend variables
|
||||
KeInitializeSpinLock(&deviceExtension->IdleReqStateLock);
|
||||
deviceExtension->IdleReqPend = 0;
|
||||
deviceExtension->PendingIdleIrp = NULL;
|
||||
|
||||
// Hold requests until the device is started
|
||||
deviceExtension->QueueState = HoldRequests;
|
||||
|
||||
// Initialize the queue and the queue spin lock
|
||||
InitializeListHead(&deviceExtension->NewRequestsQueue);
|
||||
KeInitializeSpinLock(&deviceExtension->QueueLock);
|
||||
|
||||
// Initialize the remove event to not-signaled.
|
||||
KeInitializeEvent(&deviceExtension->RemoveEvent, SynchronizationEvent, FALSE);
|
||||
|
||||
// Initialize the stop event to signaled.
|
||||
// This event is signaled when the OutstandingIO becomes 1
|
||||
KeInitializeEvent(&deviceExtension->StopEvent, SynchronizationEvent, TRUE);
|
||||
|
||||
// OutstandingIo count biased to 1.
|
||||
// Transition to 0 during remove device means IO is finished.
|
||||
// Transition to 1 means the device can be stopped
|
||||
deviceExtension->OutStandingIO = 1;
|
||||
KeInitializeSpinLock(&deviceExtension->IOCountLock);
|
||||
|
||||
#ifdef ENABLE_WMI
|
||||
// Delegating to WMILIB
|
||||
ntStatus = FreeBT_WmiRegistration(deviceExtension);
|
||||
if (!NT_SUCCESS(ntStatus))
|
||||
{
|
||||
FreeBT_DbgPrint(1, ("FBTUSB: FreeBT_WmiRegistration failed with %X\n", ntStatus));
|
||||
IoDeleteDevice(deviceObject);
|
||||
IoDeleteSymbolicLink(&uniDosDeviceName);
|
||||
return ntStatus;
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
// Set the flags as underlying PDO
|
||||
if (PhysicalDeviceObject->Flags & DO_POWER_PAGABLE)
|
||||
{
|
||||
deviceObject->Flags |= DO_POWER_PAGABLE;
|
||||
|
||||
}
|
||||
|
||||
// Typically, the function driver for a device is its
|
||||
// power policy owner, although for some devices another
|
||||
// driver or system component may assume this role.
|
||||
// Set the initial power state of the device, if known, by calling
|
||||
// PoSetPowerState.
|
||||
deviceExtension->DevPower = PowerDeviceD0;
|
||||
deviceExtension->SysPower = PowerSystemWorking;
|
||||
|
||||
state.DeviceState = PowerDeviceD0;
|
||||
PoSetPowerState(deviceObject, DevicePowerState, state);
|
||||
|
||||
// attach our driver to device stack
|
||||
// The return value of IoAttachDeviceToDeviceStack is the top of the
|
||||
// attachment chain. This is where all the IRPs should be routed.
|
||||
deviceExtension->TopOfStackDeviceObject = IoAttachDeviceToDeviceStack(deviceObject, PhysicalDeviceObject);
|
||||
if (NULL == deviceExtension->TopOfStackDeviceObject)
|
||||
{
|
||||
#ifdef ENABLE_WMI
|
||||
FreeBT_WmiDeRegistration(deviceExtension);
|
||||
#endif
|
||||
IoDeleteDevice(deviceObject);
|
||||
IoDeleteSymbolicLink(&uniDosDeviceName);
|
||||
return STATUS_NO_SUCH_DEVICE;
|
||||
|
||||
}
|
||||
|
||||
// Register device interfaces
|
||||
ntStatus = IoRegisterDeviceInterface(deviceExtension->PhysicalDeviceObject,
|
||||
&GUID_CLASS_FREEBT_USB,
|
||||
NULL,
|
||||
&deviceExtension->InterfaceName);
|
||||
if (!NT_SUCCESS(ntStatus))
|
||||
{
|
||||
#ifdef ENABLE_WMI
|
||||
FreeBT_WmiDeRegistration(deviceExtension);
|
||||
#endif
|
||||
IoDetachDevice(deviceExtension->TopOfStackDeviceObject);
|
||||
IoDeleteDevice(deviceObject);
|
||||
IoDeleteSymbolicLink(&uniDosDeviceName);
|
||||
return ntStatus;
|
||||
|
||||
}
|
||||
|
||||
if (IoIsWdmVersionAvailable(1, 0x20))
|
||||
{
|
||||
deviceExtension->WdmVersion = WinXpOrBetter;
|
||||
|
||||
}
|
||||
|
||||
else if (IoIsWdmVersionAvailable(1, 0x10))
|
||||
{
|
||||
deviceExtension->WdmVersion = Win2kOrBetter;
|
||||
|
||||
}
|
||||
|
||||
else if (IoIsWdmVersionAvailable(1, 0x5))
|
||||
{
|
||||
deviceExtension->WdmVersion = WinMeOrBetter;
|
||||
|
||||
}
|
||||
|
||||
else if (IoIsWdmVersionAvailable(1, 0x0))
|
||||
{
|
||||
deviceExtension->WdmVersion = Win98OrBetter;
|
||||
|
||||
}
|
||||
|
||||
deviceExtension->SSRegistryEnable = 0;
|
||||
deviceExtension->SSEnable = 0;
|
||||
|
||||
// WinXP only: check the registry flag indicating whether
|
||||
// the device should selectively suspend when idle
|
||||
if (WinXpOrBetter == deviceExtension->WdmVersion)
|
||||
{
|
||||
FreeBT_GetRegistryDword(FREEBT_REGISTRY_PARAMETERS_PATH,
|
||||
L"BulkUsbEnable",
|
||||
(PULONG)(&deviceExtension->SSRegistryEnable));
|
||||
if (deviceExtension->SSRegistryEnable)
|
||||
{
|
||||
// initialize DPC
|
||||
KeInitializeDpc(&deviceExtension->DeferredProcCall, DpcRoutine, deviceObject);
|
||||
|
||||
// initialize the timer.
|
||||
// the DPC and the timer in conjunction,
|
||||
// monitor the state of the device to
|
||||
// selectively suspend the device.
|
||||
KeInitializeTimerEx(&deviceExtension->Timer, NotificationTimer);
|
||||
|
||||
// Initialize the NoDpcWorkItemPendingEvent to signaled state.
|
||||
// This event is cleared when a Dpc is fired and signaled
|
||||
// on completion of the work-item.
|
||||
KeInitializeEvent(&deviceExtension->NoDpcWorkItemPendingEvent, NotificationEvent, TRUE);
|
||||
|
||||
// Initialize the NoIdleReqPendEvent to ensure that the idle request
|
||||
// is indeed complete before we unload the drivers.
|
||||
KeInitializeEvent(&deviceExtension->NoIdleReqPendEvent, NotificationEvent, TRUE);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Initialize the NoIdleReqPendEvent to ensure that the idle request
|
||||
// is indeed complete before we unload the drivers.
|
||||
KeInitializeEvent(&deviceExtension->DelayEvent, NotificationEvent, FALSE);
|
||||
|
||||
// Clear the DO_DEVICE_INITIALIZING flag.
|
||||
// Note: Do not clear this flag until the driver has set the
|
||||
// device power state and the power DO flags.
|
||||
deviceObject->Flags &= ~DO_DEVICE_INITIALIZING;
|
||||
InterlockedIncrement(&instanceNumber);
|
||||
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_AddDevice: Leaving\n"));
|
||||
|
||||
return ntStatus;
|
||||
|
||||
}
|
||||
|
||||
|
15
drivers/bluetooth/fbtusb/fbtusb.rbuild
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
|
||||
<module name="fbtusb" type="kernelmodedriver" installbase="system32/drivers" installname="fbtusb.sys" allowwarnings="true">
|
||||
<include base="fbtusb">include</include>
|
||||
<library>ntoskrnl</library>
|
||||
<library>hal</library>
|
||||
<library>usbd</library>
|
||||
<file>fbtdev.c</file>
|
||||
<file>fbtpnp.c</file>
|
||||
<file>fbtpwr.c</file>
|
||||
<file>fbtrwr.c</file>
|
||||
<file>fbtusb.c</file>
|
||||
<!--file>fbtwmi.c</file-->
|
||||
<file>fbtusb.rc</file>
|
||||
</module>
|
5
drivers/bluetooth/fbtusb/fbtusb.rc
Normal file
|
@ -0,0 +1,5 @@
|
|||
#define REACTOS_VERSION_DLL
|
||||
#define REACTOS_STR_FILE_DESCRIPTION "Generic USB Bluetooth Driver\0"
|
||||
#define REACTOS_STR_INTERNAL_NAME "fbtusb\0"
|
||||
#define REACTOS_STR_ORIGINAL_FILENAME "fbtusb.sys\0"
|
||||
#include <reactos/version.rc>
|
548
drivers/bluetooth/fbtusb/fbtwmi.c
Executable file
|
@ -0,0 +1,548 @@
|
|||
// Copyright (c) 2004, Antony C. Roberts
|
||||
|
||||
// Use of this file is subject to the terms
|
||||
// described in the LICENSE.TXT file that
|
||||
// accompanies this file.
|
||||
//
|
||||
// Your use of this file indicates your
|
||||
// acceptance of the terms described in
|
||||
// LICENSE.TXT.
|
||||
//
|
||||
// http://www.freebt.net
|
||||
|
||||
#include "fbtusb.h"
|
||||
#include "fbtpwr.h"
|
||||
#include "fbtpnp.h"
|
||||
#include "fbtdev.h"
|
||||
#include "fbtrwr.h"
|
||||
#include "fbtwmi.h"
|
||||
|
||||
#include "fbtusr.h"
|
||||
|
||||
#define MOFRESOURCENAME L"MofResourceName"
|
||||
|
||||
#define WMI_FREEBT_DRIVER_INFORMATION 0
|
||||
|
||||
DEFINE_GUID (FREEBT_WMI_STD_DATA_GUID, 0x871B1A60, 0xD3EA, 0x4f2f, 0x81, 0x7b, 0x46, 0x5e, 0x44, 0x86, 0x7b, 0xf5);
|
||||
|
||||
WMIGUIDREGINFO FreeBTWmiGuidList[1] =
|
||||
{
|
||||
{
|
||||
&FREEBT_WMI_STD_DATA_GUID, 1, 0 // driver information
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
NTSTATUS FreeBT_WmiRegistration(IN OUT PDEVICE_EXTENSION DeviceExtension)
|
||||
{
|
||||
NTSTATUS ntStatus;
|
||||
|
||||
PAGED_CODE();
|
||||
|
||||
DeviceExtension->WmiLibInfo.GuidCount = sizeof (FreeBTWmiGuidList) / sizeof (WMIGUIDREGINFO);
|
||||
DeviceExtension->WmiLibInfo.GuidList = FreeBTWmiGuidList;
|
||||
DeviceExtension->WmiLibInfo.QueryWmiRegInfo = FreeBT_QueryWmiRegInfo;
|
||||
DeviceExtension->WmiLibInfo.QueryWmiDataBlock = FreeBT_QueryWmiDataBlock;
|
||||
DeviceExtension->WmiLibInfo.SetWmiDataBlock = FreeBT_SetWmiDataBlock;
|
||||
DeviceExtension->WmiLibInfo.SetWmiDataItem = FreeBT_SetWmiDataItem;
|
||||
DeviceExtension->WmiLibInfo.ExecuteWmiMethod = NULL;
|
||||
DeviceExtension->WmiLibInfo.WmiFunctionControl = NULL;
|
||||
|
||||
// Register with WMI
|
||||
ntStatus = IoWMIRegistrationControl(DeviceExtension->FunctionalDeviceObject, WMIREG_ACTION_REGISTER);
|
||||
|
||||
return ntStatus;
|
||||
|
||||
}
|
||||
|
||||
NTSTATUS FreeBT_WmiDeRegistration(IN OUT PDEVICE_EXTENSION DeviceExtension)
|
||||
{
|
||||
PAGED_CODE();
|
||||
return IoWMIRegistrationControl(DeviceExtension->FunctionalDeviceObject, WMIREG_ACTION_DEREGISTER);
|
||||
|
||||
}
|
||||
|
||||
NTSTATUS FreeBT_DispatchSysCtrl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
|
||||
{
|
||||
PDEVICE_EXTENSION deviceExtension;
|
||||
SYSCTL_IRP_DISPOSITION disposition;
|
||||
NTSTATUS ntStatus;
|
||||
PIO_STACK_LOCATION irpStack;
|
||||
|
||||
PAGED_CODE();
|
||||
|
||||
irpStack = IoGetCurrentIrpStackLocation (Irp);
|
||||
deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension;
|
||||
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: "));
|
||||
FreeBT_DbgPrint(3, (WMIMinorFunctionString(irpStack->MinorFunction)));
|
||||
if (Removed == deviceExtension->DeviceState)
|
||||
{
|
||||
ntStatus = STATUS_DELETE_PENDING;
|
||||
|
||||
Irp->IoStatus.Status = ntStatus;
|
||||
Irp->IoStatus.Information = 0;
|
||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||
|
||||
return ntStatus;
|
||||
|
||||
}
|
||||
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DispatchSysCtrl::"));
|
||||
FreeBT_IoIncrement(deviceExtension);
|
||||
|
||||
ntStatus = WmiSystemControl(&deviceExtension->WmiLibInfo,
|
||||
DeviceObject,
|
||||
Irp,
|
||||
&disposition);
|
||||
|
||||
switch(disposition)
|
||||
{
|
||||
case IrpProcessed:
|
||||
{
|
||||
// This irp has been processed and may be completed or pending.
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
case IrpNotCompleted:
|
||||
{
|
||||
// This irp has not been completed, but has been fully processed.
|
||||
// we will complete it now
|
||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
case IrpForward:
|
||||
case IrpNotWmi:
|
||||
{
|
||||
// This irp is either not a WMI irp or is a WMI irp targeted
|
||||
// at a device lower in the stack.
|
||||
IoSkipCurrentIrpStackLocation (Irp);
|
||||
ntStatus = IoCallDriver(deviceExtension->TopOfStackDeviceObject, Irp);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
// We really should never get here, but if we do just forward....
|
||||
ASSERT(FALSE);
|
||||
IoSkipCurrentIrpStackLocation (Irp);
|
||||
ntStatus = IoCallDriver(deviceExtension->TopOfStackDeviceObject, Irp);
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_DispatchSysCtrl::"));
|
||||
FreeBT_IoDecrement(deviceExtension);
|
||||
|
||||
return ntStatus;
|
||||
|
||||
}
|
||||
|
||||
NTSTATUS FreeBT_QueryWmiRegInfo(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
OUT ULONG *RegFlags,
|
||||
OUT PUNICODE_STRING InstanceName,
|
||||
OUT PUNICODE_STRING *RegistryPath,
|
||||
OUT PUNICODE_STRING MofResourceName,
|
||||
OUT PDEVICE_OBJECT *Pdo
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
This routine is a callback into the driver to retrieve the list of
|
||||
guids or data blocks that the driver wants to register with WMI. This
|
||||
routine may not pend or block. Driver should NOT call
|
||||
WmiCompleteRequest.
|
||||
|
||||
Arguments:
|
||||
|
||||
DeviceObject is the device whose data block is being queried
|
||||
|
||||
*RegFlags returns with a set of flags that describe the guids being
|
||||
registered for this device. If the device wants enable and disable
|
||||
collection callbacks before receiving queries for the registered
|
||||
guids then it should return the WMIREG_FLAG_EXPENSIVE flag. Also the
|
||||
returned flags may specify WMIREG_FLAG_INSTANCE_PDO in which case
|
||||
the instance name is determined from the PDO associated with the
|
||||
device object. Note that the PDO must have an associated devnode. If
|
||||
WMIREG_FLAG_INSTANCE_PDO is not set then Name must return a unique
|
||||
name for the device.
|
||||
|
||||
InstanceName returns with the instance name for the guids if
|
||||
WMIREG_FLAG_INSTANCE_PDO is not set in the returned *RegFlags. The
|
||||
caller will call ExFreePool with the buffer returned.
|
||||
|
||||
*RegistryPath returns with the registry path of the driver
|
||||
|
||||
*MofResourceName returns with the name of the MOF resource attached to
|
||||
the binary file. If the driver does not have a mof resource attached
|
||||
then this can be returned as NULL.
|
||||
|
||||
*Pdo returns with the device object for the PDO associated with this
|
||||
device if the WMIREG_FLAG_INSTANCE_PDO flag is returned in
|
||||
*RegFlags.
|
||||
|
||||
Return Value:
|
||||
|
||||
status
|
||||
|
||||
--*/
|
||||
{
|
||||
PDEVICE_EXTENSION deviceExtension;
|
||||
|
||||
PAGED_CODE();
|
||||
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_QueryWmiRegInfo: Entered\n"));
|
||||
|
||||
deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension;
|
||||
|
||||
*RegFlags = WMIREG_FLAG_INSTANCE_PDO;
|
||||
*RegistryPath = &Globals.FreeBT_RegistryPath;
|
||||
*Pdo = deviceExtension->PhysicalDeviceObject;
|
||||
RtlInitUnicodeString(MofResourceName, MOFRESOURCENAME);
|
||||
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_QueryWmiRegInfo: Leaving\n"));
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
|
||||
}
|
||||
|
||||
NTSTATUS FreeBT_QueryWmiDataBlock(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp,
|
||||
IN ULONG GuidIndex,
|
||||
IN ULONG InstanceIndex,
|
||||
IN ULONG InstanceCount,
|
||||
IN OUT PULONG InstanceLengthArray,
|
||||
IN ULONG OutBufferSize,
|
||||
OUT PUCHAR Buffer
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
This routine is a callback into the driver to query for the contents of
|
||||
a data block. When the driver has finished filling the data block it
|
||||
must call WmiCompleteRequest to complete the irp. The driver can
|
||||
return STATUS_PENDING if the irp cannot be completed immediately.
|
||||
|
||||
Arguments:
|
||||
|
||||
DeviceObject is the device whose data block is being queried
|
||||
|
||||
Irp is the Irp that makes this request
|
||||
|
||||
GuidIndex is the index into the list of guids provided when the
|
||||
device registered
|
||||
|
||||
InstanceIndex is the index that denotes which instance of the data block
|
||||
is being queried.
|
||||
|
||||
InstanceCount is the number of instances expected to be returned for
|
||||
the data block.
|
||||
|
||||
InstanceLengthArray is a pointer to an array of ULONG that returns the
|
||||
lengths of each instance of the data block. If this is NULL then
|
||||
there was not enough space in the output buffer to fulfill the request
|
||||
so the irp should be completed with the buffer needed.
|
||||
|
||||
OutBufferSize has the maximum size available to write the data
|
||||
block.
|
||||
|
||||
Buffer on return is filled with the returned data block
|
||||
|
||||
|
||||
Return Value:
|
||||
|
||||
status
|
||||
|
||||
--*/
|
||||
{
|
||||
PDEVICE_EXTENSION deviceExtension;
|
||||
NTSTATUS ntStatus;
|
||||
ULONG size;
|
||||
WCHAR modelName[] = L"Aishverya\0\0";
|
||||
USHORT modelNameLen;
|
||||
|
||||
PAGED_CODE();
|
||||
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_QueryWmiDataBlock: Entered\n"));
|
||||
|
||||
size = 0;
|
||||
modelNameLen = (wcslen(modelName) + 1) * sizeof(WCHAR);
|
||||
|
||||
// Only ever registers 1 instance per guid
|
||||
ASSERT((InstanceIndex == 0) && (InstanceCount == 1));
|
||||
|
||||
deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension;
|
||||
switch (GuidIndex)
|
||||
{
|
||||
case WMI_FREEBT_DRIVER_INFORMATION:
|
||||
size = sizeof(ULONG) + modelNameLen + sizeof(USHORT);
|
||||
if (OutBufferSize < size )
|
||||
{
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: OutBuffer too small\n"));
|
||||
ntStatus = STATUS_BUFFER_TOO_SMALL;
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
* (PULONG) Buffer = DebugLevel;
|
||||
Buffer += sizeof(ULONG);
|
||||
|
||||
// put length of string ahead of string
|
||||
*((PUSHORT)Buffer) = modelNameLen;
|
||||
Buffer = (PUCHAR)Buffer + sizeof(USHORT);
|
||||
RtlCopyBytes((PVOID)Buffer, (PVOID)modelName, modelNameLen);
|
||||
*InstanceLengthArray = size ;
|
||||
|
||||
ntStatus = STATUS_SUCCESS;
|
||||
break;
|
||||
|
||||
default:
|
||||
ntStatus = STATUS_WMI_GUID_NOT_FOUND;
|
||||
|
||||
}
|
||||
|
||||
ntStatus = WmiCompleteRequest(DeviceObject,
|
||||
Irp,
|
||||
ntStatus,
|
||||
size,
|
||||
IO_NO_INCREMENT);
|
||||
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_QueryWmiDataBlock: Leaving\n"));
|
||||
|
||||
return ntStatus;
|
||||
|
||||
}
|
||||
|
||||
|
||||
NTSTATUS FreeBT_SetWmiDataItem(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp,
|
||||
IN ULONG GuidIndex,
|
||||
IN ULONG InstanceIndex,
|
||||
IN ULONG DataItemId,
|
||||
IN ULONG BufferSize,
|
||||
IN PUCHAR Buffer
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
This routine is a callback into the driver to set for the contents of
|
||||
a data block. When the driver has finished filling the data block it
|
||||
must call WmiCompleteRequest to complete the irp. The driver can
|
||||
return STATUS_PENDING if the irp cannot be completed immediately.
|
||||
|
||||
Arguments:
|
||||
|
||||
DeviceObject is the device whose data block is being queried
|
||||
|
||||
Irp is the Irp that makes this request
|
||||
|
||||
GuidIndex is the index into the list of guids provided when the
|
||||
device registered
|
||||
|
||||
InstanceIndex is the index that denotes which instance of the data block
|
||||
is being queried.
|
||||
|
||||
DataItemId has the id of the data item being set
|
||||
|
||||
BufferSize has the size of the data item passed
|
||||
|
||||
Buffer has the new values for the data item
|
||||
|
||||
|
||||
Return Value:
|
||||
|
||||
status
|
||||
|
||||
--*/
|
||||
{
|
||||
PDEVICE_EXTENSION deviceExtension;
|
||||
NTSTATUS ntStatus;
|
||||
ULONG info;
|
||||
|
||||
PAGED_CODE();
|
||||
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_SetWmiDataItem: Entered\n"));
|
||||
|
||||
deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension;
|
||||
info = 0;
|
||||
|
||||
switch(GuidIndex)
|
||||
{
|
||||
case WMI_FREEBT_DRIVER_INFORMATION:
|
||||
if(DataItemId == 1)
|
||||
{
|
||||
if(BufferSize == sizeof(ULONG))
|
||||
{
|
||||
DebugLevel = *((PULONG)Buffer);
|
||||
ntStatus = STATUS_SUCCESS;
|
||||
info = sizeof(ULONG);
|
||||
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
ntStatus = STATUS_INFO_LENGTH_MISMATCH;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
ntStatus = STATUS_WMI_READ_ONLY;
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
ntStatus = STATUS_WMI_GUID_NOT_FOUND;
|
||||
|
||||
}
|
||||
|
||||
ntStatus = WmiCompleteRequest(DeviceObject,
|
||||
Irp,
|
||||
ntStatus,
|
||||
info,
|
||||
IO_NO_INCREMENT);
|
||||
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_SetWmiDataItem: Leaving\n"));
|
||||
|
||||
return ntStatus;
|
||||
|
||||
}
|
||||
|
||||
NTSTATUS FreeBT_SetWmiDataBlock(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp,
|
||||
IN ULONG GuidIndex,
|
||||
IN ULONG InstanceIndex,
|
||||
IN ULONG BufferSize,
|
||||
IN PUCHAR Buffer
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
This routine is a callback into the driver to set the contents of
|
||||
a data block. When the driver has finished filling the data block it
|
||||
must call WmiCompleteRequest to complete the irp. The driver can
|
||||
return STATUS_PENDING if the irp cannot be completed immediately.
|
||||
|
||||
Arguments:
|
||||
|
||||
DeviceObject is the device whose data block is being queried
|
||||
|
||||
Irp is the Irp that makes this request
|
||||
|
||||
GuidIndex is the index into the list of guids provided when the
|
||||
device registered
|
||||
|
||||
InstanceIndex is the index that denotes which instance of the data block
|
||||
is being queried.
|
||||
|
||||
BufferSize has the size of the data block passed
|
||||
|
||||
Buffer has the new values for the data block
|
||||
|
||||
--*/
|
||||
{
|
||||
PDEVICE_EXTENSION deviceExtension;
|
||||
NTSTATUS ntStatus;
|
||||
ULONG info;
|
||||
|
||||
PAGED_CODE();
|
||||
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_SetWmiDataBlock: Entered\n"));
|
||||
|
||||
deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension;
|
||||
info = 0;
|
||||
|
||||
switch(GuidIndex)
|
||||
{
|
||||
case WMI_FREEBT_DRIVER_INFORMATION:
|
||||
if(BufferSize == sizeof(ULONG))
|
||||
{
|
||||
DebugLevel = *(PULONG) Buffer;
|
||||
ntStatus = STATUS_SUCCESS;
|
||||
info = sizeof(ULONG);
|
||||
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
ntStatus = STATUS_INFO_LENGTH_MISMATCH;
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
ntStatus = STATUS_WMI_GUID_NOT_FOUND;
|
||||
|
||||
}
|
||||
|
||||
ntStatus = WmiCompleteRequest(DeviceObject,
|
||||
Irp,
|
||||
ntStatus,
|
||||
info,
|
||||
IO_NO_INCREMENT);
|
||||
|
||||
FreeBT_DbgPrint(3, ("FBTUSB: FreeBT_SetWmiDataBlock: Leaving\n"));
|
||||
|
||||
return ntStatus;
|
||||
|
||||
}
|
||||
|
||||
PCHAR WMIMinorFunctionString(UCHAR MinorFunction)
|
||||
{
|
||||
switch (MinorFunction)
|
||||
{
|
||||
case IRP_MN_CHANGE_SINGLE_INSTANCE:
|
||||
return "IRP_MN_CHANGE_SINGLE_INSTANCE\n";
|
||||
|
||||
case IRP_MN_CHANGE_SINGLE_ITEM:
|
||||
return "IRP_MN_CHANGE_SINGLE_ITEM\n";
|
||||
|
||||
case IRP_MN_DISABLE_COLLECTION:
|
||||
return "IRP_MN_DISABLE_COLLECTION\n";
|
||||
|
||||
case IRP_MN_DISABLE_EVENTS:
|
||||
return "IRP_MN_DISABLE_EVENTS\n";
|
||||
|
||||
case IRP_MN_ENABLE_COLLECTION:
|
||||
return "IRP_MN_ENABLE_COLLECTION\n";
|
||||
|
||||
case IRP_MN_ENABLE_EVENTS:
|
||||
return "IRP_MN_ENABLE_EVENTS\n";
|
||||
|
||||
case IRP_MN_EXECUTE_METHOD:
|
||||
return "IRP_MN_EXECUTE_METHOD\n";
|
||||
|
||||
case IRP_MN_QUERY_ALL_DATA:
|
||||
return "IRP_MN_QUERY_ALL_DATA\n";
|
||||
|
||||
case IRP_MN_QUERY_SINGLE_INSTANCE:
|
||||
return "IRP_MN_QUERY_SINGLE_INSTANCE\n";
|
||||
|
||||
case IRP_MN_REGINFO:
|
||||
return "IRP_MN_REGINFO\n";
|
||||
|
||||
default:
|
||||
return "IRP_MN_?????\n";
|
||||
|
||||
}
|
||||
|
||||
}
|
721
drivers/bluetooth/fbtusb/include/fbtHciCmdStructs.h
Executable file
|
@ -0,0 +1,721 @@
|
|||
#ifndef _FBT_HCI_CMD_STRUCTS_H
|
||||
#define _FBT_HCI_CMD_STRUCTS_H
|
||||
|
||||
// Pack structures to single unsigned char boundries
|
||||
#pragma pack(push, 1)
|
||||
|
||||
// Command Header
|
||||
typedef struct
|
||||
{
|
||||
unsigned short OpCode;
|
||||
unsigned char ParameterLength;
|
||||
|
||||
} FBT_HCI_CMD_HEADER, *PFBT_HCI_CMD_HEADER;
|
||||
|
||||
// Link control commands
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char LAP[FBT_HCI_LAP_SIZE];
|
||||
unsigned char InquiryLength;
|
||||
unsigned char NumResponses;
|
||||
|
||||
} FBT_HCI_INQUIRY, *PFBT_HCI_INQUIRY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_INQUIRY_CANCEL, *PFBT_HCI_INQUIRY_CANCEL;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short MaxPeriodLength;
|
||||
unsigned short MinPeriodLength;
|
||||
unsigned char LAP[FBT_HCI_LAP_SIZE];
|
||||
unsigned char InquiryLength;
|
||||
unsigned char NumResponses;
|
||||
|
||||
} FBT_HCI_PERIODIC_INQUIRY_MODE, *PFBT_HCI_PERIODIC_INQUIRY_MODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_EXIT_PERIODIC_INQUIRY_MODE, *PFBT_HCI_EXIT_PERIODIC_INQUIRY_MODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char BD_ADDR[FBT_HCI_BDADDR_SIZE];
|
||||
unsigned short PacketType;
|
||||
unsigned char PageScanRepetitionMode;
|
||||
unsigned char PageScanMode;
|
||||
unsigned short ClockOffset;
|
||||
unsigned char AllowRoleSwitch;
|
||||
|
||||
} FBT_HCI_CREATE_CONNECTION, *PFBT_HCI_CREATE_CONNECTION;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
unsigned char Reason;
|
||||
|
||||
} FBT_HCI_DISCONNECT, *PFBT_HCI_DISCONNECT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
unsigned short PacketType;
|
||||
|
||||
} FBT_HCI_ADD_SCO_CONNECTION, *PFBT_HCI_ADD_SCO_CONNECTION;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char BD_ADDR[FBT_HCI_BDADDR_SIZE];
|
||||
unsigned char Role;
|
||||
|
||||
} FBT_HCI_ACCEPT_CONNECTION_REQUEST, *PFBT_HCI_ACCEPT_CONNECTION_REQUEST;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char BD_ADDR[FBT_HCI_BDADDR_SIZE];
|
||||
unsigned char Reason;
|
||||
|
||||
} FBT_HCI_REJECT_CONNECTION_REQUEST, *PFBT_HCI_REJECT_CONNECTION_REQUEST;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char BD_ADDR[FBT_HCI_BDADDR_SIZE];
|
||||
unsigned char LinkKey[FBT_HCI_LINK_KEY_SIZE];
|
||||
|
||||
} FBT_HCI_LINK_KEY_REQUEST_REPLY, *PFBT_HCI_LINK_KEY_REQUEST_REPLY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char BD_ADDR[FBT_HCI_BDADDR_SIZE];
|
||||
|
||||
} FBT_HCI_LINK_KEY_REQUEST_NEGATIVE_REPLY, *PFBT_HCI_LINK_KEY_REQUEST_NEGATIVE_REPLY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char BD_ADDR[FBT_HCI_BDADDR_SIZE];
|
||||
unsigned char PINCodeLength;
|
||||
unsigned char PINCode[FBT_HCI_PIN_CODE_SIZE];
|
||||
|
||||
} FBT_HCI_PIN_CODE_REQUEST_REPLY, *PFBT_HCI_PIN_CODE_REQUEST_REPLY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char BD_ADDR[FBT_HCI_BDADDR_SIZE];
|
||||
|
||||
} FBT_HCI_PIN_CODE_REQUEST_NEGATIVE_REPLY, *PFBT_HCI_PIN_CODE_REQUEST_NEGATIVE_REPLY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
unsigned short PacketType;
|
||||
|
||||
} FBT_HCI_CHANGE_CONNECTION_PACKET_TYPE, *PFBT_HCI_CHANGE_CONNECTION_PACKET_TYPE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
|
||||
} FBT_HCI_AUTHENTICATION_REQUESTED, *PFBT_HCI_AUTHENTICATION_REQUESTED;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
unsigned char EncryptionEnable;
|
||||
|
||||
} FBT_HCI_SET_CONNECTION_ENCRYPTION, *PFBT_HCI_SET_CONNECTION_ENCRYPTION;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
|
||||
} FBT_HCI_CHANGE_CONNECTION_LINK_KEY, *PFBT_HCI_CHANGE_CONNECTION_LINK_KEY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char KeyFlag;
|
||||
|
||||
} FBT_HCI_MASTER_LINK_KEY, *PFBT_HCI_MASTER_LINK_KEY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char BD_ADDR[FBT_HCI_BDADDR_SIZE];
|
||||
unsigned char PageScanRepetitionMode;
|
||||
unsigned char PageScanMode;
|
||||
unsigned short ClockOffset;
|
||||
|
||||
} FBT_HCI_REMOTE_NAME_REQUEST, *PFBT_HCI_REMOTE_NAME_REQUEST;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
|
||||
} FBT_HCI_READ_REMOTE_SUPPORTED_FEATURES, *PFBT_HCI_READ_REMOTE_SUPPORTED_FEATURES;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
|
||||
} FBT_HCI_READ_REMOTE_VERSION_INFORMATION, *PFBT_HCI_READ_REMOTE_VERSION_INFORMATION;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
|
||||
} FBT_HCI_READ_CLOCK_OFFSET, *PFBT_HCI_READ_CLOCK_OFFSET;
|
||||
|
||||
|
||||
// Link policy commands
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
unsigned short HoldModeMaxInterval;
|
||||
unsigned short HoldModeMinInterval;
|
||||
|
||||
} FBT_HCI_HOLD_MODE, *PFBT_HCI_HOLD_MODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
unsigned short SniffMaxInterval;
|
||||
unsigned short SniffMinInterval;
|
||||
unsigned short SniffAttempt;
|
||||
unsigned short SniffTimeout;
|
||||
|
||||
} FBT_HCI_SNIFF_MODE, *PFBT_HCI_SNIFF_MODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
|
||||
} FBT_HCI_EXIT_SNIFF_MODE, *PFBT_HCI_EXIT_SNIFF_MODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
unsigned short BeaconMaxInterval;
|
||||
unsigned short BeaconMinInterval;
|
||||
|
||||
} FBT_HCI_PARK_MODE, *PFBT_HCI_PARK_MODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
|
||||
} FBT_HCI_EXIT_PARK_MODE, *PFBT_HCI_EXIT_PARK_MODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
unsigned char Flags;
|
||||
unsigned char ServiceType;
|
||||
unsigned long TokenRate;
|
||||
unsigned long PeakBandwidth;
|
||||
unsigned long Latency;
|
||||
unsigned long DelayVariation;
|
||||
|
||||
} FBT_HCI_QOS_SETUP, *PFBT_HCI_QOS_SETUP;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
|
||||
} FBT_HCI_ROLE_DISCOVERY, *PFBT_HCI_ROLE_DISCOVERY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char BD_ADDR[FBT_HCI_BDADDR_SIZE];
|
||||
unsigned char Role;
|
||||
|
||||
} FBT_HCI_SWITCH_ROLE, *PFBT_HCI_SWITCH_ROLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
|
||||
} FBT_HCI_READ_LINK_POLICY_SETTINGS, *PFBT_HCI_READ_LINK_POLICY_SETTINGS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
unsigned short LinkPolicySettings;
|
||||
|
||||
} FBT_HCI_WRITE_LINK_POLICY_SETTINGS, *PFBT_HCI_WRITE_LINK_POLICY_SETTINGS;
|
||||
|
||||
|
||||
// Host Controller and Baseband commands
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char EventMask[8];
|
||||
|
||||
} FBT_HCI_SET_EVENT_MASK, *PFBT_HCI_SET_EVENT_MASK;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_RESET, *PFBT_HCI_RESET;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char FilterType;
|
||||
unsigned char FilterConditionType;
|
||||
unsigned char Condition[7];
|
||||
|
||||
} FBT_HCI_SET_EVENT_FILTER, *PFBT_HCI_SET_EVENT_FILTER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
|
||||
} FBT_HCI_FLUSH, *PFBT_HCI_FLUSH;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_READ_PIN_TYPE, *PFBT_HCI_READ_PIN_TYPE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char PinType;
|
||||
|
||||
} FBT_HCI_WRITE_PIN_TYPE, *PFBT_HCI_WRITE_PIN_TYPE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_CREATE_NEW_UNIT_KEY, *PFBT_HCI_CREATE_NEW_UNIT_KEY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char BD_ADDR[FBT_HCI_BDADDR_SIZE];
|
||||
unsigned char ReadAllFlag;
|
||||
|
||||
} FBT_HCI_READ_STORED_LINK_KEY, *PFBT_HCI_READ_STORED_LINK_KEY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char NumKeysToWrite;
|
||||
unsigned char BD_ADDR[FBT_HCI_VARIABLE_SIZE][FBT_HCI_BDADDR_SIZE];
|
||||
unsigned char LinkKey[FBT_HCI_VARIABLE_SIZE][FBT_HCI_LINK_KEY_SIZE];
|
||||
|
||||
} FBT_HCI_WRITE_STORED_LINK_KEY, *PFBT_HCI_WRITE_STORED_LINK_KEY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char BD_ADDR[FBT_HCI_BDADDR_SIZE];
|
||||
unsigned char DeleteAllFlag;
|
||||
|
||||
} FBT_HCI_DELETE_STORED_LINK_KEY, *PFBT_HCI_DELETE_STORED_LINK_KEY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char Name[FBT_HCI_NAME_SIZE];
|
||||
|
||||
} FBT_HCI_CHANGE_LOCAL_NAME, *PFBT_HCI_CHANGE_LOCAL_NAME;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_READ_LOCAL_NAME, *PFBT_HCI_READ_LOCAL_NAME;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_READ_CONNECTION_ACCEPT_TIMEOUT, *PFBT_HCI_READ_CONNECTION_ACCEPT_TIMEOUT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnAcceptTimeout;
|
||||
|
||||
} FBT_HCI_WRITE_CONNECTION_ACCEPT_TIMEOUT, *PFBT_HCI_WRITE_CONNECTION_ACCEPT_TIMEOUT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_READ_PAGE_TIMEOUT, *PFBT_HCI_READ_PAGE_TIMEOUT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short PageTimeout;
|
||||
|
||||
} FBT_HCI_WRITE_PAGE_TIMEOUT, *PFBT_HCI_WRITE_PAGE_TIMEOUT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_READ_SCAN_ENABLE, *PFBT_HCI_READ_SCAN_ENABLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char ScanEnable;
|
||||
|
||||
} FBT_HCI_WRITE_SCAN_ENABLE, *PFBT_HCI_WRITE_SCAN_ENABLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_READ_PAGE_SCAN_ACTIVITY, *PFBT_HCI_READ_PAGE_SCAN_ACTIVITY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short PageScanInterval;
|
||||
unsigned short PageScanWindow;
|
||||
|
||||
} FBT_HCI_WRITE_PAGE_SCAN_ACTIVITY, *PFBT_HCI_WRITE_PAGE_SCAN_ACTIVITY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_READ_INQUIRY_SCAN_ACTIVITY, *PFBT_HCI_READ_INQUIRY_SCAN_ACTIVITY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short InquiryScanInterval;
|
||||
unsigned short InquiryScanWindow;
|
||||
|
||||
} FBT_HCI_WRITE_INQUIRY_SCAN_ACTIVITY, *PFBT_HCI_WRITE_INQUIRY_SCAN_ACTIVITY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_READ_AUTHENTICATION_ENABLE, *PFBT_HCI_READ_AUTHENTICATION_ENABLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char AuthenticationEnable;
|
||||
|
||||
} FBT_HCI_WRITE_AUTHENTICATION_ENABLE, *PFBT_HCI_WRITE_AUTHENTICATION_ENABLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_READ_ENCRYPTION_MODE, *PFBT_HCI_READ_ENCRYPTION_MODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char EncryptionMode;
|
||||
|
||||
} FBT_HCI_WRITE_ENCRYPTION_MODE, *PFBT_HCI_WRITE_ENCRYPTION_MODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_READ_CLASS_OF_DEVICE, *PFBT_HCI_READ_CLASS_OF_DEVICE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char ClassOfDevice[FBT_HCI_DEVICE_CLASS_SIZE];
|
||||
|
||||
} FBT_HCI_WRITE_CLASS_OF_DEVICE, *PFBT_HCI_WRITE_CLASS_OF_DEVICE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_READ_VOICE_SETTING, *PFBT_HCI_READ_VOICE_SETTING;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short VoiceSetting;
|
||||
|
||||
} FBT_HCI_WRITE_VOICE_SETTING, *PFBT_HCI_WRITE_VOICE_SETTING;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
|
||||
} FBT_HCI_READ_AUTOMATIC_FLUSH_TIMEOUT, *PFBT_HCI_READ_AUTOMATIC_FLUSH_TIMEOUT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
unsigned short FlushTimeout;
|
||||
|
||||
} FBT_HCI_WRITE_AUTOMATIC_FLUSH_TIMEOUT, *PFBT_HCI_WRITE_AUTOMATIC_FLUSH_TIMEOUT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_READ_NUM_BROADCAST_RETRANSMISSIONS, *PFBT_HCI_READ_NUM_BROADCAST_RETRANSMISSIONS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char NumBroadcastRetran;
|
||||
|
||||
} FBT_HCI_WRITE_NUM_BROADCAST_RETRANSMISSIONS, *PFBT_HCI_WRITE_NUM_BROADCAST_RETRANSMISSIONS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_READ_HOLD_MODE_ACTIVITY, *PFBT_HCI_READ_HOLD_MODE_ACTIVITY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char HoldModeActivity;
|
||||
|
||||
} FBT_HCI_WRITE_HOLD_MODE_ACTIVITY, *PFBT_HCI_WRITE_HOLD_MODE_ACTIVITY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
unsigned char Type;
|
||||
|
||||
} FBT_HCI_READ_TRANSMIT_POWER_LEVEL, *PFBT_HCI_READ_TRANSMIT_POWER_LEVEL;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_READ_SCO_FLOW_CONTROL_ENABLE, *PFBT_HCI_READ_SCO_FLOW_CONTROL_ENABLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char ScoFlowControlEnable;
|
||||
|
||||
} FBT_HCI_WRITE_SCO_FLOW_CONTROL_ENABLE, *PFBT_HCI_WRITE_SCO_FLOW_CONTROL_ENABLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char FlowControlEnable;
|
||||
|
||||
} FBT_HCI_SET_HOST_CONTROLLER_TO_HOST_FLOW_CONTROL, *PFBT_HCI_SET_HOST_CONTROLLER_TO_HOST_FLOW_CONTROL;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short AclDataPacketLength;
|
||||
unsigned char ScoDataPacketLength;
|
||||
unsigned short TotalNumAclDataPackets;
|
||||
unsigned short TotalNumScoDataPackets;
|
||||
|
||||
} FBT_HCI_HOST_BUFFER_SIZE, *PFBT_HCI_HOST_BUFFER_SIZE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char NumberOfHandles;
|
||||
unsigned short ConnectionHandle[FBT_HCI_VARIABLE_SIZE];
|
||||
unsigned short HostNumOfCompletedPackets[FBT_HCI_VARIABLE_SIZE];
|
||||
|
||||
} FBT_HCI_HOST_NUMBER_OF_COMPLETED_PACKETS, *PFBT_HCI_HOST_NUMBER_OF_COMPLETED_PACKETS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
|
||||
} FBT_HCI_READ_LINK_SUPERVISION_TIMEOUT, *PFBT_HCI_READ_LINK_SUPERVISION_TIMEOUT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
unsigned short LinkSupervisionTimeout;
|
||||
|
||||
} FBT_HCI_WRITE_LINK_SUPERVISION_TIMEOUT, *PFBT_HCI_WRITE_LINK_SUPERVISION_TIMEOUT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_READ_NUMBER_OF_SUPPORTED_IAC, *PFBT_HCI_READ_NUMBER_OF_SUPPORTED_IAC;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_READ_CURRENT_IAC_LAP, *PFBT_HCI_READ_CURRENT_IAC_LAP;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char NumCurrentIac;
|
||||
unsigned char IacLap[FBT_HCI_VARIABLE_SIZE][FBT_HCI_LAP_SIZE];
|
||||
|
||||
} FBT_HCI_WRITE_CURRENT_IAC_LAP, *PFBT_HCI_WRITE_CURRENT_IAC_LAP;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_READ_PAGE_SCAN_PERIOD_MODE, *PFBT_HCI_READ_PAGE_SCAN_PERIOD_MODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char PageScanPeriodMode;
|
||||
|
||||
} FBT_HCI_WRITE_PAGE_SCAN_PERIOD_MODE, *PFBT_HCI_WRITE_PAGE_SCAN_PERIOD_MODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_READ_PAGE_SCAN_MODE, *PFBT_HCI_READ_PAGE_SCAN_MODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char PageScanMode;
|
||||
|
||||
} FBT_HCI_WRITE_PAGE_SCAN_MODE, *PFBT_HCI_WRITE_PAGE_SCAN_MODE;
|
||||
|
||||
|
||||
// Informational parameters
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_READ_LOCAL_VERSION_INFORMATION, *PFBT_HCI_READ_LOCAL_VERSION_INFORMATION;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_READ_LOCAL_SUPPORTED_FEATURES, *PFBT_HCI_READ_LOCAL_SUPPORTED_FEATURES;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_READ_BUFFER_SIZE, *PFBT_HCI_READ_BUFFER_SIZE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_READ_COUNTRY_CODE, *PFBT_HCI_READ_COUNTRY_CODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_READ_BD_ADDR, *PFBT_HCI_READ_BD_ADDR;
|
||||
|
||||
|
||||
// Status parameter commands
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
|
||||
} FBT_HCI_READ_FAILED_CONTACT_COUNTER, *PFBT_HCI_READ_FAILED_CONTACT_COUNTER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
|
||||
} FBT_HCI_RESET_FAILED_CONTACT_COUNTER, *PFBT_HCI_RESET_FAILED_CONTACT_COUNTER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
|
||||
} FBT_HCI_GET_LINK_QUALITY, *PFBT_HCI_GET_LINK_QUALITY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
|
||||
} FBT_HCI_READ_RSSI, *PFBT_HCI_READ_RSSI;
|
||||
|
||||
|
||||
// Testing commands
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_READ_LOOPBACK_MODE, *PFBT_HCI_READ_LOOPBACK_MODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
unsigned char LoopbackMode;
|
||||
|
||||
} FBT_HCI_WRITE_LOOPBACK_MODE, *PFBT_HCI_WRITE_LOOPBACK_MODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_CMD_HEADER CommandHeader;
|
||||
|
||||
} FBT_HCI_ENABLE_DEVICE_UNDER_TEST_MODE, *PFBT_HCI_ENABLE_DEVICE_UNDER_TEST_MODE;
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
#endif // _FBT_HCI_CMD_STRUCTS_H
|
153
drivers/bluetooth/fbtusb/include/fbtHciCmds.h
Executable file
|
@ -0,0 +1,153 @@
|
|||
#ifndef _FBT_HCI_COMMANDS_H
|
||||
#define _FBT_HCI_COMMANDS_H
|
||||
|
||||
#include "fbtHciOpCodes.h"
|
||||
#include "fbtHciSizes.h"
|
||||
|
||||
#include "fbtHciCmdStructs.h"
|
||||
#include "fbtHciParms.h"
|
||||
|
||||
// Utility macro to build a command CMD from ints constituent OCF/OGF
|
||||
#define FBT_HCI_CMD(nOCF, nOGF) ((unsigned short) nOCF + (unsigned short)(nOGF << 10))
|
||||
|
||||
// HCI Command CMDs
|
||||
// Link control CMDs
|
||||
#define FBT_HCI_CMD_INQUIRY FBT_HCI_CMD(FBT_HCI_OCF_INQUIRY, FBT_HCI_OGF_LINK_CONTROL)
|
||||
#define FBT_HCI_CMD_INQUIRY_CANCEL FBT_HCI_CMD(FBT_HCI_OCF_INQUIRY_CANCEL, FBT_HCI_OGF_LINK_CONTROL)
|
||||
#define FBT_HCI_CMD_PERIODIC_INQUIRY_MODE FBT_HCI_CMD(FBT_HCI_OCF_PERIODIC_INQUIRY_MODE, FBT_HCI_OGF_LINK_CONTROL)
|
||||
#define FBT_HCI_CMD_EXIT_PERIODIC_INQUIRY_MODE FBT_HCI_CMD(FBT_HCI_OCF_EXIT_PERIODIC_INQUIRY_MODE, FBT_HCI_OGF_LINK_CONTROL)
|
||||
#define FBT_HCI_CMD_CREATE_CONNECTION FBT_HCI_CMD(FBT_HCI_OCF_CREATE_CONNECTION, FBT_HCI_OGF_LINK_CONTROL)
|
||||
#define FBT_HCI_CMD_DISCONNECT FBT_HCI_CMD(FBT_HCI_OCF_DISCONNECT, FBT_HCI_OGF_LINK_CONTROL)
|
||||
#define FBT_HCI_CMD_ADD_SCO_CONNECTION FBT_HCI_CMD(FBT_HCI_OCF_ADD_SCO_CONNECTION, FBT_HCI_OGF_LINK_CONTROL)
|
||||
#define FBT_HCI_CMD_ACCEPT_CONNECTION_REQUEST FBT_HCI_CMD(FBT_HCI_OCF_ACCEPT_CONNECTION_REQUEST, FBT_HCI_OGF_LINK_CONTROL)
|
||||
#define FBT_HCI_CMD_REJECT_CONNECTION_REQUEST FBT_HCI_CMD(FBT_HCI_OCF_REJECT_CONNECTION_REQUEST, FBT_HCI_OGF_LINK_CONTROL)
|
||||
#define FBT_HCI_CMD_LINK_KEY_REQUEST_REPLY FBT_HCI_CMD(FBT_HCI_OCF_LINK_KEY_REQUEST_REPLY, FBT_HCI_OGF_LINK_CONTROL)
|
||||
#define FBT_HCI_CMD_LINK_KEY_REQUEST_NEGATIVE_REPLY FBT_HCI_CMD(FBT_HCI_OCF_LINK_KEY_REQUEST_NEGATIVE_REPLY, FBT_HCI_OGF_LINK_CONTROL)
|
||||
#define FBT_HCI_CMD_PIN_CODE_REQUEST_REPLY FBT_HCI_CMD(FBT_HCI_OCF_PIN_CODE_REQUEST_REPLY, FBT_HCI_OGF_LINK_CONTROL)
|
||||
#define FBT_HCI_CMD_PIN_CODE_REQUEST_NEGATIVE_REPLY FBT_HCI_CMD(FBT_HCI_OCF_PIN_CODE_REQUEST_NEGATIVE_REPLY, FBT_HCI_OGF_LINK_CONTROL)
|
||||
#define FBT_HCI_CMD_CHANGE_CONNECTION_PACKET_TYPE FBT_HCI_CMD(FBT_HCI_OCF_CHANGE_CONNECTION_PACKET_TYPE, FBT_HCI_OGF_LINK_CONTROL)
|
||||
#define FBT_HCI_CMD_AUTHENTICATION_REQUESTED FBT_HCI_CMD(FBT_HCI_OCF_AUTHENTICATION_REQUESTED, FBT_HCI_OGF_LINK_CONTROL)
|
||||
#define FBT_HCI_CMD_SET_CONNECTION_ENCRYPTION FBT_HCI_CMD(FBT_HCI_OCF_SET_CONNECTION_ENCRYPTION, FBT_HCI_OGF_LINK_CONTROL)
|
||||
#define FBT_HCI_CMD_CHANGE_CONNECTION_LINK_KEY FBT_HCI_CMD(FBT_HCI_OCF_CHANGE_CONNECTION_LINK_KEY, FBT_HCI_OGF_LINK_CONTROL)
|
||||
#define FBT_HCI_CMD_MASTER_LINK_KEY FBT_HCI_CMD(FBT_HCI_OCF_MASTER_LINK_KEY, FBT_HCI_OGF_LINK_CONTROL)
|
||||
#define FBT_HCI_CMD_REMOTE_NAME_REQUEST FBT_HCI_CMD(FBT_HCI_OCF_REMOTE_NAME_REQUEST, FBT_HCI_OGF_LINK_CONTROL)
|
||||
#define FBT_HCI_CMD_READ_REMOTE_SUPPORTED_FEATURES FBT_HCI_CMD(FBT_HCI_OCF_READ_REMOTE_SUPPORTED_FEATURES, FBT_HCI_OGF_LINK_CONTROL)
|
||||
#define FBT_HCI_CMD_READ_REMOTE_VERSION_INFORMATION FBT_HCI_CMD(FBT_HCI_OCF_READ_REMOTE_VERSION_INFORMATION, FBT_HCI_OGF_LINK_CONTROL)
|
||||
#define FBT_HCI_CMD_READ_CLOCK_OFFSET FBT_HCI_CMD(FBT_HCI_OCF_READ_CLOCK_OFFSET, FBT_HCI_OGF_LINK_CONTROL)
|
||||
|
||||
// Link policy CMDs
|
||||
#define FBT_HCI_CMD_HOLD_MODE FBT_HCI_CMD(FBT_HCI_OCF_HOLD_MODE, FBT_HCI_OGF_LINK_POLICY)
|
||||
#define FBT_HCI_CMD_SNIFF_MODE FBT_HCI_CMD(FBT_HCI_OCF_SNIFF_MODE, FBT_HCI_OGF_LINK_POLICY)
|
||||
#define FBT_HCI_CMD_EXIT_SNIFF_MODE FBT_HCI_CMD(FBT_HCI_OCF_EXIT_SNIFF_MODE, FBT_HCI_OGF_LINK_POLICY)
|
||||
#define FBT_HCI_CMD_PARK_MODE FBT_HCI_CMD(FBT_HCI_OCF_PARK_MODE, FBT_HCI_OGF_LINK_POLICY)
|
||||
#define FBT_HCI_CMD_EXIT_PARK_MODE FBT_HCI_CMD(FBT_HCI_OCF_EXIT_PARK_MODE, FBT_HCI_OGF_LINK_POLICY)
|
||||
#define FBT_HCI_CMD_QOS_SETUP FBT_HCI_CMD(FBT_HCI_OCF_QOS_SETUP, FBT_HCI_OGF_LINK_POLICY)
|
||||
#define FBT_HCI_CMD_ROLE_DISCOVERY FBT_HCI_CMD(FBT_HCI_OCF_ROLE_DISCOVERY, FBT_HCI_OGF_LINK_POLICY)
|
||||
#define FBT_HCI_CMD_SWITCH_ROLE FBT_HCI_CMD(FBT_HCI_OCF_SWITCH_ROLE, FBT_HCI_OGF_LINK_POLICY)
|
||||
#define FBT_HCI_CMD_READ_LINK_POLICY_SETTINGS FBT_HCI_CMD(FBT_HCI_OCF_READ_LINK_POLICY_SETTINGS, FBT_HCI_OGF_LINK_POLICY)
|
||||
#define FBT_HCI_CMD_WRITE_LINK_POLICY_SETTINGS FBT_HCI_CMD(FBT_HCI_OCF_WRITE_LINK_POLICY_SETTINGS, FBT_HCI_OGF_LINK_POLICY)
|
||||
|
||||
// Host controller & baseband command CMDs
|
||||
#define FBT_HCI_CMD_SET_EVENT_MASK FBT_HCI_CMD(FBT_HCI_OCF_SET_EVENT_MASK, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_RESET FBT_HCI_CMD(FBT_HCI_OCF_RESET, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_SET_EVENT_FILTER FBT_HCI_CMD(FBT_HCI_OCF_SET_EVENT_FILTER, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_FLUSH FBT_HCI_CMD(FBT_HCI_OCF_FLUSH, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_READ_PIN_TYPE FBT_HCI_CMD(FBT_HCI_OCF_READ_PIN_TYPE, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_WRITE_PIN_TYPE FBT_HCI_CMD(FBT_HCI_OCF_WRITE_PIN_TYPE, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_CREATE_NEW_UNIT_KEY FBT_HCI_CMD(FBT_HCI_OCF_CREATE_NEW_UNIT_KEY, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_READ_STORED_LINK_KEY FBT_HCI_CMD(FBT_HCI_OCF_READ_STORED_LINK_KEY, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_WRITE_STORED_LINK_KEY FBT_HCI_CMD(FBT_HCI_OCF_WRITE_STORED_LINK_KEY, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_DELETE_STORED_LINK_KEY FBT_HCI_CMD(FBT_HCI_OCF_DELETE_STORED_LINK_KEY, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_CHANGE_LOCAL_NAME FBT_HCI_CMD(FBT_HCI_OCF_CHANGE_LOCAL_NAME, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_READ_LOCAL_NAME FBT_HCI_CMD(FBT_HCI_OCF_READ_LOCAL_NAME, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_READ_CONNECTION_ACCEPT_TIMEOUT FBT_HCI_CMD(FBT_HCI_OCF_READ_CONNECTION_ACCEPT_TIMEOUT, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_WRITE_CONNECTION_ACCEPT_TIMEOUT FBT_HCI_CMD(FBT_HCI_OCF_WRITE_CONNECTION_ACCEPT_TIMEOUT, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_READ_PAGE_TIMEOUT FBT_HCI_CMD(FBT_HCI_OCF_READ_PAGE_TIMEOUT, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_WRITE_PAGE_TIMEOUT FBT_HCI_CMD(FBT_HCI_OCF_WRITE_PAGE_TIMEOUT, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_READ_SCAN_ENABLE FBT_HCI_CMD(FBT_HCI_OCF_READ_SCAN_ENABLE, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_WRITE_SCAN_ENABLE FBT_HCI_CMD(FBT_HCI_OCF_WRITE_SCAN_ENABLE, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_READ_PAGE_SCAN_ACTIVITY FBT_HCI_CMD(FBT_HCI_OCF_READ_PAGE_SCAN_ACTIVITY, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_WRITE_PAGE_SCAN_ACTIVITY FBT_HCI_CMD(FBT_HCI_OCF_WRITE_PAGE_SCAN_ACTIVITY, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_READ_INQUIRY_SCAN_ACTIVITY FBT_HCI_CMD(FBT_HCI_OCF_READ_INQUIRY_SCAN_ACTIVITY, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_WRITE_INQUIRY_SCAN_ACTIVITY FBT_HCI_CMD(FBT_HCI_OCF_WRITE_INQUIRY_SCAN_ACTIVITY, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_READ_AUTHENTICATION_ENABLE FBT_HCI_CMD(FBT_HCI_OCF_READ_AUTHENTICATION_ENABLE, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_WRITE_AUTHENTICATION_ENABLE FBT_HCI_CMD(FBT_HCI_OCF_WRITE_AUTHENTICATION_ENABLE, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_READ_ENCRYPTION_MODE FBT_HCI_CMD(FBT_HCI_OCF_READ_ENCRYPTION_MODE, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_WRITE_ENCRYPTION_MODE FBT_HCI_CMD(FBT_HCI_OCF_WRITE_ENCRYPTION_MODE, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_READ_CLASS_OF_DEVICE FBT_HCI_CMD(FBT_HCI_OCF_READ_CLASS_OF_DEVICE, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_WRITE_CLASS_OF_DEVICE FBT_HCI_CMD(FBT_HCI_OCF_WRITE_CLASS_OF_DEVICE, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_READ_VOICE_SETTING FBT_HCI_CMD(FBT_HCI_OCF_READ_VOICE_SETTING, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_WRITE_VOICE_SETTING FBT_HCI_CMD(FBT_HCI_OCF_WRITE_VOICE_SETTING, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_READ_AUTOMATIC_FLUSH_TIMEOUT FBT_HCI_CMD(FBT_HCI_OCF_READ_AUTOMATIC_FLUSH_TIMEOUT, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_WRITE_AUTOMATIC_FLUSH_TIMEOUT FBT_HCI_CMD(FBT_HCI_OCF_WRITE_AUTOMATIC_FLUSH_TIMEOUT, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_READ_NUM_BROADCAST_RETRANSMISSIONS FBT_HCI_CMD(FBT_HCI_OCF_READ_NUM_BROADCAST_RETRANSMISSIONS, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_WRITE_NUM_BROADCAST_RETRANSMISSIONS FBT_HCI_CMD(FBT_HCI_OCF_WRITE_NUM_BROADCAST_RETRANSMISSIONS, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_READ_HOLD_MODE_ACTIVITY FBT_HCI_CMD(FBT_HCI_OCF_READ_HOLD_MODE_ACTIVITY, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_WRITE_HOLD_MODE_ACTIVITY FBT_HCI_CMD(FBT_HCI_OCF_WRITE_HOLD_MODE_ACTIVITY, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_READ_TRANSMIT_POWER_LEVEL FBT_HCI_CMD(FBT_HCI_OCF_READ_TRANSMIT_POWER_LEVEL, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_READ_SCO_FLOW_CONTROL_ENABLE FBT_HCI_CMD(FBT_HCI_OCF_READ_SCO_FLOW_CONTROL_ENABLE, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_WRITE_SCO_FLOW_CONTROL_ENABLE FBT_HCI_CMD(FBT_HCI_OCF_WRITE_SCO_FLOW_CONTROL_ENABLE, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_SET_HOST_CONTROLLER_TO_HOST_FLOW_CONTROL FBT_HCI_CMD(FBT_HCI_OCF_SET_HOST_CONTROLLER_TO_HOST_FLOW_CONTROL, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_HOST_BUFFER_SIZE FBT_HCI_CMD(FBT_HCI_OCF_HOST_BUFFER_SIZE, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_HOST_NUMBER_OF_COMPLETED_PACKETS FBT_HCI_CMD(FBT_HCI_OCF_HOST_NUMBER_OF_COMPLETED_PACKETS, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_READ_LINK_SUPERVISION_TIMEOUT FBT_HCI_CMD(FBT_HCI_OCF_READ_LINK_SUPERVISION_TIMEOUT, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_WRITE_LINK_SUPERVISION_TIMEOUT FBT_HCI_CMD(FBT_HCI_OCF_WRITE_LINK_SUPERVISION_TIMEOUT, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_READ_NUMBER_OF_SUPPORTED_IAC FBT_HCI_CMD(FBT_HCI_OCF_READ_NUMBER_OF_SUPPORTED_IAC, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_READ_CURRENT_IAC_LAP FBT_HCI_CMD(FBT_HCI_OCF_READ_CURRENT_IAC_LAP, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_WRITE_CURRENT_IAC_LAP FBT_HCI_CMD(FBT_HCI_OCF_WRITE_CURRENT_IAC_LAP, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_READ_PAGE_SCAN_PERIOD_MODE FBT_HCI_CMD(FBT_HCI_OCF_READ_PAGE_SCAN_PERIOD_MODE, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_WRITE_PAGE_SCAN_PERIOD_MODE FBT_HCI_CMD(FBT_HCI_OCF_WRITE_PAGE_SCAN_PERIOD_MODE, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_READ_PAGE_SCAN_MODE FBT_HCI_CMD(FBT_HCI_OCF_READ_PAGE_SCAN_MODE, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
#define FBT_HCI_CMD_WRITE_PAGE_SCAN_MODE FBT_HCI_CMD(FBT_HCI_OCF_WRITE_PAGE_SCAN_MODE, FBT_HCI_OGF_CONTROL_BASEBAND)
|
||||
|
||||
// Informational parameters CMDs
|
||||
#define FBT_HCI_CMD_READ_LOCAL_VERSION_INFORMATION FBT_HCI_CMD(FBT_HCI_OCF_READ_LOCAL_VERSION_INFORMATION, FBT_HCI_OGF_INFORMATIONAL_PARAMETERS)
|
||||
#define FBT_HCI_CMD_LOCAL_SUPPPROTED_FEATURES FBT_HCI_CMD(FBT_HCI_OCF_LOCAL_SUPPPROTED_FEATURES, FBT_HCI_OGF_INFORMATIONAL_PARAMETERS)
|
||||
#define FBT_HCI_CMD_READ_BUFFER_SIZE FBT_HCI_CMD(FBT_HCI_OCF_READ_BUFFER_SIZE, FBT_HCI_OGF_INFORMATIONAL_PARAMETERS)
|
||||
#define FBT_HCI_CMD_READ_COUNTRY_CODE FBT_HCI_CMD(FBT_HCI_OCF_READ_COUNTRY_CODE, FBT_HCI_OGF_INFORMATIONAL_PARAMETERS)
|
||||
#define FBT_HCI_CMD_READ_BD_ADDR FBT_HCI_CMD(FBT_HCI_OCF_READ_BD_ADDR, FBT_HCI_OGF_INFORMATIONAL_PARAMETERS)
|
||||
|
||||
// Status parameters CMDs
|
||||
#define FBT_HCI_CMD_READ_FAILED_CONTACT_COUNTER FBT_HCI_CMD(FBT_HCI_OCF_READ_FAILED_CONTACT_COUNTER, FBT_HCI_OGF_STATUS_PARAMETERS)
|
||||
#define FBT_HCI_CMD_RESET_FAILED_CONTACT_COUNTER FBT_HCI_CMD(FBT_HCI_OCF_RESET_FAILED_CONTACT_COUNTER, FBT_HCI_OGF_STATUS_PARAMETERS)
|
||||
#define FBT_HCI_CMD_GET_LINK_QUALITY FBT_HCI_CMD(FBT_HCI_OCF_GET_LINK_QUALITY, FBT_HCI_OGF_STATUS_PARAMETERS)
|
||||
#define FBT_HCI_CMD_READ_RSSI FBT_HCI_CMD(FBT_HCI_OCF_READ_RSSI, FBT_HCI_OGF_STATUS_PARAMETERS)
|
||||
|
||||
// Testing CMDs
|
||||
#define FBT_HCI_CMD_READ_LOOPBACK_MODE FBT_HCI_CMD(FBT_HCI_OCF_READ_LOOPBACK_MODE, FBT_HCI_OGF_TESTING)
|
||||
#define FBT_HCI_CMD_WRITE_LOOPBACK_MODE FBT_HCI_CMD(FBT_HCI_OCF_WRITE_LOOPBACK_MODE, FBT_HCI_OGF_TESTING)
|
||||
#define FBT_HCI_CMD_ENABLE_DEVICE_UNDER_TEST_MODE FBT_HCI_CMD(FBT_HCI_OCF_ENABLE_DEVICE_UNDER_TEST_MODE, FBT_HCI_OGF_TESTING)
|
||||
|
||||
// Packet Boundry Flags (ORed into the upper 8 bits of the connection handle)
|
||||
#define FBT_HCI_PACKET_BOUNDRY_FIRST 0x20
|
||||
#define FBT_HCI_PACKET_BOUNDRY_NEXT 0x10
|
||||
|
||||
// HCI header types
|
||||
#define FBT_HCI_SYNC_HCI_COMMAND_PACKET 0x01
|
||||
#define FBT_HCI_SYNC_ACL_DATA_PACKET 0x02
|
||||
#define FBT_HCI_SYNC_SCO_DATA_PACKET 0x03
|
||||
#define FBT_HCI_SYNC_HCI_EVENT_PACKET 0x04
|
||||
|
||||
// Packet types for use in CreateConnection
|
||||
#define FBT_HCI_PACKET_TYPE_DM1 0x0008 // 1 time slot, 1-18 bytes of data, FEC encoded
|
||||
#define FBT_HCI_PACKET_TYPE_DH1 0x0010 // 1 time slot, 1-28 bytes of data, not FEC encoded
|
||||
|
||||
#define FBT_HCI_PACKET_TYPE_DM3 0x0400 // 3 time slots, 2-123 bytes of data, FEC encoded
|
||||
#define FBT_HCI_PACKET_TYPE_DH3 0x0800 // 3 time slots, 2-185 bytes of data, not FEC encoded
|
||||
|
||||
#define FBT_HCI_PACKET_TYPE_DM5 0x4000 // 5 time slots, 2-226 bytes of data, FEC encoded
|
||||
#define FBT_HCI_PACKET_TYPE_DH5 0x8000 // 3 time slots, 2-341 bytes of data, not FEC encoded
|
||||
|
||||
// LAP codes for use in Inquiry
|
||||
#define FBT_HCI_LAP_GIAC 0x9E8B33
|
||||
#define FBT_HCI_LAP_LIAC 0x9E8B00
|
||||
|
||||
// Link Types
|
||||
#define FBT_HCI_LINK_TYPE_SCO 0x00
|
||||
#define FBT_HCI_LINK_TYPE_ACL 0x01
|
||||
|
||||
// Maximum number of each type of handle
|
||||
#define FBT_HCI_MAX_ALLOWED_ACL_HANDLES 32
|
||||
#define FBT_HCI_MAX_ALLOWED_SCO_HANDLES 4
|
||||
|
||||
#endif // _FBT_HCI_COMMANDS_H
|
8
drivers/bluetooth/fbtusb/include/fbtHciDefs.h
Executable file
|
@ -0,0 +1,8 @@
|
|||
#ifndef _FBT_HCI_DEFS_H
|
||||
#define _FBT_HCI_DEFS_H
|
||||
|
||||
#include "fbtHciCmds.h"
|
||||
#include "fbtHciEvents.h"
|
||||
#include "fbtHciErrors.h"
|
||||
|
||||
#endif // _FBT_HCI_DEFS_H
|
58
drivers/bluetooth/fbtusb/include/fbtHciErrors.h
Executable file
|
@ -0,0 +1,58 @@
|
|||
#ifndef _FBT_HCI_ERROR_H
|
||||
#define _FBT_HCI_ERROR_H
|
||||
|
||||
#define FBT_HCI_ERROR_SUCCESS 0x00
|
||||
#define FBT_HCI_UNKNOWN_HCI_COMMAND 0x01
|
||||
#define FBT_HCI_UNKNOWN_CONNECTION_IDENTIFIER 0x02
|
||||
#define FBT_HCI_HARDWARE_FAILURE 0x03
|
||||
#define FBT_HCI_PAGE_TIMEOUT 0x04
|
||||
#define FBT_HCI_AUTHENTICATION_FAILURE 0x05
|
||||
#define FBT_HCI_PIN_MISSING 0x06
|
||||
#define FBT_HCI_MEMORY_CAPACITY_EXCEEDED 0x07
|
||||
#define FBT_HCI_CONNECTION_TIMEOUT 0x08
|
||||
#define FBT_HCI_CONNECTION_LIMIT EXCEEDED 0x09
|
||||
#define FBT_HCI_SYNCHRONOUS_CONNECTION_LIMIT_TO_A_DEVICE EXCEEDED 0x0a
|
||||
#define FBT_HCI_ACL_CONNECTION_ALREADY_EXISTS 0x0b
|
||||
#define FBT_HCI_COMMAND_DISALLOWED 0x0c
|
||||
#define FBT_HCI_CONNECTION_REJECTED_DUE_TO_LIMITED RESOURCES 0x0d
|
||||
#define FBT_HCI_CONNECTION_REJECTED_DUE_TO_SECURITY REASONS 0x0e
|
||||
#define FBT_HCI_CONNECTION_REJECTED_DUE_TO_UNACCEPTABLE BD_ADDR 0x0f
|
||||
#define FBT_HCI_CONNECTION_ACCEPT_TIMEOUT_EXCEEDED 0x10
|
||||
#define FBT_HCI_UNSUPPORTED_FEATURE_OR_PARAMETER VALUE 0x11
|
||||
#define FBT_HCI_INVALID_HCI_COMMAND_PARAMETERS 0x12
|
||||
#define FBT_HCI_REMOTE_USER_TERMINATED_CONNECTION 0x13
|
||||
#define FBT_HCI_REMOTE_DEVICE_TERMINATED_CONNECTION_DUE_TO_LOW_RESOURCES 0x14
|
||||
#define FBT_HCI_REMOTE_DEVICE_TERMINATED_CONNECTION_DUE_TO_POWER OFF 0x15
|
||||
#define FBT_HCI_CONNECTION_TERMINATED_BY_LOCAL_HOST 0x16
|
||||
#define FBT_HCI_REPEATED_ATTEMPTS 0x17
|
||||
#define FBT_HCI_PAIRING_NOT ALLOWED 0x18
|
||||
#define FBT_HCI_UNKNOWN_LMP_PDU 0x19
|
||||
#define FBT_HCI_UNSUPPORTED_REMOTE_FEATURE 0x1a
|
||||
#define FBT_HCI_SCO_OFFSET_REJECTED 0x1b
|
||||
#define FBT_HCI_SCO_INTERVAL_REJECTED 0x1c
|
||||
#define FBT_HCI_SCO_AIR_MODE_REJECTED 0x1d
|
||||
#define FBT_HCI_INVALID_LMP_PARAMETERS 0x1e
|
||||
#define FBT_HCI_UNSPECIFIED_ERROR 0x1f
|
||||
#define FBT_HCI_UNSUPPORTED_LMP_PARAMETER_VALUE 0x20
|
||||
#define FBT_HCI_ROLE_CHANGE_NOT_ALLOWED 0x21
|
||||
#define FBT_HCI_LMP_RESPONSE_TIMEOUT 0x22
|
||||
#define FBT_HCI_LMP_ERROR_TRANSACTION_COLLISION 0x23
|
||||
#define FBT_HCI_LMP_PDU_NOT_ALLOWED 0x24
|
||||
#define FBT_HCI_ENCRYPTION_MODE_NOT_ACCEPTABLE 0x25
|
||||
#define FBT_HCI_LINK_KEY_CAN_NOT_BE_CHANGED 0x26
|
||||
#define FBT_HCI_REQUESTED_QOS_NOT_SUPPORTED 0x27
|
||||
#define FBT_HCI_INSTANT_PASSED 0x28
|
||||
#define FBT_HCI_PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED 0x29
|
||||
#define FBT_HCI_DIFFERENT_TRANSACTION_COLLISION 0x2a
|
||||
#define FBT_HCI_QOS_UNACCEPTABLE PARAMETER 0x2c
|
||||
#define FBT_HCI_QOS_REJECTED 0x2d
|
||||
#define FBT_HCI_CHANNEL_CLASSIFICATION_NOT_SUPPORTED 0x2e
|
||||
#define FBT_HCI_INSUFFICIENT_SECURITY 0x2f
|
||||
#define FBT_HCI_PARAMETER_OUT_OF_MANDATORY_RANGE 0x30
|
||||
#define FBT_HCI_ROLE_SWITCH_PENDING 0x32
|
||||
#define FBT_HCI_RESERVED_SLOT_VIOLATION 0x34
|
||||
#define FBT_HCI_ROLE_SWITCH_FAILED 0x35
|
||||
|
||||
#define FBT_HCI_SUCCESS(x) (x==FBT_HCI_ERROR_SUCCESS)
|
||||
|
||||
#endif // _FBT_HCI_ERROR_H
|
319
drivers/bluetooth/fbtusb/include/fbtHciEventStructs.h
Executable file
|
@ -0,0 +1,319 @@
|
|||
#ifndef _FBT_HCI_EVENT_STRUCTS_H
|
||||
#define _FBT_HCI_EVENT_STRUCTS_H
|
||||
|
||||
// Pack structures to single unsigned char boundries
|
||||
#pragma pack(push, 1)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned char EventCode;
|
||||
unsigned char ParameterLength;
|
||||
|
||||
} FBT_HCI_EVENT_HEADER, *PFBT_HCI_EVENT_HEADER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char Status;
|
||||
unsigned char NumResponses;
|
||||
|
||||
} FBT_HCI_INQUIRY_COMPLETE, *PFBT_HCI_INQUIRY_COMPLETE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char NumResponses;
|
||||
unsigned char BD_ADDR[FBT_HCI_VARIABLE_SIZE][FBT_HCI_BDADDR_SIZE];
|
||||
unsigned char PageScanRepetitionMode[FBT_HCI_VARIABLE_SIZE];
|
||||
unsigned char PageScanPeriodMode[FBT_HCI_VARIABLE_SIZE];
|
||||
unsigned char PageScanMode[FBT_HCI_VARIABLE_SIZE];
|
||||
unsigned char ClassOfDevice[FBT_HCI_VARIABLE_SIZE][FBT_HCI_DEVICE_CLASS_SIZE];
|
||||
unsigned short ClockOffset[FBT_HCI_VARIABLE_SIZE];
|
||||
|
||||
} FBT_HCI_INQUIRY_RESULT, *PFBT_HCI_INQUIRY_RESULT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char Status;
|
||||
unsigned short ConnectionHandle;
|
||||
unsigned char BD_ADDR[FBT_HCI_BDADDR_SIZE];
|
||||
unsigned char LinkType;
|
||||
unsigned char EncryptionMode;
|
||||
|
||||
} FBT_HCI_CONNECTION_COMPLETE, *PFBT_HCI_CONNECTION_COMPLETE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char BD_ADDR[FBT_HCI_BDADDR_SIZE];
|
||||
unsigned long ClassOfDevice[FBT_HCI_DEVICE_CLASS_SIZE];
|
||||
unsigned char LinkType;
|
||||
|
||||
} FBT_HCI_CONNECTION_REQUEST, *PFBT_HCI_CONNECTION_REQUEST;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char Status;
|
||||
unsigned short ConnectionHandle;
|
||||
unsigned char Reason;
|
||||
|
||||
} FBT_HCI_DISCONNECTION_COMPLETE, *PFBT_HCI_DISCONNECTION_COMPLETE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char Status;
|
||||
unsigned short ConnectionHandle;
|
||||
|
||||
} FBT_HCI_AUTHENTICATION_COMPLETE, *PFBT_HCI_AUTHENTICATION_COMPLETE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char Status;
|
||||
unsigned char BD_ADDR[FBT_HCI_BDADDR_SIZE];
|
||||
unsigned char RemoteName[FBT_HCI_NAME_SIZE];
|
||||
|
||||
} FBT_HCI_REMOTE_NAME_REQUEST_COMPLETE, *PFBT_HCI_REMOTE_NAME_REQUEST_COMPLETE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char Status;
|
||||
unsigned short ConnectionHandle;
|
||||
unsigned char EncryptionEnable;
|
||||
|
||||
} FBT_HCI_ENCRYPTION_CHANGE, *PFBT_HCI_ENCRYPTION_CHANGE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char Status;
|
||||
unsigned short ConnectionHandle;
|
||||
|
||||
} FBT_HCI_CHANGE_CONNECTION_LINK_KEY_COMPLETE, *PFBT_HCI_CHANGE_CONNECTION_LINK_KEY_COMPLETE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char Status;
|
||||
unsigned short ConnectionHandle;
|
||||
unsigned char KeyFlag;
|
||||
|
||||
} FBT_HCI_MASTER_LINK_KEY_COMPLETE, *PFBT_HCI_MASTER_LINK_KEY_COMPLETE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char Status;
|
||||
unsigned short ConnectionHandle;
|
||||
unsigned char LmpFeatures[8];
|
||||
|
||||
} FBT_HCI_READ_REMOTE_SUPPORTED_FEATURES_COMPLETE, *PFBT_HCI_READ_REMOTE_SUPPORTED_FEATURES_COMPLETE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char Status;
|
||||
unsigned short ConnectionHandle;
|
||||
unsigned char LmpVersion;
|
||||
unsigned short ManufacturerName;
|
||||
unsigned short LmpSubversion;
|
||||
|
||||
} FBT_HCI_READ_REMOTE_VERSION_INFORMATION_COMPLETE, *PFBT_HCI_READ_REMOTE_VERSION_INFORMATION_COMPLETE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char Status;
|
||||
unsigned short ConnectionHandle;
|
||||
unsigned char Flags;
|
||||
unsigned char ServiceType;
|
||||
unsigned long TokenRate;
|
||||
unsigned long PeakBandwidth;
|
||||
unsigned long Latency;
|
||||
unsigned long DelayVariation;
|
||||
|
||||
} FBT_HCI_QOS_SETUP_COMPLETE, *PFBT_HCI_QOS_SETUP_COMPLETE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char NumHCICommandPackets;
|
||||
unsigned short OpCode;
|
||||
unsigned char Parameters[FBT_HCI_VARIABLE_SIZE];
|
||||
|
||||
} FBT_HCI_COMMAND_COMPLETE, *PFBT_HCI_COMMAND_COMPLETE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char Status;
|
||||
unsigned char NumHCICommandPackets;
|
||||
unsigned short OpCode;
|
||||
|
||||
} FBT_HCI_COMMAND_STATUS, *PFBT_HCI_COMMAND_STATUS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char HardwareCode;
|
||||
|
||||
} FBT_HCI_HARDWARE_ERROR, *PFBT_HCI_HARDWARE_ERROR;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
|
||||
} FBT_HCI_FLUSH_OCCURRED, *PFBT_HCI_FLUSH_OCCURRED;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char Status;
|
||||
unsigned char BD_ADDR[FBT_HCI_BDADDR_SIZE];
|
||||
unsigned char NewRole;
|
||||
|
||||
} FBT_HCI_ROLE_CHANGE, *PFBT_HCI_ROLE_CHANGE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char NumberOfHandles;
|
||||
unsigned short ConnectionHandle[FBT_HCI_VARIABLE_SIZE];
|
||||
unsigned short NumberOfCompletedPackets[FBT_HCI_VARIABLE_SIZE];
|
||||
|
||||
} FBT_HCI_NUMBER_OF_COMPLETED_PACKETS, *PFBT_HCI_NUMBER_OF_COMPLETED_PACKETS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char Status;
|
||||
unsigned short ConnectionHandle;
|
||||
unsigned char CurrentMode;
|
||||
unsigned short Interval;
|
||||
|
||||
} FBT_HCI_MODE_CHANGE, *PFBT_HCI_MODE_CHANGE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char NumKeys;
|
||||
unsigned char BD_ADDR[FBT_HCI_VARIABLE_SIZE][FBT_HCI_BDADDR_SIZE];
|
||||
unsigned char LinkKey[FBT_HCI_VARIABLE_SIZE][FBT_HCI_LINK_KEY_SIZE];
|
||||
|
||||
} FBT_HCI_RETURN_LINK_KEYS, *PFBT_HCI_RETURN_LINK_KEYS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char BD_ADDR[FBT_HCI_BDADDR_SIZE];
|
||||
|
||||
} FBT_HCI_PIN_CODE_REQUEST, *PFBT_HCI_PIN_CODE_REQUEST;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char BD_ADDR[FBT_HCI_BDADDR_SIZE];
|
||||
|
||||
} FBT_HCI_LINK_KEY_REQUEST, *PFBT_HCI_LINK_KEY_REQUEST;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char BD_ADDR[FBT_HCI_BDADDR_SIZE];
|
||||
unsigned char LinkKey[FBT_HCI_LINK_KEY_SIZE];
|
||||
|
||||
} FBT_HCI_LINK_KEY_NOTIFICATION, *PFBT_HCI_LINK_KEY_NOTIFICATION;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char HCICommandPacket[FBT_HCI_CMD_MAX_SIZE];
|
||||
|
||||
} FBT_HCI_LOOPBACK_COMMAND, *PFBT_HCI_LOOPBACK_COMMAND;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char LinkType;
|
||||
|
||||
} FBT_HCI_DATA_BUFFER_OVERFLOW, *PFBT_HCI_DATA_BUFFER_OVERFLOW;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
unsigned char LmpMaxSlots;
|
||||
|
||||
} FBT_HCI_MAX_SLOTS_CHANGE, *PFBT_HCI_MAX_SLOTS_CHANGE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char Status;
|
||||
unsigned short ConnectionHandle;
|
||||
unsigned short ClockOffset;
|
||||
|
||||
} FBT_HCI_READ_CLOCK_OFFSET_COMPLETE, *PFBT_HCI_READ_CLOCK_OFFSET_COMPLETE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char Status;
|
||||
unsigned short ConnectionHandle;
|
||||
unsigned short PacketType;
|
||||
|
||||
} FBT_HCI_CONNECTION_PACKET_TYPE_CHANGED, *PFBT_HCI_CONNECTION_PACKET_TYPE_CHANGED;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned short ConnectionHandle;
|
||||
|
||||
} FBT_HCI_QOS_VIOLATION, *PFBT_HCI_QOS_VIOLATION;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char BD_ADDR[FBT_HCI_BDADDR_SIZE];
|
||||
unsigned char PageScanMode;
|
||||
|
||||
} FBT_HCI_PAGE_SCAN_MODE_CHANGE, *PFBT_HCI_PAGE_SCAN_MODE_CHANGE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FBT_HCI_EVENT_HEADER EventHeader;
|
||||
unsigned char BD_ADDR[FBT_HCI_BDADDR_SIZE];
|
||||
unsigned char PageScanRepetitionMode;
|
||||
|
||||
} FBT_HCI_PAGE_SCAN_REPETITION_MODE_CHANGE, *PFBT_HCI_PAGE_SCAN_REPETITION_MODE_CHANGE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned char Status;
|
||||
unsigned char HCIVersion;
|
||||
unsigned short HCIRevision;
|
||||
unsigned char LMPVersion;
|
||||
unsigned short Manufacturer;
|
||||
unsigned short LMPSubVersion;
|
||||
|
||||
} FBT_HCI_READ_LOCAL_VERSION_INFORMATION_COMPLETE;
|
||||
|
||||
// Data Packet Structure
|
||||
typedef struct
|
||||
{
|
||||
unsigned short ConnectionHandle: 12;
|
||||
unsigned short PacketBoundary: 2;
|
||||
unsigned short Broadcast: 2;
|
||||
unsigned short DataLength;
|
||||
unsigned char Data[1];
|
||||
|
||||
} FBT_HCI_DATA_PACKET, *PFBT_HCI_DATA_PACKET;
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
#endif // _FBT_HCI_EVENT_STRUCTS_H
|
45
drivers/bluetooth/fbtusb/include/fbtHciEvents.h
Executable file
|
@ -0,0 +1,45 @@
|
|||
#ifndef _FBT_HCI_EVENTS_H
|
||||
#define _FBT_HCI_EVENTS_H
|
||||
|
||||
#include "fbtHciEventStructs.h"
|
||||
|
||||
#define FBT_HCI_EVENT_INVALID 0x00
|
||||
#define FBT_HCI_EVENT_INQUIRY_COMPLETE 0x01
|
||||
#define FBT_HCI_EVENT_INQUIRY_RESULT 0x02
|
||||
#define FBT_HCI_EVENT_CONNECTION_COMPLETE 0x03
|
||||
#define FBT_HCI_EVENT_CONNECTION_REQUEST 0x04
|
||||
#define FBT_HCI_EVENT_DISCONNECTION_COMPLETE 0x05
|
||||
#define FBT_HCI_EVENT_AUTHENTICATION_COMPLETE 0x06
|
||||
#define FBT_HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE 0x07
|
||||
#define FBT_HCI_EVENT_ENCRYPTION_CHANGE_EVENT 0x08
|
||||
#define FBT_HCI_EVENT_CHANGE_CONNECTION_LINK_KEY_COMPLETE 0x09
|
||||
#define FBT_HCI_EVENT_MASTER_LINK_KEY_COMPLETE 0x0a
|
||||
#define FBT_HCI_EVENT_READ_REMOTE_SUPPORTED_FEATURES 0x0b
|
||||
#define FBT_HCI_EVENT_READ_REMOTE_VERSION_INFORMATION 0x0c
|
||||
#define FBT_HCI_EVENT_QOS_SETUP_COMPLETE 0x0d
|
||||
#define FBT_HCI_EVENT_COMMAND_COMPLETE 0x0e
|
||||
#define FBT_HCI_EVENT_COMMAND_STATUS 0x0f
|
||||
#define FBT_HCI_EVENT_HARDWARE_ERROR 0x10
|
||||
#define FBT_HCI_EVENT_FLUSH_OCCURRED 0x11
|
||||
#define FBT_HCI_EVENT_ROLE_CHANGE 0x12
|
||||
#define FBT_HCI_EVENT_NUMBER_OF_COMPLETED_PACKETS 0x13
|
||||
#define FBT_HCI_EVENT_MODE_CHANGE 0x14
|
||||
#define FBT_HCI_EVENT_RETURN_LINK_KEYS 0x15
|
||||
#define FBT_HCI_EVENT_PIN_CODE_REQUEST 0x16
|
||||
#define FBT_HCI_EVENT_LINK_KEY_REQUEST 0x17
|
||||
#define FBT_HCI_EVENT_LINK_KEY_NOTIFICATION 0x18
|
||||
#define FBT_HCI_EVENT_LOOPBACK_COMMAND 0x19
|
||||
#define FBT_HCI_EVENT_DATA_BUFFER_OVERFLOW_EVENT 0x1a
|
||||
#define FBT_HCI_EVENT_MAX_SLOTS_CHANGE 0x1b
|
||||
#define FBT_HCI_EVENT_READ_CLOCK_OFFSET 0x1c
|
||||
#define FBT_HCI_EVENT_CONNECTION_PACKET_TYPE_CHANGED 0x1d
|
||||
#define FBT_HCI_EVENT_QOS_VIOLATION 0x1e
|
||||
#define FBT_HCI_EVENT_PAGE_SCAN_MODE_CHANGE 0x1f
|
||||
#define FBT_HCI_EVENT_PAGE_SCAN_REPETITION_MODE_CHANGE 0x20
|
||||
#define FBT_HCI_EVENT_FLOW_SPECIFICATION_COMPLETE 0x21
|
||||
#define FBT_HCI_EVENT_INQUIRY_RESULT_WITH_RSSI 0x22
|
||||
#define FBT_HCI_EVENT_READ_REMOTE_EXTENDED_FEATURES_COMPLETE 0x23
|
||||
#define FBT_HCI_EVENT_SYNCHRONOUS_CONNECTION_COMPLETE 0x24
|
||||
#define FBT_HCI_EVENT_SYNCHRONOUS_CONNECTION_CHANGED 0x25
|
||||
|
||||
#endif // _FBT_HCI_EVENTS_H
|
71
drivers/bluetooth/fbtusb/include/fbtHciLocal.h
Executable file
|
@ -0,0 +1,71 @@
|
|||
#ifndef _LOCAL_HCI_H_
|
||||
#define _LOCAL_HCI_H_
|
||||
|
||||
#include "fbtHci.h"
|
||||
|
||||
#define MAX_QUEUED_COMMANDS 100
|
||||
|
||||
typedef struct _QueuedCommand
|
||||
{
|
||||
USHORT nCommand;
|
||||
BYTE *pResultBuffer;
|
||||
DWORD dwBufferSize;
|
||||
HANDLE hEvent;
|
||||
|
||||
} QueuedCommand, *PQueuedCommand;
|
||||
|
||||
// Local HCI command abstraction
|
||||
// 1. Send Command
|
||||
// 2. Wait for Command status / Command complete
|
||||
class CHciLocal : public CHci
|
||||
{
|
||||
public:
|
||||
CHciLocal(void);
|
||||
virtual ~CHciLocal(void);
|
||||
|
||||
virtual int QueueCommand(USHORT nCommand, BYTE *pResultBuffer=NULL, DWORD dwBufferSize=0);
|
||||
virtual int QueueCommandStatus(USHORT nCommand);
|
||||
virtual void DeQueueCommand(int nSlot);
|
||||
virtual DWORD ClearQueue(void);
|
||||
virtual PQueuedCommand GetQueuedCommand(int nSlot);
|
||||
|
||||
virtual DWORD WaitForCommandComplete(int nSlot);
|
||||
virtual DWORD WaitForCommandStatus(int nSlot, BYTE &nStatus);
|
||||
|
||||
virtual DWORD SendReset(void);
|
||||
virtual DWORD SendWriteClassOfDevice(BYTE ClassOfDevice[FBT_HCI_DEVICE_CLASS_SIZE]);
|
||||
virtual DWORD SendSetEventFilter(
|
||||
BYTE nFilterType,
|
||||
BYTE nFilterConditionType,
|
||||
BYTE nCondition[FBT_HCI_MAX_CONDITION_SIZE],
|
||||
BYTE nConditionBytes);
|
||||
|
||||
virtual DWORD SendInquiry(ULONG nLAP, BYTE nInquiryLength, BYTE nNumResponses);
|
||||
virtual DWORD SendInquiryCancel(void);
|
||||
virtual DWORD SendCreateConnection(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE],
|
||||
USHORT nPacketType,
|
||||
BYTE nPageScanRepetitionMode,
|
||||
BYTE nPageScanMode,
|
||||
USHORT nClockOffset,
|
||||
BYTE nAllowRoleSwitch);
|
||||
|
||||
virtual DWORD SendDisconnect(USHORT nConnectionHandle, BYTE nReason);
|
||||
virtual DWORD SendSwitchRole(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE nRole);
|
||||
virtual DWORD SendRemoteNameRequest(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE nPageScanRepetitionMode, BYTE nPageScanMode, USHORT nClockOffset);
|
||||
virtual DWORD SendReadLocalVersionInformation(FBT_HCI_READ_LOCAL_VERSION_INFORMATION_COMPLETE &CommandComplete);
|
||||
|
||||
virtual DWORD OnEvent(PFBT_HCI_EVENT_HEADER pEvent, DWORD dwLength);
|
||||
|
||||
virtual DWORD CommandCompleteHandler(USHORT nCommand, BYTE *pParameters, DWORD dwParameterLength);
|
||||
virtual DWORD CommandStatusHandler(BYTE nStatus, USHORT nCommand);
|
||||
|
||||
protected:
|
||||
virtual int FindCommandSlot(USHORT nCommand);
|
||||
|
||||
QueuedCommand m_QueuedCommands[MAX_QUEUED_COMMANDS];
|
||||
CRITICAL_SECTION m_QueueCriticalSection;
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif // _LOCAL_HCI_H_
|
125
drivers/bluetooth/fbtusb/include/fbtHciOpCodes.h
Executable file
|
@ -0,0 +1,125 @@
|
|||
#ifndef _FBT_HCI_OPCODES_H
|
||||
#define _FBT_HCI_OPCODES_H
|
||||
|
||||
// Opcode Group Field (OGF) codes
|
||||
#define FBT_HCI_OGF_LINK_CONTROL 0x01 // Link control group
|
||||
#define FBT_HCI_OGF_LINK_POLICY 0x02 // Link polic group
|
||||
#define FBT_HCI_OGF_CONTROL_BASEBAND 0x03 // Host Controller & Baseband group
|
||||
#define FBT_HCI_OGF_INFORMATIONAL_PARAMETERS 0x04 // Information parameters group
|
||||
#define FBT_HCI_OGF_STATUS_PARAMETERS 0x05 // Status parameters group
|
||||
#define FBT_HCI_OGF_TESTING 0x06 // Test group
|
||||
|
||||
// Opcode Command Field (OCF) codes
|
||||
// Link control commands
|
||||
#define FBT_HCI_OCF_INQUIRY 0x0001
|
||||
#define FBT_HCI_OCF_INQUIRY_CANCEL 0x0002
|
||||
#define FBT_HCI_OCF_PERIODIC_INQUIRY_MODE 0x0003
|
||||
#define FBT_HCI_OCF_EXIT_PERIODIC_INQUIRY_MODE 0x0004
|
||||
#define FBT_HCI_OCF_CREATE_CONNECTION 0x0005
|
||||
#define FBT_HCI_OCF_DISCONNECT 0x0006
|
||||
#define FBT_HCI_OCF_ADD_SCO_CONNECTION 0x0007
|
||||
|
||||
#define FBT_HCI_OCF_ACCEPT_CONNECTION_REQUEST 0x0009
|
||||
#define FBT_HCI_OCF_REJECT_CONNECTION_REQUEST 0x000A
|
||||
#define FBT_HCI_OCF_LINK_KEY_REQUEST_REPLY 0x000B
|
||||
#define FBT_HCI_OCF_LINK_KEY_REQUEST_NEGATIVE_REPLY 0x000C
|
||||
#define FBT_HCI_OCF_PIN_CODE_REQUEST_REPLY 0x000D
|
||||
#define FBT_HCI_OCF_PIN_CODE_REQUEST_NEGATIVE_REPLY 0x000E
|
||||
#define FBT_HCI_OCF_CHANGE_CONNECTION_PACKET_TYPE 0x000F
|
||||
|
||||
#define FBT_HCI_OCF_AUTHENTICATION_REQUESTED 0x0011
|
||||
#define FBT_HCI_OCF_SET_CONNECTION_ENCRYPTION 0x0013
|
||||
#define FBT_HCI_OCF_CHANGE_CONNECTION_LINK_KEY 0x0015
|
||||
#define FBT_HCI_OCF_MASTER_LINK_KEY 0x0017
|
||||
#define FBT_HCI_OCF_REMOTE_NAME_REQUEST 0x0019
|
||||
#define FBT_HCI_OCF_READ_REMOTE_SUPPORTED_FEATURES 0x001B
|
||||
#define FBT_HCI_OCF_READ_REMOTE_VERSION_INFORMATION 0x001D
|
||||
#define FBT_HCI_OCF_READ_CLOCK_OFFSET 0x001F
|
||||
|
||||
// Link policy commands
|
||||
#define FBT_HCI_OCF_HOLD_MODE 0x0001
|
||||
#define FBT_HCI_OCF_SNIFF_MODE 0x0003
|
||||
#define FBT_HCI_OCF_EXIT_SNIFF_MODE 0x0004
|
||||
#define FBT_HCI_OCF_PARK_MODE 0x0005
|
||||
#define FBT_HCI_OCF_EXIT_PARK_MODE 0x0006
|
||||
#define FBT_HCI_OCF_QOS_SETUP 0x0007
|
||||
#define FBT_HCI_OCF_ROLE_DISCOVERY 0x0009
|
||||
#define FBT_HCI_OCF_SWITCH_ROLE 0x000B
|
||||
#define FBT_HCI_OCF_READ_LINK_POLICY_SETTINGS 0x000C
|
||||
#define FBT_HCI_OCF_WRITE_LINK_POLICY_SETTINGS 0x000D
|
||||
|
||||
// Host controller & baseband commands
|
||||
#define FBT_HCI_OCF_SET_EVENT_MASK 0x0001
|
||||
#define FBT_HCI_OCF_RESET 0x0003
|
||||
#define FBT_HCI_OCF_SET_EVENT_FILTER 0x0005
|
||||
#define FBT_HCI_OCF_FLUSH 0x0008
|
||||
#define FBT_HCI_OCF_READ_PIN_TYPE 0x0009
|
||||
#define FBT_HCI_OCF_WRITE_PIN_TYPE 0x000A
|
||||
#define FBT_HCI_OCF_CREATE_NEW_UNIT_KEY 0x000B
|
||||
#define FBT_HCI_OCF_READ_STORED_LINK_KEY 0x000D
|
||||
#define FBT_HCI_OCF_WRITE_STORED_LINK_KEY 0x0011
|
||||
#define FBT_HCI_OCF_DELETE_STORED_LINK_KEY 0x0012
|
||||
#define FBT_HCI_OCF_CHANGE_LOCAL_NAME 0x0013
|
||||
#define FBT_HCI_OCF_READ_LOCAL_NAME 0x0014
|
||||
#define FBT_HCI_OCF_READ_CONNECTION_ACCEPT_TIMEOUT 0x0015
|
||||
#define FBT_HCI_OCF_WRITE_CONNECTION_ACCEPT_TIMEOUT 0x0016
|
||||
#define FBT_HCI_OCF_READ_PAGE_TIMEOUT 0x0017
|
||||
#define FBT_HCI_OCF_WRITE_PAGE_TIMEOUT 0x0018
|
||||
#define FBT_HCI_OCF_READ_SCAN_ENABLE 0x0019
|
||||
#define FBT_HCI_OCF_WRITE_SCAN_ENABLE 0x001A
|
||||
#define FBT_HCI_OCF_READ_PAGE_SCAN_ACTIVITY 0x001B
|
||||
#define FBT_HCI_OCF_WRITE_PAGE_SCAN_ACTIVITY 0x001C
|
||||
#define FBT_HCI_OCF_READ_INQUIRY_SCAN_ACTIVITY 0x001D
|
||||
#define FBT_HCI_OCF_WRITE_INQUIRY_SCAN_ACTIVITY 0x001E
|
||||
#define FBT_HCI_OCF_READ_AUTHENTICATION_ENABLE 0x001F
|
||||
#define FBT_HCI_OCF_WRITE_AUTHENTICATION_ENABLE 0x0020
|
||||
#define FBT_HCI_OCF_READ_ENCRYPTION_MODE 0x0021
|
||||
#define FBT_HCI_OCF_WRITE_ENCRYPTION_MODE 0x0022
|
||||
#define FBT_HCI_OCF_READ_CLASS_OF_DEVICE 0x0023
|
||||
#define FBT_HCI_OCF_WRITE_CLASS_OF_DEVICE 0x0024
|
||||
#define FBT_HCI_OCF_READ_VOICE_SETTING 0x0025
|
||||
#define FBT_HCI_OCF_WRITE_VOICE_SETTING 0x0026
|
||||
#define FBT_HCI_OCF_READ_AUTOMATIC_FLUSH_TIMEOUT 0x0027
|
||||
#define FBT_HCI_OCF_WRITE_AUTOMATIC_FLUSH_TIMEOUT 0x0028
|
||||
#define FBT_HCI_OCF_READ_NUM_BROADCAST_RETRANSMISSIONS 0x0029
|
||||
#define FBT_HCI_OCF_WRITE_NUM_BROADCAST_RETRANSMISSIONS 0x002A
|
||||
#define FBT_HCI_OCF_READ_HOLD_MODE_ACTIVITY 0x002B
|
||||
#define FBT_HCI_OCF_WRITE_HOLD_MODE_ACTIVITY 0x002C
|
||||
#define FBT_HCI_OCF_READ_TRANSMIT_POWER_LEVEL 0x002D
|
||||
#define FBT_HCI_OCF_READ_SCO_FLOW_CONTROL_ENABLE 0x002E
|
||||
#define FBT_HCI_OCF_WRITE_SCO_FLOW_CONTROL_ENABLE 0x002F
|
||||
#define FBT_HCI_OCF_SET_HOST_CONTROLLER_TO_HOST_FLOW_CONTROL 0x0031
|
||||
#define FBT_HCI_OCF_HOST_BUFFER_SIZE 0x0033
|
||||
#define FBT_HCI_OCF_HOST_NUMBER_OF_COMPLETED_PACKETS 0x0035
|
||||
#define FBT_HCI_OCF_READ_LINK_SUPERVISION_TIMEOUT 0x0036
|
||||
#define FBT_HCI_OCF_WRITE_LINK_SUPERVISION_TIMEOUT 0x0037
|
||||
#define FBT_HCI_OCF_READ_NUMBER_OF_SUPPORTED_IAC 0x0038
|
||||
#define FBT_HCI_OCF_READ_CURRENT_IAC_LAP 0x0039
|
||||
#define FBT_HCI_OCF_WRITE_CURRENT_IAC_LAP 0x003A
|
||||
#define FBT_HCI_OCF_READ_PAGE_SCAN_PERIOD_MODE 0x003B
|
||||
#define FBT_HCI_OCF_WRITE_PAGE_SCAN_PERIOD_MODE 0x003C
|
||||
#define FBT_HCI_OCF_READ_PAGE_SCAN_MODE 0x003D
|
||||
#define FBT_HCI_OCF_WRITE_PAGE_SCAN_MODE 0x003E
|
||||
|
||||
// Informational parameter commands
|
||||
#define FBT_HCI_OCF_READ_LOCAL_VERSION_INFORMATION 0x0001
|
||||
#define FBT_HCI_OCF_LOCAL_SUPPPROTED_FEATURES 0x0003
|
||||
#define FBT_HCI_OCF_READ_BUFFER_SIZE 0x0005
|
||||
#define FBT_HCI_OCF_READ_COUNTRY_CODE 0x0007
|
||||
#define FBT_HCI_OCF_READ_BD_ADDR 0x0009
|
||||
|
||||
// Status parameters commands
|
||||
#define FBT_HCI_OCF_READ_FAILED_CONTACT_COUNTER 0x0001
|
||||
#define FBT_HCI_OCF_RESET_FAILED_CONTACT_COUNTER 0x0002
|
||||
#define FBT_HCI_OCF_GET_LINK_QUALITY 0x0003
|
||||
#define FBT_HCI_OCF_READ_RSSI 0x0005
|
||||
|
||||
// Test commands
|
||||
#define FBT_HCI_OCF_READ_LOOPBACK_MODE 0x0001
|
||||
#define FBT_HCI_OCF_WRITE_LOOPBACK_MODE 0x0002
|
||||
#define FBT_HCI_OCF_ENABLE_DEVICE_UNDER_TEST_MODE 0x0003
|
||||
|
||||
#define FBT_HCI_OGF_FROM_COMMAND(cmd) (cmd>>10)
|
||||
#define FBT_HCI_OCF_FROM_COMMAND(cmd) (cmd&0x3FF)
|
||||
|
||||
#endif // _FBT_HCI_OPCODES_H
|
51
drivers/bluetooth/fbtusb/include/fbtHciParms.h
Executable file
|
@ -0,0 +1,51 @@
|
|||
#ifndef _FBT_HCI_PARAMETERS_H
|
||||
#define _FBT_HCI_PARAMETERS_H
|
||||
|
||||
// HCI header types
|
||||
#define FBT_HCI_SYNC_HCI_COMMAND_PACKET 0x01
|
||||
#define FBT_HCI_SYNC_ACL_DATA_PACKET 0x02
|
||||
#define FBT_HCI_SYNC_SCO_DATA_PACKET 0x03
|
||||
#define FBT_HCI_SYNC_HCI_EVENT_PACKET 0x04
|
||||
|
||||
// Packet types for use in CreateConnection
|
||||
#define FBT_HCI_PACKET_TYPE_DM1 0x0008 // 1 time slot, 1-18 bytes of data, FEC encoded
|
||||
#define FBT_HCI_PACKET_TYPE_DH1 0x0010 // 1 time slot, 1-28 bytes of data, not FEC encoded
|
||||
|
||||
#define FBT_HCI_PACKET_TYPE_DM3 0x0400 // 3 time slots, 2-123 bytes of data, FEC encoded
|
||||
#define FBT_HCI_PACKET_TYPE_DH3 0x0800 // 3 time slots, 2-185 bytes of data, not FEC encoded
|
||||
|
||||
#define FBT_HCI_PACKET_TYPE_DM5 0x4000 // 5 time slots, 2-226 bytes of data, FEC encoded
|
||||
#define FBT_HCI_PACKET_TYPE_DH5 0x8000 // 3 time slots, 2-341 bytes of data, not FEC encoded
|
||||
|
||||
#define FBT_HCI_PACKET_TYPE_ALL (FBT_HCI_PACKET_TYPE_DM1|FBT_HCI_PACKET_TYPE_DH1|FBT_HCI_PACKET_TYPE_DM3|FBT_HCI_PACKET_TYPE_DH3|FBT_HCI_PACKET_TYPE_DM5|FBT_HCI_PACKET_TYPE_DH5)
|
||||
|
||||
// LAP codes for use in Inquiry
|
||||
#define FBT_HCI_LAP_GIAC 0x9E8B33
|
||||
#define FBT_HCI_LAP_LIAC 0x9E8B00
|
||||
|
||||
// Link Types
|
||||
#define FBT_HCI_LINK_TYPE_SCO 0x00
|
||||
#define FBT_HCI_LINK_TYPE_ACL 0x01
|
||||
|
||||
// Roles
|
||||
#define FBT_HCI_ROLE_MASTER 0x00
|
||||
#define FBT_HCI_ROLE_SLAVE 0x01
|
||||
|
||||
// Event Filters
|
||||
#define FBT_HCI_FILTER_NONE 0x00
|
||||
#define FBT_HCI_FILTER_INQUIRY_RESULT 0x01
|
||||
#define FBT_HCI_FILTER_CONNECTION_SETUP 0x02
|
||||
|
||||
#define FBT_HCI_FILTER_ALL 0x00
|
||||
#define FBT_HCI_FILTER_CLASS_OF_DEVICE 0x01
|
||||
#define FBT_HCI_FILTER_BDADDR 0x02
|
||||
|
||||
// Data packet parameters
|
||||
#define FBT_HCI_PACKET_BOUNDARY_FRAGMENT 0x01
|
||||
#define FBT_HCI_PACKET_BOUNDARY_START 0x02
|
||||
|
||||
#define FBT_HCI_BROADCAST_POINT_TO_POINT 0x00
|
||||
#define FBT_HCI_BROADCAST_ACTIVE_SLAVE 0x01
|
||||
#define FBT_HCI_BROADCAST_PARKED_SLAVE 0x02
|
||||
|
||||
#endif // _FBT_HCI_PARAMETERS_H
|
51
drivers/bluetooth/fbtusb/include/fbtHciRoundTrip.h
Executable file
|
@ -0,0 +1,51 @@
|
|||
#ifndef _ROUND_TRIP_HCI_H_
|
||||
#define _ROUND_TRIP_HCI_H_
|
||||
|
||||
#include "fbtHciLocal.h"
|
||||
|
||||
// Complete round trip HCI abstraction
|
||||
// 1. Send Command
|
||||
// 2. Wait for Command status / Command complete
|
||||
// 3. Wait fo event
|
||||
class CHciRoundTrip : public CHciLocal
|
||||
{
|
||||
public:
|
||||
|
||||
CHciRoundTrip();
|
||||
virtual ~CHciRoundTrip();
|
||||
|
||||
virtual DWORD QueueEvent(BYTE EventCode, LPVOID pParameters, DWORD dwParameterLength);
|
||||
virtual DWORD WaitForEvent();
|
||||
|
||||
virtual DWORD OnEvent(PFBT_HCI_EVENT_HEADER pEvent, DWORD Length);
|
||||
|
||||
virtual DWORD ReadBDADDR(BYTE *BDADDR);
|
||||
virtual DWORD ReadClassOfDevice(BYTE *ClassOfDevice);
|
||||
virtual DWORD ReadLocalName(BYTE *Name);
|
||||
virtual DWORD CreateConnection(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE],
|
||||
USHORT PacketType,
|
||||
BYTE PageScanRepetitionMode,
|
||||
BYTE PageScanMode,
|
||||
USHORT ClockOffset,
|
||||
BYTE AllowRoleSwitch,
|
||||
USHORT &ConnectionHandle);
|
||||
|
||||
virtual DWORD Disconnect(USHORT ConnectionHandler, BYTE Reason);
|
||||
virtual DWORD SwitchRole(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE Role);
|
||||
virtual DWORD RemoteNameRequest(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE],
|
||||
BYTE PageScanRepetitionMode,
|
||||
BYTE PageScanMode,
|
||||
USHORT ClockOffset,
|
||||
BYTE Name[FBT_HCI_NAME_SIZE]);
|
||||
|
||||
protected:
|
||||
BYTE m_PendingEvent;
|
||||
LPVOID m_pEventParameters;
|
||||
DWORD m_dwEventParameterLength;
|
||||
|
||||
HANDLE m_hEventSignal;
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif // _ROUND_TRIP_HCI_H_
|
27
drivers/bluetooth/fbtusb/include/fbtHciSizes.h
Executable file
|
@ -0,0 +1,27 @@
|
|||
#ifndef _FBT_HCI_SIZES_H
|
||||
#define _FBT_HCI_SIZES_H
|
||||
|
||||
// Sizes
|
||||
#define FBT_HCI_CMD_MIN_SIZE 3
|
||||
#define FBT_HCI_CMD_MAX_SIZE 258
|
||||
|
||||
#define FBT_HCI_EVENT_MAX_SIZE 257
|
||||
|
||||
#define FBT_HCI_DATA_MIN_SIZE 5
|
||||
#define FBT_HCI_DATA_MAX_SIZE 343
|
||||
|
||||
#define FBT_HCI_BDADDR_SIZE 6
|
||||
#define FBT_HCI_NAME_SIZE 248
|
||||
|
||||
#define FBT_HCI_DEVICE_CLASS_SIZE 3
|
||||
|
||||
#define FBT_HCI_LAP_SIZE 3
|
||||
#define FBT_HCI_MAX_CONDITION_SIZE 7
|
||||
|
||||
#define FBT_HCI_LINK_KEY_SIZE 16
|
||||
#define FBT_HCI_PIN_CODE_SIZE 16
|
||||
|
||||
#define FBT_HCI_VARIABLE_SIZE 1
|
||||
|
||||
|
||||
#endif // _FBT_HCI_SIZES_H
|
22
drivers/bluetooth/fbtusb/include/fbtSeXcpt.h
Executable file
|
@ -0,0 +1,22 @@
|
|||
#ifndef __SEEXCEPTION_H__
|
||||
#define __SEEXCEPTION_H__
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
class fbtSeException
|
||||
{
|
||||
public:
|
||||
fbtSeException(unsigned int nSeCode, _EXCEPTION_POINTERS* pExcPointers);
|
||||
fbtSeException(fbtSeException & CseExc);
|
||||
|
||||
unsigned int GetSeCode(void);
|
||||
|
||||
private:
|
||||
unsigned int m_nSeCode;
|
||||
_EXCEPTION_POINTERS* m_pExcPointers;
|
||||
|
||||
};
|
||||
|
||||
void fbtXcptEnableSEHandling();
|
||||
|
||||
#endif //__SEEXCEPTION_H__
|
61
drivers/bluetooth/fbtusb/include/fbtdev.h
Executable file
|
@ -0,0 +1,61 @@
|
|||
// Copyright (c) 2004, Antony C. Roberts
|
||||
|
||||
// Use of this file is subject to the terms
|
||||
// described in the LICENSE.TXT file that
|
||||
// accompanies this file.
|
||||
//
|
||||
// Your use of this file indicates your
|
||||
// acceptance of the terms described in
|
||||
// LICENSE.TXT.
|
||||
//
|
||||
// http://www.freebt.net
|
||||
|
||||
#ifndef _FREEBT_DEV_H
|
||||
#define _FREEBT_DEV_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
NTSTATUS FreeBT_DispatchCreate(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
NTSTATUS FreeBT_DispatchClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
NTSTATUS FreeBT_DispatchDevCtrl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
NTSTATUS FreeBT_ResetPipe(IN PDEVICE_OBJECT DeviceObject, IN USBD_PIPE_HANDLE PipeInfo);
|
||||
NTSTATUS FreeBT_ResetDevice(IN PDEVICE_OBJECT DeviceObject);
|
||||
NTSTATUS FreeBT_GetPortStatus(IN PDEVICE_OBJECT DeviceObject, IN PULONG PortStatus);
|
||||
NTSTATUS FreeBT_ResetParentPort(IN IN PDEVICE_OBJECT DeviceObject);
|
||||
|
||||
NTSTATUS SubmitIdleRequestIrp(IN PDEVICE_EXTENSION DeviceExtension);
|
||||
VOID IdleNotificationCallback(IN PDEVICE_EXTENSION DeviceExtension);
|
||||
NTSTATUS IdleNotificationRequestComplete(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp,
|
||||
IN PDEVICE_EXTENSION DeviceExtension);
|
||||
|
||||
VOID CancelSelectSuspend(IN PDEVICE_EXTENSION DeviceExtension);
|
||||
VOID PoIrpCompletionFunc(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN UCHAR MinorFunction,
|
||||
IN POWER_STATE PowerState,
|
||||
IN PVOID Context,
|
||||
IN PIO_STATUS_BLOCK IoStatus);
|
||||
|
||||
VOID PoIrpAsyncCompletionFunc(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN UCHAR MinorFunction,
|
||||
IN POWER_STATE PowerState,
|
||||
IN PVOID Context,
|
||||
IN PIO_STATUS_BLOCK IoStatus);
|
||||
|
||||
VOID WWIrpCompletionFunc(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN UCHAR MinorFunction,
|
||||
IN POWER_STATE PowerState,
|
||||
IN PVOID Context,
|
||||
IN PIO_STATUS_BLOCK IoStatus);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif
|
134
drivers/bluetooth/fbtusb/include/fbthci.h
Executable file
|
@ -0,0 +1,134 @@
|
|||
#ifndef _HCI_H_
|
||||
#define _HCI_H_
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
#include "fbthw.h"
|
||||
#include "fbtHciDefs.h"
|
||||
|
||||
// Number of overlapped requests to have pending in the driver
|
||||
#define HCI_NUMBER_OF_OVERLAPPED_LISTENS MAXIMUM_WAIT_OBJECTS-1
|
||||
|
||||
// HCI Abstraction layer
|
||||
class CHci;
|
||||
typedef struct
|
||||
{
|
||||
PFBT_HCI_EVENT_HEADER pEvent;
|
||||
DWORD dwLength;
|
||||
CHci *pThis;
|
||||
|
||||
} HCI_EVENT, *PHCI_EVENT;
|
||||
|
||||
class CHci : public CBTHW
|
||||
{
|
||||
public:
|
||||
CHci(void);
|
||||
virtual ~CHci(void);
|
||||
|
||||
virtual DWORD StartEventListener(void);
|
||||
virtual DWORD StopEventListener(void);
|
||||
virtual DWORD OnEvent(PFBT_HCI_EVENT_HEADER pEvent, DWORD Length);
|
||||
|
||||
static LPCTSTR GetEventText(BYTE Event);
|
||||
static LPCTSTR GetStatusText(BYTE Status);
|
||||
static LPCTSTR GetManufacturerName(USHORT Company);
|
||||
|
||||
virtual DWORD OnCommandComplete(BYTE NumHCICommandPackets, USHORT CommandOpcode, BYTE *Parameters, DWORD ParameterLength);
|
||||
virtual DWORD OnCommandStatus(BYTE Status, BYTE NumHCICommandPackets, USHORT CommandOpcode);
|
||||
|
||||
virtual DWORD OnConnectionRequest(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], ULONG ClassOfDevice[FBT_HCI_DEVICE_CLASS_SIZE], BYTE LinkType);
|
||||
virtual DWORD OnConnectionComplete(BYTE Status, USHORT ConnectionHandle, BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE LinkType, BYTE EncryptionMode);
|
||||
virtual DWORD OnDisconnectionComplete(BYTE Status, USHORT ConnectionHandle, BYTE Reason);
|
||||
|
||||
virtual DWORD OnInquiryComplete(BYTE Status, BYTE NumResponses);
|
||||
virtual DWORD OnInquiryResult(BYTE NumResponses, BYTE BD_ADDR[FBT_HCI_VARIABLE_SIZE][FBT_HCI_BDADDR_SIZE], BYTE PageScanRepetitionMode[FBT_HCI_VARIABLE_SIZE], BYTE PageScanPeriodMode[FBT_HCI_VARIABLE_SIZE], BYTE PageScanMode[FBT_HCI_VARIABLE_SIZE], BYTE ClassOfDevice[FBT_HCI_VARIABLE_SIZE][FBT_HCI_DEVICE_CLASS_SIZE], USHORT ClockOffset[FBT_HCI_VARIABLE_SIZE]);
|
||||
|
||||
virtual DWORD OnRemoteNameRequestComplete(BYTE Status, BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE RemoteName[FBT_HCI_NAME_SIZE]);
|
||||
|
||||
virtual DWORD OnRoleChange(BYTE Status, BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE Role);
|
||||
|
||||
virtual DWORD OnPINCodeRequest(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE]);
|
||||
|
||||
virtual DWORD OnLinkKeyNotification(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE LinkKey[FBT_HCI_LINK_KEY_SIZE]);
|
||||
virtual DWORD OnLinkKeyRequest(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE]);
|
||||
|
||||
virtual DWORD OnAuthenticationComplete(BYTE Status, USHORT ConnectionHandle);
|
||||
|
||||
virtual DWORD OnReadLocalNameComplete(BYTE Status, BYTE Name[FBT_HCI_NAME_SIZE]);
|
||||
|
||||
virtual DWORD OnUnknown(PFBT_HCI_EVENT_HEADER pEvent, DWORD Length);
|
||||
|
||||
virtual DWORD SendReset(void);
|
||||
|
||||
virtual DWORD SendInquiry(ULONG LAP, BYTE InquiryLength, BYTE NumResponses);
|
||||
virtual DWORD SendInquiryCancel(void);
|
||||
|
||||
virtual DWORD SendReadBDADDR(void);
|
||||
|
||||
virtual DWORD SendWriteScanEnable(BYTE ScanEnable);
|
||||
|
||||
virtual DWORD SendWriteAuthenticationEnable(BYTE ScanEnable);
|
||||
|
||||
virtual DWORD SendSetEventFilter(BYTE FilterType,
|
||||
BYTE FilterConditionType,
|
||||
BYTE Condition[FBT_HCI_MAX_CONDITION_SIZE],
|
||||
BYTE ConditionBytes);
|
||||
|
||||
virtual DWORD SendReadClassOfDevice(void);
|
||||
|
||||
virtual DWORD SendWriteClassOfDevice(BYTE ClassOfDevice[FBT_HCI_DEVICE_CLASS_SIZE]);
|
||||
|
||||
virtual DWORD SendCreateConnection(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE],
|
||||
USHORT PacketType,
|
||||
BYTE PageScanRepetitionMode,
|
||||
BYTE PageScanMode,
|
||||
USHORT ClockOffset,
|
||||
BYTE AllowRoleSwitch);
|
||||
|
||||
virtual DWORD SendAcceptConnectionRequest(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE RoleSwitch);
|
||||
|
||||
virtual DWORD SendDisconnect(USHORT ConnectionHandle, BYTE Reason);
|
||||
|
||||
virtual DWORD SendWriteLinkSupervisionTimeout(USHORT ConnectionHandle, USHORT LinkSupervisionTimeout);
|
||||
|
||||
virtual DWORD SendWritePageTimeout(USHORT PageTimeout);
|
||||
|
||||
virtual DWORD SendRemoteNameRequest(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE PageScanRepetitionMode, BYTE PageScanMode, USHORT ClockOffset);
|
||||
|
||||
virtual DWORD SendReadLocalName(void);
|
||||
|
||||
virtual DWORD SendChangeLocalName(BYTE Name[FBT_HCI_NAME_SIZE]);
|
||||
|
||||
virtual DWORD SendSwitchRole(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE Role);
|
||||
|
||||
virtual DWORD SendPINCodeRequestReply(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE PINCodeLength, BYTE PINCode[FBT_HCI_PIN_CODE_SIZE]);
|
||||
virtual DWORD SendPINCodeRequestNegativeReply(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE]);
|
||||
|
||||
virtual DWORD SendLinkKeyRequestReply(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE LinkKey[FBT_HCI_LINK_KEY_SIZE]);
|
||||
virtual DWORD SendLinkKeyRequestNegativeReply(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE]);
|
||||
|
||||
virtual DWORD SendReadLocalVersionInformation(void);
|
||||
|
||||
DWORD CompareBDADDRs(BYTE BD_ADDR1[FBT_HCI_BDADDR_SIZE], BYTE BD_ADDR2[FBT_HCI_BDADDR_SIZE]);
|
||||
|
||||
protected:
|
||||
friend static DWORD CALLBACK Listener(LPVOID pContext);
|
||||
friend static DWORD EventHandler(PFBT_HCI_EVENT_HEADER pEvent, DWORD Length);
|
||||
|
||||
virtual DWORD SendHciCommand(PFBT_HCI_CMD_HEADER lpCommand, DWORD dwBufferSize);
|
||||
|
||||
DWORD SendListenForEvent(OVERLAPPED *pOverlapped, BYTE *pEventBuffer);
|
||||
|
||||
HANDLE m_hStopListeningEvent;
|
||||
HANDLE m_hListenerReadyEvent;
|
||||
HANDLE m_hListenerThread;
|
||||
|
||||
DWORD m_dwListenerThreadId;
|
||||
|
||||
OVERLAPPED m_Overlappeds[HCI_NUMBER_OF_OVERLAPPED_LISTENS];
|
||||
BYTE m_pEventBuffers[HCI_NUMBER_OF_OVERLAPPED_LISTENS][FBT_HCI_EVENT_MAX_SIZE];
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif // _HCI_H_
|
36
drivers/bluetooth/fbtusb/include/fbthw.h
Executable file
|
@ -0,0 +1,36 @@
|
|||
#ifndef _FBT_HW_H_
|
||||
#define _FBT_HW_H_
|
||||
|
||||
#include <winioctl.h>
|
||||
|
||||
// HW Driver Abstraction layer
|
||||
class CBTHW
|
||||
{
|
||||
public:
|
||||
// The driver is opened for OVERLAPPED I/O
|
||||
CBTHW();
|
||||
virtual ~CBTHW();
|
||||
|
||||
// Set the driver instances symbolic name
|
||||
void SetDeviceName(LPCTSTR szDeviceName);
|
||||
DWORD GetDeviceName(LPTSTR szBuffer, DWORD dwBufferSize);
|
||||
|
||||
// Open a handle to the driver instance
|
||||
virtual DWORD Attach(LPCSTR szDeviceName);
|
||||
virtual DWORD Detach();
|
||||
HANDLE GetDriverHandle();
|
||||
BOOL IsAttached() {return GetDriverHandle()!=INVALID_HANDLE_VALUE;}
|
||||
|
||||
// Send a command to the driver
|
||||
DWORD SendCommand(DWORD dwCommand, LPVOID lpInBuffer=NULL, DWORD dwInBufferSize=0, LPVOID lpOutBuffer=NULL, DWORD dwOutBufferSize=0, OVERLAPPED *pOverlapped=NULL);
|
||||
DWORD SendData(LPVOID lpBuffer, DWORD dwBufferSize, DWORD *dwBytesSent, OVERLAPPED *pOverlapped);
|
||||
DWORD GetData(LPVOID lpBuffer, DWORD dwBufferSize, DWORD *dwBytesRead, OVERLAPPED *pOverlapped);
|
||||
|
||||
protected:
|
||||
HANDLE m_hDriver;
|
||||
TCHAR m_szDeviceName[1024];
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif // _FBT_HW_H_
|
26
drivers/bluetooth/fbtusb/include/fbtlog.h
Executable file
|
@ -0,0 +1,26 @@
|
|||
#ifndef _FBT_DEBUG
|
||||
#define _FBT_DEBUG
|
||||
|
||||
#define fbtLog_None 0
|
||||
#define fbtLog_Failure 1
|
||||
#define fbtLog_Warning 2
|
||||
#define fbtLog_Notice 3
|
||||
#define fbtLog_Enter 4
|
||||
#define fbtLog_Exit 4
|
||||
#define fbtLog_Verbose 5
|
||||
#define fbtLog_Exception 0
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void fbtLog(unsigned int nLevel, const char *szText, ...);
|
||||
BOOL fbtLogSetFile(char *szDebugFile);
|
||||
void fbtLogSetLevel(unsigned int nLevel);
|
||||
unsigned int fbtLogGetLevel(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
61
drivers/bluetooth/fbtusb/include/fbtpnp.h
Executable file
|
@ -0,0 +1,61 @@
|
|||
// Copyright (c) 2004, Antony C. Roberts
|
||||
|
||||
// Use of this file is subject to the terms
|
||||
// described in the LICENSE.TXT file that
|
||||
// accompanies this file.
|
||||
//
|
||||
// Your use of this file indicates your
|
||||
// acceptance of the terms described in
|
||||
// LICENSE.TXT.
|
||||
//
|
||||
// http://www.freebt.net
|
||||
|
||||
#ifndef _FREEBT_PNP_H
|
||||
#define _FREEBT_PNP_H
|
||||
|
||||
#define REMOTE_WAKEUP_MASK 0x20
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
NTSTATUS FreeBT_DispatchPnP(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
NTSTATUS HandleStartDevice(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
NTSTATUS HandleQueryStopDevice(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
NTSTATUS HandleQueryRemoveDevice(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
NTSTATUS HandleCancelRemoveDevice(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
NTSTATUS HandleSurpriseRemoval(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
NTSTATUS HandleRemoveDevice(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
NTSTATUS HandleCancelStopDevice(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
NTSTATUS HandleStopDevice(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
NTSTATUS HandleQueryCapabilities(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
NTSTATUS ReadandSelectDescriptors(IN PDEVICE_OBJECT DeviceObject);
|
||||
NTSTATUS ConfigureDevice(IN PDEVICE_OBJECT DeviceObject);
|
||||
NTSTATUS SelectInterfaces(IN PDEVICE_OBJECT DeviceObject, IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor);
|
||||
NTSTATUS DeconfigureDevice(IN PDEVICE_OBJECT DeviceObject);
|
||||
NTSTATUS CallUSBD(IN PDEVICE_OBJECT DeviceObject, IN PURB Urb);
|
||||
VOID ProcessQueuedRequests(IN OUT PDEVICE_EXTENSION DeviceExtension);
|
||||
NTSTATUS FreeBT_GetRegistryDword(IN PWCHAR RegPath, IN PWCHAR ValueName, IN OUT PULONG Value);
|
||||
NTSTATUS FreeBT_DispatchClean(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
VOID DpcRoutine(
|
||||
IN PKDPC Dpc,
|
||||
IN PVOID DeferredContext,
|
||||
IN PVOID SystemArgument1,
|
||||
IN PVOID SystemArgument2);
|
||||
|
||||
VOID IdleRequestWorkerRoutine(IN PDEVICE_OBJECT DeviceObject, IN PVOID Context);
|
||||
NTSTATUS FreeBT_AbortPipes(IN PDEVICE_OBJECT DeviceObject);
|
||||
NTSTATUS IrpCompletionRoutine(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context);
|
||||
NTSTATUS CanStopDevice(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
NTSTATUS CanRemoveDevice(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
NTSTATUS ReleaseMemory(IN PDEVICE_OBJECT DeviceObject);
|
||||
LONG FreeBT_IoIncrement(IN OUT PDEVICE_EXTENSION DeviceExtension);
|
||||
LONG FreeBT_IoDecrement(IN OUT PDEVICE_EXTENSION DeviceExtension);
|
||||
BOOLEAN CanDeviceSuspend(IN PDEVICE_EXTENSION DeviceExtension);
|
||||
PCHAR PnPMinorFunctionString (IN UCHAR MinorFunction);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif
|
74
drivers/bluetooth/fbtusb/include/fbtpwr.h
Executable file
|
@ -0,0 +1,74 @@
|
|||
// Copyright (c) 2004, Antony C. Roberts
|
||||
|
||||
// Use of this file is subject to the terms
|
||||
// described in the LICENSE.TXT file that
|
||||
// accompanies this file.
|
||||
//
|
||||
// Your use of this file indicates your
|
||||
// acceptance of the terms described in
|
||||
// LICENSE.TXT.
|
||||
//
|
||||
// http://www.freebt.net
|
||||
|
||||
#ifndef _FREEBT_POWER_H
|
||||
#define _FREEBT_POWER_H
|
||||
|
||||
typedef struct _POWER_COMPLETION_CONTEXT
|
||||
{
|
||||
PDEVICE_OBJECT DeviceObject;
|
||||
PIRP SIrp;
|
||||
|
||||
} POWER_COMPLETION_CONTEXT, *PPOWER_COMPLETION_CONTEXT;
|
||||
|
||||
typedef struct _WORKER_THREAD_CONTEXT
|
||||
{
|
||||
PDEVICE_OBJECT DeviceObject;
|
||||
PIRP Irp;
|
||||
PIO_WORKITEM WorkItem;
|
||||
|
||||
} WORKER_THREAD_CONTEXT, *PWORKER_THREAD_CONTEXT;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
NTSTATUS FreeBT_DispatchPower(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
NTSTATUS HandleSystemQueryPower(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
NTSTATUS HandleSystemSetPower(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
NTSTATUS HandleDeviceQueryPower(PDEVICE_OBJECT DeviceObject, PIRP Irp);
|
||||
NTSTATUS SysPoCompletionRoutine(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PDEVICE_EXTENSION DeviceExtension);
|
||||
VOID SendDeviceIrp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
VOID DevPoCompletionRoutine(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN UCHAR MinorFunction,
|
||||
IN POWER_STATE PowerState,
|
||||
IN PVOID Context,
|
||||
IN PIO_STATUS_BLOCK IoStatus
|
||||
);
|
||||
|
||||
NTSTATUS HandleDeviceSetPower(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
NTSTATUS FinishDevPoUpIrp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PDEVICE_EXTENSION DeviceExtension);
|
||||
NTSTATUS SetDeviceFunctional(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PDEVICE_EXTENSION DeviceExtension);
|
||||
NTSTATUS FinishDevPoDnIrp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PDEVICE_EXTENSION DeviceExtension);
|
||||
NTSTATUS HoldIoRequests(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
VOID HoldIoRequestsWorkerRoutine(IN PDEVICE_OBJECT DeviceObject, IN PVOID Context);
|
||||
NTSTATUS QueueRequest(IN OUT PDEVICE_EXTENSION DeviceExtension, IN PIRP Irp);
|
||||
VOID CancelQueued(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
NTSTATUS WaitWakeCompletionRoutine(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PDEVICE_EXTENSION DeviceExtension);
|
||||
NTSTATUS IssueWaitWake(IN PDEVICE_EXTENSION DeviceExtension);
|
||||
VOID CancelWaitWake(IN PDEVICE_EXTENSION DeviceExtension);
|
||||
VOID WaitWakeCallback(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN UCHAR MinorFunction,
|
||||
IN POWER_STATE PowerState,
|
||||
IN PVOID Context,
|
||||
IN PIO_STATUS_BLOCK IoStatus
|
||||
);
|
||||
|
||||
PCHAR PowerMinorFunctionString(IN UCHAR MinorFunction);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif
|