AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Probleme mit NamedPipe/Mailslot nach Umstieg auf Windows 11
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit NamedPipe/Mailslot nach Umstieg auf Windows 11

Ein Thema von AJ_Oldendorf · begonnen am 14. Jan 2025 · letzter Beitrag vom 15. Jan 2025
Antwort Antwort
Seite 1 von 2  1 2      
AJ_Oldendorf

Registriert seit: 12. Jun 2009
390 Beiträge
 
Delphi 12 Athens
 
#1

Probleme mit NamedPipe/Mailslot nach Umstieg auf Windows 11

  Alt 14. Jan 2025, 06:39
Guten Morgen,
auf einem frisch installierten Windows 11 Rechner mit Delphi 12, erzeugt folgender Code ein ungültiges Handle:

Delphi-Quellcode:
  SlotName := '\\*\mailslot\MyPipeSlot';
  StrPCopy (NullStr, SlotName);

  SendSlotHandle := CreateFile(NullStr,
                               Generic_Write,
                               File_Share_Read,
                               nil,
                               Open_Existing,
                               File_Attribute_Normal,
                               0);

  if SendSlotHandle = Invalid_Handle_Value then
  begin
    Res := GetLastError;
  end;
SendSlotHandle ist jeweils Invalid_Handle_Value, egal ob 32 oder 64bit Compilat.
GetLastError sagt, 3025. Zu diesem Code finde ich gar nichts bei Microsoft.

Das ganze funktioniert unter Windows 10 auf einem anderen Rechner ohne Probleme.
Beide Rechner im gleichen Netzwerk, unterschiedlicher Computername, andere IP, gleiche Arbeitsgruppe.

Jemand eine Idee, warum das Handle unter Windows 11 immer ungültig ist?

Edit: Auch mit Angabe von SecurityAttributes anstatt dem "Nil", wird jeweils ein ungültiges Handle zurück geliefert

Edit2:
Habe jetzt doch was gefunden, hier:
https://techcommunity.microsoft.com/...nsider/3762048
Ist ein veraltetes Feature und wurde deaktiviert, deswegen der Fehler.

Geändert von AJ_Oldendorf (14. Jan 2025 um 07:54 Uhr)
  Mit Zitat antworten Zitat
Kas Ob.

Registriert seit: 3. Sep 2023
379 Beiträge
 
#2

AW: Probleme mit NamedPipe/Mailslot nach Umstieg auf Windows 11

  Alt 14. Jan 2025, 08:13
Good morning,

Try
SendSlotHandle := CreateFile(PWideChar(SlotName),

These i don't understand !!
Delphi-Quellcode:
NullStr
StrPCopy(NullStr, SlotName);
Kas
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
390 Beiträge
 
Delphi 12 Athens
 
#3

AW: Probleme mit NamedPipe/Mailslot nach Umstieg auf Windows 11

  Alt 14. Jan 2025, 09:06
You are right but this wasn't my question.
There is no different to use my string methode or your for the Handle-Problem with Mailslot and Windows 11
  Mit Zitat antworten Zitat
Kas Ob.

Registriert seit: 3. Sep 2023
379 Beiträge
 
#4

AW: Probleme mit NamedPipe/Mailslot nach Umstieg auf Windows 11

  Alt 14. Jan 2025, 10:17
You are right but this wasn't my question.
There is no different to use my string methode or your for the Handle-Problem with Mailslot and Windows 11
OK, fair enough, but using NullStr, it is default and defined in system.pas and should never be assigned and this throw me after different thing, just use your own.

Anyways, the error code 3025 is not documented, and this happened in the past many times with MSDN, also Error COdes do evolve with Windows OS per version and in many times per update !
So you should try to use this to get the real name/message for the error
Delphi-Quellcode:
  Writeln('---- ' + IntToStr(3022));
  Writeln(SysErrorMessage(3022));
  Writeln('---- ' + IntToStr(3023));
  Writeln(SysErrorMessage(3023));
  Writeln('---- ' + IntToStr(3024));
  Writeln(SysErrorMessage(3024));
  Writeln('---- ' + IntToStr(3025));
  Writeln(SysErrorMessage(3025));
  Writeln('---- ' + IntToStr(3026));
  Writeln(SysErrorMessage(3026));
But be careful here !!
These windows API, that handle errors attached names are well defined for existing ones but have unknown result for non documented ones, as example this error code 3025 on my Windows 10 will return the following
Zitat:
---- 3022
The specified printer cannot be shared
---- 3023
There is a problem with a configuration of user specified
shut down command file. The UPS service started anyway
---- 3024

---- 3025
A defective sector on drive %1 has been replaced (hotfixed).
No data was lost. You should run CHKDSK soon to restore full
performance and replenish the volume's spare sector pool.

The hotfix occurred while processing a remote request
---- 3026
A disk error occurred on the HPFS volume in drive %1.
The error occurred while processing a remote request
out of these only 3022 is only the correct one and it is exist in https://learn.microsoft.com/en-us/wi...es--1700-3999-
Now to the others and because the according API is built in away that separate ranges by masking and it is really complex, it does return incorrect for the undefined, to be exact : the message
Zitat:
A defective sector on drive %1 has been replaced (hotfixed).
No data was lost. You should run CHKDSK soon to restore full
performance and replenish the volume's spare sector pool.

The hotfix occurred while processing a remote request
is not an error code but status code, and it has 3181 value
https://github.com/tpn/winddk-8.1/bl...MErrlog.h#L449
This what i meant by these API(s) handle error code and status code as one input and they do juggling with the values/ranges, so for non existed value they will return undefined like this very case.

Now to your exact problem, which i can't say for sure but i use different logic:
1) Error Codes like Status Codes, are grouped in ranges when they are belongs to one category.
2) That error code 3025 are very close to the one existed in Windows 10 (3022),
3) i can deduce it has something to do with printer or printer driver, so that very generic name for pipe you are using could be already in use on Windows 11 for a printer.

suggestions:
1) Get the error message from Windows 11.
2) Just use different name or find what driver is involved if the hypotheses above stand.
3) Your application on Windows 11 is running with limited privileges for some reason and not allowed to handle pipes, notice you are using CreateFile with Open_Existing, have you tried to switch to OpenFile instead of CreateFile.
4) You might want to remove File_Attribute_Normal, yes it is said as default in documentation, but the MSDN doesn't it all, use 0 instead any attribute and let it do its thing, notice in every MSDN example for NamedPipe the attribute is always 0 (none).

Hope that helps.
Kas
  Mit Zitat antworten Zitat
Kas Ob.

Registriert seit: 3. Sep 2023
379 Beiträge
 
#5

AW: Probleme mit NamedPipe/Mailslot nach Umstieg auf Windows 11

  Alt 14. Jan 2025, 11:11
Here extra info to whom may it interest and belongs to a research i did few years back,

This API does return the constant naming as it defined in Windows SDK/DDK, not all shown as many are hidden behind different masks, which does show that accessing these API usually does need some sort of macros, even the API is not documented and not even named !
Delphi-Quellcode:
{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  Windows;

function cacert_873(bufferi: Pointer; bufferlen: Integer; errorcode: cardinal): HRESULT; stdcall; external 'certca.dllindex 873;

function ConstantNameFromErrorCode(ErrCode: Cardinal): string;
begin
  SetLength(Result, 64);
  ZeroMemory(@Result[1], Length(Result) * SizeOf(Char));
  cacert_873(@Result[1], Length(Result), ErrCode);
end;

procedure Resolve(ErrCode: Cardinal);
begin
  Writeln(IntToStr(ErrCode) + #9 + ConstantNameFromErrorCode(ErrCode));
end;

procedure DoRangeDump;
var
  i: Integer;
begin
  for i := 3000 to 3026 do
    Resolve(i);
end;

begin
  Resolve(0);
  Resolve(1);
  DoRangeDump;
  Resolve(3181); // this one does exist but not reported https://github.com/tpn/winddk-8.1/blob/master/Include/um/LMErrlog.h#L449
  Readln;
end.
The result on my Windows 10
Zitat:
1 0x1 (WIN32: 1 ERROR_INVALID_FUNCTION)
3000 0xbb8 (WIN32: 3000 ERROR_UNKNOWN_PRINT_MONITOR)
3001 0xbb9 (WIN32: 3001 ERROR_PRINTER_DRIVER_IN_USE)
3002 0xbba (WIN32: 3002 ERROR_SPOOL_FILE_NOT_FOUND)
3003 0xbbb (WIN32: 3003 ERROR_SPL_NO_STARTDOC)
3004 0xbbc (WIN32: 3004 ERROR_SPL_NO_ADDJOB)
3005 0xbbd (WIN32: 3005 ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED)
3006 0xbbe (WIN32: 3006 ERROR_PRINT_MONITOR_ALREADY_INSTALLED)
3007 0xbbf (WIN32: 3007 ERROR_INVALID_PRINT_MONITOR)
3008 0xbc0 (WIN32: 3008 ERROR_PRINT_MONITOR_IN_USE)
3009 0xbc1 (WIN32: 3009 ERROR_PRINTER_HAS_JOBS_QUEUED)
3010 0xbc2 (WIN32: 3010 ERROR_SUCCESS_REBOOT_REQUIRED)
3011 0xbc3 (WIN32: 3011 ERROR_SUCCESS_RESTART_REQUIRED)
3012 0xbc4 (WIN32: 3012 ERROR_PRINTER_NOT_FOUND)
3013 0xbc5 (WIN32: 3013 ERROR_PRINTER_DRIVER_WARNED)
3014 0xbc6 (WIN32: 3014 ERROR_PRINTER_DRIVER_BLOCKED)
3015 0xbc7 (WIN32: 3015 ERROR_PRINTER_DRIVER_PACKAGE_IN_USE)
3016 0xbc8 (WIN32: 3016 ERROR_CORE_DRIVER_PACKAGE_NOT_FOUND)
3017 0xbc9 (WIN32: 3017 ERROR_FAIL_REBOOT_REQUIRED)
3018 0xbca (WIN32: 3018 ERROR_FAIL_REBOOT_INITIATED)
3019 0xbcb (WIN32: 3019 ERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED)
3020 0xbcc (WIN32: 3020 ERROR_PRINT_JOB_RESTART_REQUIRED)
3021 0xbcd (WIN32: 3021 ERROR_INVALID_PRINTER_DRIVER_MANIFEST)
3022 0xbce (WIN32: 3022 ERROR_PRINTER_NOT_SHAREABLE)
3023 0xbcf (WIN32: 3023)
3024 0xbd0 (WIN32: 3024)
3025 0xbd1 (WIN32: 3025)
3026 0xbd2 (WIN32: 3026)
3181 0xc6d (WIN32: 3181)
Kas
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
390 Beiträge
 
Delphi 12 Athens
 
#6

AW: Probleme mit NamedPipe/Mailslot nach Umstieg auf Windows 11

  Alt 14. Jan 2025, 11:30
On Windows 11, i got following message with this code:

SysErrorMessage(3025) 'Fehler beim angeforderten Vorgang. Remotemailslots sind veraltet'

So, see my edit2 of first message in this thread. Microsoft deactivate this feature and this was the reason, why it doesn't work anymore.
  Mit Zitat antworten Zitat
Kas Ob.

Registriert seit: 3. Sep 2023
379 Beiträge
 
#7

AW: Probleme mit NamedPipe/Mailslot nach Umstieg auf Windows 11

  Alt 14. Jan 2025, 11:34
On Windows 11, i got following message with this code:

SysErrorMessage(3025) 'Fehler beim angeforderten Vorgang. Remotemailslots sind veraltet'

So, see my edit2 of first message in this thread. Microsoft deactivate this feature and this was the reason, why it doesn't work anymore.
Thank you for the replay and confirming the reason.

Could you please share the rest of the missing codes ?
Zitat:
3023 0xbcf (WIN32: 3023)
3024 0xbd0 (WIN32: 3024)
3025 0xbd1 (WIN32: 3025)
3026 0xbd2 (WIN32: 3026)
Kas
  Mit Zitat antworten Zitat
Kas Ob.

Registriert seit: 3. Sep 2023
379 Beiträge
 
#8

AW: Probleme mit NamedPipe/Mailslot nach Umstieg auf Windows 11

  Alt 14. Jan 2025, 12:51
Searched for NamedPipes and Printing and found this
https://learn.microsoft.com/en-us/tr...ates-for-print

Might solve your problem.
Kas
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
390 Beiträge
 
Delphi 12 Athens
 
#9

AW: Probleme mit NamedPipe/Mailslot nach Umstieg auf Windows 11

  Alt 15. Jan 2025, 06:54
Of course, here the other codes:

SysErrorMessage(3023) ->
'Für die angeforderte Funktion muss SMB1 vorhanden und aktiviert sein'

SysErrorMessage(3024) ->
'Der Benutzer hat die Authentifizierungsaufforderung an einen Remoteserver abgebrochen'

SysErrorMessage(3025) ->
'Fehler beim angeforderten Vorgang. Remotemailslots sind veraltet'

SysErrorMessage(3026) ->
'Auf einem HPFS-Volume im Laufwerk %1 ist ein Datenträgerfehler aufgetreten,'#$D#$A'während eine Remoteanfrage bearbeitet wurde'

SysErrorMessage(3181) ->
'Ein fehlerhafter Sektor auf Laufwerk %1 wurde ersetzt (Hotfix).'#$D#$A'Es traten keine Datenverluste auf. Sie sollten CHKDSK ausführen, um die volle'#$D#$A'Leistung wiederherzustellen und den Ersatzsektorpool des Volumes aufzufüllen.'#$D#$A#$D#$A'Hotfix ist aufgetreten, während eine Remoteanforderung bearbeitet wurde'

Geändert von AJ_Oldendorf (15. Jan 2025 um 06:58 Uhr)
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
390 Beiträge
 
Delphi 12 Athens
 
#10

AW: Probleme mit NamedPipe/Mailslot nach Umstieg auf Windows 11

  Alt 15. Jan 2025, 06:56
Searched for NamedPipes and Printing and found this
https://learn.microsoft.com/en-us/tr...ates-for-print

Might solve your problem.
Problem in my case is not NamedPipe, it is Mailslot. This is depreceated and if i want to use it now, i have to switch on manual with power shell. How long it would work? Nobody knows it. I have to adjust my software to no mailslot using
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz